Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Kotlin Coroutines под капотом

Время на прочтение36 мин
Количество просмотров19K

Вероятнее всего у вас спрашивали на собесе «как работают корутины под капотом?», вы не долго думая выбрасывали что‑то в стиле «там под капотом стейт‑машина, она определяет какая suspend функция будет выполняться», но понимали ли вы на самом деле всё о чем говорили? Возможно, только вам это известно, но если честно я очень плохо понимал собственные ответы на такие вопросы как бы это парадоксально не звучало и даже после десятка пройденных собесов у меня не было полноценной картины как работает внутрянка этой поистине невероятной библиотеки «сладкой асинхронщины».

Читать далее
Всего голосов 30: ↑30 и ↓0+36
Комментарии6

Как подключить Yandex GPT к своему проекту на Python

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров42K

6 декабря Яндекс открыл доступ к своим диалоговым моделям (моделям генерации) и векторного представления текста через API. API уже доступно в Yandex Cloud.

Вчера мне потребовалось применить его в приложении, однако, не удалось найти руководства, как сделать это быстро. Документация Яндекса хороша, но предполагает, что опыт работы с Yandex Cloud уже имеется. В отсутствие такого опыта документация выглядит фрагментированной.

Предлагаю пошаговый гайд, который, надеюсь, сэкономит читателю, не знакомому с Yandex Cloud, часик-другой.

Для того, чтобы использовать Yandex GPT в Вашем Python-проекте, нужно выполнить 4 шага:

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии10

Визуализация кристаллических 3d-структур в браузере без плагинов

Время на прочтение5 мин
Количество просмотров18K
Привет, Хабр! В этой статье я сравню четыре открытых движка визуализации кристаллических структур в формате CIF (Crystallographic Information File), популярном в кристаллохимии и материаловедении. Речь пойдёт о современном JavaScript (включая транскомпиляцию Java и C в JavaScript), о кристаллохимии и физике твёрдого тела. Мы телепортируемся из мира Шрёдингера и Ландау в мир Бернерса-Ли и Джобса, а затем обратно. Итак, поехали.

Water adsorption on perovskite surface

Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии1

Применение искусственного интеллекта в синтетической химии

Время на прочтение19 мин
Количество просмотров18K


Интервью с профессором Игорем Баскиным, доктором физико-математических наук, ведущим научный сотрудник физического факультета МГУ.

В чем самая большая сложность для нейронных сетей, чтобы научиться устанавливать взаимосвязь между структурой вещества и его физическими и химическими свойствами?

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

В этом состоит фундаментальное отличие от стандартных задач, решаемых при помощи нейронных сетей, например, распознавания изображений. Действительно, то, что цифра 8 изображается в виде двух соприкасающихся окружностей, не является следствием каких-либо законов природы – это просто предмет соглашений между людьми. А вот римляне в свое время решили, что для них лучше изображать это же число как VIII. Поскольку такие соглашения делаются ради удобства, их форма выбирается такой, чтобы естественные нейронные сети в голове у человека очень легко на подсознательном уровне их распознавали.

Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии21

Опыт перехода на MVI в Android на базе собственного решения

Время на прочтение16 мин
Количество просмотров13K

В команде Android мы активно применяем MVI для проектирования взаимодействия состояния экрана и бизнес-логики. В этой статье мы хотим рассказать о собственной MVI-библиотеке – Reduktor и об опыте внедрения и использования. Статья будет полезна всем, кто хочет познакомиться с Redux-like MVI.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии0

Как Android запускает MainActivity

Время на прочтение6 мин
Количество просмотров31K
Недавно я провел исследование о main() методе в Java и то, как он служит точкой входа для любого приложения Java. Это заставило меня задуматься, а как насчет Android-приложений? Есть ли у них основной метод? Как они загружаются? Что происходит за кулисами до выполнения onCreate()? Майкл Бэйли очень подробно рассказал о том, как работает Main Thread, так что это быстрый обзор его доклада плюс дополнительная информация из Android Open Source Project (AOSP).

В этой статье мы рассмотрим:

  1. Что происходит от нажатия на иконку приложения до запуска MainActivity
  2. Найдем основной метод приложения и узнаем, как основной поток (он же UI, он же Main Thread) получает свое назначение.
  3. Рассмотрим роль, которую играют Looper & Handler в передаче сообщений, которые в конечном итоге приводят к созданию вашей Activity.

Что происходит при запуске приложения


При запуске любого приложения, многое происходит глубоко внутри на уровне ядра, например начальная загрузка Zygote, загрузка классов в JVM, а для JVM — найти основной метод static void main(String args []) и вызывать его. В случае Android JVM находит основной метод main() в ActivityThread. Затем он вызывает main(), после чего ядро передает управление вашему приложению. Итак, мы нашли точку входа — ActivityThread, но прежде чем подробно изучить это, давайте посмотрим на дорожную карту процесса, чтобы визуализировать всю операцию.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии6

Main Loop (Главный цикл) в Android Часть 1. Пишем свой цикл

Время на прочтение13 мин
Количество просмотров25K

Основой любого приложения является его главный поток. На нем происходят все самые важные вещи: создаются другие потоки, меняется UI. Важнейшей его частью является цикл. Так как поток главный, то и его цикл тоже главный - в простонародье Main Loop.

Тонкости работы главного цикла уже описаны в Android SDK, а разработчики лишь взаимодействуют с ним. Поэтому, хотелось бы разобраться подробней, как работает главный цикл, для чего нужен, какие проблемы решает и какие у него есть особенности. 

Это первая часть цикла разбора главного цикла в Android. Вообще, лучший способ понять, как что-то работает - сделать это самому. Поэтому, прежде чем лезть в дебри Android SDK давайте попробуем написать свой цикл, правда без блэкджека и прочего. Наоборот, это будет минимально работоспособный цикл, но зато хорошо демонстрирующий основную логику, без лишней мишуры.

Читать далее
Всего голосов 16: ↑15 и ↓1+17
Комментарии8

Наследование, композиция, агрегация

Время на прочтение12 мин
Количество просмотров358K
Нередко случается, что решив разобраться с какой-то новой темой, понятием, инструментом программирования, я читаю одну за другой статьи на различных сайтах в интернете. И, если тема сложная, то эти статьи могут не на шаг не приблизить меня к понимаю. И вдруг встречается статья, которая моментально дает озарение и все паззлы складываются воедино. Трудно определить, что отличает такую статью от других. Правильно подобранные слова, оптимальная логика изложения или же просто более релевантный пример. Я не претендую на то, что моя статься окажется новым словом в C# или же лучшей обучающей статьей. Но, возможно для кого-то она станет именно той, которая позволит разобраться, запомнить и начать правильно применять те понятия, о которых пойдет речь.
Читать дальше →
Всего голосов 19: ↑13 и ↓6+7
Комментарии97

Композиция или наследование: как выбрать?

Время на прочтение9 мин
Количество просмотров149K

В начале...


… не было ни композиции, ни наследования, только код.


И был код неповоротливым, повторяющимся, нераздельным, несчастным, избыточным и измученным.


Основным инструментом для повторного использования кода была копипаста. Процедуры и функции были редкостью, подозрительными новомодными штучками. Вызов процедур был дорогим удовольствием. Части кода, отделенные от основной логики, вызывали недоумение!


Мрачные были времена.


Но вот лучик ООП воссиял над миром… Правда, несколько десятилетий1 никто этого не замечал. Покуда не появился графический интерфейс2, которому, как выяснилось, очень-очень не хватало ООП. Когда нажимаешь на кнопку в окне, что может быть проще, чем отправить кнопке (или ее представителю) сообщение "Нажатие"3 и получить результат?


И вот тут ООП взлетел. Было написано множество4 книг, расплодились бесчисленные5 статьи. Так что сегодня-то каждый может в объектно-ориентированное программирование, так?


Читать дальше →
Всего голосов 47: ↑42 и ↓5+37
Комментарии100

Single Activity с Navigation Component. Или как я мучался с графами. Boilerplate ч. 1

Время на прочтение6 мин
Количество просмотров15K

Всем привет! Меня зовут Алишер, Android-разработчик уже как 1,5 года. За это время у меня появился шаблонный (Boilerplate) проект в котором у нас базовая архитектура приложений которую мы будем разбирать. В этой статье я расскажу, и покажу как я ел Single Activity Architecture с Fragment'ами и Navigation Component.

Читать далее
Всего голосов 4: ↑3 и ↓1+3
Комментарии4

Как мы перешли с kotlinx.synthetics на Android View Binding

Время на прочтение12 мин
Количество просмотров6.2K

Привет! Меня зовут Ваня, я Android-разработчик из продуктовой команды hh.ru, и в этой статье я расскажу о нашем опыте миграции на ViewBinding.

В конце 2020 года в официальном блоге Android Developers объявили, что android-kotlin-extensions plugin для Gradle больше не дружит с Koltin с сентября 2021 и будет объявлен  ̶э̶к̶с̶к̶о̶м̶ь̶ю̶н̶и̶к̶а̶д̶о̶  deprecated.

В нашем  Android приложении довольно большая кодовая база, и этот плагин использовался повсеместно и на каждом экране. Делать код-фриз и направлять все силы разработчиков на миграцию совсем не хотелось, и мы решили попробовать автоматизировать процесс рефакторинга, а заодно сделать его итеративным.

Читать далее
Всего голосов 15: ↑14 и ↓1+14
Комментарии4

Нейронные сети для любопытных программистов (с примером на c#)

Время на прочтение5 мин
Количество просмотров136K
Так как в заголовке был отмечен «для любопытных программистов», хочу сказать, что и моё любопытство привело к тому, что я, будучи разработчиком мобильных игр, написал такой пост. Я совершенно уверен, что найдутся программисты, которые когда-то думали об искусственных интеллектах и это очень хороший шанс для них.
Читать дальше →
Всего голосов 40: ↑28 и ↓12+16
Комментарии15

Несколько занимательных Python-проектов

Время на прочтение2 мин
Количество просмотров10K
Вступление.

Я долго думал, создавать ли этот топик.
Аргумент против: творения не мои, поэтому инвайта ожидать не стоит, а в силу отсутствия исходников полезность статьи не велика.
Аргумент за: я был сильно впечатлен увиденным, а искать что-то касающееся Python-а и программирования в целом на просторах youtube-a вряд ли кто-то станет.

Так что в конце-концов я все же решил поделиться увиденным с публикой. А поделюсь я с Вами несколькими видео-роликами, раскрывающими возможности ряда программ, написанных на питоне с использованием модуля pygame. Основная тематика приложений — различного рода симуляции.

Об авторе (но не от автора).

Автором всех шести приложений является Badmephisto — студент из Словакии, живущий в настоящее время в Канаде. Он весьма известен как спидкубер, но, как мне кажется, не менее талантлив в программировании. Еще он замечательный математик, увлекающийся фракталами.
Ссылки: Cubing site, Youtube account, Fractalmath channel.

Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии11

Вычислительная геометрия, или как я стал заниматься олимпиадным программированием.Часть 1

Время на прочтение8 мин
Количество просмотров134K
Здравствуйте, уважаемые хабравчане! Это моя вторая статья, и мне хотелось бы поговорить о вычислительной геометрии.

Немного истории


Я являюсь студентом уже 4 курса математического факультета, и до того как я начал заниматься программированием, я считал себя математиком на 100 процентов.

В конце первого курса мой преподаватель по информатике, который занимается олимпиадным программированием, обратил на меня внимание. Им как раз не хватало одного математика в команду. Так потихоньку меня начали приучать к олимпиадному программированию. Скажу честно, для меня это было очень сложно: для человека, который узнал слово Delphi на первом курсе. Однако мой преподаватель оказался очень грамотным специалистом и нашел хороший подход ко мне. Он начал давать мне математические задачи, который я сначала решал чисто математически, а уже потом писал код (с грехом пополам).

Мне очень нравится подход моего преподавателя: «разберись с этой темой, а потом расскажи нам, да так чтоб мы все поняли».

Итак, первой на самом деле важной задачей, с которой мне поручили разобраться, было именно вычислительная геометрия, необходимо было разобраться в типичных задач этого раздела информатики. И я решил подойти к этой задаче со всей ответственностью.

Я помню, как долго мучился с этими задачами, чтобы они прошли все тесты на сайте informatics.mccme. Зато теперь я очень рад, что прошел через все испытания и знаю, что же такое задачи вычислительной геометрии.
Читать дальше →
Всего голосов 83: ↑72 и ↓11+61
Комментарии40

Информация

В рейтинге
Не участвует
Откуда
Пушкино, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Mobile Application Developer
Intern
От 100 000 ₽
Android development
Kotlin
Development of mobile applications
Dagger 2
Android Studio
Gradle