Спонсорские площадки

Книги вскладчину (81.55КиБ)
Книги, в создании которых я поучаствовал деньгами

Я люблю книги. Бумажные больше, чем электронные — материальные объекты мне всё-таки интереснее виртуальных. К сожалению времени на чтение книг всё меньше и тем более сейчас я не могу себе позволить создавать их непосредственно, потому я попробовал себя в другом качестве — побыл спонсором.

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

Начинаю понимать людей, которые вкладываются в благотворительность. Недавно прочитал мнение, что всё дело в замаливании грехов. Не знаю, у многих ли мотивы сходны с моими, но в моём случае замаливанием грехов и не пахнет и я сомневаюсь, что я такой уникальный. В моём случае возможно дело в какой-то опосредованной самореализации.

7 комментариев

Принадлежность клейма «ИГ»

Клеймо «ИГ» (170.62КиБ)
Отлично сохранившееся тычковое клеймо «ИГ» по адресу ул. Пушкина, 26е

Благодаря стараниям Романа Царевского, известного мне по сообществу «Казанская ностальгия», по всей видимости выяснилась принадлежность кирпичного клейма «ИГ».

Вероятнее всего оно принадлежит заводу купца Ивана Семёновича Гребенщикова, вот что о нём сообщает книга «Республика Татарстан: православные памятники (середина XVI — начало XX вв.)»:

Поморско-брачная община в Казани не была столь же богатой и влиятельной, как старопоморская. Большую часть верующих составляли выходцы из Вятской губернии и из Чистополя. В сельской местности Казанской губернии это согласие не было распространено. Лидером и покровителем общины многие десятилетия был купец Иван Семёнович Гребенщиков (1810—1883), оптовый торговец железом и владелец кирпичного завода. Его предки, лаишевские мещане, принадлежали к старопоморскому согласию, а брат Василий был одним из лидеров казанской старопоморской общины. Но сам Иван Семёнович еще в юности перешел в поморско-брачное согласие. В 1850-1880 годы в его доме находилась молельня. До 1917 года община существовала на средства, завещанные Гребеншиковым, т. к. других крупных предпринимателей в общине не было. Наставником и руководителем хора в 1870 годы стал казанский мещанин Андриан Иванович Кочкешев, служивший в общине еще с 1861 года. После смерти Гребенщикова и вплоть до 1918 года Кочкешев был фактическим руководителем общины. Председателем совета общины после ее регистрации в 1906 году стал небогатый купец Василий Львович Виноградов.

В 1906—1910 гг. на средства, завещанные Гребенщиковым, под руководством Кочкешева, Виноградова и Василия Филипповича Максимова был построен храм на ул. Вознесенской (Островского, 81). Небольшой одноглавый храм без колокольни. Выстроен в эклектическом стиле с сочетанием псевдорусских форм и узорчатой разностилевой кирпичной кладки. Закрытый в начале 1920-х годах храм в 1982 году передан общине Русской православной старообрядческой церкви (бывшей Белокриницкой иерархии) и освящен в честь Казанской иконы Божией матери. Согласно «Списку памятников истории и культуры Республики Татарстан, находящихся на государственной охране» на 1.01.2001 года, церковь Казанской Богородицы является памятником градостроительства и архитектуры федерального значения.

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

2 комментария

Сила .ssh/config

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

SSH-туннель (12.37КиБ)
Пример конфигурационного файла для получения доступа к группе машин

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

Тут нам пригодится файл ~/.ssh/config, служащий для конфигурирования SSH-соединений, я обычно туда вписываю символические имена вместо айпи-адресов, логины и прочую мишуру. Но его возможности несколько шире.

Например на картинке выше у меня конфигурация, которая позволяет к любому айпи-адресу, который начинается с 172.17.0 через машину 172.17.1.131. Вся магия заключается в директиве ProxyCommand — в ней указано, что надо залогиниться на 172.17.1.131 и там запустить команду nc, которая откроет соединение на нужный нам адрес (он будет подставлен вместо «%h»).

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

4 комментария

Скриптование меню в статус-баре

В «Маке» очень нехватает одной вещи — лёгкого создания собственных меню в статус-баре. Учить ради этого «Обжектив-Си» или «Свифт» (и ставить «ЭксКод») мне совершенно не хочется, поэтому я поискал готовое. Нашёл ровно одно полусырое решение.

Если кому интересно, то последовательность его прикручивания к системе примерно такова (bolk — моё имя пользователя и требуется установленный brew):

mkdir -p /usr/local/Cellar/ScriptableStatusBar/0.1/bin/
mv ~/Downloads/ScriptableStatusBar-release/usr/local/bin/sbar !:2
mv ~/Downloads/ScriptableStatusBar-release/Applications/ 
    /usr/local/Cellar/ScriptableStatusBar/0.1
brew link ScriptableStatusBar
open /usr/local/Cellar/ScriptableStatusBar/0.1/Applications/

# Тут надо утянуть открывшееся приложение в «Объекты входа»
# и ещё запустить его в открывшемся окне, разрешив ему в принципе запускаться

Очень неудобно и несколько недоделано. Хотелось бы, чтобы из шелла можно было добавить/удалить пункт меню и сменить иконку. Сейчас это тоже можно, но полной переинициализацией и, кроме того, убъёшься всё экранировать.

Вооружившись несложной инструкцией, делаем несколько магических пассов:

cat>~/lockkeyboard.sh<<LOCK
#!/bin/ksh

kext=/System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/
case "$1" in
    unlock )
        /sbin/kextload "$kext"
        ;;
    lock )
        /sbin/kextunload "$kext"
        ;;
esac
LOCK

sudo chown root:staff ~/lockkeyboard.sh
sudo chmod 750 ~/lockkeyboard.sh

sudo cp /dev/stdin /private/etc/sudoers.d/lockkeyboard<<SUDO
bolk    ALL= NOPASSWD: /Users/bolk/lockkeyboard.sh
SUDO

sbar set locker ?\
    'Lock:/usr/bin/sudo /Users/bolk/lockkeyboard.sh lock'\
    'Unlock:/usr/bin/sudo /Users/bolk/lockkeyboard.sh unlock'\
    'Quit:/usr/local/bin/sbar remove locker'

И получаем малофункциональную такую менюшечку для блокировки клавиатуры (кстати и увы, если компьютер с заблокированной клавиатурой, у вас уйдёт в блокировку по какой-то причине, то пароль ввести не получится, придётся перезагрузиться):

Выпадающее меню с пунктами Quit, Unlock, Lock, открытое из иконки замка в строке состояния macOS; видны дата «Ср, 8 марта 7:49», заряд батареи 34%, значки Wi-Fi, звука и поиска.
Простое меню для блокировки клавиатуры

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

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

Дополнение: нашёл ещё две программы: «БитБар» и «ЭниБар».

8 комментариев

Шалаш на острове сокровищ— 8

Выезд, результаты (100.56КиБ)
Результат выезда в выходные — не обошлось и без царской монеты

В эти выходные позволил себе короткий (всего несколько часов) выезд.

1 копейка 1875, 3 копейки 1938, 3 копейки 1941, две монеты по 20 копеек 1943, 2 копейки 1949, 3 копейки 1950, 1 копейка 1953, пуговка с серпом и молотом в советской звезде, три монеты поздних «советов» по одной копейке и обломок эмалированной ложки.

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

6 комментариев

Коммит миграций кусками с помощью psql

Я ещё не так давно работаю с «Постгресом» и раз в месяц натыкаюсь на что-то неожиданное.

Недавняя ситуация — дано: миграция, которая обновляет более половины полей таблицы с более чем полумиллиардом записей и содержит в себе довольно затратный по процессорному времени запрос.

В «Оракле» такую миграцию наши ребята, насколько я знаю, разбивали хранимой процедурой на части и коммитили внутри кусками по миллиону, в «Постгресе» так нельзя — блок на языке PL/pgSQL выполняется в собственной транзакции и она прервётся при попытке сделать COMMIT. Автономных транзакций нет.

Испытания на тестовом стенде, приближенном к промышленному, показали, что единым куском обновить не получится — на мастере и слейве первой очереди кончилось место и стенд развалился. Надо было найти какой-то эквивалент сбросу миграции в цикле, по типу того как это делается в «Оракле».

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

DO $$
  DECLARE
    max_id table.id % TYPE;
    query TEXT;
BEGIN
  -- делим таблицу на куски по миллиону, теперь в max_id у нас номер последнего куска
  SELECT CEIL(MAX(id)::float/1000000) INTO max_id FROM mytable;

  -- очищаем файл /tmp/sqlquery
  COPY (SELECT '') TO '/tmp/sqlquery';

  -- айдишники в моём конкретном случае идут с единицы, но более правильно идти с минимума до максимума с шагом
  FOR i IN 0..max_id LOOP
        query = FORMAT(
            'UPDATE mytable '
            'SET something=value '
            'WHERE id BETWEEN ' || i*1000000+1 || ' AND ' || (i+1)*1000000 || ';'
        );

        -- запуск /bin/cat нужен, чтобы дописывать в файл
        EXECUTE  'COPY (SELECT ' || quote_literal(query) || ') TO PROGRAM ''/bin/cat >> /tmp/sqlquery''';
  END LOOP;
END$$;

-- запуск запроса
\i /tmp/sqlquery

Я воспользовался тем, что в накатке миграции у нас участвует утилита psql — официальный консольный клиент к «Постгресу», помимо команд СУБД она умеет выполнять свои собственные команды, чем я и пользуюсь — собираю нужные запросы в файл и запускаю его на выполнение в последней строке.

Обратите внимание на вызов /bin/cat — это важно, так как команда COPY сама не умеет добавлять что-то в файл, она его перезаписывает.

2 комментария

Оригинальный арифмометр Однера (X-9 S-5)

Если помните, то в прошлом году мы с группой товарищей основали «Музей вычислительной техники им. Р. К. Самитова», после открытия я взял паузу, кое-что переосмыслил и с новыми силами взялся за розыск экспонатов. Один из них доставили из Штатов сегодня.

Вильгодт Теофил Однер — шведско-русский механик, изобретатель, разработчик «Арифмометра Однера» — который в 1940-е стал самым популярным механическим калькулятором в мире. В 1886 году он открыл небольшую мастерскую в Петербурге, которая в 1890-х произвела первый арифмометр. После смерти Вильгодта в 1905 году его компания перешла к его сыну Александру, который управлял ею вместе с партнёром отца — Френком Хиллом.

Original Odhner (77.27КиБ)
Арифмометр 1950-х годов, произведённый компанией «Оригинал Однер»

После революции компания ожидаемо была национализирована, что привело к её разделению — новоявленное государство производило свои арифмометры «Оригинал-Однер», Александр же с прочими управляющими открыл в Швеции собственное производство.

В последующие годы компания несколько раз меняла владельцев и даже название, пока в 1973 году её не купила «Электролюкс».

На фотографии выше — «Original Odhner X-9 S-5», произведённый в Швеции в 1950-х годах. «Икс» означает, что модель оснащена мотором, «Эс» — с прямым вычитанием (что бы это ни значило), «5» — номер серии, «9» — номер модели в серии.

Несмотря на то, что этот арифмометр имеет опосредованное отношение к России, я всё же приобрёл её для музея, так как Вильгодта Однера сегодня никто, кроме специалистов, не знает и об его арифмометре — тоже. Это скверно, хочется это исправить.

Пересылка, к слову, стоила в несколько раз больше самой посылки — сказался вес почти в 13 килограмм.

Продавец утверждает, что модель рабочая, но проверить это не могу — дома нет нужного напряжения, да и не рискнул бы всё равно — нужно разбирать в нормальных условиях и хотя бы визульно убедиться, что всё в порядке перед включением. Поэтому как именно устройство работает рассказать не могу. Знатоков немецкого отсылаю к инструкции.

2 комментария

← сюда туда →