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.

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

Наблюдения

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

Обучение наблюдателей отличается тем, что помимо вводной о проекте к обучению подключается картограф, который подробно объясняет методику наблюдения и принципы работы с картой. Так же, полевиков обучают работе в специальной программе — QGIS.
QGIS — это масштабная открытая геоинформационная система (ГИС), данные которой может использовать любой желающий.

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

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

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

По методологии, на наблюдения выходят обычно 4 полевика. Они работают в разные дни, делается это для того, чтобы каждый из них дал свою оценку и увидел то, что мог не увидеть другой (поэтому так важен опыт и внимательность). Иногда только на четвертом проходе обнаруживается какая-то важная пробема..
Получается, работу наблюдателя можно разделить на две части — работа в поле, где он собирает информацию, и обработка полученной информации за программой.
Благодаря этому, исследователям и аналитикам передается уже готовый проект — файл QGIS, где каждая проблема привязана к координатам, имеет индекс, описание и фотографию. Таким образом, информация уже готова для обработки.

Что-то все начали обсуждать выгорание

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

— Работали несколько (!) лет в напряженном режиме.
— Регулярно работали 9 и более часов в день и в выходные.
— Вписались в несколько проектов: 2, 3, 4 и более.
— Совмещали работу с интенсивными спортивными тренировками.
— Добавили изучение языков или другое системное образование.
— Решили строить персональный бренд: много выступали и писали тексты по ночам.
— Решили, что нужно вставать в 6-7 утра и сразу в бой.
— Было много командировок с ломаным графиком.
— Злоупотребляете кофе или другими стимуляторами для поддержки работоспособности.
— Несколько раз сталкивались с головными болями после переработок.
— 2 и более лет не брали отпуск.

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

Решение вытекает из понимания сути проблемы (усталость): остановиться и признать тот факт, что вы не биоробот, а просто человек. Избавиться от обязательств и проектов, хорошенько отдохнуть, перестроить свой график и подходы к работе ... затем вернуться к работе. Если через два дня вы застали себя в исходном состоянии, ДЕЙСТВИТЕЛЬНО перестроить график и подходы.

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

— Вы молоды и только начали работу.
— Вам совершенно не интересна ваша работа.
— Компания, в которой вы работаете, не делает ничего интересного и значимого.
— У вас на работе хаос, вы делаете все ... и ничего.
— Люди с которыми вы работаете, не становятся вашей командой.
— У вашего руководителя нестабильная психика или склонность к садизму.
— Вы работаете дома один и начали разговаривать с котом.
— У вас и без работы конфликт примерно со всеми и бомбит от всего вокруг.
— В вашей семье/жизни недавно что-то произошло.
— Все вокруг говорят о выгорании и вам кажется, что вы тоже болеете.

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

И да, кто-то должен был это сказать: люди 35+ лет с опытом работы 15+ лет нервно подергиваются когда слышат разговоры о выгорании от совсем молодых ребят.

Несколько мыслей команде.

Благодарность командам, в которых мы были и радость нового смысла в командах — в которых мы будем собой.

Вы — не центр команды. Это правда жизни. Вы — один из атомов притяжения в общей цели. Центр команды — цель. Классный продукт. Отличный проект. Большие деньги. Уважение на рынке и репутация. Не стесняйтесь формулировать для себя цель, которая для команды и для вас — общая. Без этого дух вянет, руки опускаются. Лучшая мотивация — «Команда делает меня крутым, а я команду». Но это не вы в центре команды — команда в центре вас.

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

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

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

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

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

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

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

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

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

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

Артур Абраров написал, чем отличаются нативные приложения на iOS и Android (Material Design).

Выжимки из части пунктов:

3. Общепринятый размер экрана для Андроида — 360 × 640 dp. Для Айоса проектируют под размеры iPhone 5 (320 × 568 pt) или iPhone X (375 × 812 pt).

5. В Андроиде есть встроенный инструмент для навигации назад — Android Navigation Bar. Стрелка «Назад» возвращает пользователя по пройденному пути на шаг назад как внутри приложения так и между ними.

6. В Material каждый компонент находится в конкретном месте на оси Z. Надо осознанно подходить к созданию теней.

8. Для верхнеуровневой навигации Айос рекомендует только Tab bar. Андроид — Navigation Drawer (если пунктов больше 5), Bottom Navigation Bar (от 2 до 5 пунктов) и Tabs.

10. В отличие от Segmented Controls в Айосе, между Tabs в Андроиде можно переключаться свайпами. Если используете Tabs, не добавляйте на экран элементы с похожими жестами: карусель картинок или карточки со взаимодействием свайпами.

12. В Андроиде пользователь может раскрыть Navigation Drawer жестом Edge Swipe слева вправо. Этот жест нельзя использовать для чего-то иного вместе с Navigation Drawer. В Айосе жест возвращает пользователя к материнской странице.

13. Поиск может быть в виде иконки. В Айосе она открывает отдельный компонент Search Bar. В Андроиде поле поиска отображается в Top App Bar. В Айосе поле поиска можно спрятать под Navigation Bar и отобразить его, сдвинув содержимое страницы свайпом вниз. Не стоит этим же жестом обновлять содержимое страницы.

15. В Айосе нет аналогов:
— Navigation Drawer — бургерное меню;
— Banner — сообщить важную информацию и предложить связанные действия;
— Snackbar — кратко сообщить о результате пользовательского действия;
— Chips — показать введённый пользователем контент вместе с дополнительными данными или элементами управления;
— Floating Action Button — закреплённая кнопка основного действия;
— Standard Bottom Sheet — страница, часть которой закреплена в нижней части экрана.

16. В Андроиде нет аналогов:
— Page Control — показать, на какой из страниц находится пользователь;
— Toolbar — панель с элементами управления;
— Steppers — кнопки увеличения и уменьшения чисел, например, количества копий для печати;
— Popover — всплывающая панель, например, для настройки текста в читалках и браузерах.

19. В Андроиде контролы единичного и множественного выбора (чекбоксы и радиокнопки) отличаются визуально. В Айосе это всегда галочки. В Андроиде можно использовать родительский чекбокс для выбора всех вариантов.

22. В Айосе дата выбирается с помощью барабана. В Андроиде — календаря или поля ввода.

23. В Айосе название поля находится внутри поля и исчезает во время ввода текста. Material рекомендует поднимать название при вводе текста, выделять основным цветом его и полосу под текстовым полем.

26. При работе с текстом после долгого нажатия в Андроиде можно продолжить выделение текста. В Айосе появится лупа для точного выбора места в слове.

30. В Айосе можно потрясти телефон, чтобы появился диалог отмены последнего совершённого действия.

Спрашивали про точки развития для дизайнера.

Спрашивали про точки развития для дизайнера.

Точек роста для дизайнера четыре:

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

— Творческое развитие. Создание индивидуальной творческой траектории независимости и автономной работы. Частный проект в котором дизайнер один на один со своей личной задачей. Создание личного проекта с осознанными и глубокими мотивами самореализации.

— Postdigital. Отказ от цифровых методов создания вещей в пользу любой натуральной, аналоговой технологии создания объектов. Классические методы производства, длительные, основательные, трудоемкие, но развивающие практическое, прикладное мышление.

— Обучение. Изучение новой дисциплины. Стратегия на создание качественных преимуществ на рынке из оригинальных комбинаций компетенций. Погружение в области новых знаний для расширения карьерного потенциала и диапазона проектного применения новых знаний. Помогает и преподавание своей дисциплины. Формируется более осмысленная база представлений о своей работе, принципах, приемах и методах.