HA

Сначала немного не по теме.

Все файлы на виртуалку я переношу через образ дискеты и перво-наперво несколько слов о том как создать образ дискеты на «Маке». Мне необходимо куда-то записать эту информацию, иначе она у меня постоянно теряется. Из командной строки это делается так:

dd if=/dev/zero of=floppy.img bs=1024 count=1440
diskutil eraseVolume MS-DOS VOLUME `hdiutil attach -nomount floppy.img`
hdiutil attach floppy.img

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

Как справедливо напомнили читатели в комментариях к моему эксперименту c ARJ, в 90-е чемпионом по сжатию был архиватор HA (с алгоритмом PPM). Он был очень медленным по тем временам (помню DOOM сжимался за часы) и поэтому не слишком распространённым, но я с ним сталкивался.

Скриншот командной строки: утилита HA 0.9991a сжатия файла FILE.TXT методом HSC (23,7%), создание архива FILE.HA, затем вывод списка директории C:\ через dir.
Успехи архиватора HA — 23,7% исходного объёма

Для тестирования я выбрал форк архиватора, с которым сталкивался во времена интереса к языку программирования Си-​-. Форк быстрее оригинала в 1,5 раза, впрочем, как оказалось, сейчас это вряд ли имеет значение — сжатие файла из вчерашнего теста заняло малозаметное время.

214962-байтный файл сжался в 51088 байт, это 23,8% от исходного объёма. Это лучше современного xz с его 25,4 процентами, но по-прежнему хуже архиватора Compressia с его космическими 20,6%!

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

PHP: доступ к приватным свойствам

Кинули ссылку на один из способов получения доступа к приватным свойствам в ПХП, тут создаётся функция, которая вызывается в контексте объекта с закрытым свойством:

function inspect_closure(object $o, string $p)
{
    return (function () use ($p) {
        return $this->$p;
    })->call($o);
}

Я решил вспомнить сколько таких способов вообще существует в ПХП.

Сначала, очевидно, на ум должен прийти рефлекшн, ведь он для этого и предназначен:

function inspect_reflection(object $o, string $p)
{
	$refClass = new \ReflectionClass(get_class($o));
	$refProp = $refClass->getProperty($p);
	$refProp->setAccessible(true);

	return $refProp->getValue($o);
}

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

function inspect_array(object $o, string $p)
{
    return ((array) $o)[
    	sprintf("\0%s\0%s", get_class($o), $p)
    ];
}

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

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

function inspect_serialize(object $o, string $p)
{
	$class = get_class($o);
	$serialized = serialize($o);

	if (preg_match("/s:\d+:\"\\0{$class}\\0{$p}\";([^;]+;)/s", $serialized, $m)) {
		return unserialize($m[1]);
	}

	throw new \UnexpectedValueException('Something went wrong.');
}

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

Оставить комментарий

99 бутылок: Zephir

69. Zephir — язык программирования, созданный для написания модулей расширения PHP и являющийся его сателлитом. Текущая версия (0.12.2) содержит несколько багов, с которыми пришлось столкнуться при написании программы. К счастью, перед компиляцией «Зефир» транслируется в Си, поэтому разобраться в происходящем труда не стоило.

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

По синтаксису «Зефир» явный наследник ПХП, но выглядит почище — без «долларов» в именах переменных (которые многих раздражают) и скобок в управляющих конструкциях (из-за чего напоминает мне Гоу). Процедурное прошлое здесь почти не видно — многие функции на типами имеют объектные эквиваленты.

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

«Песня о пиве» на «Зефире» выглядит следующим образом:

// Beer song by Evgeny Stepanischev
// song.zep
namespace Beer;

class Song
{
	private static function format(int bottles) -> string
	{
		string result = "";

		switch bottles {
			case 0:
				let result = "No bottles";
				break;
			case 1:
				let result = "1 bottle";
				break;
			default:
				let result = "%d bottles"->format(bottles);
		}

		return result . " of beer";
	}


    public static function sing() -> void
    {
    	int bottles = 99;
    	var botStr = self::format(bottles);

        while bottles > 1 {
        	echo "%s of beer on the wall, %1$s of beer.\n"->format(botStr);

        	let bottles--;
        	let botStr = self::format(bottles);

        	echo "Take one down and pass it around, %s on the wall.\n\n"->format(botStr);
        }

        echo "No more bottles of beer on the wall, no more bottles of beer.\n",
        	"Go to the store and buy some more, 99 bottles of beer on the wall.\n";
    }

}

Поскольку язык используется для написания расширений, а не самостоятельных программ, написанному выше надо помочь запуститься:

zephir build
php -d extension=beer.so -r 'Beer\Song::sing();'

Оставить комментарий

Мениск

Раздел «Вывих нижней челюсти» (Luxatio mandibulae) описывает двусторонний и односторонний вывих, причины, механизм смещения головки челюсти и защемление межсуставного мениска.
«Терапевтический справочник. Том второй», Саратовское государственное издательство, 1935, стр. 538

На «Реддите» вовсю обсуждают вещи, о которых узнали очень поздно. Я тут тоже кое-что узнал в 41 год.

Открытие недели  — мениск бывает не только в колене (и даже там их два)! Оказывается в человеческом организме менисков немало, кроме колена, они находятся так же в акромиально-ключичном, грудино-ключичном, лодышечном, кистевом и височно-нижнечелюстном суставах.

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

Оставить комментарий

Кирпич «АК»

Старый кирпич с выцвевшими белыми пятнами и вырезанными буквами «АК» лежит на земле среди сухой травы, листьев и мелких камней.
Кирпичное клеймо «АК» по постели, найденный во дворе жилого дома

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

На роль производителя у меня только одна кандидатура — крестьянин Алексей Калугин, кирпичный завод на Арском поле которого в 1894—95 годах упоминается в источниках. Завод основан в 1885 году, производил по 300 тысяч кирпичей и работало на нём девять человек.

Оставить комментарий

Гиря братьев Рекшинских

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

Недавно один из чердаков обогатил меня старинной гирей в два фунта (818 грамм, если верить нашим кухонным весам). С одной стороны у неё клеймо с весом («2Ф» — два фунта) и производителем («БР. Р», гирю выпустил завод братьев Рекшинских), с другой — изображение двух сторон медали, которую Рекшинские получили за свою продукцию в 1886 году на одной из выставок. На изображении аверса сокращённая надпись «За трудолюбие и искусство» и год получения медали, на реверсе — портрет Александра Третьего.

Ржавая металлическая гиря с круглым отверстием и отчётливым клеймом «16» в центре, держится в руке на размытом фоне.
Поверочное клеймо, поставленное в 1908 году поверочной палаткой Нижнего Новгорода

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

На странице 214 справочника А. И. Гуляева «Торговля и торговыя установленія» читаем:

Вновь изготовляемыя металлическія гири должны быть снабжены особою вывѣрочною пробкою изъ красной мѣди, для наложенія на нее клеймъ.

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

На моём фото поверочное клеймо образца 1907 года — тогда его изменили на торговых гирях с орла на инициалы императора («Н II» — «Николай Второй») и корону. Цифра под короной — номер поверочной палатки (отделения Палаты мер и весов, осуществившего поверку), а «08» — год проведения процедуры (1908).

В моём случае номер поверочной палатки — «6», это палатка Нижнего Новгорода, где и располагался один из заводов Рекшинских.

Оставить комментарий

(A)

Увидел в тексте правительственной телеграммы непонятную штуку — букву «А» в скобках: «(А)».

По контексту догадался, что это «@», но не сразу понял откуда такое обозначение. Лишь чуть позже дошло, что «@» — «„а“ в кружке́ », кружок показали скобками, а так как в телеграмме всё набирается прописными буквами, то и получается такое странное сочетание знаков.

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

42

Сегодня у меня день рождения. Мне сорок два.

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

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

  • прочитал 39 книг, это на три книги больше, чем в предыдущем году;
  • продолжил исследование кирпичных клейм — рассмотрел кирпич Летягина в Самаре, казанские НА, НБ, КЛЗ, ТБ и АК;
  • пока незаслуженно обхожу вниманием страховые доски — знаю четыре места, куда надо дойти с фотоаппаратом, но добрался только до одного;
  • внёс небольшой вклад в проект mozjpeg — теперь он нормально собирается под седьмую ЦентОС;
  • в очередной раз побывал в Самаре, съездил в четвёртый раз в Турцию;
  • попробовал в деле ассемблер процессора 6502 (когда-то он использовался в первом компьютере компании «Эпл»);
  • написал считалочку про пиво на языках «Эль-76», «Юᓂ곧⎔», «Zephir», калькулятора «DC», ассемблере процессора 6502, ;
  • раздобыл для музея вычислительной техники «Партнёр•01.01» и несколько допотопных калькуляторов (надо бы их сфотографировать, кстати);
  • впервые подключился к ФИДО, да-да, в 2019 году!
  • занялся патефоном дедушки жены, удалось найти очень хорошего мастера, который смог его восстановить;
  • запустил наш продукт под архитектуру POWER8, для этого пришлось изобретать нетривиальные способы сборки пакетов;
  • успешно прошёл курс университета Иннополис по алгоритмам машинного обучения;
  • выложил две части своих «дневников жизни», планирую заняться остальными;
  • пользуясь необычным обмелением Волги в этом году, погулял по показавшейся из воды старинной Казани и поучаствовал в миниэкспедиции военно-поискового отряда на болота в Спасском районе;
  • попробовал флоатинг, пока только часовую продолжительность, планирую расширить свой опыт до трёх часов;
  • журнал «Форбс» взял у меня интервью касаемо одного из старых проектов;
  • побывал в офлайн-лагере, опыт оказал на меня такое большое влияние, что я до сих пор не могу осознать его полностью;
  • двухлетние занятия в спортзале с тренером наконец дали, на мой взгляд, очень ощутимые плоды в плане реабилитации повреждённой когда-то на спортивной гимнастике спины;

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

Любящий вас, Лёв Толстой

От Льва Николаевича Толстого осталось немало аудиозаписей начала 20 века.

Часть из этого — надиктовка различных произведений, другая часть — аудиопереписка. Например, вот письмо Николаю Васильевичу Давыдову, юристу, общественному деятелю и другу Льва Николаевича:

Слышно плоховато (ещё бы — 1908 год, записано на фонограф), поэтому вот расшифровка:

Милый Николай Васильевич, опять к вам с просьбой. Прилагаю обвинительный акт, написанный против одного близкого мне человека. Прилагаю и его письмо, чтобы вам дать понятие о том… о самом человеке. Что мне делать? Мой план такой, двоякий: или самому поехать в Петербург, вызваться за… быть защитником его, или подать заявление, в котором выразить, что книги получены им от меня, что книги… если кто виноват, то я, и кого судить, то именно меня. Книги я получаю от издателей. И когда их просят у меня, то раздаю тем, кто их просит. Как поступить в этом случае? Научите меня и составьте, если можно, такое заявление или посоветуйте ехать самому в Петербург и быть защитником.

Жду ответа.
Любящий вас Лёв Толстой.

Из этой аудиозаписи мы, в частности узнаём, что Толстой называл себя Лёв, о чём я уже писал.

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

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

Дневник жизни №3 ★

Продолжаю перепечатывать свои дневники жизни — я уже выкладывал тетради №4 и №8, на этот раз перепечатал дневник №3. Это самый конец 1991 года, в тетради — подростковый бунт, моё бесценное мнение по развалу Союза, увлечение паранормальными явлениями, эксперименты с алфавитом и изобретение собственного способа отображать эмоции в тексте.

Оставить комментарий

Казанский феномен

Книга Любови Агеевой «Казанский феномен: миф и реальность» с чёрно-белыми фотографиями на обложке, лежащая на коленях в джинсах внутри автомобиля.
Любовь Агеева «Казанский феномен: миф и реальность», Казань, Татарское книжное издательство, 1991

Сейчас очень многие говорят о возвращении 90-х, главным образом имея ввиду преступность тех лет. Сложилось и распространилось мнение, что в то время преступность достигла едва ли не своего пика, по крайней мере уличная. Эта тема нередко всплывает в «курилках» и в одном досужем разговоре недавно всплыл «казанский феномен» — явление, о котором я ничего не слышал.

Цитата из «Википедии»:

В конце 70-х — начале 80-х годов XX века в средствах массовой информации и юридической литературе СССР появилось понятие «казанский феномен». Подростки из рабочих слободок с окраин Казани объединялись в молодёжные банды, носившие имена по названиям районов или улиц, на которых проживали члены данных группировок. Они начинали «делить асфальт», т. е. захватывать территории.

Своего расцвета «казанский феномен» достиг в 1978 году, когда члены ОПГ «Теплоконтроль», более известные как «Тяп-Ляп», организовали ряд пробегов по Казани, насмерть забивая любых встречных. Правда, после этого с группировкой быстро покончили. Нескольких членов «Теплоконтроля» приговорили к смертной казни через расстрел.

Судя по описаниям этого феномена, в 90-е преступность даже снизилась, если сравнивать её уровень и масштабы с предыдущими десятилетиями.

Эта тема меня чем-то зацепила и, пока я пытался что-то по этому поводу нагуглить, наткнулся на книгу 1991 года «Казанский феномен: миф и реальность». Сейчас это локальная букинистическая редкость — было всего одно издание тиражом в пять тысяч экземпляров. Мне повезло найти и купить эту книжку, буду читать.

Пока успел только полистать по диагонали, в самом конце углядел «Словарь казанских подростков», а там сленговое слово «автор».

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

Это слово мне помнится ещё со времён школьных разборок (я закончил школу в 1992-м), тогда «кидали предъявы» — «ты чо, автор шоли?» и я всегда недоумевал что это значит, объяснить было некому, да и возможно никто из моей среды этого не знал.

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

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

Эколингвист ★

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

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

Когда читаешь, понимаешь, что «pomaga w leczeniu chorych» — это «помогает в лечении хворых», а «pigułki» — «пилюльки» («пилюли», «таблетки»), но на слух это воспринять значительно сложнее.

Отдельной строкой меня поразил эксперимент общения на «интерславике» («межславянском») — это полуискусственный язык с упрощённой грамматикой, состоящий из слов, которые понятны большинству носителей славянских языков.

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

Отче наш, кторы јеси в небесах, нехај свети се име Твоје. Нехај пријде кральевство Твоје, нехај буде вольа Твоја, како в небу тако и на земји. Хлѣб наш всакоденны дај нам днес, и одпусти нам наше грѣхы, тако како мы одпушчајемо нашим грѣшникам. И не введи нас в покушенје, але избави нас од злого.

Попробовать свои силы в чтении можно на сайте Википедии на межславянском.

Возвращаясь к эксперименту. В ролике болгарин, поляк и хорват пытаются выполнить задания (prikaz), озвучиваемые на межславянском. Меня очень развлекло, krasiva zabava.

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

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

С ком приветом из 1928 ★

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

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

Рукописное письмо от 25 мая 1928 г. с завода «Красный Октябрь» Александру Петровичу Трофимову с просьбой о справке и включении в члены товарищества; подпись М. Валиева (Трохище).

В книге памяти Татарстана удалось найти репрессированного Трохимуса Ромуальда Ивановича 1923 года рождения, возможно это сын человека, написавшего это письмо.

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

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

Добавлено позднее: на основании комментария читателя исправил национальность с латыша на литовца.

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

Советский метро

Текст о том, что проект метро в Париже был отклонен царским правительством, а через 30 лет советская власть построила метро.
«Пять лет московского метро», Государственное транспортное железнодорожное издательство, М., 1940, стр. 21

Удивительно, но «метро» когда-то было мужского рода, это логично, конечно — «метрополитен» же, но всё равно удивительно. Выше выдержка из книги «Пять лет московского метро», где «метро» два раза упомянуто в мужском роде.

Ещё небезынтересная цитата об истории метро из той же книги:

Но вот в 1902 году Москва была потрясена неожиданным событием. Компания американских предпринимателей во граве с мистером Гофом получила разрешение правительства исследовать почву Москвы на предмет проведения в столице подземной дороги.

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

Подземная дорога в Парике была построена незадолго до появления Гофа в России. Строила ее фирма «Метрополитен», откуда и пошло название каждой подземки — метрополитен, или как сокращению окрестили его парижане — метро (точно так же, как трамвай парижане называют «трам», слово же «трамвай» — от фамилии строителя лондонской конки Уитрам).

Если бы не сопротивление олигархов и духовенства, метро могли проложить в Москве намного раньше — первый проект появился ещё в 1875 году и потом к идее возвращались ещё несколько раз.

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

← сюда туда →