Please open Telegram to view this post
VIEW IN TELEGRAM
🤓2👍1
Не спрацювало (2022)
Історія на реальних подіях про крах багатомільярдного стартапа єдинорога 🦄
Міні серіал від Епл 🍏 покаже деталі.
#movietime
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1🔥1
🔐 група по JavaScript - https://news.1rj.ru/str/+V5NcDSoFFz83MDRi
Навігація 🕹️
#targer - апдейти релізів, новини і поради про платформу змагань https://targer.dev
#software - апки та онлайн сервіси які рекомендуємо юзати
#coding - імпруви коду з практики
#movietime - кіно та серіали що надихають
Вітаю в потужному коммюніті України по веб девелопменту, го разом рефакторити світ!
Навігація 🕹️
#targer - апдейти релізів, новини і поради про платформу змагань https://targer.dev
#software - апки та онлайн сервіси які рекомендуємо юзати
#coding - імпруви коду з практики
#movietime - кіно та серіали що надихають
Вітаю в потужному коммюніті України по веб девелопменту, го разом рефакторити світ!
❤2👍1
Authy by Twilio - nice 👍 👍
Автентикатор гугла - лажа💩
Колись ще на початку TOTP (Time-based one-time password) ери юзав автентикатор гугла.
Крутий підхід, а реалізація гугла відстій.
Ні дизайну ні функціональності. 🔴
Потім як втратив доступ до девайса - ледь відновив доступ до сервісів, шукав бекап коди, купу часу витратив😫 😨
Вже кілька років як користуюсь лише Authy:
- сінк акаунта через клауд
- приємний, продуманий дизайн
При зміні смартфона це мастхев, тому рекомендація однозначна.
#software
Автентикатор гугла - лажа
Колись ще на початку TOTP (Time-based one-time password) ери юзав автентикатор гугла.
Крутий підхід, а реалізація гугла відстій.
Ні дизайну ні функціональності. 🔴
Потім як втратив доступ до девайса - ледь відновив доступ до сервісів, шукав бекап коди, купу часу витратив
Вже кілька років як користуюсь лише Authy:
- сінк акаунта через клауд
- приємний, продуманий дизайн
При зміні смартфона це мастхев, тому рекомендація однозначна.
#software
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Юзай табулярні шрифти 1️⃣ 2️⃣ 3️⃣ 4️⃣
Проси дизайнера хай малює шрифтами з підтримкою табуляції:
- щоб лейаут був рівним✅
- щоб не скакав від різниці ширини “11:11” та “22:22”✅
Особливо коли мова про таймери, живі тікери, каунтери тощо.
Tailwind має ютілу для цього - tabular-nums
❔ Що робити коли шрифт не підтримує табуляцію?
В таких випадках я роблю симуляцію табуляції - рендерю кожен символ стрінги в окремому div елементі з фіксованою шириною 🧠
#ux
Проси дизайнера хай малює шрифтами з підтримкою табуляції:
- щоб лейаут був рівним
- щоб не скакав від різниці ширини “11:11” та “22:22”
Особливо коли мова про таймери, живі тікери, каунтери тощо.
Tailwind має ютілу для цього - tabular-nums
❔ Що робити коли шрифт не підтримує табуляцію?
В таких випадках я роблю симуляцію табуляції - рендерю кожен символ стрінги в окремому div елементі з фіксованою шириною 🧠
#ux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3✍2💅2
- підтримка кирилиці
- варіативні розміри
- табулярні числа
- та інші круті штуки показані на лендінгу
Про табулярні числа в шрифті - дивись два дописи назад
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👏1🤩1
Голий JavaScript не вміє правильно округляти цифри після коми (float numbers) 😓
Нативний метод .toFixed працює баговано 🐞
Це повʼязано з Round-off error яка фікситься через Number.EPSILON корекцію🤓
Саме лаконічне рішення:✅
Для складних і точних операцій над числами з плаваючою комою потрібно юзати лібу наприклад decimal.js
TypeScript playground for demo
#coding
Нативний метод .toFixed працює баговано 🐞
Це повʼязано з Round-off error яка фікситься через Number.EPSILON корекцію
Саме лаконічне рішення:
const round = (num = 0, fractions = 0) => {
const k = Math.pow(10, fractions);
const n = (num * k) * (1 + Number.EPSILON);
return Math.round(n) / k;
}
Для складних і точних операцій над числами з плаваючою комою потрібно юзати лібу наприклад decimal.js
TypeScript playground for demo
#coding
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4✍2👍1
31 лютого це валідна дата для JavaScript 😁
Вона буде сконвертована в 3 березня (або друге, залежить від року).
Дати - хитра тема в джс, для роботи з ними варто юзати лібу.
date-fns - ТОПова ліба для роботи з датами в JS.
- Pure functions підхід 🤌💯
- Купа методів і готових рішень в інеті✅
- Форматування дати по темплейту💅
Вона буде сконвертована в 3 березня (або друге, залежить від року).
Дати - хитра тема в джс, для роботи з ними варто юзати лібу.
date-fns - ТОПова ліба для роботи з датами в JS.
- Pure functions підхід 🤌💯
- Купа методів і готових рішень в інеті
- Форматування дати по темплейту
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁1
Літерал типи інферяться зі збереженням відповідності базовим типам!
Кейси що одразу спадають на думку:
- конфіги роутинга
- конфіги API реквестів
- інші обʼєкти літеральні проперті яких далі трансформуються через mapped types
Більше деталей на офіційних реліз нотатках версії 4.9
Пора рефакторити проєкти на новий манер
#coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2😍1✍1
🐞 CSS vh юніт багований для мобілки.
Кейс - фулскрін діалог (модалка) абсолютно чи фіксед позиціонований.
Якщо вказати висоту діалога 100vh на десктопі - все працює класно як і очікували.😊
Але на мобілці (e.g. Chrome iOS) висота сьорчбара і нижніх кнопок навігації браузера не враховані🤦♂️
100vh рендериться більше ніж доступно місця, не влізає в один екран і тому контент перекривається:
- юзери сумують, не бачать весь контент🙈
- не можуть закрити діалог чи клікнути кнопку (бо не видно одразу)😭
✅ Рішення = “100%” (h-full) instead of “100vh” (h-screen)
Tailwind playground demo
#coding
Кейс - фулскрін діалог (модалка) абсолютно чи фіксед позиціонований.
Якщо вказати висоту діалога 100vh на десктопі - все працює класно як і очікували.
Але на мобілці (e.g. Chrome iOS) висота сьорчбара і нижніх кнопок навігації браузера не враховані
100vh рендериться більше ніж доступно місця, не влізає в один екран і тому контент перекривається:
- юзери сумують, не бачать весь контент
- не можуть закрити діалог чи клікнути кнопку (бо не видно одразу)
Tailwind playground demo
#coding
Please open Telegram to view this post
VIEW IN TELEGRAM
✍5👍2❤1
Ходили чутки що такий хук буде частиною реакта 18 версії, але досі нема.
А я вже більше року користуюсь і кайфую:
- дуже зручно НЕ прописувати руками залежності
- зручна конвенція суфікса “Handler” - clickHandler, mousedownHandler, submitHandler etc
- нема зайвих ререндерів бо референс завжди однаковий а боді функції завжди актуальне, з усіма актуальними залежностями
Зашарте пліз допис Дену Абрамову, хай підписується на канал і релізить ще кращий реакт.
TypeScript playground demo
#coding #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5⚡2✍2
Таргеріанці, перша 100я пройдена! 🎉
Ви суууупер!⭐
🙏 Дякую усім хто:
- Підписався✅
- Ставить реакції❤️
- Шарить друзям👨💻 💻 💻 💻
Це дуже приємно! Це надихає, мотивує і стверджує нашу цінність.
Найкрутіше попереду🔝 💪 😎 🤗
#milestone
Ви суууупер!
- Підписався
- Ставить реакції
- Шарить друзям
Це дуже приємно! Це надихає, мотивує і стверджує нашу цінність.
Найкрутіше попереду
#milestone
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥11👏3😍2🍾1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣4🔥1🙈1
Гра в імітацію (2014)
Історія на реальних подіях.
Алан Тюрінг створив універсальну машину для розшифровки секретного коду Енігми.
Це уможливило перемогу над нацистами в Другій світовій війні 🕊.
Бенедикт Камбербетч в головній ролі показує як це все було.
Про Алана Тюрінга:
- автор універсальної Машини Тюринга
- автор тесту Тюрінга 👨 or 🤖
- Повнота за Тюрінгом 💯
- ці та інші його праці зробили великий вклад в розвиток штучного інтелекту 🧠
#movietime
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
nandgame.com - інтерактивний симулятор хардвера компʼютера.
Алан Тюрінг би зацінив👆 .
Я пройшов більшість гри та дізнався:😮
- Як фізично зберігається біт інформації
- Як одиниці та нулі формують регістри памʼяті
- Як процесору вдається синхронізувати мільярди імпульсів по всій платі
Дивовижно як щось неймовірно складне створюється з примітивних компонентів:
- потужний компʼютер з тринзисторів, NAND компонентів
- людина і всесвіт з атомів
- крута веб апка з компонентів реакта🔝
Як софтвер девелопер я задався такими питаннями:
- ❔ Як я можу написати таку гру на реакті?
- ❔ Як анімувати SVG?
-❓ Як автоматично прокласти оптимальний маршрут конекшенів щоб візуально все було читабельно?
-❓ Які ліби краще використати?
Це допомагає скілапитись, дає хороші ідеї при розробці фіч проєктів.
А головний ре-інсайт від цього: 💡
- Крута апка будується з композиції купи елементарних компонентів.
- Спрощуй і розділяй компоненти на десятки рядків коду, не тисячу.
Алан Тюрінг би зацінив
Я пройшов більшість гри та дізнався:
- Як фізично зберігається біт інформації
- Як одиниці та нулі формують регістри памʼяті
- Як процесору вдається синхронізувати мільярди імпульсів по всій платі
Дивовижно як щось неймовірно складне створюється з примітивних компонентів:
- потужний компʼютер з тринзисторів, NAND компонентів
- людина і всесвіт з атомів
- крута веб апка з компонентів реакта
Як софтвер девелопер я задався такими питаннями:
- ❔ Як я можу написати таку гру на реакті?
- ❔ Як анімувати SVG?
-
-
Це допомагає скілапитись, дає хороші ідеї при розробці фіч проєктів.
А головний ре-інсайт від цього: 💡
- Крута апка будується з композиції купи елементарних компонентів.
- Спрощуй і розділяй компоненти на десятки рядків коду, не тисячу.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🌚1
🏗 buildSortParam - ютіла яка генерує правильну стрінгу сортування для запитів на API.
Не раз помічав баги коли список айтемів рендериться хаотично. Іноді це треба, але зазвичай це баг відсутнього сортінга в реквесті.
Причини цим багам дві:
- Або взагалі не думали про те в якому порядку вивести результати бекенда
- Або хибно написана стрінга сорта
Ця ютіла вирішує повʼязані баги наступним чином:
- Type safe - компілятор крашне коли будуть опечатки чи хибні назви філдів✅
- Intellisense - твоя IDE підскаже які пропси доступні у ентіті✅
- Легка конвенція-паттерн для копіпаста👍
- Змушує думати про те який філд треба заюзати для сортінга 🧠
А мій бекенд вказує дефолтний сорт на своїй стороні, мені це не треба😜
☝️ Ноу, тобі всеодно варто на фронті вказати порядок сортування щоб уникнути потенційних багів:
- колись бекенд може змінити дефолти
- різні компоненти можуть потребувати різний порядок, один дефолт бекенда не підійде
TypeScript playground demo - тут код імплементації ютіли з відповідними дженеріками.
#coding
Не раз помічав баги коли список айтемів рендериться хаотично. Іноді це треба, але зазвичай це баг відсутнього сортінга в реквесті.
Причини цим багам дві:
- Або взагалі не думали про те в якому порядку вивести результати бекенда
- Або хибно написана стрінга сорта
Ця ютіла вирішує повʼязані баги наступним чином:
- Type safe - компілятор крашне коли будуть опечатки чи хибні назви філдів
- Intellisense - твоя IDE підскаже які пропси доступні у ентіті
- Легка конвенція-паттерн для копіпаста
- Змушує думати про те який філд треба заюзати для сортінга 🧠
А мій бекенд вказує дефолтний сорт на своїй стороні, мені це не треба
- колись бекенд може змінити дефолти
- різні компоненти можуть потребувати різний порядок, один дефолт бекенда не підійде
TypeScript playground demo - тут код імплементації ютіли з відповідними дженеріками.
#coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Один раз в пекедж джсоні сконфігурив - і далі автоматично запускається потрібна версія
Модернові проєкти на лейтест стабільній 18 ноді
Пет проєкти на бета версіях 19+
Легасі на 14 ітд
Колись побачив що цю тулзу юзає офіційно TypeScript - від тоді вольта це ванлав
#software
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5⚡3❤1
⭕ Ерора вказана в хибному місці сорців - ознака зациклених залежностей aka infinite dependency loop.
→ консоль показує ерору на пустий рядок
→ або пише назви токенів що взагалі відсутні у файлі
Скоріше всього компілятор запутався бо файли імпортять файли які імпортять самі себе десь в ланцюгу імпортів.
✅ Рішення - перевір циклічні залежності через dpdm пакет.
Я в package.json прописую команду для зручності:
#coding
→ консоль показує ерору на пустий рядок
→ або пише назви токенів що взагалі відсутні у файлі
Скоріше всього компілятор запутався бо файли імпортять файли які імпортять самі себе десь в ланцюгу імпортів.
Я в package.json прописую команду для зручності:
"deps:check": "npx dpdm src --warning=false --tree=false"
#coding
Please open Telegram to view this post
VIEW IN TELEGRAM
✍5👍4
Цей жарт про числа Фібоначчі такий самий як два минулих разом узяті.
👍4💅2😁1🌚1
Авто-імпорти крута штука, але перевіряй що і звідки заімпортилось.
Останній проблемний кейс - ідешка заімпортила сорс файл🔤 🔤 🔤 🔤 з ліби замість того щоб заімпортити лише🔤 🔤 🔤 🔤 🔤 тайпінги з dist папки.
Це призвело до того що білд крашився - TypeScript компілятор перевіряв типізацію самої ліби і там фейлився🤦♂️ (в дев режимі білдить ок, тому не помітно одразу).
tsconfig.json з конфігою “skipLibCheck: true” - не допомагає в цьому кейсі. Бо заімпортився “.tsx” файл який мусить пройти компіляцію і всі перевірки типів.
Тобто правильний імпорт на скріншоті буде:
Годину витратив на пошуки проблеми⏳
Буває :)
Довіряй але перевіряй що автоматично вписує твоя улюблена IDE😉
#coding #typenoscript
Останній проблемний кейс - ідешка заімпортила сорс файл
Це призвело до того що білд крашився - TypeScript компілятор перевіряв типізацію самої ліби і там фейлився
tsconfig.json з конфігою “skipLibCheck: true” - не допомагає в цьому кейсі. Бо заімпортився “.tsx” файл який мусить пройти компіляцію і всі перевірки типів.
Тобто правильний імпорт на скріншоті буде:
import { UseLoadScriptOptions } from '@react-google-maps/api/dist/useLoadScript';
Годину витратив на пошуки проблеми
Буває :)
Довіряй але перевіряй що автоматично вписує твоя улюблена IDE
#coding #typenoscript
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚4👨💻2👍1