AlseCode | Краткость и раскопки по разработке
21 subscribers
2 photos
1 video
14 links
Краткость — сестра разработки

Опыт инженерных изысканий и опасных экспериментов в сфере Kotlin/Java и прочего.

Блог: https://alse-code.ru

Менторю: https://solvery.io/ru/mentor/alexey_stepanov

Связь: @arsennikum
Download Telegram
to view and join the conversation
Баги в OpenJDK 1.8

Как-то при небольшой загрузке задачами тимлид дал нам интересную задачу на развитие: прочитать основные классы java core + collections. А тому, кто найдёт ошибку в HashMap, обещал штуку рублей, что придало хороший азартный блеск нашим глазам😏

Вызов принят, и кроме искомой ошибки в HashMap, я нашел ещё несколько...

---
Баги JDK, микрооптимизации, Inline методов в JVM, BitSet'ы, идиосинкразия Java, etc...
#java #jdk #jvm #погружение
Типичные проблемы новичка в AWS

Только начиная учиться работе с Amazon Web Services, я натолкнулся на несколько проблем, типичных для многих и разных задач — они достаточно просты и понятны, но в начале пути сжирают кучу времени.

- Проверь, что есть все нужные права в IAM
- Проверь Security Group
- Проверь, что EC2 instance запустился корректно

#aws #лайфхаки
Companion objects vs nested objects и зачем вообще нужны компаньоны

- Почему от static отказались в Kotlin
- Чем companion отличается от nested object?
- Что-то типа множественного наследования за счёт компаньонов в kotlin

#kotlin #погружение
LLVM vs JVM vs GraalVM

Kotlin Native - компиляция Kotlin кода в бинарники под конкретные платформы.
Основан на LLVM — Low Level Virtual Machine (опять vm?).

Что такое LLVM? Чем отличается от JVM? А GraalVM тогда что и чем похож на остальные?

---
Стековые и регистровые ВМ, биткод и байткод.. крупица знаний об огромном мире виртуальных машин

#concept #jvm #погружение
Computer Vision & Kotlin

Обычно всяческие CV, ML, AI проекты делаются на Python или C++, но есть возможность работать с этим из Java и, соответственно, Kotlin. Рассмотрим использование OpenCV из Kotlin на примере matchTemplate — операции поиска объекта по шаблону.

---
Найдём ли нужную кошку в толпе кошек?

#bytedeco #ComputerVision #kotlin #OpenCV #быстрыйСтарт
Что можно сделать с GitLab API

Gitlab предоставляет достаточно мощное REST API, с помощью которого можно делать множество рутинных действий. Расскажу о его подключении и нескольких типичных задачах, которые им можно решить, с примерами.

---
Как настроить, какие доки смотреть, примеры задач, исходник решения

#gitlab #kotlin #быстрыйСтарт
Gitlab CI основы

Замечательная штука, чтобы настроить свои CI/CD процессы. Думаю, по популярности идёт на втором месте, сразу после Jenkins’а и постепенно вытесняет его.

gitlab-ci.yaml - сгруппированный по стадиям набор задач, запускающий скрипты в докер контейнере. Если кратко, то это и есть вся суть

---
Примерчик для быстрого старта, со скриншотами где че тыкать. И обязательно погружение - куда копать дальше, где доки, где примеры, где че искать

#devops #gitlab #быстрыйСтарт
Синьор: Откуда ты взял этот код?
Джуниор: На Stack Overflow
Синьор: Из ответа или из вопроса?
Микросервисы. Послевкусие

- устали от темы микросервисов? Посмотрим на них с непопулярной стороны
- сбиваем спесь и разгребаем последствия одного из мощнейших хайпов десятилетия
- относятся ли плюсы микросервисов действительно к микросервисам?
- может не надо или когда-нибудь может и надо и что происходит? монорепы, модули, soa, unix-пайпы, FaaS? Спокойствие, только спокойствие

---
Запись с конференции

Ссылки из презентации:
Мартин Фаулер 1 2
Сэм Ньюмен. Создание микросервисов
Microservices - Not a free lunch!
Остановитесь! Вам не нужны микросервисы
Модули вместо микросервисов
Микросервисы. Закат хайпа?

#concept #погружение #микросервисы
Kotlin log VS Lombok

Скучаете по аннотации @Slf4j из Lombok? Забываете, как там пишется это всё вручную? Решение есть!

Всего несколько движений мышкой и корень…

Preferences -> Editor -> Live Templates -> Kotlin -> + -> Live Template:

Abbreviation: log
Description: insert slf4j log
Template Text: private val log = LoggerFactory.getLogger(this::class.java)
Applicable context->Define: Kotlin: class
(см.картинку)

И теперь — всё просто. Пишете log, нажимаете tab — и готово!

Вы скажете: лучше объявлять логгер статической переменной — и будете правы! Ничего сложного, просто надо добавить одну переменную и изменить ApplicableContext:
private val log = LoggerFactory.getLogger($CLASS$::class.java)
(см.картинку)

Только не забывайте, что для котлина есть специальный kotlin-logging. В прочем, для него алгоритм тот же, только template text немного другой:
private val logger = KotlinLogging.logger {}

И-ес!

Достижение получено:
Мастер объявления логов в Котлин🥇

---
#лайфхаки
This media is not supported in your browser
VIEW IN TELEGRAM
Если ты ещё не знаешь, как выглядит карьерная лестница программистов..