Bite the Byte – Telegram
Bite the Byte
3.08K subscribers
24 photos
2 videos
276 links
Соловйов здорової людини!

🌐solovyov.net

Архів каналу: solovyov.net/channel

Без реклами
Download Telegram
Давайте трохи за результати Black Friday у Касті розповім. Значить, перший раз, коли ми пережили її у 2016 році, в нас було 2.5k RPS (запитів у секунду) в API, десь 80 тисяч товарів і мінімум серверного рендерінгу.

Цього року близько мільйона товарів, 130 відрендерених сторінок в секунду (більша частина клієнтів — це мобільні аппки, які тільки апі торкаються) і близько 6k RPS.⚡️ Це насправді прикольний результат, враховуючи, що з заліза, де це все живе, в нас реально тільки сервер Постгресу новий (минулий був 15-го року за 10к баксів, а цей 20-го року теж за 10к баксів).

Єдине, що пішло трохи не по плану, так це ElasticSearch — хто б сумнівався, інтроспекції у те, як для нього розраховувати навантаження, дуже мало. В нього є "explain", але його результат ну дуже важко інтерпретувати.

Я дивився у співвідношення LA нод ES і навантаження на сервіс в цілому, і воно виглядало майже пов'язаним лінійно — типу подвоєння RPS подвоює навантаження на ES. Але зранку минулої п'ятниці (19 листопаду, на початку розпродажу) замість трохи підрости, LA злетів у небеса й еластіки почали гальмувати. Це означає що всі списки товарів туплять і людям важко купляти — у сенсі вони просто пішли собі займатися іншими справами. :(

Ми за годину наколупали з 5 додаткових нод еластіку, а за наступний тиждень взяли в оренду ще заліза, щоб побудувати додатковий кластер еластіку і раунд-робіном на них розкинули навантаження. Тож п'ятниця 26-го була нудною. Чого, власне, ми й прагнули. ☺️
👍1
Є така штука, як Cloudflare Workers. Це спосіб задеплоїти джаваскрипт на серверах в клаудфлерівські точках присутності. Ну типу AWS Lambda, тільки для тих, хто хоче зробити небагато і швидко. Точно кружляють навколо традиційних авсів і хочуть взяти їх в оточення. :) Але я не про те.

Вони там роблять всілякі хитрощі, типу запуску коду у сендбоксах всередині процесів, що вже працюють, і там напевно всяке інше. Але у результаті є штука, яку легко задеплоїти, яку чаржать за запуск (тому що час виконання обмежений 10 мс) і яка дуже швидко стартує. На відміну від інших "serverless" платформ типу амазонівських лямбд, де запускається цілий окремий процес.

А я хочу таке саме, але для кложі. :) Так, звісно є GraalVM і можна скомпілювати все в бінарь, який буде дуже швидко запускатися і всякі амазон лямбди та й інші гугл клауд фанкшнс тоді будуть з цим нормально працювати, але:

• Компіляція дуже довга, paste.in.ua, який ну дуже простий сервіс — вміє хттп, жсон та маркдаун, а замість БД там файли, бо драйвер к sqlite я не зміг зібрати — компілюється він кілька хвилин, на стандартному варіанті Github Actions — 8 хвилин!
• Компіляція, на жаль, змінює те, що відбувається. Грааль не може зкомпілювати все і приходиться трохи підганяти під нього поведінку. Є загалом прийнятні штуки: відсутність рефлексії, відсутність дій на верхньому рівні неймспейсів (бо вони при компіляції виконуються), але є й речі, які я не можу сформулювати. Просто реально перший раз зібрати все — це купа спроб з пошуками помилок у гуглі й експериментів. Той же самий драйвер бд я так і не зміг зібрати.
• Спало на думку, що до скомпільованого бінарника не приєднатися реплом, але у такому середовищі, як serverless cloud function worker (чи можна ще слово сюди додати? Чи я вже всі хайпові терміни заюзав? :)) — воно не дуже має сенс.

Гаразд! Врешті-решт, жвм стільки років робили та й що, нічого не видумали? Наче SubstrateVM, яка у граалі йде, краще вміє швидко стартувати, але чи треба це? Так важко нагуглити, чесно, відчуття, що я не знаю потрібних слів.

Типу потрібно щось таке, що вміє запускати код у сендбоксі, і при цьому тримати залежності у пам‘яті, щоб запуск того коду був швидким. Так?
Вранці звернув увагу на закінчення книжечки про Колобка і досі думаю про нього. Я розумію, що видавець намагався скоротити казочку, щоб вона влізла у маленький формат, але ж яка жиза! Лисичка — як правильний злодій у фільмі, замість бла-бла-бла просто зохавала малого та й все.

Вважаю, що тепер сенс не у тому, що життя повне небезпеки та не треба збігати від мами й тата. Сенс в тому, що коли ти щось хочеш зробити — то роби це.

Сильна така тепер книга. 😁
Зараз показувати Дію з сертифікатом вакцінації треба наліво і направо. А вона така вся ще відкривається годинами, а ти у масці й або топчи свій код, або знімай маску — бо айфони ж так і не зробили тач-айді в екрані, і взагалі, експірієнс не з кращих.

Чи це життя взагалі?! Якісь люди з Чехії подумали так само і зробили сайт, якій вміє з QR-коду сгенерувати файлик для Wallet'у. Скануєш QR-код сертифікату, або завантажуєш його скриншот, і отримуєш pkpass. Відкрив — і тепер за подвійним натисканням на бокову кнопку ховається той сертифікат.

Не треба розблокувати айфон, шукати потім дію, чекати поки її швидкісні сервери дадуть відповідь, чекати розблокування (чи навпаки?)... Все локально сидить в айфоні.

Воно там всередині каже, що буде працювати аж до моменту закінчення придатності. Доволі логічно, але дати закічення придатності я щось не знайшов. Ну хз, подивимося. :)
Коли конспірологи десь раптово вискакують в офлайні (тому що в онлайні я їх просто ігнорую), головною відмазкою від їх домагань працює історія про «якби ти колись намагався щось організувати, не думав би про реальність таких масштабних секретних змов». :)

Але трафік на дорозі... це хоч і не аргумент у протилежний бік, але це така фантастична штука, насправді. Це те, що наочно демонструє, що більша частина людей мають добрі наміри та готові співпрацювати. Небезпека неіллюзорна, здоровезні металеві дурепи, вбити когось — ізі-пізі!

Іноді, буває, познайомишся з людиною, і вона наче не дуже приємна і взагалі є питання щодо адекватності — але ж якось їздить по дорогах і не лупиться кожен день. І навіть коли хтось дурнею мається — на це звертаєш увагу, бо це не типово, більшість людей нормально їздить.

Значит, попри купу самоіронії, порівняння з усілякими мурахами та бджілками, і таке інше, людство — доволі круте. :)
Пару тижнів тому Марцин написав пост, про те, як він переписав asciinema-player з ClojureScript на Rust + WASM. В результаті в нього бандл став у 4 рази менший і швидкість виросла у 50 разів.

Це дуже крутий результат! Але дуже цікаво чому, і чи не має тут історії про те, що не треба використовувати CLJS взагалі? 😁

Давайте розберемось. По-перше, одним з головних компонентів є емулятор терміналу, який він заново написав на расті — vt-rs. Це біля 2 тисяч строк коду відносно тисячі строк у vt-clj, але! Це ж взагалі найкращий юзкейс для мов з мутабельностю даних.

А у vt-clj відбувається неподобство, зі здоровезних масивів даних (ну як здоровезних, width*height терміналу, ггг) генерувалися нові такі самі — думаю, що GC браузерів просто захлинався від такого нахабства. Тут навіть structural sharing занадто багато не допоможе. У цьому місці йому б треба було взяти ArrayBuffer, і перестати мучити худобу. :)) Але! Треба сказати, що я приємно здивований кількістю кода на расті, і пов'язую це з тим, що йому вже не прийшлося експериментувати з імплементацією, як у кложі.

Інша велика зміна, яку він зробив — проміняв ReactJS на SolidJS. Каже, що набагато швидше, ніж реакт. Може, я не дуже в темі. Але що він робив до цього - використовував Reagent. Це дуже ергономічний і дуже неефективний врапер навколо реакту. Найбільша його проблема — він не компілює хікап ([:div "smth"]) у виклики реакту, і робить це у рантаймі.

Мені чомусь здається, що виправлення цих двох вже провело б його більшою частиною дороги у 50х. Авжеж, різниця була б меншою, але й часу пішло б менше. :) Але пацан вже забодався воювати, плюс експеримент вийшов вдалий, а feature surface не дуже великий — тому можна перероблювати на швидшу мову з більшим ефортом.

Взагалі, виглядає, як найкращий кейс зі "зробив експеримент — працює, але інструменти не підходять — переробив на щось більш вдале". Нажаль, він у пості нічого не каже за те, чи був сенс взагалі робити спочатку на CLJS, було б цікаво його думки з того приводу почути — особливо через якийсь час, коли вже наловить багів у тому, що є зараз. :)
Clojure — паразит

Позаминулої суботи ми записували новий випуск подкасту (spoiler alert!) з Ромою Лютіковим і прийшли до несподіваного визначення: Clojure — це паразит. Причому паразит у квадраті! От дивіться.

По-перше, в кложі немає своє платформи, так? Вона працює або на JVM, або на .NET, або на JS, або он там на підході ClojureDart, щоби Flutter можна було нормальною мовою писати. Це ж одна з основних ціннісних пропозицій кложі!

Але є й інший шар: кложа паразитує на інших мовах як на ресурсі для постачання розробників. У сенсі якщо кложа виявиться першою мовою, ти будеш цінити її плюси точно так само, як новачки-програмісти цінують плюси мови, на якій пишуть — треба сприймати на віру, бо у власному досвіді порівняти поки що ні з чим. Але не випадково вік програмістів на кложі значно вище середньго — майже ні в кого вона не є першою мовою. Люди приходять за класним інструментом для розв'язання задач вже після того, як намаються з іншими.

Тому менше новачків, тому вище середній рівень розробників і тому краще середній рівень проєктів (скажімо, опенсорсних бібліотек).
Знаєте, чому я вирішив робити подкаст з fwdays, а не сам? Тому що з жовтня по зараз я записав ровно 0 відео сам, але ось вже готовий другий випуск подкасту RTFJ. :) Спасибі вдалій мотивації від Даші, і цікавій розмові з Ромою Лютіковим.

Рома зараз відповідає за перформанс у Pitch (дуже кльовий інструмент, щоб робити презентації, до речі), тож натурально ми порозмовляли і про перформанс, і про кложу (бо Пітч написаний на кложі), і про всяке інше — думаю що немає сенсу повторяти все, що в описі написано.

Тож дивіться, відправляйте лінки друзям, і дуже чекаю фідбеку, як вам новий випуск. :)

P.S. До речі, він є і на подкаст-платформах:
SoundCloud 👉 bit.ly/3yvKmCo
Apple Podcasts 👉 apple.co/3EZZTwQ
Google Podcasts 👉 bit.ly/3F8lfs0
Поки всі завзято обговорюють log4j, тут виліз новий експлоіт для айфону, набагато цікавіший: якщо трабли з лог4ж це звичайний відстій, таке постійно з компами трапляється, то цей айфонний просто краса. :) Якщо ви ще не в темі, то читайте!

Значить історія: приходить повідомлення iMessage, від якогось номера, просто картиночка. Ти відкриваєш подивитися, що там, а воно... iMessage, щоб показати картинку, викликає метод copyGifFromPath:toDestinationPath:.

Воно зветься «копі», а під капотом рендерить гіфку у пункті призначення. Тобто декодує початковий файл і створює нову гіфку замість просто копіювання байтів.

І прочитати воно може не тільки гіфки, а купу різних форматів. І один з них — це пдф. Пдф прикольний тим, що взагалі пишеться на майже тьюрінг-повній мові, але за багато років там наставили достатньо вже обмежень. Але! Код, який використовується у iOS - це код Xpdf, написанний у 80-х роках, і виглядає так, що там багато цікавого. :)

Наприклад, є там всередині реалізація формату картинок під назвою JBIG2. Це такий спеціальний формат, який дуже добре стискає чорно-білі картинки, у головному зі сканерів і ксероксів — раніше канали і сховища були скромніші і треба було економити. І ефективний він через те, що блоки зображення кодуються хитрим чином з використанням логічних операцій - and, or, xor, nor.

Потім чік-чік, невеличке переповнення буферу, замість крешу коррумпування початкової картинки і раптово ці операції можна виконувати над (майже) будь-якою коміркою пам‘яті.

І далі найкраще. За допомогою 70 000 операцій чуваки зробили віртуальний комп‘ютер, який вміє ходити по пам‘яті телефону і читати все, що завгодно. Ну як ото люди у майнкрафті роблять, тільки у айфоні. :)

Фантастично елегантний хак, просто капець. Не те шо та дитяча підстановка у лог для же. :)

Епл це пофіксила ще у вересні, але NSO явно юзали його на початку року. NSO - це автори експлоіту, ізраїльська контора, яка допомагає урядам слідкувати за громадянами. Вікіпедія каже, що вони відіграли якусь роль у вбивстві Джамаля Хашогджі. :( Елегантно, але все інше як завжди...
1
Сьогодні чи не найкращі умови в Буковелі, які я бачив. Мінус 2, вночі насніжило, людей зранку взагалі немає — кайф просто. Прийшли на відкриття підйомника і проїхалися по свіжому снігу, ммм...

Взагалі шось в ресурсі, зійшлися умови з настроєм, і лижі взяли у прокаті непогані — бо власні черевики то важливо, а лижі... ліньки всюди таскати. :) Катаємося що дурні, 60 км нагасали за день, хаха.

Буковель може не найкращий лижний курорт у світі, але він як зручні капці, особливо коли люди ще не наїхали. :)
Є така річ, як веб-аналітика: зберігаємо інфу про те, що робить користувач, у БД, а потім можемо дивитись на те і щось собі вирішувати. БД — це Google Analytics, чи Firebase, чи, у нашому випадку, власне сховище.

Скажімо, користувач щось додав у кошик? Відправимо подію «кошик». Перейшов на оформлення - «чекаут», зробив замовлення - «ордер».

І з цим «ордером» є цікавий момент. Річ у тому, що реально завершення замовлення відбувається у різні моментуиу залежності від того, який спосіб оплати ти обрав: чи то кеш, чи картка, чи кредит. Тож коли ми робили свою аналітику, я чомусь психанув і зробив так, що ця подія відправляється не з клієнтів, як зазвичай, а з бекенду. Для того у замовленні зберігаються всі потрібні додаткові дані, і при настанні умови «отут ми вважаємо замовлення живим», відправляється ця подія.

Я встиг пару разів пожалкувати, що так зробив, бо воно дуже неочікувано для всіх, хто перший раз там колупається... але ж мала і нагорода колись прийти?!

Прилітає баг від аналітиків: близько 20% замовлення карткою з аппок (айос/андроїд) не попадають в аналітику Firebase. У нашій аналітиці тим часом все файно... 🤔 Трохи деталей: в наших апках є кілька різних аналітик (бо в них різні використання і іноді дуже важко це змінити), і всі вони отримують події виключно з апки.

А подія у файрбейз коли відправляється? Ну вірно, коли користувач повертається з оплати карткою, яка у вебв‘ю. Тобто ідеш платити, вносиш дані картки, якийсь може 3д-сек’юр, і ось тоді вже... ач тільки KastaPay показує своє «дякую за оплату», і користувач, вдоволений вдалою справою, закриває апку і йде по своїм справам. Ніколи не потрапляючи в апці на сторінку, де відправиться та подія. 😬

Цю тему вже виправляємо, але приємно, що наша власна аналітика нічого не губила. 👌
Знаєте, що таке Follow Focus? Це така система наведення фокусу для знімання відео, коли оператор знімає кадр, а фокус йому наводить асистент, Focus Puller.

Автофокус всі серйозні фільмування не використовують — бо якщо на фотках виходить результат роботи автофокуса, на відео буде процес його роботи, і це не найприємніша для ока людини ситуація. Буде ламати четверту стіну. :)

Але тут DJI (так, той, що коптери робить) показав нову, дуже інноваційну камеру - Ronin 4D. Це повноцінна камера зі змінними об‘єктивами, вбудована у стабілізатор (gimbal), з окремим дісплеєм.

Тєма: ти тримаєшся за дві ручки, а під правим великим пальцем колесо для фокуса. А додатково зверху на камері - LIDAR. І на моніторі зверху на картинці (вочевидь двомірній) показується карта глибин того, чого ти знімаєш.

От подивіться тут трохи, це просто фантастика. Там є й інші цікаві рішення (як от змінний байонет, безпровідний монітор), але це — найцікавіше.

Воно все трошки недешево коштує, понад 7 тисяч, але за хайтек треба платити. Файний девайс. :)
Є такий чувак, Ден Луу, у твіттері висловлює цікаві думки. Він і пости пише цікаві, але через його графоманство то майже книжки, важкувато це читати. Він і у твіттері графоманить, але не про те мова. :)

Так ось, він зачепив тему, чому щось зробили колись, а не раніше, і як один з прикладів згадав про системи контролю версій, у такій прогресії: RCS -> CVS -> SVN -> git. Типу, чому концепції гіта, який вочевидь багато чого робить краще, ніж SVN, не видумали раніше? І ось тут мені є що сказати, бо раніше я був version control junkie. :) З роками попустило (не біжу у pijul контріб'ютити), але у гарячу епоху кінця 00-х я був контріб'ютором у Mercurial.

Значить відповідь на запитання проста — нюанси губляться у роках. git ні в якому разі не продовження svn, це тупо інша гілка розвитку. Гіт — це продовження BitKeeper'a, яким користувалися розробники ядра лінукса перед тим. Не тільки, ще був такий проєкт, як monotone, який доволі багато інновацій зробив: згадується, скажімо, використання хешу вмісту комміту та його батьків як ідентифікатора комміту. Тобто цій властивості ми завдячуємо саме monotone, а не генію Лінуса. Він про монотон відгукувався не дуже — бо воно екстремально повільне було, але доволі багато властивостей саме звідти.

Ще була така штука, як Darcs, на Хаскелі, але це теж паралельна гілка розвитку, там доволі цікава теорія латок (the theory of patches). Тобто замість використання DAG (Directed Acyclic Graph), як було у monotone, git та Mercurial, вони юзали латки, які збиралися докупи спеціальним алгоритмом. Який під час деяких мержів мав експоненційну складність, тож збирання репозіторю докупи іноді займало вічність... Але в нього є послідовник - Pijul, здаля цікаво виглядає.

Та й вся та історія про біткіпер, гіт та меркуріал доволі цікава, але, мабуть, іншим разом. А мораль така: коли ти не в деталях, а здаля, то здається, що інновації відбуваються ривками. Але усюди, де я якось пристально наблюдав, вони завжди відбувалися дуже ітеративно. Амінь.
👍9🔥6
E2EE у чатах

У інтернетах знову срачі за те, в кого шифрування краще — у воцапа, телеграма, сигнала тощо. З того можна зробити кілька висновків.

1️⃣ Найочевидніший — що здебільшого реальна захищеність каналу нікого не турбує. Ну то не сюрприз. :)

2️⃣ В Телеграма найкращий маркетинг. Вони пишуть пости-відповіді на звинувачення від Моксі (засновника Сигналу), які люди шлють один одному як гарний приклад того, що Телеграм молодець. А там жоден пункт звинувачень не заперечений, розмова про інші речі. Файний месседжинг. 😤

3️⃣ Найцікавіше — телеграм не захищений з точки зору zero-trust тусовки, усіх цих веб3 та й всього іншого. Але! Цікаво Мачай відмічає — чому протести у Гонконзі використовували телеграм? Тому що у ситуації, коли конкретно тобою починає цікавитися держава, месседжер — то вже і близько не проблема. Воно тупо може подивитися, хто з людей був на протесті за даними з телефонних сот.

А ось юзабіліті, відсутність шарінгу усіх деталей (номера телефону) по дефолту всім у чаті (на відміну, до речі, від «сек‘юрного» Сигналу), можливість створювати справді гігантські групові чати (тобто паблішінг платформа) - це все суперцікаво з точки зору всього двіжу.

Не те щоб я нахвалював Телеграм, все ж таки в нього є для нас величезна проблема: це російське коріння. Навіть якщо Павло чесний і хоче відкараскатись від тих людожерів, не можна не враховувати, що «органи» як мінімум з ним знайомі. А це погано конкретно для нас.

Висновків не буде, бо в мене їх нема. 🤣 Усіх з Новим Роком! 🎉 Бажаю, щоб висновки приходили простіше, а інсайти — частіше! :)
👍16🎉13👎1
Останнім часом мені дуже подобається дратувати людей нагадуванням, що у православних Різдво відбувається не 7 січня, а 25 грудня. Всі християни святкують в один день - 25 грудня. Але чому в нас є вихідний 7 січня?

Бо Російська імперія свого часу не прийняла «єрєсь» від римського папи Григорія XIII. Ну типу в нас тут свій патріарх є і він все порішає. Я не знаю, хто там кому лікар — чи то патріарх у Стамбулі не схотів згоджуватись, чи московити — схоже що перші, бо там є ще й новоюліанський календар, якась хитра дурня.

А потім, у 1918, УНР перейшла на «новий стиль» - з юліанського на григоріанський календар. А церква — нікуди не перейшла! Напевно, московський патріарх підтримував царя, тож для них це було не на часі.

Повертаючись на початок — а чому ж дратувати? Бо дивно, але з моїх знайомих ніхто не замислюється, а чому ж Різдво - 7 січня? А ось так. Воно таки 25 грудня.

Вже Саудівська Аравія перейшла! У 2016 році, теж прогресивні дуже. 😁 А що там ПЦУ втикає?
👍24🔥3😁2
Висить у табах сафарі на айфоні в мене стаття під назвою “The internet made defensive writers of us all”. Все хотів про неї написати, але якось не вдавалося слова до купи зібрати.

А тут довелося покататися по місту і послухав епізод «щіт ай ноу» про історії з Інтернету. Історії непогані зібрали, я в принципі доволі багато реддіт читаю, але ці якось не зачепив. Так ось, у подкасті Діма висловив думку про те, що Інтернет — мертвий. Ось наочно з людиною ти спілкуєшся — і це людина, а її аватар в інтернеті — то видумана, пуста оболонка, і вона мертва, це не справжня людина.

І якось дві ці речі у мене в голові зійшлися, не можу їх полишити. Я, наприклад, намагаюся (чи не ускладнюю собі життя, дивлячись як на це подивитися) аватар не генерувати та бути онлайн таким самим, яким я є в житті. У сенсі не удавати, що я коуч зі знання як все робити у тих випадках, коли я не впевнений у повторюваності результату, наприклад.

Але це небезпечно! Варто було в інтерв‘ю для ДОУ згадати, що мене дратують в айті новобранці, яких не цікавить нічого, окрім грошей, сходу знайшлася купа народу, яка зробила далекоглядні висновки. І що у Касті нікому гроші не платять, і що окрім овертаймів в нас тільки овертайми, і дідовщина, і взагалі в дупу довбимося замість програмування.

Треба чесно сказати, що вийшло там сформулювати не дуже добре, але скажи отак у вічі — і людина спробує зрозуміти, яку емоцію ти хочеш донести. Скажи це в інтернеті — і на тебе нападають скажені «в інтернетах хтось неправий».

Цей стиль, з розшаркуваннями у різні боки та намаганням перекрити всі можливі вектори атаки — неприємно читати. Написано для всіх і ні для кого. Тож я відмовляюся грати у цю гру, палає дупа — зменшуй у ній тиск. :) У сенсі, як писали у книжках, автор розраховує на здоровий глузд і буденне милосердя читачів.

Гарних усім свят! 🎉
👍27🎉115
colors, faker et all

Давайте я теж висловлюсь про цю історію. Короткий зміст драми: якийсь пацан написав дві бібліотеки, виклав їх в опенсорс (під ліцензією MIT), вони стали популярні (28 млн звантажень на тиждень), тож він вирішив, що дуже погано, що великі компанії йому не платять гроші, і поламав ті бібліотеки так, щоб всі пішли на його сторіночку і почитали, що йому потрібні гроші.

А на сторінці faker.js ще додатково написав "що відбулося з Аароном Шварцем".

Зовсім випадково в мене є кілька думок з того приводу!

1️⃣ Те, що написав apenwarr: ти подарував свій код цьому світу. Які взагалі претензії? Ніхто тебе конкретно не просив нічого робити. Ти зробив, воно тепер популярне. Молодець, використай це для розвинення власного бренду.

2️⃣ Те, що написав Армін: такі історії відвертати увагу від справді важливих речей. Краще б компанії давали гроші авторам curl'у, openssl чи libxml2, а не авторам colors.js та faker.js. Плюс він кльово підмітив: Github Sponsors, який наче намагається вирішити проблему з компенсацією зусиль авторів, дивиться не там, де треба (як от в історії з openssl), а там, де є світло (як в анекдоті з пошуком ключей).

3️⃣ У npm є дві величезні проблеми. Перша: замість конкретної версії дуже легко вписати "щось типу версії 1.2.0", і воно автоматом при звантаженні само вирішить. І в результаті те, що було при розробці, при тестуванні та в продакшені — це можуть бути різні набори коду. Так, можно вказати конкретну версію, але так роблять тільки дуже свідомі люди. Їх пара десятків у всьому білому світі, бо більш свідомі просто не пишуть на ноді.

Друга проблема: якимось чином простота публікації пакетів призвела до лефтпадів та isEven. У світі пайтона (де з залежностямі можливо все ще гірше) чомусь такого не відбулося, а от у світі ноди на npm така кількість бруду, що це просто звіздєц. І colors/faker це не совсім лефтпад, але це точно не інфраструктура, яка вкрай потрібна.

4️⃣ Якого біса приплітати Аарона до цього? Не пам'ятаю, щоб він закликав опенсорсних авторів нападати на капіталістичних свиней заради копієчки. Леніна треба було згадувати.
👍17🔥2
Колись у сиву давнину (навесні 2017, щоб бути точним) написав нам OWOX з цікавою пропозицією: додайте наш скрипт на сайт і ми перекинемо всі ваші події у веб-аналітиці в BigQuery.

BigQuery - це такий Data Warehouse від Гугла, який вміє ворочати ну дуже великими обсягами даних. Тобто суть пропозиції у тому, що ми зможемо аналізувати те, що відбувається, не так, як задумано у Google Analytics, а як завгодно. Ну дуже цікаво, погодьтеся? Єдина річ — що вони за те хотіли доволі багато грошей. Не пам'ятаю суму, але це точно навіть не тисячі доларів на рік.

Скажу вам, що жаба для мене як мотиватор схоже непогано працює. У сенсі ну скільки там тієї роботи — записати дані у BigQuery? Зробив на фронті, щоб події GA копіювалися нам в спеціальний апі, той скидає їх у кафку, а потім з кафки перекидається у BigQuery. Все супер, і потім ми з того виростили свою аналітику з ClickHouse'ом — до речі, по тій самій причині, BigQuery недешевий, коли даси йому складне запитання. :))

Але був один нюанс. Для конекту до бігквері я використав гугловську джавну лібу, і щоб усе запрацювало, витратив довбаний тиждень. Бо апі в неї — гівно, помилки — гівно, підхід до авторизації — гівно, і взагалі. А як вишенька на торті — при оновленні вона ламалася. Десь всередині, то NPE якийсь, то ще щось. Не статична типізація, а хрін зна що.

Ну типу інжиніринг від Гугла, що ви взагалі очікуєте. 🤕

Так і була в нас кілька років забита у залежностях стара версія, від лютого 19-го року. А вчора настрій був, сів, вичистив з коду останнього користувача і прибив лібу з залежностей. Кайф. ☺️

А по мотивах тих страждань я написав власну лібу, яка просто використовує HTTP і тому не ламається. Не дивлячісь на назву, ми її для бігквері вже не юзаємо, а як інтерфейс до гугла - аж бігом. :)
👍12
Думав, що недочекаюсь. :) Ми випустили третій випуск RTFJ, на цей раз — з Єгором Назаркіним. Дуже прикольна розмова вийшла! Єгор зараз Engineering Manager у HealthJoy, в минулому займався організацією пайконів, та й загалом дуже відомий у Python-ком'юніті.

В нас вочевидь трохи розбігаються погляди на деякі технології, хехе, але ми норм пообговорювали і пайтон, і бази даних зачепили, і проблеми зв'язку у Сибіру. :))

Кароч велкам подивитися і не забувайте ділитися з оточенням. :)

На подкаст-платформах (або шукайте Fwdays Tech Talks у вашій апці):
SoundCloud 👉 https://bit.ly/3H4iysi
Apple Podcasts 👉 https://apple.co/35fzcag
Google Podcasts 👉 https://bit.ly/3qZyeaI
🔥15👍7
Омікрон

Я попередні хвилі корони оминув, а цю не вдалося. :) Дві модерни не врятували повністю, хехе. Вночі на минулий понеділок температура злетіла за 38, аж трясло від холоду — добре, що парацетамол допомагав і збивав температуру. В середу накрило дружину, а в четвер мені стало ставати краще, навіть поспав.

Це насправді найцікавіший (якщо можна так сказати, ехехе) ефект. Сил діяти бракує, здавалося б — спи, поки діти дозволяють, але ні, о 3 ночі прокидаєшся і все, нічого не допомагає. А до ранку приходив у стан повної розрухи, тупо жесть. Добре хоч вдень додатково з годину вдавалося поспати.

Ну і всі супутні срані — нежить, кашель, головний біль, короч набір не з приємних. З іншого боку, судячи з розповідей про попередні хвилі, то омікрон більш зорієнтований на розповсюдження, ніж на завдання важкого удару, і проходить трохи легше. :)

А от наслідки нервують. :/ Кашель досі не пройшов, бігати за дітьми зараз важче, а працювати головою це взагалі жесть. У вівторок трохи перелякався, бо після пари зустрічей відкрив код щось роздуплити й голова кругом пішла. 😱

Але вчора вже краще було, тож, здається, потроху відновлююся. Та й минулого тижня взагалі думати важко було зовсім, хаха. Згадується пост на quora, як чувак тупим став (не можу щось лінк знайти).

Рейтинг: 3/5, свідомість не губив, до лікарні не потрапляв, але рекомендувати не можу. 😁
😱20👍5
Завдяки Борису Джонсону я дізнався, що назва Foursquare - це не аллюзія до «на всі чотири сторони», чи радше не тільки аллюзія, а ще й окреме слово, яке означає «міцно, із завзяттям і переконанням, безкомпромісно». Типу будівля може stand foursquare, скажімо. Прикол реально. :)

Це нагадує, що вигадувати назви, не бувши нейтів спікером, дуже важко. Я колись написав для пайтона бібліотеку парсингу опцій — бо наявні поводилися набагато гірше, ніж те, що було в меркуріалі. Там можна було вказувати тільки кілька перших букв команди/опції, кльове розрулювання конфліктів, компактний запис у коді — а наявні опшнпарсери та гетоптс та інші були не ергономічні та рагульні.

Написав і назвав finaloption - з натяком на те, що це останній парсер опцій, після нього вже нічого не треба робити. Але це ще й сталий вираз, який проміж іншим означає останнє бажання перед стратою. Не можу нагуглити це, до речі, але мені кілька людей сказало про те, тож я перейменував лібу на opster.

Ну як у приказці, іменування — одна з двох найважчих справ у програмуванні.
👍20😁8🔥3