Мир сегодня с "Юрий Подоляка"
Мир сегодня с "Юрий Подоляка"
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Труха⚡️Україна
Труха⚡️Україна
Николаевский Ванёк
Николаевский Ванёк
Лёха в Short’ах Long’ует
Лёха в Short’ах Long’ует
Стой под стрелой avatar
Стой под стрелой
Стой под стрелой avatar
Стой под стрелой
Date range
Number of views

Citations

Posts
Hide reposts
05.03.202514:59
Еще секрет от автора популярного канала. Знаете, какие посты самые унылые? Мета. Про то, как писать посты. Как автору тяжело. Где он искал вдохновение. Сколько собирался с силами. Как писал движок, или какой взял готовый. Как реагирует аудитория. Что, по его мнению, нравится читателям. Вопросы, о чем писать дальше. А еще анонсы, что будет писать чаще. Последние два – это вообще смертный приговор, после такого только умирать.

Мы пришли сюда — зачем? За контентом. Вот контент и давай. А какие приключения пережил автор, чтобы его добыть — пусть друзьям в баре рассказывает.
10.02.202512:44
Как и обещал, пишу про прекрасное.

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

А рядом сидели парочки, смотрели закат и целовались. Жизнь прекрасна.
03.02.202512:53
Ваше айти не карго-культ? Как тогда объясните всеобщую любовь к относительным таймстемпам?

Кто-то когда-то решил, что даты, как они хранятся в компьютере ( 2025-02-03T12:20:19.594320Z), не очень человеко-читаемые и надо как-то их облагородить. Было решено сконвертировать их в относительные таймстемпы.

В самом деле, человек не думает форматами год-месяц-день-секунда-миллисекунда. Если кто-то что-то написал пять минут назад, то он так и думает — это было пять минут назад. Это довольно естественно и удобно.

(здесь отступление про то, что как только это изобрели, встала другая проблема — надписи типа «пять секунд назад» устаревают каждую секунду, а «пять минут» — каждую минуту. Так что приходится городить jAvAsCrIpT чтобы они имели смысл. Ну да нам не привыкать — программирование оно все про создание проблем и потом героическое их решение)

Но как только мы пересекаем некий психологический рубеж (я бы сказал — час, но готов согласиться на условные шесть часов, это все приблизительно), люди перестают думать в терминах относительных таймстемпов. Скажем, про коммит, сделанный утром, я думаю, что он был сделан утром, а не «четыре часа назад». Если я вижу «четыре часа», мне еще посчитать надо от текущего времени, что там было, утро или что. Относительные таймстемпы перестают иметь смысл и начинают мешать.

Это довольно естественный переход от относительной ориентации к абсолютной — относительная удобна в непосредственной близости, абсолютная — все остальное время. Скажем, когда я сижу за столом, мне удобно думать о вещах на столе относительно (спереди, справа, слева). Но если я иду по городу, я уже думаю о своем абсолютном положении, где я в городе, а не где город относительно меня.

К проблеме относительности добавляется еще округление, которое никто не умеет делать. 200 дней? Год назад. 366 дней? Два года назад. НИКТО ИЗ ЛЮДЕЙ ТАК НЕ ДУМАЕТ. Даже программисты так не думают. Но продолжают лепить бессмысленные «два года назад» на коммиты из января 2024 (да, у меня есть скриншот) или «день назад» на коммит, сделанный в 23:59, когда смотришь на него в 00:01, и думать, что делают «человеко-читаемые таймстемпы».

Люди не говорят «день назад», люди говорят «вчера». Не «год назад», а «в прошлом году». Но все равно, точность-то теряется, если вы напишете «в прошлом году» на коммите, сделанном в декабре 2024, я вас приду и стукну по голове.

(тут был пассаж, как бы я округлял правильно, но я его удалил, потому что вы же возьмете и реализуете, а пост про то, что относительные таймстемпы не нужны, а не про то, как правильно их сделать)

Короче, что делать?

- На сегодняшних датах пишите: «сегодня 18:20».
- На вчерашних еще можете «вчера 18:20» (именно вчера, прошлые календарные сутки, а не «когда больше чем 24 часа», блин). Тут, внезапно, помогает язык — слово для «вчера» есть, значит людям удобно думать в терминах «вчера-сегодня-завтра». А для два-три-четыре дня назад-вперед уже неудобно.
- Если дата на этой неделе, то «четверг 18:20». Не неделю назад, а НА ЭТОЙ НЕДЕЛЕ. Нехватало мне еще гадать, прошлый имеется в виду четверг или будущий.
- Дальше уже переходите на абсолют: «30 декабря, 07:00».
- Когда меняется год (не равен текущему), добавляйте и год тоже: «30 декабря 2024, 07:00».

Все, блин. ЭТОГО ДОСТАТОЧНО. ЭТО УЖЕ ДОСТАТОЧНО ЧЕЛОВЕКОЧИТАЕМО. «А может...» НЕТ! НЕ МОЖЕТ. Остановитесь. Возьмите свой «семьдесят семь недель назад». Посмотрите на него. В последний раз. И засуньте себе в жопу. И никогда не доставайте. Я все сказал.
29.01.202510:54
Бесит, когда автокомплит включен во время набора. Сидишь, никого не трогаешь, пишешь себе «pri», а оно радостно: «privet»? «pribor»? «prihod»? И твой же код рядом заслоняет. А ты, может, на него смотрел, может, в соседней строчке, которую заслонили, ответ и кроется.

И, главное, ты же все равно не угадешь. Вариантов все равно будет несколько, а значит мне придется еще пописать, чтобы уточнить, но нет, все равно попап уже здесь, живи с этим.

А еще ведь эта фигня перехватывает вверх/вниз. Получается, если ты не дописал (или дописал, но редактор об этом не знает) и хочешь пойти на другую строчку, тебе надо сначала этот автокомплит закрыть. А ты его даже не открывал! Кнопки вверх/вниз становятся модальными — ужас.

В конце концов, просто неприятно, когда на экране что-то появляется и исчезает постоянно.

Конечно, нет никакого смысла дописывать сорокабуквенное «priority_interface_factory_adapter», т.е. автокомплит иногда нужен. Но строго по моей команде, на отдельной кнопке, а не автоматом.
17.01.202508:03
Проклятие современного айти: протухающие сессии.

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

А вот если заставить пользователя раз в неделю проходить через вот этот вот унизительный ритуал, ой, что-то пошло не так (интересно, что, вот бы был способ узнать), вы кто, гражданин? Сессия, какая сессия? Вы всего лишь семьдесят семь раз пользовались нашим сайтом в последние два дня, а пройдите-ка на всякий случай капчу. Где тебе даже логин с паролем не доверяют ввести на одном экране (скоро будет по отдельному экрану на каждую букву пароля, чекайте), но если пользователь будет вбивать пароль собственноручно указательным пальчиком раз в неделю, переписывая с бумажки, которая тут же на мониторе и наклеена, то вот тут-то и наступит настоящая сесурити. Потом еще письмо о подозрительной активности пришлют.

Главное, это такой brainworm (как же нужен аналогичный термин на великомогучем), потому что ЗВУЧИТ ЛОГИЧНО. Не является, а именно звучит. Как будто бы лишние проверки точно не повредят? Как будто бы чаще логинишься — больше сесурити. Это же как паспорт на проходной проверять. Это же так работает. Глядишь, и злоумышленника поймаем. От создателей лечения рутью, сверления черепа при головной боли и других практик, казавшихся ОЧЕНЬ ЛОГИЧНЫМИ.

Правда же в том, что если у тебя украдут сессию, то пожалеешь ты об этом практически сразу. Истекающий через неделю токен тебе никак не поможет. Если хакер не смог украсть у тебя за неделю все деньги и написать всем твоим бывшим, ему не место в профессии. А если не украдут, то и нафига было меня мучать своими логинами? Чтобы я жизнь свою возненавидел?

«Ну а как же, вдруг твой токен найдут через пять лет на купленном на ебее и восстановленном диске в логах?» Ребят, меняйте и обновляйте свои токены сколько вашей душе угодно. Главное — меня не разлогинивайте. Эти две вещи вообще никак не связаны.

«Но ведь идею регулярно разлогинивать наверное не дураки придумали и не на ровном месте?» Как будто никогда такого не было, чтобы кто-то внедрил какую-то в лучшем случае бесполезную практику и все пошли ее копировать друг у друга, не задаваясь библейским вопросом «а не хуйню ли мы делаем?» Как будто ни разу такого не было. Как в первый раз как будто.

«Но публичные компьютеры…» Вы серьезно сейчас? Вы сейчас, блять, серьезно?

Объясните мне тогда. Я за свою жизнь может быть раза два логинился в Гитхаб, Амазон и Гугл. У них там что, дураки сидят? Они что, забили на сесурити? Как такое возможно, что их сессии живут вечно? В куке что, такая опция есть? Почему тогда их до сих пор не взломали? Почему они, с их количеством пользователей, могут себе позволить вечные сессии, а пупинск-залупинск-дот-рф или там опен-ии-дот-ком не может? Что они там такого ценного защищают, мои тупые вопросы?

Короче, не ебите мне мозги пожалуйста. У компьютеров очень хорошая память, если им, блин, не мешать. А мне даже без ваших истекающих сессий хватит логинов на всю оставшуюся жизнь. Мне еще посудомойку на китайских серверах регистрировать и аккаунты к драйверам мышки создавать.
14.01.202514:47
Банить людей психологически сложно, особенно когда нет принципа. Каждый случай приходится разбирать индивидуально, а это психологически затратно.

Поэтому делюсь принципом. Он очень простой, надо ответить всего лишь на один вопрос: хочу я еще такое видеть или не хочу?

Скажем, чел пишет: «ты тупой, иди учись». Задаем себе вопрос: хочу я, чтобы к следующиему посту он написал такой же комментарий? Очевидно, не хочу. Ну и нафиг его тогда.

Тут важно, что это именно какой-то левый чел, который ничего обо мне не знает, и его мнение никак из поста не следует. Скажем, если бы мой наставник сказал мне «тебе надо подучить то-то и то-то», я бы, конечно, послушал. А когда это абсолютно на пустом месте заявление, да еще и мимо — это просто кому-то нужно место, куда можно выплеснуть свое недовольство жизнью. Я таким местом быть не готов.

Или чел пишет что-то про расовую ненависть (в любую сторону), бросается на людей. Хочу я еще видеть такое под следующими постами? Нет, не хочу. Бан.

Или чел пишет, что программистов на Джаваскрипте надо всех кастрировать и сажать в сумасшедший дом. Какова вероятность, что к следующему посту он придет и напишет «ты не поверишь, но в этот раз к твоей проблеме у меня есть точное техническое решение, возьми вот это и сделай вот так»? Ненулевая, конечно, но близкая к нулю. Поэтому что? До свидания.

Создаю ли я таким образом себе пузырь? Конечно создаю. Пузырь людей, которые позитивно настроены, ценят чужой труд, умеют формулировать свое мнение и не переходят на личности. Я не думаю, что слушать и терпеть говно это обязательное условие успеха в жизни, мне кажется можно и без этого неплохо справляться.

Поэтому баню с легким сердцем и всех люблю.
04.03.202512:18
Вот если бы сейчас ничего не написал, еще десяточка может быть прибавилась бы
06.02.202512:58
В редакторе Fleet от Джетбрейнс (какое-то время назад) сделали плавный текстовый курсор. Типа, ты нажал вверх, а палка не сразу вверх скакнула, а плавно туда анимировалась.

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

И анимация — валидный способ эту проблему решить. За плавными изменениями глазу легче следить, чем за резкими.

НО. Добавляется лейтенси. Курсор теперь ездит, как по болоту — медленно и неохотно. Компьютер сразу же ощущается в сто раз медленнее, хотя по факту скорость не изменилась.

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

Когда-нибудь я сделаю демку и попробую с этим поиграться. Мне кажется, анимированный курсор — одна из фич, которые могут позитивно улучшить опыт от редактирования текста. Хотя, казалось бы, ему уже пятьдесят лет и там давно все придумали. Но надо делать правильно.
01.02.202510:38
Общение переусложнено.

Пишет знакомый: «давай встретимся, кофейку попьем как-нибудь». Я обрадовался, говорю «давай, может завтра?». Он явно напугался, начал сначала про работу что-то придумывать, а потом и что он вообще уезжает до апреля. То есть я очевидно не понял, что он имел в виду.

И вот вопрос. Даже два. Первый: зачем мы используем фразы, которые уже что-то значат, причем что-то конкретное, чтобы сказать что-то прямо противоположное? Зачем говорить «давай», если ты имеешь в виду «не давай». Зачем, блин, добавлять всякие подробности, если ты это все сказал просто из вежливости?

Второй: можно как-то хотя бы как-то последовательно их использовать? Потому что было бы не так плохо, если «давай встретимся» значило «не давай» в близком к 100 или хотя бы 90% случаев. Но это буквально 50 на 50! В половине случаев люди буквально хотят меня увидеть, а я им в ответ «ха-ха, да, я тоже больше никогда не напишу». Я могу запомнить правила, но как запомнить правила, которых нет?

В общем, вы как хотите, а я в эти ваши социальные ритуалы играть отказываюсь. Буду аутистом. У нас хотя бы логика есть.
28.01.202514:02
Некоторые вещи в программировании представлены одинаковыми типами, но имеют принципиально разные сценарии использования. Я бы даже сказал, что это разные вещи, просто засунутые в один тип.

Например, битовые маски. Это вроде бы целое число (инт), но для него не имеют смысла операции сложения-вычитания-умножения-деления, зато имеют смысл побитовые И и ИЛИ. Можно сказать, что это хак от бедности, что их запихнули в обычные инты.

Или массивы vs таплы. Вроде и то и то линейная последовательность, индексированная. Но одно произвольной длины, а другое фиксированной, в одном позиция ничего не значит, а в другом значит все. Хотя оба часто представлены одним и тем же типом — массивом, будет ошибкой звать всякие конкатенации, вставку и удаление элементов на таплах, так же, как и хардкодить доступ по фиксированному индексу в массиве. Питон вроде отличился тем, что официально разделил массивы и таплы (зачем — не спрашивайте).

Долгое время в Джаваскрипте не было мапы, и люди ошибочно использовали для этого объекты. Хотя это тоже две принципиально разные вещи — одно это произвольного размера словарь с однотипными ключами-значениями, а другое — фиксированная структура, где поля известны заранее, а тип значения зависит от поля. Разница примерно как между массивами и таплами, только индексирование не числами, а строками. От непонимания этой разницы вылазили всякие баги, когда нельзя создать пользователя с именем constructor, потому что это зарезервированное поле в объекте. Ну, сейчас-то никто не использует объекты как мапы, конечно, 10 лет уже как прошло.

Еще: строки как пользовательские данные и строки как идентификаторы. В некоторых языках их разнесли — второе стало символами/кейвордами. И опять же, для символов не имеют смысла операции типа конкатенации, подсчета длины или создания из строки, потому что по идее символы должны быть заранее все известны. Когда я вижу как кто-то читает внешние данные и лепит из них кейворды, я всегда нервничаю.

Недавно мне показали еще одно тонкое различие, которое я не раньше не понимал: закомменченный код и поясняющий комментарий. Понятно, в большинстве языков комментарий один: //. Иногда делают различие для многострочного и однострочного, но семантического различия не делают. А оно есть! Я или хочу что-то пояснить, и тогда коммент должен быть ярко подсвечен (как в моей теме Alabaster), или наоборот, временно выключить какой-то код, и тогда его надо наоборот, засерять (делать сереньким). А если вид комментариев один, то нам придется или подсвечивать нерабочий код, или засерять важные пояснения.

В целом общий тип для разных целей это окей. Я не вижу, например, что Питон что-то выиграл от разделения массивов и таплов. Как говорил Алан Перлис, лучше иметь 100 функций над одним типом данных чем по 10 функций на каждый из 10 типов. Мало ли — ситуации разные бывают, иногда и по полям объекта приходится пробежаться в цикле.

Но что хочу подметить — это когда люди не понимают этой неявной разницы и используют _не те_ операции на _не тех_ объектах. Ну а что, поверхностно они тоже подходят (типы сходятся). Типа как положить мапу user id → user в {} в Джаваскрипте. Или взять второе и третье поле из тапла с помощью .drop(1).

Не надо так.
16.01.202515:18
Я уже писал, что программировать сложно (и что я внутренне с этим не согласен). Чтобы вывести Hello World, достаточно пяти строк на C, одного файла и блокнота. Чтобы вывести графическое окошко с кнопкой «Hello World» нужен Xcode, пять минут на запуск, десять экранов визарда, психологическая устойчивость и КМС по поиску пропертей в панельках. Файлов тоже будет минимум десяток. Просто чтобы начать!

Та же история с веб-страничкой. Клиент, сервер, база, DNS, хостинг, nginx, мониторинг процессов, HTML, JS, CSS. По-моему это абсолютно абсурдный прыжок в сложности.

И тут у меня родился прогон, что все заметно успешные девелоперские технологии берут эту многокомпонентную сложность и схлопывают какую-то ее часть. Такой универсальный принцип. Просто чуть схлопнуть стек уже достаточно, чтобы значительно улучшить developer experience.

Пример: Электрон. Он схлопнул разработку под винду-мак-линукс. Было три разных платформы, стала одна общая. Или серверный Джаваскрипт: было два языка, два окружения — сервер и клиент. Стал один общий. Или пресловутый Tailwind — он схлопнул JS и CSS во фронтенд-стеке. Реакт схлопнул HTML и JS, понятно. Firebase/GraphQL схлопнули сервер и базу. Докер схлопнул дев/прод окружения (да, тот факт, что ты сначала пишешь у себя в одних условиях, а потом тебе надо это где-то запустить в других условиях — это тоже источник сложности). Что еще? Наверняка тоже куда-то в эту схему укладывается.

Ну вот. Представляете, насколько грустна и неоправданно сложна наша программистская жизнь, если кто-то приходит, смотрит на нашу схему из десяти компонентов, говорит: «могу схлопнуть вам два узла, надо»? И программисты уже дуреют с этой прикормки.

Что будет, если схлопнуть все до одной ноды, даже представить страшно. Точно без работы останемся.
13.01.202511:35
Не понимаю феномена игры Astro Bot. К выходу PlayStation 5 Сони сделала технодемку про маленького робота, который бегает по внутренностям приставки и знакомит тебя с контроллерами. Демка всем понравилась, и они через пару лет доделали ее до полноценной игры. И она на удивление всем очень хорошо заходит. Кроме меня.

Я допускаю, что геймплейно она может быть отличной. Не проверял, но допускаю. Моя проблема исключительно с темой, а именно с брендингом, а именно с количеством саморекламы. Из того, что я видел, там чуть ли не в каждом кадре или логотипы Сони, или их устройства, или символика с кнопок. Это все вплетено, как я понимаю, в сюжет и в геймплей — враги, уровни, все это тематически оформлено как вечеринка на складе бренд-материалов нашей компании. И это не что-то, что можно пропустить, это сама суть происходящего — уровни про путешествие по внутренностям нашей приставки, уровни про историю нашей компании, уровни про игры, которые мы выпускали.

Ну вот, я не понимаю, как людям не противно от этого. Типа, это как если бы в диснеевском мультике каждый персонаж ходил в футболке с логотипом Диснея. Как-то ту мач, не? Я уж не говорю о том, что трудно проникнуться хоть какими-то чувствами, кроме легкого отвращения, к большой корпорации. Типа, спасибо, консоль классная, позволяет мне играть в игры, которые я, возможно, люблю, так что давайте я у вас куплю консоль, а вы отойдете в сторону и дадите в них поиграть, ага?

Я думал еще, может это ностальгия какая-то? Типа, вот, люди с первой PS, с детства с плейстешном, и тут такой трип в прошлое. У меня этого не было, поэтому на меня это не действует? Но вроде у меня была Sega, и да, их логотип вызывает какие-то легкие ностальгические чувства, но я не готов его терпеть больше, чем одну секунду на запуске.

Но, очевидно, большинство людей думает иначе и просто счастливо обмазаться корпоративным брендингом по самые уши.

Так и живем.
17.02.202513:12
Баги — не всегда плохо. Например, в Сталкере 2 они работают на атмосферу.

Игра как бы про «зону аномалий», в которой происходит всякая ебанина. При этом в игре полно багов. Можно, конечно, расстраиваться, а можно сделать вид, что это такие же аномалии, только они настолько сильные, что пробивают до твоей операционной системы.

Более того, с этими «аномалиями» можно и нужно бороться! Гуглишь, читаешь форумы, ищещь способы, как их обойти (графику скинуть в сложных местах, сохраняться стратегически, в настройках драйвера пошаманить). Вот это я понимаю, иммерсивный геймплей! Совсем другая игра была бы, без багов-то. А то скачать и запустить экзешку каждый дурак может.

Было бы еще круто, если оно тебе начало диск корраптить и твои папки по диску рандомно перемещать. А если зафейлил концовку, то вообще чтобы винду пришлось переустанавливать.

Вот круто было бы!
05.02.202516:20
Вы никогда не задумывались, в какой момент наступает старость? Все мы угараем над старшим поколением, как они верят телевизору, как они не умеют пользоваться техникой, как не понимают новояза.

А когда это произойдет с нами? В какой момент и с чем именно мы перестанем управляться? С тиктоком? LLM? В какой момент мы начнем генерировать абсурдные, неадекватные мнения, которые может имели бы смысл в мире, в котором мы выросли, но были бы абсолютно неадекватны сегодняшнему дню? В какой момент мы станем обузой, которую сметут с лица земли, из генератора трендов превратимся в дедов и бабок, забывших выпить таблетки?

Интересует конкретика. Спасибо.
31.01.202512:13
А знаете что еще бесит? Что телефонные приложения разучились умещаться на один экран. Куда ни плюнь все скроллятся. Даже часы, блин, скроллятся!

Хотя казалось бы — вот у тебя прямоугольник. Подумай, как его оптимальнее всего использовать, и запихни все что нужно сразу, без скролла. Там пикселей больше, чем на телевизоре! Пользоваться сразу станет в сто раз кайфовее.

Возьмем погоду. Что нам нужно? Текущая погода, это две цифры условно. Погода на день. И на неделю. Где-то цифр 20, да? Сколько цифр поместится на самый маленький экран самого маленького смартфона? Сто? Двести? А сколько я нашел приложений, которые бы смогли всю эту базовую информацию показать сразу на одном экране, без прокрутки? Примерно ноль.

Хотя казалось бы. Зато с прокруткой находится миллион. А что, палец не казенный, метрики интеракции растут.

А я всего-то хотел увидеть все нужное сразу.
27.01.202510:07
Последняя вещь про новый Дум и я перестану его мусолить. В трейлере есть момент, когда тебе говорят: «Наконец-то мы дадим тебе поуправлять 30-этажным роботом и мочить 30-этажных демонов. Масштаб просто невероятный». Смотришь видеоряд и никакого масштаба не видишь. Почему?

Тут налицо принципиальное непонимание, откуда берется эффект масштаба. Чтобы что-то ощущалось большим, все остальное должно быть маленьким. Скажем, если бы ты в титане топтал маленьких демонов — это был бы масштаб. Или если бы ты остался своего размера, а на тебя полез 30-этажный демон. Это тоже масштаб.

А если вы все пропорционально увеличили, то это не масштаб, а просто Олег сеттинг отмасштабировал.
15.01.202513:47
Не знаю как вы, а я обожаю когда какой-нибудь экран в городе ломается и ты видишь, на чем он на самом деле работает. Ну там, здоровенный билборд с синим экраном смерти, или банкомат с десктопом Windows 2000 и окошком с ошибкой, или какой-то экран в витрине с линуксовой консолью и логами.

Обожаю, потому что ну интересно же, как оно там на самом деле.

У этого есть еще одно следствие. До какой-то степени я думал (и до сих пор думаю), что работаю только с частью компьютерного мира, что вот те условные виндоус и линукс это частный случай, а для всяких специальных задач люди наверняка придумали более специализированные и более удобные технологии и интерфейсы.

А оказывается, что все банально — тот же бессмысленный десктоп, те же иконки, которые надо кликать, те же оконные декорации. Неэффективно тоже, конечно — тебе всего-то надо играть видео по кругу, а ты целый десктоп поднимаешь. Прямо как Докер. Анекдот про программиста, который выливает из чайника воду и переходит к шагу 1.

Но хуже всего — банально. Прозаично. Никаких других компьютеров нет. Вот эти самые иконки, рамки выделения пунктиром, белая стрелочка курсора — это и есть компьютеры. Это и есть вычисления. Это и есть компьютер сайнс. Никаких других компьютеров у нас для вас нет.

Но при всей печальности сего факта, любопытство перевешивает любые эмоции разочарования, и я радуюсь каждый раз как ребенок, когда вижу очередной экран с ошибкой, превративший узкоспециализированную машину в скучный компьютер на винде.
10.01.202512:37
Давно не трогал SQL, все больше даталог или вообще просто GUI разработка, а тут пришлось. И я, оказывается, забыл, какой это бредовый язык.

Основной бред это, конечно, текстовые запросы. Понятно, что это удобно (было когда его придумывали) чтобы, как там, бухгалтеры сами себе запросы к базе писали на естественном языке. Но блин, 50 лет уже прошло, весь мир на нем работает, неужели нельзя было за это время что-то более machine-friendly придумать? И самое смешное что запросы руками как раз никто не пишет, все ходят из программ, но обе стороны притворяются, как будто это бухгалтер ручками набил — и программист, и база.

Понятно, SQL-инъекции, которые из этого проистекают — стыд. Подсчет запятых и скобок — стыд. Куча бесполезных ресурсов, которые обе стороны тратят на парсинг «естественного языка» — ебаный стыд.

Но больше всего меня удивило, что эти запросы еще и хреново кешируются. Ну там, допустим,



еще куда ни шло. Но вот условный



Если тебе надо найти пользователя с одной из трех ролей — это один запрос, из пяти — другой, из двух — третий. Ну бред же, бред, бред, не может так быть (но есть).

Особенно весело, когда там какие-то айдишники, и их допустим тыща. И вот ты сидишь как дебил в своей программе генеришь эту строку сраную с тысячей вопросиков через запятую, засылаешь в базу, а в базе парсер, и тоже такой — пук пук пук, вопросик, запятая, пробел, вопросик, запятая, пробел.

ДА КАК ВЫ ЭТО ТЕРПИТЕ???

UPD: В моей проблеме были таплы, типа

14.02.202522:54
Захотел тут приложение на проде попрофайлить. Приложение на кложе, кложа в докере, докер в aws-е. К счастью, у нас кто-то настроил скрипт, который пробрасывает REPL-порт, так что подсоединиться к кложе я могу одной командой.

Ну вот, присоединился к реплу, запустил, сгенерил флеймграф, он сохранился на файловую систему. А как достать его теперь? Напоминаю, что файл в джаве, джава в докере, докер в aws-е.

Покумекали с коллегами и сообразили решение: надо из кложи загрузить результат напрямую на flamebin! Там как раз в профайлере и опция такая есть.

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

А вот сходить на сторонний сервер легко, потому что у него простое и понятное имя и АПИ, и интернет-инфраструктура, которую делали тогда еще, давно, нормальные еще люди, она делает доступ тривиальным из любой точки планеты и из компьютера в любой ситуации.

Вот за это я интренет и люблю.
04.02.202511:26
Не понимаю дебатов. Ни самой активности, ни интереса к ней. Две стороны в ограниченное время пытаются убедить третью (зрителей) в своей правоте.

Но это бессмысленно! Почему мне должно быть интересно, кто из них прав? Я вижу их в первый и последний раз. Мне _может_ быть интересно, что там по поводу вопроса, который они обсуждают, но точно не их ораторские способности.

В моем представлении, есть некая объективная истина, некий «правильный» ответ. И с этой точки зрения мне как бы все равно, кто из дебатеров ее защищает и какими аргументами — очевидно, одна сторона будет выдвигать валидные доводы, а другая невалидные, или натянутые, или нерелевантные. И вот опять же — независимо от способностей оратора — я надеюсь, что могу отличить важный аргумент от неважного, релевантный от нерелевантного. Как бы плохо или хорошо он не был представлен.

Понимаете? Вместо того, чтобы _разобраться_, как оно там на самом деле, мы как бы болеем за чуваков, которые отстаивают рандомно распределенные точки зрения. Кто лучше отстаивает, тот лучший дебатер. Особым шиком считается выступать за точку зрения, с которой ты не согласен. То есть они сами в это не верят, а мы почему-то должны?

То есть это такой конкурс красоты, в котором участники соревнуются, кто ловчее сможет меня наебать. При этом они это знают, я это знаю, все это знают, но почему-то все притворяются, что это имеет смысл.

Как видите, я не понимаю дебатов.
30.01.202512:24
Никто не умеет логировать правильно. Логировать надо что? Когда что-то пошло не так. А логируют что? Да все подряд!

Мы стартанули. Мы стартанули-2. Используем версию ядра 27-14-88. Проверяем дату. Дата на месте. Проверили конфиг. Конфиг на месте. Прочитали конфиг. Конфиг прочитался! Закрыли файл конфига. Файл закрылся успешно. Первая фаза старта завершилась успешно. Опа, что тут у нас? Запрос пришел. Так, внимание! Система обработки запросов инициализирована. Приступаю к обработке запроса. Нужно в базу. В базу отправлен запрос! Ждем. Дождались. Ответ от базы получен. Идентифицирован пользователь. Первая фаза парсинга запроса завершена. Начинаем КВН...

И так до бесконечности. Ну невозможно же! Зачем? Зачем мне все это видеть? На каждом запросе? Если все хорошо, то и ладно. Значит все работает. Оно и должно работать. Об этом не надо как-то отдельно упоминать. Это под-ра-зу-ме-ва-ет-ся!

Но это совсем очевидный момент. Чуть менее очевидный — ошибки. Иногда кажется, что если что-то пошло не так, то это исключительная ситуация и о ней точно надо написать! А вот и не всегда. Не всякая ошибка это исключительная ситуация.

Скажем так — если вы на что-то проверяете, то это уже не исключительная ситуация. Юзер пришел без токена? Ну норм, вы же это как раз проверяете. Отлично. Запросил страницу за пределами рейнжа? Нет прав? Сессия протухла? Попытался разлогиниться без логина? Зашел на несуществующую страницу? Ну так вы же это все предусмотрели, ошибку юзеру отправили, чего тут исключительного?

Я уже писал про систему сборки Ninja, которая, если все пошло хорошо, выводит всего одну строчку — «все готово, мастер». Вроде бы Zig пошел дальше, и если все тесты прошли успешно, то он вообще ничего не выводит (я бы одну строчку все-таки оставил, вдруг тесты не подцепились, хотелось бы видеть цифру прогнанных). Учитесь у них. А у джаваскриптеров и джавистов логировать не учитесь.

Вы можете спросить «почему»? Я слышал, что некоторым людям недостаточно только моего авторитета. Что ж, отвечу. Если вы вываливаете кучу говна, то в ней трудно заметить аномалии. А если в лог идут только и исключительно исключительные ситуации, то их и заметить легко.

Ну и проматывать эти полотна устанешь, не без этого.
26.01.202513:18
Смотрю сейчас сериал про американаских юристов, года где-то 2010-го. И они там иногда разговаривают по телефону, им поступает второй звонок, и они такие: ща, погоди, у меня другая линия. И переключаются.

И вот этого я не понимаю. Я знаю, что есть такое явление, как putting on hold (в основном из того идиотско сдизайненного экрана айфона, ну и из кино немножко). Но блин: есть два человека, с одним ты уже разговариваешь, а второй только делает попытку контакта. Уделить внимание ты можешь только одному. Кого выберешь?

Мне кажется очевидным, что того, с кем ты уже разговариваешь. Ну потому что — ну блин, он уже добился внимания, как-то странно его кидать в пользу неизвестно кого.

Но юристы всегда выбирают ответить на второй звонок. В чем смысл? Не понимаю.

(На месте чувака, который позвонил первым, я бы поступил так: повесил трубку и позвонил снова. Тогда моему собеседнику придется кинуть второго чувака и снова переключиться на меня, как будто я третий)
15.01.202510:12
Пятерка моих любимых фильмов Тарковского:

1. Ностальгия
2. Зеркало
3. Гнев
4. Торг
5. Жертвоприношение
09.01.202514:25
У Вани Гришаева (канал igrishaev) заметка про то, как в Телеграме съезжает разметка. Тоже это видел, воспроизводил, и вроде даже кто-то пересылал это разработчикам.

Конкретно эта проблема в том, что регионы хранятся отдельно от текста, оффсетами. Соответственно, когда ты редактируешь текст, регионы могут неправильно пересчитаться и съехать. Понимаем, бывает.

Важный урок тут вот какой: любой алгоритм можно написать один раз. Любой алгоритм можно починить, чтобы он работал на более-менее всех разумных инпутах. Но задача — если ты делаешь действительно массовый сервис — не в том чтобы написать алгоритм правильно один раз, задача — организовать все так, чтобы он переживал изменения, был устойчивым. Приходят новые люди, появляются новые требования, меняется система вокруг, меняется сам алгоритм, но ядро задачи продолжает работать как ни в чем не бывало.

Обычно это означает придумать максимально простую и тупую форму, чтобы в ней было невозможно сделать ошибки. В примере с разметкой, как правильно пишет Ваня, это означает засунуть разметку в текст, типа тегов.

На заре приложения Sketch у них был баг, когда в каких-то случаях cmd+z делал undo не совсем правильно и ты попадал не в то место, с которого начал. Опять же, наверняка они делали что-то умное и сложное вроде вычисления дельт, а надо было делать что-то простое и железобетонное.

Да, звучит как читерство. Писать тупой код? Для этого что ли я так долго учился? Проявить себя и свой ум негде (на самом деле есть где, конечно — придумать хорошее простое решение часто сложнее, чем придумать сложное).

Зато работает, есть не просит, и пользователи счастливы. Мы же ради пользователей программируем, да? Да ведь?
Shown 1 - 23 of 23
Log in to unlock more functionality.