Позднее Ctrl + ↑

Эгея v3386 и v3416a

Ещё немного фиксов для Эгеи 2.8, сборка v3386:

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

Если будете обновляться, замените .htaccess, папку system и все подпапки в themes. Свежий дистрибутив — на сайте движка.

Заодно обновилась Эгея 2.9 альфа для авантюристов.

Минское метро

Вход на русском:

1

Вход на ту же станцию на белорусском:

2

Путевая стена станции на русском:

3

Путевая стена той же станции на белорусском:

4

Вход на другой станции:

5

Путевая стена на другой станции:

6

Под землёй:

7

Урна:

8

Касса:

9

Инфосос:

10

Навигация на платформе:

11
12
13

Поезд:

14

Линия:

15

Не прислоняться:

16

Выход:

17
18

Фотографии из поездки в июле 2016 года. Во всех заметках про путешествия снизу есть поиск дешёвых авиабилетов. Слетайте в Минск!

Ещё Минск:

Ещё метро:

Не спеши, когда плывёшь

Ого, предыдущая заметка с тегом «бассейн» написана больше десяти лет назад.

Я плаваю так: за 45-минутный сеанс стремлюсь проплыть как можно больше. Кажется, когда-то один раз мне удалось проплыть два километра, но нормальная для меня дистанция — 1700-1800 м:

В прошлый раз после 500 метров я подумал: о, у меня же умные часы, которые всё про меня знают. Ну-ка, попробую-ка я проплыть следующие 100 метро очень спокойно, никуда не спеша, но зато буду следить за техникой. Интересно, как это повлияет на время. Вдруг, когда я стараюсь плыть быстро, и прилагаю больше сил, я ничего не приобретаю из-за ухудшающейся техники?

Доплыл, пошёл переодеваться, достал телефон, смотрю — всё так и есть:

Круг, после которого стало 600 метров, занял у меня 2:30 при среднем времени круга 2:31, а последние круги, когда я ускоряюсь «чтобы больше успеть», получаются самыми плохими. Также свой экспериментальный круг я проплыл за 60 гребков, при средних 74. (Самый первый круг вообще можно не считать, потому что я его плыл кролем.)

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

Проверка непустоты текста в ПХП: программисты пишут

Недавно я писал о проверке непустоты текста в ПХП. Конечно, суровые программисты подняли меня на смех: да если у тебя код так написан, что ты не знаешь, какого типа у тебя переменная, то чего от тебя вообще ждать. Стоит отметить, что среди моих знакомых есть несколько очень сильных программистов. Разумеется, никому из них не пришло в голову высказываться в подобном ключе. Крутые программисты знают, что нет смысла критиковать решение, пока не знаешь подробности задачи.

Напомню, я предложил проверять так:

if ((string) @$text !== '') { ... }

Мне понесли варианты. «Специально для этого есть функция empty ()»:

1

if (!empty ($text)) { ... }

Это код с ошибкой: для (int) 0 проверка будет пройдена.

2

if (trim ($text) !== '') { ... }

Это код с двумя ошибками: если переменная $text не определена, выведется предупреждение; если текст состоит из пробелов, проверка не будет пройдена.

3

if (isset ($text) && trim ($text)) { ... }

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

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

4

if (isset ($text) && ($text !== "")) { ... }

Это длинный и мусорный код, и снова с ошибкой: и для false, и для NULL проверка будет пройдена.

5

if (isset ($text) && (string) $text !== '') { ... }

Этот код — длинная и мусорная версия моего. В нём просто соблюдён религиозный ритуал «не использовать оператор @», ну и он дополнительно полагается на ленивое вычисление логики.

Интересно, что никто из советчиков не указал на ошибку в моём исходном варианте (я её увидел сам, пока смотрел на предложенные альтернативы): если в переменную попадёт массив, проверка сработает, потому, что (string) от любого массива — это "Array". В зависимости от того, что дальше делать с этой переменной, это может привести к проблемам. В этом удлинённом варианте ошибка та же.

6

Все варианты кода с оператором ?? — с фатальной ошибкой: такого оператора нет в ПХП 5.4, на котором должна работать Эгея.

7

if (@strlen ($text)) { ... }

Этот код работает правильно.

Неприятность в том, что глядя на него нельзя этого сказать с уверенностью. Нужно читать документацию. Оказывается, у strlen () есть полезная особенность: если передать ему массив, он вернёт 0, а вовсе не 5 ("Array"). Правда, это только начиная с ПХП 5.2, хе-хе. В документации не сказано, как он ведёт с себя с переменными других типов, поэтому нужно идти дальше и читать документацию по неявному преобразованию типов, чтобы узнать, что strlen (0) вернёт 1, как мне и требуется. Полагаться на такие штуки, когда ожидаешь какого-то чёткого и тонкого поведения, как-то некомфортно.

Поэтому я пока оставил свой вариант, забив на потенциальную проблему с "Array".

Эгея 2.9 альфа для авантюристов

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

С версией 2.9 процесс будет другим. 2.9 — это такой «Снежный барс» среди Эгей. Накопился технический долг, так что я не планирую новых громких фич, но планирую переделать разное под капотом. У переделки должно быть несколько приятных побочных эффектов, и она должно помочь мне с дальнейшей разработкой. Поэтому мне важно пораньше понять, что у кого сломается.

Эгее больше 15 лет, и она уже переживала несколько переписей разных фундаментальных общедвижковых подсистем, таких как механизм работы с темами оформления, роутер, текстовый форматтер. Много чего приходилось переписывать, чтобы обеспечить поддержку УТФ-8 и переключаемых языков интерфейса. Пришло время перелопатить ещё кое-что из очень старого кода.

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

Женя Степанищев на днях пытался оставить комментарий во время перезагрузки сервера, получил вот такое:

Теперь если база недоступна, Эгея показывает аккуратную страницу-заглушку:

Ещё предстоит сделать так, чтобы комментарий в таком случае не терялся.

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

Ошибки при этом пишутся в лог, причём туда попадает информация о том, из какого места в коде какой именно запрос в базу делался и для чего.

Если вам интересно поэкспериментировать, то скачайте, пожалуйста, свежую сборку v3445a, поставьте себе, и попробуйте с ней пожить. Не забывайте, что нет вообще никакой поддержки и даже на несложные вопросы вроде «а в каком файле ты хранишь то-то» я могу отвечать долго. Если в вашем блоге есть хоть что-то ценное, сделайте максимальный бекап. В моём блоге сейчас, конечно же, крутится именно v3445a. Чтобы обновиться, замените /system/ и все подпапки в /themes/.

(В стабильной ветке 2.8 ещё будет апдейт.)

В заметке обновлялась ссылка на сборку: были 3406a, 3409a; 3416a; 3435a; 3445a.

См. также: Альфа 2.

Набор в школы бюро — август 2019

Набор в школы бюро — август 2019

Я писал о работе в бюро:

В бюро создана система роста: старшие передают знания младшим, причём не только о дизайне, но об организации работы, юридической стороне дела, отношениях с клиентами.

В 2014 году мы открыли Школу стажёров, в которой преподаём это тем, кто хочет стать дизайнерами. С тех пор у нас появились школы редакторов и руководителей, поэтому дизайнерская школа теперь называется «Школой дизайнеров». Уже защитили дипломы выпускники первых девяти наборов. И сейчас идёт новый набор.

С каждым набором мы что-нибудь улучшаем. Пару лет назад в школе дизайнеров появились два новых предмета: «Данные и визуализация» и «Вёрстка и прототипирование». В прошлом году изменились правила поступления — Артём Горбунов объяснял в Фейсбуке. Для нового набора я переснял несколько лекций по своему предмету, и ещё пересниму. Про это ещё отдельно напишу.

Сейчас 24 июня. Если подать заявку сегодня или в любой день до 30 июня, то за срок подачи получите 4,5 балла, потом станет 4 и постепенно будет падать.

А ещё у нас есть демодоступ с примерами лекций, тестов и заданий по всем дисциплинам. Можете представить, каково быть студентом. То, что вы видите — это одна неделя учёбы.

По поводу школы ещё было лукэтмишное интервью Артёма Горбунова «Как научить дизайнера работать»:

Бывают студии, которые открыли менеджеры, они, как правило, очень успешны. Но если ты смотришь их работы, это ужас. Менеджеров дизайн не волнует, их волнует организация производства. У студий, открытых дизайнерами, хорошие работы, но они живут только 2-3 года, потому что дизайнеры, к сожалению, не очень интересуются управлением проектами, переговорами. Мы сами долго преодолевали эти проблемы и несколько раз оказывались на волоске от закрытия. Но тем не менее мы эти проблемы раз за разом решали и теперь хотим научить этому остальных.

Мой предмет в школах — «Интерфейс и информация». Среди тем лекций — технозависимость, привычки, информационные слои, навигация на сайтах (всё из курса «Пользовательский интерфейс и представление информации»). Практические задания — проектирование сайта и интерфейса веб-сервиса. Плюс дипломный проект.

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

Учиться у нас дорого. Но польза ещё дороже: посмотрите отзывы участников наших курсов (сложите, кстати, стоимость участия во всех них). В школе есть содержимое наших курсов плюс ещё разные темы. У вас есть возможность просматривать лекции многократно, чтобы разобраться во всех темах. Есть тесты для контроля знаний. Практическая часть сильно расширена. А на третьей ступени студенты вообще получают месяц личного внимания преподавателей. И ещё у нас есть бесплатные места для лучших.

Сама система образования у нас суперпродвинутая — как наша система работы «Ресурс»: к нам не нужно приходить (или прилетать), всё работает через интернет. Вы изучаете теорию и делаете задания в своём режиме, находясь там, где вам удобно учиться. При этом мы знаем, как контролировать успеваемость и не допускать халявы. Заодно эта система даёт понимание того, как работает бюро.

Посмотрите программу школы. Кажется, если её просто прочитать, уже умнее станешь. Я вообще смотрю и тащусь: сколько всего разного интересного у нас. И это только чтобы стажёром стать. Представляете, сколько ещё всего вас ждёт уже во время работы?

Ещё про «стажёров» хочу сказать. Кто-то писал, мол, чё за фигня, год учиться и только каким-то там стажёром стать? Думают, будто это совсем для начинающих. Это вот проблема. Дело в том, что хороших дизайнеров крайне мало, но при этом себя таковыми считает пол-интернета. Невозможно найти человека, которому можно доверить дизайн даже одной странички, обязательно первые несколько раз пришлют полную фигню. При этом все хотят зарабатывать кучу бабла. Мы вместо того, чтобы ныть по этому поводу, решили взять дело в свои руки и учить людей. Человек, закончивший школу стажёров, стажёр по меркам бюро — это «хороший дизайнер из интернета» по общечеловеческим меркам. Для многих компаний это просто состоявшийся спец.

Вступительные задания и заявка на поступление:

Занятия начнутся 26 августа, но набор продлится до конца понедельника 12 августа.

Иерусалим: рынок Махане-Иегуда

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

Широкая улица между рядами:

Внутри:

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

Осталось меньше торговцев-стариков, меньше ценников от руки.

Продают кучу туристического хлама. Весёлые кипы:

Зато на рынке находится, вроде бы, единственная в городе хипстерская кофейня «Ростерс» (кофе — более-менее):

Сидишь, пьёшь кофе, смотришь на жизнь:

Рядом с самим баром «Ростерса» (слева) ещё дополнительная ниша со столиками для клиентов (в центре):

Табличка:

Ещё таблички:

Самая криповая уличная табличка в мире:

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

Фотографии из поездки 21 марта 2018. Во всех заметках про путешествия снизу есть поиск дешёвых авиабилетов. Слетайте в Иерусалим!

Ещё Иерусалим:

Обновились ещё три моих лекции в школах бюро

Я уже писал о новой лекции «Анимация» и апдейте лекции «Обратная связь» и даже показывал тизеры (или трейлеры, я всё время путаю).

Переснял ещё три лекции: «Что такое интерфейс», «Человечность», «Технозависимость». На этот раз без тизера — вместо этого мы решили первую из лекций просто открыть всем. Она вводная в мой предмет, коротенькая:

А ещё теперь уже идёт новый набор в школу стажёров. Наверное напишу про это ещё отдельно, но вы уже записывайтесь и приходите учиться.

Ранее Ctrl + ↓