Задача з тренування ніндзя

Ніндзя складає свій тренувальний план на "N" днів, і кожного дня має вибір між трьома активностями: бігом, тренуванням бою або вивченням нових рухів. Кожна активність дає певну кількість балів, і мета Ніндзя — заробити максимальну кількість балів, при цьому не повторюючи одну й ту саму активність два дні поспіль.

Для вирішення цієї задачі ми маємо 2D масив, де кожен рядок містить бали для кожної з трьох активностей. Завдання — знайти максимальну кількість балів, яку Ніндзя може заробити, дотримуючись умови.

Ми можемо розглядати задачу як рекурсивну, де кожен крок буде залежати від попереднього. У кожному дні Ніндзя має вибір, яку активність … Читати далі

🔄 Еволюція застарілих систем з Kotlin в гібридному середовищі

Модернізація застарілих систем — це складне завдання для багатьох організацій, особливо коли йдеться про великі моноліти, написані на Java. Одним із найбільш ефективних і безпечних підходів є поступова міграція на Kotlin. Це дозволяє працювати зі старим кодом, поки нові функціональності, рефакторинги та тести розробляються на Kotlin.

Kotlin повністю сумісний з Java, що дозволяє продовжувати використовувати старий код і бібліотеки, не переписуючи систему з нуля. Поступова адаптація дає змогу отримати переваги від сучасної мови без ризиків і проблем, пов'язаних з великою перепискою коду.

Переваги Kotlin

  • Лаконічність: Код стає зрозумілішим і менш об'ємним, що зменшує кількість шаблонного коду.
  • Безпека від null: Вдосконалена
Читати далі

Усунення проблем з Lazy Loading у Spring Data JPA: що насправді відбувається

Lazy loading у Spring Data JPA є чудовим інструментом для оптимізації продуктивності, оскільки дозволяє завантажувати пов’язані дані лише за потреби. Однак цей процес може зіпсуватися, коли пов’язані сутності завантажуються за допомогою eager loading, навіть якщо ви не очікуєте цього. Ось кілька причин, чому це відбувається, і способи виправлення цих проблем.

Однією з поширених причин є використання Lombok. Аннотація @Data в Lombok автоматично генерує методи геттерів, сеттерів та toString(). Якщо метод toString() включає поле users, то при логуванні об'єкта Department, метод getUsers() буде викликаний, що призведе до завантаження колекції users. Це означає, що навіть якщо ви використовуєте … Читати далі

Майстерність роботи з потоками Javaв’ю та не тільки співбесід та не тільки

Цього року я приєднався до програми сертифікації з прикладного генеративного ШІ від університету Джонса Хопкінса, яку організовує у партнерстві з компанією Great Learning. Моя мета була не просто пройти ще один курс чи буткемп, а заглибитися в суть ШІ і створити реальне застосування цих технологій.

Працюючи в Dow Jones у сфері нових продажів бізнесу, я консультував клієнтів щодо ризиків і комплаєнсу, обробки новин в реальному часі та аналізу потоків даних для портфоліо та прогнозного моделювання. Я бачив, як генеративний ШІ трансформує фінансові процеси — від автоматичних ринкових інсайтів до виявлення порушень. Але для мене було важливо не лише говорити про … Читати далі

airTune: керування гучністю за допомогою пальців.

Уявіть ситуацію: ви насолоджуєтесь улюбленою музикою, приготовуючи їжу, і ваші руки трохи забруднені — одна в борошні, інша тримає помідор. Музика занадто гучна, і ви хочете зменшити гучність, але не хочете торкатися телефону, ноутбука чи пульта.

Що якщо ви могли б просто зменшити гучність... в повітрі?

Представляю вам AirTune — технологічне рішення, яке дозволяє керувати гучністю пристрою за допомогою пальців, без дотику, кнопок та тільки за допомогою жестів.

Ідея виникла з простого питання: "Чому ми досі натискаємо кнопки для керування гучністю в 2025 році?" І як людина, що любить кодувати, я вирішив змінити це. Створив AirTune — контролер гучності, який … Читати далі

# Чому “AI Scientist” змінює все Важливе уточнення: Не так давно була опублікована стаття “AI Scientist: Towards Fully Automated Open-Ended Scientific Discovery”, яка не є просто черговим дослідницьким оглядом. Це знаменує собою фундаментальну зміну — зміну, яка, на мою думку, переверне наш підхід до самого процесу відкриттів. Як керівник проектів з генеративного ШІ в середовищі високих ставок, я бачив, як моделі автоматизують звіти, оптимізують робочі процеси та узагальнюють складні документи. Але це? Це йде далі, це надає ШІ агентність — не лише інтелект. ## У чому ж суть? “AI Scientist” — це не просто чат-бот або асистент для досліджень. Це автономний агент, який: • Генерує гіпотези, • Проектує та виконує експерименти (так, реальний код), • Аналізує результати, • Пише академічні статті, • І навіть імітує рецензування. Цей агент самовдосконалюється, ітеративно вчиться від власних наукових циклів. І це не просто автоматизація — це автономне пізнання. ## Чому це важливо Ось чому я звертаю на це увагу — і чому ви повинні теж. У таких сферах, як банківська справа, фармацевтика, енергетика чи будь-які інші галузі, що активно займаються НДДКР, ми вже використовуємо генеративний ШІ для підвищення ефективності. Але з такими архітектурами, як “AI Scientist”, ми входимо в етап, коли моделі не просто допомагають — вони ведуть. Ось як: 1. **НДДКР стає масштабованим** ШІ, який може проводити 1000 експериментів на день і документувати отримані результати, — це не просто хороший інструмент, це помножувач на 10. Уявіть, що цикл відкриття ліків скорочується з кількох років до кількох місяців. Тепер застосуйте це до матеріалів, діагностики, навіть фінансових симуляцій. 2. **Знання підприємства стає доступним для повторного використання** “AI Scientist” не забуває. Він будує на своїй попередній логіці — ідеально підходить для збереження знань у великих організаціях, які постійно стикаються з проблемами відтоку кадрів і ізольованими командами. 3. **Менше людських вузьких місць, більше уваги на ідеї** Інженери, вчені та аналітики часто застрягають на рутинній роботі. Це змінює баланс, звільняючи їх, щоб вони могли спрямовувати розробку, замість того, щоб вручну аналізувати кожну точку даних. ## Куди ми рухаємося Як я бачу, ми наближаємося до парадигми “Автономні дослідження” — так само, як автомобілі з автопілотом змінили мобільність. Ось що нас чекає: • **Агентні системи на великому масштабі**: Ці моделі не будуть існувати в ізоляції. Вони будуть скоординовані через захищені корпоративні контрольні плани (які ми вже будуємо), щоб гарантувати відповідність вимогам, зрозумілість та логіку резервного копіювання. • **Перевизначення ролей**: Дослідники не зникнуть — вони перетворяться на оркестраторів, які перевіряють результати, застосовують судження та ставлять правильні запитання. ШІ нас не замінить, він посилить тих, хто адаптується. • **ШІ як стратегічний актив**: Компанії, які впровадять ці AI Scientists у свої інноваційні цикли, будуть лідерами. Ті, хто затримається? Вони дивитимуться з боку. ## Моя думка Ми вже пройшли етап “що якби”. Цей документ дає нам план того, що вже можливо з використанням сучасних моделей та інфраструктури. І для тих з нас, хто будує системи генеративного ШІ в реальному світі, ми бачимо напрямок: майбутнє досліджень, інновацій і навіть розробки продуктів — агентне, автономне і значно швидше. Якщо ви займаєтесь інноваціями, не можете собі дозволити ігнорувати те, що нас чекає. Тому що “AI Scientist” — це не просто наукова стаття, це попередній погляд на майбутнє, яке ми створюємо прямо зараз. Зацікавлені побачити, як ми інтегруємо це в архітектуру корпоративного генеративного ШІ? Звертайтесь.

Цього року я записався на програму сертифікації з прикладного генеративного ШІ в університеті Джонса Хопкінса, яку проводять у партнерстві з Great Learning. Мене не цікавив ще один простий буткемп або серія пояснень, я хотів зрозуміти суть ШІ-систем і створити щось реальне.

Я працюю в Dow Jones в секторі нових продажів, де консультував клієнтів по таких темах, як ризик і комплаєнс, аналіз новин у реальному часі та машинночитні потоки для аналітики портфоліо та прогнозного моделювання. Я бачив, як генеративний ШІ змінює фінансові робочі процеси — від автоматизованих ринкових інсайтів до виявлення порушень комплаєнсу. Але я не хотів просто говорити про ШІ, … Читати далі

Чи варта програма Johns Hopkins по прикладному генеративному ШІ того?

image

Цього року я записався на програму сертифікації з прикладного генеративного ШІ в університеті Джонса Хопкінса, що проводиться в партнерстві з Great Learning. Моя мета була не просто пройти черговий буткемп чи серію пояснень, а глибше зануритися в суть ШІ-систем і створити щось реальне.

Я працюю в нових продажах бізнесу в Dow Jones, де консультуватиму клієнтів з таких напрямків, як ризики і комплаєнс, новини в реальному часі та машинночитні потоки для аналітики портфоліо і прогнозування. Я вже бачив на власному досвіді, як генеративний ШІ змінює фінансові робочі процеси — від автоматизованих інсайтів до виявлення порушень комплаєнсу. Але я не … Читати далі

У Python використання гнучких параметрів: *args та **kwargs

Функції — це одна з основних складових Python, і вони дозволяють виконувати різні завдання. Однак іноді нам важко заздалегідь сказати, скільки аргументів буде передано функції. Як зробити функції більш гнучкими в таких випадках?

Відповідь: *args і **kwargs.

У цьому тексті ми розглянемо, що це за конструкції, коли їх використовувати і як працювати з ними, на прикладах. Готові? Починаємо!

🎯 Параметри функцій: Фіксовані чи гнучкі?

Зазвичай, коли ми створюємо функцію, ми визначаємо, скільки параметрів вона повинна приймати:

def selamla(isim):
print(f"Merhaba, {isim}!")

Тепер, викликаючи цю функцію, ми можемо передати один параметр:

selamla("Deniz") # ✅

Але якщо спробуємо передати два параметри:

selamla("Deniz", … Читати далі

Думаєте, знаєте JavaScript? Ці прості на вигляд питання можуть вас здивувати!

Ось п’ять, на перший погляд, простих запитань з JavaScript, пов'язаних із параметрами та аргументами. Однак, я впевнений, що більшість з вас не зможе відповісти на всі правильно.

function fn(args){
console.log(args);
}

fn('orange','apple','grapes');

function fn(arg1,...args){
console.log(args);
}
fn('orange','apple','grapes');

function fn([arg1, arg2]){
console.log(arg1);
}
fn('orange','apple','grapes');

function fn([arg1,arg2,arg3]){
console.log(arg1,arg2,arg3);
}
fn(['orange','apple','grapes']);

function fn([arg1,...arg2]){
console.log(arg1,arg2);
}
fn('orange','apple','grapes');

Тепер давайте розглянемо пояснення до деяких із цих прикладів:

1) Одиничний параметр:

function fn(args){
console.log(args);
}

fn('orange','apple','grapes');//orange

Ми передаємо три аргументи, але за допомогою цього синтаксису JavaScript розглядатиме лише перший аргумент.

2) Оператор Rest:

function fn(arg1,...args){
console.log(args);
}

fn('orange','apple','grapes');//['apple', 'grapes']

Оператор Rest збирає всі аргументи, … Читати далі

Коли слід використовувати Promises замість async/await? (Іноді розробники помиляються)

Нещодавно я спілкувався з другом, який також розробник, і, як завжди, ми знову потрапили в технічну дискусію. Ми часто обговорюємо такі питання, щоб залишатися у формі, допомагати один одному розв'язувати проблеми, з якими стикаємось в процесі розробки, і навіть інколи кидаємо один одному виклики.

Цього разу він запитав мене:

"Коли слід використовувати Promise замість async/await?"

Я вже стикався з цією плутаниною, тому відповідь здалася мені досить очевидною. Однак наступного дня в офісі я випадково поставив це питання колезі — і на моє здивування, він відповів неправильно.

Тоді я зрозумів:

Навіть досвідчені розробники можуть заплутатися між Promises і async/await, особливо під

Читати далі