Android-разработчики и не подозревали, что память утекает, если
#leak #memory #packagemanager
PackageManager... #leak #memory #packagemanager
DEV Community
Beware PackageManager leaks!
While I was investigating an Android memory leak, I took these notes as I learnt about the lifecycle...
Вот здесь рассказывают, как можно немного остудить ваши полыхающие жопки, измученные тяжёлой борьбой с
#recycler #async #channel
RecyclerView и UI thread, накостыляв асинхронное создание ViewHolder поверх Kotlin Channel.#recycler #async #channel
Medium
Recycler view, power of asynchronous view holders creation
The easy way to optimize your lists
Не щадя живота своего мы с товарищами работаем над AppsLive 2020. Это как AppsConf, только совсем-совсем бесплатно и очень-очень онлайн.
Случится это всё 21-22 октября.
Расскажу про доклады ребят, с которыми мне повезло поработать:
- Саша Агейченко расскажет про все тонкости работы в фоне. Все вот эти
- Артур Бадретдинов обрисует свой опыт жонглирования MVI, Compose и Ribs. И, что важно, научит жонглировать вас!
- Дима Пермяков покажет, как написать Gradle плагин, который нагенерит вам весь нужный код, чтобы каждый билд мог неподражаемо блистать своим набором feature toggles.
Заходите!
#appsconf #conference #event
Случится это всё 21-22 октября.
Расскажу про доклады ребят, с которыми мне повезло поработать:
- Саша Агейченко расскажет про все тонкости работы в фоне. Все вот эти
WorkManager, Doze mode и foreground Service - это всё к нему.- Артур Бадретдинов обрисует свой опыт жонглирования MVI, Compose и Ribs. И, что важно, научит жонглировать вас!
- Дима Пермяков покажет, как написать Gradle плагин, который нагенерит вам весь нужный код, чтобы каждый билд мог неподражаемо блистать своим набором feature toggles.
Заходите!
#appsconf #conference #event
appsconf.ru
Профессиональная конференция для разработчиков мобильных приложений 2020
Профессиональная конференция разработчиков мобильных приложений
Бывает, несёшь себе кофеёк к компу. Путь пролегает не самый близкий - покинуть кухню, преодолеть коридор, крадучись занести кружку в комнату, не обосрав тот любимый белый ковёр, и водрузить, наконец, дрожащими руками заветный напиток на рабочий стол.
А тут, на тебе, в коридоре, прямо под ногами, песок какой-то. Ясное дело, подставил кто-то. Гады. Ну ты-то не мог, ты-то ногами об коврик пошаркал, когда с прогулки возвращался. Сволочи. А кофе-то запахом манит. Да и пролить не хочется, они от нас только этого и ждут, Бубба.
Тут ты и принимаешь стратегическое решение аккуратненько ножкой так ать, и смести песок куда-то в сторону. Пусть это будет проблема выходного тебя.
Вот так и с сайд-эффектами, всё время их диверсанты какие-то в наш чудесный код добавляют. Но хочется же их аккуратненько куда-то под коврик замести, и чтобы только там они где-то и водились, и не отсвечивали, пока не позовут. И чтобы нельзя было ими наши замечательные чистые функции попортить.
Вот в этом посте смотрят на использование
#kotlin #coroutine #fp
А тут, на тебе, в коридоре, прямо под ногами, песок какой-то. Ясное дело, подставил кто-то. Гады. Ну ты-то не мог, ты-то ногами об коврик пошаркал, когда с прогулки возвращался. Сволочи. А кофе-то запахом манит. Да и пролить не хочется, они от нас только этого и ждут, Бубба.
Тут ты и принимаешь стратегическое решение аккуратненько ножкой так ать, и смести песок куда-то в сторону. Пусть это будет проблема выходного тебя.
Вот так и с сайд-эффектами, всё время их диверсанты какие-то в наш чудесный код добавляют. Но хочется же их аккуратненько куда-то под коврик замести, и чтобы только там они где-то и водились, и не отсвечивали, пока не позовут. И чтобы нельзя было ими наши замечательные чистые функции попортить.
Вот в этом посте смотрят на использование
suspend модификатора для этих целей. Интересная идея, пометить всё, у чего есть сайд-эффекты, тогда компилятор не даст нам чистые куски запятнать. Особенно интересно в контексте Redux-like подходов на эту идею посмотреть.#kotlin #coroutine #fp
👨💻 Jorge Castillo
Tracking side effects at compile time with suspend
Thinking of suspend as a Kotlin stdlib mechanism for flagging and tracking effects at compile time. Going declarative Functional Programming puts a lot of emphasis on achieving concern separation between the pure logics of a program (algebras) and the runtime…
Работа с датами и таймзонами - почти всегда больнючая заноза в заднице. Причём заноза старая. Такая, которую не хочется лишний раз трогать. Страшно же. Эта боль уже знакомая, все вроде как к ней привыкли, а новая - хрен её знает, какой окажется. И SQLite ещё, собака, подливает масла в огонь, отдельного типа данных для дат-то не водится.
Но не всё так плохо. Отдельного типа данных нам не положено, но если очень-очень нужно, то есть всякие вспомогательные функции. Вот в этом посте показали, какие инструменты у нас всё-таки есть, и как ими можно пользоваться.
P.S. Вот тут есть очень забавное видео про проблемы со временем и таймзонами в целом.
#sqlite #db #date
Но не всё так плохо. Отдельного типа данных нам не положено, но если очень-очень нужно, то есть всякие вспомогательные функции. Вот в этом посте показали, какие инструменты у нас всё-таки есть, и как ими можно пользоваться.
P.S. Вот тут есть очень забавное видео про проблемы со временем и таймзонами в целом.
#sqlite #db #date
Handling Dates & Times in SQLite
Handling Dates & Times in SQLite :: Ryan Harter
SQLite may not have dedicated datetime data types, but that doesn't mean we have to restort to queries filled with meaningless numbers and post-processing datasets in application code. Here we'll take a look at a real world use case for SQLite's [datetime…
Кстати, не забывайте, что у этого канала есть ещё вот такая движуха: Shitty Android PeerLab.
Последнюю пятницу каждого месяца мы собираемся в каком-нибудь из пабов Москвы (а в текущих запрись-и-забаррикадируйся реалиях - в Zoom) с другими разработчиками, и совершенно беспардонным образом общаемся.
Ближайший пирлаб случится уже завтра, заходите!
#peerlab #event
Последнюю пятницу каждого месяца мы собираемся в каком-нибудь из пабов Москвы (а в текущих запрись-и-забаррикадируйся реалиях - в Zoom) с другими разработчиками, и совершенно беспардонным образом общаемся.
Ближайший пирлаб случится уже завтра, заходите!
#peerlab #event
Близится ещё одна мобильная конференция - MobileOptimized.
Пройдёт она, ясное дело, онлайн. Будут потоки по Android, iOS и кроссплатформе. Все доклады там на английском и от разработчиков из самых разных стран.
Из Android трэка моё внимание сразу привлекли:
- Android App Start Explained от Lucas Nelaupe - разбор того, что происходит от нажатия на иконку аппа и до отрисовки первого экрана, как замерить и впоследствии оптимизировать каждый из этапов
- Absolute Modularization for Android от Степана нашего Гончарова - тут вроде бы и добавить нечего, название говорит само за себя
- А historical account of memory leaks in Android от Amanda Hinchman - историю того, как и что происходило с Android фреймворком за столько лет, всегда интересно послушать, а в контексте утечек памяти - вдвойне
Цена билета сейчас $30, а с промокодом
#event #conference
Пройдёт она, ясное дело, онлайн. Будут потоки по Android, iOS и кроссплатформе. Все доклады там на английском и от разработчиков из самых разных стран.
Из Android трэка моё внимание сразу привлекли:
- Android App Start Explained от Lucas Nelaupe - разбор того, что происходит от нажатия на иконку аппа и до отрисовки первого экрана, как замерить и впоследствии оптимизировать каждый из этапов
- Absolute Modularization for Android от Степана нашего Гончарова - тут вроде бы и добавить нечего, название говорит само за себя
- А historical account of memory leaks in Android от Amanda Hinchman - историю того, как и что происходило с Android фреймворком за столько лет, всегда интересно послушать, а в контексте утечек памяти - вдвойне
Цена билета сейчас $30, а с промокодом
shitty10android ещё и скидка в 10% положена. Заходите!#event #conference
Let’s Encypt (разрешённая в РФ некоммерческая организация) решила ласково так, по-отечески, приложить лицом о стол пользователей Android с версией ниже 7.1.1 (API 25). На таких устройствах нет корневого сертификата Let’s Encrypt. И если сейчас они могут ходить на ряд ресурсов благодаря перекрёстной подписи с другим удостоверяющим центром, то с некоторого момента X больше не смогут.
Хочется, конечно, сказать, что туда им и дорога, но устройств таких очень уж много - 33.8%.
За новость спасибо @istima.
#network #https #certificate
Хочется, конечно, сказать, что туда им и дорога, но устройств таких очень уж много - 33.8%.
За новость спасибо @istima.
#network #https #certificate
www.opennet.ru
Сертификаты Let's Encrypt перестанут восприниматься на 33% Android-устройств
Некоммерческий удостоверяющий центр Let's Encrypt, контролируемый сообществом и предоставляющий сертификаты безвозмездно всем желающим, анонсировал грядущий переход на формирование подписей с использованием только своего корневого сертификата, без применения…
Ребята из Podlodka Crew делают очередную конфу. На этот раз - по кроссплатформе. Грозятся потрогать своими немытыми лапками и React Native, и Flutter, и Kotlin Multiplatform Mobile. Проходить это всё будет 14-18 декабря. Welcome!
#event
#event
“Когда не выходит насухо, стоит прибегнуть к смазке”. Шило же дурного не посоветует. Хлеб похорошеет, если его смазать маслом. Место укуса комара можно смазать специальным средством, чтобы не чесалось. Ну а всякую работу с View и анимациями Chris Banes решил смазать корутинами.
Вот тут описано, что там куда можно присобачить, чтобы дожидаться следующего прохода layout или окончания анимации прямо без коллбэка и прямо в корутине.
#ui #view #coroutine
Вот тут описано, что там куда можно присобачить, чтобы дожидаться следующего прохода layout или окончания анимации прямо без коллбэка и прямо в корутине.
#ui #view #coroutine
Тут показывают, чем
Мне почему-то кажется, что если проделывать такое приходится действительно часто, то, возможно, где-то мы свернули не туда. Ну, случаи бывают разные, может быть для кого-то это и впрямь оправданно. Да и выглядят эти
#arrowkt #fp #library
Arrow-kt может помочь, если приходится делать множественные вложенные .copy на data class’ах. Мне почему-то кажется, что если проделывать такое приходится действительно часто, то, возможно, где-то мы свернули не туда. Ну, случаи бывают разные, может быть для кого-то это и впрямь оправданно. Да и выглядят эти
modify и @optics не прямо фу-фу-фу.#arrowkt #fp #library
Вот тут очень здорово рассказывают, как работает оптимизация хвостовой рекурсии (tail call optimization / TCO). Surprise-surprise, она вполне хорошо применяется и к обычным функциям с вызовом функции и
#compiler #optimize #recursion
return в конце.#compiler #optimize #recursion
eklitzke.org
How Tail Call Optimization Works
Черновик JEP’а про Primitive Objects.
Если упрощать, то это такие неизменяемые классы, с объектами которых можно работать, как с обычными примитивами. При копировании такого объекта получается объект, полностью идентичный оригинальному. И в планах даже сделать примитивными объектами
#java #jep #primitive
Если упрощать, то это такие неизменяемые классы, с объектами которых можно работать, как с обычными примитивами. При копировании такого объекта получается объект, полностью идентичный оригинальному. И в планах даже сделать примитивными объектами
int, boolean, и т.п., и обновить должным образом дженерики. Всем по List<int>!#java #jep #primitive
Когда-то давно мой отец занимался ремонтом телевизоров, видеомагнитофонов и всякой другой техники. И было у него много таких же приятелей-ремонтников. И вот как-то раз привезли им какой-то супер-навороченный и мега-современный телевизор. Не знаю, что там была за проблема, но чтобы решить её, им нужно было попасть в инженерное меню этой машины. Как в него попасть, не знал никто. Пробовали подходить по-разному, ни один способ не сработал. Кто-то из них взял телевизор домой, чтобы поковырять его вечерком. Ненароком оставив его на короткое время наедине с ребёнком, ремонтник с удивлением обнаружил, что дитятко что-то нажало на пульте, и попало в то самое инженерное меню. Повторить успех не мог никто, но задачу в итоге выполнили.
Это я всё к чему. В linuxmint/cinnamon-screensaver появился очень похожий и очень смешной issue: дети кликали и жмакали куда попало, находясь на экране блокировки, после чего скринсэйвер напрягся, крякнул и крашнулся, дав ребятишкам доступ в систему.
#linux #crash #cybersec
Это я всё к чему. В linuxmint/cinnamon-screensaver появился очень похожий и очень смешной issue: дети кликали и жмакали куда попало, находясь на экране блокировки, после чего скринсэйвер напрягся, крякнул и крашнулся, дав ребятишкам доступ в систему.
#linux #crash #cybersec
GitHub
Screensaver lock by-pass via the virtual keyboard · Issue #354 · linuxmint/cinnamon-screensaver
* Cinnamon version: Cinnamon 4.6.7 * Distribution: Fedora 32 * Graphics hardware *and* driver used: 03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 47...
1 февраля стартует очередная Podlodka Android Crew.
Это такая онлайн-конференция, которая проходит капельку утром, и капельку вечером. И так 2 недели. В этот раз ребята фокусируются на двух темах: UI и алгоритмы.
В UI секции, помимо прочего, нам обещают рассказать:
- Как собрать дизайн-систему из говна и палок
- Как оптимизировать
- Какие-то глубинные хитрости
Ну, а на второй неделе из нас планируют сделать алгоритмических ниндзя. Чтобы любой собес был BTYANNG!, а любая задачка - GRRRAH!
#event
Это такая онлайн-конференция, которая проходит капельку утром, и капельку вечером. И так 2 недели. В этот раз ребята фокусируются на двух темах: UI и алгоритмы.
В UI секции, помимо прочего, нам обещают рассказать:
- Как собрать дизайн-систему из говна и палок
- Как оптимизировать
RecyclerView- Какие-то глубинные хитрости
ConstraintsНу, а на второй неделе из нас планируют сделать алгоритмических ниндзя. Чтобы любой собес был BTYANNG!, а любая задачка - GRRRAH!
#event
podlodka.io
Онлайн-конференция Podlodka Android Crew, сезон #15
Недельное мероприятие от команды Podlodka: ежедневные интерактивные сессии в Zoom по актуальным проблемам Android-разработки, нон-стоп общение с экспертами и звёздами индустрии, закрытое профессиональное сообщество в Telegram.
А вот тут Тагир наш Валеев здорово рассказал про анбоксинг в последних версия Java. Не так страшен
#java #unboxing #jvm
Chort<Integer>, как его малюют!#java #unboxing #jvm
Хабр
Анбоксинг в современной Java
Сейчас новые версии Java выходят раз в полгода. В них время от времени появляются новые возможности: var в Java 10, switch-выражения в Java 14, рекорды и паттерн...
Замечательная история: мыши плакали и кололись, но продолжали не чинить туалеты и пользоваться GNOME.
#linux #gnome #humor
#linux #gnome #humor
jayfax.neocities.org
GNOME has no thumbnails in the file picker (and my toilets are blocked)
GNOME filepicker and my toilets are broken because of culture of mediocrity.
Contempt Culture
Интересно, а как у врачей? Презирают ли, скажем, онкологи отоларингологов? А отоларингологи - проктологов? И все вместе смеются над верстальщиками-терапевтами?
А если все резко станут онкологами, то кто заштопает мне задницу после очередного дня борьбы с Android SDK?
#community #culture
Интересно, а как у врачей? Презирают ли, скажем, онкологи отоларингологов? А отоларингологи - проктологов? И все вместе смеются над верстальщиками-терапевтами?
А если все резко станут онкологами, то кто заштопает мне задницу после очередного дня борьбы с Android SDK?
#community #culture
Aurynn
Contempt Culture - The Particular Finest
So when I started programming in 2001, it was du jour in the communities I participated in to be highly critical of other languages. Other languages
На последнем пирлабе @dsvoronin закинул ссылочку на доклад от Benno Rice (контрибьютор FreeBSD): The Tragedy of systemd. В тех кругах, насколько я понял, systemd принято хэйтить за сложность и ответственность за всё и вся. Benno попытался разобраться, откуда вся эта сложность, и не пора ли уже “принять и простить”.
Ну и в целом очень хороший доклад, даже хочется надёргать цитат. Положу их в комменты к посту.
P.S. наш пирлаб, кстати, проходит каждую последнюю пятницу месяца в 20:00. В мирное время - в одном из пабов Москвы. Сейчас - в Zoom. Заходите, у нас всегда весело и мы всем рады.
#linux #systemd #talk
Ну и в целом очень хороший доклад, даже хочется надёргать цитат. Положу их в комменты к посту.
P.S. наш пирлаб, кстати, проходит каждую последнюю пятницу месяца в 20:00. В мирное время - в одном из пабов Москвы. Сейчас - в Zoom. Заходите, у нас всегда весело и мы всем рады.
#linux #systemd #talk
YouTube
The Tragedy of systemd
Benno Rice
https://2019.linux.conf.au/schedule/presentation/156/
systemd is, to put it mildly, controversial. As a FreeBSD developer I decided I wanted to know why.
I delved into the history of bootstrap systems, and even the history of UNIX and other…
https://2019.linux.conf.au/schedule/presentation/156/
systemd is, to put it mildly, controversial. As a FreeBSD developer I decided I wanted to know why.
I delved into the history of bootstrap systems, and even the history of UNIX and other…
С Kotlin 1.4.30 в бетку перешёл новый JVM IR бэкенд компилятора. И вот за этим самым бэкендом будущее. Он станет дефолтным с Kotlin 1.5, да и старый компилятор больше не будет развиваться.
И вот Команда Kotlin Компилятора (или Ко-Ко-Ко, как их ласково называют в народе), просит помочь им с тестированием. Нужно убедиться, что новый бэкенд действительно достаточно стабилен для публичного релиза.
Собственно, как помочь?
- Включить новый компилятор в своём конфиг файле и собрать проект хотя бы один раз
- В идеале - включить новый компилятор для своего поекта по умолчанию, потому что не только сборка, но и дебаг имеют значение для этого теста
- Любые найденные баги нужно репортить сюда
- Ну и можно репортить в публичный Kotlin Slack
#kotlin #compiler #test
И вот Команда Kotlin Компилятора (или Ко-Ко-Ко, как их ласково называют в народе), просит помочь им с тестированием. Нужно убедиться, что новый бэкенд действительно достаточно стабилен для публичного релиза.
Собственно, как помочь?
- Включить новый компилятор в своём конфиг файле и собрать проект хотя бы один раз
- В идеале - включить новый компилятор для своего поекта по умолчанию, потому что не только сборка, но и дебаг имеют значение для этого теста
- Любые найденные баги нужно репортить сюда
- Ну и можно репортить в публичный Kotlin Slack
#kotlin #compiler #test
Как-то раз в универе наш препод по диффурам рассказывал историю: на военных сборах он стоял в наряде на тумбочке. Внезапно подбегает сослуживец, и просит назвать ему какой-то там синус от какого-то неудобного числа. Ну, до какого-то знака препод, конечно, назвал, но для более высокой точности попросил бумагу и карандаш. Сослуживцу, однако, этой точности оказалось вполне достаточно. Штука в том, что снарядом нужно садануть не белке в глаз, а примерно в район белки. Не нужно точно, нужно достаточно точно.
Так вот. @istima поделился очень прикольным видео. Разработчикам Quake III в своё время нужно было считать много штук вида 1 / sqrt(x). Но работало это достаточно медленно. И тогда они закодили страшный с виду алгоритм, который давал не идеальную, но достаточную для их целей аппроксимацию этого выражения. И вот в видео этот алогоритм разбирается по шагам. Очень интересно и займёт всего 20 минут, посмотрите!
#gamedev #math #talk
Так вот. @istima поделился очень прикольным видео. Разработчикам Quake III в своё время нужно было считать много штук вида 1 / sqrt(x). Но работало это достаточно медленно. И тогда они закодили страшный с виду алгоритм, который давал не идеальную, но достаточную для их целей аппроксимацию этого выражения. И вот в видео этот алогоритм разбирается по шагам. Очень интересно и займёт всего 20 минут, посмотрите!
#gamedev #math #talk
YouTube
Fast Inverse Square Root — A Quake III Algorithm
In this video we will take an in depth look at the fast inverse square root and see where the mysterious number 0x5f3759df comes from. This algorithm became famous after id Software open sourced the engine for Quake III. On the way we will also learn about…