Перевод интересной статьи о том, что происходит у нас в голове во время программирования, и как в связи с этим могли бы выглядеть ЯП в будущем.
#programming #pl #language
https://habrahabr.ru/post/352568/
#programming #pl #language
https://habrahabr.ru/post/352568/
Хабр
Постепенное программирование
Программирование по своей сути является процессом инкрементальным (или постепенным, последовательным), и используемые нами языки программирования должны отражать...
Слушайте, тут в статье чувак пишет, что билд из терминала у него на слабой машинке работает сильно быстрее (прямо очень сильно быстрее), чем билд из студии. Кто может объяснить, почему так? Разве студия выполняет какие-то лишние gradle таски?
#build #gradle #studio
https://android.jlelse.eu/how-i-reduced-my-android-build-times-by-89-4242e51ce946
#build #gradle #studio
https://android.jlelse.eu/how-i-reduced-my-android-build-times-by-89-4242e51ce946
Medium
How I reduced my Android build times by 89%
This isn’t a click-bait article! I will explain how to make your Android build time lower than the reading time of this post (hopefully).
Если тебе хотя бы раз приходилось разбирать APK, пропущенный через ProGuard, ты наверняка замечал, что новые имена он выбирает по принципу столбцов в Excel (a, b, …, aa, ab, …). Это действительно так, но можно задавать эти словари самому. Можно их строить случайным образом и даже так, чтобы Windows был недоволен распакованными файлами. Подробности - по ссылке.
#proguard #build #obfuscation
https://proandroiddev.com/improving-proguard-name-obfuscation-83b27b34c52a
#proguard #build #obfuscation
https://proandroiddev.com/improving-proguard-name-obfuscation-83b27b34c52a
Medium
Improving ProGuard Name Obfuscation
In this article I will show you how to strengthen ProGuard’s name obfuscation, making it harder for an attacker the reverse engineer your…
Довольно интересная статья про Activity lifecycle. Автор предлагает интересный подход к тому, что именно писать в onCreate, onStart и т.п. методах. В принципе, ничего особенно нового в статье нет, но освежить в памяти хорошо забытое старое всегда полезно.
#activity #lifecycle
https://www.techyourchance.com/android-activity-life-cycle-for-professional-developers/
#activity #lifecycle
https://www.techyourchance.com/android-activity-life-cycle-for-professional-developers/
TechYourChance
Android Activity Lifecycle
This article describes the most practical, minimal and robust approach to management of Activity lifecycle in Android applications.
Весьма длинная статья, в которой хорошо разобраны цифровые подписи.
#signature #cryptography #cybersec
https://blog.cryptographyengineering.com/2018/04/07/hash-based-signatures-an-illustrated-primer/
#signature #cryptography #cybersec
https://blog.cryptographyengineering.com/2018/04/07/hash-based-signatures-an-illustrated-primer/
A Few Thoughts on Cryptographic Engineering
Hash-based Signatures: An illustrated Primer
Over the past several years I’ve been privileged to observe two contradictory and fascinating trends. The first is that we’re finally starting to use the cryptography that researchers h…
Интересный оффтоп. Замечательная статья, в которой очень подробно описан каждый шаг boot процесса для Linux: от power-кнопки до готовой к работе системы.
#linux #boot #kernel
https://www.ibm.com/developerworks/library/l-linuxboot/
#linux #boot #kernel
https://www.ibm.com/developerworks/library/l-linuxboot/
Статья уровня “для начинающих”, но мне почему-то дико зашло. Чувак очень элегантно скрестил logger с Kotlin-фишками и кусочком Timber, который позволяет достать имя класса, из которого был вызван метод logger.
#kotlin #log
https://www.varvet.com/blog/logger/
#kotlin #log
https://www.varvet.com/blog/logger/
Varvet
Varvet creates beautiful, valuable, and useful digital services, websites, and apps.
Небольшой обзор новых View в 28-й support library. В целом, всё как обычно. Добавили несколько View, которые все уже написали сами. Всё равно приятно, если работать это будет нормально, разумеется. Мне особо понравились изменения в кнопках - видно, что Material не стоит на месте и потихоньку меняется в лучшую сторону.
#material #supportlib
https://medium.com/exploring-android/exploring-the-v28-android-design-support-library-2c96c6031ae8
#material #supportlib
https://medium.com/exploring-android/exploring-the-v28-android-design-support-library-2c96c6031ae8
Medium
Exploring the v28 Android Design Support Library Additions
Version 28 of the Android support library was recently announced — within the current alpha version there is a collection of exciting new…
Ребята из Uber написали о том, как они на программном уровне улучшили GPS (и не только, куда же без GLONASS) позиционирование. Жаль только, что работать это будет не во всех городах и не на всех девайсах.
#gps #location
https://eng.uber.com/rethinking-gps/
#gps #location
https://eng.uber.com/rethinking-gps/
В статье разбирается, какие методы обычно используются в приложениях, чтобы понять, что они бегут на эмуляторе, и как эти проверки обойти.
#emulator #cybersec
http://www.juanurs.com/Bypassing-Android-Anti-Emulation-Part-I/
#emulator #cybersec
http://www.juanurs.com/Bypassing-Android-Anti-Emulation-Part-I/
Неплохую статью прислал @duglasher. В блоге Instagram Engineering вышла статья про то, как они пилили type mode (a.k.a. лень фотографировать, просто разукрашу текст) на iOS и Android. Часть про адаптацию размера текста довольно простая, а вот часть про
#instagram #text #span
https://instagram-engineering.com/building-type-mode-for-stories-on-ios-and-android-8804e927feba
Span мне понравилась, есть интересные советы, которые много где могут пригодиться.#instagram #text #span
https://instagram-engineering.com/building-type-mode-for-stories-on-ios-and-android-8804e927feba
Instagram Engineering
Building Type Mode for Stories on iOS and Android
Instagram recently launched Type Mode, a new way to post creative, dynamic text styles and backgrounds to Stories. Type Mode was an…
Внезапно, начиная с 15.0.0 версии, принцип версионирования Google Play Services и Firebase библиотек меняется на SemVer.
#google #playservices #firebase
https://android-developers.googleblog.com/2018/05/announcing-new-sdk-versioning.html
#google #playservices #firebase
https://android-developers.googleblog.com/2018/05/announcing-new-sdk-versioning.html
Android Developers Blog
Announcing new SDK versioning in Google Play services and Firebase
Posted by Doug Stevenson, Developer Advocate Starting today, the Android SDKs for Google Play services and Firebase will be using a n...
@Scorpikk прислал весёлую находку из кода ContentResolver.
#aosp #humor
android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/content/ContentResolver.java#757
#aosp #humor
android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/content/ContentResolver.java#757
Ребята из Uber показали свой доморощенный method tracing tool. И вот знаете, с одной стороны, богатая идея, а с другой, немножко пугает: они решили измерять с уровня системы, т.е. их тул это форк AOSP, который умеет бенчмаркать. Такие дела.
#performance #benchmarks #methodtracing
https://eng.uber.com/nanoscope
#performance #benchmarks #methodtracing
https://eng.uber.com/nanoscope
Ну, вы знаете, на днях закончился Google I/O. Мне не удалось на нём побывать, но иметь материал где-то на подкорке хочется. Я думаю, что не один в таком положении. Поэтому я буду потихоньку смотреть записи всех сессий, что мне показались интересными, и закидывать сюда поинты из каждого видео, которые меня заинтересуют. Не в каждый нюанс я буду погружаться достаточно глубоко, поэтому, если где-то ошибусь, feel free to написать мне, что я мудак и объяснить, в чём именно :) Итак, первый пошёл…
Есть проблема. Я её, например, ощущаю на себе: все приложения соответствуют Material Design и почти все выглядят одинаково скучно. Размывается индивидуальность бренда. На выбор компании остаются только цвет да иконки (не всегда, но часто). И, хотя Google-guys с самого начала говорили, что material - это рекомендация, а не жёсткие рамки, почти все всё равно лепили по material-лекалам одно и то же безобразие. Ну, Google поняли, что имеют дело со стадом хомячков, и решили добавить нам степеней свободы. Посредством Material Theming нам дают свободу (и тулзы, чтобы эту свободу держать в узде - сочетай цвета, мать твою) в выборе цветов, шрифтов и форм для элементов на экране.
Появился Sketch-плагин, который позволит переложить работу дизайнера в стили для Material Components - пачки написанных для нас View.
Ещё мне очень понравился момент с формой контролов (см. картинку выше), который даёт дополнительное понимание z-level’а компонентов.
#talk #material #design
https://youtu.be/3VUMl_l-_fI
Появился Sketch-плагин, который позволит переложить работу дизайнера в стили для Material Components - пачки написанных для нас View.
Ещё мне очень понравился момент с формой контролов (см. картинку выше), который даёт дополнительное понимание z-level’а компонентов.
#talk #material #design
https://youtu.be/3VUMl_l-_fI
YouTube
Customize Material Components for your product (Google I/O '18)
Take advantage of Material’s new expressiveness and adaptability by learning how to customize Material Design Components and quickly build beautiful products for Android, iOS, web, and Flutter.
Rate this session by signing-in on the I/O website here → h…
Rate this session by signing-in on the I/O website here → h…
Выступление Chet Haase и Romain Guy. Тут ты должен был стать заинтригован.
В докладе описывается весь Android Rendering Pipeline, но поскольку вместить это в 40 минут не получится, доклад выглядит как быстрое набрасывание названий разных классов и модулей. Тем не менее, вдумчиво его посмотреть я бы скорее советовал.
Наброшу несколько названий из доклада, чтобы ты понимал, о чём речь: Choreographer, VSync, UI Thread, RenderThread, SurfaceFlinger, BufferQueue, Hardware Composer (HWC).
Теперь несколько интересных фактов из сессии:
1. Начиная с Android Oreo можно использовать
2. Кусочек хинта (почему так - см. видео) - чем меньше
3. Метод
4. “RecyclerView is now able to do prefetching of items ahead of time”
5. Graphika app on Github - пачка примеров с использованием SurfaceFlinger, Surface, SurfaceView, media encoder, virtual displays.
6.
Подробности обо всём этом найдёшь по ссылке.
#rendering #window #surface #gpu
https://youtu.be/zdQRIYOST64
В докладе описывается весь Android Rendering Pipeline, но поскольку вместить это в 40 минут не получится, доклад выглядит как быстрое набрасывание названий разных классов и модулей. Тем не менее, вдумчиво его посмотреть я бы скорее советовал.
Наброшу несколько названий из доклада, чтобы ты понимал, о чём речь: Choreographer, VSync, UI Thread, RenderThread, SurfaceFlinger, BufferQueue, Hardware Composer (HWC).
Теперь несколько интересных фактов из сессии:
1. Начиная с Android Oreo можно использовать
Bitmap.Config.HARDWARE, чтобы аллоцировать Bitmap напрямую на GPU и не тратить время на копирование. Недостаток: если серьёзно разойтись, можно получить пачку совершенно невнятных крашей из глубин фреймворка2. Кусочек хинта (почему так - см. видео) - чем меньше
Window объектов на экране, тем лучше3. Метод
invalidate(left, top, right, bottom) можно больше не дрочить - система уже умеет неплохо оптимизировать этот момент, а багов от его использования уйма4. “RecyclerView is now able to do prefetching of items ahead of time”
5. Graphika app on Github - пачка примеров с использованием SurfaceFlinger, Surface, SurfaceView, media encoder, virtual displays.
6.
adb shell dumpsys SurfaceFlinger лучше выполнять, когда что-то анимируется/меняется на экране, иначе можно получить не совсем точные данные из-за дополнительных оптимизацийПодробности обо всём этом найдёшь по ссылке.
#rendering #window #surface #gpu
https://youtu.be/zdQRIYOST64
YouTube
Drawn out: How Android renders (Google I/O '18)
Come learn how Android turns your app's UI into pixels on the screen. Understanding how things work under the hood can help you figure out how to get the best performance for your applications.
Rate this session by signing-in on the I/O website here → h…
Rate this session by signing-in on the I/O website here → h…
В видео по ссылке рассказывают, что нового в ART в Android P:
1. Оптимизации компилятора для Kotlin (например, inline null-checks для non-null параметров)
2. CompactDex - штука, которая почикает Dex-файлы прямо на девайсе. Умеет: deduplicate and shrink code items, deduplicate multidex data, incorporate profile based Dex layout optimization (сложить методы, которые дёргаются часто или на старте в одно место в памяти)
3. На Nougat появились code profiles - во время выполнения аппа проверяется, какой код и когда выполняется и применяются соответствующие оптимизации. На Android P пошли дальше: появляется cloud profiles - данные о выполнении вашего кода загружаются в облако и оттуда прилетают другим юзерам. То есть если на Nougat чем чаще апп использовался, тем лучше работал, то на Android P ребята из Google хотят добиться оптимальной производительности сразу после установки, как раз благодаря cloud profiles. А теперь гениальная идея из их доклада: берём 1%-2% юзеров из alpha и beta каналов, они используют апп, а потом на всех юзеров уже раскатывается апп, для которого собраны все profiles и апп сразу работает оптимально. Любо!
#kotlin #art #performance #optimize
https://youtu.be/Yi9-BqUxsno
1. Оптимизации компилятора для Kotlin (например, inline null-checks для non-null параметров)
2. CompactDex - штука, которая почикает Dex-файлы прямо на девайсе. Умеет: deduplicate and shrink code items, deduplicate multidex data, incorporate profile based Dex layout optimization (сложить методы, которые дёргаются часто или на старте в одно место в памяти)
3. На Nougat появились code profiles - во время выполнения аппа проверяется, какой код и когда выполняется и применяются соответствующие оптимизации. На Android P пошли дальше: появляется cloud profiles - данные о выполнении вашего кода загружаются в облако и оттуда прилетают другим юзерам. То есть если на Nougat чем чаще апп использовался, тем лучше работал, то на Android P ребята из Google хотят добиться оптимальной производительности сразу после установки, как раз благодаря cloud profiles. А теперь гениальная идея из их доклада: берём 1%-2% юзеров из alpha и beta каналов, они используют апп, а потом на всех юзеров уже раскатывается апп, для которого собраны все profiles и апп сразу работает оптимально. Любо!
#kotlin #art #performance #optimize
https://youtu.be/Yi9-BqUxsno
YouTube
What's new in Android Runtime (Google I/O '18)
If you use the Java or Kotlin programming languages to develop on Android, Android Runtime (ART) is what ensures your code runs quickly and efficiently. Learn more about how ART makes it easier to write a great Android app with improvements in debugging and…