Выпустил новую версию плагина для IDE: • аллокации вараргов теперь бросаются в глаза, • <vector pathData теперь переписываем умнее, например, Ll может заменяться на HhVv, а несколько таких команд — склеиваться в одну, • ну и фиксы, конечно же, • а релиз теперь, помимо Маркетплейса, можно найти здесь и там. K2, к сожалению. будет уже когда-нибудь потом.
По-явански
Пишу про Java-технологии, Kotlin и Android-разработку. Редко но метко. Кодревью: http://javanese.online/%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%BA%D0%BE%D0%B4%D0%B0/ Поболтать IRL: @coffeeCodeEverywhere Автор: @Harmonizr Менеджер по рекламе: /dev/null
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20Варианты корутин В разных языках корутины ведут себя по-разному. Вот краткий обзор. C#, JavaScript Eager & parallel by default: async-функция возвращает уже запущенный Task/Promise, а await приостанавливает выполнение до завершения задачи. + async не является отдельным видом функций, а просто намекает, что возвращается фьюча – забытый await приводит к параллельному выполнению Go Fire and forget: go statement запускает указанную функцию отдельно. + «неокрашенные» функции – для возврата значения н...
Разделение на Iterable и Sequence несостоятельно Как работает этот код? expr .filter { ... } .map { ... } .sorted() .take(k) .toMutableList() Зависит от того, expr: Iterable или Sequence. Если Iterable: • filter – создать копию, выкинув не соответствующее предикату, • map — создать копию, применив трансформацию, • sorted — создать копию, отсортировать, • take — создать копию, ограниченную по размеру, • toMutableList — создать копию. Если Sequence: • filter — отфильтровать итератор, • map — мапну...
Зигота В Андроиде зиготой называется процесс, от которого форкаются процессы приложений. Он содержит уже загруженный код SDK, а код приложения загружается после форка. В биологическом же смысле зигота содержит уже готовый ДНК организма, унаследованный от обоих родителей. Таким образом, зигота в Андроиде — на самом деле яйцеклетка, в которую в процессе запуска (оплодотворения) после форка внедряется код приложения (сперматозоида).
@project:Suppress("NAME_SHADOWING")
Уведомление об уведомлении Письмо на почту: %username% назначил вас исполнителем задачи %taskname% Сообщение от коллеги: Привет! Перекинул на тебя задачу https://… Было? Бесит? 🥲 Мы ведь не знаем, как у наших коллег настроены уведомления. Но со стороны трекера задач #идея напрашивается очень простая: отвечать на действие пользователя всплывашкой вида «мы отправили уведомление исполнителю на почту» или даже «мы кинули уведомление исполнителю прямо в лицо браузер». Всё! Ты знаешь, что коллега уви...
Писать "потенциально-тестируемый" код, но не писать на него тесты – пустая трата времени.
Hello nullability my old friend Котлин давно вошёл в грешную жизнь Android SDK, и с годами в Java-коде проросли аннотации нуллабельности. Compose стал повсеместно использовать value-классы — а компилятор доэволюционировал и перестал рассыпаться от одного их вида. Но пришла новая напасть: значения вроде {Dp, Color, Size, Offset, …}.Unspecified. Теперь можно запросить «обводку непонятного цвета и неизвестной толщины», компилятор этому не препятствует. В парадигме, где все параметры опциональные, а...
Может, нужно проверять хэш-сумму драйвера уровня ядра перед установкой? Да не, бред какой-то…
В Java нет UB и утечек памяти Это действительно так с точки зрения C/C++: целочисленное переполнение определено, разыменование нуля — тоже. Компилятор не делает вид, что этого не может быть. Если ссылку на объект потеряли, то и объекта скоро не станет. Но мы же не в C/C++? В другой среде термины могут трактоваться иначе. Если запустить несколько потоков, какой стартанёт первым? Одному планировщику известно. Если один поток пишет в массив, а второй читает, что он там увидит? Зависит от архитектур...