• 0
    Да, про это есть в посте, ну видимо остаётся только ждать, пока они это починят.
    Docker + IPv6 = ❦
  • 0
    Из комментария не смог понять, какую задачу вы решаете :) вам нужен свой DNS-сервер именно для докера? а зачем?
    Docker + IPv6 = ❦
  • +2
    А что предполагается делать с приложениями, у которых просто течёт память? Согласно персистентной модели, приложение запускается один раз и на всю жизнь. Пусть это какой-нибудь Office, в нём пользователь создаёт какие-то документы. Этими документами он обменивается с другими приложениями/устройствами. Но вот память течёт и течёт. Можно ли будет остановить это и не потерять созданные документы? Как это будет выглядеть с точки зрения пользователя?
    Фантом: большая сборка мусора
  • 0
    Ещё есть jcoro https://habrahabr.ru/post/269021/
    (на правах рекламы)
    Континуации в Java
  • +1
    А мне норм ) Проблем с этим не испытывал. Но от хорошего pull request'а не откажусь
    GoddamnConsole — библиотека для проектирования консольного UI
  • 0
    Да, к сожалению, это так. Выяснилось, что это мало кому нужно. Хотел заняться ей плотнее после выхода .NET Core, но там отпилили режим build --native, а очень хотелось попробовать именно в этом режиме позапускать. Но в любом случае, буду пробовать портировать на .NET Core, а там может быть и нативный режим прикрутят.
    GoddamnConsole — библиотека для проектирования консольного UI
  • 0
    Что же вам не понравилось?
    GoddamnConsole — библиотека для проектирования консольного UI
  • +3
    Загрузку внешних схем из XML можно отключить. Тут есть варианты: https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing (см параграф с Java).

    А диагностировать неудачный коннект можно было ещё попробовать с помощью dtrace.
    Затмение на острове Java или внимательней читайте стэктрейсы
  • 0
    Source Code Pro пока никто не переплюнул.
    Iosevka — ещё один шрифт для кодинга
  • +1
    Мой опыт показывает, что деплоить war намного менее удобно, чем запускать jar со встроенным сервлет-контейнером. По пунктам.

    1. Редеплой часто бывает не production-ready. Например, в jboss as в своё время редеплой хоть и работал, но периодически глючил.
    2. Деплой через cargo — медленный и неудобный для разработки, а безопасность его под вопросом в продакшене. Медленный — потому что копируются все ресурсы приложения, а потом вся эта штука разворачивается контейнером. При использовании встроенного сервлет-контейнера достаточно лишь перезапустить процесс. Ничего копировать и распаковывать не нужно. Это что касается окружения разработки. А чтобы не велосипедить на скриптах при деплое в продакшене, можно сделать deb-пакет, например, или использовать контейнеры. Дополнительный плюс такого подхода будет в том, что не придётся долго рассказывать админам, как выполняется деплой. Обновил пакет — и всё работает. Что же касается безопасности деплоя через сокет в продакшене, достаточно отметить, что были эксплоиты для различных серверов приложений, которые эксплуатировали дырки в админках. Конечно, эти порты наружу не будут открыты, но в случае эмбеддед сервера этой проблемы вообще нет.
    3. Не в курсе про томкат, может быть там все действительно хорошо с zero downtime, но я бы поостерёгся редеплоить приложения в продакшене (см первый пункт).

    Сравнить скорость cargo и ембеддед можно легко, если есть в наличии проект, war которого занимает мегабайт 70. cargo будет деплоить эту штуку сильно дольше, чем просто запустится новый java-процесс. А высокая скорость рестарта при разработке — высокая производительность программистов, то есть наше всё.
    Кому и зачем все-таки нужен Go?
  • 0
    Оказалось, что pytest-xdist конфликтует с Allure Pytest Adaptor. Начали разбираться, проблема известная, уже длительное время обсуждается и не решена. Также готового решения для наследовании тестовых данных по локалям найти не удалось,


    Мой коллега pupssman пофиксил эту штуку и даже предложил пулл реквест: github.com/allure-framework/allure-python/pull/80
    Попробуйте )
    Автоматизация тестирования вебсайта: Pytest, Allure, Selenium + несколько секретных ингредиентов
  • 0
    Посмотрел на Vertx-Sync, там написано, что оно работает на базе Quasar, который, как я понимаю, использует аналогичные jcoro механизмы. Ну то есть там тоже есть восстанавливаемый контекст выполнения и инструментирование байт-кода. Так что даже не знаю, что проще — взять одну jcoro или пробовать vertx-sync, который зависит от quasar и vertx, которые сами по себе не маленькие :)
    JCoro — асинхронность на сопрограммах в Java
  • 0
    Предполагаю, что написанием этого неудобного кода :) не знаю, как решить эту задачу удобно и без сопрограмм.
    JCoro — асинхронность на сопрограммах в Java
  • 0
    Кажется, это те же коллбеки, записанные иначе (заранее сохранённые в отдельную переменную и потом использованные). Но дело даже не в том, что коллбеки плохи сами по себе. Проблема в неудобствах, которые возникают, когда нам нужно результат одной операции передать в следующую. Плюс, надо как-то уметь обрабатывать ошибки. А если писать синхронный код, таких проблем не возникает — всё просто и понятно. В этом суть подхода.
    JCoro — асинхронность на сопрограммах в Java
  • 0
    Круто! Я не решился на статический анализ, решил для начала размечать аннотациями вручную. Статический анализ действительно хорошо работает в этом месте?
    JCoro — асинхронность на сопрограммах в Java
  • 0
    Конечно, надёжнее, ведь там не инструментируется байт-код :) но, я надеюсь, что и этот механизм будет доведён до должного уровня доверия
    JCoro — асинхронность на сопрограммах в Java
  • 0
    Может быть, я не туда смотрю, но тут всё на коллбеках: github.com/vert-x3/vertx-rx/blob/master/rx-java/src/main/asciidoc/java/index.adoc#async-result-support
    JCoro — асинхронность на сопрограммах в Java
  • 0
    Там нужно писать коллбеки, именно этого и хочется избежать.
    JCoro — асинхронность на сопрограммах в Java
  • 0
    Согласен, поддержки на уровне языка очень не хватает…
    JCoro — асинхронность на сопрограммах в Java
  • 0
    В том, что не нужно использовать promises и коллбеки, а можно просто писать код, как если бы он был синхронным.
    JCoro — асинхронность на сопрограммах в Java
  • 0
    Если писать сервер, то этот ужасный код будет только в самом верху стека обработки запроса, далее писать код можно обычными методами, только следя за аннотациями на точках восстановления. А все асинхронные операции достаточно один раз обернуть в сопрограммы и положить в утилитный класс, и больше его не трогать, а пользоваться ими как синхронными вызовами. См пример
    JCoro — асинхронность на сопрограммах в Java
  • 0
    В последнее время для персистенси предпочитаю использовать MyBatis 3 на аннотациях. Прикрутил к нему плагин для FreeMarker, и всё вообще идеально. Никаких сложных statefull фреймворков, всё на кончиках пальцев, и не многословно )
    Spring + Hibernate для новичков
  • +2
    Часто бывает надо написать код, в котором 100% никогда не будет исключения (а если будет, то это уже сигнал к тому, что программа в этом окружении вообще неработоспособна. Например, UnsupportedCharacterEncoding), но который требует обрамления в try-catch.

    Ещё бывает ситуация, в которой хочется на некоторый блок действий глобально повесить try-catch(Throwable) и если произойдет любое исключение, считать, что операция в целом зафейлилась. А не разбираться с каждым конкретным исключением, которое может случиться внутри этого блока.

    > Никто не мешает заворачивать их вызовы в try/catch и пробрасывать дальше как unchecked
    Только это и остаётся. Но это замусоривает код. Возвращаясь к примеру с UnsupportedCharacterEncoding, можно отметить, что если нужно написать метод, который занимает 5 строчек, а теперь приходится к нему добавить еще 5 строк try-catch-rethrow RuntimeException, то это же чистый мусор.

    Ну и конечно же, наличие checked исключений и легкость избавления от них пустым catch-блоком побуждает начинающих делать это в больших количествах.

    Про пункт с не очень опытным программистом. Эта проблема решаема статическим анализатором (и в IDE?), который бы говорил «чувак, возможно ты пропустил исключение здесь!».
    10 вещей, которых вы не знали о Java
  • 0
    Подскажите, пожалуйста, инструмент для записи таких гифок? А, это перевод…
    15 советов и хитростей инструментов разработчика Chrome, которые вы обязаны знать
  • +5
    Стиль хорош, но все-таки есть непонятные места. Я вроде в контексте, но уж очень много пропусков в логических цепочках. В конце как минимум нужно дописать то, что получилось в виде «а теперь мы можем сделать то-то и то-то таким вот образом». И пример кода, который работает.
    Грабли, .NET, COM и dynamic
  • 0
    С неоткатываемым сервисом видимо придётся реализовывать протокол двухфазного коммита, как предлагали выше.
    Как оказалось, знают все, а понимают не все. Транзакции в mysql и SELECT FOR UPDATE
  • 0
    По-моему, блокировка не лучший способ решения проблемы. Тут скорее всего надо делать просто транзакцию, которую потом можно откатить в случае чего. Но в этом случае АПИ тоже должен поддерживать некий откат, т.к. при конфликтующих транзакциях коммит не пройдёт, надо сделать откат в АПИ, и далее повторить попытку. Поправьте плз, если это решение плохо.
    Как оказалось, знают все, а понимают не все. Транзакции в mysql и SELECT FOR UPDATE
  • +1
    Попробуйте просто поискать вконтакте по записям. Часто бывают объявления от реальных людей (не репосты ссылок на сайты типа avito), дальше можно просто списываться с человеком. Есть еще пара групп вконтакте, которые называются что-то вроде «Без посредников»: они закрытые (доступ дают в течение дня-двух) и там банят агентов. Там каждый день появляются объявления. За 1-2 недели вполне можно найти несколько подходящих вариантов, ну и далее посмотреть их, выбрав один самый лучший для вас.

    Действительность документов собственника проверить можно (и нужно) при личной встрече. Если сдают квартиру родственника, то можно спросить документы, подтверждающие родство (свидетельство о рождении, например, если дочь поменяла фамилию после свадьбы).
    Поиск жилья без посредников в 21-м веке
  • +2
    Так вы сделали pull & push или rebase?
    Странный глюк Git, чуть не стоивший 10 часов работы
  • 0
    Как я понимаю, проблемы бы не возникло, если бы ключи внутри мапы ThreadLocalVariable -> ThreadLocalValue были бы тоже weak?
    Утечка памяти с ThreadLocal
  • 0
    А исходный код не выложен? Не нашёл ссылки на репозиторий в sourceforge.
    Console Audio Tools — пакет утилит для проверки и конвертации аудиофайлов
  • 0
    Это здорово, что в 8 появились! А я смотрел в доках к семёрке, поэтому и не увидел. Но всё равно пока придётся уж иметь в виду ручные реализации деления и сравнения, поддержка семёрки всё-таки желательная вещь сейчас.
    Беззнаковая арифметика в Java
  • +9
    ulongDiv(10, 3) возвращает 5
    Беззнаковая арифметика в Java
  • 0
    Эта операция (инвертирование знака) проецирует пространство значений [0;2^32-1] на [-2^31;2^31-1] для обоих операндов. Далее производится обычное сравнение. Например, было число -1 (0xffffffff), оно станет 0x7fffffff. Было число 10 (0x0000000a), станет -10 (0x8000000a). 0x7fffffff > 0x8000000a.
    Беззнаковая арифметика в Java
  • 0
    Оп-па, а я и забыл про rotateLeft-Right. Спасибо. А про Integer(Long).compare(divide)Unsigned() не понял — в стандартной библиотеке вроде бы такого нет.
    Беззнаковая арифметика в Java
  • +5
    На мой взгляд, было бы технологичнее развернуть систему наподобие ejudge, чтобы можно было онлайн проверять свои решения. А задачка интересная, жаль, что не смогу поучаствовать :)
    Майское хабрасоревнование: делаем свой ГЛОНАСС
  • 0
    А если разработчик зловреда напишет код, который выполняет вредные действия скажем в 50% случаев?
    Атаки нулевого дня, APT-атаки и защита от них с использованием решений Check Point
  • 0
    И сколько виртуального времени может пройти так?
    Атаки нулевого дня, APT-атаки и защита от них с использованием решений Check Point
  • 0
    Да я как-то больше сервер-сайд, а там логи всегда доступны. Про десктоп согласен.
    Исключение — твой друг
  • +3
    Пользуюсь следующим switch'ем:
    Вариант 1. Метод всегда при любых условиях должен возвращать корректное значение. Проверка не нужна. Assert тоже не нужен.
    Вариант 2. Метод может вернуть некорректное значение, но логика приложения построена таким образом, что этой ситуации в принципе не должно происходить. Сталю Assert — программа упадёт сразу после нарушения инварианта.
    Вариант 3. Метод может вернуть некорректное значение при одном из допустимых вариантов использования. Нужно обработать этот случай.

    Дополнительно: метод (или некоторый кусок кода) уже обработан по одному из вышеперечисленных сценариев, но я знаю, что этот код в принципе может упасть (ну вот кажется, что такое возможно). Однако я могу локализовать проблему вида «этот кусок кода полностью не сработал» и обработать её именно в таком представлении. В этом случае я ставлю на весь этот кусок дополнительный try-catch (Throwable) с логированием исключения и обработкой ситуации «не понятно, что случилось, но этот кусок кода не сработал». Соответственно, если мы имеем дело с мобильным приложением, то в этом месте также нужно реализовать отправку на сервер разработчика этого события.
    Исключение — твой друг