Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
#HARD/USDT analysis :
#HARD is currently moving within a bullish channel. The price has retraced and tested the channel's support, indicating a potential rebound soon, with a target to test previous highs. Traders should wait for a breakout above the $0.1627 level to consider a long entry.
TF : 1D
Entry : $0.1627
Target : $0.2400
SL : $0.1264
#HARD/USDT analysis :
#HARD is currently in an uptrend, trading above the 200-period exponential moving average (EMA) and forming new highs. The price is now retracing toward a significant support zone. It is expected that the price will test this support area before resuming its bullish momentum. Following this, previous highs are likely to be tested.
TF : 2h
Entry : $0.1578
Target : $0.2005
SL : $0.1358
#HARD/USDT analysis :
#HARD is currently encountering resistance at the daily TF 200ema. The price is expected to break below the 200ema on the 4h TF and likely test the previous swing low. For a confirmed entry, wait for the break of the $0.1229 level.
TF : 4h
Entry : $0.1229
Target : $0.1013
SL : $0.1370
#HARD result
1st target achieved in just 1 Hour ✅
One more quick profit 7%+💰🤑
👉 More quick profit signals available in premium channel. Hurry up 🏃♂👇
☎️ Contact @MichaelStrategiesVip
Эпик фейл нового iPhone 16: устройства сами перезагружаются по несколько раз в день.
О проблеме с телефонами iPhone 16 Pro или iPhone 16 Pro Max пишут на многочисленных форумах и в сообществах поддержки Apple. Проблема у всех одна и та же: телефоны неожиданно зависают, а потом перезапускаются. Подобная ситуация происходит до 20 раз в день. Установка обновлений проблему не устраняет.
В Apple экстренно меняют неисправные телефоны, но и новые устройства выдают такую же ошибку.
Репутация Apple стремительно рушится.
#apple#iphone#hard
Российские процессоры "Baikal M": это провал или отступление?
В октябре 2019 года компания "Байкал Электроникс" представила российский инновационный процессор Baikal-M — восьмиядерный чип на архитектуре ARM, ориентированный на серверы и рабочие станции. Этот процессор, с частотой до одного с половиной гигагерц и энергопотреблением менее тридцати пяти ватт, позиционировался как решительный шаг к российской независимости в производстве электроники.
Хотя техпроцесс в двадцать восемь нанометров отставал от глобальных стандартов — три нанометра в смартфонах и ноутбуках, — но позволял как минимум решать задачи в госсекторе. Изначально чипы планировали выпускать на фабриках тайваньской TSMC, что обеспечивало достаточное качество. Однако в 2022 году, после введения санкций, сотрудничество с TSMC прервалось, и Россия оказалась перед необходимостью локализации производства.
Предыстория Baikal-M уходит корнями в 2014 год, когда "Байкал Электроникс" создали как совместное предприятие с участием "Т-Платформ" и Института физики полупроводников. Цель — разработка отечественных чипов для замены импортных, то есть пресловутое импортозамещение.
К 2021 году компания получила первые партии Baikal-M от TSMC — около пяти тысяч штук, с планами на десять тысяч ежемесячно. В августе того же года iRU начала сборку ПК и моноблоков на этих процессорах. В 2025 году ввезли восемьдесят пять тысяч чипов семейства Baikal, включая M и S, а также запустили серийное производство микроконтроллера Baikal-MCU. К лету консорциум систем хранения данных анонсировал поставки десятков тысяч Baikal-M и Baikal-L к концу года.
Однако на днях "Байкал Электроникс" объявила о завершении трёхлетнего эксперимента по корпусированию Baikal-M — финальному этапу, когда кристалл помещают в защитный корпус с выводами для платы. Работы вели на заводе GS Nanotech в Гусеве Калининградской области.
По словам гендиректора Андрея Евдокимова, проект в целом оценивают позитивно как шаг вперёд, но развивать его не стали из-за нехватки кристаллов и других компонентов на рынке. В месяц собирали лишь десятки штук, с выходом годных изделий в диапазоне 74%-85%.
Это стало неожиданностью, но зависимость от импортных материалов тормозит масштабирование российских разработок. Baikal-M остаётся нишевым продуктом для госструктур, где его цена (втрое выше Intel или AMD) не критична,. Однако на реальном рынке спрос на такие дорогие процессоры практически отсутствует. Очевидно, что без господдержки и консолидации мощностей отечественные чипы не выйдут за пределы ниши.
Компания, однако, остаётся на плаву. В будущем ожидается запуск процессора Baikal-L на ядрах Cortex-A710 для ноутбуков, с поставками свыше ста тысяч штук в 2026 году. Параллельно разрабатывается серверный Baikal-S2. Но их судьба пока остаётся в тумане и в теории может повторить судьбу "Baikal M".
#hard#железо#байкал
Технология 5D оптического хранения данных в кварцевом стекле зародилась ещё в девяностых годах прошлого века. Но настоящий прорыв случился в 2013 году в лаборатории Оптоэлектронного исследовательского центра Университета Саутгемптона.
Профессор Питер Казанский и его команда впервые продемонстрировали запись и чтение цифровых данных с помощью фемтосекундного лазера, создающего наноструктуры внутри fused silica — особо чистого кварцевого стекла.
В 2025 году стартап SPhotonix, основанный профессором Казанским и его сыном Ильёй, вывел эту разработку на коммерческий уровень. Компания представила 5D Memory Crystal — носитель, способный хранить до 360 терабайт данных на пластине диаметром пять дюймов. Это эквивалентно примерно пяти тысячам дисков Blu-ray.
Подробнее — по ссылке
#железо#hard#технологии#инновации#стартапы