Підсумки по збору на грілки
Зібрано:
Банка: 9000 грн
ПБ: 300 грн
Попередній залишок: 16грн
Сума: 9316
Придбано:
Грілки для ніг HeatPaxx, 8 годин, 160 шт. по 30 грн
Грілки для рук ThermoPaxx, 10 годин, 116 штук по 30 гривень.
Доставка 265 гривень, адресна.
Сума: 8545 гривень.
Залишок: 9316 - 8545 = 771 (тепер є банка де ви можете бачите всі залишки)
Takehot на той момент закінчилися, а їх грілка для ніг в моєму кармані пропрацювала 2 години.
Розглядався варіант з Декатлоном, але ті що ми взяли були перевірені, а Декатлон ні.
Якщо не буде заперечень, залишок відправлю на збір на машину одному підрозділу, про них буде трохи пізніше.
Дякую всім хто долучився, ми зробили маленьку, але дуже корисну справу, ви це самі розумієте.
На наступний збір знайду вам щось гарне на розіграш. Може книжку? Чи мерч?
Бережіть себе і допомагайте ЗСУ та один одному.
Зібрано:
Банка: 9000 грн
ПБ: 300 грн
Попередній залишок: 16грн
Сума: 9316
Придбано:
Грілки для ніг HeatPaxx, 8 годин, 160 шт. по 30 грн
Грілки для рук ThermoPaxx, 10 годин, 116 штук по 30 гривень.
Доставка 265 гривень, адресна.
Сума: 8545 гривень.
Залишок: 9316 - 8545 = 771 (тепер є банка де ви можете бачите всі залишки)
Takehot на той момент закінчилися, а їх грілка для ніг в моєму кармані пропрацювала 2 години.
Розглядався варіант з Декатлоном, але ті що ми взяли були перевірені, а Декатлон ні.
Якщо не буде заперечень, залишок відправлю на збір на машину одному підрозділу, про них буде трохи пізніше.
Дякую всім хто долучився, ми зробили маленьку, але дуже корисну справу, ви це самі розумієте.
На наступний збір знайду вам щось гарне на розіграш. Може книжку? Чи мерч?
Бережіть себе і допомагайте ЗСУ та один одному.
👍19❤10
Сьогодні, 19:00, Народний проект, частина 2.
Будемо продовжувати. Розраховуємо до двох годин, десь так.
В програмі деплоймент і useExternal хук
Лінка вже на сам ефір
Будемо продовжувати. Розраховуємо до двох годин, десь так.
В програмі деплоймент і useExternal хук
Лінка вже на сам ефір
YouTube
React, народний проект, ч.2
Проводимо вечір за програмуванням та React
✉️ Telegram: https://t.me/reactbeginners
❤️ Підтримати канал: https://opencollective.com/farstar
✉️ Telegram: https://t.me/reactbeginners
❤️ Підтримати канал: https://opencollective.com/farstar
👍9❤🔥6🔥1
Free React For Beginners
Сьогодні, 19:00, Народний проект, частина 2. Будемо продовжувати. Розраховуємо до двох годин, десь так. В програмі деплоймент і useExternal хук Лінка вже на сам ефір
Беріть чай/каву/кота/собаку/тарантула та заходьте
Update: відео переведено в стан доступу тільки по посиланню, як і минуле.
Update: відео переведено в стан доступу тільки по посиланню, як і минуле.
🔥13❤1
А що я вам приніс?
🤝 Дякую пані Єлізаветі за справжній приклад зі співбесіди
https://youtu.be/LBz1aQtYot8
🤝 Дякую пані Єлізаветі за справжній приклад зі співбесіди
https://youtu.be/LBz1aQtYot8
YouTube
Питання зі співбесіди - Event Loop на прикладі коду
👉 Розбираємо приклад зі співбесіди на тему Event Loop. Коли виконуються setTimeout, коли Promise
✉️ Telegram: https://t.me/reactbeginners
❤️ Підтримати канал: https://opencollective.com/farstar
✉️ Telegram: https://t.me/reactbeginners
❤️ Підтримати канал: https://opencollective.com/farstar
🔥19👍5
Анонси на сьогодні
19:00, Сергій Бабіч, Перша співбесіда нового сезону на Junior React JS. (деталі)
20:00, React їде в гості до CS-GO, просто граємо в прямому ефірі (твіч).
UPD. Щодо твіча - пропозиції в що пограти приймаються, другим на черзі буде HOMM3, а от далі залежить від вас. Може щось буде, може нічого)
П.М. В понеділок ввечері буде маленький сюрприз)
19:00, Сергій Бабіч, Перша співбесіда нового сезону на Junior React JS. (деталі)
20:00, React їде в гості до CS-GO, просто граємо в прямому ефірі (твіч).
UPD. Щодо твіча - пропозиції в що пограти приймаються, другим на черзі буде HOMM3, а от далі залежить від вас. Може щось буде, може нічого)
П.М. В понеділок ввечері буде маленький сюрприз)
👍8❤1❤🔥1
Зірки твіча з мене не буде хоча було весело. Тож продовжимо лупати скалу фронт-енду)
👍7
Free React For Beginners
А що я вам приніс? 🤝 Дякую пані Єлізаветі за справжній приклад зі співбесіди https://youtu.be/LBz1aQtYot8
І продовжуючи тему фронтенду, хто не знає що буде виведене в консоль - бігом дивитися відео, там 2 хвилини.
Якщо сподобалося - поставте лайк та пошерте. Я буду вдячним і відео буде більше. Якщо не сподобалося - напишіть що саме.
Відповіді ховайте під спойлер будь-ласочка)
console.log(0);
setTimeout(() => console.log(1));
new Promise((resolve) => {
console.log(2);
resolve(3);
}).then(console.log)
Якщо сподобалося - поставте лайк та пошерте. Я буду вдячним і відео буде більше. Якщо не сподобалося - напишіть що саме.
Відповіді ховайте під спойлер будь-ласочка)
YouTube
Питання зі співбесіди - Event Loop на прикладі коду
👉 Розбираємо приклад зі співбесіди на тему Event Loop. Коли виконуються setTimeout, коли Promise
✉️ Telegram: https://t.me/reactbeginners
❤️ Підтримати канал: https://opencollective.com/farstar
✉️ Telegram: https://t.me/reactbeginners
❤️ Підтримати канал: https://opencollective.com/farstar
👍26❤1🔥1
❓Як скасувати мережевий запит в React
Тут в LinkedIn пролетіло питання - як відмінити мережевий запит в React. На щастя все стало досить просто після появи спеціального класу
Виглядає це щастя ось так:
Як бачите - не складно. Якщо ви працюєте з
Cподіваюся було корисно.
@reactbeginners
Тут в LinkedIn пролетіло питання - як відмінити мережевий запит в React. На щастя все стало досить просто після появи спеціального класу
AbortController
.Виглядає це щастя ось так:
useEffect(() => {
// Створюємо екземпляр AbortController
const abortController = new AbortController();
// Робимо запит та передаємо у fetch `signal'
// Цей сигнал "просигналить" фетчу,
// якщо виникне необхідність відміни запиту
fetch('/user', {signal: abortController.signal});
// Повертаємо функцію відписки з ефекту
// Ця функція буде викликана коли компонент буде видалений
// Або зміняться його залежності
// І викличе сигнал, який повідомить фетчу про відміну
return () => abortController.abort();
}, []);
Як бачите - не складно. Якщо ви працюєте з
axios
- все те саме, також через AbortControllerCподіваюся було корисно.
@reactbeginners
👍31
Free React For Beginners
❓Як скасувати мережевий запит в React Тут в LinkedIn пролетіло питання - як відмінити мережевий запит в React. На щастя все стало досить просто після появи спеціального класу AbortController. Виглядає це щастя ось так: useEffect(() => { // Створюємо екземпляр…
Мене тут піймали на неточному формулюванні, то ж виправляюся.
Використання відписки не зовсім "скасовує запит". Так, запит переходить в стан canceled і більше не оброблюється браузером. Але, сам запит вже "пішов" на бекенд і цілком може бути оброблений бекендом. А може бути і не оброблений. Залежить від того що "вміє" серверна частина.
А питання - навіщо взагалі відміняти запит не менш цікаве)
Використання відписки не зовсім "скасовує запит". Так, запит переходить в стан canceled і більше не оброблюється браузером. Але, сам запит вже "пішов" на бекенд і цілком може бути оброблений бекендом. А може бути і не оброблений. Залежить від того що "вміє" серверна частина.
А питання - навіщо взагалі відміняти запит не менш цікаве)
👍7✍1
Обіцяв я вам сюрприз сьогодні - ось маєте
Відео № 1 - Вступ до курсу Next.JS
Відео № 2 - Що таке Next.JS
Буду потрохи викладати, тому що статися може що завгодно, хай краще залишиться незакінченим ніж лежатиме у приватних.
Всім дякую!
Відео № 1 - Вступ до курсу Next.JS
Відео № 2 - Що таке Next.JS
Буду потрохи викладати, тому що статися може що завгодно, хай краще залишиться незакінченим ніж лежатиме у приватних.
Всім дякую!
YouTube
0. Вступ до курсу Next.JS
Опис курсу Next.JS - структура курсу, вимоги, програма та всі інші організаційні питання до курсу.
💻 Програма та матеріали - https://github.com/Drag13/NextJS-express-course-app
🧑💻Код https://github.com/Drag13/NextJS-express-course
💌 Telegram - t.me/reactbeginners
💻 Програма та матеріали - https://github.com/Drag13/NextJS-express-course-app
🧑💻Код https://github.com/Drag13/NextJS-express-course
💌 Telegram - t.me/reactbeginners
🔥60❤7❤🔥5
Якщо вам сумно постійно писати обробку помилок ви завжди можете написати універсальний компонент:
Для цього потрібно створити класовий компонент (функціональні такого не вміють) в якому реалізувати три методи:
В коді це виглядає так:
Тепер ви можете писати код накшталт такого:
❗️Варто пам'ятати:
1) Виключення, які стаються в середині промісів просто так не перехоплюються, для цього потрібно використовувати async/await
2) Виключення, що стаються в середині самого компоненту ErrorBoundaries також не перехоплюються.
Для обробки помилок в Next.JS цей підхід також працює. Але, як ще один варіант, ви можете використати файл
А ось пакет від одного з розробників #React, який вирішує те саме завдання. Майже 4 мільйона скачувань, а він і досі не в основній бібліотеці 😢
@reactbeginners
Для цього потрібно створити класовий компонент (функціональні такого не вміють) в якому реалізувати три методи:
getDerivedStateFromError
- оновлює ваш стейт у випадку перехоплення помилкиcomponentDidCatch
- перехоплює помилку і може щось із нею зробити (залогувати, наприклад)render
- відображає контент в залежності від того чи була помилка, чи ні. В коді це виглядає так:
class SimpleErrorBoundaries extends PureComponent<Типи виглядають досить просто
SimpleErrorBoundariesProps,
SimpleErrorBoundariesState
> {
static getDerivedStateFromError(error: Error) {
return { hasError: true, error };
}
state = { hasError: false };
render() {
const { children, errorFallback } = this.props;
return this.state.hasError ? errorFallback : children;
}
componentDidCatch(error: Error): void {
this.props.onError && this.props.onError(error);
}
}
type SimpleErrorBoundariesProps = {
children: ReactNode;
errorFallback: ReactNode;
onError?: (error: Error) => void;
};
type SimpleErrorBoundariesState =
| { hasError: false }
| { hasError: true; error: Error };
Тепер ви можете писати код накшталт такого:
<SimpleErrorBoundaries errorFallback={<>Sorry mate</>}>
<ErrorComponent />
</SimpleErrorBoundaries>
❗️Варто пам'ятати:
1) Виключення, які стаються в середині промісів просто так не перехоплюються, для цього потрібно використовувати async/await
2) Виключення, що стаються в середині самого компоненту ErrorBoundaries також не перехоплюються.
Для обробки помилок в Next.JS цей підхід також працює. Але, як ще один варіант, ви можете використати файл
error.tsx
дефолтний експорт якого буде відображений у випадку, якщо в роуті станеться помилка.А ось пакет від одного з розробників #React, який вирішує те саме завдання. Майже 4 мільйона скачувань, а він і досі не в основній бібліотеці 😢
@reactbeginners
👍16🔥3❤2
В скарбничку багів та дитячих хвороб Next.JS на page* роутері
Маємо дуже простий React код:
Звичайними словами - якщо в URL є id з якимось значенням - виведи
Тепер питання, що буде виведено на екран протягом наступної секунди, якщо ваш користувач зайде на URL:
Спочатку дайте відповідь собі і напишіть у коментарях, а потім заглядайте:
Спочатку виведеться ERROR
Потім екран оновиться і виведеться HELLO
Це відбувається тому, що в Next.JS router має ще один прапорець - який потрібно перевіряти перед тим як звертатися до роутера. Поки він не ready - там може не бути тих значень на які ви очікуєте. І це відбувається незважаючи на те, що URL та всі дані в ньому вже існують під час обробки запиту на сервері.
* На щастя, в новому app роутері цю проблему вже вирішили. Для цього знадобилося усього 13 мажорних релізів :)
Маємо дуже простий React код:
const { query } = useRouter();
return <>
{query.id ? 'HELLO': 'ERROR'}
</>
Звичайними словами - якщо в URL є id з якимось значенням - виведи
HELLO
, якщо немає - виведи ERROR
Тепер питання, що буде виведено на екран протягом наступної секунди, якщо ваш користувач зайде на URL:
/?id=test
Спочатку дайте відповідь собі і напишіть у коментарях, а потім заглядайте:
Потім екран оновиться і виведеться HELLO
isReady
, * На щастя, в новому app роутері цю проблему вже вирішили. Для цього знадобилося усього 13 мажорних релізів :)
👍19🤯2👏1
Вибачайте що контент став трохи сухуватим, просто зараз емоційно все це вивозити досить складно.
Я звісно розумію що сиджу не в окопах, є де жити, є що їсти та й ви мене підтримуєте добряче, але 2 роки війни це довбані два роки.
Вірю що все буде добре, треба просто дотягнути.
Наступні два тижні будуть виходити міні відео про некст, сподіваюся встигну записати хоча б клієнтський роутер. Але не обіцяю(
Я не Сергій, цьомік у лобіка то не моє, але обійняти б обійняв.
Бережіть себе!
Я звісно розумію що сиджу не в окопах, є де жити, є що їсти та й ви мене підтримуєте добряче, але 2 роки війни це довбані два роки.
Вірю що все буде добре, треба просто дотягнути.
Наступні два тижні будуть виходити міні відео про некст, сподіваюся встигну записати хоча б клієнтський роутер. Але не обіцяю(
Я не Сергій, цьомік у лобіка то не моє, але обійняти б обійняв.
Бережіть себе!
❤68👍10
Хвилинка слабкості минула, пихтимо далі.
Сьогодні о 19:00 виходить третє відео про Next.JS - Мій перший застосунок
В сумі:
Відео № 1 - Вступ до курсу Next.JS
Відео № 2 - Що таке Next.JS
Відео № 3 - Мій перший застосунок
Четверте відео буде в понеділок.
До речі, як вам формат з таких "мікро" відео?
@reactbeginners
Сьогодні о 19:00 виходить третє відео про Next.JS - Мій перший застосунок
В сумі:
Відео № 1 - Вступ до курсу Next.JS
Відео № 2 - Що таке Next.JS
Відео № 3 - Мій перший застосунок
Четверте відео буде в понеділок.
До речі, як вам формат з таких "мікро" відео?
@reactbeginners
YouTube
1-2. [Практика] NextJs - створюємо свій перший застосунок
Опис курсу Next.JS - структура курсу, вимоги, програма та всі інші організаційні питання до курсу.
💻 Програма та матеріали - https://github.com/Drag13/NextJS-express-course-app
🧑💻Код https://github.com/Drag13/NextJS-express-course
💌 Telegram - t.me/reactbeginners
💻 Програма та матеріали - https://github.com/Drag13/NextJS-express-course-app
🧑💻Код https://github.com/Drag13/NextJS-express-course
💌 Telegram - t.me/reactbeginners
❤37👍14
Знаєте звідки цей код?
Це "ідеальний" код до якого має прагнути кожен хто бажав працювати в яндексі на болотах
А прикол цього коду не в тому, що він виглядає як поріддя мініфікатора, а в тому, що він містить помилку, яку ніхто не помічав, тому що код написаний не руками, а одним місцем нижче спини.
Як ви самі бачите, такий код складно читати, ще складніше розуміти і важко підтримувати. Якщо говорити простими словами - це максимально гівняний код з тих що я бачив.
Але як приклад - це дійсно ідеальний код як робити не треба (за умови, звісно, що ваша посада не мініфікатор-обфускатор)
Тому що, друге правило гарного коду полягає в тому, що ви маєте писати максимально простий код. Такий простий як двері, щоб його міг прочитати і мід і джун і навіть ПМ.
І повірте мені - написати простий код набагато складніше ніж те гівно що на цьому прикладі.
То ж завжди обирайте простоту. Це має бути вашим прагненням. Якщо ви бачите складний код - скоріше за все щось пішло не так.
@reactbeginners
Це "ідеальний" код до якого має прагнути кожен хто бажав працювати в яндексі на болотах
А прикол цього коду не в тому, що він виглядає як поріддя мініфікатора, а в тому, що він містить помилку, яку ніхто не помічав, тому що код написаний не руками, а одним місцем нижче спини.
Як ви самі бачите, такий код складно читати, ще складніше розуміти і важко підтримувати. Якщо говорити простими словами - це максимально гівняний код з тих що я бачив.
Але як приклад - це дійсно ідеальний код як робити не треба (за умови, звісно, що ваша посада не мініфікатор-обфускатор)
Тому що, друге правило гарного коду полягає в тому, що ви маєте писати максимально простий код. Такий простий як двері, щоб його міг прочитати і мід і джун і навіть ПМ.
І повірте мені - написати простий код набагато складніше ніж те гівно що на цьому прикладі.
То ж завжди обирайте простоту. Це має бути вашим прагненням. Якщо ви бачите складний код - скоріше за все щось пішло не так.
@reactbeginners
❤47👍11🤯4🔥1
Простий тест: Компоненти NextJS, які використовуються use client, рендеряться на:
Anonymous Quiz
11%
Тільки на сервері
55%
Тільки на клієнті
34%
І на сервері і на клієнті
🤔10🤯4👍3
Знову удар по Харкову 😢. Нажаль, можу висловити лише свої співчуття та підримку. Чи стане від цього комусь легше - я не знаю. Але ви не самі, це точно.
💔55
Free React For Beginners
Простий тест: Компоненти NextJS, які використовуються use client, рендеряться на:
Якщо вас обманула назва директиви
Але з цього можна зробити два висновки:
1. Правильні назви дуже важливі. Вони можуть як спростити ваше життя так і суттєво ускладнити. Уявіть собі метод getUserById, який видаляє користувача з БД 😉
2. Вибрати правильну назву складно, навіть досвідченим розробникам. Якщо ви не можете пригадати назву метода, якщо з назви змінної не очевидно що вона робить - перейменуйте, не соромтеся. Ви зробите послугу і собі, і команді.
А ось посилання на відео (виходить в понеділок о 19:00) про те, які види компонент існують в Next.JS та чим вони відрізняються.
@reactbeginners
use client;
- не засмучуйтеся, не ви перші, не ви останні.Але з цього можна зробити два висновки:
1. Правильні назви дуже важливі. Вони можуть як спростити ваше життя так і суттєво ускладнити. Уявіть собі метод getUserById, який видаляє користувача з БД 😉
2. Вибрати правильну назву складно, навіть досвідченим розробникам. Якщо ви не можете пригадати назву метода, якщо з назви змінної не очевидно що вона робить - перейменуйте, не соромтеся. Ви зробите послугу і собі, і команді.
А ось посилання на відео (виходить в понеділок о 19:00) про те, які види компонент існують в Next.JS та чим вони відрізняються.
@reactbeginners
YouTube
2-1. NextJs, компоненти та їх види
У цьому відео ми поговоримо про види компонентів в Next.JS, призначення та обмеження серверних компонентів, переваги та недоліки різних видів компонентів
💻 Програма та матеріали - https://github.com/Drag13/NextJS-express-course-app
🧑💻Код https://github…
💻 Програма та матеріали - https://github.com/Drag13/NextJS-express-course-app
🧑💻Код https://github…
👍24❤6💯1
Останній раз я цей пост писав коли нас було десь 400? людей, тепер нас трохи більше, то ж давайте знайомитися ще раз.
Мене звати Віталій Рубан, я працюю в компанії Ітера на посади front-end tech lead. До цього працював керівником front-end департаменту (не сподобалося) та full-stack розробником. Працював з react, angular, angular.js. Знаю JavaScript, TypeScript, C#, SQL, трохи F# (але давно нічого на ньому не писав). З хмарних технологій - досить багато працював з Azure. Загалом маю десь дев'ять років комерційного досвіду - не можу сказати що це багато, але вже й не так і мало.
Люблю писати технічні статті, виступати на конференціях (коли є на натхнення). Цікавлюся швидкодією, маю тут невеличкий, але цілком практичний досвід. Декілька років співвикладав для НАУ (привіт НАУ). Декілька років був у програмному комітеті JsFest, шкода що він більше не проводиться.
З цікавих моментів - я світчер (юрист у минулому), тому більш-менш розумію тих кому складно змінювати професію. Мені свого часу декілька разів пощастило, але навіть за цих умов перехід зайняв півтора роки частину з яких, щоправда, я програв в Dota2 😅
А з особистого - катався на сноуборді, стрибав на роликових ковзанах, стрибав з парашутом (привіт Бородянко) і багато читав, в основному фантастики. Наразі ці захоплення трохи змінилися, їх місце зайняла зброя. Але сподіваюся що до них я ще повернусь. А, так, ще періодично граю в різні комп'ютерні ігри, але останнім часом майже нічого не "чіпляє".
Цей канал було створено на початку повномасштабної війни для підтримки тих хто не довчився або вирішив змінити роботу. Зазвичай я викладаю тут матеріал про React, Front-End та розробку в цілому. Іноді викладаю особисті міркування, бо я все ж таки жива людина і мене хвилює що відбувається навколо. З цієї самої причини тут бувають і збори - ми робимо маленький але теж важливий вклад у нашу Перемогу. Разом з вами ми збирали на грілки, пічки, дрони, авто та ліки і будемо продовжувати далі, відпочинимо після перемоги.
Ще у цього каналу є декілька друзів - Сергій Бабіч, ItJuniors, FwDays, BeerJS Zhytomyr - дякую вам за підтримку!
Тепер, коли я розповів вам про себе - прийшла ваша черга говорити про себе) Напишіть у коментарях хто ви, чим цікавитеся та як сюди потрапили.
Мене звати Віталій Рубан, я працюю в компанії Ітера на посади front-end tech lead. До цього працював керівником front-end департаменту (не сподобалося) та full-stack розробником. Працював з react, angular, angular.js. Знаю JavaScript, TypeScript, C#, SQL, трохи F# (але давно нічого на ньому не писав). З хмарних технологій - досить багато працював з Azure. Загалом маю десь дев'ять років комерційного досвіду - не можу сказати що це багато, але вже й не так і мало.
Люблю писати технічні статті, виступати на конференціях (коли є на натхнення). Цікавлюся швидкодією, маю тут невеличкий, але цілком практичний досвід. Декілька років співвикладав для НАУ (привіт НАУ). Декілька років був у програмному комітеті JsFest, шкода що він більше не проводиться.
З цікавих моментів - я світчер (юрист у минулому), тому більш-менш розумію тих кому складно змінювати професію. Мені свого часу декілька разів пощастило, але навіть за цих умов перехід зайняв півтора роки частину з яких, щоправда, я програв в Dota2 😅
А з особистого - катався на сноуборді, стрибав на роликових ковзанах, стрибав з парашутом (привіт Бородянко) і багато читав, в основному фантастики. Наразі ці захоплення трохи змінилися, їх місце зайняла зброя. Але сподіваюся що до них я ще повернусь. А, так, ще періодично граю в різні комп'ютерні ігри, але останнім часом майже нічого не "чіпляє".
Цей канал було створено на початку повномасштабної війни для підтримки тих хто не довчився або вирішив змінити роботу. Зазвичай я викладаю тут матеріал про React, Front-End та розробку в цілому. Іноді викладаю особисті міркування, бо я все ж таки жива людина і мене хвилює що відбувається навколо. З цієї самої причини тут бувають і збори - ми робимо маленький але теж важливий вклад у нашу Перемогу. Разом з вами ми збирали на грілки, пічки, дрони, авто та ліки і будемо продовжувати далі, відпочинимо після перемоги.
Ще у цього каналу є декілька друзів - Сергій Бабіч, ItJuniors, FwDays, BeerJS Zhytomyr - дякую вам за підтримку!
Тепер, коли я розповів вам про себе - прийшла ваша черга говорити про себе) Напишіть у коментарях хто ви, чим цікавитеся та як сюди потрапили.
👍61❤14🎉7❤🔥2