Cіпласпластик
524 subscribers
159 photos
35 videos
2 files
252 links
🇺🇦 Про айті та дотичні теми загалом, ну й трохи про C++.

Мої емоджі:
https://t.me/addemoji/AdaptiveDevIcons
https://t.me/addemoji/VehicleBrands
Download Telegram
Просто подивіться оце ☝️

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

Коли я кажу людям, що девелоперські #тулзи не мусять бути лайном, вони мені у відповідь:
🤪 «IDE не потрібна» 🤪 «я грепаюсь по логах» 🤪 «а що не так з гітом?» 🤪 «проєкт збирається всього лише за 40 хвилин на тредріппері» 🤪 тощо 🤪

Тим часом компанія з трьох людей, що робить дуже офігезні ігри:
• оновлюють асети без перезавантаження програми;
• компілюють код у файлі на 13к рядків(!) на кожне натискання клавіші(!!) та оновлюють його теж у рантаймі(!!!)
• у будь-який момент можна поставити брякпоїнт будь-де та пройтися по кроках вперед та назад!
• завдяки хот-релоаду кода, вони компілюють код для профайлінга за потреби вже на запущеній програмі;
• всі дії з моменту запуску програми зберігаються у повністю reproducible послідовність включно зі всіма рекомпіляціями та перезавантаженнями коду або ресурсів, яку можна переносити на інші компи, й воно працюватиме;
• можна тегнути будь-яке місце в коді якимсь додатковим контекстом (timestamp, наприклад), щоб потім швидко знайти саме те місце в коді та саме той момент часу, коли це трапилося;
• все це інтегровано з білд-системою та системою контролю версій.

Я хз, що тут ще додати. Мій поточний тулсет на тлі цього — це наче бричка з кіньми поряд з зорельотом.
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🤯2
Cіпласпластик
#Ідея для стартапа: сервіс, в який ви логінитеся своїм обліковим записом #Spotify, щоб він щотижня пробігався по «Тижневій добірці», перевіряв за допомогою #ШІ-шки кожного виконавця, чи не має той звʼязків з рашкою, та автоматично дизлайкав тих, хто має.…
Окей, трохи навчив Perplexity зʼясовувати походження та звʼязки виконавців. Потестив на якихось назвах, що знайшов у #Spotify — не вгадало тільки CHAINY. (ДахаБраха та Ragapop — це 🇺🇦 звісно, а Paul Sabin ніби хвранцуз).

Цікаво, що на цій задачі Claude 3 Opus показує себе вкрай жахливо, а от GPT-4 Turbo ніби норм.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Нефігова така анімація іконки burger menu.

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

UPD: Важливий момент до речі, що вона програється на сайті всього один раз, а не постійно мерехтить в очах, програючись по колу.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Цікаво, як за допомогою #emoji виразити прізвище автора вірша 🤨 (Так, я ще той жартівник 😁 Проте вірш ще зі школи памʼятаю, бо саме він мені на екзамені трапився).

Взагалі emoji — штука доволі дивна, як на мене. Я проґавив їхнє глобальне пришестя, бо, мені здається, це завдяки айфону відбулося (хоча вікі пише, що гугл першим звернув на них увагу та інтегрував у GMail). А коли вони зʼявилися на андроїді, то я довго впирався та не хотів користуватися.

Річ у тім, що emoji містять у собі купу якогось непотребу, й одночасно там бракує багатьох важливих штук. У часи #ICQ я користувався найкращим чат-клієнтом — Miranda IM, і навіть тамтешні стандартні смайли (емотікони, точніш) були більш експресивні. Ну а краще за анімовані скайпівські, здається, досі ніхто нічого не зробив. У Microsoft взагалі зі смаком все в порядку, тож я emoji також їхні використовую, як ви давно зауважили.

Та мова не про це. Емодзі — далеко не перша спроба «стандартизувати» спілкування символами за останні роки, але найуспішніша. Наприклад, ще була iConji, яка проіснувала з 2010 до 2012.

Та мало хто знає (а ті хто знає, вже забули), що ще у 2004 зʼявилася така штука як Zlango 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Cіпласпластик
Цікаво, як за допомогою #emoji виразити прізвище автора вірша 🤨 (Так, я ще той жартівник 😁 Проте вірш ще зі школи памʼятаю, бо саме він мені на екзамені трапився). Взагалі emoji — штука доволі дивна, як на мене. Я проґавив їхнє глобальне пришестя, бо, мені…
Отож зустрічайте, піктографічне письмо моєї юності 😄

Zlango, створений ізраїльською компанією, як і #ICQ до речі, спочатку був плагіном для останнього, але згодом зʼявилася й окрема програма для телефонів. Чи може навпаки все було.

Так чи інакше, в Україні серед мобільних операторів Zlango тільки Київстар розповсюджував: там на djuice можна було майже на халяву завантажити це з WAP-сайту, а потім слати замість смс-ок — але у мене був JEANS 😐

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

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

А гугл-он ще вісім років тому стверджував, що їхня #ШІ-шка в Google Translate буцімто виробила свою проміжну мову.

Тож може зараз з LLM справа краще піде. Але гарантую, що скоро ще схожі спроби будуть. А може й вже є )
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41😁1
Мене аж тіпає, коли пишуть C/C++, поєднуючи дві різні мови, відмінні не тільки концептуально, але й синтаксично (так!). Щось я не бачу, щоб писали C/Objective-C або QBasic/Visual Basic десь у вакансіях.

З очевидних відмінностей є, наприклад, автоматичне приведення в сішці void-вказівника void* до вказівника на будь-який інший тип, наприклад, int*. А неявні касти в результаті приносять значно більше болю, ніж необхідність робити це явно. В Haskell немає неявних приведень типу, і жоден розробник з десяти у світі від цього не вмер.

Але у зворотному боці я також отримав декілька WTF-моментів. Наприклад, в C++ можна написати
int i = 0; 
(i = 10) = 42;

і воно це схаває, бо в C++ operator= повертає lvalue, але в C — ні, тож там це не спрацює. Це ж буквально один з пунктів, на які я жалівся у статті. Неприємно здивований.

Це з цікавого. Кажуть: «Майже будь-який код на C може бути скомпільований як C++» — проте не кажуть, що це ще не гарантує його коректність. Наприклад, в C sizeof('a') повертає розмір int, а в C++ — розмір char 🥱

Короч, між C та C++ ще безліч «прикольних» відмінностей. Аж на цілу пдф-ку назбиралося.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14😁1🤓1
Читав днями допис (до речі дуже подобається канал, рекомендую!), де чувак пише, як він підходить до завантажень відео з вебсайтів. А у мене як раз була подібна ситуація, коли я теж хотів щось злити з сайту, а там відоса як такого не було, і щось я не второпав, як це зробити.

Так ось я згадав, що то було. Дружина колись давно купила курс, який хоститься на сайті Gurucan (який, схоже, має росіянське коріння до речі), а ті прям хизуються своїм video content protection 🙄

Короч. Чувак своїм дописом мене надихнув розібратися. І він мав рацію! Мені як не веб-девелоперу трохи складніше, але я посидів на вкладці Мережа в девтулах, познаходив там якісь лінки. Спочатку думав взагалі просто дампанути з девтулів сесію та парсити її, але згодом знайшов там виклики API. Після логіну прилітає токен, який можна потім просто передавати в куках разом з User-Agent, і все працює.

Усі відоси розділені на шматки по 4 секунди й лежать на CDN, де також є *.m3u8 плейліст, по якому воно їх і збирає. Я роблю те саме: завантажую всі шматки локально та комбіную їх ffmpegʼом.

Написав все на #Nu (так, це мова в #Nushell) з використанням вбудованих засобів, тож єдина зовнішня залежність — це, власне, ffmpeg (жодних блядь jq!). Дуже подобається, що все статично типізоване та компілюється, тож ще до виконання отримуєш пачку помилок.

І вкотре наголошую, в якому я захваті від передачі обʼєктів через пайп. Є, наприклад у мене команда з отакою сигнатурою:
def "api get" [url?: string]: [nothing -> record, string -> record] { 
...
}

Необовʼязковий параметр — це url, щоб можна було викликати отак:
api get https://some.domain/api/call

Чому необовʼязковий? Бо натомість URL можна передати через пайп. І саме про це каже тип цієї команди, який можна читати так: якщо через пайп приходить nothing, то команда поверне record (але в цьому випадку треба вказати url, що на жаль в сигнатурі не відображене), і якщо через пайп приходить string, то також повертає record. Жодні інші типи через пайп не прийматиме. Тож альтернативний виклик отакий:
'https://some.domain/api/call' | api get

При цьому авжеж тепер ліва частина може бути аутпутом з іншої команди. За бажання структуру record, що повертається, також можна описати в типі, якщо вона заздалегідь відома.

Лайна в процесі також похавав. В якийсь момент мій код почав видавати отаку помилку:
  × Variable not found
╭─[~/megamodule/mod.nu:137:1]
137 │
138 │ ╭─▶️ api purchases | each {|p|
139 │ │ api course $p._id | download course
140 │ ├─▶️ }
· ╰──── variable not found
141 │
╰────

І пиздець — ані туди, ані сюди. Причому це тупо в main на верхньому рівні. Довелося коментувати код шматками, щоб докопатися до суті. Врешті виявилося, що десь в іншому модулі на хз якому рівні вкладеності я не перевірив одну зі змінних на null перед використанням 😵‍💫

Втім все одно я в захваті! Nushell — вогонь, причому він активно розвивається.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👀1
#TIL в С++ є спецові функції для порівняння знакових та беззнакових чисел (починаючи з C++20 😂).
Please open Telegram to view this post
VIEW IN TELEGRAM
👀1
Свій перший код на #BASIC я написав в шість років (А ви? Розкажіть, може?) на якомусь радянському клоні спектрума, хоча в ті часи цього ще не усвідомлював. Я був у «компьютерно-англійському» першому класі, проте, вже за півтора року він став звичайним, а інформатику нам перестали викладати. Свій же компʼютер у мене зʼявився аж за вісім років від першої написаної програми — коли мені було 14.

Жили ми доволі бідно, тож у мене не те що компʼютера не було, а навіть «денді», не кажучи вже про «сегу». Якийсь час був Brick Game aka «тетріс», який на жаль зник (найбільш ймовірно його спиздив сусід по поверху, мати-алкоголічка якого варила ширку для наркоманів).

Але потяг до компʼютерної тематики у мене з дитинства. Тож коли була змога, я ходив по друзях, у котрих вже були компи (дякую вам, до речі 🥰) або хоча б приставки. Решту ж часу з розваг у мене були походи в компʼютерні магазини, де можна було подивитися на свіжі технологічні надбання, а також набрати прайс-листів, щоб скласти собі черговий (чи не щотижневий) конфіг своєї мрії. В деяких магазах мене навіть в обличчя вже знали 😁

А ще існувала радянська книжка «Энциклопедия профессора Фортрана» (росіянською звісно). У мене її не було, але мені друган давав почитати, тож я її мільйон разів прочитав, мабуть.

І короч в книзі була схема, яку можна було перенести на папір, вирізати та склеїти собі мале-е-е-енький паперовий компʼютер! Я це також неодноразово робив, уявляючи, як офігезно буде мати колись справжній.

Отже, це все був вступ. Я просто натрапив на сайт з паперовими (кольоровими!) моделями різних старих пристроїв, і мені згадалося ) Треба якийсь гештеґ на кшталт «дід знов забув про таблетки».
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😁31❤‍🔥1
😩
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13🔥1
Якось розмовляли з друганом про можливість зробити GUI/TUI для роботи з логами, зокрема в JSON-форматі.

І якщо ви досі не перейшли на #Nushell, як це зробив я, то вам може стати в пригоді його плагін для Neovim, що дозволяє наживо фігачити jq-запити. Не забудьте поставити зірочку на репу.
🔥6👍3👀1
Зараз буде багато тексту.

Вчора раптом отримав інсайт щодо код-ревʼю, коли мені робили дизайн-ревʼю слайдів для презентації.

Я вже писав про це раніше, але передісторія така:
Робив програмістам-плюсовикам на роботі доповідь під назвою «Want to get better at C++? Learn other languages». Ну, не скажу, що ідея капець яка свіжа, але це те, в що я сам вірю: доволі складнувато, якщо взагалі можливо, стати професійним програмістом, коли ти нічого окрім C++ не бачив, бо знання мови хоч і важливе, але точно не на першому і навіть не на другому місці за пріоритетом. А серед плюсистів воно ж часто як: пишуть на плюсах, можливо навіть бачили Python, який зневажають, а решту взагалі ігнорують.

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

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

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

Наведу декілька прикладів своїх слайдів та коментарів на них:
👀1
Занадто величезний шрифт. Презентація аж «кричить».

(У мене в принципі в презентації всюди великий).

Я поставив тут будильник на слайд, бо він і в списку є, і взагалі доволі лаконічна та впізнавана штука.
👀1
Це картина якась, — каже. — Не підходить по стилю до будильника. Треба прибрати й вставити щось ліпше.
(Будильник, до речі, в презентації насправді на декілька слайдів пізніше поточного, тож ще питання, що до чого не підходить).
1👀1
Аніме… ми в компанії не використовуємо аніме… Краще прибрати й використати щось більш підхоже.

(Я опущу те, як у мене підгоріла дупця з «аніме»).

Але… що саме тут пасуватиме краще, ніж персонаж з мультфільму, який є автором цих слів? Цитата ж буквально двічі доводить правильність того, про що я розповідаю в презентації. По-перше, напряму: сам сенс цитати про це. А по-друге, на метарівні: мені треба було зробити слайди під презентацію, я не знав, що туди писати, а потім раптом збагнув, коли займався зовсім іншою справою — дивився «Аватара» 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
😁62👀1
Отож про що це я? А, ну так, про дизайн-ревʼю та про код-ревʼю.

Річ у тім, що у нас в компанії є шаблон для презентацій. Це, можна сказати, такий собі style guide, як у програмістів для коду.

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

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

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

Презентація загалом була заточена під один конкретний пʼятихвилинний момент з конкретною цільовою авдиторією. Вона мала запамʼятовуватися та бути неформальною, бо суто для внутрішнього використання.

Я отримав й кілька вельми корисних порад звісно! Але загалом дизайнерка була настільки збентежена великим шрифтом, що не помітила інших «жахливих» порушень нашого стайл-гайду: що у мене взагалі немає bullet-списків, що на жодному слайді немає номера сторінки, назви компанії, копірайту, сьогоднішньої дати та іншого булшиту, який зазвичай пхають, що на жодному слайді, окрім першого та останнього, немає логотипа компанії, тощо. І що шрифт заголовка слайда менше за розміром, ніж шрифт змісту 😁 (але виділений кольором).

Я розмірковував про все це, і раптом збагнув, що воно якось дуже відлунює мені код-ревʼю, до якого ми всі з вами звикли. В різних компаніях практика огляду коду також дуже відрізняється: від перевірки пробілів/табів до того, що хтось качає собі PR та перевіряє, чи коректно він працює.

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

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

Чи є користь від перегляду коду, не пірнаючи в контекст та не намагаючись зрозуміти логіку? Ну, дивлячись на те, як було зроблене дизайн-ревʼю — ні. Ба більше! Це може навіть зашкодити.

На жаль у мене немає остаточно сформованої думки з цього приводу. Але я вкотре здивувався, як якась одна подія спровокувала роздуми на іншу, відносно далеку тему 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👀1
Щойно дізнався від @dmytrish про таку крутецьку штуку як Kaitai Struct. Це декларативний парсер бінарних даних, який вміє генерувати код під різні мови, зокрема для C++ (а не C! 😌).

Мені буквально нещодавно треба було запарсити віндовий ico-формат в JavaScriptʼі, й у npmʼі авжеж є якісь готові ліби, але в тому середовищі, під яке я писав, дуже старий JS-рантайм (ECMAScript 5). Вручну все писати також впадлу.

А Kaitai, схоже, генерує код під ES5 як раз, бо я не побачив там якогось свіжішого синтаксису. Доведеться знов дістати ту ініціативу зі скрині відкладених проєктів.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1👀1
Кому #ШІ-шку прям в телеграмі? Microsoft розробила офіційний телеграм бот для Copilot: так і називається, їй-богу — @CopilotOfficialBot. Якось працює, навіть доволі непогано, хоча просить номер телефона з ними зашарити.

Мене вразило не стільки те, що до телеграму прикрутили ШІ-шку у вигляді бота (бо самописних на ґітгабі вистачало й до того), скільки той факт, що Microsoft написала щось для Telegram.

Це як акт визнання існування останнього великими компаніями. Тобто серйозні справи вже пішли, серйозна гра. А значить, надалі ставатиме тільки гірше 🙂 — час шукати, куди звідси ливати 🧐
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5👍2👀1
Media is too big
VIEW IN TELEGRAM
Мені трапився черговий «веббраузер»(?) — Kosmik. Цього разу маємо безкінечне полотно, на яке можна пхати різні зображення, PDF-ки, посилання, текст, наліпки тощо. Тобто в принципі те саме, що вже 20 років є у OneNote, тільки вебкліпер раніше був у браузері, а тепер навпаки браузер вбудований у програму. Хоча сама програма на електроні — тож теж браузер. А ще її можна запустити всередині звичайного браузера 😵‍💫 Kosmik ще й не зовсім безплатний до того ж.

Я потикався і бачу, що користуватися не буду, але сюди вирішив скинути. Тиждень був важкий, а я давно сюди нічого не писав — ще відписуватися почнете 🙁
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁4🤔1😱1