Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример).
Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать?
В Django по умолчанию есть готовая функция slugify для таких случаев.
Но я её никогда не использую. Почему? Потому что её недостаточно!
Приведём пример
>>> from django.utils.text import slugify
>>> slugify('This is a Title')
'this-is-a-title'
Пока всё отлично
>>> slugify('This is a "Title!"')
'this-is-a-title'
Спец символы удалились, всё хорошо.
>>> slugify('Это заголовок статьи')
''
Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить
>>> slugify('Это заголовок статьи', allow_unicode=True)
'это-заголовок-статьи'
Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте.
Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою.
Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку:
🔸1. Исходный текст:
>>> text = 'Мой заголовок №10 😁!'
Взял специально посложней со специальными символами.
🔸2. Транслит
Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги.
from unidecode import unidecode
>>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山")
'N S (r) u P 1/4 Yue Shan'
Очень крутая библиотека, советую👍
В нашем случае получаем такое преобразование:
>>> text = unidecode(text)
>>> print(text)
'Moi zagolovok No. 10 !'
Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы.
А еще наш код уже поддерживает любой язык, будь то хинди или корейский.
🔸4. Фильтр символов
Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона.
>>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text)
>>> print(text)
'Moi_zagolovok_No_10_'
Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_".
🔸5. Slugify
Осталось удалить лишние символы по краям и сделать нижний регистр
>>> text = text.strip('_').lower()
>>> print(text)
'moi_zagolovok_no_10'
Получаем отличный slug! 😎
🌎 Полный код в виде функции.
______________
PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию.
#libs#tricks#django
Предлагаю поговорить о тренажёрах
Нет, не о плейне или мфс, а о тех тренажерах, вкоторых проходят тренировки реальные пилоты
📌FFS (Full Flight Simulator) или фсс в народе - полётный тренажёр, максимально точно имитирующий кабину и поведение настоящего самолёта. Это не просто симулятор для игры — это профессиональное оборудование, на котором пилоты проходят обучение, тренировки и проверку навыков будущие и действующие пилоты.
Как устроен FFS?
⏺Реальная кабина — всё в ней один в один, как на реальном борту: приборы, органы управления и даже кресла.
⏺Специальная подвижная платформа, которая имитирует поведение самолёта в воздухе.
⏺Рядом с креслами пилота располагаются кресло инструктора, который сможет в любой момент подсказать или сделать подарок в виде неисправности.
Почему FFS так важен?
✨Безопасность — на FFS можно отработать любые внештатные ситуации: отказ двигателей, пожар, разгерметизация и др. без риска для жизни и здоровья.
✨Удобная проверка — все пилоты проходят регулярную проверку навыков на FFS.
✨Обучение на будущий тип — отработка процедур и выработка правильной последовательности действий при внештатных ситуациях.
Интересный факт
Стоимость такого тренажёра превышает стоимость реального самолёта
⸻
А как считаете вы, есть ли смысл в фсс или их прохождение вовсе не обязательно?
✈️ - Конечно, без предварительных тренировок на фсс полет не будет безопасен
💯 - Думаю, что иногда можно пренебречь подготовкой
🔥 - Толка в FFS нет, это лишь пустая трата времени и сил
👨✈️ - Я работаю на нём, без тренировок никуда
Лёгкое небо | Подписаться
#aviation#FFS#ГА
🥰Full Flight Simulator от Thales
📌Full Flight Simulator (FFS) стал незаменимым инструментом современной лётной подготовки, создавая условия, в которых грань между тренировкой и реальным полётом практически стирается
🔵Возможности
⬅️Тренажёры Thales сертифицированы на высшем уровне и воссоздают полный спектр ощущений полёта - от вибраций при рулении до реакции самолёта на турбулентность. Визуальная система погружает в реалистичную внешнюю среду, а системы управления точно имитируют аэродинамику
🔵Адаптивность
⬅️Модульная архитектура позволяет быстро адаптировать стимуляторы под различные типы воздушных судов, а программное обеспечение регулярно обновляется, синхронизируясь с изменениями в реальной авионике
🔵Функция FFS
⬅️FFS используются для отработки критических сценариев - отказов двигателей, сложных погодных условий, аварийных посадок. То, что невозможно безопасно воспроизвести в реальном полёте, становится рутинной практикой в симуляторе.
Именно такие технологии формируют стандарты подготовки пилотов и напрямую влияют на безопасность полётов
🔵А вы когда нибудь были на настоящем FFS?
Лёгкое небо
#aviation#Thales #FFS
Процедурный тренажер
📌Каждому члену экипажа необходимо досконально знать процедуры и уметь работать с конкретным типом воздушного судна. Для этого используются процедурные тренажеры, которые являются более доступной альтернативой полноценным авиасимуляторам - FFS. Последние крайне дороги, сложны в эксплуатации и обслуживании, а установка нескольких FFS для обучения нескольких экипажей одновременно становится экономически нецелесообразной.
📌Процедурные тренажеры не предназначены для симуляции полета, но на них можно отрабатывать действия, связанные с запуском ВСУ, двигателей и другими базовыми процедурами. Такие тренажеры ориентированы исключительно на отработку процедур, что и отражено в их названии.
Основные особенности процедурного тренажера:
⏺Функциональность тумблеров и ламп: Экипаж может отработать запуск, выключение систем и другие действия.
⏺Фиксированный штурвал: В отличие от ручек управления двигателями (РУД), штурвал в таких тренажерах статичен.
⏺Низкая стоимость: Тренажеры обходятся значительно дешевле FFS, так как не требуют сложных механизмов, экранов или программного обеспечения. Часто их логика реализована на базовом уровне — с минимальным набором проводов и прямой подачей электричества.
⏺Отсутствие симуляции полета: Тренажеры не имеют визуализации внешней среды и предназначены исключительно для изучения порядка действий.
⏺Возможность массового обучения: Благодаря низкой стоимости можно построить несколько тренажеров и обучать одновременно несколько экипажей.
Такие тренажеры играют важную роль в подготовке экипажей. Несмотря на то, что многим интереснее отрабатывать полеты, без освоения процедур невозможно стать полноценным пилотом. Сегодня такие тренажеры активно используются как для переподготовки, так и для регулярных проверок летного состава. ✈️
А удавалось ли вам, дорогие подписчики, побывать на процедурном тренажёре?
Лёгкое небо
#FFS#Ил76#Процедурныйтренажер
🟣🟣🟣🟣🟣🟣🟣🟣🟣🟣🟣🟣🟣🟣🟣🟣🟣
📌Дорогие подписчики, мы продолжаем модернизацию канала, поэтому сегодня собрали для вас глоссарий с основными хэштегами канала
Основные:
#aviation
#news
#LN_EDU
#airport
Страны:
#Россия
#Белоруссия
Остальные:
#vibe
#metar
#S7TRAINING
ВС:
#A320
#B777
#A350
#B777X
#B737
#A380
#А330
#МС21
#Ту214
#Су57
#ssj100
#B737
#B787
#drone
#аэростаты
Системы:
#Leonardo
#FFS
Компании:
#Airbus
#Boeing
#Embraer
#Cessna
#ВертолётыРоссии
#ОАК
#Росавиация
#Ростех
#winwing#winctrl
#flightradar24#fr24
#Авиатор
Авиакомпании:
#Аэрофлот
#S7#S7Airlines
#ЮТэйр
#Белавиа
#Azur
#Ямал
Аэропорты:
#Шереметьево#Sheremetyevo
#Домодедово
#Внуково
#Жуковский
#Пулково
События:
#Emergency
#деньрождения
#ковёр
#sqw7700
#MayDay
#quiz
#spotting#споттинг
#конкурс
#DubaiAirShow2025#DAS25
Профессии:
#бортпроводники
#crew
#FlightAttendant
🔵Мы непрерывно работаем над тем, чтобы каждый день радовать вас качественным контентом и удобной навигацией по каналу
⬅️Если у вас есть идеи по новым рубрикам на канале - пишите их в комментарии. Кто знает, возможно именно ваша идея будет воплощена в жизнь 👀
Лёгкое небо