Канал Ильи Бирмана
13.2K subscribers
5.29K photos
156 videos
21 files
3.42K links
Заметки, советы, находки

Чат для обсуждения тем из канала (офтоп нельзя):
https://t.me/ilyabirman_chat_2

Классический заблокированный чат канала (там творится дичь):
https://t.me/ilyabirman_chat

Разместить рекламу:
ilyabirman@ilyabirman.ru
Download Telegram
В рамках первоянварского расслабона вот вам несколько просто красивых картинок из коллекции.

1. Расписание. Всё кайф, но и шрифт тоже кайф.

2. Набор игрушечек для воспитания хорошего вкуса у детей.

3. Аппарат ИВЛ с подписями и объяснениями на корпусе. Вроде показывал уже когда-то вам.

4. Дракон.

5. Тарелка (это одна тарелка).
С участником курса обсуждаем представление данных в виде круговой диаграммы или таблицы. Я жалуюсь, что сложно понять, как данные взаимосвязаны, а участник говорит, что ему наоборот легко понять. В итоге получается дискуссия о задачах инфографики, и я рассказываю о том, чему мы в этом смысле учим на курсе. 10 минут:
https://www.youtube.com/watch?v=Urn9TDalPg4

Идёт запись на февральский курс, сейчас скидка из-за ранней записи максимальная — 30%. Всё про курс, отзывы и кнока записи:
https://bureau.ru/courses/ui-online/
Audio
Думаем дальше № 3 — «Ощущается как ненастоящие ёлочные игрушки» с Никитой Прокоповым

Выпуск про то, что в Эпле теряются даже те знания о дизайне, которые они же сами и принесли в мир. Успеваете?

0:00 — Приветствия, разогрев и поздравления с Новым годом
0:05 — Фолоу-ап: красная батареечка, когда компьютер трудится
7:53 — Фолоу-ап: развыбор всех радиокнопок
12:37 — Как сократить вопросы про безопасность у Эпла
31:25 — Слова preferences и settings не синонимы
35:02 — Знания не передаются
40:17 — В Доке сломали закон Фиттса
45:37 — Нативные элементы интерфейса: поведение и внешний вид
58:55 — Никита рассказывает про свою библиотеку интерфейсных элементов Хамбл-юай → https://github.com/HumbleUI/HumbleUI/
1:11:26 — Сложный элемент: текстовое поле

Все выпуски:
https://thinkon.mave.digital

РСС, чтобы подписаться в подкастном приложении:
https://cloud.mave.digital/51724
Совершенно бесчеловечный интерфейс — фильтрация гостиницы по цене на Букинге. Если я хочу, чтобы было в пределах 10 тысяч, я должен сделать четыре точных клика, после каждого из которых страница ещё и потупит. Как можно было до такого додуматься? Напоминает шуточные интерфейсы ввода телефонного номера, где каждую цифру нужно выбрать из отдельной выпадайки.
Во втором выпуске подкаста обсуждали шизоидное использование интерфейсных элементов на Ютюбе, как будто ребята ваще не в теме того, зачем они, как их комбинировать. Возможно, кстати, этот дизайн делала нейросеть, все признаки налицо: просто взято чё попало, чтобы внешне было похоже на интерфейс.

1. Вот один из шагов загрузки видео. «Есть ли в вашем видео или его метаданных следующие материалы?» Тут идёт набор выпадаек, из которых, видимо, надо что-то выбрать. Типа вместо ненормативной лексики выбрать нормативную или околонормативную? А вместо контента для взрослых — контент для детей. Других идей у меня нет. Справа написано «Вы дали следующую оценку: Поставить оценку». Кнопка недоступна. Ладно.

2. Если эту дичь прокрутить вниз, там будет чекбокс (!) «Ничего из указанного выше». В смысле?! Выше же выпадайки, а не чекбоксы, вы чё, больные? Мало того, он ещё и сформулирован задом наперёд. Ладно, относимся к этому просто как к тексту, игнорируя бессмысленность оформления. Ставлю галочку!

3. В этот момент все выпадайки вдруг дисейблятся! Что? Это вообще как, почему? Зато кнопка «Поставить оценку» просыпается. Ладно, жму...

4. Всё дисейблится, а на линии сверху вдруг загорается галочка через два шага после этого. Взрыв мозга. О, зато снизу проснулась кнопка «Далее». Жму! Кажется, этот уровень я прошёл, давайте следующий.
Лайкли 3.2

Лайкли — клёвые социокнопки. В версии 3.2 добавилась поддержка соцсети «Икс» — это так переименовался твиттер (<div class="xcom">).

Мы долго думали, что делать, ведь «Икс» — тупейшее название, и все говорят «Твиттер»! Решили просто: мы поддерживаем «обе соцсети». То есть вы можете на свой вкус выбрать, ставить ли себе твиттеровскую птичку или иксовый икс. Можно даже и то, и другое. Работает в любом варианте.

О проекте и зип-архив:
http://ilyabirman.ru/projects/likely/

Гитхаб:
https://github.com/NikolayRys/Likely/releases/tag/v3.2.0

Лайкли ведёт Николай Рысь:
http://linkedin.com/in/nikolay-rys
Доллар в регвыражениях не всегда означает конец строки

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

Есть регулярное выражение (для примера):
/(some|any)thing$/i


Доллар, уверен я, означает «конец строки». Выражение должно проверять, что строка заканчивается на слово something или anything в любом регистре. Но вот оно иногда срабатывает, даже если строка не заканчивается на него! Я в отчаянии уже проверяю впрямую, что строка заканчивается на g или G, и точно вижу, что она не заканчивается. А выражение срабатывает!

Замечаю, что это происходит, если в конце выражения стоит возврат каретки. Думаю: какого хрена? У меня же написан доллар сразу после g, никаких возвратов каретки там! Модификатора m, который разделяет текст на отдельные строки, нет. Может, он как-то там по умолчанию включился, и надо его, наоборот, отключить?

От безысходности иду читать документацию:
https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

Никакого антонима модификатору m не нахожу. Читаю про сам m:

m (PCRE_MULTILINE)
By default, PCRE treats the subject string as consisting of a single «line» of characters (even if it actually contains several newlines). The «start of line» metacharacter (^) matches only at the start of the string, while the «end of line» metacharacter ($) matches only at the end of the string, or before a terminating newline (unless D modifier is set).

Что? Что ещё за нахрен D?

D (PCRE_DOLLAR_ENDONLY)
If this modifier is set, a dollar metacharacter in the pattern matches only at the end of the subject string. Without this modifier, a dollar also matches immediately before the final character if it is a newline (but not before any other newlines).

Как же можно было такую дичь придумать? Исправляю регулярное выражение:
/(some|any)thing$/iD


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

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

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

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

Если вы сорвали настоящий дедлайн, надо сначала сказать: «Мы договаривались, что сегодня я покажу то-то и то-то в таком-то объёме, в том числе... (перечислить всё, что вы обещали). К сожалению, я сделал не всё: не успел сделать то-то и то-то». Все извинения, уточнения и, главное, предложения должны звучать уже после этого. Доверие начинается с того, что клиент хотя бы видит, что вы понимаете, что создали проблему.

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

Оправдания не имеют значения, и по идее надо сразу переходить к предложениям: что теперь делать-то? Но все мы живые люди, и иногда очень хочется объяснить, почему что-то не получилось. Если вы просто начнёте оправдываться, клиент будет думать, что решать созданную вами проблему вы не собираетесь. Поэтому нужно хотя бы сказать: «Я хочу объяснить, почему не получилось, и потом, если позволите, расскажу, как предлагаю исправить ситуацию».

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

Почему «ещё два дня», если завтра уже точно будет? Да чтобы завтра опять не пришлось этот разговор проходить. Так-то никто не расстроится, если вы завтра принесёте.
1. Ох уж этот современный интернет. Скинули ссылку, открываю. Как видите, на десктопе. Видимо, автор считает, что 1024 — это не десктоп?

2. Уменьшаю масштаб на один шаг ⌘-минуса (обычно помогает на таких сайтах). О, слова про «бест юзер-экспириенс». Да куда уже бесте́е! ⌘W
В прошлом году сделали с Ромой Мочаловым обновленьице схемы челябинских трамваев, и она уже висит в трамваях и на остановках повсюду:
https://ilyabirman.ru/chelyabinsk/trams/2023/

В галерее — эволюция за четыре года. Клёво, что пучки худеют: дублирование маршрутов постепенно устраняется. Сами трамваи тоже всё приятнее, а пути — всё обособлённее.