Избранное

Позднее Ctrl + ↑

Два права

Есть такое слово — «право». Говорят: я имею право на то, я имею право на сё. При этом это слово имеет два значения.

С одной стороны, твоё право — это то, что тебе можно. Я имею право пить молоко: если буду пить молоко, меня не посадят. Вот принимать наркотики права не имею. Буду принимать — меня посадят. Если говорят «ты не имеешь права», имеют в виду, что тебе это нельзя.

С другой стороны, право — это, необъяснимым образом, обязанность других людей по отношению ко мне. Говорят: «рабочие имеют право на достойную зарплату!». Но это значит не то, что их не посадят, если они найдут хорошую работу. Это вдруг значит, что какие-то другие люди должны платить им какую-то определённую неизвестно кем зарплату.

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

Каждый имеет право на жизнь.

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

21-я, 23-я:

Каждый имеет право на свободу и личную неприкосновенность.

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

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

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

В 28-й статье я уже вдруг не «имею» право, а оно мне «гарантируется». В чём суть такого изменения формулировки — никто не знает:

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

Даже самый начинающий редактор мог бы обратить внимание на то, что текст написан жопой и в таком виде его публиковать нельзя. А это — основной закон!

Обратимся к горячо любимой всеми 31-й статье:

Граждане Российской Федерации имеют право собираться мирно без оружия, проводить собрания, митинги и демонстрации, шествия и пикетирование.

Тут вот уже не «каждый», а «граждане». Это просто неряшливость или все эти изменения формулировок должны что-то значить? Здесь, как в начале, слова «имеют право» значат «им можно», но не подразумевают чьих-то обязательств. Предположим, сегодня оппозиционный митинг, а я не пришёл. И потом возмущаюсь: «моё право было нарушено, так как к моему дому не была подана карета, которая бы доставила меня на митинг!» Ясно, что люди бы покрутили у виска. Это же моё право, а не обязанность каких-то других людей. Воспользоваться правом нужно самостоятельно.

Ну или вот, 37-я:

Труд свободен. Каждый имеет право свободно распоряжаться своими способностями к труду, выбирать род деятельности и профессию.

Это да. Но обязаны ли меня брать на работу везде, куда я пожелаю, в соответствии с этой статьёй? Или тут речь только о том, что мне можно выбирать профессию.

41-я:

Каждый имеет право на охрану здоровья и медицинскую помощь.

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

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

Схема метро Санкт-Петербурга

Вместе с Егором Поповым и Сергеем Чикиным сделали схему метро Санкт-Петербурга в двух вариантах — повседневном и нарядном:

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

Сверху просто какие-то кляксы, а справа тупой водопад.

А у нас — красота! Ну и, конечно, не обошлось без изобретения нового обозначения пересадки.

Читайте о работе и смотрите картинки. А также присылате ошибки, какие найдёте.

Фотки с апрельского интерфейсного курса

На мой недавний интерфейсный курс зашёл Вова Колпаков и наделал кучу фоток. Надо будет добавить на страницу курса, но пока руки не дошли. Вот некоторые из них.

Я рассказываю о том, где живут амурские тигры:

Все слушают, а некоторые ещё и записывают:

Перерыв. Летом ребята общаются на улице:

Рассказываю про информационный мусор на примере редизайна одной из схем:

Коворкафе:

Во время того курса случилась наиболее странная история. Вдруг пришёл Максим Ильяхов и принёс торт:

На торте было написано «Илья». На вопросы «чё за торт» Макс отвечать отказывался и всячески изображал загадочность. У меня была только одна гипотеза (хотя и она не очень убедительная): Максу кто-то подарил торт, в очередной раз забыв его имя, и Макс решил занести его в Коворкафе, а тут у меня курс как раз. И он такой: «о, у меня для тебя торт». Торт был успешно применён в качестве органолептического украшения курса.

Задание:

Кто-то делает в Фотошопе:

Кто-то в Фигме:

Смотрю, чё как:

Во время разбора я всё время чё-то тащу в Фотошоп и показываю, как надо. Судя по отзывам, участники очень любят эту часть, потому что это похоже на представление фокусника:

Диаграмма экспедиций Амундсена и Скотта — моя опора:

Днём — обеды:

А это разбор домашки в последний день:

Ребята показывают свои проекты:

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

До 28 июля открыта запись на августовский курс, приходите!

Типографика в Тель-Авиве

А вот и снова Тель-Авив. На этот раз всевозможная ивритская типографика, в основном постера и реклама.

На стене пекарни:

На стене другой пекарни:

На музее современного искусства:

На витрине магазина. Тут почти без иврита, просто симпатично:

Совсем без иврита:

Три ценника:

Реклама на остановке:

Постер:

Ещё постер. Текст про 70 лет израилю набран очень классным шрифтом. Кто знает, как называется?

Долбанутые шрифты везде в моде:

Просто приятно смотрится, хотя максимально тупо:

Алеф (א) как X — это кайф. Вообще, все буквы крутецкие:

Ну и рукописная красота. Особенно люблю рукописные айн (ע)

Меню:

Другое меню. Мне такое уже тяжело читать, но выглядит прекрасно:

Вывеска:

Шрифт, но приятный:

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

Ещё Тель-Авив:

Ещё иврит:

Ховер и клик должны совпадать

Это кажется очевидным, но ошибки на эту тему встречаются так часто, что надо бы написать.

Если у элемента интерфейса есть какой-то эффект при ховере (наведении мыши), этот элемент должен нажиматься. Если элемент нажимается, у него должен быть какой-то эффект при ховере. Зоны, в которых элемент нажимается и проявляет эффект при ховере должны совпадать с точностью до пикселя.

Вот некоторые ошибки, которые мне встречались:

  • Меню на сайте состоит из ссылок, завёрнутых в некоторый контейнер. У контейнера в стилях прописана подсветка при наведении. Вокруг текста ссылки остаются некоторые поля до краёв контейнера, где контейнер подсвечивается, но ссылка не работает.
  • Подчёркивание ссылки реализовано как-то так, что клик в саму линию подчёркивания не вызывает перехода по ссылке, хотя ховер есть. Бывает наоборот: ховера нет, а клик срабатывает.
  • Модальный попап закрывается кликом за его пределами. Ховеры элементов вокруг попапа продолжают работать, хотя клик по ним не вызовет связанное с ними действие, а только лишь закроет попап.
  • Функция элемента заблокирована скриптом, а ховер остаётся. Например: главная кнопка на форме отключена из-за ошибки в заполнении, но продолжает подсвечиваться при наведении, как будто работает.
  • Большой контейнер с картинкой и подписью нажимается целиком и реагирует на наведение каким-то эффектом. В углу контейнера есть маленькая иконка, которая делает что-то другое, например, добавляет объект в «Избранное». При наведении на иконку эффект наведения на контейнер сохраняется, хотя клик в этом месте не вызовет действия, связанного с контейнером целиком.

Эта мысль относится к теме «Обратная связь».

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

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

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

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

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

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

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

Проверка непустоты текста в ПХП

Только не бомбите, я для себя.

В ПХП оператор == проверяет равенство значений безотносительно типа. Поэтому строка «42» и число 42 с его точки зрения равны.

Это удобно: в большинстве случаев не нужно вообще думать о типах, просто сорок два равно сорока двум. Аналогично равны, например и логическая истина и число 1. Когда важно, чтобы значения были не просто равны, но ещё и совпадали по типу, используется оператор строгого равенства === .

Часто важно убедиться, что переменная не пуста. Можно проверить так:

if (@$text) { ... }

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

Но есть нюанс. Число 0 тоже приводится к логической лжи. С этим был связан баг в Эгее: если текст заметки состоят целиком из нуля, заметку не получалось сохранить, потому что до одной из таких строчек этот текст доходил в виде числа, и условие не выполнялось. А это вполне легальный текст заметки.

У меня рука не поднимется исправить так:

if (@$text or $text === 0) { ... }

Поэтому теперь я проверяю наличие текста так:

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

Не так элегантно, как было, но вроде жить можно. Или нет?

Продолжение

Вывески и таблички Дублина

Я уже показывал дорожные знаки и уличные таблички, но осталось ещё много разных вывесок и табличек.

Чёрный «Спар»:

Номер дома:

Отель:

Как поставить большой круглый логотип, если не влезает:

Скромная табличка банка:

Логотипу лайк:

Буквы как будто со старых московских станций метро:

Видимо, тут была аптека:

Клёво, когда пишут прям на кирпичной стене (это новое):

Пожарная бригада:

Обоешная:

Место под надпись как будто из другого дома взяли:

Дублиния:

Клёвая м-м:

В Европе обязательно нужно предупреждать, если у тебя куки:

Руинный бар бывает не только в Будапеште:

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

Ещё Дублин:

Поднять руку, чтобы спросить

В школе нас учили, что вежливо поднять руку, если хочешь спросить учителя.

Это абсолютная хрень, говорю вам как учитель.

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

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

Знайте: ответственность за то, чтобы вовремя спросить — на слушателе. Когда вы поднимаете руку, вы перекладываете свою ответственность на учителя. Учителю и без этого есть, о чём думать. Дождитесь паузы в рассказе и задайте свой вопрос.

Ранее Ctrl + ↓