🏃⚙️ Настройка производительности Kotlin
Производительность — это критический показатель, который может улучшить или сломать ваше приложение. В то время как Kotlin предлагает множество функций, упрощающих разработку, знание того, как использовать их для повышения производительности, может изменить правила игры.
Среди советов есть следующие:
➕ Используйте val вместо var
➕ Избегайте оператора !!
➕ Используйте when вместо длинных цепочек if-else
➕ Используйте строковые шаблоны
➕ Используйте apply для Object Initialization
➕ Встроенные функции
➕ List вместо Array
➕ Избегайте использования Java Streams
Подробнее
#обучалка
Производительность — это критический показатель, который может улучшить или сломать ваше приложение. В то время как Kotlin предлагает множество функций, упрощающих разработку, знание того, как использовать их для повышения производительности, может изменить правила игры.
Среди советов есть следующие:
➕ Используйте val вместо var
➕ Избегайте оператора !!
➕ Используйте when вместо длинных цепочек if-else
➕ Используйте строковые шаблоны
➕ Используйте apply для Object Initialization
➕ Встроенные функции
➕ List вместо Array
➕ Избегайте использования Java Streams
Подробнее
#обучалка
👍6❤3🥰2🥱1
Какой iPhone себе купите?
Anonymous Poll
4%
iPhone 15
0%
iPhone 15 Max
9%
iPhone 15 Pro
15%
iPhone 15 Pro Max
2%
iPhone SE
40%
Зачем мне это?!
10%
Куплю Android и буду плакать
9%
Куплю Хуавей и пошло все....
9%
Свой вариант
🥰33❤17🔥9👏6👍3
🔎💼🗺️ Как программисту искать (и найти) работу за границей в 2023 году
Разбираемся: где искать работу за рубежом, как и где откликаться на вакансии, плюс несколько лайфхаков по составлению резюме.
Читать статью
#поискработы
Разбираемся: где искать работу за рубежом, как и где откликаться на вакансии, плюс несколько лайфхаков по составлению резюме.
Читать статью
#поискработы
👍7🔥3❤1
💪 Держите подборку лучших статей «Библиотеки программиста» за июль.
📖 ТОП-10 книг, без которых не обойтись ни одному программисту
👨💻 Тест: есть ли у вас способности к программированию?
🐍🎸 Курс Django. Часть 1: Django — что это? Обзор и установка фреймворка, структура проекта
📉 Cитуация на рынке труда в IT: зарплаты и куда все катится в 2023 году
🤖 4 сферы применения ChatGPT, Bing, Bard и Claude 2
🔍 ТОП-12 джоб-сайтов: где программисту разместить резюме и найти работу
🐇 Как проводить успешные переговоры: 3 правила активного слушания
🐍 Самоучитель по Python для начинающих. Часть 24: Основы работы с NumPy
#самыйсок
📖 ТОП-10 книг, без которых не обойтись ни одному программисту
👨💻 Тест: есть ли у вас способности к программированию?
🐍🎸 Курс Django. Часть 1: Django — что это? Обзор и установка фреймворка, структура проекта
📉 Cитуация на рынке труда в IT: зарплаты и куда все катится в 2023 году
🤖 4 сферы применения ChatGPT, Bing, Bard и Claude 2
🔍 ТОП-12 джоб-сайтов: где программисту разместить резюме и найти работу
🐇 Как проводить успешные переговоры: 3 правила активного слушания
🐍 Самоучитель по Python для начинающих. Часть 24: Основы работы с NumPy
#самыйсок
👍5❤2
😎 Очередной #дайджест по мобильной разработке
🔺 Вечная битва за производительность приложений на iOS — чек-лист, на что обратить внимание и к каким инструментам присмотреться
🔺 CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter — тест на внимательность, ну и дока интересная
🔺 Java 21 — вышла общедоступная версия Java 21 — около 2500 закрытых задач и 15 JEP'ов
🔺 Swift 5.9 — появилась система макросов, пакеты параметров, if/switch в качестве выражений и многое другое
🔺 ArchUnit vs. Konsist. Зачем нам понадобился еще один линтер Kotlin? — почему ArchUnit не идеален для Kotlin и в чем заключается польза Konsist
🔺 Вечная битва за производительность приложений на iOS — чек-лист, на что обратить внимание и к каким инструментам присмотреться
🔺 CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter — тест на внимательность, ну и дока интересная
🔺 Java 21 — вышла общедоступная версия Java 21 — около 2500 закрытых задач и 15 JEP'ов
🔺 Swift 5.9 — появилась система макросов, пакеты параметров, if/switch в качестве выражений и многое другое
🔺 ArchUnit vs. Konsist. Зачем нам понадобился еще один линтер Kotlin? — почему ArchUnit не идеален для Kotlin и в чем заключается польза Konsist
👍28❤4
🎙️📺 Собеседование на позицию Mobile Developer
В видосе спикер проведет собес с обсуждением знаний, которые пригодятся в повседневной разработке. В процессе общения будет проектироваться мультиплатформенное приложение (проектирование и общение по KMP), задача по корутинам, и в завершение — Compose и важные оптимизации.
Смотреть видео
#обучение
В видосе спикер проведет собес с обсуждением знаний, которые пригодятся в повседневной разработке. В процессе общения будет проектироваться мультиплатформенное приложение (проектирование и общение по KMP), задача по корутинам, и в завершение — Compose и важные оптимизации.
Смотреть видео
#обучение
👍9❤3
🤔🤔 Чего ждать от Kotlin K2
Новый K2 компилятор и прежде чем пытаться понять изменения в компиляторе, нужно выяснить мотивы, стоящие за этими изменениями:
🔹 Kotlin и его синтаксис постоянно развиваются. Компилятор должен эволюционировать, чтобы учесть эти изменения
🔹 Компилятор должен быть более эффективным. Первый компилятор никогда не был быстрым, он обеспечивал быструю разработку.
🔹 Улучшенная поддержка многопоточности и мультиплатформенности. Поскольку Kotlin берет на себя ответственность за компиляцию кода для различных платформ и целевых объектов, для компилятора становится важным поддерживать различные функции платформы, одновременно эффективно компилируя код Kotlin.
🔹 Улучшенные структуры компилятора. Компиляторы используют различные структуры данных для хранения семантической информации о коде. Реализация абстрактного синтаксического дерева в компиляторе Kotlin не очень полезна для будущей дорожной карты.
Подробнее
#обзор
Новый K2 компилятор и прежде чем пытаться понять изменения в компиляторе, нужно выяснить мотивы, стоящие за этими изменениями:
🔹 Kotlin и его синтаксис постоянно развиваются. Компилятор должен эволюционировать, чтобы учесть эти изменения
🔹 Компилятор должен быть более эффективным. Первый компилятор никогда не был быстрым, он обеспечивал быструю разработку.
🔹 Улучшенная поддержка многопоточности и мультиплатформенности. Поскольку Kotlin берет на себя ответственность за компиляцию кода для различных платформ и целевых объектов, для компилятора становится важным поддерживать различные функции платформы, одновременно эффективно компилируя код Kotlin.
🔹 Улучшенные структуры компилятора. Компиляторы используют различные структуры данных для хранения семантической информации о коде. Реализация абстрактного синтаксического дерева в компиляторе Kotlin не очень полезна для будущей дорожной карты.
Подробнее
#обзор
👍7❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Tiling — это реализация пагинации на основе состояния, которая представляет выгружаемый набор данных в виде простого списка. Он обеспечивает постоянный доступ к элементам по индексам в режиме реального времени и возможность самоанализа элементов, просматриваемых по страницам.
Tiller доступен в mavenCentral:
implementation com.tunjid.tiler:tiler:version
Читать статью
#гайд
Tiller доступен в mavenCentral:
implementation com.tunjid.tiler:tiler:version
Читать статью
#гайд
🤩13👍8❤3🔥1
🚢 Сертифицированная версия ViPNet OSSL с поддержкой ОС Аврора
ViPNet OSSL — ПО на базе библиотеки OpenSSL, которое позволяет использовать российские криптографические алгоритмы ГОСТ в прикладных системах. ViPNet OSSL 5.4 является законченным встраиваемым средством криптографической защиты информации (СКЗИ) и может быть использован разработчиками в приложениях и прикладных системах, с помощью которых можно подписывать документы и осуществлять проверку электронной подписи, устанавливать защищенные соединения по протоколам TLS 1.2 и 1.3, создавать крипто-защищенные сообщения в формате CMS и работать с различными форматами электронной подписи. Теперь эти возможности доступны и для приложений под управлением ОС Аврора.
Программный комплекс ViPNet OSSL версии 5.4 соответствует всем требованиям ФСБ России к СКЗИ и требованиям к средствам электронной подписи.
Подробности тут
#новости
ViPNet OSSL — ПО на базе библиотеки OpenSSL, которое позволяет использовать российские криптографические алгоритмы ГОСТ в прикладных системах. ViPNet OSSL 5.4 является законченным встраиваемым средством криптографической защиты информации (СКЗИ) и может быть использован разработчиками в приложениях и прикладных системах, с помощью которых можно подписывать документы и осуществлять проверку электронной подписи, устанавливать защищенные соединения по протоколам TLS 1.2 и 1.3, создавать крипто-защищенные сообщения в формате CMS и работать с различными форматами электронной подписи. Теперь эти возможности доступны и для приложений под управлением ОС Аврора.
Программный комплекс ViPNet OSSL версии 5.4 соответствует всем требованиям ФСБ России к СКЗИ и требованиям к средствам электронной подписи.
Подробности тут
#новости
👍8❤3
🧑✈️🥷 Jailbreak checker — как обезопасить свое iOS-приложение
Из-за получения полного доступа к системе появляется и доступ к незащищенному keychain. После взлома у пользователя появляется доступ к альтернативным сторам, из которых можно скачать приложения, не проходившие ревью в App Store. Одним из таких является Cydia, который чаще всего сразу же устанавливается в момент взлома устройства.
После джейлбрейка у мошенников появляется возможность взлома устройства по нескольким причинам:
🟠 Приложения, которые становится возможным скачать в результате джейлбрейка, не проверяются никем, поэтому могут быть небезопасны.
🟠 Apple не поддерживает устройства с jailbreak, из-за чего после взлома они перестают получать важные обновления, в том числе обновления системы безопасности.
🟠 В случае взлома устройства компания Apple аннулирует гарантию на него, и при поломке его уже нельзя будет отремонтировать в официальном сервисе.
Чем же это может быть опасно для приложения?
🔴 Если оно работает с персональными данными либо с денежными средствами — нужно предупредить пользователя о плохом развитии событий.
🔴 Это небезопасно, если приложение используется в качестве двухфакторной аутентификации.
🔴 Так как устройство не получает необходимые обновления безопасности, это упрощает для мошенников получение доступа к данным.
Подробнее тут
#гайд
Из-за получения полного доступа к системе появляется и доступ к незащищенному keychain. После взлома у пользователя появляется доступ к альтернативным сторам, из которых можно скачать приложения, не проходившие ревью в App Store. Одним из таких является Cydia, который чаще всего сразу же устанавливается в момент взлома устройства.
После джейлбрейка у мошенников появляется возможность взлома устройства по нескольким причинам:
🟠 Приложения, которые становится возможным скачать в результате джейлбрейка, не проверяются никем, поэтому могут быть небезопасны.
🟠 Apple не поддерживает устройства с jailbreak, из-за чего после взлома они перестают получать важные обновления, в том числе обновления системы безопасности.
🟠 В случае взлома устройства компания Apple аннулирует гарантию на него, и при поломке его уже нельзя будет отремонтировать в официальном сервисе.
Чем же это может быть опасно для приложения?
🔴 Если оно работает с персональными данными либо с денежными средствами — нужно предупредить пользователя о плохом развитии событий.
🔴 Это небезопасно, если приложение используется в качестве двухфакторной аутентификации.
🔴 Так как устройство не получает необходимые обновления безопасности, это упрощает для мошенников получение доступа к данным.
Подробнее тут
#гайд
👍7❤2😁1
Подготовили вам #дайджест инструментов для новичков, ускоряющих разработку
🔻 Appery.io. Облачная платформа для кроссплатформенной разработки с возможностью перетаскивать элементы мышкой.
🔻 Appian Quick Apps. Вводите ключевые данные, после чего инструмент начинает сбор информации, создание форм и автоматизацию процессов. На выходе получаем приложение, с функциями, которые могут понадобиться пользователям.
🔻 Kony Visualizer. Инструмент для разработки wearables-приложений.
🔻 Perfecto Mobile. Бесплатная облачная, автоматизированная среда для тестирования с удобным UI, которая поможет выпустить приложение без ошибок.
🔻 Como. Поможет создать приложение, повышающие эффективность программ лояльности. Подойдет для владельцев бизнеса, которые хотят самостоятельно сделать и запустить приложение.
🔻 Appery.io. Облачная платформа для кроссплатформенной разработки с возможностью перетаскивать элементы мышкой.
🔻 Appian Quick Apps. Вводите ключевые данные, после чего инструмент начинает сбор информации, создание форм и автоматизацию процессов. На выходе получаем приложение, с функциями, которые могут понадобиться пользователям.
🔻 Kony Visualizer. Инструмент для разработки wearables-приложений.
🔻 Perfecto Mobile. Бесплатная облачная, автоматизированная среда для тестирования с удобным UI, которая поможет выпустить приложение без ошибок.
🔻 Como. Поможет создать приложение, повышающие эффективность программ лояльности. Подойдет для владельцев бизнеса, которые хотят самостоятельно сделать и запустить приложение.
👍5❤3🔥1
Какие технологии для кроссплатформы вы используете?
Anonymous Poll
30%
Kotlin multi platform
7%
React Native
5%
Xamarin
3%
PWA
48%
Ничего
12%
Свой вариант
❤6
🧠🧠 Советы по управлению памятью во Flutter
Почему важно управление памятью?
📍 Эффективное использование памяти обеспечивает более быструю работу приложения и плавную анимацию.
📍 Оптимизация использования памяти гарантирует бесперебойную работу других приложений на устройстве ввиду ее ограниченного количества.
📍 Приложение, которое эффективно управляет памятью, снижает вероятность сбоев и повышает удовлетворенность юзеров.
Советы:
🟡 Используйте сборку мусора Dart.
🟡 Используйте конструкторы const для виджетов, чтобы предотвратить ненужное создание экземпляров объектов, экономя память.
🟡 Выбирайте виджеты без сохранения состояния, поскольку они занимают меньше памяти.
🟡 Оптимизируйте большие файлы и их загрузку.
🟡 Утилизируйте контроллеры и потоки, например с помощью метода dispose().
🟡 Аккуратно используйте кеш во избежание раздувания памяти. Устанавливайте ограничения.
🟡 Избегайте ненужного использования ресурсов с высоким разрешением.
🟡 Контролируйте длительность хранения синглотонами больших объемов данных.
🟡 Используйте виджеты, которые автоматически освобождают ресурсы.
🟡 Применяйте слабые ссылки, например, dart:ffi.
🟡 Остерегайтесь прямой загрузки больших изображений — Image.memory и Image.network. Применяйте кеширование.
#туториал
Почему важно управление памятью?
📍 Эффективное использование памяти обеспечивает более быструю работу приложения и плавную анимацию.
📍 Оптимизация использования памяти гарантирует бесперебойную работу других приложений на устройстве ввиду ее ограниченного количества.
📍 Приложение, которое эффективно управляет памятью, снижает вероятность сбоев и повышает удовлетворенность юзеров.
Советы:
🟡 Используйте сборку мусора Dart.
🟡 Используйте конструкторы const для виджетов, чтобы предотвратить ненужное создание экземпляров объектов, экономя память.
🟡 Выбирайте виджеты без сохранения состояния, поскольку они занимают меньше памяти.
🟡 Оптимизируйте большие файлы и их загрузку.
🟡 Утилизируйте контроллеры и потоки, например с помощью метода dispose().
🟡 Аккуратно используйте кеш во избежание раздувания памяти. Устанавливайте ограничения.
🟡 Избегайте ненужного использования ресурсов с высоким разрешением.
🟡 Контролируйте длительность хранения синглотонами больших объемов данных.
🟡 Используйте виджеты, которые автоматически освобождают ресурсы.
🟡 Применяйте слабые ссылки, например, dart:ffi.
🟡 Остерегайтесь прямой загрузки больших изображений — Image.memory и Image.network. Применяйте кеширование.
#туториал
❤25🥰15🔥13👏11👍7
🐕📈 Ходить ли на конференции джуну?
Что такое конференции и комьюнити, как и зачем в этом участвовать и самое главное, как из этого извлечь выгоду. Это все заставляет развиваться, заводить новые знакомства, получать дополнительные знания и хорошо проводить время. Но для получения пользы, необходимо понимать, как все устроено. В общем, вас ждет познавательный выпуск. Приятного просмотра 😉
#видео
Что такое конференции и комьюнити, как и зачем в этом участвовать и самое главное, как из этого извлечь выгоду. Это все заставляет развиваться, заводить новые знакомства, получать дополнительные знания и хорошо проводить время. Но для получения пользы, необходимо понимать, как все устроено. В общем, вас ждет познавательный выпуск. Приятного просмотра 😉
#видео
👍7❤2🥰1
🐥🐥 Обнаружение утечек в тестировании UI
Утечки памяти могут вызывать проблемы с производительностью и сбои приложений, что делает их важными для обнаружения и устранения. Однако, если архитектура проекта хорошо продумана или в нем задействованы опытные разработчики, утечки будут появляться редко. Ручное обнаружение утечек часто не дает никаких результатов, а также требует значительного количества времени.
Речь пойдет о библиотеке для поиска утечек в Android — LeakCanary.
Интеграция LeakCanary в тесты
Вы можете легко интегрировать LeakCanary в UI тесты, просто включив код, который запускается по завершении теста:
LeakAssertions.assertNoLeaks()
После завершения теста, если вы используете Espresso, запустите обнаружение утечек с помощью LeakCanary в методе, обозначенном как After:
@After
fun after() {
// Launch leak detection
LeakAssertions.assertNoLeaks()
}
Подробнее читайте тут
#гайд
Утечки памяти могут вызывать проблемы с производительностью и сбои приложений, что делает их важными для обнаружения и устранения. Однако, если архитектура проекта хорошо продумана или в нем задействованы опытные разработчики, утечки будут появляться редко. Ручное обнаружение утечек часто не дает никаких результатов, а также требует значительного количества времени.
Речь пойдет о библиотеке для поиска утечек в Android — LeakCanary.
Интеграция LeakCanary в тесты
Вы можете легко интегрировать LeakCanary в UI тесты, просто включив код, который запускается по завершении теста:
LeakAssertions.assertNoLeaks()
После завершения теста, если вы используете Espresso, запустите обнаружение утечек с помощью LeakCanary в методе, обозначенном как After:
@After
fun after() {
// Launch leak detection
LeakAssertions.assertNoLeaks()
}
Подробнее читайте тут
#гайд
❤20👍6🔥1
В каких компаниях самые высокие зп?
Anonymous Poll
8%
Альфа Банк
23%
Тинькоф
22%
Сбер
15%
Яндекс
2%
Билайн
11%
VK/Mail
13%
Авито
40%
Свой вариант
👍3🥱3🌚3❤1
😎 Очередной #дайджест по мобильной разработке
🔹 Разблокировка SwiftUI в Airbnb — история о переходе с Epoxy и UIKit на SwiftUI в Airbnb, а также о сопутствующих проблемах
🔹 Как часто вызывается UICollectionView layoutSubviews во время прокрутки? — очень подробный разбор этапов прорисовки экрана
🔹 Как async/await работает внутри Swift — как оно работает, почему оно работает и о каких подводных камнях нужно знать
🔹 Инфраструктура Android UI-тестов — видос про автоматизацию запуска тестов на каждый коммит в каждом пулл-реквесте 🔥🔥
🔹 Размышления о Flutter 3.13 — когда бомбануло от обновлений, в хорошем понимании слова 😂
🔹 Разблокировка SwiftUI в Airbnb — история о переходе с Epoxy и UIKit на SwiftUI в Airbnb, а также о сопутствующих проблемах
🔹 Как часто вызывается UICollectionView layoutSubviews во время прокрутки? — очень подробный разбор этапов прорисовки экрана
🔹 Как async/await работает внутри Swift — как оно работает, почему оно работает и о каких подводных камнях нужно знать
🔹 Инфраструктура Android UI-тестов — видос про автоматизацию запуска тестов на каждый коммит в каждом пулл-реквесте 🔥🔥
🔹 Размышления о Flutter 3.13 — когда бомбануло от обновлений, в хорошем понимании слова 😂
❤7🔥2