Курс Kotlin + Android, обзор

Курс Kotlin + Android, обзор

В конце 2021-го я записался на курс Разработка Android-приложений на Kotlin на степике. Обучение заняло несколько месяцев, хотя можно было и быстрее, просто у меня не получалось заниматься чаще.

Выдали сертификат «с отличием», несмотря на то, что я прошёл только ~90% всех лекций и задач: в январе-феврале резко стало не до курса, который я начал просто по фану.

В целом, курс на троечку, по возможности, стоит поискать что-то получше.

Подробнее →

JavaScript рефакторинг: удаление мёртвого кода

JavaScript рефакторинг: удаление мёртвого кода

Как неиспользуемый код стухает и лежит в проекте заповедными нетронутными пластами: новый функционал обложили тестами и снапшотами и выкатили на прод. Через какое-то время, клиентский код или компонент, который пользовался этим функционалом, удалили — а общие утилиты, константы, моки и конфигурации остались по чьему-то недосмотру. Такой код больше не нужен и не используется, но невидим для линтеров и подсветки IDE: он импортируется в тестах и StoryBook (например), и выглядит полезным и вообще, при деле.

В текущем большом проекте я нашёл и удалил около 5к строк неиспользуемых функций и компонентов, а также ненужных стилей, тестов, историй StoryBook, снапшотов и одну картинку. Что интересно, снапшоты были далеко не большей частью пулл реквеста, зато нашлось множество устаревших компонентов, которые импортировались только в историях SB.
Кроме прочего, это ускорило время сборки проекта примерно на полминуты или 5%: мелочь, а приятно. Подробнее →

JavaScript антипаттерны

JavaScript антипаттерны

Парочка мелких антипаттернов, которые просачиваются на прод и об которые можно споткнуться. Оба шаблона связаны с оптимизацией условий и переписыванием их в более удобочитаемом виде: Замена продолжительных условий и Перегрузка switch (true).

Подробнее →

JavaScript: про ленивую обработку и сокращённые вычисления

Вы не знаете JS: про ленивую обработку и сокращённые вычисления

В моём экземпляре «Вы не знаете JS: Типы и грамматические конструкции» есть раздел про порядок выполнения логических операторов. Здесь есть неточность: результаты примеров выше обусловлены тем, что интерпретатор отбрасывает части выражения, которые не требуются вычислять.
Действуют принципы Ленивых вычислений (Lazy evaluation) и Вычислений по короткой схеме (Short-circuit evaluation):

Подробнее →

Обзор 2019-го

God send me a sign (Оломоуц)

Люблю подводить итоги: у меня тысяча списков, от прослушанных альбомов до расходов и анти-todo листов с планировщиком. Я сажусь, просматриваю их все за целый год: все фото, что я снял, все посты, что написал в социалки, все планы, сроки и таблицы. Это помогает систематизировать опыт, наглядно увидеть, как сработало то или иное решение, и сделать обо всём этом выводы.

В 2019-м было много разработки, музыки и гитары. Про гитару и музыку я планирую написать отдельно, а далее про то, чем я занимался целый год и что нового понял (и не понял тоже).

Подробнее →

Генератор паролей на JavaScript

Чтобы закрепить пройденный на курсере курс по AngularJS, я переписал свой старый генератор паролей OktoPass заново: переверстал страницу с Bootstrap, избавился от jQuery и переделал сам механизм генерации паролей. Ссылка на сервис: password.axisful.info

Это было занятно, у меня получилось веб-приложение со стильной шёрсткой и адаптивной вёрсткой, а в процессе я написал пару велосипедов для серверного микро-движка и фронтенда, вроде поддержки переводов и работы с URL.

Далее я опишу некоторые ключевые моменты, на которых работает OktoPass.

Подробнее →

Python: загрузка альбомов ВКонтакте

Кратко: описание способа массовой загрузки аудиозаписей из Вконтакте, с сортировкой по альбомам.

Good news, everyone. Вконтакте закрыл свободный доступ к API аудиозаписей, и теперь скрипт не работает.

История

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

Со временем, у меня накопилось больше 65-ти альбомов, в которых находятся свыше 4000 записей.

Подробнее →

ImageMagick и пакетное слияние изображений

В простейшем случае, слить несколько изображений можно вот так:

где с помощью аргумента -page передаётся смещение сливаемого изображения относительно границ получаемого изображения (merged.png).

Подробнее о слиянии изображений и вообще использовании команд пакета ImageMagick написано здесь.

У меня же возникла необходимость выполнить слияние большого количества тайлов (более 1500) в одно большое изображение, в связи с чем был написан скрипт, который бодро-пакетно это всё выполняет. Подобный скрипт мне понадобился, чтобы склеить множество тайлов, выдранных с частного гуглмапса в полноценную карту высокого разрешения.
Подробнее →