Спонсорские площадки
Я люблю книги. Бумажные больше, чем электронные — материальные объекты мне
Надо сказать, что когда читаешь книгу, в которую ты вложил деньги, пусть небольшие, за которую переживал — получится у авторов сделать качественный продукт или нет — это особенное чувство, — когда понимаешь, что если бы не твоё участие, книга могла вообще не появиться на свет.
Начинаю понимать людей, которые вкладываются в благотворительность. Недавно прочитал мнение, что всё дело в замаливании грехов. Не знаю, у многих ли мотивы сходны с моими, но в моём случае замаливанием грехов и не пахнет и я сомневаюсь, что я такой уникальный. В моём случае возможно дело
Принадлежность клейма «ИГ»
Благодаря стараниям Романа Царевского, известного мне по сообществу «Казанская ностальгия», по всей видимости выяснилась принадлежность кирпичного клейма «ИГ».
Вероятнее всего оно принадлежит заводу купца Ивана Семёновича Гребенщикова, вот что о нём сообщает книга «Республика Татарстан: православные памятники (середина XVI — начало XX вв.)»:
Поморско-брачная община в Казани не была столь же богатой и влиятельной, как старопоморская. Большую часть верующих составляли выходцы из Вятской губернии и из Чистополя. В сельской местности Казанской губернии это согласие не было распространено. Лидером и покровителем общины многие десятилетия был купец Иван Семёнович Гребенщиков (1810—1883), оптовый торговец железом и владелец кирпичного завода. Его предки, лаишевские мещане, принадлежали к старопоморскому согласию, а брат Василий был одним из лидеров казанской старопоморской общины. Но сам Иван Семёнович еще в юности перешелв поморско-брачное согласие.В 1850-1880 годы в его доме находилась молельня. До 1917 года община существовала на средства, завещанные Гребеншиковым, т. к. других крупных предпринимателей в общине не было. Наставником и руководителем хора в 1870 годы стал казанский мещанин Андриан Иванович Кочкешев, служивший в общине еще с 1861 года. После смерти Гребенщикова и вплоть до 1918 года Кочкешев был фактическим руководителем общины. Председателем совета общины после ее регистрации в 1906 году стал небогатый купец Василий Львович Виноградов.В 1906—1910 гг. на средства, завещанные Гребенщиковым, под руководством Кочкешева, Виноградова и Василия Филипповича Максимова был построен храм на ул. Вознесенской (Островского, 81). Небольшой одноглавый храм без колокольни. Выстроен в эклектическом стиле с сочетанием псевдорусских форм и узорчатой разностилевой кирпичной кладки. Закрытый в начале
1920-х годах храм в 1982 году передан общине Русской православной старообрядческой церкви (бывшей Белокриницкой иерархии) и освящен в честь Казанской иконы Божией матери. Согласно «Списку памятников истории и культуры Республики Татарстан, находящихся на государственной охране» на 1.01.2001 года, церковь Казанской Богородицы является памятником градостроительства и архитектуры федерального значения.
Любопытно, что при немаленьком количестве источников, которые я обработал, чтобы составить свой справочник кирпичных производителей, Иван Семёнович в него не попал, что говорит о том, что
Сила .ssh/config
Извечная задача получить доступ к одной машине через другую чаще всего решается при помощи SSH-туннелей — удобно, пока не приходится получать доступ к группе машин. Недостаток традиционного решения — не всегда удаётся придумать удачное правило выбора портов, чтобы не запутаться как мы должны соединяться, чтобы попасть на нужную машину.
К счастью, есть решение лучше, которое позволяет соединяться через SSH наиболее естественным способом — как будто у нас есть прямой доступ.
Тут нам пригодится файл ~/.ssh/config, служащий для конфигурирования SSH-соединений, я обычно туда вписываю символические имена вместо
Например на картинке выше у меня конфигурация, которая позволяет к любому
Таким образом получается соединение, весь трафик которого без изменений попадает на нужный нам адрес, а уже в этом соединении мы выполняем обычный логин на нужную нам машину. Все аутентификации у меня, естественно, сделаны через сертификаты.
Скриптование меню в статус-баре
В «Маке» очень нехватает одной вещи — лёгкого создания собственных меню
Если кому интересно, то последовательность его прикручивания к системе примерно такова (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'И получаем малофункциональную такую менюшечку для блокировки клавиатуры (кстати и увы, если компьютер с заблокированной клавиатурой, у вас уйдёт в блокировку
В принципе можно даже сэмулировать защёлкивание замка и смену пунктов меню «Lock» на «Unlock» и обратно (для этого нужно просто пересоздавать меню после каждой из этих команд с другими пунктами и другим замочком), но это ещё полэкрана костылей, которые мне совсем не хочется на вас вываливать.
Кстати, пункты в меню добавляются в произвольном порядке — программе совершенно плевать в каком порядке вы их задали в параметрах.
Шалаш на острове сокровищ— 8
В эти выходные позволил себе короткий (всего несколько часов) выезд.
1 копейка 1875, 3 копейки 1938, 3 копейки 1941, две монеты по 20 копеек 1943, 2 копейки 1949, 3 копейки 1950, 1 копейка 1953, пуговка с серпом и молотом в советской звезде, три монеты поздних «советов» по одной копейке и обломок эмалированной ложки.
Все монеты, кроме царской, обработал уксусной кислотой — большинство были загажены настолько, что год вообще не читался. Как видите, часть монет покраснела. Насколько я понимаю процесс, алюминиевая бронза монеты окислилась и алюминий превратился
Коммит миграций кусками с помощью 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 сама не умеет добавлять
Оригинальный арифмометр Однера (X-9 S-5)
Если помните, то в прошлом году мы с группой товарищей основали «Музей вычислительной техники им. Р. К. Самитова», после открытия я взял паузу,
Вильгодт Теофил Однер —
После революции компания ожидаемо была национализирована, что привело к её разделению — новоявленное государство производило свои арифмометры
В последующие годы компания несколько раз меняла владельцев и даже название, пока в 1973 году её не купила «Электролюкс».
На фотографии выше — «Original Odhner
Несмотря на то, что этот арифмометр имеет опосредованное отношение к России, я всё же приобрёл её для музея, так как Вильгодта Однера сегодня никто, кроме специалистов, не знает и об его арифмометре — тоже. Это скверно, хочется это исправить.
Пересылка, к слову, стоила в несколько раз больше самой посылки — сказался вес почти в 13 килограмм.
Продавец утверждает, что модель рабочая, но проверить это не могу — дома нет нужного напряжения, да и не рискнул бы всё равно — нужно разбирать в нормальных условиях и хотя бы визульно убедиться, что всё в порядке перед включением. Поэтому как именно устройство работает рассказать не могу. Знатоков немецкого отсылаю к инструкции.