The After Times
Photo
5. Синтаксис.
Да, я сказал это — у RE уродливый синтаксис.
Причём он не был бы настолько уродливым, если бы не необходимость в двойном экранировании. Сначала слеш, чтобы вставить в RE спецсимвол. Потом ещё один, чтобы этот слеш распознался в строке именно как слеш, а не спецсимвол. Да, с сырыми строковыми литералами проще. Если они, конечно, есть в ЯП.
Скобок много. Группировку за маму, группировку за папу. Хочешь скобку как символ? Ставь ещё один слеш. И ещё один, потому что экранирование в твоём ЯП. Ммммм, обожаю кашу из слешей и спецсимволов по утрам.
А ещё эта чувствительность к пробельным символам. Хочешь разнести на несколько строк, добавить комментариев? Ну, давай, только включи спецфлаг в начале. Если, конечно, используемая тобой либа это поддерживает.
Или вот ещё классы символов — с двойными квадратными скобками и двоеточиями на концах. Максимально вербозно, максимально уродливо, чтобы быть уверенным, что ты понятное имя вместо пачки диапазонов будешь использовать поменьше.
Но топ, конечно — это отрицание. Как нужно показать, что нужно, чтобы не матчился набор символов? Поставь
6. Тут должна была быть лекция на тему того, что регулярные выражения могут парсить только регулярные языки и потому не могут распарсить, скажем, HTML, но в силу того, что по факту то, что в программировании называют регулярными выражениями — это, как правило, различные расширения, делающие язык RE более выразительным, она была устранена ещё до написания
7. RE толком не отлаживаются.
Если что-то идёт не так — можно лишь тешить себя надеждами, что ты найдёшь ошибку при помощи тестов (которые почему-то не поймали эту ошибку ранее) и собственного пристального взгляда.
Говоришь, отладчик подцепишь? Да у тебя программа внутри скомпилированного RE. Естественно, отладчик по шагам этой программы ходить не будет, только по шагам ЯП, который его интерпретирует. Будешь отлаживать программу, пока отлаживаешь программу. we-need-to-go-deeper.jpg
Короче
Игрушка дьявола, дрянь, на которую подсаживаются, как на наркотик, несерьёзная вещь, которую вдруг начали широко использовать неиронично — это всё про Javascript. То есть, простите, регулярные выражения. Я надеюсь (это, если что, фигура речи такая — на самом деле я ничерта не надеюсь, что могу кого-то как-то изменить — я не евангелист, не спикер на конференциях, не Боб Мартин и не Бугаенко, не даже чей-нибудь завалящий тимлид — просто парень в интернете, который пишет о чём-то, в чём якобы разбирается — одним словом, диванный эксперт от мира айти), что вы все поняли, насколько эта плохая вещь и что вы никогда не будете её использовать и не будете давать её детям. Даже чужим.
P. S.: если вам показалось, что это #бомбёжкипост, то вам не показалось.
Да, я сказал это — у RE уродливый синтаксис.
Причём он не был бы настолько уродливым, если бы не необходимость в двойном экранировании. Сначала слеш, чтобы вставить в RE спецсимвол. Потом ещё один, чтобы этот слеш распознался в строке именно как слеш, а не спецсимвол. Да, с сырыми строковыми литералами проще. Если они, конечно, есть в ЯП.
Скобок много. Группировку за маму, группировку за папу. Хочешь скобку как символ? Ставь ещё один слеш. И ещё один, потому что экранирование в твоём ЯП. Ммммм, обожаю кашу из слешей и спецсимволов по утрам.
А ещё эта чувствительность к пробельным символам. Хочешь разнести на несколько строк, добавить комментариев? Ну, давай, только включи спецфлаг в начале. Если, конечно, используемая тобой либа это поддерживает.
Или вот ещё классы символов — с двойными квадратными скобками и двоеточиями на концах. Максимально вербозно, максимально уродливо, чтобы быть уверенным, что ты понятное имя вместо пачки диапазонов будешь использовать поменьше.
Но топ, конечно — это отрицание. Как нужно показать, что нужно, чтобы не матчился набор символов? Поставь
^
. Только не снаружи квадратных скобок, а внутри. Больше граничных случаев богу граничных случаев! Уверен, что потом сможешь прочитать то, что сам написал неделю назад?6. Тут должна была быть лекция на тему того, что регулярные выражения могут парсить только регулярные языки и потому не могут распарсить, скажем, HTML, но в силу того, что по факту то, что в программировании называют регулярными выражениями — это, как правило, различные расширения, делающие язык RE более выразительным, она была устранена ещё до написания
7. RE толком не отлаживаются.
Если что-то идёт не так — можно лишь тешить себя надеждами, что ты найдёшь ошибку при помощи тестов (которые почему-то не поймали эту ошибку ранее) и собственного пристального взгляда.
Говоришь, отладчик подцепишь? Да у тебя программа внутри скомпилированного RE. Естественно, отладчик по шагам этой программы ходить не будет, только по шагам ЯП, который его интерпретирует. Будешь отлаживать программу, пока отлаживаешь программу. we-need-to-go-deeper.jpg
Короче
Игрушка дьявола, дрянь, на которую подсаживаются, как на наркотик, несерьёзная вещь, которую вдруг начали широко использовать неиронично — это всё про Javascript. То есть, простите, регулярные выражения. Я надеюсь (это, если что, фигура речи такая — на самом деле я ничерта не надеюсь, что могу кого-то как-то изменить — я не евангелист, не спикер на конференциях, не Боб Мартин и не Бугаенко, не даже чей-нибудь завалящий тимлид — просто парень в интернете, который пишет о чём-то, в чём якобы разбирается — одним словом, диванный эксперт от мира айти), что вы все поняли, насколько эта плохая вещь и что вы никогда не будете её использовать и не будете давать её детям. Даже чужим.
P. S.: если вам показалось, что это #бомбёжкипост, то вам не показалось.
Stack Overflow
RegEx match open tags except XHTML self-contained tags
I need to match all of these opening tags:
<p>
<a href="foo">
But not self-closing tags:
<br />
<hr class="foo" />
I came up with this and wanted to make
<p>
<a href="foo">
But not self-closing tags:
<br />
<hr class="foo" />
I came up with this and wanted to make
Forwarded from Shady Bytes
99,9999% утра пытаюсь придумать шутку про SRE, но у меня не получается.
#prog
Распространённые задачи, которые вы хотите сделать с помощью git, и как их достичь.
stu2b50.dev/posts/things-you-wante9665
Распространённые задачи, которые вы хотите сделать с помощью git, и как их достичь.
stu2b50.dev/posts/things-you-wante9665
Forwarded from мне не нравится реальность (вафель 🧇)
Обещал подробности, вот они.
Ещё позавчера ночь мне пришла идея о том, что можно сделать хитрую структуру, которая будет как slice (
Если кратко, то у меня получилась структура вида
Поскольку структура
Репозиторий тут: [strs]
Смотрите на свой страх и риск, там всё очень сырое. Работы ещё оооочень много :)
Ещё позавчера ночь мне пришла идея о том, что можно сделать хитрую структуру, которая будет как slice (
[_]
) но только массив строк, которые будут хранится inline
. Полезность такой структуры мне ещё предстоит выяснить, но пока что выглядит многообещающе.Если кратко, то у меня получилась структура вида
struct Strs {
len: usize,
buf: [u8],
}
len
— количество хранимых строк, buf
— все данные, а именно: индексы строк и сами строки. Приправлено это знатным слоем unsafe{}
.Поскольку структура
!Sized
, использовать её можно только за каким-то указателем. Изначально предполагался Arc
, но в целом может быть и Box
, и Rc
, и даже обычная ссылка.Репозиторий тут: [strs]
Смотрите на свой страх и риск, там всё очень сырое. Работы ещё оооочень много :)
Forwarded from Сомнительные поводы для гордости медика
А вы знаете, что если написать цитаты на латыни в прошедшем времени, получатся великолепные эпитафии? ☠️
Мыслил, следовательно существовал.
Учился не для школы, а для жизни.
В здоровом теле имел здоровый дух.
Лечил больного, а не болезнь.
Не навредил.
Всё своё носил с собой.
О вкусах не спорил.
Познал самого себя.
Помнил о смерти.
Пока дышал – надеялся.
Светя другим, сгорел.
Мыслил, следовательно существовал.
Учился не для школы, а для жизни.
В здоровом теле имел здоровый дух.
Лечил больного, а не болезнь.
Не навредил.
Всё своё носил с собой.
О вкусах не спорил.
Познал самого себя.
Помнил о смерти.
Пока дышал – надеялся.
Светя другим, сгорел.
#prog
TIL, что мьютексы из POSIX threads нельзя перемещать.
Once a mutex is created, it cannot be validly copied or moved to a new location. If the mutex is copied or moved to a new location, the new object is not valid and should not be used. Any attempt to use the invalid object will produce unpredictable results.
Здесь. Что ж, это объясняет, почему мьютексы из стандартной библиотеки Rust боксят нативные мьютексы.
TIL, что мьютексы из POSIX threads нельзя перемещать.
Once a mutex is created, it cannot be validly copied or moved to a new location. If the mutex is copied or moved to a new location, the new object is not valid and should not be used. Any attempt to use the invalid object will produce unpredictable results.
Здесь. Что ж, это объясняет, почему мьютексы из стандартной библиотеки Rust боксят нативные мьютексы.
GitHub
rust/library/std/src/sync/mutex.rs at e6d85ea5cbdc376ae388e1079769b67b9eda911c · rust-lang/rust
Empowering everyone to build reliable and efficient software. - rust-lang/rust
Forwarded from You Had No Job
Поправь опечатку:
• Хейт миддл: всё технологии говно, коллеги — чудаки, раньше было лучше
• Хайп миддл: перепишет фронт на Расте, устал от микросервисов и использует макросервисы
• Найт миддл: обожает томатный смузи, никогда не появлялся на утреннем дейли
• Хейт миддл: всё технологии говно, коллеги — чудаки, раньше было лучше
• Хайп миддл: перепишет фронт на Расте, устал от микросервисов и использует макросервисы
• Найт миддл: обожает томатный смузи, никогда не появлялся на утреннем дейли
Forwarded from рандомные картинки
документация к git, идентичная натуральной: https://git-man-page-generator.lokaltog.net/
Блог*
Когда-то я написал на Rust программу, которая переводила числа в строку прописью (т. е. 123 -> "сто двадцать три"). Написал и решил написать статью о том, как написать подобную программу. Это было год назад. Статья всё ещё не готова.
Всё ещё не готова. Кажется, я знаю, чем займусь на выходных
🌚1
#science #article
Замечательная статья про разбор художественного произведения с точки зрения теории информации. А в комментариях дали ссылку на замечательный рассказ Каганова на примерно ту же тему, что и Death Note
Замечательная статья про разбор художественного произведения с точки зрения теории информации. А в комментариях дали ссылку на замечательный рассказ Каганова на примерно ту же тему, что и Death Note
Хабр
Death Note, анонимность и энтропия
В начале “Death Note” местный гениальный детектив по сути занят деанонимизацией: он знает только то, что убийца существует где-то на планете. Никаких улик тот н...