О сетевой безопасности
Feb. 19th, 2026 06:46 pmВот вы говорите «vpn», а мой компьютер через SOCKS-прокси подключён к другому компьютеру, который через ssh создаёт туннель к моему компьютеру, а сам в свою очередь подключен к корпоративному VPN.
И только так я могу получить доступ к почте.
Очень безопасно, а главное — удобно. «Никогда не спрашивай у женщины возраст, у мужчины зарплату, а у офицера информационной безопасности модель угроз».
Я бы мог написать ещё кое-что про socks и UDP, DNS в Ubuntu и прочие такие материи, но лексикон мой слишком беден для того_чтобы.
О рынке труда
Feb. 17th, 2026 07:47 pmПопалась на глаза вакансия. Администратор PostgreSQL в крупный <..>. Задачи традиционные — поддержка, настройка производительности, мониторинг. Требования тоже не сверхъестественные — Ansible/shell/Jira/Confluence (последние два к администрированию БД не относятся, но по ним неплохая документация и куча форумов, я освоил в качестве разминки для начинающего питониста). Полная удалёнка.
За всё это предлагают 350К на руки и соцпакет по мелочи. Как по мне, очень даже можно жить. Буду пенсионером — смогу подрабатывать, если всех админов к тому времени не заменит чат-гпт.
О генезисе революции
Feb. 16th, 2026 04:56 pmОдин умный комментатор в ЖЖ натолкнул на интересную мысль.
Из-за ограничений в тележеньке никто не взбунтуется, пишет он, взбунтуются от недостатка еды (цитата не дословная и даже очень вольно переформулированная, поэтому без кавычек и даже без ссылки).
Всё так, но.
Революцию не делают широкие народные массы. Для революции достаточно весьма небольшой, но очень деятельной группы. Если хотите поспорить, прочтите для начала «Тихий Дон» Михаила Александровича Шолохова. Революцию делают немногочисленные революционеры где-то там, а весь народ — где-то тут. Книга, напомню, при советской власти была не просто не запрещённая, а очень даже наоборот, так что уж в этом-то вопросе ей вполне можно верить.
Я вам не скажу за всю Одессу, но за себя вполне: за условных «красных» я воевать не пойду. Ну или для этого должно случиться что-то такое, о чём лучше даже не думать. Полагаю, среди моих читателей такие примерно все.
Но вот вопрос — а кто будет воевать за условных «белых», то есть кто встанет на защиту режЫма? Обещанный нюанс в том, что все вот эти кунштюки с блокировками, повышением НДС и прочей цифровизацией — это не увеличение кормовой базы «красных», а уменьшение кормовой базы «белых».
Может, конечно, никакие «белые» и не нужны, но лучше бы нам этого не узнать.
Вероятно, многие слышали о такой особенности человеческого мозга как дислексия, когда человек не способен воспринимать текст. Этот диагноз кому только ни приписывали: и Леонардо да Винчи, и Альберту Эйнштейну, и Томасу Эдисону, и Киану Ривзу, и Ричарду Брэнсону, и Рональду Рейгану...
Эксперты могут бесконечно копаться в архивах и спорить, можно ли на самом деле поставить этим людям такой диагноз (во времена Леонардо МКБ-10 не было), но факт остаётся фактом: у всех этих людей были существенные трудности с учёбой, которая основана на чтении. Но в конечном счёте это не помешало им добиться успеха в жизни.
Отсюда напрашивается совершенно однозначный вывод: манипуляции с текстом — отнюдь не единственный способ человеческого мышления. Может быть, основной, а может, и нет.
Я сам, например, очень хорошо воспринимаю текст и на каком-то тесте, которую наша Корпорация проводила на достаточно большой выборке, показал результат «выше, чем 90% тестируемых». Но это не делает моё мышление универсальным или лучшим.
К чему это всё? К тому, что современный «искусственный интеллект», с которым прогрессивное человечество носится, как известно кто с писаной торбой, — это большие языковые модели, а значит, они покрывают не весь арсенал человека. Если LLM заменят юристов и финансистов, то туда им и дорога. Но всех — не заменят. Так же, как самые прочные, мощные и гламурные пассатижи не заменят ножовку.
О положительных примерах
Feb. 12th, 2026 11:44 amЗлые языки говорят, будто всё импортозамещение — попил, откат, треш, угар и содомия.
Неужели правда так? Неужели нет ни одного обратного примера?
Есть. Есть пример не просто удачный, а прямо-таки чудесный. Про него не говорят на первом канале, не пишут хвалебных постов на пикабу, хабре и прочих таких ресурсах... А между тем, все вы его прекрасно знаете и активно пользуетесь. Садитесь поудобнее, сейчас расскажу.
Итак, 2014 год? Крым наш. Visa и Mastercard громко хлопают дверью и заявляют, что не намерены работать в стране-агрессоре. Пару дней руководство пребывает в шоке, а потом компании робко стучат в дверь, скромно просовывают носики в щель и спрашивают: «А можно всё-таки да?»
И вот тут руководство страны проявило поистине государственную мудрость, невиданную ни до, ни, к сожалению, после. Оно ответило: «Да, конечно, работайте. Но есть нюанс — теперь информацией вы будете обмениваться не с банками, а со специальным шлюзом».
Что изменилось для платёжных систем? Да ничего, только IP-адрес источника. Что изменилось для банков? Да тоже ничего, просто IP-адрес контрагента. Всё работало в точности так же, как и раньше, только шлюз потихоньку копил данные и учился правильно делать взаиморасчёты.
Через некоторое время владельцы шлюза отчитались о полной боевой готовности, и государство сделало логичный следующий шаг: если компания (Visa/MC) получает полкопеечки с каждой транзакции, почему бы не класть эти полкопеечки в свой карман? И была основана платёжная система «Мир».
Да, пришлось надавить на банки, чтобы карта «Мир» выдавалась по умолчанию, но большинству клиентов на это было наплевать. Заметьте, ни Визу, ни Мастеркард никто не запрещал: тот, кому не наплевать, легко мог получить карту любой из указанных систем, поставив в заявлении крыжик. У меня, например, парочка «виз» до сих пор прекрасно работает (внутри страны, конечно же).
Ну а потом, когда наступил 2022 год, Visa и MC уже всерьёз хлопнули дверью. Но теперь для всех [censored: негодяи] именно они. А система «Мир» прекрасно себя чувствует, и никому в голову не приходит наворачивать какие-то технические ухищрения с весельем и находчивостью, чтобы расплатиться в магазине «визой».
О национальном мессенджере
Feb. 11th, 2026 08:08 pmКак говорит один товарищ тут «будьяцарь» (нафик такое счастье, но всё же) и понадобись мне пересадить всех с продукта «депеш» на продукт «мин», что б я делал?
Во-первых, опубликовал бы техническое задание на разработку, и это задание включало бы в себя совместимость по API с «депешем» и открытый исходный код клиента. Ну да, заимствовать всегда легче, чем творить, но творчество такого рода не является и никогда не было необходимым условием государственного управления. Даже не обязательно проводить формальный конкурс, всё равно частнику такое дело не доверишь, а серьёзные парни договорятся по-тихому. Но наличие ТЗ показывает, как минимум, что государство принимает активное участие, а не лоббирует чьи-то частные интересы. Ну и позволяет как-то оценить результат.
Во-вторых, я бы не стал стыдливо рассказывать про старушек, которых обманывают через иностранные мессенджеры, а совершенно честно сказал бы: дорогие соотечественники, у нас война, враг не дремлет и вот это всё. В результате вместо настроений «я, конечно, патриот, но не люблю, когда меня кормят говном с лопаты» получили бы «знай наших».
В-третьих, разрешил бы регистрацию с любых номеров. Понятно, Паша Д. отмораживается, но ведь администрация госмессенджера охотно идёт на сотрудничество, не так ли? Что им стоит натравить нейросеть с особым цинизмом на номера с +380 и при малейшем подозрении_на нещадно блокировать? Но зато не было бы вопросов «как мне общаться с родственниками из-за границы».
В-четвёртых, разрешил бы переезд каналов. Как, например, Dreamwidth копирует блоги из живого журнала. Софт для миграции любой программист напитонит на коленке за пару часов, а буферизатор для активных переездов продвинутый программист напишет за пару дней.
Ну и в-пятых, открыл бы программу «bug bounty», то есть вознаграждение за найденные уязвимости. На самом деле это не так дорого, как может показаться: люди бы работали не столько за деньги, сколько за признание «крутого хакера» на государственном уровне. Да вспомните хоть Дональда Кнута, который за каждую найденную в «Искусстве программирования» опечатку выписывал внимательному читателю чек на $2.56, а потом вообще стал присылать игрушечные чеки, но всех это устраивало.
Очевидно, всё это сделать не так сложно, и даже денег много не надо. Но похоже, тот, кто может это сделать, просто не считает нужным. И вот это прямо-таки обидно.
О взаимопонимании поколений
Feb. 10th, 2026 07:59 pmБразды пушистые взрывая,
Летит кибитка удалая.
Ямщик сидит на облучке
В тулупе, в красном кушаке.
А. С. Пушкин
Говорят, дети не понимают старых книг. Над отрывком из Александра «нашего всё» Сергеевича не посмеялся только ленивый: га-га-га, так их, этих браздов!
Лет двадцать назад я прочитал книгу Януша Вишневского «Одиночество в сети». Роман про любовь, но эта любовь стала возможной только благодаря интернету.
Главные герои пользуются ICQ. Живя в разных странах, они находят друг друга и переписываются. А потом главный герой, учёный-химик, забывает дома материалы к докладу, но при помощи той же самой «аськи» подключается к своему рабочему компьютеру, скачивает оттуда все нужные файлы и читает доклад в приподнятом настроении: надо же, как далеко шагнула человеческая мысль, теперь ни любви, ни разуму нет преград!
Современная молодёжь может не понять героев этой книги: мессенджеры, облачные хранилища и VPN стали настолько привычной и неотъемлемой частью жизни, что давно уже не воспринимаются как какое-то особенное достижение. Ну есть и всегда были, чотакова?
Но зато когда современные дети подрастут, не исключено, что они будут прекрасно понимать героев этого романа. Так выпьем же за связь между поколениями, пусть даже через одно!
Лытдыбра ещё кусок
Feb. 9th, 2026 11:13 pmПродолжаем читать давешнюю книгу.
Вторая глава ожидаемо принесла новую порцию ужасов. Сначала авторка рассказывает как создать и уничтожить базу данных, при этом не объясняя, зачем всё это делать. Ни слова о пользователях, все операции — исключительно от имени суперпользователя. Пару раз упоминается какое-то «табличное пространство», но не объясняется, что это такое (а в Oracle, например, это немного не то, что в PostgreSQL, а в Microsoft SQL Server такого термина вообще нет, поэтому если вдруг книжку будет читать человек с опытом, он поймёт всё неправильно). Ну а остаток главы зачем-то посвящён нормализации.
Тема, безусловно, важная и нужная, но во-первых, здесь она неуместна, а во-вторых, текст изобилует шедеврами.
После создания таблицы иногда возникают ситуации, когда в ней появляются дублирующиеся значения, что может вызывать ошибки при вставке или удалении данных. Для минимизации избыточности в наборах отношений применяется нормализация.
Формально всё правильно: в таблице могут быть дубликаты, а для минимизации избыточности хранения (хотя не только) применяется нормализация. Только дубликаты и избыточность хранения — совершенно разные явления. В огороде бузина, а в Киеве дядька.
Правило первой нормальной формы (1NF) заключается в том, что каждая ячейка таблицы должна содержать одно значение, а имена столбцов должны быть уникальными.
Тут, пожалуй, без комментариев. Разве что хотелось бы посмотреть на таблицу, у которой имена столбцов не уникальны.
В соответствии с правилом второй нормальной формы (2NF) каждый столбец должен быть напрямую связан с первичным ключом.
Напрямую, Карл!!!
В общем, дальнейшая судьба этой замечательной книги от меня не зависит. Кажется, я убедил редактора, что её печатать не надо, пообещав в отместку написать для неё учебное пособие по вёрстке на материале двухмесячного опыта работы с Word’95. Теперь осталось убедить инвестора, оплатившего права на перевод и работу переводчика, но это уже не моя забота...
О фантастике-2
Feb. 8th, 2026 07:39 pmДавным-давно я прочитал повесть Боба Шоу «Свет былого». Главный герой повести изобрёл стекло, свет сквозь которое проходит намного медленнее, чем через обычное стекло. На первых образцах это была задержка в полсекунды, но когда изобретатель понял, что у него получилось, он начал целенаправленно уменьшать скорость прохождения света и добился задержки в несколько суток, а потом и в несколько лет.
Через некоторое время он научился и ещё одной важной вещи — извлекать изображение раньше, чем оно должно дойти естественным путём. И получилось, что любой маленький кусочек стекла превратился в видеокамеру, которая постоянно записывает происходящее вокруг. Если ничего важного не случилось, то запись сама собой выйдет с другого конца стекла, а если надо, её достанут. Примерно по такому принципу работают современные автомобильные регистраторы.
Заканчивается повесть тем, как учёный вступает в организацию, которая борется с постоянной фиксацией всего и вся, потому что это противно человеческой природе и наносит обществу серьёзный урон.
С момента написания повести прошло полвека, и оказалось, что для постоянной записи всего не нужно таких фундаментальных изобретений — достаточно литий-ионных аккумуляторов и флеш-памяти. Мы уже живём в мире, где снимается почти всё и почти всегда, за отсутствием камер надо внимательно следить. Но похоже, что люди так и не осознали противоестественности и опасности вот этой всеобщей фиксации. Напротив, многим нравится...
Лытдыбра кусок
Feb. 7th, 2026 05:11 pmПознакомился с человеком, делающим доброе дело: сводит издателей переводных книг с экспертами в соответствующих областях, чтобы те в свою очередь поправили текст перевода, придав ему хотя бы приличный вид. Работа не оплачиваемая, но зато в выходных данных эксперт будет отмечен как научный редактор. Ну и плюс ощущение Правильного Дела.
Взял на редактирование книгу про PostgreSQL. Автор(ка) — индийская женщина-программист, рецензент — тоже индус. Переводчик, по всей видимости, о базах данных слышал только то, что они есть, но это как раз не беда. Беда в оригинальном тексте.
Для начала — вступление.
В этой книге вы узнаете об основных концепциях, таких как установка, администрирование и использование PostgreSQL
Тут, пожалуй, без комментариев.
Глава 1 знакомит с работой в среде разработки для PostgreSQL и нормализацией данных в базе
Мы поговорим об инструментах, необходимых для демонтажа ГБЦ, и об особенностях путешествия из Вологды в Казань. В одной главе, да. Не говоря о том, что под термином IDE автор понимает утилиту psql
В общем, от предисловия буквально не осталось живого места. Открываем первую главу и...
В 1982 году группа глобальной разработки PostgreSQL (PostgreSQL Global Development Group) в Калифорнийском университете в Беркли (University of California, Berkeley, UCB) разработала PostgreSQL для решения проблем с существующей архитектурой баз данных.
PGDG, как и название PostgreSQL, появилось в 1996 году, то есть авторка не может даже правильно переписать абзац из Википедии, которая в данном случае не врёт.
Чувствую, будет весело.
Об избыточности
Feb. 6th, 2026 10:18 amЛюбому человеку, работающему в IT или около, знакома концепция избыточности: давайте запишем информацию не на один диск, а на два (RAID); давайте вместо одного сервера поставим два или даже три (кластер). Если с одним из элементов что-то случится, другой вытянет.
На самом деле у избыточности есть и обратная сторона — повышение стоимости, поэтому концепция значительно сложнее, чем «бери больше, кидай дальше». Чтобы выбрать правильную конфигурацию оборудования, надо учесть множество нюансов, многие из которых к IT как таковому вообще не относятся. Короче, если начать изучать это как отдельную дисциплину, запросто может получиться муть и скукота.
Но когда речь о собственных деньгах, любая концепция вдруг интуитивно усваивается, не мозгом, так печёнкой. И даже человеком, далёким от всяких там компьютеров.
* * *
В лифте мастер по ремонту стиральных машин приклеил на стену свои визитки. Кто-то из соседей взял ключ или гвоздь и расцарапал их — конечно же, стены с царапинами и огрызками выглядят гораздо эстетичнее, чем без них. Вандал добился своей цели в каждом конкретном случае — ни на одной из визиток прочитать контакт мастера невозможно. Но если сопоставить обрывки с нескольких визиток, то информация вполне читается.
Вот так мастер, сам того не подозревая, изобрёл RAID1.
Помощь зала
Feb. 5th, 2026 12:18 pmКак обычно, хочу странного и прошу коллективный разум подсказать ключевые слова для гуглинга.
На стенке должен висеть светильник с двумя уровнями света: чуть-чуть (например, 3 ватта) и в полную силу (скажем, 10-12 ватт). Для решения этой задачи сделано два выключателя, а к месту установки светильника проведены три провода — две фазы и рабочий ноль.
Проблема заключается в том, что с точки зрения эстетики почему-то подходят в основном бра с единственным плафоном. В котором, разумеется, единственный патрон. А против эстетики не попрёшь...
Вопрос: существует ли в природе трёхконтактная лампочка, которая светит по-разному в зависимости от того, куда подведён ток? Примерно как автомобильные лампы головного света типа H4 или габарит-и-стопсигнал в одном флаконе?
Пока поиск дал только диммируемые дампы (фу), «умные» лампы, которые при каждом следующем включении меняют уровень яркости (фу-фу), и шибко умные лампы с дополнительным дистанционным пультом (фу-фу-фу). Но может, коллективный разум знает какие-то более элегантные решения?
Об одном банке
Feb. 5th, 2026 11:28 amИдеального банка не существует. У кого-то приложение кривое, у кого-то тарифы странные, у кого-то... впрочем, вы и так всё знаете. Каждый находит себе банк, который его меньше всего бесит, и как-то гоняет деньги туда-сюда, берёт кредиты, расплачивается картой...
Сегодня я расскажу пару историй из собственного опыта про один очень известный банк. Ну практически классика. Из трёх букв, но не тех, про которые вы подумали.
Итак, угораздило меня стать зарплатным клиентом этого банка. А почему бы, подумал я, не оплатить прямо с этого счёта коммунальные услуги? Сказано — сделано. Ввожу название «Мособлеирц», адрес, номер лицевого счёта. Приложение говорит: сейчас ваши деньги будут отправлены вот сюда, проверьте. Проверяю — реквизиты неправильные. Ну есть одна особенность оплаты коммуналки именно в Королёве...
Но я же хороший клиент! Нашёл контакт человека, отвечающего за коммунальные платежи в банке. Не девочку с первой линии, а непосредственного ответственного. Пишу ему письмо. Так, мол, и так, хочу заплатить, но реквизиты неверные. Вот в приложенном файле моя отсканированная платёжка непосредственно из почтового ящика, а вот ссылка на информационное письмо на сайте Мособлеирца, где написано, что с горбадцатого мартобря дветысячи затёртого года расчётный счёт для Королёва меняется. Поправьте, пожалуйста, содержимое вашего замечательного справочника.
В ответ получаю письмо: хрен тебе, а не тульский пряник вот у меня есть распечатка (приложен скан), где написано, что счёт этот. Всё, отстань и не мешай работать.
Мне бы с первого раза всё понять, но вера в людей периодически меня подводит. И через какое-то время я настроил в банковском приложении несколько автоплатежей. Всё шло хорошо, пока в один прекрасный момент счёт не оказался пустым...
Буквально через несколько часов на счёте оказались деньги, и я сел ждать, когда автоплатежи выполнятся.
олег_тиньков.jpg
На следующее утро звоню в службу поддержки: так мол и так, когда выполнятся автоплатежи? Не знаю. А они вообще выполнятся? Не знаю. А кто знает? Не знаю.
Штош, захожу в приложение, удаляю все автоплатежи. Всем, кому был должен, перевожу деньги вручную. И со спокойной душой работаю дальше. А на следующий день удалённые автоплатежи всё-таки выполняются. Естественно, обращения в поддержку «куда вы дели мои деньги» получают тот же самый фирменный ответ «не знаю»...
Думайте сами, стоит ли читать такую классику иметь дело с таким банком...
О файлах Эпштейна
Feb. 4th, 2026 11:10 amМеня не особенно интересует, что написано в так называемых «файлах Эпштейна»: в общих чертах это и так можно себе представить, а подробности психически здоровому человеку ни к чему (хотя копия кое-каких файлов у меня даже сохранена локально). Интересно другое: зачем это опубликовали?
Думаю, многим тут памятна гласность, когда все газеты и журналы заполнились статьями «Жить не по лжи», «ГУЛАГ — лесоповал — Беломорканал» и «Миллион детей, расстрелянных лично Сталиным». У страны к тому времени накопилась куча экономических проблем, и можно было попытаться как-то аккуратно, на малых оборотах по самому краешку отвернуть, проехать и избежать. Но соответствующий новостной фон как бы выдал индульгенцию: «Воруй, убивай, [censored: обижай] гусей, всё равно Эта Страна® проклята на веки вечные». Полагаю, сегодняшние сроки «за дискредитацию» — движение маятника в обратную сторону.
В СССР была школа журналистики, которая не умела оперировать всякими нездоровыми сенсациями и потоками информационного дерьма. Очевидно, новым владельцам «Огонька», «Комсомолки» и прочих изданий кто-то подсказал и научил. Очевидно, не за деньги, потому что денег там не могло быть. Подсказывающий преследовал какие-то свои цели, и мы даже можем примерно догадаться, какие именно. И ещё подсказывающий очень хорошо знал, к каким последствиям всё это приведёт.
Сейчас на Западе экономических проблем тоже хватает, и по-хорошему надо бы потихоньку затевать перестройку в хорошем смысле. Но похоже, что рептилоидам выгоднее устроить гигантский бардак, чтобы в очередной раз погреть руки. А может, Мировое Правительство признало спасение невозможным и запустило Гласность® по принципу «сгорел сарай — гори и хата».
В любом случае на месте гусей я бы насторожился.
История одного скрипта
Feb. 3rd, 2026 07:35 pmИздательская программа Scribus в дополнение ко всем своим достоинствам поддерживает скрипты на языке Python.
Похоже, разработчики ориентировались прежде всего на вёрстку текста (хотя конкурировать на этой поляне с TeX’ом очень странно), но я использую её для вёрстки фотоальбомов. И в какой-то момент мне естественным образом захотелось немного автоматизировать свою работу.
Как происходит вёрстка альбома?
Для начала надо отобрать фотографии, и тут никакой автоматизации быть не может. Затем надо создать альбом и загрузить фотографии внутрь. Не знаю, какие абстракции применяет Adobe, а тут последовательность действий довольно-таки длинная: создать объект-изображение, а затем выбрать для него файл. Поскольку файлов много, кликать их быстро надоедает, и здесь мы видим первую очевидную точку автоматизации:
#!/usr/bin/env python from scribus import * import os page = 5 path = "/home/hardsign/images" gotoPage(page) ip = 0 for f in sorted(os.listdir(os.fsencode(path))): loadImage(path+"/"+os.fsdecode(f),img := createImage(20+(ip%3)*80,10+(ip//3)*80,70,70)) if (ip := 0 if ip==8 else ip+1)==0: gotoPage(page := page+1)
Дальше начинается расстановка и группировка фотографий. Естественно, это удобно делать мышью, но соблюсти при этом сколько-нибудь точные, а главное, одинаковые размеры — задача нерешаемая. Поэтому после наброса открываем свойства каждого объекта и вручную выставляем ему координаты и размер. И вот тут напрашивается вторая точка автоматизации.
Первая идея проста: давайте округлять координаты до ближайшего сантиметра! Реализация тоже проста, но она не работает: соблюсти на глаз размер даже с точностью до сантиметра практически невозможно, и поэтому сантиметры приходится добавлять вручную. Мало того, если хочется сделать несколько объектов одинакового размера, то совсем не обязательно этот размер будет выражаться целым числом.
Давайте чуть ограничим полёт фантазии: пусть объекты на странице привязываются к сетке. Вторая реализация — скрипт перебирает объекты и устанавливает им одинаковый размер. Работает превосходно, но этот размер не всегда должен быть одинаковым — некоторые фотографии могут занимать несколько модулей.
Третья инкарнация скрипта находит ближайший к углу узел сетки, перемещает угол туда, а затем растягивает объект до следующего узла. Уже намного лучше, но выясняется, что одна сетка на все случаи жизни не годится. Где-то получается квадрат 2×2 из четырёх фотографий, а где-то фотки прямоугольные и совсем мелкие, и сетка должна быть 4×5 или наоборот 5×4.
Можно, конечно, сделать стопиццот скриптов на каждую сетку, но иметь множество разных файлов, отличающихся только значениями переменных, очень неудобно. Вводить эти значения — тоже не лучший вариант, да и нет у Scribus’а средств для этого. И тут на помощь приходит unix way: а что, если записать один и тот же скрипт под кучей разных имён и доставать размер сетки прямо из имени?
Сказано — сделано. Времени сэкономлено столько, что хватило написать этот пост, и даже чуть-чуть осталось. Если вдруг кого заинтересовало — пользуйтесь на здоровье.
#!/usr/bin/env python from scribus import * import os, sys # количество фотографий по горизонтали и по вертикали (gx, gy) = [int(i) for i in os.path.basename(sys.argv[0]).replace("grid","").replace(".py","").split("x")] # расстояние между краями фотографий в миллиметрах (hspace, vspace) = (10, 10) # насколько близко угол должен быть к узловой точке (лучше не менять) distance = 30 # расстояние от левого края листа x0 = 10 if currentPage()%2==0 else 20 y0 = 10 # размеры листа (xsize, ysize) = (275.0, 275.0) width = (xsize-hspace*(gx-1))/gx height = (ysize-vspace*(gy-1))/gy abs = lambda x: x if x>=0 else -x for i in range(0,selectionCount()): cur = getSelectedObject(i) (x,y) = getPosition(cur) (w,h) = getSize(cur) (left, top, right, bottom) = (x0, y0, x0+width, y0+height) while abs(x-left)>=distance and left<xsize+100: left += width+hspace while abs(y-top)>=distance and top<ysize+100: top += height+vspace while abs(x+w-right)>=distance and right<xsize+100: right += width+hspace while abs(y+h-bottom)>=distance and bottom<ysize+100: bottom += height+vspace if left>=xsize+100 or right>=xsize+100 or top>=ysize+100 or bottom>=ysize+100: continue moveObjectAbs(left,top,cur) sizeObject(right-left,bottom-top,cur)
P. S. Опытный программист может написать Perl-программу на любом языке!
Об артефактах исчезнувшей цивилизации-2
Feb. 2nd, 2026 02:16 pm
Детство моё прошло в небольшом городе у моря (только не Чёрного, а Белого). Зимой там периодически выпадал снег, и этот снег регулярно убирали. Иногда его сгребали бульдозерами, а потом кидали в самосвалы снегоочистителем типа «загребущие руки» aka «чудесная лопата». А иногда по улице просто проезжал ЗиЛ-157 со шнековым снегоотвалом Д-470 (как на картинке, только зелёный), и дорога, как по волшебству, становилась чистой.
Делали, кстати, эти отвалы прямо в нашем городе на небольшом заводе, который сегодня закрыт.
Казалось бы, технологии не утрачены! Шнековых снегоуборщиков сегодня — на любой вкус: от лопаты на батарейках до серьёзных машин на гусеничном ходу мощностью под два десятка лошадей. Казалось бы — почему не масштабировать эти устройства и не выпустить такой же, но шириной два с половиной метра?
А ответ прост, как мычание: смысла нет, поскольку снег выкидывать попросту некуда.
На улице, где я жил, между проезжей частью и тротуаром был газон шириной десяток метров, если не больше. Куда, собственно, ЗиЛ и скидывал снег. Попробуйте найти газон такой ширины в современном Нерезиновске или Замкадске...
О гуманитарном складе ума
Feb. 1st, 2026 09:56 pmЯ всегда считал себя человеком с техническим складом ума (до тех пор, пока этот склад не ограбили). Но на днях мой modus cogitandi был посрамлён...
Началось всё с пластмассовой крышки дисплея ноутбука Dell. Сначала я приклеил выломанные гайки на соду и цианакрилат, потом заменил их на гайки Эриксона и наконец решился на полную замену крышки.
Для начала, конечно, надо было устранить причину поломки. Я наконец-то внимательно посмотрел на петли и обнаружил, что усилие, необходимое для их открывания, регулируется самоконтрящейся гайкой с нейлоновой прокладкой. Решение, мягко говоря, не самое удачное, но его смысл — удешевление конструкции — по крайней мере понятен.
Но самое интересное, что прикрутив правую петлю, я никак не мог прикрутить левую! И так, и сяк — не закручиваются винты, хотя собрано всё правильно.
Я выкрутил винты из правой петли и обнаружил, что они на полмиллиметра длиннее оставшихся. То есть правая и левая петли крепятся винтами одинакового диаметра, но разной (на полмиллиметра!) длины.
Весьма [censored: удивившись такому решению], я вопросил в пространство: [censored: для чего так сделано???]
И умный человек, не отягощённый инженерным снобизмом, ответил: попробуйте догадаться
