Sergey Matveev [Wed, 28 May 2025 20:13:51 +0000 (23:13 +0300)]
Снова накатывают удручающие думы про работу
Вроде только вышел из отпуска, всего три дня работы, воспоминания про
учёбу в институте, а снова накатывает...
Ещё в прошлом году посрался (ну а что я ещё умею делать хорошо?) с одним
отделом и уже более полугода почти ничего не делал по проекту с ними.
Вроде бы и не держу зла, хотел бы продолжать, но один только переход в
директорию с проектом -- руки опускаются. Спрашивал начальство: может,
мол, не так приоритетен проект? Говорят, что высший приоритет. И я вот
впервые серьёзно просираю все разумные сроки.
Вспоминаю другой проект, где я много чего понаделал, в том числе систему
сборки (BASS). Сколько я негатива только не услышал в её сторону. С
одной стороны, все вокруг ошибаться же не могут: наверное я сделал говно
неюзабельное. С другой стороны у меня с негодованием возникает
контр-аргумент к коллегам: а ваши какие предложения? Я хоть что-то
рабочее, reproducible, deterministic предложил, не curl|bash, сам же
занимался опакечиванием почти всего. Часть коллег говорила, что под
Астру вот ту или иную штуку вообще не удастся собрать. Я и собрал и
опакетил в BASS. Но нет, летят упрёки и недовольства. Предложили бы
обсудить как это всё получше сделать, но нет, не было. И вот не понимаю:
то ли я говно сделал, то ли я всё же, но выполнил задачи.
В том же проекте жёстко разосрался с другим, с тех пор вообще не
контактируем. От меня какая-то документация требовалась, и я, опять же,
наверное впервые за профессиональную карьеру, сделал её на отъебись.
Понимаю что это вредит всему проекту, всем участникам, а не только мне и
второй стороне конфликта. Один раз я сделал одну часть задач -- этот
коллега начал придираться к тому, к чему прежде никогда не обращал
внимание. Вот и никакого желания уже делать по совести.
Планировалось продолжение этого же проекта. И с прошлого года со мной не
было ни одной встречи проведено по обсуждению хоть чего-либо в нём в
техническом плане. Почти два месяца назад я написал большое детальное
предложение об использовании в нём KEKS/CM, делая в спешке, ибо
совещание планировалось со дня на день. С тех пор тема вообще не
поднимается. Очевидно, предложение отвергнуто. Что печально, ибо тогда
KEKS как бы только в одном проекте и остаётся (а возможно и оттуда
захотят выпилить, кто знает). Тоже, выходит, не один месяц потратил
полностью впустую. И создаётся впечатление, что в продолжении проекта
меня точно не хотят видеть, но не знают как это сказать.
И вот лично мне то и BASS и KEKS жутко нравятся какими вышли (хотя в
KEKS реализациях то ещё много работы всякой, много кода надо
дописывать), а реакция коллег обратно пропорциональна.
Предлагал для ведения wiki (ba169c2948c9d80fee2ad63a11fbe46a6a371b32)
использовать zk.zsh (точнее, теперь он называется SWG (simple wiki
generator)), вместо несуществующих Markdown или более сложных reST,
Texinfo, Org и всякого подобного. Думал что уж тут то проще решение
вообще некуда, а покрывает 99% потребностей на практике. Но похоже, что
начальство я только убедил в ценности использования Texinfo (который я
то тоже люблю и главный популяризатор его, как когда-то был
популяризатором reST/Sphinx).
Явное недовольство коллег тому, что я даю задачи связанные с KEKS
стажёру. Ok, понимаю, ибо судьба KEKS/* на работе ещё до сих пор в
подвешенном состоянии. Но какие их предложения что дать стажёру, кроме
априори бесполезных для работы (полностью, так сказать, синтетических)
задач? Никаких. И вот какие мне выводы в голове делать? Или я чего-то
упорно не вижу и не замечаю? Смотрю не через призму, а турмалин, что-то
полностью скрывающий?
Попросили дать задачу одному студенту и сделать review. Отправил два
review по почте. И вот уже вроде как месяц о нём ничего не слышно.
Сегодня, уже повторно, хотели мне дать один проект на Си написать. С
темой там хорошо знаком. Но... и "нет" не хочу говорить. Но и "да" не
поддаётся, ибо я прям уверен что всё плохо закончится, очередными
срачами. А если я с конца прошлого года уже переходил в такие режимы
работы как на отвали и просирать все мыслимые сроки, ибо руки
опускаются, то добром дело не завершится. Но только это равносильно
отказу от выполнения служебных обязанностей и, соответственно, какого
фига я там вообще делаю.
Не помню была ли у меня апатия настоящая к чему-либо. Но вот к работе, в
общем и целом, полностью апатичное отношение стало. "Будь что будет".
Пока у меня в планах встретиться с друзьями, съездить к родственникам в
нижегородскую область, а летом в оставшуюся часть отпуска.
Но в целом уже начинает бесить весь этот расколбас от "я точно не на
своём месте" до "ну возможно отдохну и всё дальше как по маслу пойдёт",
вся эта неопределённость, непонятность, и даже не понимание как мне
относится к критике моей работы, хотя и альтернативных предложений по
выполнению задач не дают (или же не понимаю что их дают).
Вроде бы я уже лет десять как стал гораздо спокойнее и на порядки менее
конфликтнее, но с прошлого года, как будто, всё наверстал, плюс сам
превратился в полнейшего бессовестного лодыря.
А также всё вновь стало запутанно касательно женщин. Одним из толчков к
тому, чтобы я решился сделать предложение в прошлом году, была фраза от
отца "ведь ты ж нормальный парень". Я и поверил. Отказ, конечно же с
обязательным дополнением "дело не в тебе" (дословно уж не помню), вновь
всё вернул на свои места. Снова диссонанс. Чему верить? Какому мнению,
какого человека?
В ivi мне один уважаемый мною коллега сказал, что я где-то там баклуши
бил. Меня это жутко задело, ибо хуже лодыря, лентяя на работе быть не
может человека. А в ivi я реально вроде бы полностью честно отрабатывал
все человеко-часы. Какое-то время я не особо с ним разговаривал, был
обижен. На текущем месте работы, после нескольких лет участия в одном
проекте, мне заявили что я вредительствовал -- это задело просто ужас
как, ибо это же даже ещё хуже чем ничегонедаланье. Собственно, я
полностью и отстранился от проектов той команды (ну точнее меня выгнали
к чертям). Затем был случай, когда снова употребили по отношению ко мне
термин "вредительство", после чего от негодования у меня 15мин руки
тряслись. А сейчас я похоже уже и сам склоняюсь к тому, что, по всем
признакам, моя работа, действительно, геморрой людям приносит. Но всё
равно не понятно: задачи же я вроде бы выполнял, не видел чтобы после
меня переделывали/переписывали что-то. Как этот факт состыковать? Хз.
Плюс во время моего мощнейшего прошлогоднего конфликта, "оппонент" ещё
добавил, что моя работа вообще нихера ничего не стоит.
Короче, какое-то полное говно (C) ДМБ. Ничего не понимаю. Не понимаю что
мне делать (очевидно, задачу с прошлого года) или что не делать (ага, не
конфликтовать). И состояние апатии -- как будто как предохранитель. Будь
что будет. Хотя такое отношение к работе -- хуже некуда. И совесть
гложет без останова.
А сегодня ведь вспоминал каким я был когда оканчивал институт, о чём
тогда мечтал, кем себя представлял к 40 годам. Не, точно не начальником
или что-то подобное -- мне нафиг такое не нужно. Но точно не лодырем и
вредителем. Даже после разрыва с бывшей, я уйму лет считал, что вся эта
работа, накопление средств, приобретение недвижимости и подобное -- оно,
как минимум, для увеличения веса в глазах женщин, увеличение шансов
положительной обратной связи от них (точнее, от той самой единственной),
создание семьи и всего сопутствующего. Это что-то типа цели. Было
понятно зачем работаю. Шансов нет. Весить стал в полтора раза больше :-)
В столовке (кафе?) третьего корпуса какое-то время продавали сабж.
34₽. Треть обычной буханки хлеба, прорезанную пополам. Между половинками
клали в микроволноке размороженные полуфабрикатные котлеты, обильно
политые кетчупом. Как же мне он нравился! За такие деньги, такую сытную
вкуснотищу нигде не получишь более. Вот только кусать её надо ещё было
приноровиться, так как в рот по высоте не влезет, а кетчуп после надкуса
будет капать. У девочек с ним были трудности, чтобы не запачкаться.
Sergey Matveev [Wed, 28 May 2025 13:10:07 +0000 (16:10 +0300)]
Сгорел 38-ой
https://msk1.ru/text/incidents/2025/05/25/75500432/
https://www.rbc.ru/society/25/05/2025/6833137f9a7947e3ae9eaff7
Более века назад был построен "38-ой" магазин. Не знаю как он назывался,
ибо все в городе его знают только по номеру. По возвращению из Белоруссии
поехали к родителям домой -- там из окна я как-раз видел дым из него. И
все близлежащие улицы перекрыли. Из-за чего таких пробок по узеньким
улицам прежде не встречали прежде. Как и запах дыма на сотни метров.
Sergey Matveev [Wed, 28 May 2025 11:44:21 +0000 (14:44 +0300)]
Форсированная установка ПО для слежения в смартфоны мигрантов
https://www.schneier.com/blog/archives/2025/05/location-tracking-app-for-foreigners-in-moscow.html
https://www.bleepingcomputer.com/news/government/russia-to-enforce-location-tracking-app-on-all-foreigners-in-moscow/
https://roskomsvoboda.org/en/post/spying-on-foreigners-via-smartphone/
http://duma.gov.ru/news/61435/
У нас вот хотят заставлять устанавливать ПО на личный смартфон, которое
будет передавать местоположение. По сути форсированная отдача полного
управление над личным устройством. Так то оно, конечно, и так управляет
компаниями из США. Да и отслеживание через сотовую связь никто не
отменял, но там вроде юридические палки в колёса. Исключения для граждан
Белоруссии. А если у человека нет смартфона? Ему выдадут и накажут если
сигнал с электропитанием будут утеряны? Впрочем... та же Европа куда
раньше подобными anti-privacy вещами занималась.
Sergey Matveev [Wed, 28 May 2025 09:10:09 +0000 (12:10 +0300)]
Инцидент с BGP 2025-05-27
https://blog.benjojo.co.uk/post/bgp-attr-40-junos-arista-session-reset-incident
https://blog.benjojo.co.uk/post/bgp-path-attributes-grave-error-handling
Истории про то, как баги в обработке не совсем корректных BGP пакетов
могут приводить к почти катастрофическим последствиям. Чаще то мы слышим
про людские кривые руки/настройки.
Sergey Matveev [Wed, 28 May 2025 08:54:49 +0000 (11:54 +0300)]
МАИfest95
https://vk.com/video-50409684_456241023
На выходных было сабжевое мероприятие. Но я за границей был, а так бы
не прочь был сходить. На видео показывали третий корпус... я бы его не
узнал изнутри, ибо при нас он не чинился наверное с начала постройки.
Вот правда если бы я остался на музыкальную программу... ну это бы было
наверное самое зашкварное где я был :-)
А что мне дал МАИ? Умение пользоваться головой и хорошего друга! Это
первое что приходит в голову. Да наверное и первую любовь можно
добавить, хотя закончилось всё плохо, но уже после окончания института.
Георгия Берегового, пары по двигательным установкам и ТРИЗу вряд ли
когда смогу забыть, регулярно про них вспоминаю и кому-нибудь оттуда
что-нибудь да рассказываю. Как и мои родители про времена в Бауманке
отзываются, так и я: студенческие годы -- лучшие в жизни. И МАИ я ни на
какой другой вуз не хотел бы променять.
Да и даже просто массу интересных аэрокосмических фактов и знаний мне
приятно иметь. Наша семья десятилетиями была связана с космосом.
Sergey Matveev [Wed, 28 May 2025 08:51:49 +0000 (11:51 +0300)]
NIL то от латинского
https://en.wiktionary.org/wiki/nil
Никогда не задумывался об этимологии слова nil, нередко используемого в
языках программирования. А оно от латинского. Отсюда же и nihil. NIL у
меня и в KEKS кодеке используется.
Sergey Matveev [Mon, 26 May 2025 18:17:24 +0000 (21:17 +0300)]
Отдохнул в Белоруссии
Символично, в день моей возни и недовольством о ситуации с IPv6 в РФ,
я отпросился с работы отдохнуть в РБ, где вроде бы IPv6 обязывают чтобы
ISP предоставлял.
Более недели не прикасался к клавиатуре и не смотрел ни в один монитор.
Даже сотовый был выключен за ненадобностью.
В первый же день обгорело лицо и шея -- всем же известно палящее минское
солнце :-), после московского то. Далее уже было попрохладнее и морось.
По возвращению, уже наоборот Московская область встречала ярким солнцем
и жарой за 24°C.
Ездил с папой. У мамы цветы и деревья на даче важнее оказались.
В первый же день, просто бродя и разъезжая по городу, увидели
половину достопримечательностей Минска. Обзорная экскурсия не
существенно больше информации нам дала, не считая исторических сводок.
Как и говорили, центральная часть города это прям СССР, конструктивизм и
всякая подобная архитектура. Мне она очень нравится. Однако, поездив по
окраинам, на конечных станциях метро, видели и огромные микрорайоны,
активно застраиваемые современные высотными жилыми зданиями.
Как и сам Минск, так и другие города которые проезжали -- чисты,
опрятны, ухожены, очень приятное впечатление оставляют.
Однако, по яркости Минск совершенно не может сравниться с Москвой. Мы
были и в тёмное время суток и ночью ехали на автобусе от вокзала.
Светодиодных фонарей много, подсветки на зданиях много, но вот мощность
излучения явно существенно меньшая, чем возможно даже в Королёве. Дорога
видна, основные здания, как ориентир, тоже, но не более того. Минск это
как 30Вт лампочка, а Москва как 100-120Вт. Это прям бросалось в глаза.
Автобусы, электробусы и троллейбусы по городу ходят регулярно, проезд
более чем в два раза дешевле Москвы или Королёва. Метро ходит реже. Мы
попадали в часы пик и зайти не всегда было возможно в вагон. Метро не
европейское (железобетонная коробка), а чисто из времён СССР, кроме их
новой строящейся зелёной ветки (которая как современные московские
станции).
Чего не хватало, так это карт местности на остановках и выходах из
метро. В Москве везде есть карта радиусом в сотни метров -- можно понять
где ты и сориентироваться. Тут же ни разу такого не увидели. Бумажная
карта постоянно была в наших руках.
Народу ощутимо меньше. В будние дни так вообще в течении минут можно ни
одного прохожего не увидеть на проспекте Победителей. Там и президент
работает и достопримечательности есть, парки, жилые дома, гостиницы --
совсем не пустынное место. Тоже самое и про автомобильные дороги -- даже
в Королёве только на отшибах могут минуту-две отсутствовать машины.
Площадь рядом с вокзалом в Москве в 07:00 гораздо более людная чем в
часы пик их жилые или центральные районы.
Сперва я был сильно удивлён тому, что белорусский можно только на
указателях встретить было. В течении всего дня мы нигде не услышали
белорусскую речь, кроме объявлений об остановках в общественном
транспорте, которые ещё и на русском дублировались. Экскурсоводы
подтвердили, что 97% жителей, даже в деревнях, общаются на нашем обычном
русском. Достаточно в Нижний Новгород приехать и услышать ощутимое
отличие в произношении -- но Минск неотличим от центральной РФ будет.
За всё время мы встретили не раз аистов на полях. Один раз автобус
остановился, вышел водитель и руками донёс переходящего дорогу ежа на
тротуар. Вот и все встречи с местной фауной. В Новосибирске мы например
много видели бурундуков, которых тут отродясь не видывали. Ну и зайцев,
которые бесплатно проезжают в автобусах.
Побывали в Залесье, Сморгонь, Солы, Гервяты, Астравец, Мир, Несвиж.
Проезжали Молодечно, Дзержинск и ещё какие-то города, без выхода из
автобуса. Издалека видели работающую АЭС с двумя огромными градирнями
недалеко от границы с Литвой. Я даже издалека никогда прежде не видел АЭС.
В Мире видели старый замок. Где даже пыточная камера (ну... Европа же,
демократия, свобода и всё такое :-)) в подвале была. "Жить в Мире" там
особо воспринимается, так как вокруг их центральной площади уживались и
евреи, и мусульмане, и католики, и православные.
Также замок и множество усадьб посещали и в других местах. В одном даже
был мастер-класс по танцам. Видели с десяток костёлов. В одном даже
играл орган (правда, электро), а в другом на наших глазах началось
крещение ребёнка.
Это всё интересно, красиво, но не то чтобы вызывало восторг. В отличии
от посещения "Великое Княжество Сула". Ну как там мне могло не
понравится, когда нас встречали живой музыкой на дуде (волынка такая) и
барабане? И во всём этом парке средневековой истории в спрятанных по
территории колонках играла волынка? Весь этот парк состоит из замка и
множества строений с ремесленниками. Которые что-то показывали,
рассказывали. Были там и языческие места, идолы, славянские божества.
Проплыли на драккаре здоровом. Посмотрели на литовские замки и историю.
А ещё там овцы и козы бегают. Можно подойти и погладить их.
Были на коротком представлении кукольного театра, на белорусском языке.
Я не уверен что когда-либо был в кукольном театре.
Изначально нам рассказывали на русском всё. Но в помещении, где была
речь про учёбу, про обучение в те времена, учительница всё нам
рассказала на белорусском. Кто-то говорил, что мало что понял. Я же
преобладающую часть, и полностью, если учитывать контекст и предыдущие
предложения. Вообще напряга не возникло в понимании их языка. Дальше мы
его больше уже слышали и встречали.
Экскурсовод сказал, что белорусский, украинский, чешский, польский и
литовский очень близки между собой. А вот русский существенно дальше. Я
вот украинский почти не понимаю (слышал по ТВ в Крыму), да и раздражал
он меня своим звучанием (чисто вкусовщнина). Белорусский же для меня
показался чем-то средним между русским и украинским, значительно более
понятном. В некоторых городах/костёлах были тексты на польском -- его я
вроде тоже получше понимаю, чем украинский.
Школьников обучают и русскому и белорусскому. Большинство из них сдаёт
экзаменом белорусский, так как он проще. Но вот всё равно в быту
общаются на русском. За неделю я вроде только два раза слышал
белорусскую речь у людей просто на улицах/магазинах.
В Минске были на тракторном заводе. Экскурсию проводил какой-то один из
главных их конструкторов. В самом конце мы с ним даже чуть пообщались,
как три инженера. Очень понравилось смотреть на всю эту промышленность.
Когда заходили в цех металлообработки, то сразу же запах моих
студенческих лет, когда мы тоже бывали много раз в цехах. А вот на Белаз
экскурсии не было, как и времени уже на него.
А ещё побывали в Дудутках. Это такой музей под открытым небом. Тоже
всякие ремесленники и развлекалово. Впервые я увидел разъяснение про
детали шагов как выдёлывали лён, пряли, ткали, работали с соломой и
глиной. Очень понравилось. Уйму всяких любопытных фактов. А ещё там
много животных: страусы, гуси, петухи, куры, лошади (некоторые громко
ржали), кабаны, ослы, олени, индейки (забавные звуки издающие), павлины,
утки. Они уже за изгородями, но осёл, заприметив наше приблежение, сам
подошёл к ограде и дал погладить/почесать. А рядом нас начал прогонять
гусь, так что пришлось ретироваться. Там же были и внутри настоящей
мельницы.
В общем, Сула и Дудутки мне понравились как никто! Просто ходить по
музеям и усадьбам... ни в какое сравнение.
Девки там везде и всюду хороши, очень. Вроде бы только одну увидел с
надутыми (увеличенными) губами. Почти не встречал с татуировками. От
губастых просто воротит, коих пруд пруди в Москве. Но одеваются гораздо
более открыто чем в Новосибирске. Типа всё как в Москве.
Никакой особенной или незнакомой еды не видели и не пробовали. Драники и
у нас можно попробовать в магазинах. Там их пару раз взяли -- но по нам
уж лучше пюре или просто жареная. Но чаще всего подавали на обед, да и
мы брали, купаты всяческие. Не раз заходили в их "Васильки" -- ресторан
местной кухни. Не дешёвый, но кормят очень вкусно, с хорошими порциями.
Привёз из разных мест три куклы. Вязаный (вроде, не разбираюсь) аист
одетый не по нашенскому. Соломенный домовой в ярком одеянии. Набитая
пахучими травами кукла (не помню как называется) оберег.
А вообще у меня прям стабильное ощущение того, что минчане от москвичей
гораздо меньше отличаются чем новосибирцы. По атмосфере Новосиб вроде бы
и просто как современная Москва, но всё же для меня там больше отличий
на уровне ощущений было.
Sergey Matveev [Mon, 26 May 2025 16:18:39 +0000 (19:18 +0300)]
Пропуск длинной строки в less
https://greenwoodsoftware.com/less/news.678.html
https://github.com/gwsw/less/issues/560
Уже писал про это в 326789bf9b523d8924509a09f4d31cfb935153c8, но в новой
версии less, наконец то, появилась встроенная возможность без хаков
пропускать screen line или text line.
Sergey Matveev [Fri, 16 May 2025 19:07:32 +0000 (22:07 +0300)]
die, croak, carp, confess and *mess
В Perl я знал и использовал функцию die() постоянно, типа как exception
выкидывал ею. Но вот в Perl Best Practices рекомендуют croak. Люблю я
когда с юмором подходят к разработке и именованию.
NAME
Carp - alternative warn and die for modules
SYNOPSIS
use Carp;
# warn user (from perspective of caller)
carp "string trimmed to 80 chars";
# die of errors (from perspective of caller)
croak "We're outta here!";
# die of errors with stack backtrace
confess "not implemented";
# cluck, longmess and shortmess not exported by default
use Carp qw(cluck longmess shortmess);
cluck "This is how we got here!"; # warn with stack backtrace
$long_message = longmess( "message from cluck() or confess()" );
$short_message = shortmess( "message from carp() or croak()" );
Sergey Matveev [Fri, 16 May 2025 11:47:55 +0000 (14:47 +0300)]
Рассказывал на работе про синхронизацию времени
NTP, PTP, цезиевые, рубидивевые, оптические, кварцевые часы, TCXO,
OCXO, PTP, водородные мазеры, навигация на основе эффекта Допплера,
гиперболическая навигация, DCF77, GNSS, SBAS, TWSTFT. Сказали, что
это была самая интересная "лекция" от меня.
Sergey Matveev [Fri, 16 May 2025 11:18:21 +0000 (14:18 +0300)]
Как будто у людей пропал spellchecker
За последние несколько месяцев, мне прям стало бросаться в глаза, как у
многих в блогах или письмах стали постоянно возникать или опечатки или
недостающие буквы. Вот реально: как-будто никогда годами таких проблем
не было, как будто работал spellchecker, а потом внезапно прекратил и
понеслись ошибки. И когда люди в блогах подобно пишут, то прямо хочется
прекратить их читать, ибо уж сильно больно бьёт по глазам небрежность и
отсутствие пары минут на то, чтобы через spell прогнать какой-нибудь. Но
не удивлюсь, что это связано с каким-нибудь очередным обновлением
проприетарного ПО (Android, Chrome, Firefox и всё такое прочее), где
поломался функционал.
Sergey Matveev [Fri, 16 May 2025 11:16:23 +0000 (14:16 +0300)]
Как человек боролся с LLM/botnet загрузкой
https://sanctum.geek.nz/presentations/self-hosting-self-defense.pdf
Держит банальный cgit, а трафика на сотни гигабайт в месяц. Он смог
определить, что TLS client signature у всех плохих запросов один и тот
же, поэтому можно блокировать только по анализу TLS.
Sergey Matveev [Thu, 15 May 2025 07:26:17 +0000 (10:26 +0300)]
HowIVim.com
http://howivim.com/
Узнал вот про существование сайта, где разные разработчики рассказывают
про то, как они используют Vim. И antirez там есть (создатель Redis) и
Damian Conway. Но без Tim Pope.
Чёткая корреляция продолжает прослеживаться: если человек использует
какие-нибудь NERD* плагины, то это чисто такой новичок, только делающий
первые шаги. Ни у кого из матёрых пользователей подобные не стоят. Как и
Ctrl-P, кстати, насколько помню. Те, кто пишут на всяких JavaScript --
всегда нубы.
Sergey Matveev [Tue, 13 May 2025 08:17:27 +0000 (11:17 +0300)]
NAT mess vs clean IPv6 routing
https://blog.apnic.net/wp-content/uploads/2025/05/image.jpg
https://blog.apnic.net/2025/05/13/lets-talk-about-cgnat-and-ipv6-again/
https://www.f5.com/resources/white-papers/the-myth-of-network-address-translation-as-security
https://www.ripe.net/publications/docs/ripe-690/
https://blog.apnic.net/2023/04/04/ipv6-architecture-and-subnetting-guide-for-network-engineers-and-operators/
Понравилась картинка. Route when you can, bridge when you must, but if
you are thinking NAT... just route IPv6 and walk away with dignity.
Sergey Matveev [Mon, 12 May 2025 18:40:48 +0000 (21:40 +0300)]
zk научился выводить в Info формате
В ba169c2948c9d80fee2ad63a11fbe46a6a371b32 писал о том, что ещё больше
стал использовать переписанную на Perl утилиту работы с крайне простым
текстовым форматом.
А сегодня добавил возможность генерирования .info файла, вместо HTML
директории. Info оказался довольно простым форматом. В отличии от Info
сгенерированного из Texinfo, у меня нет "next" и "prev" ссылок на
страницах -- только "up". Но вполне себе работает всё. Каждая страница
это отдельная node. Есть индекс со всеми нодами, что позволяет искать
штатными средствами Info по ним.
Sergey Matveev [Mon, 12 May 2025 08:32:51 +0000 (11:32 +0300)]
Скорость запуска современных web-обозревателей
https://habr.com/ru/companies/yandex/articles/907440/
В комментарии пишут, что на компьютере с i5 и SSD, Яндекс.Браузер
запускается 30сек, а автозаполнение сайтов чуть ли не через минуту.
Свой старый ThinkPad, тоже с i5, но HDD, отдавал родителям. У них, что
Firefox, что Chrome(ium?) -- тоже минимум минуту приходится ждать, пока
хотя бы даже статический сайт по указанному URL загрузится.
Sergey Matveev [Sun, 11 May 2025 12:04:47 +0000 (15:04 +0300)]
gqap
За последние пару месяцев аж два человека с удивлением для себя узнали
про возможность автоматического форматирования (по ширине строки)
параграфа в Vim. :help gqap
Я был этому удивлён, особенно учитывая что один из них годами активно
использовал Vim. А как же можно набирать plaintext без подобного
функционала? Не руками же разбивать строчки! Для этого есть машина. К
тому же Vim и учитывает наличие комментариев и списков. В общем, без
такого функционала было бы непросто жить.
Sergey Matveev [Sun, 11 May 2025 06:42:34 +0000 (09:42 +0300)]
Ian Lance Taylor уходит из Google и Go
https://www.airs.com/blog/archives/670
Почти 20 лет там проработал. Точно помню, что его решения в Go были
очень хороши и обдуманы. Достойный разработчик. Надеемся, что Go не
будет деградировать от его ухода, как это стремительно происходило
с Python.
Sergey Matveev [Fri, 9 May 2025 07:12:12 +0000 (10:12 +0300)]
Заблокировал Facebook роботов
https://news.ycombinator.com/item?id=23490367
https://drewdevault.com/2025/03/17/2025-03-17-Stop-externalizing-your-costs-on-me.html
В (b662785f950c6385144283d022deb5c38f016ac2) писал про то, что круто
стал забиваться Интернет канал из-за всяких роботов. Это не то чтобы
создаёт проблемы, но доставляет неудобства. Я надеялся, что уж через
несколько дней то должно прекратиться.
Присмотревшись, вижу что по сути то запросы массово идут от User-Agent
представляющегося Facebook-ом. Причём за одну секунду на один и тот же
ресурс по несколько десятков запросов может приходить. Это совсем уж
бессовестно. Нет rate-limit-а -- допустим. Но дублировать запросы, не
кэшировать ответ -- это уже приравнивается к DoS. Само собой никто им
не запрещает использовать другой User-Agent, но тут пока всё честно.
Я за сетевой нейтралитет, всё такое, но откровенно бессовестное и
неуважительное поведение к другим участникам сети не позволительно.
Поэтому отдаю 429, проверяя User-Agent. Да и, к тому же, у нас Facebook
и так заблокирован, что я всецело поддерживаю, так как сам воочию видел,
как в их правилах было указано поощрительное одобрение сообщений с
призывом уничтожать россиян. Даже на уровне своих web-роботов делают
всё, чтобы их блокировали.
Sergey Matveev [Thu, 8 May 2025 21:16:33 +0000 (00:16 +0300)]
Подборка не моих статей про NNCP
gemini://gemini.ucant.org/heterodox-tech/nncp.gmi
https://complete.org/nncp
gopher://alexschroeder.ch/02024-07-16-minimal-nncp-setup
gemini://jsreed5.org/log/2024/202408/20240807-robs-mostly-comprehensive-nncp-guide.gmi
gopher://thelambdalab.xyz/0/offline.txt
gemini://complete.org/quux-org-nncp-public-relay/
gemini://complete.org/quux-org-usenet-nntp-and-nncp-peer/
gemini://thelambdalab.xyz/phlog/2024-08-16-Offline-BBSing.txt
gemini://jsreed5.org/log/2024/202408/20240813-sneakernets-revisited.gmi
gopher://178.209.50.237:70/02024-08-10-offline-reader
gopher://178.209.50.237:70/02024-08-09-nncp-automation
gopher://178.209.50.237:70/02024-07-16-why-nncp
gopher://178.209.50.237:70/02024-07-12-sending-files-via-nncp
gopher://178.209.50.237:70/02024-06-29-nncp
gopher://178.209.50.237:70/02024-06-28-nncp
gemini://gemini.ucant.org:1965/heterodox-tech/index.gemini
Случайно напоролся на подборку ссылок по теме NNCP. В целом приятно
видеть, что там люди статьи даже большего чем я размера пишут о DTN
сетях, floppynet-ах и подобном, вовсю настраивают почтовые системы
работающие через NNCP (вот только сплошной Exim, который я даже и
не трогал в этом контексте). А я свой задор растерял уже, даже лень
добавлять постквантовую криптографию в NNCP, не говоря про перевод
на KEKS формат вместо XDR.
Sergey Matveev [Thu, 8 May 2025 15:29:04 +0000 (18:29 +0300)]
Нет предела минимализму. Переписал zk.zsh на Perl, доку KEKS с Texinfo
http://www.git.stargrave.org/?p=zk.git;a=blob;f=zk
http://www.keks.cypherpunks.su/
Когда-то (b1ac320825bc6653f09ad75359b5a97fc1692f8c) я написал утилитку
на zsh, которая из текстовых файлов с [ссылками] доставала, собственно,
сам список ссылок и могла отвечать кто на кого ссылается. Плюс
преобразовывала их в HTML, позволяя в web-обозревателях просматривать,
кликая по []-ссылкам.
Почему бы не использовать это всё для документации к софту? Когда не
нужно кучу форматирования красивого. Например для KEKS проекта. Texinfo
мне нравится -- считаю лучшим форматом для документации. Но для простых
проектов нельзя бы что-то попроще, с куда меньшим порогом входа и
зависимых програм? zk.zsh как-раз подходит для этого, как мне кажется.
Для Texinfo есть только одна реализация. Info не так удобно смотреть без
info-обозревателя, которых тоже не много. Сам я в доку KEKS подглядываю
регулярно за криптографией, но оформление в Texinfo формате ничем не
помогает и бОльшая часть текста там в verbatim-блоке расположена.
Решил переписать на Perl. Так как zsh всё же не у всех людей из коробки
стоит, а Perl почти наверняка. Плюс он работает ощутимо быстрее и я не
реализовывал кэширование как это было в zsh реализации из-за много
мегабайтных текстовых файлов.
Не хватает в zk утилите поддержки обычных ссылок, не внутренних [].
Пытаться преобразовывать всё что похоже на URI -- высока вероятность
ошибок всяких. Пришёл в решению как в gemtext, gopher. Не, gemtext мне
не нравится, как и почти всё что связано с gemini-протоколом. Как
минимум из-за его использования длинных строк. Плюс он не может быть
заменой простейших HTML с изображениями. Никто не обязывает
автоматически подгружать img, но нужно уметь подсказывать обозревателю
разницу между изображениями и остальными ссылками. Но я согласен с тем,
что (как и в gopher) -- можно обойтись ссылками просто на отдельных
строках. Как минимум, это позволит облегчить парсинг и использовать
URI/URL любой сложности. Ссылки на изображения -- тем более легко смогут
прожить по отдельности на разных строчках.
Но меня всё равно напрягает вероятность ложного срабатывания на
каких-нибудь "=> URL" строках. Нужно же чтобы эти строчки были и
дружелюбными к человеку, чтобы он мог и без zk утилиты всё это клепать и
использовать. Решил поступить так: добавлять \r в конце. Не на 100%
уверен в том, что мне это нравится, но и контраргументов пока не могу
придумать хороших. Это на 100% избавляет от вероятности ложного
срабатывания: по сути все "\r\n" строчки автоматом сигнализируют о своей
особенности zk утилите. Если их просто вывести в терминале: то они
вообще визуально ничем не будут отличаться от "\n" нормальных.
Предполагаю, что в любом нормальном редакторе "\r" символ тоже будет
виден, выделяться, легко искаться. В vi(m) это так.
Возможность автоматического создания списка ссылок на страницу позволяет
создавать категории/каталоги/индексы. Типа динамический автоматический
создаваемый список.
Перевёл всю документацию (сайт) KEKS-а на этот новый формат. Просто
масса plaintext файлов. Причём, в отличии от Info, найти нужный
раздел/страницу можно просто открыв файл с её названием.
Sergey Matveev [Wed, 7 May 2025 12:32:20 +0000 (15:32 +0300)]
Python Ruff и uv
https://habr.com/ru/companies/ru_mts/articles/907622/
В экосистеме Python всё настолько удручающе плохо, что уже даже linter-ы
и пакетные менеджеры люди вынуждены писать на Rust. Как я когда-то
GoCheese писал для него на Go, хотя там и на родном Python с
производительностью не было бы проблем. Это всё говорит об уровне
среднестатистического Python программиста, уже не способного писать себе
инструментарий для работы.
Sergey Matveev [Wed, 7 May 2025 11:25:34 +0000 (14:25 +0300)]
Regexp парсинга URI
https://datatracker.ietf.org/doc/html/rfc2396
В RFC 2396 есть прям даже пример POSIX регулярного выражения для
парсинга URI. В том же Perl можно использовать напрямую.
Вот ты и твоя пропаганда рассказываете, что в России "фашизм", "рашизм"
и прочий "Путлер". Ну так ответь мне на несколько простых вопросов. Вы
же уверены, что несёте правду, да? Тогда вам будет не сложно на них
ответить.
Вот вы рассказываете, что есть некая идеология "рашизм". А где про неё
можно почитать? Гитлер писал "Майн Кампф", Розенберг писал расовую
теорию, для Муссолини тоже какой-то миланский профессор за "сто долярив"
накропал доктрину (бредовую до жути, но безграмотным селюкам юга Италии
заходило). Есть ли книги по "рашизму"? Кого почитать? И кто и когда из
официальных российских лидеров или чиновников озвучивал данную доктрину?
Только давайте конкретику, без ваших привычных визгливых истерик -- имена
авторов, названия книг, цитаты Путина или Лаврова. Чтобы там хотя бы раз
прозвучало "рашизм".
Она ведь есть, эта идеология, да? Не только в вашей больной пропаганде,
а и в реальности?
Или вот если "русские фашисты" и "были союзниками Гитлера", как вы
рассказываете, то почему русские празднуют День Победы, а украинцы не
празднуют?
Ведь "Было четыре украинских фронта, а русских фронтов не было ни
одного" (хоспеди, какой тупой идиотизм!). А почему тогда не "День
Победы", а "День памяти"?
И если "УПА боролась с немцами", то где можно почитать ХОТЯ БЫ ПРО ОДИН
бой бандеровцев против Вермахта? Ну хоть один... и почему в архивах этого
самого Вермахта никто так и не смог найти ни одного указания на это?
Почему у свидомых украинцев гвардейская ленточка, много лет бывшая
символом Победы, вызывает такие истерики, что они кидаются на людей,
брызжут слюной от бессильной злобы и пытаются её сорвать? Причём такая
реакция была ещё задолго до 2014 года, до крымских событий и отделения
Донбасса.
Если это наша общая победа (а когда-то так и было), то почему вы
дебильно хрюкаете про "дидывоевали" и "победобесие"? Потому что ВАШИ
диды воевали с другой стороны, их вождём был Адольф Гитлер? И для вас
факт поражения нацистов нестерпим до сих пор?
Кстати, почему большинство новоявленных "героев украины", в честь
которых называют улицы и которым ставят памятники последние десятилетия,
служили в ваффен-СС?
Почему Зеленский грозит терактами именно 9 мая? Почему его так корёжит
от этой даты?
Почему, если вы не нацисты, не провести собственный парад в Киеве,
пользуясь предложенным перемирием?
Почему вас так корёжит от всего, связанного с нашей великой Победой?
Это нормально с вашей точки зрения, что потомок нацистского недобитка
Фридрих Мерц (его дед был шнапсшвайнфюрером СС, это известный факт)
пытается запрещать потомкам победителей участие в праздничных
мероприятиях?
Когда австриец Штефан Бандера стал "украинцем"? Як "никогда"?!
Когда хауптман ваффен-СС Роман Шухевич отказался от этого звания?
Як "никогда"?!
Кто убивал львовян 30 июня 1941 года? Кто убивал женщин и детей в Бабьем Яру?
Кто сжигал заживо одесситов 2 мая 2014 года? Почему "это другое"?
Если Зеленский не диктатор, а Путин диктатор, то почему после начала СВО
в России выборы были (и президента, и в Госдуму, и в местные органы
власти), а на "демократической" украине нет?
Почему из "рабской России" можно свободно уехать, а из "свободной
украины" нет?
Почему из "свободной украины" в "рабскую Россию" только за последнее
время сбежало свыше 150 тысяч человек?
Почему в Шереметьево приходится фильтровать бегущих из украины
"свободных украинцев", а в Борисполе очереди из бегущих из "российской
разрухи" в "процветающую украину" (смешная шутка, одна из моих любимых) нет?
Почему Залужный ходит с браслетом со свастикой, а Герасимов нет?
Почему охрана Зеленского ходит с нацистской символикой, а охрана Путина нет?
Почему российская армия за три года ни одного магазина не разграбила
(ну, кроме дебильных рассказов про украденные унитазы, в которые верят
только слабоумные), а ВСУ в Судже разграбили "Пятёрочку" и об этом знает
вся планета?
Кстати, где эти миллионы изнасилованных украинок? Почему ни одной не
нашлось, с кем бы реально такое случилось? И где Денисова?
Сколько килограмм картошки можно купить на базовую российскую пенсию и
сколько на базовую украинскую? Хотя это уже удар ниже пояса...
Кто пытается строить моноэтничное и одноязычное государство -- Россия
(в которой под двести народов и два десятка государственных языков)
или Украина?
У кого официальный лозунг государственной пропаганды "Айн райх, айн
фюрер"? Ой, извините, "Айн мова, айн вира, айн армия"?
И кто скандирует "Хрюканина убер аллес"? Ой, извините, "украдина
понадусёр"?
Почему на российских танках нет балкенкройцев, а на украинских есть?
Почему украинские солдаты массово зигуют, а российские нет? Почему у нас
речёвка "Бандера и Власов -- герои пидорасов", а укровояки заключают
однополые браки?
И кто, кстати, тогда "пидоры" на фронте? Где гей-парады проводят -- в
Москве или в Киеве?
Почему русские никогда не скандируют "Хохляку на гыляку" или "Рагулей на
ножи"?
Так почему для русских победа над нацизмом -- священный праздник, а для
свидомых украинцев -- "день памяти"? Почему бесов корёжит?
Sergey Matveev [Wed, 7 May 2025 09:14:24 +0000 (12:14 +0300)]
История векторно нарисованного Beastie
http://phk.freebsd.dk/sagas/vectorbeastie/
Кстати, действительно, в FreeBSD в /usr/share/examples/BSD_daemon он так
и лежит. Вот что значит полноценная ОС!
Sergey Matveev [Wed, 7 May 2025 08:23:11 +0000 (11:23 +0300)]
AI scrappers добрались и до меня
Второй день подряд мой домашний 100Mbps канал забит полностью на
максимум, даже для BitTorrent остаются только десятки процентов.
Качают всё что есть доступного через HTTP. И это именно роботы,
судя по User-Agent.
Ну и GNSS не работает второй или уже третий день подряд, по понятным
причинам.
Sergey Matveev [Tue, 6 May 2025 13:05:50 +0000 (16:05 +0300)]
Ещё один человек переходит из Python в Go
https://habr.com/ru/articles/907360/
Что-то меня последнее время прям бомбит от начинающих "программистов".
Этот вот написал, что работает уже третий (!) год.
Почему язык не может просто начать выполнять файл с первой строки?
То есть, как минимум, разницу между компилируемыми и интерпретируемыми
даже близко не представляет? За три года то работы в ИТ?
В Python пишешь a = 5, потом a = "текст" — и всё нормально
Нет, это даже в Python не нормально. Но работать будет, да.
Оказалось, := — это когда переменную создаёшь. А = — когда она уже
есть. Почему нельзя просто одно оставить?
Хочется только palm-face делать.
Зачем я должен писать одну и ту же проверку в каждом вызове функции?
Зачем проверять произошла ли ошибка, действительно?
Разницу между слайсами и массивами и прочие тонкости реализации
очень любят спрашивать на собеседованиях, рассчитывая отсеить людей
без высшего образования.
Ого, то есть высшее образование это когда "программист" хоть как-то
понимает что за кардинально разные типы данных у него на руках?
В Python я часто писал:
for i in range(len(arr)):
print(arr[i])
... ну и зачем ты это так писал? Выбить деньги на более мощное железо?
А в Go так нельзя, так как это парадигменный язык. Там пишут через
range сразу:
for i, val := range arr {
fmt.Println(val)
}
Узнал новый термин: парадигменный язык. Буду на собеседованиях
спрашивать. Ну и да: в Go можно и как в Python, как и в Python как в Go.
Искренне недоумеваю: что можно было делать три года с таким пониманием ЯП?
А в Go классов нет. Есть struct, и ты к ним можешь привязать функции.
А ещё есть масса других типов данных, к которым ты тоже можешь привязать
функции. Чем struct особенен?
Там надо через func (s *MyService) Do() писать. Звездочка - означает
что ты берешь данные из оперативной памяти.
Это надо навсегда будет запомнить! Звёздочка -- означает что данные
берутся из оперативной памяти. Такого ещё не слышал. Ржал в слух. После
чего, конечно же, сомнения что это не по приколу написано.
Sergey Matveev [Tue, 6 May 2025 10:19:06 +0000 (13:19 +0300)]
Такие разные лицензии на ПО
https://habr.com/ru/articles/798777/
https://en.wikipedia.org/wiki/Beerware
https://github.com/benlk/misc-licenses
https://github.com/ErikMcClure/bad-licenses
Много забавных лицензионных условий на использование ПО. Beerware
лицензия, кстати, является и GPL совместимой и FSF (но не OSI!) одобренной.
Sergey Matveev [Tue, 6 May 2025 09:13:02 +0000 (12:13 +0300)]
IPv6 в Starlink
https://www.starlink.com/support/article/1192f3ef-2a17-31d9-261a-a59d215629f4
Оказывается, в Starlink теперь есть полноценный IPv6, даже с честной /56
выдачей сети через DHCPv6-PD.
Но вот SMTP у них заблокирован, насколько понимаю по "Outbound ports
TCP/25 (SMTP) and TCP/445 (SMB) are blocked for all customers". А как
почту то отправлять? Ожидать что submission порт будет принимать? Сервер
то, понятное дело, не поднять.
Sergey Matveev [Mon, 5 May 2025 10:54:59 +0000 (13:54 +0300)]
FSF хочет провести хакатон
https://habr.com/ru/news/906858/
Совсем я перестал следить за новостями FSF*. После их бучи с бросанием
каках в RMS -- резко разонравились. FSFE выпилили перевод на русский (ну
типа для поддержки геноцида россиян) со всех своих сайтов, к которому я
в своё время тоже прикладывал руку. Но там уже давно было ясно, что это
то ещё сборище не очень честных людей. А после включения ML-KEM при
установке соединения TLS 1.3 в tofuproxy, сайты FSF стали единственными
с кем обламывается TLS handshake. Они бы лучше на хакатоне свои
HTTPS-сервера починили. Их libreplanet-discuss почтовая рассылка с
начала СВО стала тоже недоступна. В курсе что и магазин они прикрыли для
россиян, но тут как бы нареканий нет -- их законы обязывают. Да и
напрягали меня их последние увиденные материалы с нарочито подчёркнутыми
чернокожими и женщинами в ИТ мире. Тоже стали подчиняться "повесточке".
Sergey Matveev [Mon, 5 May 2025 10:15:29 +0000 (13:15 +0300)]
Ян Лекун, создатель DjVu и адвокат open-source
https://habr.com/ru/companies/ruvds/articles/903640/
https://en.wikipedia.org/wiki/History_of_PDF
Зацепились глаза за фразу о том, что PDF до 2008-го года был
проприетарным форматом. Ну да, до 2008-го года он (PDF 1.7) не был ISO.
Но что-то не нахожу где-то упоминаний о том, что было проблематично
доставать описания формата и реализовывать софт. Собственно, тот же Xpdf
уже в 1996 имел релизы. Уж извините, но ISO это как бы тоже не то что
что-то хорошее: зачастую из него не получить бесплатно документа. Что
есть ISO, что нет -- всё равно ты не получишь описание формата, как
например нет описание формата DVD до сих пор (в отличии от CD).
Не раз встречал нелюбовь людей к PDF и выкладыванием PostScript. Но это,
похоже, во времена когда не было свободных реализаций PDF. Всё же
PostScript это полноценная программа, поэтому "просмотр" .ps это
равносильно запуску программы. PDF без JavaScript не является
Тьюринг-полным (я тут диванный эксперт, но не нашёл опровержений), что
перевешивает выбор в его пользу.
Встречал я и советы по выбору DjVu вместо PDF. Если речь про
отсканированные документы, сплошной растр, то ничего против не имел
(хотя и сильных "за" DjVu тоже). Но PDF это же и просто про векторный
полноценный полиграфический текст/документ. DjVu тут его не может заменить.
А в 16839bedba2a4311bfee299c83cd5b8cfeb0f9c2 уже писал о том, что только
проприетарная реализация DjVu умеет декомпозировать изображение на слои
и применять разные алгоритмы сжатия к ним. Ян Лекун типа борец на
open-source? Ну вот такие они open-source-ники (а не последователи free
software): только слова, а на деле как не было свободного крутого
(сравнимого с проприетарной версией) DjVu кодировщика, так и нет. Ну а с
изобретением JPEG XL я смысла в DjVu или JPEG2000 уже не вижу (если речь
только про растр).
Sergey Matveev [Mon, 5 May 2025 10:04:55 +0000 (13:04 +0300)]
Сбой сотовых операторов и МЦК
https://lenta.ru/news/2025/05/05/v-rossii-proizoshel-sboy-u-operatorov-svyazi/
https://dxdt.ru/2025/04/29/15461/
Пишут о сбое у операторов сотовой связи. А я вот где-то полчаса, если не
больше, простоял никуда не двигаясь в поезде МЦК. Интересно, связаны ли
эти события? Или это просто очередные атаки на все виды инфраструктуры?
В Европе недавно был большой blackout. Кто-то даже перед этим накаркал
им: мол, в IT-облаках начнут небось хранить экосистему управления
электрическими сетями. Что, похоже, и случилось. Так что нехватка
здравомыслящих специалистов есть не только у нас.
А ещё не раз читал про факты отключения львиной доли инфраструктуры
городов, если рядом с ними серьёзно начать глушить сигналы ГНСС. Типа
из-за этого и время перестаёт синхронизироваться должным образом и это
уже будут проблемы с сотовой связью. На которой куча других вещей
наверняка завязаны.
На днях коллеге рассказывал, что в "старые добрые времена" наши обычные
проводные телефоны даже от электрической розетки не питались. Если
случались какие аварии, дома выключался свет, то телефон всегда работал.
Раньше один человек мог "тащить" весь проект от и до, говорят. И я
соглашусь: раньше ты был человеком-оркестром зачастую, а теперь куча
разделения обязанностей. Вот только толку никакого от этого, когда нет
понимания что и для чего делается. Конечно, когда проект большой, то там
уже все детали сложно охватить. Но только когда большой.
Сам в телекоммуникациях не работал, но, судя по всему о чём читаю,
что я вижу с VPS-ками и Интернет провайдерами: там точно с квалификацией
проблемы.
Касательно ведения всего проекта от и до. До сих пор самый лестный отзыв
о себе я услышал от бывшего начальника, уже много лет спустя как
разошлись с ним. Не, мне всякие благодарности не раз выражали, но всегда
это люди которые не очень то программисты и разработчики ПО -- поэтому
их мнение и оценка не то чтобы объективна. Ну вот мама считает что я
хороший специалист. Она никогда не программировала, не разрабатывала
софт -- поэтому как они объективно может судить об этом? Но бывший
начальник перечислил всего нескольких известных ему людей, которые от и
до могут спроектировать, распланировать, выполнить, сопроводить,
декомпозировать, протестировать, итд программный проект. Среди них был
назван и я. А вот его мнение для меня уже имеет ощутимый вес. Впрочем, я
также слышал, что он меня считал вредителем, что уже прямо
противоположные думы вызывало. Но только из-за него я решил всё же
повременить с уходом с работы в прошлом году. Опять же из-за веса его
мнения.
А сейчас все ленты ИТ новостей завалены статьями касающимися AI. Почти
ничего не читаю, ибо не интересно. Но пугает, пугает тот факт, что везде
пишут о 90% студентов использующих ежедневно AI/ИИ/LLM. С одной то
стороны ничего против не имею -- yet another инструмент, почему бы и
нет? Но доверие этих молодых людей к любой информации полученной из
поисковиков или LLM, отсутствие критического мышления -- пугает.
Особенно с учётом политической подоплёки, особенно учитывая бессовестные
попытки правки истории англосаксами, LLM которых все и используют.
Пишут о том, что 95% кода в startup-ах пишется LLM-ом. Что это означает?
Что 95% кода вообще возможно даже не читалось людьми, не говоря о его
понимании. Это означает кучу софта, который никто не знает как устроен,
как работает, как спроектирован, почему были приняты те или иные
решения. А ведь это в нашу жизнь будет просачиваться и наша жизнь будет
зависеть от этих ублюдков, которые обманывают окружающих, делая вид, что
это именно они написали программу. А как мне ещё относится к людям,
которые, так сказать, слепо списали. Если бы они открыто, прямо и сразу
же говорили: я ни черта не знаю как это всё работает, но вроде задачу
выполняет, так что можете использовать на свой страх и риск. Но они же
так не скажут, а будут делать вид или убеждать, что они точно такие же
разработчики типа меня.
Два раза уже было на работе, как предложили AI-generated небольшой
кусочек кода использовать для решения пары проблем. Нет спору -- они
были рабочими, но крайне переусложнёнными. Задаю вопрос: почему именно
так было сделано, почему именно вот так написано, почему именно вот так
та или иная конструкции применены? Ответа предлагающие дать не могут.
Если бы это было закоммичено, но это значит был добавлен
неподдерживаемый жутко переусложнённый, наполовину бессмысленный код.
А тут ещё вот новости о том, что ещё больше хотят "оцифровать" все
аспекты школьного обучения. Типа вообще заменить людей голосовыми
роботами, которые с полной уверенностью будут давать неграмотные ответы.
Sergey Matveev [Mon, 5 May 2025 05:30:52 +0000 (08:30 +0300)]
Квантовый хохол. Альтернативная история
https://sponsr.ru/nosikov/94874/Den_Pobedy_ikvantovyi_hohol/
https://awas1952.livejournal.com/10838844.html
Неоднократно мне попадалась статья в новостных лентах про "квантового
хохла". Собственно, к таким же мыслям я и пришёл самостоятельно о них.
Даже если не смотреть СМИ, а последить за ними в обычной жизни, то
поймёшь что они похлеще англосаксов будут. И, аналогично, первая мысль о
новостях, что лидеры поддерживающие Украину не приедут на празднование --
наверняка какую-нибудь заподлянку готовят всем скопом. А Путин всё
продолжает жалеть хохлов как никто.
Ещё в новостях мелькает новость о том, как Трамп сообщил о победе США
во Второй Мировой. С одной стороны это даже забавно: в скольких фильмах
или даже мультсериалах высмеивают сами же себя американцы, признавая,
что ни в одной из войн (хотя, вроде бы, полная бомбёжка Ирака наверное
считается) они не выиграли. Но уже на протяжении лет 20 неоднократно от
разных людей читал/слышал факт: большинство американцев даже не в курсе
что во Второй Мировой СССР вообще принимал участие. Теперь уже не
стесняются заявлять об отсутствии нашего значимого вклада в победу над
фашизмом.
Что дальше? Через год заявят, что бравая Европа совместно с Гитлером
объединились против напавшей на них СССР? Oh wait, судя по новостям, в
молдавских учебниках уже пишут что Вторую Мировую начала СССР. И именно
поэтому (очередные новости) неонацисты (ВСУшники) будут принимать
участие в параде в Англии.
Sergey Matveev [Fri, 2 May 2025 08:50:54 +0000 (11:50 +0300)]
Восстанавливают АОН
https://habr.com/ru/companies/timeweb/articles/830218/
Я только у одного человека видел подобный телефон со встроенным АОНом. У
нас же, после появления USRobotics Courier V.everything с "русской"
прошивкой, сам модем стал поднимать трубку и показывать на экране кто
звонит, отвечая сигналом модема через десятки секунд. Недостаток АОНов
был в том, что они поднимают трубку, а значит сразу же начинают капать
деньги у собеседника.
Sergey Matveev [Fri, 2 May 2025 08:48:39 +0000 (11:48 +0300)]
Redis снова свободен
https://www.opennet.ru/opennews/art.shtml?num=63175
С момента перехода Redis на несвободную лицензию я ни разу его нигде так
и не трогал. Задач пока для него не было. А теперь, с возвращением
Salvatore Sanfilippo, он снова стал свободным ПО. Нравится мне этот
человек, ибо столько интересного понаписал, плюс качественный софт
делает, плюс реально думает о свободном ПО.
Sergey Matveev [Thu, 1 May 2025 10:32:18 +0000 (13:32 +0300)]
OSF/1 в эмуляторе
https://habr.com/ru/articles/906226/
Я только читал про OSF/1, SVR4 и всякие подобные Unix-ы. Если это GUI,
то почти всегда CDE, Motif или OPEN LOOK (от Sun). И с 90-х и до сих пор
нравятся они как выглядят эстетически. OSF/1 особо приятивала, хотелось
пощупать её, ибо Mach микроядро, родная ОС для DEC Alpha
(7d58fbec9e870a02eb290e505633390fa4ff66cd). Даже последующее название
"Tru64 UNIX" звучит и пишется трушно.
Но... я понимаю что трогать это будет неприятно. Слишком всё старое.
Никаких IPv6. Сплошная проприетарщина.
Мониторинг сегодня показал резкий скачок разницы между моими часами и
ntp.ix.ru в 300мс. Смотрю на cgps:
┌───────────────────────────────────────────┐┌──────────────────Seen 9/Used 9┐
│ Time 2025-04-30T05:13:29.000Z (18)││GNSS PRN Elev Azim SNR Use│
│ Latitude 55.91352290 N ││GL 3 67 13.0 281.0 29.0 Y │
│ Longitude 38.03610780 E ││GL 4 68 22.0 330.0 27.0 Y │
│ Alt (HAE, MSL) 1656.683, 1614.475 ft ││GL 5 69 8.0 17.0 30.0 Y │
│ Speed 89.55 mph ││GL 11 75 14.0 123.0 31.0 Y │
│ Track (true, var): 213.6, 11.6 deg ││GL 12 76 74.0 113.0 31.0 Y │
│ Climb -16.54 ft/min ││GL 13 77 53.0 308.0 31.0 Y │
│ Status 3D FIX (48 secs) ││GL 21 85 37.0 39.0 29.0 Y │
│ Long Err (XDOP, EPX) 0.65, +/- 32.0 ft ││GL 22 86 63.0 139.0 31.0 Y │
│ Lat Err (YDOP, EPY) 0.59, +/- 28.9 ft ││GL 23 87 26.0 185.0 30.0 Y │
│ Alt Err (VDOP, EPV) 1.18, +/- 15.0 ft ││ │
│ 2D Err (HDOP, CEP): 0.88, +/- 11.9 ft ││ │
│ 3D Err (PDOP, SEP): 1.47, +/- 91.6 ft ││ │
│ Time Err (TDOP): 0.71 ││ │
│ Geo Err (GDOP): 1.63 ││ │
│ ECEF X, VX n/a n/a ││ │
│ ECEF Y, VY n/a n/a ││ │
│ ECEF Z, VZ n/a n/a ││ │
│ Speed Err (EPS) +/- 0.7 mph ││ │
│ Track Err (EPD) +/- 61.3 deg ││ │
│ Time offset -0.131075473 s ││ │
│ Grid Square KO95av49 ││ │
└───────────────────────────────────────────┘└─────────────────────────────────┘
Все девять (ограничение моего приёмника)спутников ГЛОНАССа идеально
видны, с отличным сигналом, с "ошибкой" по времени (TDOP) в 0.71 (что
означает идеальнейшую геометрию условий приёма). Такого, конечно же,
быть не может, учитывая, что у меня приём в окне, загороженном с одной
стороны стеной дома, иногда и в течении часа не может 3D координаты свои
узнать. Явно spoofing. И координаты меня на десятки километров ошибочны,
в другом городе. Фигово, конечно, такие часы иметь, которые могут
внезапно на треть секунды сместиться.
Galileo за полчаса вообще не смог ни от одного спутника сигнал получить.
Его, видимо, полностью шумом глушили.
https://habr.com/ru/articles/904664/
Да уже много лет назад я говорил, что переведя конфигурирование на
рельсы redo-целей, мы можем автоматически получить и распараллеливание.
На работе это вовсю используется -- теперь меньше секунды некоторые
проекты на аналог "configure+make+make install" могут потратить.
А в комментариях кто-то умудряется писать, что сама компиляция занимает
больше времени. Субъективно по ощущениям -- как-раз таки, зачастую,
наоборот, если речь про Си. Ждём 10сек ./configure, секунду саму сборку.
https://habr.com/ru/companies/wunderfund/articles/905400/
Совершенно не одобряю я его мерзкий "/usr/bin/env bash", но одобряю
желание писать скрипты для подобных простых команд. Его "g status"
идентичен "git status", но вот "g status foo" уже не будет работать
из-за "$@" подстановки, в отличии от alias.
В целом солидарен с аргументами в пользу написания скриптов. У меня
обычных alias-ов почти нет. Почти всё это "alias -g", которые могут
в pipeline вставляться (чего не сделать просто скриптами). А ещё
многое сделано в виде функций zsh.
https://habr.com/ru/companies/ruvds/articles/902018/
Статья упоминает адекватные современные алгоритмы сжатия звука,
изображений и вообще произвольных данных. Я уже наверное лет 20
не понимаю отчего всё ещё продолжают использовать MP3. Vorbis
куда лучше звучал. Сейчас уже давно есть Opus, потрясающий по
качеству (ну или степени сжатия).
Не соглашусь с тем, что вообще стоит переходить на lossless. Если
слушать что-то с портативного плеера, со смартфона, в говняных
наушниках, то зачем с собой таскать десятки гигабайт музыки или
передавать её по сетям? У преобладающего большинства людей нет ни
техники, ни ушей, которые бы оценили lossless. Всё же в пустую
расходовать место на дисках или пропускную способность каналов
тоже хорошо.
Но при возможности, конечно же, lossless не помешает. Сегодня у тебя
нет приемлемого оборудования, а завтра появится. Конкретно тебе lossy
сгодится, но со знакомым им уже не поделиться, ибо его такое качество
может не устроить. Я частенько предпочту вообще не слушать что-либо
(дома, в достойных наушниках), если оно есть только в lossy. Или
идеально или никак. Не будет расстройства от того, что музыка может
быть хороша, но ты знаешь, что добудешь её в достойном качестве, это
постоянно будет напоминать о себе.
Аналогично и про JPEG формат с PNG. Хотя разница в паршивости между JPEG
и современным кодеками не такая разительная как между MP3 и Vorbis/AAC/Opus.
Причём к PNG то претензия не на уровень сжатия (хотя и он далёк от того
же JPEG XL), а на скорость. Всякие gzip -- ну блин, ANS алгоритмы для
кого изобрели, которые и являются основной массы современных кодеков? А
в gzip же ещё и половина времени тратится на один только CRC32.
О выступлении группы, альбомы которой заслушиваю до дыр, узнал за
несколько дней. Не мог не пойти, конечно же.
Начиналось мероприятие с Cultustepean -- два синтезаторщика, один из них
на вокале. Всякие органные и мрачные инструменты, drum-machine. Не моё,
индиффирентен к выступлению был.
Далее шли, уже знакомые, Illt. Ну black как black. Не плохо, но и ничего
запоминающегося.
Потом был Nedrugh. Всё выступление были проблемы со звуком. То
микрофонный эффект от вокалиста, то от их гитар, то гитар толком не
слышно. Это сильно опечалило их выступление. Но... ну метал как метал,
если на разогреве, то отличный.
Ну а Всполох, были, конечно же, на высоте! К сожалению, долбанный звукач
всё равно плохо всё настроил и самая первая их песня была почти без
гитар и вокала -- их почти не слышно на фоне барабанов с басом. Не один
человек из толпы сказали о проблемах с гитарами. Вторая песня началась
уже с добротным звучанием.
Одно из первых что приходит на память из их выступления: запах. Перед
началом они прошли и благовониями какими-то повоняли во все стороны. Они
там, видимо, продолжали тлеть и поэтому запах был до конца выступления.
Приятный, но очень уж необычный для концерта.
Одеты участники группы в какое-то серое рваное тряпьё. Разукрашены как
уже почерневшие трупы. Почему-то хочется сравнить с ghoul-ами из Fallout.
Выглядит здорово.
Играли идеально. Отличный вокал. Мощный ударник. Из-за проблем со
звуком, их главный гитарист-вокалист подходил вплотную к мониторам,
видимо, чтобы себя лучше слышать когда играет соло.
Мощно, атмосферно! Хтонически, как они бы сказали. Именно то, что я и
хотел услышать. Про себя я многие слова их песен знаю и, так сказать,
подпевал. А кто-то и вслух это делал. Не смотря на экстремальный вокал,
у них очень хорошо различаются слова. Всё же, лучше добротного black,
ничего нет!
В какие месяцы и годы чаще всего хожу на концерты?
Недавно сконвертировал список концертов из Texinfo в recfile. Из него
zsh-скриптом генерирую Texinfo. Переписываясь с одним человеком, брякнул
факт о том, что летом мало концертов проходит. И теперь можно моментально
подтвердить это
Похоже, только сейчас я обратил внимание на то, что whitespace-ы которые
добавляет "wc -l" удобно сочетаются с "echo -n" выводом и вот так красиво
автоматически всё выравнивается.
Удивительно, но 2000-ые мне запомнились тем, что я там очень часто ходил
на всякие грайндовые концерты. А статистика говорит, что самый массовый
год был 2023-ий, да и вообще после начала СВО. Сейчас в этом списке есть
и оперы, но их по пальцам посчитать. В общем, неожиданные для меня данные.
Уже больше месяца (564930f08277a2813bcf84b4b58001dbeafa400c) я на новой
VPS-ке с другой /48 сетью. Полёт отличный. Ни к скорости, ни к каким то
другим неожиданностям придраться не могу.
Но также заметил, что при обновлении различных Git зеркал, полностью
исчезли ошибки недоступности. Почти 200 различных репозиториев, многие
из которых доступны по IPv6, некоторые даже только по нему. И где-то с
полдюжины, иногда штук 20, но не могут они обновиться -- отрубают через
какое-то время с ошибкой по прикладному протоколу (Git/HTTP) что всё
медленно, плохо и timeout. С новой сетью если что-то и не получалось, то
когда реально сами Git хосты лежат. Но зато на нём не работает YouTube,
в отличии от прошлого. На работе он (по IPv6) доступен, но тратить там
трафик на скачивание видосиков на тему компьютерных игр я не буду.
Но и в мире IPv4 всё аналогично: что-то где-то доступно и работает
исправно, а на другом провайдере уже нет.
https://arxiv.org/abs/1904.06525
Вот есть предложение с анализом по использованию Стрибога в SPHINCS+
(ae09a56ab4c40b8a377821678c929e32ef2a0c0d). С ним, как и с SHA2-256
сложнее, ибо они не XOF функции, как SHAKE, но типа просто замена хэша
более чем достаточна. Чем SPHINCS+ и прекрасен.
Побывал на концерте ансамбля Центрального Дома Российской Армии
https://cdra.ru/
Не целенаправленно ходил, но была возможность посетить "за компанию".
Как по одиночке пели, так и небольшим хором. Пляски, музыкальные номера.
Ну... не скажу что пожалел, но всё же совсем не моё. По сути мне больше
всего то только танцы и понравились, но наверное потому что я редко когда
их вообще видел в живую. В целом это было крайне близко к эстраде и
попсе, разве что тексты были ожидаемой тематики. Казачий хор, на котором
был днями раньше -- куда более серьёзный.
https://code.mendhak.com/gpl-v2-address-letter/
Некто прошёл квест по отправке материального настоящего письма в FSF,
чтобы получить от них тоже настоящее письмо с распечатанной GPL лицензией.
Вот только ему прислали GPLv3, а не GPLv2, которая у него была указана.
Раз в пару недель проскакивает новость о том, как люди то тут, то там
ставят "защиту" от AI-роботов, типа Anubis. На сайте написано, что он
заставляет обозревателя делать proof-of-work. Детали на сайте больше не
прочитать: он бросает redirect-ами на один и тот же URL со слэшом и без
него (видимо, это та самая "защита"?). На GitHub только можно посмотреть
документацию. Ну так и есть: всякие cookie, PoW. То есть, теперь уже не
корпорации (типа Cloudflare), но сами люди заставляют других запускать
код и сжигать немалое кол-во ресурсов для доступа уже к обычным HTML
сайтам (не web-приложениям).
https://ru.wikipedia.org/wiki/Кубанский_казачий_хор
В целом понравилось, но повторно вряд ли бы пошёл. Всё же далеко от меня.
Ни одна женская солистка не тронула, не впечатлила (ну кроме мощью голоса),
в отличии от мужских солистов. Были и танцевальные вставки. И чисто
музыкальные, которые мне, похоже, больше всего понравились. Сходить,
считаю, стоит -- удовольствие получаешь.
http://blog.cr.yp.to/20250423-mceliece.html
DJB рассказывает о том, насколько всё сложно, не красиво и фигово и
странно с NIST стандартизацией алгоритмов.
На днях коллега был удивлён количеству разнообразных систем установки
пакетов для Python. Кроме pip это всякие poetry и прочее. Сегодня я
полчаса пытался создать venv внутри которого хотя бы python-dateutil
установить, плюс ещё несколько зависимостей на чистом Python.
Устанавливал из полностью замороженного состояния pip-а. На двух разных
версиях Python. Даже предварительно устанавливая setuptools. Ничего уже
не сделать: упорно всё равно пытается установить setuptools новейших
версий, падает на этом, ничего не ставит. Пришлось править код проекта,
удалять временно часть зависимых библиотек, другие ставить чисто руками,
третьи подкладывать через PYTHONPATH. Если нет директории с полным
слепком всех пакетов, то через PyPI это уже почти нереально что-то
установить. В полнейшей деградации вся экосистема. Не проверял только на
супер-пупер новейших версиях. Но зато хотя бы никто не пытался
подтягивать Rust зависимости.
В кои то веки вспомнил про "Женщина. Учебник для мужчин"
Как-то недавно одна знакомая рассказывала, как готовила в общежитии еду,
чтобы с ней и с нерешённой задачей из института пойти к знакомому за
помощью. Я думал что давно уже меня не могут задеть или возбудить старые
воспоминания подобные темы. Но смогли. Опять я вспомнил, что аж два
диплома делал девушкам (оставалось только оформить, всякую воду с ОБЖ и
экономической частями добавить), но никогда никто не благодарил (ну ok,
одиночное "спасибо" всё же было), или тем более превентивно не приносил
еду или что-либо подобное. А тут чувак ещё ничего не успел сделать, не
выставил условия, но уже в profit. Теперь то, кстати, понимаю: если я
уже и так всё сделал, то смысл меня благодарить, ибо и так всё получено.
Когда были отношения с бывшей, то я был уверен, что красиво одевалась
она, в том числе, чтобы типа и мне тоже нравилось, как парню.
Самоуверенности, конечно, хоть отбавляй. Уже после её измены, начинало
доходить, что одёжка то запросто и для мужчины была, но для другого.
Сколько то лет назад вроде ко мне проявляла одна особа симпатию, но там
вообще не понятно что в голове у неё было, параллельный мир и не долго
всё продлилось, относительно шустро прекратившись, более не пересекаясь.
Умён, не умён -- роли вообще никакой не играет (про ум просто чаще всего
женщины говорят как о наиболее важной черте). Видел я как и на умных
вешаются, так и умнейших полностью игнорируют. С дебилами не связывающими
два слова вместе -- вот у них, судя по тому что вижу на улицах, всегда
есть пара. Если ли хорошая (по зарплате) работа или нет -- тоже никакой
роли не играет. Ну если речь не про очень высокооплачиваемую. Когда то я
получал больше чем все друзья вместе взятые. Результата никакого. Сейчас
я меньше многих junior-ов получаю (судя по информации из первых уст), но
и не пытаюсь кому-либо понравится. Хорошо ли одеваешься или нет -- тоже
роли не играет. Я не один год ходил только в костюмах. А сейчас вот на
днях решил новые джинсы всё же открыть, ибо на старых появилась уже
дырка :-) (но до дырки то они же выполняли свою функцию!). Если я забил
на то, чтобы кому-то понравится, то почему же в прошлом году позвал
замуж одну? Опять, чтоб её, лютая самоуверенность, хотя не одну неделю
обдумывал всё и прикидывал.
И вот и вспомнилась сабжевая книжка. Где чётко мужчин можно разделить на
тех, кому "дадут" (не обязательно секс) за-просто-так; кому дадут в обмен
на что-то (еду за помощь, с чего заметка моя и мысли и начались); кому
не дадут ни при каких обстоятельствах (разве что если с головой не лады
или какие-то безвыходные ситуации с вопросом о жизни/смерти). Изначально
книжка мне понравилась. Потом я, скорее, считал её далёкой от реальности,
где всё не так просто и однозначно. Сейчас что-то из ностальгии вновь в
неё посмотрел и... её точно мне надо было прочитать до знакомства с
бывшей, где на каждой второй строчке указывалось насколько всё было
паршиво и не правильно.
Но спустя уйму лет с момента создания этого "блога", у меня уже
преобладают другие мысли по поводу (сильно) теоретически знакомств с
женщинами. Практически сразу возникает в голове напоминание о факте
моего возраста. Ещё немного и мне уже будет сорок! А (не)понимание
женщин у меня на уровне 13-летнего пацана, у которого после общежития (в
которых я никогда и не был) в институте уже никаких проблем не было бы.
И когда мне друзья предлагают познакомиться со знакомыми выпускницами
институтов... я больше удивляюсь как им вообще такие идеи приходят в
голову? Я же не рок- или теле- звезда, чтобы было нормально иметь
разницу в возрасте в полвека :-) Объективно это полнейшая фигня. Её
сверстники вовсю начинают (или уже вовсю идут) подниматься на холмы
успеха и развития, тогда как после сорока у большинства, насколько мне
кажется, в лучшем случае будет только плато стабильности, после которого
всё равно только спад возможностей и умений.
Ну и в целом к женщинам у меня с начала СВО ощутимо поубавилось
уважения и спокойного отношения. Так как, видя как они обсуждают тех,
кто буквально их жизни защищает, можно только порадоваться что такой вот
нет дома, ибо не представляю как с ней жить то или разговаривать можно
будет. И детей страшно оставлять, ибо воспитает таких, что уж лучше бы и
не рождались. Видимо, феминизм у нас настолько развит в стране, что
(настоящих, которые защитники) мужчин у нас настолько презирает женский
пол, что они только и ждут как получат выплаты за гибель мужа. Он же
просто очередным будет, вообще ничего не стоящей (кроме выплат) единицей.
Конечно, не все такие, даже не уверен что больше половины, но расслоение
между "отвратительными" и "нормальными" женщинами ещё шире стало в моей
призме мировосприятия.
А ещё мне из года в год сильнее и сильнее кажется, что с молодёжью не
выйдет найти общий язык в быту. Люди всю жизнь росли со смартфонами и
сплошным проприетарными ПО и удалёнными сервисами в Сети. Всё на свете,
каждая мысль ими сразу же вбивается в Google/whatever. А теперь в LLM
системы, судя по всему. По моему это всё кардинально иное мышление
должно быть, принципиально иные принципы решения проблем/задач. Плюс
иные "протоколы" общения/взаимодействия с людьми (ну кому в голову может
прийти мысль об отправке голосовых сообщений!? (исключая инвалидов, тут
всё оправдано)).
Добавил аутентифицированное шифрование на основе публичных ключей
http://www.keks.cypherpunks.su/Authcrypt.html
Аутентификация отправителя зашифрованного сообщения без подписи мало кем
предоставляется. Ни в CMS, ни в PGP такого нету например. А было бы
полезно: может работать быстрее, нет non-repudiability свойства, которое
кому-то может не нравится.
По идее, достаточно просто сделать ещё один DH между статическими
ключами (DH(s,s)), а не только один DH(e,s). Засада в том, что у меня
не-ГОСТовые KEM-ы -- гибридные, из традиционных и постквантовых
алгоритмов. А PQC KEM-ы не предоставляют API которым бы можно было
выполнить аналог DH(s,s). Поэтому решил его делать без участия PQC, ведь
это не повлияет на конфиденциальность, только аутентификацию, причём
deniable/repudiable. Результат просто подмешивается HKDF-ом.
Но это всё просто. А вот в чём настоящая засада, так это проблема
нескольких получателей. Дешифровать сообщение может каждый из
получателей. Соответственно и перешифровать сообщение, так как CEK
ключ же один на всех.
Начитался про всякие message franking, про key commitment (снова), про
committing AEAD и ccAEAD (compactly committing). Многие статьи и люди в
рассылках предлагают использовать ccAEAD, commitment которого использовать
в KDF при шифровании CEK-а. Всё это красиво, да, но не применимо к тому
как KEKS/CM шифрует: потоково, разделяя на независимые 128KiB блоки.
В итоге остановился на практически простейшем решении, как это также
сделали и в Saltpack (f9e33af95af9179a24c5539e9e9661d60d0a3c0b).
Добавлять MAC над хэшом от шифротекста для каждого получателя по
отдельности. Хэш от шифротекста -- чтобы один раз его можно было дорого
посчитать, а MAC уже делать над короткой строкой, чисто оптимизация.
Пока всего этого ещё нет в коде, но хотя бы практически поставлена точка
над этой единственной оставшейся задачей. Месяцами время от времени
обдумывал и прикидывал всякие за и против.
https://norton.fandom.com/ru/wiki/Королева_Солнца_(серия_книг)
Лёгкое прелёгкое приключенческое чтиво. В конце, правда, уж
слишком по-детски наивное, чуть оставляя осадок. Но в целом
с большим удовольствием всё прочитал.
Какие CA доверяются создателями web-обозревателей?
В рассылке задали вопрос: Why aren't any browser makers also CA's?
На что дали исчерпывающий ответ:
Apple is a CA, at least according to themselves.
Google is a CA, at least according to themselves, Microsoft and Mozilla.
Microsoft is a CA, according to themselves, Apple, Google and Mozilla.
Mozilla is the only one that doesn't seem to be trusted as a CA by any
of the major browser makers, but I won't rule out that I'm searching
for the wrong thing.
I'm pretty sure as someone controlling a host name you can get an
actual TLS certificate at least from Google.
Apple's list of currently trusted CAs: https://support.apple.com/en-us/121672
linked from https://support.apple.com/en-us/103272
Google's: https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/root_store.md
linked from https://pkic.org/ltl/
Microsoft's: https://ccadb-public.secure.force.com/microsoft/IncludedCACertificateReportForMSFT
linked from https://learn.microsoft.com/en-us/security/trusted-root/participants-list
Mozilla's: https://ccadb.my.salesforce-sites.com/mozilla/CACertificatesInFirefoxReport
linked from https://wiki.mozilla.org/CA/Included_Certificates
https://blog.trailofbits.com/2025/04/18/sneak-peek-a-new-asn.1-api-for-python/
Ну вот как относится к авторам (судя по всему) библиотеки декодирования
DER, но которые заявляют, что: DER is a self-describing and
self-delimiting encoding: A given DER message can be fully and soundly
parsed without prior reference to a schema or format description beyond
the encoding rules of DER themselves. Можно только одно сказать: они
вообще не работали хоть сколько-то широко с DER-ом, с ASN.1 и выдумывают
полный бред. Достаточно встретиться с массой IMPLICIT TAG-ов со
структурами и фиг твой декодер справится. Именно поэтому в PyDERASN есть
--allow-expl-oob флаг, который позволяет пытаться декодировать "выходящий
за пределы" (якобы) EXPLICIT TAG и пытаться влезать дальше по структуре.
https://habr.com/ru/companies/ru_mts/articles/902244/
как заявляет автор статьи. Типа программист. Который сравнивает скорость:
из БД извлекается 100 тестовых пользователей; создается экземпляр класса
для каждой строки, преобразуя объект datetime в строку формата ISO и
шифруя одно из полей с помощью шифра Цезаря; результат сериализуется в JSON.
Это просто прекрасно сравнивать при наличии СУБД, и при наличии JSON в
Python, который сериализуется Сишным кодом. Ну а если применить Numba,
то Python становится сравним по скорости!
Мне удалось разобраться с циклами, функциями, пакетами, но впереди
еще постижение интерфейсов, работы с файлами и параллелизма.
На самом деле, человеку ещё уйму просто базовых вещей по программированию
познавать. И ещё понять тот факт, что в Go придётся не "параллелизм" изучать,
а конкурентность.
https://sphincs.org/
К KEKS/CM форматам добавил возможность создания подписей SPHINCS+
алгоритмом, который стал стандартом SLH-DSA (stateless hash-based
digital signature algorithm) в NIST, наравне с ML-DSA.
Чем мне очень понравился SPHINCS? Тем, что он полностью основан
исключительно на хэш-функциях и я в общем и целом понимаю его
устройство, понимаю принцип работы. Не в таком понимании как
эллиптические кривые и простое доверие что всё так и есть, когда
объясняют на пальцах, а такое, что я прям осязаю что вся сложность
задачи сводится к свойствам хэшей криптографических. Ну и в его
создании участвовал DJB.
Активно пытаются стандартизовать XMSS алгоритм подписей. Тоже всё на
хэшах, но он stateful -- каждая подпись это изменение состояния
"приватного ключа". Что не шибко то удобно, но зато точно работает. Так
вот SPHINCS это как-бы надстройка над XMSS, делающая его stateless. Но
ценой вычислительных мощностей и размера подписи.
Если взять самый параноидально безопасный вариант SPHINCS+: 256s-robust,
то создание ключевой пары, создание и проверка подписи занимают
несколько секунд. Но позже в SPHINCS+ предложили "simple" вариант,
который в разы легче по затратам процессора и более чем удовлетворяет
безопасностью. SLH-DSA выбрал вообще только этот вариант.
"256f" ("s" -- small, "f" -- fast) вариант гораздо более быстрее, ценой
размера подписи большим на 10 килобайт (~30 vs ~40). Это компромисс, но
я выбрал более быстрый вариант, ибо место довольно дёшево и это не
вопрос 1K (который влезет в один IP-пакет) vs 10K.
Подпись можно делать детерминированной (без использования случайных
данных) или randomised. Изначально я слепо выбрал детерминированную, ибо
это убирает требование наличия хорошего PRNG. По аналогии с
детерминированными подписями в Ed25519 vs ECDSA/ГОСТ. И SPHINCS+ и NIST
намекают, что randomisation полезно для борьбы с fault-injection атаками.
Но позже я осознал свою неправоту: хороший PRNG вовсе не требует. Даже
если PRNG будет константой, то это просто станет детерминированной
подписью, без каких-либо рисков для утечки приватного ключа. Поэтому он
либо ничего не даст (если PRNG плохой), либо приятные свойства против
fault-injection атак.
Да, размер подписи большой, но всё же более чем пригодный для применения
на практике, плюс точно очень безопасный, даже против квантовых
компьютеров. Пока мне видится использование SPHINCS+ (или SLH-DSA
варианта) как предпочтительного для долговременных документов. Не там
где подпись используется для интерактивной аутентификации (TLS тот же),
а для подписей рядом с файлами. И то, для интерактивных протоколов стоит
не подписи, а DH использовать.
Уже со вчерашнего дня. Теперь у меня остались только stargrave.org,
cypherpunks.su и nncpgo.org домены, более никаких .ru. Содержимое
cryptoparty.ru переехало на cryptoparty.cypherpunks.su, но с уходом
всяких либералов, экстремистов, оппозиционеров и сепаратистов,
криптопати больше как-то никто и не устраивает :-)
На работе провели сабж между службами. На 90% всё сплошные фильмы времён
СССР, где я не силён, как и более молодые коллеги. Я где-то 1/3 или 1/2
вопросов мог бы ответить. Коллеги бы справились и без меня, но кроме
одного вопроса, где я дал правильный и уверенный ответ на тему фильма
"Убить дракона" (afef111c5fedb37d00145abaedc2ff3feed28418). Заняли
второе место с отрывом в одно очко.
https://habr.com/ru/articles/900778/
Какие критерии успешного обновления ПК? Как гласит статья:
* "Веб-браузер больше не тормозит" -- вот да, теперь surf-ить просторы
Паутины это уже как Crysis запустить по ресурсам. Безумие, которое не
останавливается
* "Однако "мгновенной загрузки любой программы" о чем я мечтал нету.
Софт хоть и стартует пошустрее, но ждать приходится все равно ощутимое
время" -- я поэтому и люблю адекватное ПО и не переношу ожидания или
задержки при интерактивное работе
CA/B форум решил сократить срок действия сертификатов до 47 дней
https://dxdt.ru/2025/04/14/15371/
https://www.opennet.ru/opennews/art.shtml?num=63069
Как верно заметил автор:
Сертификаты превращаются в квитанции, разрешающие доступ. Что-то
вроде тикетов в каком-нибудь Kerberos. Короткие сертификаты
означают, что веб-узлам придётся плотно привязаться к внешней
централизованной системе. Всякий веб-узел должен будет постоянно и в
автоматическом режиме отмечаться на центральном сервере, который
станет выдавать (или не выдавать) подтверждение, что браузерам всё
ещё разрешено к этому веб-узлу подключаться.
А так как WWW рулится де-факто всего одним CA, под юрисдикцией США, то у
них (ещё более) офигенный инструмент цензуры.
Идея emoji для меня выглядит полнейшим безумием, в контексте Unicode.
Это же не просто символы/картинки, а реально штуки которые на лету
рендерятся и могут комбинироваться между собой. Твёрдо убеждён что этому
не место в Unicode. А многие превращаются из-за этого в каких-то макак
безграмотных, которые только символы могут друг другу показывать, и
гадай что они хотели своими ребусами сказать.
Графический Links у меня не рендерит их, как и многое из Unicode тоже.
Не проблема. А вот терминал прекрасно отображает. Не нравится мне это.
Надо пропатчить терминал.
К сожалению, emoji не расположены в одном диапазоне значений Unicode.
Поэтому пришлось написать Perl программку, которая парсит emoji-data.txt
из Unicode стандарта, интерпретирует диапазоны, выводит готовый Си код с
полным списков всего что касается emoji. А сам терминал bsearch-ем
напротив этого списка проверяет выводимые руны и заменяет на невалидную,
если нашёл emoji. Благо, код в suckless terminal мало и место для
вставки находится моментально.
Как-то на работе во время парного программирования, у человека git stash
выдавал ошибку: мол, обломались, ничего не смог сделать. Эмпирически
выяснили, что если git stash делать в SHA256 репозитории, то всё плохо.
Версия Git 2.43.0. Не разбирались до конца в чём же дело, но понадеялись,
что это просто бага в самой 2.43 версии. Собрал сегодня её и никаких
проблем не обнаружил. А так как у человека самая обычная vanilla Ubuntu,
почти голая, без настроек персональных, то, судя по всему, это именно
они умудрились как-то собрать Git таким образом, что поломали stash. Ну
и как под этим разработчику работать?
Услышал тут мнение от человека, который когда-то проходил наши
собеседования на начинающего разработчика. Он был на собеседованиях в
Сбере, в Яндексе, обсуждал со своими знакомыми, тоже куда-то
устраивавшимися.
Я был полностью уверен, что наши собеседования чрезвычайно просты и,
скорее, даже постыдно несерьёзны и запросто отталкивающими от того, что
мы мало чего спрашиваем и проверяем. Опыта в нашей команде не много по
этому вопросу.
Оказалось, что для стороннего человека они были полной жестью и
ужасом в плане сложности. Выходя после собеседования, у него
криптография чуть ли не из ушей лилась (как он примерно так и
выражался). Вроде приходил устраиваться на место Python-разработчика,
но с ходу начали спрашивать то по сетям, то по Unix-ам, то по базам
данных, то по архитектуре распределённых решений. И только после этого
начался Python. А человек готовился только к нему, ничего иному. В
Сбере, мол, вопросы только по нему и были.
Я был реально удивлён, совершенно не ожидая, что всё как-раз наоборот,
чем я представлял.
https://habr.com/ru/news/899812/
Типа он отъедает половину всего времени работы декомпрессора. А я по
статьям из dffa894abeab4eaec509b95af9d23b51e4e0f844 уже наслышан, что
автору LZ4/Zstandard пришлось изобретать более быстрый алгоритм контроля
целостности, ибо CRC32 слишком медленным оказался.
https://habr.com/ru/articles/898958/
Ох, насколько же у меня всё было похоже на описанное в статье! Правда,
Mandrake был 7.x, на двух дисках. Запомнилось, что там применялся EGCS,
вместо чистого GNU GCC. Ну и у меня AMD K6-2 III был, никогда никаких
Pentium-ов.
http://lists.cypherpunks.su/archive/nncp-devel/87ecy76f5v.fsf@complete.org/T/
https://lobste.rs/s/gzuzyp/email_over_nncp_via_exim
Тут люди чего-то изобретают, создают какие-то сети почтовые поверх NNCP.
Вот только ни одна ссылка с salsa.debian.org у меня не открывается.
Поэтому вообще никаких деталей не знаю.
http://www.keks.cypherpunks.su/Schemas.html
С самого начала появления YAC/KEKS проекта я откладывал такую тему как
валидация структур данных. Сам по себе кодек должен быть schemaless: для
декодирования ничего дополнительного не нужно. Но схема всё же нужна для
задания какие поля, какого типа, какой длины, каких значений должны же
быть. Для JSON есть JSON Schema как пример.
Соответственно, нужно и понять как задавать схемы, а потом понять как их
применять и валидировать данные напротив них. JSON Schema или CDDL,
конечно, не вариант для Си -- слишком тяжеловесно. Генерировать код
декодирования или проверки из этих схем -- я не потяну такую задачу,
уверен что не простая, особенно когда, в отличии от ASN.1/protobuf,
порядок следования элементов не всегда априори известен.
Более чем полгода откладывал, но менее чем за неделю всё придумал и
реализовал. 90% всех проверок -- очень однообразны и просты. Можно
значит написать какие-то простые правила описывающие как проводить
проверки. Так сказать, сделать некую validation (virtual) machine,
которой управлять через подаваемые команды валидации. Предполагая, что
сама реализации такой верификации по командам/правилам/спецификациям
должна быть очень простой для реализации даже для Си.
В итоге реализовал подобное для Си и для Go. В Си это, если убрать
огромный код связанный с проверкой точности TAI полей и всякие
красивости поясняющие где и какая валидация не прошли -- это займёт
где-то 200-300 строк кода.
На вход нужно подавать команды валидации. Как их передать, как
закодировать? Конечно же использовать сам KEKS! В итоге имеем функцию
валидации, на вход которой подаются декодированные произвольные данные и
декодированные схемы. Каждая схема это просто последовательность команд
валидации.
Некоторые команды принимают n-ое кол-во аргументов, какие-то без них
вообще. Команды реализовал: ". k" -- "взять" элемент словаря или списка;
"E" -- проверить что взятый элементы существует; "!E" -- не существует;
"*" -- применить последующую команду для каждого элемента выбранного
словаря/списка; "T t0 [t1 ...]" -- проверить что тип выбранного элемента
находится в множестве (t0[, t1 ...]); "> n" -- проверить что значение
int или длина списка/словаря больше указанного числа; "< n" -- меньше;
"S s" -- проверить выбранный элемент напротив схемы s; "TMP p" -- time
maximal precision, проверить что точность выбранного поля со временем не
превышает указанную; "= v" -- проверить что выбранная строка равна v.
Например проверка такой CDDL схемы:
ai = text .gt 0
fpr = bytes .size 32
our = {a: ai, v: bytes/text, fpr: fpr, ?comment: text}
По сути это такой встроенный интерпретатор. Но достаточный для 90%+ всех
задач связанных с проверкой напротив схем. А если чего сильно будет не
хватать, то можно и новые команды добавить.
Как их генерировать? Я написал реализацию на Tcl, в которой множество
вспомогательных коммандочек имеется. В итоге содержимое файла с полным
описанием правил валидации публичного ключа (который может быть
подписан, который является и cm/signed структурой):
SCHEMAS {
av {
{HAS a}
{TYPE= a {STR}}
{!EMPTY a}
{HAS v}
{TYPE= v {BIN}}
}
{HAS sub}
{TYPE= sub {MAP}}
{!EMPTY sub}
{TYPE* sub {STR}}
}
}
Что, с моей точки зрения, не сильно и не существенно отличается от
описаний ASN.1 или CDDL. Я их писал просто с ходу, без запинок, без
особых раздумий. В самой Tcl утилитке, например STR= (убедиться что k
является строкой со значением v) описан вот так:
где более низкоуровневые TAKE, TAKE, EQ команды описаны так:
proc TAKE {v} {
if {[string is digit $v]} {set v [list INT $v]} {set v [list STR $v]}
subst {{LIST {{STR .} {$v}}}}
}
proc EQ {v} {subst {{LIST {{STR =} {STR $v}}}}}
proc TYPE {vs} {
set l {{STR T}}
foreach v $vs {lappend l "STR $v"}
subst {{LIST {$l}}}
}
что затем уже через LIST/STR/INT команды кодируется в KEKS.
Соответственно, пишем на Tcl подобные схемы, преобразуем их в KEKS
файлы, через go:embed встраиваем во время компиляции в Go код, где
декодируем и передаём в функции валидации. Аналогично и для Си. А так
как схемы, в общем то, являются самыми обычными Tcl программами, то там
всякого можно понапридумывать для сокращения писанины.
По моему вышло здорово. Пока функции валидации ещё не покрыты тестами,
но это явно не сложная задача, ибо команд не много. Зато теперь можно
настоящие схемы писать, а не то что я на сайте показываю, чисто для
человеков. И свои Go утилитки у меня уже используют это всё для
валидации файлов с ключами, подписанных и зашифрованных контейнеров.
Я тут далёк от всей темы, но не Тьюринг-ли полный у меня язык вышел?
А то наслышан, что нечаянно сделать подобное -- относительно легко. Но
это не должно быть проблемой, ибо не предполагается что схемы из
недоверенных источников могут приходить.
Добровольно-принудительно на работе нам выдают банковские карты одного
банка. Говорю что не использую сотовый телефон, могу дать городской.
Обращаются к старшей: мол, тут человек без сотового. На меня оборачиваются
пять человек, вся комната. "Как же так, ни один банк без сотового не
выдаст карту". Отвечаю, что "со Сбером проблем не было". После этого
сказали, что пускай напишу городской, выдали карту. Хотя там в анкете
явно есть пункт "нет мобильного телефона".
Пару недель назад я криво подстригся. Сделал одну глупость и у меня
что-то типа чёлки появилась. Конечно же временно, пока волосы на
несколько сантиметров не дорастут. Был тут на дне рождения у друзей и
мне сказали что с ней я похож на Винсента (Траволта) из Криминального
Чтива (действительно так и есть) и помолодел лет на пять.
https://16-bits.ru/%d0%b0%d0%bd%d0%be%d0%bd%d1%81-01-04-25/
Из-за блокировок со стороны РКН и Google, а также недостатков других
альтернатив, 16-bits.ru будет делать выпуски на картриджах для Game Boy,
что крайне удобно и просто.
Sergey Matveev [Mon, 31 Mar 2025 18:59:00 +0000 (21:59 +0300)]
Клоны рядом с Арбатом
С мамой мы сильно заранее приехали на оперу
(40013dd3cad3dc129608c583c3ca141c5eb760e5) и поэтому погуляли по улицам
вокруг, недалеко от Арбата. На улице не мало стоит столиков рядом с
кофейнями, за которыми молодые люди в основном. Секунд десять мимо них
шли, где-то дюжина парочек за ними сидит. И абсолютно все девушки за
ними полностью на одно лицо. А точнее так: за их пухлыми надутыми
губищами полностью теряется всё остальное лицо. Одно и то же выражение
лица, одни и те же омерзительные губищи, один и тот же неприятный и
отталкивающий взгляд, одни и те же причёски. Прям выход с конвейера
клонов. Где-то видел коллаж из жён "рэперов" -- да проще Вальдо найти,
чем отличия в этих жёнах, как-будто клонов с одной и той же пластиковой
куклы. Вот тоже самое и на улице было.
Sergey Matveev [Mon, 31 Mar 2025 18:35:37 +0000 (21:35 +0300)]
Конец театров
https://www.m24.ru/articles/kultura/22112024/745667
Пару недель назад вступили новые правила: в театры и на концерты теперь
билеты приобретаются только с вбиванием паспортных данных и предъявлением
оных при входе. У нас билеты пока были приобретены заранее и без этих
правил, но в выходные вот видели как на входе в оперу сверяли паспорта.
Это настолько вопиюще глупо, что смириться или согласиться ходить по
таким правилам я не согласен. С какой стати я должен отчитываться и
заранее сообщать недоверенным лицам о том, куда я хожу развлекаться?
На каждом шагу орут о безопасности персональных данных, но теперь ещё и
театрам с концертами надо их будет сливать. Говорят, что для борьбы со
спекулянтами. Там где это проблема: там и думайте как решать. А я ни
разу в жизни никуда не ходил, где нельзя бы было в кассе театра/зала
приобрести билеты без проблем.
Для меня это означает конец походов по таким местам. Надеюсь что безумие
и маразм не дойдут до клубов, где вообще нет посадочных мест, где почти
вся моя музыка и играет. Благо, успел прослушать все доступные оперы Вагнера.
Sergey Matveev [Mon, 31 Mar 2025 18:31:01 +0000 (21:31 +0300)]
Сходил на оперу "Иоланта"
https://ru.wikipedia.org/wiki/Иоланта_(опера)
После пятичасовой Вагнеровской "Тристан и Изольда", Иоланта на полтора
часа с антрактом -- пролетела вмиг. По началу было скучно, но когда
пошли мужские арии, то уже начало нравится. Были в Геликон-опере, где
все костюмы были под современные переделаны. Когда показывают гламурных
девочек, но поют про что-то типа пряжи -- это вызывает диссонанс. Нам с
мамой эта современность костюмов/декораций не понравилась. Например в
Новой Опере на Лоэнгрине -- рыцарь был в костюме-тройка, но это не
бросалось в глаза, не вызывало диссонанса, не сбивало. Музыка -- ну типа
нормально, но не более. Мама сделала окончательный вывод: с Вагнером
пока ничто не сравниться.
Sergey Matveev [Fri, 28 Mar 2025 13:34:27 +0000 (16:34 +0300)]
Починил скорость на VPS для IPv6
Перейдя на другой VPS провайдер для IPv6 Интернета, с самого начала у
меня с ним только одна проблема: низкая скорость ко мне, всего десятки
килобайт в секунду, или пару сотен если несколько потоков параллельно.
Отдача трафика на мегабайтах в секунду, проблем нет.
Время от времени пытался выяснять в чём проблема, почти всё время про
себя ругаясь на ТСПУ, который мне наверное всё и урезает, чтобы VPN не
использовал.
Я пробовал WireGuard. Пробовал просто IP-in-IP туннель. Пробовал всё это
пропускать уже поверх IPv6 через вторую VPS-ку. Все автономные системы
российские, все адреса тоже, сети тоже, никаких зарубежных. fetch ISO
образа с mirror.yandex.ru на VPS-ке идёт быстро, а через неё медленно.
iperf3 показывает, что скорость внутри VPN-а между мной и самой VPS-кой
хорошая. Но как только "выхожу" куда-то наружу, то на вход проседает.
Думал, что это DPI так shape-ит трафик. Не нашёл ни одного готового
решения чтобы UDP трафик пускать через TCP-прокси. Ну или плохо искал
или что-то сложное попадалось. Хотел завернуть UDP пакеты WireGuard-а в
него. Написал на Go свой, на пару экранов кода. Просто перед содержимым
UDP пакета 16-бит длины добавляется. Не помогло. Решил шифровать первые
8-байт Blowfish (он реально вполне быстрый), а в начале делать простой
challenge-response authentication на основе хэша. Ну чтобы скрыть явные
инкапсулированные длины UDP пакетов проксируемых. Не помогло. Решил
ChaCha20 шифровать полностью весь пакет, так что TCP трафик полностью
становится неотличимым от шума. Не помогло. Решил дополнять каждый пакет
до большого фиксированного размера, чтобы было меньше корреляций с
размерами проксируемых пакетов. Не помогло. Стал генерировать
константный по кол-ву пакетов трафик: или у меня срабатывает таймер и
отправляется пустой (но фиксированный по размеру всё равно) пакет, либо
у меня есть UDP для отправки. Вижу что 1.5MBps трафик в обе стороны
идёт, iperf3 показывает симметричную скорость ограниченную туннелем. Ну
вот уж полностью стала отсутствовать корреляция между этим трафиком и
входящими пакетами, которые через туннель выйдут наружу. Тоже не помогло.
Благо, что каждая подобная правка это вопрос получаса работы at most,
ибо на Go, который даже в top не особо будет заметен.
Подумал что может быть hop count в IP пакетах как-то влияет? Поменял в
разные стороны на VPS -- не помогло, на её скорость (fetch .iso на ней)
никак не отражается.
Ну не может DPI как-то находить корреляции между входящим plaintext
трафиком и константным шумом. Кто ещё может как-то "вредить"? Начал
грешить на саму VPS-ку. Пошёл даже ядро пересобирать, подумав, что может
быть они какие-то патчи наложили мешающие делать VPN? До установки
нового ядра не успел дойти.
Вот где можно/нужно вставить sleep, чтобы VPN тормозит? По сути просто
навсего в forwarding plane. Никаких проблем если IP пакеты не
затрагиваются forwarding-ом. Уже почти сдавшись, решил поискать банально
"freebsd slow forwarding" и среди первых ссылок есть задача с темой тип
"медленный forwarding в xen". У меня, правда, KVM. И там рекомендуют
отключить аппаратную проверку контрольных сумм на виртуальном сетевом
адаптере. Я всю жизнь сплошь и рядом видел обсуждения и порицания
аппаратных ускорений. TSO и LRO обязательно надо отключать для
маршрутизатора -- это у меня с самого начала было. А вот из своих
рекомендаций я убрал отключение проверки контрольных сумм, ибо давно не
находил на них ругательств, вроде бы они не проблема. Поэтому забыл.
ifconfig vtnet0 -rxcsum -txcsum и скорость скачивания через VPN более
чем в сотню раз повышается, проблема решена. И стыдно, что забыл про
такую банальную штуку, но зато сколько софта понаписал, плюс очередной
неотличимый от шума протокол, даже квантовоустойчивый (ибо PSK :-)). Но
ни на одной VPS у меня не было такой проблемы. Какой-то не такой KVM у них.
Sergey Matveev [Mon, 24 Mar 2025 15:26:28 +0000 (18:26 +0300)]
Carcass "Reek Of Putrefaction" -- рождение goregrind
https://en.wikipedia.org/wiki/Reek_of_Putrefaction
С альбомом знаком давно. Так давно, что ещё не очень был наслушан
всякого горграйнда. Прослушал сейчас -- понимаю почему Carcass считают
прародителями этого жанра. Уже в 88-ом году всё было придумано ими. И
огромное количество каверов на всё их творчество исполняют.
Sergey Matveev [Mon, 24 Mar 2025 08:42:23 +0000 (11:42 +0300)]
Распараллеленный BLAKE3
https://github.com/BLAKE3-team/BLAKE3/releases/tag/1.7.0
https://www.linux.org.ru/news/opensource/17918577
В новой reference версии BLAKE3 на Си появилась возможность сборки с
oneTBB, позволяя распараллеливать вычисления. 4-х гигабайтный файл за
доли секунды у меня хэшируется теперь. Но их example программа tbb
версию использует только для mmap-нутых данных.
Sergey Matveev [Mon, 24 Mar 2025 07:19:39 +0000 (10:19 +0300)]
Greylisting работает, вновь убедился
Пока я общался с VPS провайдерами (f52906a5e4067b2bfc45c054c1cd222dae4d223a),
то отключил greylisting для ускорения переписки с раннее незнакомых адресов.
Больше недели был без него, затем больше недели как включил обратно. Разница
очень ощутима! В разы кол-во просачиваемого спама сокращается. И заметил, что
без greylisting спам сообщения очень большого размера (1-2 мегабайта) могут
прилетать.
Sergey Matveev [Mon, 24 Mar 2025 06:09:05 +0000 (09:09 +0300)]
Подстановка мусора на www-сайтах, недоступность ресурсов
https://www.opennet.ru/opennews/art.shtml?num=62925
На прошлой неделе заметил, что пара блогов перестала обновляться.
Увидел, что они начали отдавать непонятную тарабарщину со случайными
значениями в заголовках. Не псевдослучайный шум, а наборы бессвязных
слов. А также видел обсуждения/предложения в других блогах о том, чтобы
подсовывать паукам зацикленные перенаправления или, вот, мусор. Плюс вот
новость о том, что всякие свободные проекты на серверах своих инфраструктур
вводят всякие ограничения и проверки, блокирующие целые сети, если есть
подозрения на то, что это пауки от ИИ. В рассылке Debian видел жалобы на
невозможность открыть какие-то ранее доступные их ресурсы. GNOME, судя
по новости, так вообще у себя решили заставлять пользователя (а точнее
его обозревателя) скачивать программу для вычисления proof-of-work.
Ну и вот пара блогов решила, что я тоже робот, хотя я не понимаю на
каком основании. Качается Atom-лента вызовом cURL, с честным
User-Agent-ом, говорящим что это feeder-качалка. Может быть, там
поменялась ссылка на блог, которая должна находится в robots.txt? Но я
же хочу штатно зайти на сайт обычным обозревателем, чтобы увидеть эту
новую ссылку, но уже главная выдаёт бредятину. Вынужден удалить эти
блоги и забыть о них.
Мой новый VPS провайдер работает сильно иначе чем предыдущий. Скорость
скачивания через него, как отмечал ранее, десятки килобайт в секунду.
Если это BitTorrent UDP трафик, то может превышать мегабайт. Плюс то ли
он весь Cloudflare блокирует, то ли Cloudflare блокирует его сеть, то ли
это блокировка ИИ-like адресов с их стороны и мой переезд на VPS совпал
со всеми этими пертурбациями. То ли он блокирует некоторые BitTorrent
сайты, находящиеся за Cloudflare, которые вроде бы у нас типа запрещены.
Но я уже и прежде писал, что всё что размещается за ними, почти
наверняка не будет доступно (9ec8af5c6c0a3d586e33640842652801f20d6f53, 5b16fb4fccf7e8062956aa169aec927ae4349a6d, 3377284e1f2e5c1db69e100ec32f8f5a92a08cb4, 6bbbada632a3727fa74995fa8e1700d389688ac9).
В комментариях на OpenNet понравилось: сайты, чтобы их не парсили
автоматизированно, добавляют уродскую разметку. Затем добавляют CAPTCHA,
которую распознают. Затем помещают за Cloudflare. Теперь вот уже
применяют PoW. Смотрят напротив GeoIP базы данных. DNSBL. Абсолютно
точно внедрят обязательную авторизацию через ЕСИА. Что дальше?
Использовать квалифицированную ЭЦП? Ввести OTP из SMS, двухфакторно же.
Или, как мне уже один VPS писал, с web-камерой связаться с ними для
идентификации. А ещё "Beat the DarkSouls boss on 512x512 window on WASM".
Хотя ведь уже была новость о том, что CAPTCHA придумали со встроенной
мини-игрой. И я наслышан про сложность Dark Souls-like игр.
Sergey Matveev [Sun, 23 Mar 2025 13:02:49 +0000 (16:02 +0300)]
Сходил на Only Fetish Fest: Black Metal Time
Всё же для меня человечество ещё не придумало в музыке ничего лучше чем
black metal. Много я куда ходил, но не сравнится оно с интересным и
добротным блэком.
В этот раз не было московских групп. Открывали мероприятие, прежде мне
не известные, Уводь из Удомли. Хороший такой блэк, всё по трушному. Уже
на этой группе понял, что не зря выбрался из дома. Не однообразный,
интересный. И, по сути, единственный кого точно можно к этому
направлению в музыке причислить, среди всех выступавших.
Продолжили Cage Of Creation из Суздаля. Два года назад в 91bf686031eb868a0d3b0f5dddcb2db9bf977c9d уже писал о них и ничего нового
не добавлю: интересное и мелодичное. Но к black сложно причислить, лишь
моментами.
Затем шла единственная группа мне известная из Новосибирска -- Olshanoe.
Я не продолжаю удивляться: огромный город, развитый, культурный, но
метал групп из него вообще прям нет, что мне и подтвердил экскурсовод
когда там был. Вокалист представлял группу ставя ударение на втором
слоге. Пожалуй больше всего она мне и понравилась. Очень атмосферная,
почти всё время и спокойная, хотя и элементы быстрого рубилова тоже
присутствовали. Плюс несколько раз вместо электрогитары наяривал их
вокалист на баяне. Более чем его звук сочетается с метал инструментами.
Заканчивали сие мероприятие Passéisme. Полная противоположность
умиротворяющему спокойствию Olshanoe. Сплошное сверхскоростное рубилово
похлеще чем в грайндкоре. С кучей риффов напоминающих русские народные.
Под них активный слэм и шёл. Такой, что буквально ботинки слетали с людей.
Между своими песнями они вставляют спокойные французские медляки
старенькие, под которые брутальные слэмоводы мигом образовывали пары и
вальсировали, заставляя ржать вокалиста.
Перед Passéisme ко мне подошёл какой-то человек и спросил кто для меня
является headliner-ом. Сам он пришёл на Passéisme. Olshanoe ему вообще
не понравилась. Сзади меня я слышал разговоры, что кто-то только ради
Cage Of Creation посетил. Этим мне black (и его смежные направления) и
нравится: он очень разнообразен. Ну и на вкус и цвет -- товарища нет. Я
то точно в восторге от Olshanoe, а на Passéisme, если не поколбаситься,
то не пошёл бы снова.
Прикупил дюжину дисков, футболочку. Only Fetish Fest это прям уже имя
нарицательное интереснейших сборных солянок из музыки, а не повторение
одного и того же раз за разом.
Я думаю, что Vim многих отпугивает тем по началу, что если его
запустить, то увидишь голое окно. И типа... и это всё? В отличии от
приборной панели шаттла как в GUI IDE всяких. Конечно же причина тут
одна: минимум ненужной и явно не запрашиваемой информации. В современных
Microsoft Office же даже делают снимки экрана, показывая чуть ли не с
полдюжины панелей с кнопочками, которые занимают почти четверть экрана
рабочего. Но под капотом Vim скрывается практически самый мощный
редактор текста, инструмент для работы с текстом, коим являются все наши
программы, письма, документация.
Вначале все познают базовые команды по передвижению по тексту и
редактированию. Я уже тебе на словах говорил, что это, как правило,
команда (yank, delete, change, follow, и т.д.), после которой идёт
motion (слово, СЛОВО, внутри слова, предложение, абзац, внутри кавычек,
внутри скобок, и т.д.). Перед этим может идти указание кол-ва повторов
команды. "Удали ка мне три слова с окружающими их знаками препинания".
Если суммарно команд в каком-нибудь Блокноте или IDE от силы 2-3 десятка
наверное наберётся, то в Vim их сотни.
Вместо нажатия "влево, влево, влево, удалить букву, ещё раз", ты будешь
стараться делать "перейди на начало предыдущего слова, удали до его
конца слог". И это нужно для того, чтобы можно было повторить действие,
нажатием точки. Если твоим действием было "удалить букву", то с этим
много не сделаешь полезных повторов, а "удали слово" -- уже будет
актуально для многих контекстов применения. Так начнёшь пользоваться
макросами: это буквально запись твоих действий. Например тебе надо из
конца предложения найти вторую фразу с конца, но которая в кавычках,
переместить её в начало предложения, сменить кавычки на скобочки, и
внутри все слова поменять с camelCase на kebab-case, плюс порядковый
номер в начале строки увеличить на единицу. Всё это будет сделано одним
макросом, в котором каждое высокоуровневое действие у меня точками
разделено в описании. Подобные вещи сплошь и рядом встречаются во время
рефакторинга того же.
Сколько буферов обмена в Windows? Я им конечно пользовался в последний
раз четверть века назад, но вроде бы больше одного у них не стало. В X11
(графическая система в UNIX-ах) их два. А в Vim их больше трёх десятков.
Найди мне среди строк начинающихся с описания вот такого вот класса,
заканчивающихся на docstring в конце класса, строки описываемые такой то
регуляркой, и примени к каждой строке макрос который мы только что
написали в предыдущем абзаце, но при этом оригинальные версии строк
добавляй ка в регистр "m". Всё это делается одной командой в командной
строке Vim. Зачем всё сохраняли в регистр m? Чтобы из него удобно
сформировать changelog для нашего log message коммита, чтобы потом не
выуживать вручную их git diff-а.
Нашли запоминающиеся места в нашем исходном коде, о которых не надо
забывать и быстро между ними перемещаться? В Vim есть метки, по которым
можно как в Wikipedia моментально перемещаться. Вернутся на последнее
изменение? Вернутся на последнее место с которого мы сделали jump из
другого файла? Всё это пара нажатий клавиш. Посмотреть список последних
сделанных высокоуровневых изменений и среди них выбрать вот то 20-е, где
я правил странный метод в другом проекте? Пожалуйста, пара команд.
Как угодно делать mapping клавиш и слов? Я не пишу "и т.д.", а пишу
"итд", который автоматом раскрывается. Тьма команд у меня тоже
сокращены, заалиасены. У каждого тьма сокращений и мини команд
накапливается. Например если мне надо "обернуть" какую-то переменную в
скобочки, то я парой нажатий оборачиваю слово в кавычки, а дальше ещё
парой нажатий меняю кавычки на скобочки. Звучит как двойная команда,
много нажатий, но это занимает доли секунды, ибо на рефлексах всё.
Кто-то может считать, что идеально когда минимальное количество нажатий
клавиш делается. Я убеждён что нет: более длинные последовательности
рефлекторно отработанные могут быть эффективнее. Плюс многие действия
могут быть менее эффективны для конкретного узкоспециализированного
здесь-и-сейчас случая, но зато их можно будет удобно применить в макросе
или хитрой команде командной строки Vim.
Про повтор действий/команд многие пишут, но многие умалчивают что в Vim
есть, очевидно, и отмена действий, но организованная в виде дерева
изменений. Такого вроде нет ни в одном редакторе. У всех история
изменений по которой можно туда-сюда перемещаться линейна.
Искать текст по всякому, подсвечивать, перемещаться по меткам, в том
числе среди множества файлов -- это всё банально. Vim умеет перемещаться
по тэгам. Тэги это по сути аналог индекса из СУБД. Это отдельные заранее
сгенерированные файлы. Хочешь прыгнуть на определение функи под
курсором, или по названию -- два нажатия клавиш. Название фунок
совпадают/похожи с названиями переменных или констант? Два нажатие и
тебе меню с выбором куда ты хочешь перейти. Это возможно единственное
что умеют IDE в отличии от тупых редакторов (Nano, Блокнот, и подобных).
Но более того: поддержка навигации по тэгам появилась не в Vim, а в Vi,
который был задолго до него (просто любопытный факт насколько старая эта
фича (вовсю в 1980х), которой так любят хвастаться современные IDE из
2020-х :-)). Причём я вот как-то себе делал Zettelkästen систему, где
проще простого было написать скрипт, который бы генерировал бы файл с
тэгами для моего формата заметок, чтобы я в Vim мог как в броузере
прыгать по заметкам как по ссылкам.
В Vim есть jump-list и quickfix-list. Это отдельные окошки в которых
зачастую выводят результат работы поиска типа grep или git grep. Или там
выводят список ошибок во время компиляции или linter-а. По которым можно
удобно перемещаться и прыгать. А можно одной командой выкинуть ошибки
связанные с PEP8. А второй командой для каждой ошибки linter-а во всём
проекте применить команду комментирующую проблемную строку или например
сразу исправляющую вызов os.exit на os_exit например. Выставить пометки
рядом со словами или строками о проблемах -- тоже пожалуйста.
Подключить LSP плагин для работы с LSP сервером и получить по сути весь
per-language функционал для рефакторинга и linting-а? Без проблем. Иметь
автодополнение методов или аргументов? Показывать сигнатуры функций во
время набора кода и сразу же lint-ить? Все эти свистоперделки и полезные
вещи (опять же, которыми любят хвастать IDE) включаются на раз два.
Конечно же в Vim есть возможность показывать множество окон и как угодно
тасовать/изменять их. Есть и табы, хотя лично я не вижу в них смысла,
особенно при использовании мультиплексора терминала. Хочется сохранить
полностью от и до всё размещение окон, табов, курсора, содержимого
регистров и jump/change-списков? Одной командной Vim может сохранить
файл с сессией и одной командной продолжить эту сессию. А можно
сохранить только расположение окон/файлов, для часто используемого
проекта.
Отредактировать кусок кода изолированно в отдельном буфере/окне? Без
проблем. Скрывать часть текста, чтобы глаза не мозолил? Скрывать
определённые символы (ну например URL при редактировании Markdown, чтобы
только название ссылки оставалось)? Выводить всплывающие окна рядом с
курсором или словами? Все есть из коробки.
Молчу про многие сотни опций и настроек. Даже такой мелочи как добавлять
ли пробел после объединения строк или нет? Оставлять ли отступ после
ввода перевода строки? Но я молчу про это, молчу ибо слишком много.
Мы вроде с тобой использовали не просто вставку из файла, а вставку
вывода команды -- это частое действие.
Возможность проверки орфографии? Из коробки, встроена. Ну только словари
подложить надо.
Vim может быть запущен в режиме сервера и из командной строки в него
можно посылать команды. Например ты в терминале видишь вывод Python
traceback-а и можешь послать команду на открытие уже запущенного Vim-а
заданного файла на данном месте с подсветкой проблемного слова. А можно
редактировать файлы по прозрачно запущенному SSH на удалённой машине. А
можно и прямо в Vim запустить терминал и в нём работать, прямо на месте
выуживая или редактируя вывод программ.
Открывать и искать файлы как в эффективном shell-е, не задалбывая Tab
для автодополнения? Всё можно. Но ты наверное ещё тут не в теме, так как
и в shell ещё не использовал эффективное перемещение по директориям и
поиск/выбор файлов. В Vim я себе делал fuzzy-matching файлов как в zsh,
всё возможно. А может быть для поиска или выбора файлов хочется
буквально использовать fzf (https://github.com/junegunn/fzf) -- легко.
Интегрироваться с tmux мультиплексором терминала и общаться с его
встроенными буферами обмена? Плагин на пару экранов кода, без проблем.
Автоматическое форматирование текста, перенос строк, соблюдение отступов
в многоуровневых списках? Всё из коробки, настраиваемое. Зависимое от
языка комментирование строк и снятие комментариев? Пара нажатий. Ведь не
везде же достаточно добавить "#" в начало строки, а надо обрамлять и с
начала и с конца "/*" какими-нибудь.
Запустить компилятор/сборку, отловить ошибки в выводе, заполнить ими
quickfix окно -- при должной настройке из пары команд это можно сделать
вызовом :make. Из коробки, всё заточено под дружелюбность к разработчику.
Иметь возможность навешивать hook-и и автоматически выполняемые команды
на разных действиях? Без проблем. Например когда у меня открывается
письмо (email), то у меня сразу из цитируемого содержимого вырезается
подпись человека и курсор сразу же перемещается после конца цитаты.
И я ещё даже не упомянул про чуть ли не самую важнейшую часть Vim: его
встроенный язык программирования. Конечно, обязательно многие про свои
Atom, PyCharm, VSC могут начать говорить что там тоже можно писать на
JS/whatever и добавлять/изменять функционал. А теперь покажите мне хоть
одного человека кто это бы делал на практике. На этом "а у нас так тоже
можно делать" можно закрывать. Если бы было РЕАЛЬНО удобно и легко это
делать, то делали бы. А вот в Vim его язык очень интегрирован с самим
редактором и на vimscript регулярно и постоянно пишутся какие-нибудь
плагины многими людьми под свои нужды.
Разбить длинную сигнатуру функи на много строчек с корректным indent,
соблюдением нетривиального формата Python "foo: [bar, baz]", с
добавлением всех нужных запятых в конце? Написал плагин. Добавить все
недостающие import-ы о которых нам сказал linter из quickfix окна,
основываясь на статистике их применений через банальный git grep вызов?
Написал плагин. Открывать файлы которые указаны как
путь/к/файлу:строка:столбец? Что часто выдаётся компиляторами. Написал
плагин. Добавить дополнительные интерактивные команды для навигации по
indent-ам в тексте, что часто нужно в Python коде? Написал плагин.
Подсвечивать не человековводимые Unicode символы, которые могут
представлять опасность? Написал плагин. Выравнивать удобно по всяким
вертикальным разделителям? Написал плагин. Находясь в произвольном месте
unittest метода Python, нажать пару клавиш, чтобы в буфере обмена
оказался полный python-path вида path/to/file:TestCaseName.test_method?
Снова плагин. Тоже самое делать для Си кода, чтобы в буфере обмена
оказывалась строчка пригодная для вставки в отладчик, чтобы он
останавливался на строке где курсор? Плагин. И почти все вышеназванные
плагины написаны что-то типа за десятки минут или пару часов. Это не
очередной долбанный framework с которым нужно хорошенько пострадать
чтобы от него добиться того, что ты хочешь, а это инструмент сделанный
программистами для программистов, чтобы делать новые инструменты и
программы :-)
Когда-то можно было услышать критику vimscript: мол он странно выглядит
и не удобен. Не спорю: даже перенос строк в нём выполнялся добавлением
слэша в начале строки. И нельзя было в конце списков/словарей оставлять
запятую. Эти времена в прошлом, так как уже не мало времени существует
vim9script, который уже полностью похож на современный и привычный нам
язык программирования. Почти все мои плагины были написаны ещё на старом
vimscript, но я всё полностью перевёл на vim9 -- он хорош.
А кроме самого языка, Vim может и запускать асинхронные задачи. Есть как
в Go и каналы для коммуникации между асинхронными процессами. Сделать
instant messenger внутри Vim? Да я десятки видел и пробовал, не проблема
уже 20 лет назад была.
Из коробки интеграции с Git нет, но есть замечательнейший плагин
fugitive, без которого многие из нас не представляют уже возможным
разрешение конфликтов. Не скажу что он супер-пупер выделяющийся, но он
сильно помогает при работе с Git. И, в отличии от IDE, не скрывает его
от пользователя, ограничивая его действия или скрывая важные
предупреждения и сообщения.
И из коробки в Vim есть инструмент для сравнения, создания, отображения
и вообще работы с diff-ами. Видел в блогах что не редко Emacs
пользователи используют именно vimdiff для визуализации и правки
diff-ов, а не свой родной Emacs. Может что-то уже и поменялось и у них
появились свои достойные решения.
Как минимум vi, есть на любом уважающем себя UNIX. Поэтому, зная хотя бы
vi ты сможешь эффективно править конфиги на серверах во время
администрирования. Работая в командной строке, в zsh, в bash, whatever,
ты всегда одним нажатием можешь вызвать vi/vim для редактирования
многострочной строки в вызванном редакторе. Работая в PostgreSQL, введя
\e в его psql клиенте, ты будешь редактировать SQL запрос в Vim. Я
наверное лет 20 в самом окне web-обозревателя уже ничего не редактировал
и одним нажатием у меня вызывался Vim чтобы отредактировать textarea,
которая вставится назад в web после выхода из редактора. Мало кто из
опытных пользователей набирает/отвечает на почту в окне почтового
клиента: для этого де-факто всё равно будет вызываться внешний редактор
(типа Vim или Emacs). *Любой* POSIX совместимый shell по стандарту
обязан иметь два режима редактирования командной строки: либо vi, либо
emacs. Других вариантов нет. Огромная часть интерактивных CLI программ
реализует свой интерфейс через libedit или GNU readline, оба из которых
имеют возможность использования vi режима. Это не полноценный vi(m)
редактор, но базовые команды там будут одинаковы. То есть, почти всё в
UNIX мире, на котором строятся все современные серьёзные решения, ЦОДы,
сети, backend-ы и HPC -- имеет только два режима работы с пользователем:
или vi или emacs. Другого не дано, ибо за ~35 лет никто не изобрёл
ничего хотя бы отдалённо лучшего.
Если что, то в Vim одна из самых лучших документаций что я встречал. С
введением безумно дружелюбным к пользователю, даже с графическими
объяснениями (чего не было в документации в моё время когда я начинал им
пользоваться).
Но начать стоит с получасового vimtutor (это прям команда в терминале),
после которого ты сможешь уже без проблем использовать редактор где бы
то ни было.
От меня есть важнейший (как я считаю) совет: не усердствовать с
визуальным режимом выделения текста ("v" команда), не злоупотреблять ею.
Для начала вообще забыть про её существование. Ибо я со стороны видел,
что именно из-за неё люди убивают почти все возможности редактора типа
повторение действия, создания макросов или выполнения команд в ":g".
Визуальное выделение это уже не высокоуровневое действие, а буквально
"выдели вот ровно вот именно такой длины строки/символы". Но тянуть к
нему будет, так как в Microsoft Windows программах стрелочки с зажатым
shift-ом используются крайне часто.
Ну и рекомендую сразу же включить режим показа относительной нумерации
строчек. 5ff1b3c8c76be6e7691defe34a7e18c4d753f4f2
Без этой фичи ещё будет проблематично совместно с кем-то работать, так
как сказать "на минус 19-ой строке забыл вот то то" можно моментально,
ибо на экране прям будет "19" число написано. А если бы были абсолютные
номера строчек, то они и трёхзначные бывают и просто устанешь
произносить их.
Есть большущий миф о том, что Vim нельзя использовать без массы
плагинов. Как человек с 20+ летним стажем работы в нём, знакомый с
другими опытными его пользователями с не меньшим стажем, однозначно
заявляю что это миф/бред/враньё. Чаще всего люди обвешиваются плагинами
только для того (иногда и сами того не понимая), чтобы из Vim сделать
другой редактор. Людям дают болид Формулы-1, а они сразу начинают
модифицировать его, чтобы сделать знакомый им Жигуль. Многие, включая
меня, проходили этот этап, когда 20-30 плагинов стояло. Но с годами об
этом только жалели, ибо многие из них только скрывают настоящую мощь
Vim, препятствуют гибкому использованию. Сейчас у меня 15 моих
собственных самописных плагинов: но они связаны или уже с выработанными
привычками или же для узкоспециализированных задач (особых языков,
форматов и прочего) -- тут я не вижу проблем в установке task-specific
помощников. Вот только для языков программирования есть LSP, поэтому
Python/Go/C/whatever-specific плагины вряд ли могут потребоваться, ибо
достаточно одного LSP клиента, ну и LSP-сервера для языка, который от
редактора уже никак не зависит.
Ещё можно найти много рекомендаций для новичков начинающихся с совета
установки менеджера плагинов. Это абсолютно устаревший и не имеющий
смысла совет, так как уже много лет назад в нём появилась встроенная
система пакетов, очень удобная.
Всё что я написал касательно Vim также наверняка полностью относится и к
Emacs -- второму из "профессиональных" редакторов. Хотя многие и не
считают Emacs редактором, а скорее чуть ли не операционной системой,
неким desktop environment.
Самое большое отличие между ними в том, что Emacs с самого начала был по
сути интерпретатором и окружением для работы с Lisp (свой диалект),
поверх которого как бы реализован редактор. Vim, в котором не сразу
появился vimscript, же это развитие Vi -- а Vi это просто редактор, без
какого либо встроенного языка программирования (VI VI VI -- editor of
the Beast :-)). Vim это редактор в который добавили возможность
программирования/расширения, а Emacs это наоборот штука для
программирования на Lisp, поверх которой, на которой сделали редактор.
Реализовать внутри Emacs-а почтовые и новостные клиенты, IM-ы и всякое
такое: это абсолютно штатное его использование.
Плюс главнейшая разность Emacs и Vi(m) как редакторов: в Vi используется
несколько переключаемых режимов работы (вставка, выделение, командный,
командная строка), тогда как в Emacs сплошные сочетания и комбинации
клавиш (Ctrl+то, Ctrl+сё). Физиологически за ними работается по разному.
И есть известный статистический факт: частота проблем с запястьями у
Emacs-еров существенно выше чем у пользователей другого редактора.
Коротко упомяну про shell-ы. Я видел как большинство новичков работают в
терминале. Собственно, как и все мы когда-то начинали. Постоянный cd
туда, cd сюда, ls и всякое подобное. Наверное возникает вопрос: и чем же
это удобнее чем тыкать мышкой в GUI проводнике или IDE? Ничем.
А удобнее это становится тогда, когда начинает использоваться эффективно :-)
Пока работа в режиме cd/cd/cd/ls/cd/cd/ls ничем не отличается от DOS, в
котором просто было мало ресурсов для чего-то более серьёзного.
Надо сразу понимать: есть shell который используется для исполнения
скриптов, а есть интерактивный shell, в котором ты, человек,
интерактивно с ним взаимодействуешь. Иногда эти две задачи может
выполнять один и тот же shell. Не редко два совершенно разных и
несовместимых. shell скрипты де-факто пишутся на POSIX shell, который
/bin/sh. Но например в FreeBSD по умолчанию для интерактивного
использования выставляется tcsh, который вообще не совместим с /bin/sh.
Многие писаются от FISH shell-а, который тоже никоим образом не
совместим с POSIX/bin/sh -- и это не страшно, ибо интерактивная работа и
скрипты это зачастую не пересекающиеся задачи.
Первое что узнают люди для хоть какой-то эффективной работы с
интерактивным shell-ом это автодополнение имён файлов и названий команд.
Никто не пишет "main.go", все напишут "ma" и нажмут TAB, который
дополнит имя файла (если нет коллизий) до "main.go". Это всё научились
делать shell-ы ещё в 1980-е, насколько знаю.
Второе что узнают: наличие истории команд. Хотя бы нажимать стрелочками
вверх/вниз. А затем узнают про Ctrl+r, в котором можно написать часть
команды и будет произведён поиск только по этой части. Например ты
помнишь что что-то вводил касательно "build". Ctrl+r, "bui" а дальше
тебе предлагают команду "go build", нажимаешь enter.
90% людей на этом и останавливается. Хотя это всё лишь только 5% от всех
возможностей современных интерактивных shell-ов. Что прискорбно и
удручает, видя как много времени теряется впустую на сплошную ручную
работу.
Исторически как бы существовало два больших семейства shell-ов: Bourne
shell и C shell (1978 появился). "sh" и "csh". POSIX shell это Bourne
shell. BASH это Bourne Again Shell (что читается как "born again", игра
слов). Не то чтобы Bourne shell чем-то был сильно удобнее и выделялся,
но просто так исторически сложилось, что именно он стал стандартом для
написания скриптов, так как появился первым.
https://en.wikipedia.org/wiki/Comparison_of_command_shells
Одним из самых продвинутых shell-ов (и для интерактивной работы и для
скриптоваяния) долгое время был Korn shell, появившийся аж в 1983.
Однако он был проприетарным (закрытым). Сейчас появились свободные
версии, но по сути после появления Z shell это уже не так актуально.
Хотя некоторые BSD системы используют ksh по умолчанию, который я очень
уважаю.
В tcsh (TENEX C shell) впервые появилась возможность дополнения имён
команд и файлов. В csh появилась впервые история команд,
дополнение/подстановка из истории, алиасы, стэк директорий посещённых,
~-нотация (~/ это домашняя директория например) которая сверх часто
используется. В tcsh это всё развилось ещё сильнее. Job control в csh
был почти с самого начала, тогда как в том же GNU Bash оно появилось
только в 1989.
Почти всё вышенаписанное перекочевало и в ksh, который был более менее
ещё и совместим с bourne shell синтаксисом, позволяя и удобно/привычно
скрипты писать и интерактивно работать. В нём появились ассоциативные
массивы как тип данных. Очень продвинутые возможности по подстановке и
перенаправлению всяких файлов. Иерархичные вложенные переменные.
Ссылочные переменные. И многое другое.
Сложно описать насколько более продвинут ksh/zsh/bash относительно POSIX
shell. Простейший пример: у тебя "foo | bar" команда в скрипте. Если у
тебя foo упадёт и вернёт плохой код возврата, то для POSIX/bin/sh кодом
возврата всей этой конструкции pipeline-а будет результат только bar.
Например bar это "grep". Если у тебя упал "foo", то с точки зрения
"grep" ему просто подали на вход пустоту, ничего ошибочного, всё
валидно, мы успешно выходим. Тогда как более продвинутые для
скриптования shell-ы имеют возможность "выкинуть" плохой код возврата
pipeline-а любой команды. Это делает скриптовании и куда безопаснее и
куда компактнее/короче без тьмы костылей.
Вот например табличка с сравнением некоторых возможностей разных
shell-ов, довольно старая уже, древняя можно сказать:
sh csh ksh bash tcsh zsh rc es
Job control N Y Y Y Y Y N N
Aliases N Y Y Y Y Y N N
Shell functions Y(1) N Y Y N Y Y Y
"Sensible" Input/Output redirection Y N Y Y N Y Y Y
Directory stack N Y Y Y Y Y F F
Command history N Y Y Y Y Y L L
Command line editing N N Y Y Y Y L L
Vi Command line editing N N Y Y Y(3) Y L L
Emacs Command line editing N N Y Y Y Y L L
Rebindable Command line editing N N N Y Y Y L L
User name look up N Y Y Y Y Y L L
Login/Logout watching N N N N Y Y F F
Filename completion N Y(1) Y Y Y Y L L
Username completion N Y(2) Y Y Y Y L L
Hostname completion N Y(2) Y Y Y Y L L
History completion N N N Y Y Y L L
Fully programmable Completion N N N N Y Y N N
Mh Mailbox completion N N N N(4) N(6) N(6) N N
Co Processes N N Y N N Y N N
Builtin artithmetic evaluation N Y Y Y Y Y N N
Can follow symbolic links invisibly N N Y Y Y Y N N
Periodic command execution N N N N Y Y N N
Custom Prompt (easily) N N Y Y Y Y Y Y
Sun Keyboard Hack N N N N N Y N N
Spelling Correction N N N N Y Y N N
Process Substitution N N N Y(2) N Y Y Y
Underlying Syntax sh csh sh sh csh sh rc rc
Freely Available N N N(5) Y Y Y Y Y
Checks Mailbox N Y Y Y Y Y F F
Tty Sanity Checking N N N N Y Y N N
Can cope with large argument lists Y N Y Y Y Y Y Y
Has non-interactive startup file N Y Y(7) Y(7) Y Y N N
Has non-login startup file N Y Y(7) Y Y Y N N
Can avoid user startup files N Y N Y N Y Y Y
Can specify startup file N N Y Y N N N N
Low level command redefinition N N N N N N N Y
Has anonymous functions N N N N N N Y Y
List Variables N Y Y N Y Y Y Y
Full signal trap handling Y N Y Y N Y Y Y
File no clobber ability N Y Y Y Y Y N F
Local variables N N Y Y N Y Y Y
Lexically scoped variables N N N N N N N Y
Exceptions N N N N N Y N Y
Не так часто делают просто переход cd, cd, cd. Или имеют алиасы для
директорий (например "cd ~pyg" у меня перейдёт в /home/stargrave/work/pygost),
или имеют стэк директорий и при перемещении добавляют директори в стэк,
позволяя одной командой (у меня это буквально одно нажатие клавиши)
перейти назад по стэку. "cd -" вернёт в предыдущее место.
tcsh (как и zsh) имел встроенный spellchecker и он мог исправлять
опечатки в командах или названиях файлов (но лично я не рекомендовал бы
такое, ибо у меня не раз случались губительные исправления).
Если пользователь набирает полностью снова целые слова или команды, то
скорее всего делает что-то не так и не эффективно. "!$" подставит
последний аргумент из последней команды -- эту штуку даже наши
технические писатели, которые сидят под Астрой и в Word, вовсю
используют. !:1 подставит первый аргумент из прошлой команды.
!!:gs/foo/bar выполнит заново предыдущую команду, но заменив в ней все
foo на bar.
Иногда ты точно не помнишь с чего начиналась команда, но помнишь что это
было связано с ffmpeg и blablabla фильмом. А тебе надо повторить команду
связанную с перекодированием видео. У себя я могу просто набрать "ffm
blabla", нажать кнопку "вверх" и у меня по сути будет выведен список
команд с поиском по ".*ffm.*blabla" регулярке без учёта регистра букв.
Набрав "s/2/r2s/auth/init" и нажав TAB у меня этот путь раскроется до
"src/rik2utils/rik2s/request_auther/__init__.py". Причём между слэшами
можно даже опускать написание букв вообще (зависит от наличия коллизий с
другими файлами/директорий, конечно же).
"**.mod" в ksh/zsh подставит все go.mod файлы проекта.
"**.php(.om[1]:h)" у тебя возьмёт все .php файлы рекурсивно из всех
поддиректорий, отсортирует по времени изменения и возьмёт самый свежий и
подставит директорию где он находится.
"**.{js,php,css}~(libs|temp|tmp|test)/*" подставит рекурсивно всей .js,
.php, .css файлы, но за исключением директорий libs, temp, tmp, test.
"!#$:t:r" -- подставит у *текущей* команды последний аргумент, но только
с отрезанной директорией из пути и без расширения. "**(#ia2)readme"
подставить все "readme" файлы где допустимо до двух опечаток в названии.
Ничто с подобным мощным раскрытием wildcard-ов и работой с историей не
сравнится по эффективности. Именно подобными вещами и мощны командные
интерпретаторы, чего невозможно сделать в графических приложениях.
GNU Bash по умолчанию во многих дистрибутивах GNU/Linux используется по
сути исключительно из-за политических причин. Многое мною написанное
выше в bash не работает и невозможно сделать. Да и для скриптования он
не сильно лучше голого POSIX shell. Самая частая проблема при
скриптовании shell-а это возня с пробелами. Например у тебя в переменной
foo есть имя файла с пробелами: foo="hello world.txt". И сделав cat $foo
ты получишь ошибку, так как $foo раскроется в два слова, которые станут
двумя аргументами, что означает что ты хочешь вывести файл hello и файл
world.txt. В zsh почти во всех случаях с этим нет проблем, за счёт чего
на нём на порядок проще писать скрипты, надёжнее их писать.
В zsh есть возможность иметь объединённую историю команд между разными
instance-ами, чего тоже нет в bash. Сидишь в двух разных окнах, и у тебя
у каждого запущенного bash будет своя история. Для многих именно эта
фича zsh является главной для перехода на него. Для меня главной фичей
являлось autopushd: когда у тебя каждый "cd" начинает работать как
"pushd" -- добавляет директорию автоматически в стэк. Дальше я бы
выделил инкрементальный поиск истории по шаблону. Дальше бы выделил
fuzzy раскрытие wildcard-ов в путях. И только потом уже наверное
вспомнил бы про shared history. http://strcat.de/zsh/
https://www.arp242.net/why-zsh.html
Но чаще всего про zsh упомянут его мега-гипер-убер-мощнейшую систему
дополнений и https://ohmyz.sh/
https://adam-drake-frontend-developer.medium.com/supercharge-your-terminal-with-oh-my-zsh-4fb102ca5005
https://old.reddit.com/r/zsh/comments/1iu8bz8/is_ohmyzsh_worth_it/
Да, в zsh сверх крутая-как-нигде гибкая система completion-а. Которую я
активно использую и написал свои completer-ы. Но рекомендовать oh-my-zsh,
как и все пользователи с опытом -- однозначно не могу. Типа да,
прикольно что на каждой позиции кучи команд ты можешь нажать tab и у
тебя разукрашенные свистопердящие менюшки показывающие опции команд,
дополняющие имена хостов на основе данных из ~/.ssh/known_hosts,
дополняющие пути до файлов на других хостах (прозрачно логинясь через
ssh на них), но это всё жутко тормозит на практике и не даёт заметного
profit. Время не сильно экономит. Часто только вредит тем, что не
показывает все возможные опции/аргумент для команд и пользователь будет
думать что их и нет. А также это скрывает много деталей которые бы нужно
было знать. Вот человек знает как подставить PID процесса через
автодополнение zsh-а, но этом без наличия свистопердящего zsh он вообще
не в курсе как вывести хотя бы список процессов ("ps" команда). Всех
кого я знаю -- отключают oh-my-zsh и полный спектр completer-ов со
временем, ибо оно не даёт profit-а. Я не к тому что система completion
не нужна, а к тому, что нужно включать только то что нужно, осознанно и
с пониманием дела.
Не редко слышал фразы о том, что zsh медленный. Это, опять же, с чистой
совестью заявляю, что произносят только некомпетентные и не понимающие
люди. В 100% случаях они говорят про обвешанный плагинами свистопердящий
oh-my-zsh. Сам по себе zsh гораздо компактнее, проще, меньше по размеру
и существенно более быстрый чем тот же bash. И не смотря на меньшее
кол-во кода, zsh при этом умеет в десятки раз больше всего.
Ещё рекомендую начать посматривать на https://github.com/tmux/tmux/
https://en.wikipedia.org/wiki/Tmux
Это такая штука, которая притворяется обычным терминалом для запущенных
под ним программ. Но при этом он позволяет иметь множество вкладок,
множество окон, жонглировать ими по всякому, всякие там менюшки и popup
окна делать для автоматизации, иметь scrollback буфер и путешествовать
по нему или редактировать, иметь буфер обмена в котором менюшкой можно
выбирать что хочется вставить (штатные же буферы обмена это стэк из
одного элемента как бы).
Хотя многие впервые знакомятся с мультиплексорами терминалов
исключительно для того, чтобы можно было на сервере их запустить и
спокойно отключиться от сети, а подключившись снова увидеть всё как там
было запущено в точно таком же виде. Штатно при отключении сети, SSH
грохнет все запущенные в сессии процессы.
Многое из вышеназванного умеют делать эмуляторы терминалов: scrollback
буфер, разбиение на окна и их жонглирование, множество вкладок. Но
эмуляторы запускаются только под GUI, а значит на сервере их не будет.
Плюс у каждого второго обязательно да будет какой-то незнакомый тебе
эмулятор, поэтому будет неудобно за чужим компьютером. С другой стороны,
конечно, и нечего делать за чужим :-). Но изучив tmux ты будешь в своей
тарелке на любой системе где он установлен (да и собрать его не
проблема, ибо зависимостей почти нет).
Плюс ты сможешь скриптовать своё рабочее окружение. Я то как-раз именно
поэтому начал пробовать tmux. Когда я работал с одним проектом, то хотел
чтобы мне сразу создалось несколько вкладок, сразу в нужной директории,
в других вкладках всякие просмотрщики журналов сразу были запущены, в
третьих сразу подготовленные строчки с командами запуска. Даже если и
какие-то GUI эмуляторы терминалов и позволяют себя как-то
автоматизировать, то я не встречал кто бы это реально использовал, плюс
это зависимость от чётко заданного конкретного GUI эмулятора терминалов
(тогда как tmux под голой консолью можно запустить без проблем).
Я активно использую его popup окна для следующего: хочу вставить путь до
файла, но даже с возможностями zsh не всегда быстро можно указать путь
до нужного (много коллизий в именах), поэтому парой клавиш у меня
появляется popup окно, где запускается bfind (breadth-first штука типа
find-а, https://github.com/tavianator/bfs), которая на лету в real-time
подаёт данные в "fzf" fuzzy matcher (https://github.com/junegunn/fzf) и
fuzzy поиском позволяет выбрать мне нужный файл частенько за доли
секунды. Выбрав, нажав enter, он подставится в основное рабочее окно, а
popup закроется. Никакого дополнительного места на экране не будет
отъедено во время поиска.
Ну и с коллегами все его используем для парного программирования или
администрирования. Настраиваем специальную SSH учётную запись, при
логине в которую автоматически форсированно будет запускаться tmux
клиент, подключённый к твоему tmux серверу, но в read-only режиме. И мы
видим рабочие экраны друг друга. Но под своим графическим терминалом, со
своими удобными нам шрифтами. Если бы это была передача графической
информации (как удалённый доступ к Windows рабочему столу), то на
мониторах с разными DPI это было бы неюзабельно, либо дико неудобно тому
кому придётся перевести свою рабочую сессию на HiDPI мониторе в "low"
DPI, плюс шрифты регулярно многим не нравятся (на вкус и цвет товарища
никогда нет). Плюс GUI требовал бы очень неплохое Интернет соединение,
тогда как tmux это реально просто просасывание видимой текстовой
информации -- мизер.
Кроме Emacs пользователей, у нас вроде все коллеги с кем мы работали и
работаем, даже когда не идёт речь про связь по сети или удалённого
доступа, используют tmux локально запускаемый. Собственно, прям
настраиваются эмуляторы терминалов так, что после их запуска там сразу
же оказывается tmux. Ничего не отжирающая штука, но добавляющая
офигенное кросс-платформенное удобство, можно сказать сетевую
прозрачность и по сути window manager в терминале. Но штука
опциональная -- она уже не настолько значимую роль играет в отличии от
shell и текстового редактора.
Sergey Matveev [Fri, 21 Mar 2025 08:18:29 +0000 (11:18 +0300)]
Popup-ы на сайтах и других местах
https://yurichev.com/nr/popups/
На все 100% солидарен с автором, со всем написанным. Помню как в
Футураме (20+ лет назад!) показывался их Интернет будущего, в котором им
приходилось отбиваться от назойливых popup окон, не дающих нигде проходу.
В "Очень страшном кино" или каком-то подобном фильме тоже показывали
монитор человека зашедшего в Интернет, где десятки всплывашек то тут, то
там. Недавно я много часов убил сидя в "современном" Интернете, в
обозревателе с включённым JS. Помню что два хостинга сразу же, мгновенно
отмёл, вычеркнул и забыл про них, даже не интересуясь что у них там по
поводу IPv6: просто потому, что после захода на главную они сразу же
суют в лицо какие-то выгодные предложения, которые я вынужден буду
закрыть, тыкнув на крестик. Сразу закрыл. Это полное неуважение к людям.
Автор пишет про то, что на сайте автобусного расписания, после закрытия
popup-а, сделал снимки экрана и сохранил их, дабы более не заходить. И я
аналогично тоже делал когда-то. Или текст сохранял. Но заходить на такое
в последствии -- не вариант.
Понравилось, что он даже дошёл до темы с IDE и редакторами, сказав что
не встречал спецов, которые бы сидели под IDE. И предполагает, что
связано с возможностью сосредоточиться в нормальных редакторах. Типа
может быть где-то и бывают крутые профи за Word или IDE, но только как
редкое исключение из правил.
Sergey Matveev [Fri, 21 Mar 2025 07:46:30 +0000 (10:46 +0300)]
Бойкот собрания IETF 127
https://boycott-ietf127.org/
Так как США являются очень опасной страной для въезда, то предлагают
бойкотировать данное собрание. Мол, даже будучи белым европейцем, всё
равно показывают примеры как их сажают, например если находят критику
президента в смартфонах.