Уличные таблички Ижевска

В Ижевске крутые уличные таблички:

Они как бы наклонены к тебе:

Не то, чтобы это как-то сильно влияет на читаемость, но в этом чувствуется столько человечности, что я растаял сразу:

Номер без улицы:

Бывает более убогая модификация, с такими вот острыми углами:

Наклоняется тоже, но без уважения. А тут ещё и винты жуткие:

А в основной версии даже под винты сделаны пазы красивые:

Цвет полосы вроде бы значит район:

Ну кайф?

Дизайнерам ТСЖ «Центр-1» показалось, что и так сойдёт:

Жители дома справа завидуют жителям дома слева:

А ещё бывает вообще другой дизайн — чёрный, с логотипом «Иж» в углу. Зачем-то табличкой закрыли номер дома:

Этот номер чувствует себя лишним:

«Родной» номер выглядит так:

А номер этого дома мы не узнаем:

Шрифты, конечно, вообще не дружат.

Фотографии из поездки в сентябре 2022 года. Слетайте в Ижевск!

Ещё уличные таблички:

Думаем дальше № 50 — «Просто очень хороший стандарт»

С Михаилом Руденко продолжаем применять его модель ДКЦП к Эгее. Не забывайте, что у Эгеи скидка до конца недели.

Все выпуски подкаста:
Эпл · Ютюб · Я.Музыка · Мейв · РСС для подкастного приложения

0:00 В предыдущих сериях. Вспоминаем выводы об Эгее и ДКЦП из предыдущего разговора
2:25 Эгея должна продолжать нравиться
5:19 Внешний вид, «дефолтность», «выверенность», «стандартность», «устойчивость» и Линди-эффект Эгеи
17:53 Нематериальный вклад клиента в виде сложной установки. «Продукт для эстетически неквалифицированных админов»
20:04 Важность владения своим контентом. «Движок до неустаревающего контента», анти-снепчат
27:11 Как Эгея помогает писать вечный контент. Роли навигации, поиска, тегов. «Старый пост» не значит устаревший
30:44 Кто клиент?
39:03 Ключевой конфликт: хочется писать вечное, но современные соцсети заточены на однодневку
41:30 Фичи Эгеи, помогающие его разрешить. Главное меню и ссылка на случайную заметку
44:19 Автоматические рекомендации и перебивки
46:06 Почему в Эгее нет маргиналий
47:40 Кнопка «Подписаться» и идея шаринга цитат, контекстных комментариев
53:20 Планирование публикаций на будущее вызывает сомнения, потому что это про количество, а не качество
56:48 Секретные ссылки и идея рецензирования
58:37 Монетизация блогов: реклама или пейвол
1:08:26 Деление на платную и бесплатную версию и минусы «варварского» использования Эгеи
1:14:32 Подводим итоги
1:16:56 И всё-таки, кто клиент? Соцдемпрофиль и воспитание авторов

Эгея 11.4

Вышел очередной апдейт 11-й версии (сборка v4169).

Редактор новой заметки

Редактор новой заметки теперь работает надёжнее и не требует интернета. Если хотя бы один раз открыть страницу /new/, то она радикально закешируется и дальше уже будет открываться из офлайна. В сочетании с локальным автосохранением в браузере это позволяет писать заметки из самолёта или где вы там пишете. Если попытаться сохранить заметку на сервер, Эгея скажет, что интернета нет, но если просто перезагрузить страницу, то всё откроется с того же места. Также исправлен досадный баг, из-за которого локальное автосохранение в браузере иногда могло не срабатывать.

Можете попробовать сами в демоблоге.

Загрузка и управление файлами

Добавилась поддержка аудиоформата Ogg, графического формата AVIF, а также улучшена поддержка WebP (при условии поддержки этих форматов используемой сборкой ПХП). Теперь в диалоговом окне выбора файла для загрузки не поддерживаемые файлы забледнены.

Заодно исправлены разные мелочи вокруг файлов и редактора:

  • если вы загружали файлы picture.png и picture.jpg, Эгея могла запутаться и показывать одному другой в качестве превьюшки (кажется, этот баг появился в 11.2);
  • при изменении набора картинок, загруженных в тег, мог устаревать кеш картинок в связанных с ним заметках; теперь не устаревает;
  • при перетаскивании картинок, в именах файлов которых содержались неразрешённые символы, Эгея могла их «потерять» (это случалось, например, при перетаскивании картинок напрямую из Телеграма, где в именах файлов он использовал двоеточия);
  • если попытаться перетащить кучу файлов, часть из которых поддерживается, а часть нет, спиннер загрузки продолжал крутиться до бесконечности;
  • у аудиофайлов превьюшка иногда была ноткой в квадратике, а иногда в прямоугольничке;
  • если при загрузке юзерпика на сервере не окажется нужной для него папки, Эгея попытается создать её, и только если не получится, скажет об ошибке;
  • если перетащить пачку файлов прямо в поле текста заметки, они могли вставляться в неожиданном порядке, а если до этого был выделен кусок текста, то он вообще мог замениться, причём после этого ещё и анду не работало; теперь файлы вставляются по порядку, перед абзацем, в котором сейчас курсор, и в зависимости от браузера может даже работать анду;
  • исправлены ещё несколько эзотерических багов вокруг загрузки файлов связанных с определение того, что такой файл уже есть, нумерацией, автоконвертацией в джипег и т. д.;
  • сообщения об ошибке при попытке перетащить файл неподдерживаемого формата стали информативнее; вообще, повысилась внятность сообщений об ошибках при работе с файлами (загрузка, переименование, удаление).

Безопасность

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

Также по умолчанию куки теперь работают только на ХТТПС-соединении и при локальном использовании (можно настоять на использовании всегда, включив insecure_cookies в конфиге). И ещё улучшена защита от перебора пароля, за что спасибо Жене Степанищеву.

Разное

Что ещё изменилось:

  • Лайкли обновились до 3.2 (теперь умеют называть Твиттер «иксом»; обновились иконки части соцсетей);
  • в списке комментариев у каждого комментария появился якорь в коде, чтобы можно было дать ссылку на конкретный.

Исправлено ещё несколько багов:

  • кажется, поля поиска и ввода тегов, наконец, заработали на Андроиде;
  • если при распаковке дистрибутива вы потеряли скрытый файл .htaccess, инсталлятор должен был сам создавать его и работать гладко, да вот только забывал это делать в некоторых случаях, да ещё и не выводил внятных сообщений об ошибках; теперь и пытается создать всегда, и ошибки выводит чёткие, если не получается;
  • в скрытых заметках, которые обычно отображаются бледно-серыми, жирный текст оставался чёрным;
  • если у заметки было слишком длинное описание для соцсетей, его поле забывало растянуться на весь текст, но вдруг вспоминало об этом при первом же изменении (теперь сразу отображается нужного размера);
  • убраны несколько сообщений об ошибках, появлявшихся под ПХП 8.2.

Как обновиться

Если Эгея у вас оплачена, напишите мне, и я дам вам полную версию 11.4. Если вы пользуетесь сервисом, у вас уже последняя Эгея.

Свежий дистрибутив лайт-версии — в конце страницы «Стать пользователем». Замените папку /system/ новой.

Что послушать — 85

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

Вот что я слушал в последнее время, что мне понравилось:

  1. Павел Дуров у Лекса Фридмана. Круто, чё. Правда, я совсем иначе смотрю на идею дисциплины.
  2. Чейз Хьюс у Джо Рогана. Какой-то эксперт по манипулированию людьми. Рассказывает, какие мы все уязвимые.
  3. Андрей Карпати про настоящее и будущее нейросетей. Я очень порадовался, что он наехал нейросетевой стиль программирования ровно так же, как я (33:10+). В конце очень интересно про то, что нейросети пока очень плохие учителя, но как круто будет, когда станут хорошими; и что учиться мы будем так же, как ходить в спортзал .
  4. Rework: Everybody works. Хорошая мысль, что необязательно быть менеджером, просто если ты старший, ты можешь быть наставником. Это мне нравится.
  5. Новое производство «Тейсти-кофе». Интересно, как заморачиваются с кофе, чтобы получилось нормально!

Станция Фридберг и поезд до Франкфурта

В рамках интереса к транспорту пофоткал станцию Фридберг и внутри поезда до Франкфурта.

Неожиданная и приятная вёрстка экрана с ближайшим и следующими поездами. Вместо строчек — колонки:

Обычный поезд:

Обожаю бесконечное число всяких обозначений и пометок на вагонах снизу.

Нравятся такие поезда с огроменными окнами:

Традиционное германское расписание отправляющихся (жёлтым) и прибывающих (белым) поездов:

Направление на экранчике:

Схема местных электричек над дверью:

Более общая схема региональных поездов. Дизайн совсем другой:

Общий вид вагона. Дизайн экрана опять совсем другой:

Я люблю ставить ноги на сиденья:

Какая-то местная фридбергская железнодорожная будка в окне:

А это выход со станции, когда уже возвращаешься обратно:

Фотографии из поездки в апреле-мае 2022 года. Слетайте во Фридберг!

Близко к теме:

На интерфейсном курсе: эпицентрический дизайн и понятность с первого раза

Разбираем интерфейс конструктора окон. Сначала я говорю о том, что на экране половина места тратится не на то. А потом о том, нужно ли, чтобы интерфейс был понятен с первого раза. 5 минут:

Это фрагмент № 184 онлайн-курса «Пользовательский интерфейс и представление информации». Записано на курсе 5 апреля 2024 года.

Открыта запись на курс, который пройдёт 13 декабря — 11 января, и сейчас −20%. Сейчас −20% из-за ранней записи.

Почитать о курсе

Программа, отзывы, запись

Трек, немножко похожий на мой старый трек

Попался мне трек:

Приятный техно-транс, 2024 год. И напомнил мне о другом треке:

Это мой трек. Пситранс, 2006 год.

Альбом Skin Care целиком — на Саундклауде (нужен ВПН чтобы открыться, но потом играет и без).

Отельный бассейновый тупизм

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

Унисим: апдейт за ноябрь 2025 года

Весной я рассказывал, что использую Унисим. Одна е-симка на весь мир, единый баланс счёта, пополнение рублями. Не надо всякие режимы через сим-меню выбирать, приложение выглядит нормально, а самое главное — связь появляется сразу, а не через десять минут непонятных поисков сети, как было в Дримсиме. С сентября я побывал в Лимассоле, Кракове, Варшаве, Гонконге и Бангкоке — везде связь была отличная, так что продолжаю рекомендовать.

Первые 15 долларов мне закинули на счёт для теста. Потом я дал вам реферальную ссылку (и сейчас даю), чтобы вы могли подключить себе такое тоже. Благодаря этому своих денег я пока ни копейки на это не потратил. Если вы подключитесь по реферальной ссылке, то и вам, и мне добавляют по 5% от суммы вашего пополнения, так что продолжайте делать так и дальше. Можно ещё использовать промокод AZEXAIDO.

Хоть что-то в путешествиях становится легче.

Диалог с «Кодексом» ЧатаГПТ при разрабоке Эгеи

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

Вот краткий художественный пересказ сегодняшнего нашего диалога об Эгее:

— Изучи мой код внимательно и расскажи, что нужно, чтобы добавить на страницу новой заметки такую-то фичу.
— Изучил. Чтобы добавить фичу на страницу с адресом /@/new/ есть два способа: первый не работает, а второй работает, это всего 30 строчек кода.
— Почему ты пишешь /@/new, ведь адрес страницы просто /new/. И зачем обсуждать первый способ, если он не работает?
— Ах да, я просто посмотрел, что когда-то раньше (коммит такой-то десять лет назад) адрес был /@/new/, поэтому решил упомянуть это, если вдруг ты захочешь его вернуть.
— Нет, не захочу. Ладно, давай свои 30 строчек кода.
— Вот, написал.
— Окей, у меня не работает. Вот что я делаю, вот чего ожидаю, вот что получаю, а вот что вижу в консоли.
— Всё правильно, оно и не должно работать, это ожидаемое поведение, ведь ты не написал ещё другой кусок кода.
— Как понять «я не написал»? Это же ты не написал. Ну напиши.
— Вот, написал.
— Хорошо, теперь работает, но грузится немыслимые пятнадцать секунд или около того. Надо мгновенно.
— Исправил одну строчку, теперь должно быть мгновенно.
— Всё работает как надо. Давай теперь разбираться, что ты понаписал. Для чего вот это? А вот это? А почему тут не использовать вот такой уже имеющийся у меня код?
— Это на такой-то случай. Это в принципе можно убрать. А тут твой код подходит даже лучше, молодец, что заметил!
— Ну так исправь.
— Исправил. Но теперь не будет работать из-за того-то.
— Ёлки, так что ж ты сразу не сказал?
— Прости, я не так тебя понял. Хочешь, верну как было.
— Я хочу, чтобы ты убрал лишнее и переиспользовал имеющийся код, где можно, но чтобы всё работало.
— Хорошо, сделал.
— Теперь я заметил, что ты положил новый файл в такую-то папку, а у меня всё подобное лежит в другой. Давай перенесём.
— Перенёс. Заодно убрал комментарии и поменял стиль кода в случайных местах.
— А об этом-то кто просил? Верни мой нормальный стиль кода и комментарии. Ещё ты добавил в конфиг Вебпака исключение чисто ради нашей новой фичи. Мне не нравится это, потому что я никогда не вспомню, что оно там. Придумай, как локализовать всё про неё в одном месте.
— Готово.
— Я смотрю, ты заодно переписал файл .htaccess, добавил туда какую-то отсебятину, а мои правила убил. Это что такое?
— Чтобы фича работала, нужно отправить определённые хедеры браузеру, вот я и добавил правило в .htaccess. Твои правила случайно удалил, прости, уже вернул.
— Так, а эта функция вообще будет у нас работать, если пользователь установил Эгею не в корень блога, а в подпапку? Я смотрю, ты какие-то пути к файлам там пишешь от корня.
— Не будет, и вот тебе объяснение на три страницы, почему именно.
— Ну так а надо-то, чтобы работало. Напиши так, чтобы работало.
— Готово, я добавил по 2-3 строчки разного кода в десяток файлов, теперь всё будет работать. Файл .htaccess теперь будет генерироваться динамически во время инсталляции и содержать нужный путь, чтобы работало в любой подпапке.
— Боже, ты с ума сошёл? Смотри сколько всего ты нагородил. Надо придумать, как сделать, чтобы работало без этого. Зачем ты вообще этот .htaccess трогать вздумал? Во всех остальных случаях я шлю хедеры просто из кода на ПХП функцией header (). Почему вдруг именно тут ты решил это сделать через .htaccess? Давай сделаем как везде.
— Ты прав. Я написал ПХП-файл и положил его вместо .htaccess, чтобы он слал нужные хедеры. Всё, что нагородил до этого, удалил.
— А почему этот ПХП-файл ты положил туда? У меня в проекте такого нет, у меня весь ПХП-код живёт в одном месте, а не в раскиданных где попало ПХП файлах. Если надо, чтобы этот файл отдавался по определённому урлу, для этого у меня есть роутер. Разберись как он работает и положи свой ПХП-код в логичное место, как у меня принято.
— Сделал. Я ещё написал вспомогательную функцию, которая конкатенирует две строки, и теперь вызываю её в двух местах!
— Жесть. Я удалил твою функцию и просто конкатенирую две строки напрямую. Я ещё переписал твой код так, чтобы он стал вдвое короче, убрал часть проверок. Убедись, что я ничего не сломал.
— Твоё исправление выглядит отлично! Действительно, ничего этого проверять не нужно было! Осталось только убедиться, что значение не заканчивается слешем.
— Не понял. Зачем ты написал, что осталось убедиться? Я ж эту проверку как раз оставил, то есть убеждаюсь.
— Да, убеждаешься, это я так просто написал, разговор поддержать...
— Также я смотрю, ты ещё и часть логики в шаблон дизайна засунул. Где такое видано? Перенеси эту логику в ядро, а в шаблоне дизайна используй уже подготовленную переменную.
— Код из шаблона в ядро перенёс, заодно добавил там других ненужных проверок.
— Убери.
— Убрал.
— Так, а вот эта штука у тебя зачем?
— Это нужно для того-то.
— Но для того-то у меня уже есть вот такая своя штука, давай использовать её.
— Давай. Отличная идея. У тебя тут ещё и такой-то случай учтён, ну надо же! Какой ты молодец!

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

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

Ранее Ctrl + ↓