-
Скриншоты на винде
На винде есть утилита для скриншотов рабочего стола, называется “Ножницы” или вроде того (clip). И надо сказать, программа люто, бешено тупая.
Делаю скриншот и хочу сохранить — открывает диалог с именем “безымянный.PNG” (в английской версии untitled.PNG). Не будем комментировать расширение капсом; но блин, почему файл безымянный? Что мешало назвать его текущей датой с точность до минуты?
Далее, если в папке уже есть “безымянный” с прошлого раза, программа предложит его перезаписать. Что мешает проверить, что такой файл уже есть и хотя бы поставить единичку (двойку, тройку)?
В итоге как дурак дописываешь в конец чушь вроде 123, чтобы сохранить скриншот и куда-то отправить.
Вот как на Маке: когда делаешь скриншот, он сперва улетает в угол, и в течении 10 секунд его можно куда-то перетащить без сохранения на диск. А если не успел, он сохранится на рабочий стол с датой и временем в названии. Не нужно париться, сохранил или нет, перезаписал или нет.
Что мешало сделать также Микрософту? Они вообще своими программами пользуются?
-
Мы заслужили
Выражение “X, который мы заслужили” стало затасканным штампом.
- Киберпанк, который мы заслужили.
- Футбол, который мы заслужили.
- Релиз, который мы заслужили.
- Пайплайн, который мы заслужили.
Блин, кто мы? Чем и как заслужили?
Лет пять назад это было туда-сюда, но сегодня терпеть уже невозможно.
-
Картинки в Телеграме

Телеграм бесит ещё одной вещью. Если добавить к тексту картинку, текст поджимается под её ширину. Зачем, какой смысл? Текст превращается в мышиный хвост, справа сплошная пустота. Половина полезного места уходит в унитаз. Всё это ради чего? Чтобы что?
-
Пасхалки
Пожалуй, худшим фильмом, что я смотрел за последние годы, можно назвать “Петровы в гриппе”. В двух словах его можно описать как бессвязный треш. В те времена я читал Медузу, наслушался критика Долина и побежал на предпоказ как последний дурачок.
Фильм — набор флешбеков без какого-либо действия. Женщина убивает мужчину на детской площадке. Это происходит во дворе девятиэтажки, но никто этого не видит. Потом заболевает гриппом мальчик, ее сын. С работы приходит батя-алкаш. У него начинаются приходы и флешбеки со снегурочкой. Потом фильм рассказывает про снегурочку: нищета, театр, случайный секс, беременность. В конце сцена про алкашей и оживший труп.
Я не досидел до конца и ушел из зала, но потом вернулся за забытой вещью. К тому времени свет включили, но люди не расходились. Оказалось, к фильму был приставлен специально обученный человек, который после показа работал со зрителями: отвечал на вопросы “что хотел сказать автор”.
Вот оно, современное искусство: тебе не только продают говно, но ещё тратятся на человека, который объяснит, что это не говно, а режиссёр — тонкий художник.
Но пост не о плохом фильме — их и так хватает, — а о большом числе “пасхалок” в нём. Каждые пять минут в кадре появляются какие-нибудь слова на заборе, которые что-то значат. Это сделано столь топорно, что просто закрываешь глаза. Режиссёр как будто тычет с экрана: смотри, это пасхалочка, скрытый смысл, понимаешь? Улавливаешь?
От одной из сцен захотелось просто выругаться. Парень и девушка идут вдоль огромной инсталляции с буквами в человеческий рост. Буквы показаны наполовину, но распознать их можно. И когда пара шла мимо них, я подумал: наверняка буквы складываются в какой-то “мэссадж”, но читать было лень, потому что от пасхалок я уже устал.
И что вы думаете? Позже я прочёл в интернете, что те буквы складываются в “тебе пизда”. Очень оригинально! Какой талант режиссёра! Наверное, много думал над этой пасхалкой — больше, чем над сюжетом и персонажами.
Если серьёзно, то непонятно, зачем эта пасхалка и все другие. Какую задачу они решают? Фильм как был говном, так остался им со всеми пасхалками, разгаданными или нет. Если накрыть говно бантиком, получится говно с бантиком, верно?
Пожелаю режиссёру скорей понять это.
-
Куки
К сожалению, нам не везёт с веб-дизайнерами. Я имею в виду нам всем, не только мне. Открываешь любой сайт — и тебе стреляют плашкой, что сайт использует куки. Даже если нажмёшь ОК, через пару дней сайт забудет, что ты согласился и выстрелит опять. Или зайдешь с другого устройства и снова терпи. На телефоне вообще беда: плашка занимает в лучшем случае полэкрана, в худшем — весь.
Нам не повезло, потому что не нашлось дизайнера, который бы нормально встроил сообщение о куках в дизайн. Под “нормально” я имею в виду, чтобы оно не выскакивало, не выпадало, а было написано без анимаций и JavaScript.
Я уже говорил, что хорошие дизайнеры должны начинать с печатного дизайна. Есть лист бумаги, и нужно уместить на нём дизайн со всеми требованиями. Никаких тебе выпадашек и анимашек.
А требования бывают разные. Если алкоголь или табак — предупреждение Минздрава занимает не менее 10% от площади макета. Если банк — генеральная лицензия кеглем не менее стольки пунктов. Если кандидат на выборах — лицензия на участие, номер и прочие вещи. В роликах то же самое: показываешь БАД — внизу должна быть надпись “не является лекарством, проконсультируйтесь с врачом”. И не в первую секунду, а на протяжении всего ролика.
И дизайнеры как-то справляются с этим — выделяют площадь, увеличивают кегль, согласуют с юристами и надзорными органами. И только веб-дизайнеры, эти обезьянки с курсами HTTP/CSS/JavaScript, не могут доработать дизайн так, чтобы требование чиновников (тоже обезьянок) выполнялось без выпадашки.
Казалось бы: нужно уведомить посетителя, что сайт использует куки. Так напиши чуть ниже шапки: “этот сайт использует куки”. И ссылку на отдельную страницу, где подробно написано, что такое куки, а ниже форма с чекбоксами, какие куки хранить. Что мешает так сделать?
Но нет, дизайнер быдлокодит всплывающую форму, скрипты, стили. Получил инструменты, а пользуется ими во вред.
Чтоб у него в штанах что-нибудь выпало.
-
Бан в XBox

У меня нет приставки, и я почти ни во что не играю (разве что в старые игры на эмуляторе). Однако я не мог пройти мимо такой картинки в интернете. Это скриншот из интерфейса XBox, где написано, что вас забанили.
Удивляет пиктограмма рукопожатия справа. Что было в голове у дизайнера, который ее добавил? Мало того, что забанили клиента без объяснения причины; так еще нарисовали рукопожатие, мол, дружище, без обид, держись там. Бан пройдет, и мы снова будем друзьями.
Тупизна какого-то вселенского масштаба. В точности как все у Микрософта.
-
Warn
Не допускайте, чтобы в коде встречались логи с уровнем warn(ing).
Во-первых, warn, предупреждение, — это ни то, ни сё. Вроде важнее обычного info, но и не ошибка. Что делать? Продолжать вести наблюдение?
Во-вторых, warn — отличный способ отстрелить ногу. В текущем проекте много фоновых задач, и для них используется библиотека-аналог крона. Каждую задачу она оборачивает в try/catch, чтобы не падать, но при этом логирует исключение с уровнем warn. Мол, тут что-то упало, но не беспокойся. Авось в следующий раз повезёт.
Наш логгер устроен так, что только error попадает в Sentry; остальное идёт в файл, который никто не читает. В результате мы прошляпили кучу ошибок в фоновых задачах — просто потому, что автор библиотеки не считает их чем-то важным. Крон работает и хорошо. Подумаешь, половина задач валится, главное, что у меня всё в порядке.
Не надо так.
-
Фрагментация Телеграма
Когда я пользовался VK, меня удивляла фрагментация сущностей. Заметка, пост, фотография, видео и прочее — всё уже не упомню. Были записи на стене, сама стена, группы, форум. Я никогда не мог запомнить, что и где создавать и удивлялся — почему нельзя свести этот зоопарк к “сообщению”? Да, пусть у него будет много полей: гео-теги, фото, видео, ссылки… но это лучше, чем дюжина разных сущностей! Причём не только для программистов, но и для пользователей, потому что заморочки бекенда не будут на них проецироваться.
Ясно, что ВК был клоном Фейсбука (запрещенная организация) и унаследовал его родовые травмы. В свою очередь в Фейсбуке была та же фрагментация, потому что изначально это был закрытый форум. А на форумах до сих пор такая фигня: создать заметку, фотографию, видео.
Учетку VK, ровно как и других соцсетей, я удалил лет семь назад и ни разу не пожалел.
Удвиляет, что при всем идиотизме этой фрагментации она продолжает жить в мессенджерах. Скажем, я написал заметку на лист А4, она прекрасно помещается в Телеграме. Но стоит добавить картинку или видео — размер сокращается в разы, буквально 150 символов или около. Почему? Потому что это уже не “заметка”, а “картинка”. А в чём проблема показать и картинку, и текст? Очевидно, там какие-то заморочки на бекенде — Эрланг, Mnesia, — но какое они имеют значение для меня как пользователя? Никакого.
Чтобы исправить этот косяк, Телеграм сделал Телеграф — сервис анонимных заметок, в котором текст чередуется с картинками. Телеграфные ссылки открываются в Телеграме без перехода в браузер, но в целом это костыль — решили симптом, проблема осталась.
А с недавними сторисами вышел смех и грех. Совершенно бесполезная функция, которую нельзя отключить. Мало того, что это буквальное неуважение к пользователю, так еще чувствуется вторичность и запоздалое заимствование. Телеграм — хороший месаджер, при чём тут какие-то сторис? У нас что, Инстаграм? Полная нелепица.
В итоге происходит следующее: люди уходят из соцсетей в месаджеры, потому что устали от фрагментации контента. Не хочется групп, стен, форумов. Хочется единого потока сообщений. Для некоторых целей это не подходит, но в целом удобно. И тут опять приходит фрагментация. Деление каналов на топики — как же они глючили и кувыркались в первые недели работы! — и сторизы.
Конечно, найдется тот, кто скажет: не нравится — не пользуйся. Но так не работает. Уже построены связи, диалоги, люди стучатся в Телеграм, и слезть с него так просто не выйдет.
Словом, Телеграм плавно становится комбайном, который “может все”, как китайский Ви-чат. Это немного, но огорчает: мне не нужно всё.
Мне нужно чуть-чуть.
-
Parasite Eve
На первой PlayStation была замечательная игра Parasite Eve. И была там музыкальная шкатулка с красивой темой:
Оказывается, это Бах. Всего-то 23 года прошло, прежде чем я это понял.
Кто играл в эту замечательную игру, почтите ее прослушиванием саундтрека.
-
PG docs, part 5. Notifications
(This is a new documentation chapter from the PG project.)
ToC
Notifications
Introduction
Notifications are somewhat pub-sub message systems in Postgres. They can be described in these simple steps:
-
client B subscribes to a channel; the channel gets created if it doesn’t exist.
-
client A sends a message to that channel;
-
every time client B interacts with the database, they receive messages sent to this channel by other clients.
To handle a message, the client invokes a special handler. This handler comes from the configuration. The default handler just prints the notification map. Pay attention that the handler is called synchronously blocking the interaction with a socket. To prevent the connection from hanging due to the time-consuming handling of a notification, provide a handler that sends it to some sort of channel, agent, or message queue system.
-