Час порухати мізками! 🤯
Google, перед тим як анонсувати дату Google I/O, створили гру, в якій треба, використовуючи різні блоки, довести сферу до фінішу. Поки спільнота проходить цю гру, загальний прогрес рухається. Вкінці Google відкриє дату події 🤫
👉 Зіграти в гру
#news
Google, перед тим як анонсувати дату Google I/O, створили гру, в якій треба, використовуючи різні блоки, довести сферу до фінішу. Поки спільнота проходить цю гру, загальний прогрес рухається. Вкінці Google відкриє дату події 🤫
👉 Зіграти в гру
#news
👍6🔥3😁3
Welcome!
Let's practice our English! So...
👉 What do you think about online friendship?
Have a nice #english_friday 💛
Let's practice our English! So...
👉 What do you think about online friendship?
Have a nice #english_friday 💛
👍10❤3🔥1
Hydration 💦
Де знаходиться ваша відправна точка у React-застосунку? Якщо це клієнтський варіант - то це напевно буде index.ts файл, у якому буде викликано
А що відбувається, коли ми використовуємо серверний рендеринг (наприклад, через Next.js чи Remix)? Адже нам вже повертається готовий HTML, тож його теж потрібно якось використати. Цим займається процес hydration. Його мета - прикріпити React до вже існуючого HTML, щоб вкінці ми отримали інтерактивну сторінку. А для цього нам треба вже мінімальна кількість JS, який займеться event listener-ами чи іншою логікою застосунку.
Hydration викликається з допомогою іншого методу з React -
Що ще потрібно знати - неспівпадіння вашого серверного HTML з React-деревом в процесі hydration буде трактуватись як помилка. Тому з цим треба бути обережним і використовувати певні техніки, такі як
👉 Читати про hydrateRoot
#interview
Де знаходиться ваша відправна точка у React-застосунку? Якщо це клієнтський варіант - то це напевно буде index.ts файл, у якому буде викликано
React.createRoot
. Тут багато гадати не треба, цей метод отримує HTML-елемент, в який потім присобачить ваш React елемент за допомогою render
методу. А що відбувається, коли ми використовуємо серверний рендеринг (наприклад, через Next.js чи Remix)? Адже нам вже повертається готовий HTML, тож його теж потрібно якось використати. Цим займається процес hydration. Його мета - прикріпити React до вже існуючого HTML, щоб вкінці ми отримали інтерактивну сторінку. А для цього нам треба вже мінімальна кількість JS, який займеться event listener-ами чи іншою логікою застосунку.
Hydration викликається з допомогою іншого методу з React -
hydrateRoot
. Часто фреймворки викликають hydrateRoot
замість вас, щоб не займати вас цією роботою.Що ще потрібно знати - неспівпадіння вашого серверного HTML з React-деревом в процесі hydration буде трактуватись як помилка. Тому з цим треба бути обережним і використовувати певні техніки, такі як
isMounted
чи suppressHydrationWarning
.👉 Читати про hydrateRoot
#interview
👍13❤3🔥2
Якого кольору буде блок box після повного завантаження сторінки?
Anonymous Quiz
25%
Червоного
69%
Блакитного
7%
Прозорий
😁21👍9🤯4
#todo написати функцію на будь-якій мові програмування, яка приймає корінь дерева та повертає число, що відповідає максимальній глибині цього дерева 🌴
❤4👍3🤯2🔥1
Learn Git Branching 🕊️
Ми прийшли вам нагадати, що знати Git дуже важливо!
Від Git ви не втечете. З ним доведеться працювати точно, але чим раніше - тим краще. 90% роботи з Git ви закриєте списком з ~10 команд, а то і менше. Навчитесь розуміти ці команди і буде вам щастя.
Ми самі зараз перепроходимо рівні в Learn Git Branching, щоб трішки освіжитись. З останнього разу як ми туди заходили тут додали роботу з remote, що точно теж вам знадобиться.
А ще, є режим пісочниці, отже можна просто гратись і практикувати свої знання Git.
👉 Відкрити посилання
#tips
Ми прийшли вам нагадати, що знати Git дуже важливо!
Від Git ви не втечете. З ним доведеться працювати точно, але чим раніше - тим краще. 90% роботи з Git ви закриєте списком з ~10 команд, а то і менше. Навчитесь розуміти ці команди і буде вам щастя.
Ми самі зараз перепроходимо рівні в Learn Git Branching, щоб трішки освіжитись. З останнього разу як ми туди заходили тут додали роботу з remote, що точно теж вам знадобиться.
А ще, є режим пісочниці, отже можна просто гратись і практикувати свої знання Git.
👉 Відкрити посилання
#tips
👍14❤4🔥1🤩1
Welcome!
Let's practice our English! So...
👉 Did you have any non-IT jobs? Tell us about that.
Have a nice #english_friday 💛
Let's practice our English! So...
👉 Did you have any non-IT jobs? Tell us about that.
Have a nice #english_friday 💛
👍6❤4
Next.js fallback 'blocking' 🧱
На проєкті ми використовуємо Next.js і деплоїмо застосунок на Vercel. І в певний момент проєкт перестав деплоїтись на сервер (при тому, що build проходив без проблем). Жодних деталей помилки ми знайти не могли, просто
На сайті в нас є досить довгий (дуууже довгий) список сторінок, що генеруються статично. Після довгої боротьби з помилкою, ми врешті спробували ще раз, але обмежили кількість цих сторінок, і, на щастя, це спрацювало! Тепер потрібно рішення, яке збереже ті ж сторінки, але дозволить деплоїти проєкт.
#experience
На проєкті ми використовуємо Next.js і деплоїмо застосунок на Vercel. І в певний момент проєкт перестав деплоїтись на сервер (при тому, що build проходив без проблем). Жодних деталей помилки ми знайти не могли, просто
unknown error
. Найвеселіше те, що спроба збілдити і задеплоїти старіші коміти теж викидала помилку.На сайті в нас є досить довгий (дуууже довгий) список сторінок, що генеруються статично. Після довгої боротьби з помилкою, ми врешті спробували ще раз, але обмежили кількість цих сторінок, і, на щастя, це спрацювало! Тепер потрібно рішення, яке збереже ті ж сторінки, але дозволить деплоїти проєкт.
getStaticPaths
дозволяє повернути параметр fallback
, який може бути false
, true
або "blocking"
. Якщо ви повернете false
, тоді всі шляхи, які не повернулись з цієї функції будуть повертати 404. А от якщо повернути "blocking"
, то Next.js спробує зарендерити цю сторінку при першому запиті, і у разі успіху, збереже її у кеші. Отож, тепер ми генеруємо невелику кількість сторінок, проте, як тільки хтось спробує відкрити сторінку, яка ще не згенерована, але дані для якої існують, Next.js одразу створить все необхідне.#experience
👍14❤2🔥2
Що таке Content Delivery Network (CDN) і як це працює? 🕸️
CDN - це мережа розподілених серверів, які працюють разом, щоб ефективно доставляти веб-контент користувачам залежно від їхнього географічного розташування. Ваш компʼютер використає найближчий сервер, відповідно завантаження відбудеться швидше.
CDN дозволяє кешувати контент, який він надає, відповідно сторінки, шрифти чи js-скрипти можуть просто перевикористовуватись із кешу. Також в результаті зменшується навантаження на оригінальні сервери.
#interview
CDN - це мережа розподілених серверів, які працюють разом, щоб ефективно доставляти веб-контент користувачам залежно від їхнього географічного розташування. Ваш компʼютер використає найближчий сервер, відповідно завантаження відбудеться швидше.
CDN дозволяє кешувати контент, який він надає, відповідно сторінки, шрифти чи js-скрипти можуть просто перевикористовуватись із кешу. Також в результаті зменшується навантаження на оригінальні сервери.
#interview
👍16❤4🔥1
👍7🤨4❤2🔥1
#todo написати функцію на будь-якій мові програмування, яка приймає масив чисел у проміжку
[0, 100]
. Функція має повернути обʼєкт/map/словник з погрупованими числами за кількістю десятків та сформувати ключі у вигляді "0-9"
, "10-19"
, "20-29"
і т.д.👍5❤3🔥1
Як додати перевірку свого коду на GitHub Actions? 🌩️
Припустимо, що ваш застосунок написаний на JavaScript. Якщо ж ви використовуєте іншу мову, можете теж використовувати цей підхід, потрібно буде лише замінити скрипт перевірки. Отож, уявіть себедевопсом yaml-розробником і почнімо.
Власне, перед початком налаштовування GitHub Action ми зазвичай робимо ще одну річ - додаємо власний скрипт в package.json, який трохи спростить використання і запуск команди. Найчастіше ми додаємо там перевірку форматування через prettier та статичний аналіз з допомогою eslint та tsc. Виглядає це приблизно отак:
Для початку в корені свого проєкту потрібно створити директорію .github, всередині якої ще одну з назвою workflows. Тут ми і будемо розміщувати свій файл конфігурації. Створимо цей файл і дамо йому назву check.yml.
Якщо ви не знайомі з YAML, це як JSON на Python. Головне слідкуйте за відступами.
Почнемо з імені, додайте у файл:
Тепер треба прописати, коли ж запускати цей екшн. Дозволимо запускати його ручками та будемо автоматично запускати його при будь-якому пуші.
Почнімо ж нарешті описувати кроки перевірок. Створимо job з іменем check. Запускати це все ми будемо на останній ubuntu, а першим кроком додамо клонування вашого репозиторію.
Отож, на цій машині вже є наш репозиторій. А на ubuntu одразу встановлений Node.js? Не знаємо, тому краще встановити його. На всяк випадок вкажемо версію Node.js. А ще, GitHub сам вміє кешувати модулі Node.js, тому скажемо йому робити це також.
Ну тепер Node.js точно є, але немає node_modules. Ну це вже дуже просто, всі ми знаємо потрібну команду.
Нарешті, все готово, залишилось тільки запустити нашу перевірку. Оскільки ми вже підготували потрібний скрипт, просто запустимо його.
Усе це разом, а також з невеличким налаштуванням pnpm, concurrency, strategy та монорепо (Node.js застосунок знаходиться не в корені проєкту), можна знайти за посиланням нижче.
👉 Відкрити файл
Щоб більше почитати про GitHub Actions використовуйте посилання внизу. А від @MatiGreen чекаємо повідомлення про те, як зробити те саме на GitLab 😉
👉 Відкрити посилання
#article
Припустимо, що ваш застосунок написаний на JavaScript. Якщо ж ви використовуєте іншу мову, можете теж використовувати цей підхід, потрібно буде лише замінити скрипт перевірки. Отож, уявіть себе
Власне, перед початком налаштовування GitHub Action ми зазвичай робимо ще одну річ - додаємо власний скрипт в package.json, який трохи спростить використання і запуск команди. Найчастіше ми додаємо там перевірку форматування через prettier та статичний аналіз з допомогою eslint та tsc. Виглядає це приблизно отак:
"scripts": {
"check": "prettier --check . && eslint . && tsc --noEmit"
}
Для початку в корені свого проєкту потрібно створити директорію .github, всередині якої ще одну з назвою workflows. Тут ми і будемо розміщувати свій файл конфігурації. Створимо цей файл і дамо йому назву check.yml.
Якщо ви не знайомі з YAML, це як JSON на Python. Головне слідкуйте за відступами.
Почнемо з імені, додайте у файл:
name: Run web check
Тепер треба прописати, коли ж запускати цей екшн. Дозволимо запускати його ручками та будемо автоматично запускати його при будь-якому пуші.
on:
workflow_dispatch: # вручну на GitHub
push: # при push в репозиторій
Почнімо ж нарешті описувати кроки перевірок. Створимо job з іменем check. Запускати це все ми будемо на останній ubuntu, а першим кроком додамо клонування вашого репозиторію.
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
Отож, на цій машині вже є наш репозиторій. А на ubuntu одразу встановлений Node.js? Не знаємо, тому краще встановити його. На всяк випадок вкажемо версію Node.js. А ще, GitHub сам вміє кешувати модулі Node.js, тому скажемо йому робити це також.
- name: Setup Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
Ну тепер Node.js точно є, але немає node_modules. Ну це вже дуже просто, всі ми знаємо потрібну команду.
- name: Install dependencies
run: npm install
Нарешті, все готово, залишилось тільки запустити нашу перевірку. Оскільки ми вже підготували потрібний скрипт, просто запустимо його.
- name: Run check
run: npm run check
Усе це разом, а також з невеличким налаштуванням pnpm, concurrency, strategy та монорепо (Node.js застосунок знаходиться не в корені проєкту), можна знайти за посиланням нижче.
👉 Відкрити файл
Щоб більше почитати про GitHub Actions використовуйте посилання внизу. А від @MatiGreen чекаємо повідомлення про те, як зробити те саме на GitLab 😉
👉 Відкрити посилання
#article
👍14❤6🔥6
Welcome!
Let's practice our English! So...
👉 What habits would you like to give up?
Have a nice #english_friday 💛
Let's practice our English! So...
👉 What habits would you like to give up?
Have a nice #english_friday 💛
👍6🤔3❤2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
#how_to створити Infinite Scroll Animation ♾️
Виконаний з допомогою React та SCSS!
👉 Відкрити посилання
Виконаний з допомогою React та SCSS!
👉 Відкрити посилання
👍8🔥5❤1👏1
Bongo Cat Buddy 🙀
Котики завжди роблять речі кращими. Одного разу кіт пробігся по клавіатурі і тепер так звуть дитину Маска 😹
Ділимося з вами розширенням Bongo Cat Buddy, яке не дозволить вам засумувати. Котик буде стукати лапкою з вами в такт. Тому баги, які ви фіксаєте, вже не виглядатимуть такими страшними і серйозними.
👉 Відкрити посилання
#tips
Котики завжди роблять речі кращими. Одного разу кіт пробігся по клавіатурі і тепер так звуть дитину Маска 😹
Ділимося з вами розширенням Bongo Cat Buddy, яке не дозволить вам засумувати. Котик буде стукати лапкою з вами в такт. Тому баги, які ви фіксаєте, вже не виглядатимуть такими страшними і серйозними.
👉 Відкрити посилання
#tips
❤6👍4😁3🤯1
Чи шукаєте ви зараз роботу в ІТ? 👀
Anonymous Poll
32%
Так, в активному пошуку
38%
Так, в пасивному пошуку
21%
Ні, мене все влаштовує на теперішньому місці роботи
10%
Не працюю і не шукаю
❤7👍4🤔2