PHP Intl. Правильная транслитерация кириллицы

PHP Intl. Правильная транслитерация кириллицы

Современные фреймворки предоставляют готовый функционал в составе библиотек или хелперов для работы с библиотекой ICU (http://site.icu-project.org/home) через API Intl.

Такой функционал необходим для поддержки интернационализации разрабатываемого веб-сервиса. На основе указанной локали могут устанавливаться форматы отображения валют, времени и даты, а также подбираться настройки для инициализации транслитераторов (https://www.php.net/class.transliterator).

В разделе «Телеграм-каналы (https://chulakov.ru/notes)» сайта Студии во время автоматического импорта постов из наших каналов производится транслитерация названий заметок для формирования ЧПУ (https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BC%D0%B0%D0%BD%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_URL).

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

Например, уникальная часть URL заметки (https://chulakov.ru/notes/development/php-8-pocti-novogodnij-podarok) про релиз PHP 8 после транслитерации имела вид php-8-pocti-novogodnij-podarok. Замена некоторых букв произошла некорректно.

Для того чтобы транслитерация кириллицы производилась по традиционным правилам, необходимо произвести конфигурацию объекта-транслитератора (https://www.php.net/manual/ru/transliterator.create.php), передав следующее значение параметра $id:

Russian-Latin/BGN; Any-Latin; Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC;

После такой конфигурации результат преобразования наименования заметки изменится на php-8-pochti-novogodniy-podarok.

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

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

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

Вылезаю, озираюсь по сторонам и понимаю, что забыла про то, что у меня есть я, а значит что-то кроме работы и профразвития.

Отношения и близкие люди заброшены, а социальные связи и сети безжизненны.
Сухи как пустыня, и только перекати поле подгоняемое ветром обнаруживает жизнь, пролетая мимо. И ты стоишь, вынырнувший, смотришь на все это, ветер волосы треплет и песок гонит, солнце в глаза светит, а ты понимаешь что ещё пару месяцев сюда не вернёшься.
Ну и ладно. Я ведь не жалуюсь, а радуюсь самореализации 😄

А ещё знаете, вот это, когда у тебя в жизни (да какой там жизни, я про работу конечно) все изменилось до неузнаваемости, а ты ещё полгода рассказать ничего не можешь.
Ибо ну как же рассказать — а вдруг ничего в результате не получится? Или то что ты рассказываешь «как делаю», окажется ошибкой?
Надо историю сложить, осознать и отрефлексировать опыт, а потом рассказывать.


6 лет назад я начала свою карьеру как UX-исследователь. Саня называл это вагиней глубокой UX-аналитики.

С тех пор всё изменилось несколько раз. И всё имеет цикличность.
Только сейчас, спустя 6 лет, пришло осознание, почему роль одинокого(!) начинающего UX-исследователя в большой айтишной компании так сложна и часто обречена на провал.
Об этом подробно расскажу в следующий раз 😉

Лишние люди на совещаниях

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

Такой диалог я слышал много раз перед обсуждением проекта или дизайна с заказчиком. У многих больших компаний, а особенно у госов в ДНК заложено: позвать как можно больше людей на совещание. И вот сидит целая толпа и обсуждает то, о чём ещё 5 минут назад многие даже не знали.
Эффективность такого совещания очень сомнительна: активничает 10% участников, а остальные ждут, когда закончится и думают: лишь бы слово не дали. Если молчуну дадут слово, то в лучшем случае, он скажет, что добавить нечего. В худшем — начнет на серьёзных щах фантазировать и предлагать ерунду или суперфункции.

Хуже всего, когда лишних людей позвали обсуждать дизайн 🤦‍♂️ — случайные люди не всегда молчат. Включается синдром актёра — позвали критиковать, значит надо критиковать. А это же дизайн — в нём все "сильные критики".

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

Чтобы совещание удалось:

  • Нужна повестка — все могли заранее подготовиться и прийти с обратной связью или мнением. Надо избегать совещаний без контектста.
  • Не нужны молчуны — все, кого позвали были активны. Кто отмалчивался — не надо больше звать в эту тему.
  • Нужны зафиксированные итоги — с ними можно ознакомить остальных, да и в целом полезно зафиксировать. О навыке резюмировать итоги обсуждений есть отдельная заметка (https://t.me/proudobstvo/187).

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

Почему пользователи уходят

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

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

А вот ситуацию, которая попадает во вторую категорию, анализируем, находим истинную причину неудовлетворенности и извлекаем из этого максимальную пользу. За пользователей из этой категории стоит побороться, узнав, что им не нравится. Если цена, то предложите скидку. Если не хватает функционала, то узнайте, как улучшить продукт. Но не забываем про положительный ROI. Нелогично тратить $50к на разработку нового функционала, чтобы вернуть одного пользователя LTV c которого будет $1к.

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

Принцип которого мы придерживаемся это Customer Obsession. Мы проводим много времени разговаривая с клиентами, собираем отзывы и только после этого приступаем к работе. Это позволяет проактивно предотвратить отток пользователей и не тратить времени на поиски причины.

Думай как Билл Гейтс

Смотрю сейчас на Netflix документальный сериал про Гейтса. Очень увлекательно! В последней серии зацепил диалог следующего содержания:
— Билл, как ты думаешь, Microsoft монополист?
— Если монополия это большая доля рынка и краткосрочная власть над ним, то ответ да. Если вы подразумеваете, что у нас непобедимая позиция и никакой более удобный и эффективный продукт не может её пошатнуть, ответ нет.

И ведь правда. У слова монополия очень сильная негативная составляющая. Но разве это плохо? На свободном рынке, если не рассматривать государственные и прочие нечестные монополии, большая доля рынка говорит о том ,что продукт хорошо решает проблемы пользователя. Да, он может быть кривой и показывать вам периодически "синий экран сметри". Но он, чёрт побери, работает! В сериале есть вставки из хрорники, где народ расхватывает коробки с Windows 95, буквально сметает её с полок :)

Сейчас модно ругать Windows. Но ведь именно эта ОС сделала революцию на рынке персональных компьютеров. Сначала её, конечно, сделал Apple в сфере железа. Именно два Стива сделали компьютер персональным (Джобс и Возняк). Но они были нацелены на определенную ЦА. А вот Майкрософт сделал ПК по-настоящему массовым.

Сейчас Гейтс много времени уделяет проблемам энергетики и климата. Они с женой потратили кучу денег (28 миллиардов долларов) на стартапы и инициативы, которые пытаются сделать жизнь лучше в масштабах планеты. Крутой сериал про крутого бизнесмена и просто очень умного человека. Советую!

Семантика и синтаксис интерфейса

Семантика — то, как элементы интерфейса сочетаются, группируются и как их воспринимает человек.

Cемантика опирается на ожидания от продукта и привычки. Например, что в форме регистрации есть кнопка «Зарегистрироваться», а в соцсетях — лента новостей.

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

Элементы без текста — чаще всего просто иконки и фреймы. С них не так-то легко считать информацию.

К чему это я? Круто, когда UX-писатель умеет писать. Но ещё круче, когда разбирается в семантике. Это уже хай левел.