Записки Kotlin Developer
79 subscribers
47 photos
5 videos
5 files
30 links
Hi, я Кирилл, Kotlin разработчик👋

Тут пишу заметки и tutorial: Kotlin, алгоритмы, Functional style, инфрастуктуру, микросервисы.

Начинаем с базы и дойдем до вершин📈

Subscribe, Let's upgrade skills together🤝

Автор: @kyrillP
Download Telegram
А вы слушаете IT подкасты или вообще какие-нибудь аудио подкасты?
Если да, то буду благодарен если поделитесь ими🙏

Когда я раньше активно занимался фронтендом, мне безумно нравились подкасты «Веб-стандарты», это был год так 20-й. Там Вадим Макеев из Opera Browser часто выступал… Представляете, они всё ещё продолжают выпускать новые выпуски! Это просто невероятно!

Очень надеюсь, что проект «Море кода» также сохранит свою актуальность на долгие годы. Давайте поддержим их – подпишемся на одну из любимых платформ! 😎
4🔥3
Forwarded from СБЕР IT Сочи
Теперь нас можно не только читать, но и слушать — мы запустили свой подкаст 😉

MORE КОДА
— подкаст, в котором резиденты нашего хаба обсуждают важные темы из мира айти 🎙️

В первом выпуске мы погружаемся в проблему токсичности на работе и предлагаем практические инструменты, которые помогут наладить общение с коллегами.

А также шутим на тему токсиков и создаём свою классификацию: сплетник, манипулятор, нарцисс… и внезапно “позитивный коллега”.

Если вы тоже сталкивались с токсичными коллегами или сами являетесь таким и хотите решить проблему, скорее включайте наш первый выпуск!


🎶 слушать в Звуке
🟨 слушать в Яндекс музыке
🚀 слушать прямо в Телеграме

Приятного прослушивания!
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Коллеги рассказали, что обо мне кто-то написал в своем личном канале. Мне очень приятно😊

А ещё классно, что он таки попал на стажировку в Сбер.. Уверен, в этом ему помогла активная жизненная позиция, он не сидел сложа руки, рассылая резюме на hh.ru, а стучался в разные двери и параллельно прокачивал харды..
Кстати, это и была основная идея моего прошлого доклада на тему "Как стать java-разработчиком"..

Успехов ему и вам, если сейчас активно ищите работу, просто делайте маленькие шаги и у вас все получится!

Будьте джавистами и не соглашайтесь на меньшее😁
🔥3
Сегодняшний вебинар Сбера с действующим Java-разработчиком Кириллом Пахтусовым был просто атаз!💣 Он раскрыл актуальные инструменты своего отдела которые помогают в разработке крутых продуктов и рассказал, как русские хакатоны реально помогают новичкам получить релевантный опыт. Хотя Mortal Kombat'а и не было, это не помешало мне выиграть книгу по чистому кода за самый интересный вопрос!

вопрос был по ci/cd и почему все чаще опыт работы в его настройке требуется на позициях junior.

в ответ прозвучало что компании требуют не идеальное знания этой технологии, а скорее поверхностного понимания которое будет выгодно отсеивать резюме по ключевым словам, что очень сильно повысит кпд рекрутора в поисках достойных кандидатов
🔥8
Кажется я становлюсь звукоинженером😁

Наконец то я настроил себе звук для музыкального онлайн-стриминга..
Я стал певцом, музыкантом на одной из стриминговых платформ, но это хобби 😅😅

Немного холхозно, что звук идет через два микшера, но иначе никак: один микшер хорошо обрабатывает вокал, другой по OTG/USB дружит с телефоном.

Вот теперь думаю, может подробно описать схему подключения, приложить спецификацию оборудования и записать демо? Лично я много нервов потратил на настройку всего этого, а как я переживал что очередной купленный проводок не подойдёт к моему оборудованию 😂

Было бы это кому-нибудь интересно? 😂
🔥15
Всем доброго утра!

Написал статью на vc.ru по оборудованию для звука. Если не интересно оборудование, можно зайти и просто послушать как я спел, эксклюзивочка😁

https://vc.ru/life/1767114-domashnyaya-karaoke-sistema-dlya-onlain-striminga-chast-1

Часть 2 - выйдет очень скоро, до конца этой недели😊
🔥113👏2
Media is too big
VIEW IN TELEGRAM
В субботу выходил на работу, а после работы отправился на кватирник Школы вокала.

Work life balance нужно соблюдать😂
🔥155🤯2👏1
Приглашение на мастер-класс  Jmix: аутентификация через Telegram

📅 Дата и время: сегодня, 20:00 
📍 Место: онлайн-встреча по ссылке: https://salutejazz.ru/calls/qgtjje?psw=OBsOXQcABBUZCwlLWBQTBhYBFA 

На мастер-классе я расскажу, как интегрировать систему аутентификации через Telegram в платформу Jmix. Это будет полезно как для тех, кто уже знаком с Jmix, так и для тех, кто только начинает работать с этой платформой.

🔍 Что вы узнаете:
- Как настроить интеграцию с Telegram;
- Как реализовать аутентификацию по JWT токену используя Spring Security;
- Как интегрировать Jmix с внешними сервисами.

📢 Бонус: по итогу встречи я поделюсь проектом с готовой реализацией авторизации через Telegram.

🚀 Мастер-класс предназначен для студентов-практикантов из колледжа, но открыт для всех желающих!

Если вы хотите узнать больше о Jmix и его возможностях, загляните на официальный сайт: https://www.jmix.ru/

Присоединяйтесь, будет интересно!
🔥5👍2
Привет, друзья! 🌟

Недавно сделал интересное открытие — теперь интеграция GigaChat в проекты на Java и Kotlin стала проще благодаря новым инструментам: langchain4j-gigachat и spring-ai-gigachat. Я подробно изучил оба варианта и выбрал первый вариант, потому что он оказался удобнее всего.

Почему именно langchain4j-gigachat?
Я активно использую LLM-модели в своих проектах, и недавно возникла задача подключить чат-модель для проверки пользовательского ввода на предмет спама, нецензурных выражений и нежелательного контента. Задача была простая: нужно было убедиться, что введённый текст подходит для детской сказки.

Вот небольшой код-пример, демонстрирующий всю простоту реализации:

Шаг 1: Добавляем зависимость
Подключаем нужную библиотеку в Gradle-файл:
dependencies {
implementation("chat.giga:langchain4j-gigachat:0.1.6")
}

Шаг 2: Создаём помощника
Описываем интерфейс помощника и добавляем аннотацию, чтобы сделать работу удобной и понятной:

data class ValidateRs(val isValid: Boolean?, val description: String?)

interface ValidateAssistant {
@UserMessage("""
Проверяй, подходит ли указанный ниже текст для детской сказки:

Текст: {{text}}
""")
fun validate(@V("text") text: String): ValidateRs
}

Теперь данные приходят сразу в нужном формате, никаких проблем с JSON-парсингом.

Шаг 3: Настраиваем конфигурацию

Создаём конфиг для соединения с моделью GigaChat и настраиваем бины:
@Configuration
open class AIConfig(private val clientSecret: String) {
@Bean
open fun gigaChatChatModel(): GigaChatChatModel {
return GigaChatChatModel.builder()
// Здесь прописаны настройки модели и авторизации
...
.build()
}

@Bean
open fun assistant(chat: GigaChatChatModel): ValidateAssistant {
val chatMemory = MessageWindowChatMemory.withMaxMessages(20)
return AiServices.builder(ValidateAssistant::class.java)
.chatLanguageModel(chat)
.chatMemory(chatMemory)
.build()
}
}


Шаг 4: Используем помощник

Создаём простой сервис для удобного обращения к помощнику:

@Service
open class AIService(private val validateAssistant: ValidateAssistant) {
fun validateText(text: String): ValidateRs {
return validateAssistant.validate(text)
}
}

Всё готово! Теперь можно легко интегрировать проверку текста в любые сервисы вашего приложения.

Я уже проверил этот подход на практике — всё отлично работает!

Надеюсь, мой опыт окажется полезным и вам захочется попробовать эту замечательную библиотеку самостоятельно. Репозиторий доступен здесь:
https://github.com/ai-forever/langchain4j-gigachat

Делитесь своими успехами и вопросами в комментариях, буду рад обсудить! 😊
❤‍🔥5🔥53
🚀 Как перенести Docker-образ между серверами без Docker Artifact Registry?

Недавно столкнулся с такой ситуацией: мой виртуальный выделенный сервер внезапно потерял связь с моим приватным Docker Artifact Registry. При попытке обновить образы возникала следующая ошибка:
Error response from daemon: Get "https://kronx.cr.cloud.ru/v2/": dial tcp: lookup kronx.cr.cloud.ru on 127.0.0.53:53: server misbehaving


Эти выходные выдались непростыми: не хотелось отвлекаться на написание в техподдержку, поэтому решил попробовать разобраться сам. Пробовал добавить дополнительные DNS-серверы вручную, однако ничего не изменилось. Тогда пришло понимание, что единственный выход — временно обойти систему хранения образов и перенести нужный образ вручную. К счастью, Docker позволяет сделать это достаточно легко...


Решение проблемы:

Шаг 1: Экспортируем образ локально на исходном сервере:
docker save -o my_image.tar my_image_name:tag

Шаг 2: Передаем архив (my_image.tar) на целевой сервер удобным методом передачи файлов (SSH, FTP)

Шаг 3: Импортируем образ на новом сервере:

docker load -i my_image.tar


Позже выяснилось, что проблема была временной, и Artifact Registry заработал нормально спустя некоторое время. Этот случай наглядно продемонстрировал гибкость Docker и подчеркнул важность наличия альтернативных решений для непредвиденных ситуаций.
👍65
▌ Социальный IT-проект: создай сказку и помоги ребенку!

Мы запустили проект совместно с @BugrovExperience и благотворительным фондом Время Детства — социальную платформу, позволяющую каждому почувствовать себя писателем, добавив пару строк в коллективную детскую сказку и внести вклад в будущее детей! 🎈📚

▌ Концепция проекта

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

▌ Что было сделано?

- UI/UX: продуманная структура, удобная навигация и привлекательный интерфейс, созданный в Figma @BugrovExperience
- Реализация:
  - Фронтенд: Vue
  - Бэкенд: Kotlin, Spring Boot 3,  Jmix, PostgreSQL, AI Агент для валидации текста и создания краткого пересказа, админка.
  - Интеграция с платежным сервисом: возможность безопасного подтверждения транзакций.
@kyrillP

🌐 Посмотреть проект онлайн:

story.vremyadetstva.ru

Сейчас проект на стадии  тестирования на фокус группе...

P.S Да простит меня дизайнер, он сделал потрясающий макет, но я не до конца доделал вёрстку, мне нужно поправить все padding и margin в соответствии с макетом, но для MVP, думаю, это не критично 😅
8❤‍🔥2
🚀🚀🚀
⚡️Стань соавтором сказки для детей!

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

С нами часто случаются чудеса (самим не верится!). Вот и в этот раз не обошлось без чуда‼️ Мы придумали идею, но реализовать ее сами не могли. И тут, как по волшебству, к нам на помощь пришли волонтеры Сбера! Да-да, того самого Сбера!💔

🌸И теперь у нас есть готовый лендинг – страница акции, которую мы придумали к празднику🌸

Друзья! Мы предлагаем вам стать соавторами сказки для детей!📖 Каждый из вас может написать отрывок – продолжение сюжета, и в итоге у нас получится такая народная сказка со списком авторов в конце. Мы напечатаем книгу и подарим детям в онкоотделениях. Пусть в их жизни будет много волшебства и чудес!

Сюжет сказки зависит только от вашей фантазии: главное – помнить, что она должна быть доброй!💕

Переходите по ссылке или на нашем сайте по кнопке «Стань автором сказки!» и участвуйте! Мы вместе напишем КНИГУ! Неужели не здорово?

Огромное спасибо волонтерам Сбера: Людмиле Романовой, Денису Бугрову, Кириллу Пахтусову. Вы – настоящие волшебники!


#жизньфонда
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
В сентябре я планирую поехать на конференцию по Data Science — AI Conf X.
Очень понравились темы докладов, есть разные треки😍

Я уже забронировал отель, так как не мог упустить одно выгодное предложение.

Мой выбор пал на ibis Москва Динамо. Стоимость проживания — всего 12 тысяч рублей за три дня! Это просто замечательно!

Кстати, если вы будете бронировать отель через сервис Отелло, то сможете получить хорошую скидку по промокоду.

Подробнее в комментарии или на фото⤵️
4🔥1
Сбербанк представил практический гайд по созданию ИИ-агентов — автономных систем, которые самостоятельно выполняют различные задачи с помощью генеративного искусственного интеллекта.

Я был в восторге от чтения гайда, очень подробная теория и есть классные практические примеры.

Знаю, что сейчас этот гайд популяризируется благодаря таргетированной рекламе, но если вдруг его пропустили, то рекомендую 👍

Например в книге есть код для AI агента который на основе описания идеи стартапа делает "канва бизнес-модель". Проверил и потестил его, работает хорошо 👍

Могу поделиться репозиторием с исходным кодом, если интересно и нет желания искать его самостоятельно)

Ознакомиться с гайдом можно тут
https://giga.chat/b2b/multi-agent-system
4🔥31
🔥 Нужен ваш совет: собственный компонент комментариев или готовое решение? 🚀

Описание проблемы

Друзья, столкнулся с интересным вопросом. В свой pet-проект хочу добавить систему комментирования.

Проект:
frontend: React + TypeScript
backend: Kotlin + Spring Boot .

Вариант №1: Написать самостоятельно

Преимущества:
- Полный контроль над функционалом и дизайном.
- Возможность кастомизации под нужды проекта.
- Хорошая практика программирования.

Недостатки:
- Требует значительных временных затрат.
- Возможны дополнительные затраты на тестирование и отладку.

Вариант №2: Использовать готовое решение

Преимущества:
- Быстрое внедрение.
- Уже проверенное и оптимизированное решение.
- Минимальные временные затраты.

Недостатки:
- Ограниченная кастомизация.
- Риск зависимости от стороннего сервиса.

Вариант №3: Комбинация 1 и 2 варианта

Пока я пошел по первому варианту. То что у меня получилось на фронте на текущий момент добавил к посту, см. картинки). Думаю, буду небольшими итерациями добавлять и расширять функциональность этого модуля.

Какой путь выбрали бы вы и почему? Жду ваших мнений и рекомендаций! 😊
🔥3