Жабаскрипт (веде Віктор Турський)
前往频道在 Telegram
Авторський контент для JavaScript розробників, але не завжди про JS:). Пишу про архітектуру, best practices, продуктивність, безпеку, інструментарій. Viktor Turskyi (@koorchik), Cofounder at Webbylab, ex-Google engineer Рекламу не розміщую!
显示更多4 719
订阅者
-124 小时
+37 天
-1930 天
帖子存档
Новий реліз LIVR для JS/TS (2.12)
⚡ LIVR тепер найшвидший серед популярних JS-валідаторів (графіки в коментарях)
Раніше LIVR лідирував лише на динамічних правилах. Тепер він випереджає інші валадітори й на статичних. На динамічних правилах (холодний старт, новий валідатор на кожен виклик) він швидший за Zod у 86 разів, а за Ajv у 949 разів. Отже, фаза компіляції для швидкого валідатора не потрібна. Продуктивність не падає, коли правила формуються в рантаймі: зберігаються в базі, відрізняються для кожного клієнта чи приходять з іншого джерела.І безпекою жертвувати теж не треба, як це робить fastest-validator: він генерує JavaScript-код зі схеми, я вже заводив баг про RCE-вразливість.
🧠 Новий рушій статичної типізації
✅Strict-режим: TypeScript ще під час компіляції перевіряє, що кожне правило в схемі існує. Опечатка в назві правила стає помилкою компіляції.
✅Покращене виведення типів: type User = InferFromSchema<typeof userSchema> дає максимально вузькі типи.
✅Простіший синтаксис оголошення типів для власних правил, як простих, так і складних.
declare module 'livr/types/inference' {
interface RuleTypes {
// As\<T>: правило перевіряє значення і не губить точніший тип попередніх правил
starts_with: As\<string>;
}
}
🌐 Окремий сайт для JS-версії - https://js.livr-spec.org та повністю оновлений https://livr-spec.org з вбудованим плейграундом.
💡 Чому LIVR:
✅ Правила валідації - це просто дані. Їх можна зберегти, сформувати динамічно, сконвертувати, передати мережею або просто описати в коді.
✅ Продуктивність. Найшвидший у бенчмарках, навіть із динамічними правилами.
✅ Розширюваність. Ядро мінімальне, усе інше реалізовано через правила. Навіть вкладені структури - це лише ще одне метаправило. Кожен проєкт може мати власну бібліотеку правил.
✅ Правила валідації це не просто опис валідації, а pipeline для обробки поля, який може валідувати й модифікувати значення. Наприклад, ['trim', 'required', 'email', 'toLc'].
✅ Автоматичне виведення типів зі схеми. Щоб отримати тип зі схеми, навіть не обов'язково використовувати сам валідатор.
✅ Нуль залежностей.
✅ Аліаси. Складні правила можна оформити як аліаси з власними кодами помилок.
✅ У продакшені з 2013 року і постійно розвивається.
БІЛЬШЕ ПРО АРХІТЕКТУРНІ РІШЕННЯ: http://github.com/koorchik/js-validator-livr/blob/master/docs/DESIGN.md#table-of-contents
Як вам апдейт?NoTeleport - щоб навігатор не телепортував вас до Перу під час повітряної тривоги.
Створив додаток для Android, який рятує мене під час повітряних тривог і дозволяє навігації працювати коректно.
🤓У телефоні є точне (GPS) та приблизне геопозиціонування (точки Wi-Fi та вишки мобільних операторів). Під час тривог через підміну координат GPS телепортує вас до Перу, тому я хотів змусити навігатори спиратися на приблизне геопозиціонування. Я вирішив створити додаток, який можна обрати в налаштуваннях розробника Android як додаток для фіктивних місцезнаходжень (Mock location app). Він мав би відстежувати факт GPS-спуфінгу та видавати натомість приблизні координати.
Я почав реалізовувати цей функціонал, але виявилося, що Google Maps, Waze та OsmAnd і так вміють це робити, якщо GPS недоступний (просто з GPS спуфінгом це не працює). Тобто моєму додатку було достатньо просто під час GPS-спуфінгу змусити телефон повірити, що сигнал GPS зараз відсутній.
Як поводяться різні додатки для навігації.
Почнемо з того, що в Android є три основні провайдери/API для геолокації:
📡 GPS Provider (LocationManager.GPS_PROVIDER) використовує супутники для точного позиціонування.
📶 Network Location Provider (LocationManager.NETWORK_PROVIDER) використовує точки Wi-Fi та вишки стільникового зв'язку для приблизного позиціонування.
🧩 Fused Location Provider API - сервіс від Google Play Services, який під капотом автоматично поєднує GPS, Wi-Fi, Bluetooth та мобільні мережі для оптимального визначення координат.
Що використовують карти?
📍 Карти Google використовують Fused API.
📍 Waze працює напряму з GPS Provider та Network Location Provider.
📍 OsmAnd - Fused API.
📍 OsmAnd~ - GPS Provider та Network Location Provider.
З AndroidAuto не працює (але пишіть, якщо є ідеї).
Якщо ви використовуєте AndroidAuto, то телефон не просто використовує авто як додатковий екран, а ще й отримує дані з GPS автомобіля, тому телепортація залишиться. Але тут багато залежить від самої машини: деякі автомобілі роблять екстраполяцію, спираючись на власні датчики (швидкість руху, кут повороту керма). Можливо, вже є авто, GPS-модулі яких апаратно ігнорують GPS-спуфінг.
Що не планую додавати в додаток
1. Підтримку iOS (в iOS не можна обрати додаток для підміни GPS).
Що можливо додам в додаток:
1. Підтримку Bluetooth OBD для отримання даних з діагностичного порта про швидкість руху авто, щоб робити проміжні прорахунки.
2. Можливо підтрику IMU, але треба тестувати, бо Fusion API й самі карти вже роблять досить багато й не факт, що варто.
САЙТ (запустив публічну бету додатку): https://noteleport.github.io/
Вже є гарні відгуки. Cам вже три тижні користуюся теж)
Як вам?
VidCtrl 0.4 (критичне оновлення для MacOs).
Дуже вдячним всім за відгуки по програмі й допомогу з тестуванням ❤️
Що нового?
🛠 Власна збірка FFmpeg на всіх системах. Відео "Для архіву", стиснуте на MacBook, мало квадратики на обличчях в деякий відео. Той самий кліп, стиснутий на Linux, був чистий, а розмір майже однаковий. Заміри підтвердили різницю: 39,5 проти 41,4 dB за XPSNR, 92,5 проти 96 за VMAF.
Раніше VidCtrl брав готові збірки FFmpeg: на macOS від Martin Riedl, на Linux і Windows від BtbN. У збірці для Mac був свіжий FFmpeg 8.1.2, але не найновіший кодувальник AV1: SVT-AV1 3.1.2 замість 4.2. Його код для чипів Apple стискав гірше, ніж його ж звичайний код: той самий розмір, але виникали квадратики й вифіксити це неможливо. Автор збірки досі тримає цю версію, тож новіші готові збірки проблему не вирішують. Тепер VidCtrl збирає FFmpeg сам: FFmpeg 8.1.3 і SVT-AV1 4.2, з однаковими версіями всіх бібліотек на macOS, Windows і Linux. Перед кожним релізом кожна збірка проходить автоматичну перевірку якості: AV1 на тестовому кадрі мусить набрати понад 44 dB. Тепер усі три системи кодують однаково, до сотих, а проблемний кліп на Mac дає 41,4 dB і VMAF 96, як на Linux. Порявняв візуально на скріншотах - виглядає ідентично.
🐞 Знайшов баг у самому FFmpeg. Фільтр, що міряє XPSNR, неправильно читав 10-бітні кадри, ширина яких не кратна 32 (кожне вертикальне відео з телефона). Додав фікс в додаток й підготував патч для ffmpeg, щоб відправити в апстрім.
📏 Більше тестів й VMAF. "Для архіву" дає 42 dB+ і VMAF 95+ на тестових кліпах. На дуже зернистій 4K-зйомці буває 41,4 dB при VMAF 96, і різниці візуально не видно. Файли в 5–15 разів менші за оригінали з DSLR камери: 1,39 ГБ → 93 МБ.
🍏 Покращено "Швидко" на Mac: файли в 2,3–2,7 раза менші, при тій самій близькості до оригіналу, що й AV1.
🎨 Точніший колір в AV1: файл тепер зберігає, як камера розташувала колірні відліки (chroma_location).
▶️ Кнопка перегляду в списку відео. Додали теку, і можна одразу глянути, що це за файли.
🔔 Повідомлення про нову версію. Коли вийде оновлення, біля адреси сайту з'явиться "Нова версія …".
ЗАВАНТАЖИТИ НОВУ ВЕРСІЮ: camctrl.app/vidctrl
VidCtrl - opensource конвертор відео під Linux/Mac/Windows про який я мріяв
Робив під свої задачі й головне для мене було:
✅Не змушувати мене кожен раз приймати рішення по кодекам й їх параметрам - я вже втомився від цього й хочу все в один клік.
✅Стиснути відео з дзеркальної камери до мінімального розміру, але БЕЗ ВИДИМОЇ ВТРАТИ ЯКОСТІ. Кліп з Nikon D780 на 1.4 ГБ стискається до 92 МБ без візуальнох ватрти якості.
✅Мати підтримку черги.
✅Мати можливість просто прогнати 10 секунди відрізки для тесту, а не повне відео.
✅Конвертувати відео для редагування в безкоштовній Davinci Resolve (наприклад, на Linux не читає H.264/H.265) й Davinci Resolve Studio (не читає AAC).
✅Швидкий перегляд всіх метаданих по відео й по кодекам. Й можливість прибрати метадані, щоб не було в відео PII.
✅Просто дістати аудіодоріжку в зручному мені форматі.
✅Поміняти контейнер для відео.
✅При бажанні можливість побачити деталізовану команду ffmpeg з повним описов всіх параметрів, що будуть використані (якщо раптом вирішу все ж такі запустит щось в консолі з іншими параметрами).
Програма це враппер над ffmpeg, який йде відразу в бандлі. Найбільше часу пішло на відлагодження параметрів ffmpeg і тюнінг UX.
Що таке без втрати якости й як це поміряти?
"На око не відрізнити" не є метрикою, але є XPSNR. Це PSNR, зважений за тим, наскільки різницю видно оку. Ціль - 42 dB по яскравості, це рівень, який вважають візуально без втрат. Міряв 10-секундні шматки 4K (Nikon з рук, відео машини в русі з телефона, слайдшоу з фото). Кожен енкодер (SVT-AV1, x265, AV1 і HEVC на NVENC) кодував різні відео на п'яти значеннях CRF/CQ. Ціль була отримати від всіх шматків відео ≥ 42 dB XPSNR. Вирішує насйкладніший кліп, інші отримують просто додатковий запас по якості. Трохи прийшлось помучитимся. Наприклад, перша версія заміру занижувала оцінку до 19 dB. xpsnr зіставляє кадри за часом, а в MKV-шматку час округлено до мілісекунд, у MP4 ні. При 29.97 fps кожен другий кадр порівнювався з сусіднім.
Зараз на найскладнішому кліпі всі чотири енкодери дають 42.0–42.1 dB, але розмір виходить різний й тому дефолт це AV1 на CPU, який всіх перемагає.
Якщо AV1 на CPU це 1x по розміру, то інші енкодери будуть:
- HEVC 1.15×
- AV1 на NVIDIA 1.7×
- HEVC на NVIDIA 2×.
Ще кілька речей
✅Усе експортується в 10 bit, навіть з 8-бітних джерел: бандингу немає, а файл більший лише на кілька відсотків. Сам не думав, що це нормальний дефолт, а виявилось - саме те, що треба.
✅Робить мінімум: що вже підходить, не чіпає, а якщо треба змінити лише звук, картинка копіюється як є.
✅І найголовніше: cozy theme 🧡
На Linux усе перевірено. Windows і macOS збираються в CI, але на живих машинах я їх ще не пробував (мака в наявності немає 🙈).
Якщо у вас така сама задача, спробуйте, буду радий фідбеку.
https://camctrl.app/vidctrl
Hey team! Quick one before the weekend:
https://www.youtube.com/watch?v=3TNpOD6bov8
"Найкраща мова програмування - англійська" DHH
Зараз багатьом підгорає від останньої доповіді DHH (автор Ruby on Rails й не тільки) на Rails World 2026. Основний висновок - програмування закінчилось в тому вигляді, як ми його знали. Це як створювати портрети до появи фотоапаратів й після. Код не має сенсу дивитися, абстракції не мають сенсу, потрібно переосмислення computer science. Доповідь варто подивитися однозначно. Як вам?
ДОПОВІДЬ: https://youtu.be/vDjW_dRyKXY?si=Gwl82-NqfyK0SjQz
Втомилися чекати на дашборди? Не знаєте, як тестувати AI-агентів? Або цікавитесь, як працює великий GovTech? 🤔
На Fwdays Tech Summit ми зібрали доповіді, які відповідають на найбільш актуальні виклики сучасної розробки та менеджменту.
Що в програмі:
🔹 AI як новий інтерфейс до бізнесу: Олександр Нагорняк (Engineering Manager in Data, mono) пояснить, як зробити дані доступними через діалог і навчити AI-агентів самостійно шукати інсайти.
🔹 Тестування AI-агентів на практиці: Олександр Краковецький (СЕО DevRain) розкладе по поличках Evals. Від визначення метрик якості до вбудовування автоматичних перевірок у ваш процес розробки.
🔹 За лаштунками GovTech: Олег Гладченко (Engineering Lead and Architect, Армія+) поділиться унікальним досвідом створення найбільшого державного застосунку, розбере особливості процесів та підводні камені такої роботи.
Приходьте за реальними кейсами, які можна застосувати у своїх командах!
🌐 Через безпекову ситуацію конференція відбудеться виключно в онлайн-форматі. Формат змінюється, але якість контенту — ні!
📍 Зустрічаємось онлайн 3 жовтня!
🔗 Забирайте квитки: https://bit.ly/4vGXTTs
Понеділок й нові челенджі вже доступні 🏁🏎️
👉 Поміняв систему розподілу призів, щоб не було такого, що коли відірвався перший результат, то ніхто вже не може отримати срібло чи бронзу. Зараз рахується наступним чином: 1 місце + 10% по часу отримують золото (як було), наступний результат + 12% по часу від нього отримують срібло, наступний результат +20% по часу від нього отримують бронзу.
🏆🏆🏆 Підключайтесь й забирайте трофеї й проходьте нові челенджі (вони збираютсья в паспорті пілота)
Підключитися до гри: ssh type.tvvracing.com
🏆🏁🏎️ Забирайте свої трофеї за минулий тиждень. Й вже доступні челенджі на цей тиждень. Також можна подивитися історію минулих заїздів й дискваліфікації 🙃
Repost from Шось про айтішку
Мені тут сказали що Центр інновацій при МО розширює команду бойової системи DELTA.
Вони шукають розробників, аналітиків, фахівців з безпеки, інженерів та операторів технічної підтримки.
Працевлаштування передбачає службу за контрактом в Києві. Переведення з інших частин можливе за погодженням командира.
Центр працює за стандартами цивільного технологічного середовища: щоденні стендапи, one-to-one, квартальні демо, зрозумілі процеси розробки.
Повний перелік вакансій тут https://jobs.dou.ua/companies/cidtd/vacancies/
Згадав доречі що в 24му році на конфі fwdays Остап Червак розказував про фронтенд розробку в Дельті https://www.youtube.com/watch?v=p9mTlFiVEWI
🏎️ ssh type.tvvracing.com 🏁
Зробив гонки на клавіатурі в терміналі для гіків 🤓
Основна ідея була, щоб це працювало через ssh. Також це був такий собі технічний експеремент, чи можна зробити нормально робочий TUI через SSH. Тобто можна собі під час рабочого дня швидко підключитися я глянути, як працює.
Маємо:
🏁 Секторні вогні
🏁 Прогрес-бар
🏁 Лідерборди
🏁 Заїзди проти інших пілотів (Ghosts 👻)
🏁 Гараж з трофеями
🏁 Статистка в кінці заїзду.
Це Time-attack гра, де ти набираєш реальний код на час. Цотижня три челенджі, кожен з яких є повноцінною, ідіоматичною функцією: класичний алгоритм або патерн. Ти змагаєшся не з середнім WPM, а з конкретним записаним заїздом конкретного пілота. Система сама підбирає суперника. Дельта оновлюється наживо після кожного рядка: зелена - ти попереду, червона - відстаєш. Всі результати потрапляють в лідерборд.
Хто зможе побити мій рекорд цього тижня? (Track 1 за 35 секунд пройшов)
ГРАТИ: ssh type.tvvracing.com
🏁 Які челенджі зробити на наступний тиждень?
🏁 Які функції додати?
🏁 Чи все зрозуміло?
Repost from Шось про айтішку
Нема часу слідкувати за усіма новинами в мілтеку і не знайшов схожого ресурсу, тому зробив щотижневий дайджест новин по мілтеку з ухилом в технічні топіки.
В першу чергу робив для себе, як агрегатор ресурсів з яких беру інфу, але думаю багатьом теж буде корисно. ШІ збирає інформацію з сайтів, YouTube та телеграму, а я руками фільтрую те що мені цікаво, тому на виході буде якісний контент.
Типовий випуск містить:
• трохи загальниї новин про війну
• огляди заліза типу фпв камер, зв'язку, одноплатників, gnss модулів, сенсорів і тп
• апдейти по автопілотам (ardupilot, inav, betaflight і тп)
• розробки в сфері комп'ютерного зору і навігації
• підбірка цікавих проєктів на GitHub
• підбірка цивільних та військових вакансій
Підписуйтесь https://defdigest.com.ua/
Також є окремий ТГ канал для тих хто не користується поштою https://t.me/defdigest
Якщо читаєте/дивитесь схожі по тематиці ресурси, кидайте тут в коментах, буду додавати в дайджест
Сьогодні в 18:00 роблю стрім на каналі по ретрогеймінгу 🤓
Аналогий ламповий стрім - https://www.youtube.com/live/PlUvQMDZxXM
Рекомендую інтерв'ю про майндсет архітектора
ВІДЕО: https://youtu.be/F8X9_Dp3ZUk?si=FUnjAdN8kYbH3sXG
Купив собі квиток на DOU Day Picnic (5 вересня 2026)
✅Квиток це донат. Зараз 1000грн, після 20 серння 1500 грн.
✅Обіцяють: велика сцена з топовими спікерами, стендап Васі Байдака, IT-Еліас від Ветеранів космічних військ, концерт, фудкорт, зони для чілу, майстерки, барахолка й десятки способів провести день без напрягів, познайомитись з людьми з індустрії та підтримати армію.
✅Для дійтей буде окрема програма.
✅DOU Day Picnic - pet friendly, тобто можна з песиками теж.
Купити квиток: https://dou.ua/goto/picnic.2026
Вирішив зробити стрім на моєму каналі по ретрогеймінгу - сьогодні в 18:00. Це такий формат, щоб просто розслабитися в п'ятницю. Заходьте https://www.youtube.com/live/TjD2n-KvxZg?si=iT3YzJR3jl2EiJOF
