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

🌐solovyov.net

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

Без реклами
Download Telegram
За минулий тиждень написав аппку-приклад для твінспарку і навіть сюжет для відео — вирішив зробити начисту замість стріму. Не певен, що це було найкращім рішенням, бо шось гемору так багато, шо капець. ಠ_ಠ

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

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

Тож в доволі короткий час я записав все що треба. Ура, 80% праці зроблено! Лишилося тільки змонтувати і почистити звук, тобто ще 80% роботи.

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

Я навіть сумнівався, чи він працює, бо до цього дня від нього чув може два чи три удари… а зара прямо істерика.

Лежу без сну вже третю годину і думаю, чи записатися у екстремісти, чи у ескапісти?..
Розміри

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

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

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

І тепер ми маємо два варіанти — традиційний, коли на товарі висить якась його розмірна сітка (скажімо, міжнародна S/M/L), чи українська, а ми кажемо "на товарі буде написано S" (не завжди так, може бути і 12, і 43, і ще якась хрінь, воно різноманітне).

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

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

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

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

А потім хз що, може просто будемо виводити у розмірах рівно те, що на товарі написано, чисто як індікатор при отриманні замовлення.
Як в нас на сайті був React всюди, то в якийсь момент ми навіть перестали читати Sentry. Ну типу звідти йшли нотіфікації, і раз на якийсь час там бували реальні помилки, які можна виправити, але після чистки від дурні на самому початку там було звалище незрозумілих помилок від старих браузерів, з відсутніми стектрейсами. Їх взагалі не дуже реально відшукати у тому бандлі, що являє собою реакт-апп, а ще вони трішечки різні і кожен на невеличку кількість народу спрацьовує - той на хром 39, той на оперу 36, той на ще якусь хрінь.

А помилок від IE11 та схожих браузерів там взагалі нема. Ми колись, році ще у 16-17, виявили, що MS Edge не хоче завантажувати наш сайт. Згодом знайшли в офісі комп на 32 Гб ОЗУ та десктопним процом, і змогли завантажити, і воно навіть якось рухалося, але ж це не життя. :) То я зарепортив як баг у Edge, і через три місяці вони сказали, що таки так, це баг у Еджі, а ще через рік вийшов реліз з фіксом, а ще через рік (чи щось таке) вони замінили в Еджі нутрощі на Хроміум. Тотальна перемога. 🤣

Але тепер в нас в Сентрі є окремий проект на баги джаваскрипта, які летять з Твінспаркової версії. Там є трішечки цікавого, що складно розібрати, а ще є трішки багів з IndexedDB, які незрозуміло як вилікувати... Але більшість багів нескладні, зрозумілі, і зазвичай "якесь старе падло щось не вміє".

І їх можна вилікувати! Типу вчора помітив, що на старих браузерах не працює наша аналітика, бо ми там заюзали Object.assign. 3 хвилини, і ще 600 користувачів тепер нормально трекаються. А зара сиджу, дивлюся і не можу вирішити, чи робити щось з тим, що IE11 не вміє Promise, чи забити на них усіх, їх всього 800 користувачів за три місяці...
Розповім, мабуть, про те, як мій тєлік Самсунг відмовлявся ютуб показувати. Місяці зо два чи три тому почалося, типу вмикаєш його — а в аппці ютубу відео навіть не починає програватися. Для контексту — йому десь під 4 роки, тож досить новий, але у тогорічну програму боротьби з сірими тєліками він не попав. Сірий, так, модель щось на кшталт UE55MU7002 (насправді рівно так, я вже запам'ятав це зовсім).

Якщо висмикнути з розетки, почекати трішки, а потім увімкнути - все працює. Іноді кілька днів працює, а іноді тіки цю сессію, треба знов ребутати. А якщо під час того, як він не працює, зайти подивитися на стан мережі, то він каже "не бачу інтернету". Локалку бачить — він в мене навіть на дроті сидить, а інтернет — ні. Ну, думаю, падло ти таке, Гнусмас, напав на мене! 👹

Потрохи іноді почитую форуми, але результати блокування виглядають трошки по-іншому, ніж те що в мене. А мої симптоми знаходять купу людей, які не можуть одуплити, як налаштувати вайфай, та якісь пости з 2015 року, коли в Самсунга щось знатно завалилося.

Тож так ми і жили з ребутами, та щось вони все рідше допомагали, аж доки тижні два тому наш тєлік не перетворився у гарбуз, який може тіки дісплеєм для компа служити. Що не дуже зручно для ютубу, насправді… 📺

І ось на минулих вихідних я прокинувся сповненим рішучості цього демона перемогти. Колупав все що міг, знайшов навіть що є прошивка минулорічна, яка автоматом не оновила, відшукав флешку (теж щє квест) і оновив, і ніфіга. Аж раптом дружина зайшла у налаштування мережі з іншого екрану, а воно і каже - з DNS could not resolve. Ооо, думаю, бач як заговорив, в інших екранах (нашо їх так багато?) ти тіки таємничу помилку 92 мені звітував! 🤖

*DISCLAIMER*: далі три абзаци технічного кошмару, просто перестрибни їх :)

А ще два дні тому помітив що я його пінганути не могу по тому айпі шо в роутері я бачу. Тож, думаю, піду подивлюся, що в мене там в роутері взагалі в налаштуваннях є... Відкрив, поклацав все у Advanced, ну якось наче ніяких фаєрволлів, нічого... Думаю, добре, ну в мене новий ноут, то хоч прив'яжу його до стабільного айпішнику, чом би й ні. Прив'язав... і тут мене наче молнією ⚡️ вдарило! Дивлюся, а там прив'язаний тєлік, до айпішнику 10.0.0.105, який він зараз має, але ж це я робив ще коли він на вайфаї сидів, а зараз-то він на проводі тож мак-адрес там зовсім інший!

Видалив ту прив'язку і все запрацювало наче на дворі ще січень! 😁

І тепер в мене купа питань: якого біса роутер давав зайнятий айпішник йому? Чому, скажімо, не моєму телефону? Чому я його прибив до 105, якщо DHCP починає роздавати з 100, чому не просто до 5? Чому, хоча я й прибив ноуту айпішник 10.0.0.2, він все одно брав собі 102 і все? І головне, чому тєлік той почав глючити у лютому, а не коли я в нього позаминулого року виту пару встромив? 🤡

Енівей, айм соу хепі шо капець, єдине, про що шкодую — що тепер немає приводу купити новий, щоби дюймів на 10 більшим був, а то в дьяблі з дивану важкувато тексти буває читати. А загалом всім гарних вихідних! 🎉
А ще, зовсім випадково, через історію з телевізором я дізнався, що RJ-45 — це помилкова назва, і це інший, дуже схожий роз'єм, з телефонних мереж, а комп'ютерний правильно називається 8P8C. Weird, ain't it?

Ось, подивіться.
🤯1
У далекому 2009 в мене був цілий місяць (грудень) між роботами, і я його тоді провів дуже продуктивно — наприклад, написав клієнтську бібліотеку до Редіса (на пайтоні), основну фічу якої автор redis-py потім перетягнув до себе, бо там була нереальна економія на кількості коду. А ще круто роздуплився з метапрограмуванням у пайтоні, що дуже допомогло написати ядро системи на наступній роботі, а потім нереально допомогло вичистити код від метапрограмування на пайтоні на той що була наступна за наступною. 😁

А ще написав малесенький пастбін — paste.in.ua, тому що мій звичайний через раз бував у даунтаймі, а юзав я його багато. І вже давно всі результати того місяця залишили після себе тільки досвід, а PIU досі живий, і я минулого року його навіть на Кложу та ГраальВМ переписав.

І у процесі переписування думав перевести сховище на SQLite, щоб простіше було то все менеджити, але виявилося, що драйвер склайту для джави не компілюється у статичний бінарь під лінуксом (на відміну від мака та вінди), тож дзуськи. На жаль, я не спеціаліст у війнах з gcc та C++, і проблема досі не вирішена, тож я залишив той формат зберігання, що там є, у файлах. А там... неортодоксальна серіалізація. :)

Зед Шо мені нашепотів заюзати для енкодінгу tnetstrings, формат, прикольний своєю простотою. 😂 Але коли я переписував все на кложу, я знайшов лібу, яку написав американець (це важливо). І через не дуже приємний код я ту лібу переписав трішечки симпатичніше, але! не дуже замислюючись.

Чому американець і моя тупня важливі? Тому що стандарт каже: довжина у байтах. А джава оперує строками, а не байтами, і в мене вийшла ліба, яка зберігає (і читає!) довжину у символах UTF-8. 😵 Вчора вночі прилетіла нотіфікашка "здох твій піу", і виявилося, що хтось там питав один і той самий урл з помилкою доволі часто, і Грааль закрешився, бо не вистачило пам'яті.

А помилка була у тому, що це була стара паста, ще пітонівська, з кирилицею. Через невідповідність у логіці воно намагалося взяти символів більше, ніж було у рядку, і помирало. Я якось заліпив це, а сьогодні, як була хвилька між зустрічами, пішов трішки краще пофіксив це. Пофіксив у сенсі тепер все перетворюється на довжину у символах, але пофіг.

Найгарнішим фіксом було б то все викинути і переїхати в SQLite, хто б оце сумісність з граалем йому полікував, але добре, що хоч якось є. Я ще й паралельно — дякуючи флексбоксу — пофіксив лейаут, щоб його не джаваскрипт розтягував на увесь екран, і щоб на мобілах нормально виглядало, то якось приємніше стало жити. 😊
Оптимізації у сайтів можуть мати дві мети: зробити щось швидше для користувачів, чи задовольнити гугл. Вочевидь, гугл намагається міряти, щоб людям було добре, але це складно. Кілька років тому, за вийнятком самих базових речей, шлях до тих цілей майже не співпадав, тому що гугл виміряв непрямі параметри. Замість швидкості завантаження, він виміряв, чи довгий кеш на ресурсах сторінки, чи не можна ще на 2 кілобайти зменшити файл, та й таке інше.

А потім ті дані, які збирає Хром з усіх користувачів і про які так давно точиться дискусія у privacy-minded колах інтернету, вони нарешті застосували на користь широкому загалу. Себто для нас з вами. І тепер метріки Гугла для сайтів — це те, що зарепортили браузери користувачів. У Google PageSpeed Insights можна подивитися на результати кожної сторінки, а у treo.sh добрі люди навіть зробили інтерфейс, де можна подивитися результати загалом по домену. Що, до речі, дуже цікаво!

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

А ще це означає, що можна побачити вихлоп навіть від тих оптимізацій, які не всі користувачі зможуть відчути — через старі браузери, припустимо, тому що загальна картинка зміниться.
Ну нареееееешті я зробив відео з демкою того, як працює TwinSpark. У тому стрімі, що ще 1 квітня був, виявилося, що на прикладі Касти щось показати дуже важко — занадто багато всього там відбувається. Тож я у 20-х числах квітня написав малесенький проект, і 28 числа сів все записати. Думав дня два-три подовбаюся і щось запишу.

Авжеж, ггг. Мало того, що всі ці приближення та посування відео — нереальний гемор, дуже багато праці руками, так ще й прем'єр виявився глючним. Він 4к відео з мого десктопу при ресайзі на різких змінах перетворював на покоцані фільми з 90-х, коли обличчя ГГ кудись у квадратиках упливає. Експортиш кудись — воно втрачає всі ці приближення мої... Кароч задовбався! Зробив потом з джерела MJPEG і ото так воно якось проїхало. Хоч не торкайся тої скотини прем'єра.

А потім ще після травневих всіх вихідних передивився і зрозумів, що я у 1 відео запхав 3 різних великих речі. Тож сів, повирізав, перемонтував, приробив навіть лого (дуже задоволений результатом :)), попрохав у Юри музику, понапхав жужу у різні місця... Реально набагато складніше, ніж стрім зробити.

Але вже не можу далі, хоч воно і не ідеальне. Можна вже йти дивитися! :)
Якщо у перший раз я на відео потратив, думаю, годин 15-20: кілька разів записував все наново, розбирався з прем'єром та взагалі з підходами до монтажу, і взагалі мучився, то головний доробок на цей раз забрав 2.5 години на те, щоб все записати і нарізати. Частково це тому, що я все робив у епловому Final Cut Pro, а не в адобівському Premiere Pro. І воно якось так зайшло, вся ця ідея с "магнітною" стрічкою і взагалі інтерфейс... Думаю, що третю спробу треба пройти у Davinci Resolve і в кінці вирішити, з чим жити. А потім ще стільки же на всілякі дрібнички, як без цього... :)

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

А це означає що? Точно, рассінхронізацію відео та звуку! 6 кадрів, щоб ви розуміли. Порахував я ці кадри, рухаю на 6 кадрів звук, а різниці немає. У інтернеті замість інформації хлам всякий, який я наче і сам знаю, але нічого не виходить. Перемотуємо на 5 днів вперед, ще один підхід, і поки я розповідаю брату про свої негаразди, до мене доходить, що я не звернув уваги на формат часу, і там не кадри, а долі секунди! Себто у головному індикаторі 00:02:47:16, де 16 — це кадри, а тут 00:00.87, вочевидь це не 97 кадрів! Ок, 1000/30*6 = 200, рухаємо на 00:00.20, ніфіга.

Записую клацання пальцями, значить, поставив головку де на відео вони змикаються, тягну звук... 00:06.00! Капець, то соті кадра! Як я мав здогадатися взагалі?! Ну хоч би якусь індикацію, не знаю, ото вже боги інтерфейсу. :/ Не те щоб в прем'єрі все було зрозуміло, але ну це було якось дуже боляче. :)

Тож звук я передвинув, все привів у порядок, фух. Дивіться нове відео, про екшени у Твінспарку. А щоб не відчувалося, наче я одну й ту саму пластинку возюкаю, думаю що наступного тижня зроблю стрім. В мене вже є ідея, трішки її пророблю і зроблю анонс. :)
Коли дивлюся демки no-code/low-code інструментів, мене не покидає відчуття незручності цього підходу. Тільки що дивився internal.io (те відео, що в них на головній) — там пані наклацує мишкою інтерфейс адмінки. Воно з однієї сторони прикольно, з іншої їм прийдеться поверх того всього вигадувати систему версіонування, інтерфейс до неї, а всім звикати і колотися, як отим їжакам. Ну

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

Плюс адмінки все одно роблять програмісти. Ось 1С багато зробив, щоб це все легко можна було зконструювати, у нескладних випадках просто мишкою. І що, багато бухгалтерів тепер не просять когось зробити їм звіт, а роблять самі? Індустрія вокруг запитів бухгалтерії склалася ціла.

Підсумовуючи: мені все ж здається, що захід з іншого боку, типу low-code, але у коді, був би ефективніший. А возіння мишкою то прикольно, але ще й лейаут на ходу видумувати — додатковий гемор. Хтось може вже використовував таке? Internal.io, retool, може ще щось такого типу?
Коли я був маленьким, я не міг зрозуміти, чому англійське право, себто прецедентне, так цінять різні корпорації тощо. Скажімо, якись суд у Крижополі може винести вирок у випадку, який дещо схожий на твій — і це прецедент для вирішення твого випадку, хоч він і не в Крижополі, і не про гусей, і взагалі ти скраєчку стояв…

А потім я виріс — і все одно нічого не зрозумів. Англійське право — це якийсь древній трухлявий підхід чи то вікінгів, чи то германців-дикунів… Не те що модерновий римський підхід, що його скрізь у Європі запровадив Наполеон!

Коли в інтернеті шукаєш, чому ж його цінять, лізуть сайти юридичних контор, повні лозунгів типу Global Reach - типу його повно по світу, бо ж Британія, чи там що лондонські суди найсправедливіші суди у світі, чи ще щось таке… лозунгоподібне.

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

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

Але ж гроші люблять що? Тишу вони люблять, та спокій! І англійське право цінять за його стабільність. Ось що головне! Ситуація навіть якщо і буде змінюватися, вона буде це робити довго, і ти встигнеш приготуватися.
👍1
Подивився тут інтерв'ю з Миколою Аліменковим, і, після купи дуже розумних думок наприкінці (45:12) він каже: "яка різниця, на якій мові це робити". Вочевидь, в мене на це питання прямо протилежна точка зору (інакше б я десь біля джави чи якогось пхп тусувався, правда?): інструменти дуже сильно впливають на результат.

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

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

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

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

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

Тож viva la Clojure та єдиному пророку її: Річу Хікі! 🤣
Нам з братом пощастило у дитинстві: на одному з дисків зі збірками ігор була TTD — Transport Tycoon Deluxe. Сенс гри у тому, щоб організувати транспортування товарів з місць виробництва до місць споживання. Бувають короткі маршрути, скажімо, вуголь до ТЕС, бувають довші: залізна руда — сталь — товари, які потім треба возити в міста, щоб вони росли. Перевозити їх можна вантажівками, кораблями, літаками, і, найкраще — потягами. Прокладаєш маршрут, розставляєш семафори, і пішло-поїхало. :) Гроші заробляються на транспортування, до самого товару ти якби відношення не маєш.

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

І ТТД наче залишився там, у дитинстві, та іноді у спогадах, але вже на першому курсі у ньюсах КПІ я натрапив на обговорення TTDPatch. Сам TTD був, вочевидь, програмою з закритим джерельним кодом, ще й на асемблері — бо Кріс Сойєр таки олдскульний дядько, і навіть Locomotion 2004'го року написаний на асемблері. Але знайшовся чувак за ім'ям Йозеф Дрекслер, який з 96 року (враховуйте, що перший реліз оригінального Transport Tycoon відбувся влітку 94) працював над in-memory покращеннями гри. Цей патч виправляв купу неприємних особливостей гри і додавав багато нових можливостей.

А ще тепер інтернет був значно більший, ніж у 96-97 році, і можна було почитати туторіали, як інші люди грають. Це був ренесанс ТТД для мене і відкриття року для купи народу в общагах, хєхєхє. Ми нормально навчилися грати і заробляти гроші, і взагалі виявилося, що гра фанова не тільки для 11-річних дітей.

А у 2004-му Людвіг Стрігеус (який згодом стане доволі відомим, бо він є автором μTorrent) стартував проект OpenTTD. Все ж таки TTDPatch не міг зробити всього, що хотілося спільноті, тож реімплементація гри на C з відкритим джерельним кодом це було то шо треба. Воно вистрілило і розробка йде до сих пір: їх сайт каже, що останній реліз, 1.11.2, вийшов 3 травня — незабаром вже буде 20 років проекту!

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

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

Воно лежало без діла доволі довго, але тиждень тому якось ми на неї напали і активно розгадували (у сенсі не тіки Степан це робив)… аж тут козявка Фаня три дні тому кудись заховала книжечку із завданням.

І тут виявилося, що ніхто з нас не спроможний просто скласти ці довбані фігурки. Дуже неприємне відчуття, чесно кажучи, наче знов на дворі 94 рік і мені потрібен iddqd щоб пройти перший рівень…
Я ж півроку тому купив Соньку a5100 і продав свій Фуджик X-T1, тому що він не вмів видати по HDMI живу картинку — тільки те, що вже записано на картку пам'яті. Ну і ще тому що я його кілька років не чіпав. :) І Сонька за свої гроші виявилася дуже розумною покупкою, майже за гроші Logitech Brio, але з набагато кращою якістю.

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

Походив, помучився, чи воно мені взагалі треба — попередній же ж лежав без діла реально, але ну скіки ото можна страждати, і купив Fuji X-S10. До речі, виявилося, що представництво Fujifilm дає фотіки на тест-драйв на кілька днів. Я так взяв X-E4 з 23/1.4 — ніколи в житті не користувався таким світлим склом — і зрозумів, що об'єктив то воно, а форма фотіку мені потрібна від зеркалки, а не від далекоміра.

Тож X-S10, плюс в мене ще залишилися об'єктиви від X-T1, плюс я купив Viltrox 23/1.4 (тому що він 400$ замість 1000$ за фуджиковське скло, а з якістю все супер). Сказати, що то кайф — нічого не сказати. Просто тащусь від камери, та й від скла теж. Результуючі фотки просто фантастичні, керування кайф — що завгодно з кнопок та крутилок можна переназначити на інші функції, ну й взагалі і форма, і керування супер.

Живлення по USB-C, плюс швидкозйомна площадка вирішують траблу з тим, щоб його зняти або поставити секунд за 10, так що він не намертво стоїть біля компа.

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

А ще макро...
Пару тижнів тому у мене разів 5 за день поламався інтернет. І так цікаво воно відбувалося, що ребут роутера не допомагав. А ось відключення шнурку від роутеру і втикання назад допомагало: провайдер каже "порт завис". У мене було таке один раз минулого року, один раз 1 квітня (пам'ятаю, бо це прям посеред стріму відбулося), і ось 5 разів за той день.

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

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

Немає худа без добра, чи що? :) Тепер я плачу на два долари більше, але маю цілий гігабіт! Тепер можна набагато швидше нічого не качати!
Встрягли у трішечки геморну технічно ситуацію, коли ми хочемо зробити нормальну адмінку до всяких маркетингових штук, які вміє сайт — на жаль, ми його різному навчили, але інтерфейсів не зробили і різні штуки вмикаються переписками та лайкою. :) Геморна вона у тому, що ми заюзали rule engine ("двигун правил" поки що мені не звучить нормально як термін) для вмикання, тож треба не тільки формат конфігурації придумати, а ще й компілятор того формату у власне правила для двигуна.

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

Ідея така — ти збираєш до купи відомі тобі:

• факти: id товару такий, постачальник такий, ціна така, властивості такі, користувач з Києва, вибрав оплату картою, вибрав доставку у відділення НП, і т.п.
• правила: доставка на кастапост безкоштовна, якщо ти чоловік з трьома дітьми у Києві і платиш карткою Андорри
• питання: чи доставка безкоштовна? чи може треба хінт для сторінки товару про те, що доставка для оплат карткою безкоштовна?

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

Я ще не дуже розумію, чи може DataScript + запроси туди були б достатньо ефективними та простішими для усвідомлення, чи ні. Але поки що вся ця конструкція виглядає так, що мені боляче за витрачені роки. :)
Судячи з реакції, вчора був занадто технічний пост, тож давайте обговоримо якісь загальнолюдські цінності. Наприклад, колдбрю! :) Беремо чисту холодну воду і каву у пропорції 1:18 — або якійсь іншій, в інтернеті купа обговорень, скільки треба. Я роблю літр води і 55 грам молотої на аеропрес кави і мені подобається результат. Тож цю суміш у банку і в холодильник, а зранку наступного дня (виходить десь годин 16 в мене) фільтруємо і є трішки менше літру дуже смачної кави, яка ще й холодна і у години нестерпної спеки наче нектар. :)

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

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

Кароч, кайфую з результату і не розумію, чому минулого літа цього не робив.
Є така штука - еластіксьорч. В мене з ним якісь love/hate 💔 відносини. Він вміє дуже прикольні штуки, але і має дві вади.

1️⃣ Він завжди, у кожному місці, хоч крапельку, але недороблений.
2️⃣ Його доки завжди написані для тих, хто вже шарить. Тобто якщо ти читаєш якусь доку вперше, то зрозуміти, що вона тобі розповідає, майже неможливо.

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

Почну з контр-прикладу: в постгресі додали можливість вибирати частину JSON'у з поля. І одразу ти можеш це використовувати у селекті, у where, у сортуванні, у агрегаціях, можеш будь-яку строку привести до JSON'у і так само воно буде працювати всюди. Це ортогональність фіч: розробникам постгресу не прийшлось окремо всюди припилювати це механізм, в них нормальні абстракції. 🎉

Натомість давайте подивимость на Elasticsearch. Скажімо, в нас є така штука, як вішлісти. Ти можеш лайкати товари і ми тобі за це потім скажемо, коли на нього впаде ціна. Але є люди, в яких цих товарів дуже багато (десятки і сотні тисяч товарів налайкали, це капець), тож ми їм хочемо дати можливість ті товари фільтрувати. Складати в кожен товар перелік користувачів, у яких він в вішлісті, трішечки нерозумно — популярні товари таки дуже популярні (в найпопулярнішого - 8,5 тисяч лайків 🤯).

Але ми беремо фільтр terms, який дозволяє сказати "хочу лише оці документи". Якби в нас були сотні товарів в одного користувача, то ми б просто їх параметрами запиту передали. Але в нас тисячі (десятки навіть)! Еластік такий: не бійся, чувак, я все шарю. 👌 Диви на доку нижче, якщо ти замість списку термів передаш спеціальну мапу, то це буде означати "хочу документи, список яких є он в тому документі". Ну типу вішліст твій будемо складати в еластік одним документом і потім на нього посилатися (ну теж не дуже ефективно звучить, але ж кращє ніж на читанні таке селектити з бази).

Наче норм, так? Проблему вирішили? Ось тільки ми ж хочемо їх видати так, щоб найсвіжіші (за часом додавання користувачем) були вгорі. А еластік видає як йому заманеться. Добре б його попрохати відсортувати, як у тому нашому документі з вішлістом. Але ж немає шансів! Тому що фільтр термс те вміє, а сортування не вміє. Той "джойн" — не ортогональна фіча. 💩

І це втомлює реально. Еластіксьорч то набор юзкейсів, якщо твого не зробили — то й працювати не буде. Хз, шо з тими вішлістами робити. 🤷
Сьодні зі Степаном пішли на картінг — на «Жагу Швидкості», авжеж, бо де ще можна нормально проїхатися. :) І раптово виявилося, що вони останні два роки вже не пускають повозити дитину на руках. :( А самому йому ще рано, треба 130 см зросту, щоб дістати до газу (кому треба той тормоз).

Тож довелося мені самому разочок проїхатися, тим більш що я там роки 3 вже не був — і перше коло за 43.3 дуже болісно про це нагадує. :)) Колись за 39 з копійками проїжджав сьогоднішню конфігурацію, а зара найкращий результат — 41.7 при тому, що крім мене на трасі тіки ще один чувак був.

Але кльово, приємна втома в пальцях, хехе. Треба ще буде сходити. ;)