Нагадаю, що наступного тижня я роблю доповідь на Software Architecture fwdays'23 conference. Тому я маю промокод на 100% знижку на онлайн квиток. Він одноразовий, тому я зробив micro hack challange:
Правильна відповідь складається з 10 символів. Приклад промокоду на 10% знижку – 577310D705.
UPDATE промокод був використаний
new URL('SzLS7kC7', 'https://ss.galk.in')Правильна відповідь складається з 10 символів. Приклад промокоду на 10% знижку – 577310D705.
UPDATE промокод був використаний
👍13
Якщо у вас на проекті використовується sharp щоб конвертувати зображення, то у мене для вас важливи новини. Цього тижня у libwebp, який sharp використовує під капотом, знайдена вразливість. Вона дозволяє зробити виконання довільного коду.
Деталі і як захистити ваш код доки ми чекаємо оновленої версії описані у issue.
Деталі і як захистити ваш код доки ми чекаємо оновленої версії описані у issue.
👍21❤7😱5
Чому розробнику необхідно використати термінал?
#cli
Під час інтерв'ю чи сесії парного програмування я часто даю зворотний зв'язок використовувати термінал замість click-based інструментів. Термінал, на відміну візуальних інструментів, веде історію. Вона доступна за командою history і при локальній розробці, і при віддаленому налагодженні Docker або EC2. З її допомогою можна зрозуміти як система прийшла до поточного стану. У разі використання візуальних click-based інструментів у нас такої можливості немає.
Розробникам-початківцям освоєння терміналу для повсякденного використання найкраще почати з cli версії git. Там є чудова команда git reflog, яка неодноразово допомагала повернути втрачені коміти.
Чи зміниться ця відповідь на це запитання через кілька років, коли додатковим інструментом розробника до пари миша/клавіатура додасться голос, я не знаю. Тому що цю нотатку я набираю для вас саме голосом.
#cli
Під час інтерв'ю чи сесії парного програмування я часто даю зворотний зв'язок використовувати термінал замість click-based інструментів. Термінал, на відміну візуальних інструментів, веде історію. Вона доступна за командою history і при локальній розробці, і при віддаленому налагодженні Docker або EC2. З її допомогою можна зрозуміти як система прийшла до поточного стану. У разі використання візуальних click-based інструментів у нас такої можливості немає.
Розробникам-початківцям освоєння терміналу для повсякденного використання найкраще почати з cli версії git. Там є чудова команда git reflog, яка неодноразово допомагала повернути втрачені коміти.
Чи зміниться ця відповідь на це запитання через кілька років, коли додатковим інструментом розробника до пари миша/клавіатура додасться голос, я не знаю. Тому що цю нотатку я набираю для вас саме голосом.
❤25👍16😁4❤🔥3
Сьогодні був перший дзвінок програмного комітету Node.js fwdays'23. На ньому я познайомився з Олександром Зіневичем. Він веде Node.js Digest на DOU. Судячи з кількості переглядів у тисячу, ком'юніті не знає про цей дайджесет. Хочу це виправити!
👉 Читати вересневий випуск
👉 Читати вересневий випуск
❤26👍1
Один із проектів, до якого я прикладаю руку, виходить у паблік. Це курс Віталія Ратушного з Promt Engineering. Я допомагаю Віталію не перший рік. Постійні читачі каналу пам'ятають, як я промотив його збір минулого року.
За останні три місяці я кілька разів обговорював із Віталієм контент курсу. Хороша цитата з цих обговорень: "Більшість використовують ChatGPT як Google. Це немов у 2000 році використовувати MATLAB лише як калькулятор."
На мій погляд, головний челендж курсу, це залишитися в області саме складання промтів (запитів до AI), а не скотитися в деталі їх запуску та кешування на рівні коду. Код інженери вміють писати, мета ж курсу навчитися писати саме промти.
Якщо 29-го ви будете на IT Arena у Львові, рекомендую заглянути на його воркшоп. Воркшоп буде не таким глибоким як курс, зате це оффлайн!
На завершення відповім на ваше запитання, яке легко передбачити, "а що там із твоїм курсом по ноді?" На жаль, я ще не готовий про це публічно розповідати. Однак Віталій поділитися, офертою та іншими юр. моментами, потрібними для запуску, тому цей пост можна вважати маленьким кроком уперед.
За останні три місяці я кілька разів обговорював із Віталієм контент курсу. Хороша цитата з цих обговорень: "Більшість використовують ChatGPT як Google. Це немов у 2000 році використовувати MATLAB лише як калькулятор."
На мій погляд, головний челендж курсу, це залишитися в області саме складання промтів (запитів до AI), а не скотитися в деталі їх запуску та кешування на рівні коду. Код інженери вміють писати, мета ж курсу навчитися писати саме промти.
Якщо 29-го ви будете на IT Arena у Львові, рекомендую заглянути на його воркшоп. Воркшоп буде не таким глибоким як курс, зате це оффлайн!
На завершення відповім на ваше запитання, яке легко передбачити, "а що там із твоїм курсом по ноді?" На жаль, я ще не готовий про це публічно розповідати. Однак Віталій поділитися, офертою та іншими юр. моментами, потрібними для запуску, тому цей пост можна вважати маленьким кроком уперед.
🔥26🤔1
Мої відповіді на ваші запитання з коментарів та особистих повідомлень:
❓Ти бачив сторис для каналів? Будеш використовувати?
Не користуюся сторіс в інших соцемережах. Тому ще не знаю чи робитиму такий контент. Підштовхнути мене до цього можна тут
❓Курс з Promt Engineering коштує $750! А промокоди на знижку будуть?
15% знижка за кодом GALKIN_NODE для перших трьох учасників. А ще повторю свою точку зору, треба вчитися за рахунок роботодавця.
❓Коли наступний Node.js weekly?
Минулого тижня доповідь на Software Architecture fwdays'23. На цій доповідь по Developer Experience. У планах наступного тижня рестартанути з таймкодами.
❓Ти бачив сторис для каналів? Будеш використовувати?
Не користуюся сторіс в інших соцемережах. Тому ще не знаю чи робитиму такий контент. Підштовхнути мене до цього можна тут
❓Курс з Promt Engineering коштує $750! А промокоди на знижку будуть?
15% знижка за кодом GALKIN_NODE для перших трьох учасників. А ще повторю свою точку зору, треба вчитися за рахунок роботодавця.
❓Коли наступний Node.js weekly?
Минулого тижня доповідь на Software Architecture fwdays'23. На цій доповідь по Developer Experience. У планах наступного тижня рестартанути з таймкодами.
👍7❤2🤓1
За дві години буду в гостях на каналі Math.random. Обговоримо Developer Experience. Почнемо з DX у контексті всі JavaScript екосистеми, розглянемо як він може змінюватися від проекту до проекту та, звичайно, як його покращити для вашого локального оточення.
Приходьте послухати та поставити запитання:
👉 https://www.youtube.com/watch?v=Omu21o0d1Eo
Приходьте послухати та поставити запитання:
👉 https://www.youtube.com/watch?v=Omu21o0d1Eo
🔥11❤3
Мініопитування: Як вам буде зручніше запропонувати новину для огляду на ютубі або питання для рецепту для каналу?
Anonymous Poll
30%
Form on the site
13%
GitHub Disscussions
70%
Telegram Bot
1%
Додам свій варіант у коментарі
Як перевірити конфігурацію інструментарію?
#cli
Типовий набір інструментів у Web/Node.js проекті включає у себе п'ять та більше інструментів. Кожен з інструментів має свою конфігурацію, яка може наслідуватися з встановленого пакета або глобального конфігу, перевизначатися змінною оточення або на рівні вкладеної папки. Більшість інструментів вміють показувати використовуваний конфіг у явному вигляді або завдяки підвищенню рівня логування до дебагу.
Ось приклади команд для найпопулярніших інструментів:
Використовувати перевірку конфігурації варто не тільки для налагодження чи налаштування інструментів, але й під час оновлення версій пакетів. Для цього зручно виводити конфігурацію у файл за допомогою перенаправленням виводу (символ >). Приклад:
Наприкінці хочу наголосити: уникайте глобальних установок та налаштувань інструментів. У протилежному випадку ваше локальне середовище може давати інші результати, ніж середовища ваших колег чи CI/CD. Що призведе на витрату часу на пошук причин таких розбіжностей.
#cli
Типовий набір інструментів у Web/Node.js проекті включає у себе п'ять та більше інструментів. Кожен з інструментів має свою конфігурацію, яка може наслідуватися з встановленого пакета або глобального конфігу, перевизначатися змінною оточення або на рівні вкладеної папки. Більшість інструментів вміють показувати використовуваний конфіг у явному вигляді або завдяки підвищенню рівня логування до дебагу.
Ось приклади команд для найпопулярніших інструментів:
npm config list --longprettier --log-level=debug --check '{src,tests}/**/*.ts'eslint --print-config '{src,tests}/**/*.ts'tsc --project tsconfig.json --showConfigjest --debug --config jest.config.tsВикористовувати перевірку конфігурації варто не тільки для налагодження чи налаштування інструментів, але й під час оновлення версій пакетів. Для цього зручно виводити конфігурацію у файл за допомогою перенаправленням виводу (символ >). Приклад:
eslint --print-config '{src,tests}/**/*.ts' > eslint.v1.json Після оновлення версії пакета або його конфігурації можна порівняти два файли.Наприкінці хочу наголосити: уникайте глобальних установок та налаштувань інструментів. У протилежному випадку ваше локальне середовище може давати інші результати, ніж середовища ваших колег чи CI/CD. Що призведе на витрату часу на пошук причин таких розбіжностей.
👍43❤1
Як забезпечити іммутабельність у вашому коді?
#typescript
⚠️Уточнення для новачків іммутабельності це незмінність даних.
У заголовок винесено одне з моїх улюблених питань для співбесід. Наведу найкращу-гіршу відповідь як я почув її в оригіналі: "TypeScript provides readonly, but it is only compile-time immutable protection. So I prefer to use Immutable.js for my codebase. I've also used Object.freeze()"
Поясню чим саме ця відповідь погана для продуктової розробки: у продуктовому коді розробник має повний контроль усіх етапів створення, зміни та знищення даних. Це не код бібліотеки або фреймворку, який невідомо, як буде запущений. Це код продукту, який буде працювати повільніше через використання Immutable.js або Object.freeze().
TypeScript має відмінний функціонал:
➡️ readonly у параметрах інтерфейсів
➡️ генерік Readonly, який особливо зручний для аргументів ваших функцій
➡️ as const під час оголошення змінних
Цей функціонал покриває всі потреби продуктового коду і не впливає на run time. Для консистентності використання цих фічів є @typescript-eslint/prefer-readonly-parameter-types. Так же можливо написати свої eslint правила, щоб команда не забувала про readonly в іммутабельних структурах даних, наприклад DTO.
Щось таке я хотів би почути на інтерв'ю на вищеназване запитання. Це та ще трохи критики, що readonly як і інші TypeScript конструкції роблять код багатослівним та схожим на Java.
#typescript
⚠️Уточнення для новачків іммутабельності це незмінність даних.
У заголовок винесено одне з моїх улюблених питань для співбесід. Наведу найкращу-гіршу відповідь як я почув її в оригіналі: "TypeScript provides readonly, but it is only compile-time immutable protection. So I prefer to use Immutable.js for my codebase. I've also used Object.freeze()"
Поясню чим саме ця відповідь погана для продуктової розробки: у продуктовому коді розробник має повний контроль усіх етапів створення, зміни та знищення даних. Це не код бібліотеки або фреймворку, який невідомо, як буде запущений. Це код продукту, який буде працювати повільніше через використання Immutable.js або Object.freeze().
TypeScript має відмінний функціонал:
➡️ readonly у параметрах інтерфейсів
➡️ генерік Readonly, який особливо зручний для аргументів ваших функцій
➡️ as const під час оголошення змінних
Цей функціонал покриває всі потреби продуктового коду і не впливає на run time. Для консистентності використання цих фічів є @typescript-eslint/prefer-readonly-parameter-types. Так же можливо написати свої eslint правила, щоб команда не забувала про readonly в іммутабельних структурах даних, наприклад DTO.
Щось таке я хотів би почути на інтерв'ю на вищеназване запитання. Це та ще трохи критики, що readonly як і інші TypeScript конструкції роблять код багатослівним та схожим на Java.
👍26❤3🔥1
Let's talk about logging by Matteo Collina
#worth_seeing
Сьогодні у нас рекомендація відео від автора fastify та pino. Matteo починає з питань про логування, а потім показує, як залежно від відповідей необхідно налаштувати pino.
#worth_seeing
Сьогодні у нас рекомендація відео від автора fastify та pino. Matteo починає з питань про логування, а потім показує, як залежно від відповідей необхідно налаштувати pino.
👍18❤🔥5👏1
100 Seconds of Code
#worth_seeing
Сьогодні у рекомендаціях не одне відео, а цілий плейлист від Fireship. У ньому зібрані відео інструменти, що пояснюють за 100 секунд або підхід. Такі відео дуже зручно відправити колезі, коли йдеться про щось нове.
Ось кілька відео, які варто подивитися як приклад:
- NestJS in 100 Seconds
- Terraform in 100 Seconds
- Firebase in 100 Seconds
- Vite in 100 Seconds
#worth_seeing
Сьогодні у рекомендаціях не одне відео, а цілий плейлист від Fireship. У ньому зібрані відео інструменти, що пояснюють за 100 секунд або підхід. Такі відео дуже зручно відправити колезі, коли йдеться про щось нове.
Ось кілька відео, які варто подивитися як приклад:
- NestJS in 100 Seconds
- Terraform in 100 Seconds
- Firebase in 100 Seconds
- Vite in 100 Seconds
👍36❤4🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Chrome зберігає не тільки положення DevTools, а й порядок табів.
❤28👍5🔥5
Хочу порадити Tech Interview Handbook. Сам його використовую для Behavioral interview preparation.
👍48🔥15
На наступному тижні буде GitHub Universe. На цій конференції GitHub показуватиме свої новинки. Основний фокус цього року – AI, а Microsoft це GitHub, тому явно буде щось цікаве для розробки.
Реєстрація тут.
Реєстрація тут.
👍18❤2🤔1
Сьогодні в @doucommunity о 19:00 відбудеться войсчат про продуктове мислення в розробці! Спікери поділяться своїм досвідом та поглядами на важливість продуктового мислення в сучасній індустрії розробки програмного забезпечення.
Поговоримо, як впроваджувати цей підхід, визначати його в колег та розвивати власні навички в цьому напрямку.
🗣Спікери:
— Вадим Ільченко, Lead Software Engineer в Mate academy
— Нікіта Галкін, Cloud Architect, Google Developer Expert, Node.js Tech Speaker
— Роман Кириленко, iOS Software Engineer в Quarks
👉Запис із таймкодами викладено на DOU.
Поговоримо, як впроваджувати цей підхід, визначати його в колег та розвивати власні навички в цьому напрямку.
🗣Спікери:
— Вадим Ільченко, Lead Software Engineer в Mate academy
— Нікіта Галкін, Cloud Architect, Google Developer Expert, Node.js Tech Speaker
— Роман Кириленко, iOS Software Engineer в Quarks
👉Запис із таймкодами викладено на DOU.
❤3👍3
6 років тому я почав робити огляд нових фіч у Node.js. Цієї суботи Node.js Fwdays' 23 conference. Там я зроблю огляд Node.js екосистемі. До зустрічі онлайн!
🔥44👍12😍1