Как открыть файл в формате HLP
Потребовалось открыть файл в древнем формате HLP. Оказавается сейчас его ничего не открывает, даже операционная система Виндоуз, под которую он
Возможно существует
diff --ignore-blank-lines --minimal -urd a/winhelpcgi/dib2png.c b/winhelpcgi/dib2png.c
--- winhelpcgi-1.0/winhelpcgi/dib2png.c 2004-06-15 11:38:40.000000000 +0400
+++ winhelpcgi-1.0-patched/winhelpcgi/dib2png.c 2018-11-03 13:59:03.405031382 +0300
@@ -85,7 +85,7 @@
/* Set error handling. REQUIRED if you aren't supplying your own
* error hadnling functions in the png_create_write_struct() call.
*/
- if (setjmp(png_ptr->jmpbuf))
+ if (setjmp(png_jmpbuf(png_ptr)))
{
/* If we get here, we had a problem writing the file */
png_destroy_write_struct(&png_ptr, (png_infopp)NULL);
@@ -93,7 +93,7 @@
}
/* Set the I/O callback function to transfer directly to memory */
- png_set_write_fn(png_ptr, (voidp) sbout, user_write_data, NULL);
+ png_set_write_fn(png_ptr, (png_voidp) sbout, user_write_data, NULL);
/* Get access to the windows DIB data */
lpbmi = (LPBITMAPINFOHEADER) GlobalLock(hDIB);Утилита с грехом пополам преобразовала файл в нечитаемый ХТМЛ, который пришлось перекодировать:
/usr/local/bin/winhelpcgi.cgi --tar HELP.HLP |
php -r 'echo mb_convert_encoding(strtr(stream_get_contents(STDIN), ["\0"=>""]),
"CP1252", "HTML-ENTITIES");' > help.htmlПосле этого читать можно, но если
Удобство чтения
Наверное никогда не читал так много вслух, как после рождения дочки. Даже в школе, если правильно помню, не требовалось читать вслух каждый день.
В этой связи стало ощущаться следующее.
И прежде мне приходилось задумываться об удобстве проговаривания читаемого — на страничках блога я рассуждал об ударениях, букве «ё», написании слов из других языков в произношении на русском и так далее. Но кажется теперь я стал обращать на это ещё больше внимания, все трудности или подспорья в тексте
Сегодня, читая страницу «Эпических творений Михаила Хераскова…», случайно попавший мне в руки труд 1786 года издания, обратил внимание, что в правом нижнем углу каждой страницы есть
Нетрудно догадаться для чего это сделано — для непрерывности устного чтения. Пока мы листаем страницу, неизбежно возникает пауза, особенно, если руки сухие и следующий листок никак не поддевается, но при таком устройстве текста как на скриншоте, можно начать проговаривать следующее слово.
Интересное улучшение интерфейса бумажной книги. Жаль не прижилось.
99 бутылок: Эль-76
65.
Язык процедурный, как и следовало ожидать, но с обработкой исключений, который тут называются «ситуациями». Довольно необычно.
% Песня о пиве 99.l76
программа
процедура пиво = проц(ф32 бутылок)
начало
если бутылок = 0 то
печатьмс(стр8 "no bottles")
инес бутылок = 1 то
печатьмс(стр8 "1 bottle")
иначе
печать(бутылок);
печатьмс(стр8 " bottles")
все
конец;
ф32 бутылок;
для бутылок от 99 вниздо 1 цикл
пиво(бутылок);
печатьмс(стр8 " of beer on the wall, ");
пиво(бутылок);
печатьмс(стр8 " of beer.");
печатькс();
печатьмс(стр8 "Take one down and pass it around, ");
пиво(бутылок - 1);
печатьмс(стр8 " of beer on the wall.");
печатькс();
печатькс()
повторить;
печатьмс(стр8 "No more bottles of beer on the wall, no more bottles of beer.");
печатькс();
печатьмс(стр8 "Go to the store and buy some more, 99 bottles of beer on the wall.")
конецТем не менее, программа запускается и выводит задуманное, хотя могла бы выглядеть менее уродливо, будь у меня компилятор, реализующий
Живой конденсатор
В выходные с приятелем возвращались с монетного поиска и за полтора часа дороги перебрали немало тем, в том числе и нашу излюбленную, — о совместной покупке для таких выездов классической советской «Нивы». Машина не беспроблемная, зато подержанная стоит всего 400 чашек кофе (сейчас же всё в них меряют, да?) и ремонтируется при помощи мата и пинков.
Вспомнилось как в детстве, перебирая хлам в тумбочке на веранде деревенского бабушкиного дома, я случайно заинтересовался одной книжкой с шофёрскими хитростями — в числе прочего там были советы, как
Примитивное устройство позволяло тогдашним водителям знать свой автомобиль от и до, это вам
Возвращался я из далёкого рейса на своём стареньком ЗИСе. Дело было под утро. Вдруг равномерный гул мотора нарушили громкие хлопки в глушителе, машина резко сбавила скорость, но не остановилась и продолжала шумное и медленное движение. В чём дело? Я проверил систему зажигания, подачу топлива… — всё в порядке. И тогда моё подозрение пало на конденсатор.
И тут я вспомнил «Технику — молодёжи». Один старый шофёр писал
как-то в «Шофёрских байках», что вместо конденсатора можно использовать сырую картошку или… лягушку!
Мы тогда, по правде сказать, смеялись над его словами, но сейчас мне было не до смеха. Картошки у меня не нашлось, зато «лягушачий оркестр», как бы насмехаясь над моей бедой, квакал во все голоса. Я поймал крупную жабу. Снял старый конденсатор, нарастил контакты и привязал их к задним лапкам: жабу обмотал мокрой тряпкой и опустил в целлофановый мешочек. Теперь он служил надёжным изолятором от массы двигателя.
Я сам ещё не верил в успех моей затеи. Однако каков был мой восторг, когда мотор спокойно завёлся и старенький мой ЗИС помчался по городу! «Старик» и не подозревал, что его стальная мощь обусловлена нынче безобидным земноводным существом…
Вернувшись в гараж, я отсоединил бедняжку, мою спасительницу. Она лежала без чувств. На всякий случай я опустил её в арык, и тут случилось второе чудо: жаба ожила!
Йогурт в СССР
Недавно Артемий Лебедев у себя в блоге, в заметке о йогуртах написал следующее, цитирую: «удивительно, но йогурт — это один из продуктов, которого не было ни в каком виде в СССР». И я позволил себе в этом усомниться.
Сначала посмотрим когда примерно слово появилось, знали ли его в СССР?
В терминах и определениях ГОСТа
А ещё раньше? Большая Советская Энциклопедия 1931 года издания знает его под названием «ягурт», цитирую небольшую часть:
ЯГУРТ
(по-турецки — кислое молоко), вид простокваши специального приготовления: молоко кипятится и, по охлаждении его, заражается микробамимолочно-кислого брожения (коккобацилл и лактобацилл кавказский).
Но не в революцию же слово появилось? Было оно известно и при царе, вот такой рецепт можно найти на страницах седьмого тома «Реальной энциклопедіи практической медицины»
Нѣсколько сходенъ съ кислымъ молокомъ и ягуртъ (іогхуртъ, юхуртъ, джаурди), изготовляемый въ Турціи и Болгаріи: коровье, козье или овечье молоко выпариваютъ въ широкомъ сосудѣ при 80°С. до ⅔—¹⁄₂ объема при помѣшиваніи, затѣмъ охлаждаютъ до 55°С., прибавляютъ около 2 куб. стм. на литръ ягурта со вчерашняго или третьяго дня и закутываютъ сосудъ въ шерстяные одѣяла для сохраненія температуры часовъ на 5, послѣ чего ставятъ въ холодное мѣсто на 3—4 часа. За это время ягуртъ скискаетъ. Для полученія первой порціи бродила даютъ молоку скиснуть при 30°С. и собирают пѣнку.
Хорошо, по всей видимости в СССР и даже раньше слово знали, но выпускался ли йогурт промышленно?
Ответ на этот вопрос быстро находится в брошюре «Мясная и молочная промышленность СССР за 50 лет советской власти и перспективы её дальнейшего развития» за 1968 год. Цитировать текстом я оттуда не буду, лучше приведу скан страницы.
Я неплохо помню ассортимент полок
«Гопник» возвращается
Три вещи наполняют душу всегда новым и все более сильным удивлением и благоговением — это звездное небо надо мной, моральный закон во мне и моя необъяснимая любовь к двум досовским играм серии «Гопник». Обе части представляют собой текстовый квест, в обеих частях центральный персонаж — пацанчик, идущий к успеху.
В общем, иногда я к ним возвращаюсь, даже не поиграть, а погуглить — не найдётся ли на ту же тему
Но с годами в выдаче «Гугла» ничего не менялось, пока сегодня в результатах не попался клон игры «Гопник», написанный в 2014 году на примитивнейшем Паскале «коллективом GalAndGames».
К сожалению уже по исходнику было видно, что это — не более, чем
Сюжет явно взят из первой части оригинальной серии — пацан, отчисленный лично ректором, жаждет мести. Игра начинается с момента отчисления и заканчивается битвой с ректором. В начале игры можно выбрать собственную специализацию — «гопник», «вор» или «маньяк», но этот выбор ни на что не влияет.
В игре есть несколько от балды выставленных характеристик, деньги («чирики»), магазин, где можно купить оружие и пиво (аналог аптечек), а так же враги с которыми предстоит драться — «коп», «маньяк», «вор», «гопник», ну и босс — «ректор».
Конечно я не впечатлён, жаль, что игра заброшена, будь у авторов больше терпения, возможно этот гештальт мне наконец удалось бы закрыть.
P@l.Mate и оптическая передача данных
С удовольствием прочитал статью о передаче изображений через анимированные
Называлось это чудо «P@l.Mate» (именно так, через «собачку»), имело шесть кнопок и экранную клавиатуру, в которую надо было тыкать миниатюрным стилом. Внутри были часы, будильник, записная книжка, планировщик, калькулятор, гороскоп и пара игр.
По тем временам неплохо для своего размера (45×10×70 мм), но интересно не это. Сзади у гаджета был фотоэлемент и светодиод — для двухстороннего обмена оптическим способом. Натурально, можно было приложить два «Пэлмэйта» друг другу и они, мигая лампочками в видимом диапазоне, могли обмениваться информацией.
Более того, при помощи специальной программы можно было передать
Не знаю какова была скорость, но хорошо помню, что процесс был изнуряюще долгим и иногда заканчивался ошибкой.
Кажется, это был единственный пример практической реализации передачи машиночитаемого потока данных по каналу в видимом диапазоне, с которым я непосредственно сталкивался в жизни.
Отключение антиспама
После трёх недель работы без выходных, я сегодня наконец отдыхаю. Тюленил до обеда, а за едой поиграл со шрифтами в блоге, плюс попытался, наконец, полностью отключить антиспам «Эгеи» — это движок, на котором у меня блог работает. Надеюсь получилось, если нет, напишите мне, пожалуйста. Хочу закрыть этот вопрос.
Заодно мы с поддержкой «Мастерхоста»
Переданные книги
Весной в одном заброшенном сельском доме мне посчастливилось наткнуться на дореволюционную библиотеку. В загаженной комнате с продавленным диваном, в углу, за печкой стоял шкаф внутри и вокруг которого в беспорядке лежали
Всё найденное было передано в Центр письменного и музыкального наследия, после чего там книги постарались восстановить — убрать пыль и плесень, собрать разрозненные листы и так далее.
Недавно ходил туда — посмотреть в каком теперь состоянии книги, полистал, пофотографировал. Обещали всё найденное оцифровать, но когда будут завершены работы — неизвестно. Жаль прочитать ничего не смогу — не знаю ни татарского языка, ни арабского алфавита.
Барахолка на Гудованцева ★
Если про блошиный рынок в парке Тинчурина знают почти все казанцы, то про барахолку на Гудованцева слышало гораздо меньше народу. Я случайно узнал о ней
Сегодня едва успел к закрытию (торговать там начинают часов с 8, заканчивают около 12), к тому же сильно мешал снегопад, но всё же одним глазком глянул.
Ассортимент — поздний СССР, современный Китай и всякий подержанный скарб. Через снег трудно оценить, но в среднем
Ходили с дочкой, поэтому в основном покупали игрушки (олень — 30₽, енот — 100₽), а мне приглянулась советская звезда на ёлку (150₽), два раза мимо неё прошёл, но всё же купил. Поторговаться пришлось только за звёздочку (сбил цену почти в два раза), остальное взял так.
Ещё не проверял, исправна ли звезда, если нет, поставлю внутрь яркий светодиод, сменю питание с 220 на низковольтное, так ещё и безопаснее. Главное ведь не лампочка накаливания внутри, а эмоциональный накал, который дарят такие, с историей вещи.
Полполушки
«У нашего Андрюшки ни полуполушки» — гласит ныне малоизвестная народная поговорка. Если о существовании деньги (¹⁄₂ копейки) и полушки (¹⁄₄ копейки) я знал, в конце концов, постоянно нахожу их в земле, то о существовании полполушки (⅛) даже не догадывался.
Оказывается такую монету чеканили при Петре Первом — 11 марта 1700 года он выпустил указ о выпуске медных денег, полушек и полуполушек. Может это странно сейчас выглядит, но во времена Петра копейка по меркам крестьянина была хорошей суммой — на рубеже 16—17 веков на неё можно было купить курицу или 15 яиц.
Так что выпуск столь мелких монет был вполне оправдан. В отсутствие размена народ использовал «сеченные деньги» (разрезали копейку на несколько частей), а так же кожаные или другие «жеребья» — суррогатные деньги.
Пол- и четверть копейки прожили долго — ¹⁄₂ копейки существовали даже в СССР, а вот полполушки чеканились только в 1700 году. Эта монета оказалась невыгодной казне и от неё отказались.
Сейчас известно всего несколько подлинных монет такого номинала, по слухам — около пяти. Конечно в продажу они попадают очень редко. Если вам захочется такую в свою коллекцию, сориентироваться по цене поможет проход на одном из аукционов 2003 года — тогда одну из полуполушек продали за двадцать тысяч долларов.
Самый долгий merge в моей жизни ★
Заметка будет интересна только программистам.
Фотография ниже лежит у меня на ноуте с августа 2013 года. Очень не люблю такое — всё нужное я привык закачивать в интернет, всё ненужное — удалять. Не мог определиться куда деть это фото, решил положить в блог, снабдив небольшим рассказом.
Наверное все программисты знают что такое «мерж» (merge) — слияние двух веток и согласование изменений, сделанных в файлах в рамках этих веток. Если системе контроля версий удаётся справить самостоятельно, то «мержи» происходят автоматически, это, в моей практике, наиболее частая ситуация. В противном случае возникает «конфликт» — «мерж» останавливается до разрешения конфликта человеком. Только человек может решить как будет выглядеть сводный код, учитывающий изменения, сделанные в двух слияемых ветках.
Я однажды попал в неприятнейшую ситуацию, когда две команды в нашей компании, в силу многих причин, независимо работали над одним и тем же продуктом около года.
Одна из команд работала над функциями, которые нужны в продукте заказчику, вторая, которой руководил я, — делала несколько довольно серьёзных изменений с заделом на будущее, в частности — внедряла шаблонизацию.
Через год попытались слить две ветки воедино и получили конфликты почти во всех основных файлах проекта. Ничего совсем уж неожиданного, конечно, особенно с учётом того, что часть кода была переписана с ПХП на «Твиг», но никогда в ещё в жизни я не видел столько конфликтов. Затронуты были, если мне не изменяет память, несколько сотен файлов.
С одной стороны, других вариантов, кроме как собрать это всё воедино, не рассматривалось, с другой стороны, объём предстоящей работы удручал.
В общем, погрустил я, погрустил, повесил табличку «Не беспокоить» и заперся в кабинете на неделю. Каждый файл с конфликтом распечатывал дважды — из каждой ветки. Потом раскладывал распечатанное на полу, выделял маркером одинаковые места, рисовал стрелками что куда переместилось, шёл к ноутбуку и так или иначе разрешал конфликт.
На фотографии — процесс разрешения конфликтов одного из файлов. Через неделю я был полностью разбит монотонностью работы, но ветки слил.
Apple I ★
Заметил позитивную тенденцию — меня снова стали интересовать статьи на «Хабре», вплоть до зуда
Не знаю, что ребята сделали, но направление верное, молодцы!
В общем, прочитал недавно там статью про самодельный «Эпл I» и сегодня не спал до двух ночи.
Нет, свой компьютер я не собрал, да и начиналось всё невинно — сначала скачал несколько эмуляторов, попробовал
Для этой цели мне очень подошёл «ОупенЭмулятор»
Первая моя программа умела совсем мало — только бесконечно выводить на экран таблицу символов. Она такая короткая (всего восемь байт), так как для самого сложного — печати на экран, используется вызов ECHO, встроенной в «Эпл I» программы «Woz Monitor», — по всей видимости её писал Возняк, поэтому она так называется.
В ассемблере 6502 особо не развернёшься — три восьмибитных регистра (A, X, Y), 56 команд (не считая нескольких недокументированных), только целые числа, нет деления и умножения. Я совсем не помню свой первый ассемблер
Тем интереснее было написать
Кстати,
Там всего несколько страничек, вникнуть просто и сейчас (о ужас!) мне даже удобно.
Физическое воплощение TCP-пакета
★
В чате бывших сотрудников «Яндекса» сегодня всплыла безвестная картинка с пакетом (на самом деле — сумкой) с принтом в виде TCP-пакета. Каламбур зашёл, местные гики изошли слюной.
Я тоже заинтересовался — где такую взять и ценой вопроса. С заметным трудом разыскал источник — китайский мономагазин, сумка стоит
Видимо не удастся такую получить, разве что найти