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.

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

Фабрицио Тейшейра и Тайо Брага написали, что может сделать дизайнер, чтобы цифровые продукты, над которыми он работает, становились этичнее.

Несколько цитат:

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

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

Хотя мы понимаем, что такая тактика — проектирование ради метрик — реально не всегда полезна, мы называем свои методы позитивно: взлом роста (growth hacking), геймификация и петли вовлечения. Мы стараемся не думать о возможных пагубных последствиях.

«Пока мы не начнём измерять то, что ценим, мы будем переоценивать то, что измеряем», — Ким Гудвин.

Представьте: девушка присоединяется к ЛГБТК-хору в колледже. Руководитель хора добавляет её в группу в Facebook, и Facebook автоматически делится этим действием в новостной ленте студента. Однако девушка ещё не рассказала семье о своей сексуальной ориентации. Могут ли продукты случайно нанести вред?

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

Мы знаем, что призывать к изменениям легче, чем их осуществить. Реальность корпоративного мира суровая и оставляет очень мало места для всего, что не приводит к краткосрочным бизнес-результатам. Дизайнеры имеют уникальную возможность запустить изменения, влияя на продуктовые решения, высшее руководство и самих пользователей. Чтобы в мире произошли изменения, которых мы хотим, нужно с чего-то начать самим.

https://awdee.ru/world-needs-a-tech-diet/

Команда это важно

Проблемы с UI, которые возникли на нашем проекте, были также очень тесно связаны с плохой коммуникацией в команде. Многие команды, которые смогли добиться больших успехов в UI, сделали это благодаря грамотному распределению сил в команде — кто-то прорабатывает продуктовую часть и UX, а кто-то подхватывает работу и начинает накидывать UI.

У нас этого не произошло, и на это было две причины.

Первая, и самая большая — я не хотел делиться работой. Я поставил себе глобальную цель использовать учебу как трамплин для раскачки своих навыков (я писал об этом ранее https://t.me/bukhtiyar/152), поэтому мне было в кайф брать на себя как можно больше нагрузки, а не быть менеджером команды. В итоге ребята, увидев мой запал, вместо того, чтобы включиться в конкуренцию за работу над проектом, отступили и дали мне полный карт-бланш.

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

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

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

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

Как создать маркетплейс с нуля

Последнее время все вокруг делают маркетплейсы. Заметили? Я тут продолжаю досматривать записи с Product Sense, на которые не успел сходить в Минске вживую. Очень зашло выступление от CPO Beru.ru Алексея Журбы с опытом запуска с нуля на таком большом и конкурентном рынке как Россия. Кстати, он ведет неплохой канал @simplestupid.

Beru.ru, оказывается, уже год. За спиной у продукта Яндекс и Сбербанк, поэтому инвестиций много. Но, даже с такой поддержкой, по словам Алексея было много проблем и сложностей. Главный рецепт по решению проблемы курицы и яйца (Продавцы не идут туда, где нет покупателей. Покупатели не идут туда, где нет товаров) по опыту команды Beru заключается в субсидировании и тех, и других. Покупателей — скидками и бесплатной доставкой, продавцов — низкими комиссиями и хорошей логистикой. Это раскручивает колесо или "снежный ком", как этот эффект называют в мире сайтов объявлений. Команда Алексея раскрутила его до х10 в количестве заказов, 9 млн MAU и 2 700 продавцов. Оборот составляет уже более 1 млрд рублей в месяц. Неплохие результаты за год работы!

Конечно, всё это убыточно. Команда строит свои склады, инвестирует в доставку, дотирует нужные им категории товаров, тратит хороший бюджет на маркетинг и т.д. Мне понравился ответ Алексея на вопрос из зала "сколько вы сможете прожить в таком ритме инвестиций?". Он просто показал первый слайд презентации с логотипами учредителей :)

Но самое интересное открытие для меня случилось ближе к концу выступления. Сейчас в UK и США онлайн ретейл занимает в среднем 10%. В России это 4%. Про Казахстан даже говорить не стоит. Так что инвестиции в это направление не пустая трата денег и Х-кратный рост оборотов неизбежен и предсказуем. Вопрос в том, кто дожвет до этого роста и будет №1 на новом рынке?

▶️ https://www.youtube.com/watch?v=e-hUs-lXRFs

Полезная привычка: всегда обьяснять правки

Нет ничего хуже редакторских правок без объяснений.

Лучше всегда рассказывать, что вы там натворили в макетах (или где вы там работаете). Устно или письменно на полях — без разницы. Вот почему это в ваших же интересах:

— Меньше рассинхрона. Конечно, если дизайнер норм, он задаст вопросы, когда что-то покажется странным. Но может понять причину правки по-своему и не задать.

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

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

Короче, объяснения — часть товара, который продаёт редактор.

Артём Полтавцев написал о формах записи в салоны красоты

Часто салоны работают с сервисами вроде YClients и Sonline. Виджет сервиса не общается с сайтом салона, и все параметры записи пользователь выбирает через виджет: услуга, студия, мастер, время. В этом случае структуру сайта лучше максимально упростить.

Сервис GBooking можно связать с сайтом по API. Логика заказа: выбор первой услуги → выбор студии → добавление услуг → выбор мастера и времени. Выбор первой услуги ограничивает выбор студий, так как не везде может быть одинаковый набор специалистов и оборудования.

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

https://vc.ru/design/70728