Исключительность

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

Пользователь ввел строку вместо числа — исключение, приложение запущенно в первый раз и не успело создать рабочих файлов — исключение. Фильтровать ввод и проверять наличие ресурсов ведь так скучно, «давайте подумаем об этом после».

А эти блоки, когда «хрен знает, что может случиться, давайте просто пропустим», обернутые в try-except? Мы все равно таскаем с собой обработчик исключений во время исполнения, так пускай работает. А экономить на ресурсах процессора в наше время вообще моветон.

Идиотизм.

Кодогенераторы — зло

Есть такой проект kaitai-struct. На основе YAML-спецификации формата бинарного файла создает код на десятке языков, позволяющих получить информацию о любой части структуры файла в этом формате.

И все вроде бы хорошо — он умеет разбирать типы, задавать «магические» сигнатуры, задавать сложные структуры, разбирать повторяющиеся блоки, циклы, условия, работать с «терминаторами» строк — но… попробуйте разобрать формат PDF и вы поймете, что это невозможно. Из-за простейшего вроде бы условия «до тех пор, пока не встретится слово endstream». Просто потому, что терминатором может быть один байт, а «читать до конца» он умеет только в режиме «до конца файла». Просто не предусмотрели.

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

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

А кто ты?

Я «наблюдатель». Для меня происходящее вокруг важнее того, что я сам делаю. Это осознанный выбор.

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

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

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

Этой ночью я не спал. Все-таки, есть что-то в расширяющей сознание бессоннице, которую так любил Сальвадор Дали.

Квантовая история

Так бывает, «если бы я тогда знал, к чему это приведет — сделал бы?» И, что характерно, чем больше времени проходит — тем меньше хочется что-то переигрывать. Хотя, казалось бы…

Вот, не хотел я в шестилетнем возрасте идти в гости, очень не хотел. Но пришлось — какие возможности есть у ребенка, чтобы настоять на своем? А там я пролил на себя перекись водорода (концентрат, почти кислоту) и фактически остался без глаза. Жалею я об это? — очень. Хочу изменить? — вот не знаю. Слишком многое из этого получилось, чего бы не я не хотел потерять.

Я многое потерял. Многое — но потенциальное. А переиграв прошлое, я откажусь от многого реального, уже случившегося. И где бы я был и кем — даже не догадываюсь. И рисковать не хочу.

Я был женат, два раза из пяти дошел до официальной регистрации. Было ли все это ошибкой? — наверное, да. Но без этого я тоже не оказался бы сейчас там, где я есть. И так во всем.

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

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

Об этом я жалею и на будущее.

Делай добро

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

«…и бросай его в воду».

Комплексные числа

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

Зеркала

Для кого-то я слаб, для кого-то — силен,
Кто-то скажет, я добр, кто-то злым называет.
И кому-то — умен, а кому-то — дурак,
То я слишком горяч, то со мной замерзают.

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

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

Зверь

16 лет назад мне прислали фотографию с текстом «Котенок Гав». На фотографии была Бешана — темно-полосатая кошка с тяжелым даже на фото взглядом — и двухмесячный бело-серый котенок, который с тех пор стал жить у меня.

Читать далее Зверь

Конец империи

Сегодня умерла Елизавета Александра Мария Виндзор. Империя, над которой не заходит солнце, осталась без своей королевы. Елизавета II возглавляла правительства 15 независимых стран с общим количеством подданных в 140 миллионов человек. Последняя участница Второй мировой войны среди мировых лидеров.

Милая старушка, чей ум даже в неспокойном революционном XX веке позволил сохранить Британию империей, а жизненная сила дала 96 лет, 65 из которых было проведено на троне.

Что станет с Соединенным Королевском Великобритании и Северной Ирландии? Что станет с Британским содружеством наций? Что станет с самой идеей королевской власти, которую благодаря ей чтят, как добрую традицию?

«Лондонский мост разрушен». Сегодня империя умерла…

Стихи

Стихи не хотят, чтобы ими играли,
Слова упираются и рычат.
Поэты рождаются из печали
И умирают, когда молчат…

Квантовый сон

Еще один из немногих моих снов, ярких и странных.

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

Следующий эпизод — я иду по двору к дверям и знаю, что мотоциклы на парковке, а двери это мотель. Иду один, знаю, что спутница моя уже где-то впереди. В руках у меня странный пульт с кнопками «плюс» и «минус». Я рассеяно играю с ними в и какой-то момент понимаю, что на улице взревывает мотор в такт моим нажатиям. К тому времени я вхожу в свою комнату и в открытое окно вижу свой мотоцикл, который притормаживает и разгоняется в унисон с моими нажатиями на кнопку. Бросаюсь к окну и вижу, что это действительно мой мотоцикл, а на нем — я сам, в своей одежде, вцепившись в руль и ничем не управляющий. Зажимаю «минус», мотоцикл тормозит и заваливается набок, а фигурка падает на землю и замирает.

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

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

Откидываюсь на спину, смотрю в небо — и просыпаюсь.

Я звоню тебе в любви признаться

Не Новый год,
Не Рождество,
Не день весны, чтобы песни петь,
Обычный день.

Не дождь, не зной,
Не выходной,
Но и не скучный день, не будний,
Не простой.

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

Не день Труда,
Не Хеллоуин,
Не календарный праздник
И не юбилей.

Но солнца свет
Вернет рассвет,
Три слова дождь прогонят
И отгонят смерть.

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

Словарь империи, «-ЦИЯ»

  • Экспроприация
  • Революция
  • Национализация
  • Электрификация
  • Коллективизация
  • Индустриализация
  • Мобилизация
  • Реабилитация
  • Кооперация
  • Демократизация
  • Приватизация
  • Либерализация
  • Инновация
  • Модернизация
  • Реновация
  • Дедолларизация
  • Самоизоляция
  • Денацификация
  • Демилитаризация
  • Спецоперация
  • Островизация

Костер

Костер горит внутри тебя
Теплом уютным согревая
Танцует призрак у огня
Все то, что было, провожая

Нет слез, не жалко ничего,
Все прошлое уходит с дымом
Сейчас дрова лишь это все,
Что чудо-лесом раньше было

Тепло, заложенное в стих
Тебе вернет клочок бумаги
Костер почти уже затих
И ты опять бредешь во мраке

Доверие

Можно быть посвященным во все тайны, но если при этом тебе не доверяют — ты станешь страхом предательства и болью потерь.

Где нет доверия — избегай тайн.

EncFS GUI

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

Википедия

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

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

CryptKeeper — компактная, удобная программка, которая выводит иконку в область системных уведомлений. Ничего лишнего — создать/импортировать шифрованный раздел, подключить/отключить его, запуститься при запуске системы. Она была бы идеальной, если бы не скандал с ошибкой, который позволял создавать разделы с универсальным паролем «p». Это ошибка была исправлена, но репутация программки пострадала настолько, что она была исключена из всех дистрибутивов Linux, а вскоре и вовсе заброшена автором.

Gnome-encsf-manager пришел ему на смену. Автор не скрывал, что вдохновлялись CryptKeeper-ом, поэтому возможности в этой программе были схожи, что называется, до степени смешения. И все бы хорошо, если бы на моем Mate под ArchLinux она не падала сразу после подключения зашифрованного раздела. Хотя Mate основан на том же самом GTK, что и Gnome, для которого это все и писалось.

MEncfsM. К счастью, Moritz Molch (автор gnome-encfs-manager) на своем личном сайте предлагает другую разновидность программы — статически скомпонованную с библиотеками Qt в один исполнимый файл, который даже не надо устанавливать в систему. Достаточно просто запустить — и все. На нем я и остановился.

На самом деле, есть еще много разных программ для того же самого (от компонентов KDE Plasma до совершенно наколенных скриптов на TCL/TK), но лучшее решение, сдается мне, я уже нашел.