🐞 Немного об отладке через var_dump

Отладка на vk (144.06КБ)
Кто-то из разработчиков отлаживает «Вконтакт» через var_dump прямо на «бою»

Недавно поймал, посещая «Вконтакт», такую ситуацию. Владельцы её заметили нескоро — висело ещё минимум час.

«Вконтакте» написан на диалекте ПХП и для тех не знаком с этим языком поясню — это какой-то смелый программист, отлаживая что-то прямо на промышленной среде, вывел какой-то ассоциативный массив прямо в код страницы встроенной в язык функцией var_dump. Кстати, довольно распространённый способ в рядах «старой школы».
16 комментариев
7 февраля 2016 13:13

🎱 Сложности при написании «99 бутылок» на «Электронике МК-61»

Электроника МК-61 (127.50КБ)
Тот самый калькулятор «Электроника МК-61», который попал мне в руки

Как и обещал в прошлый раз, хочу рассказать с какими сложностями мне пришлось столкнуться при написании «Песни о пиве» на программируемый калькулятор «Электроника МК-61».

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

В процессе изучения я наткнулся на заинтриговавшую меня вещь. В некоторых операциях калькулятор переключался в режим шестнадцатеричного счисления, о чём сигнализировала восьмёрка и точка в первом разряде. Шестнадцатеричная система калькулятора (38.55КБ)
По этой таблице калькулятор отображает шестнадцатеричные числа

Как видно по таблице выше, отображение этих чисел сильно отличается от общепринятого (как правило для цифр больше девятки используются латинские буквы от A до F) и я не мог не отметить, что с их помощью легко написать английское «beer» («пиво»).

Тем более мне очень повезло в том, что индикацией этого режима является именно восьмёрка, стоящая спереди — так похожая на первую букву в нужном мне слове. Как вы теперь понимаете, на экране в моей программе написано на «BEEr», с точки зрения калькулятора там одни числа и индикатор режима — «8.EEГ» или «EED» в привычной записи (десятичное «3821»).

Так же я воспользовался тем, что «F» в этой странной нотации — пробел, что позволило мне отделить число от «надписи». Дальнейшее — дело техники.

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

Маски и оставшиеся числа побитно накладываются двумя подпрограммами — по отдельности на диапазоны 0…5 и 6…9 — способы их получения разнятся. Я широко использую операцию «ИНВ» — она инвертирует биты числа, по логике инвертирования цифры 6…9 превращаются в на свои позициях 9…6, и тут никаких сложностей, а знаки в диапазоне 0…5 получаются сложнее — там накладываются сразу две специальные маски и счётчик.

Для примера кусочек подпрограммы, номер слева соответствует номеру инструкции при вводе в калькулятор и каждую строку я прокомментирую, но следует понимать, что в реальности эти комментарии частью программируемы не являются:
// когда что-то попадает в «X» предыдущее значение смещается в «Y» (там стек из 4 позиций)
45 1 // «1» кладётся в регистр «X», входной параметр сместился в «Y»
46 + // Y + 1, передаётся в «X», это коррекция данных после операций, которые шли выше
47 К П→Х 7 // в «X» помещается число из регистра (маска), указанного в регистре №7
48 + // Y+X → X
49 ИНВ // инвертирование битов в «X», сейчас на экране написано «8.EEГ» плюс некий пока мусорный символ
50 К П→Х 8 // в «X» помещается число из регистра, указанного в регистре №8
51 ^ // операция «И», на экране — «8.EEГ», из некого символа получилось требуемое число
52 В/О // возврат из подпрограммы
Десятки и единицы выбираются адресами масок, которые я передаю при помощи косвенной адресации, хорошо, что такое вообще есть в языке — это позволяет эффективно пользоваться подпрограммами.

Подпрограмма вызывается два раза с разными параметрами — для десятков и единиц, получаются две маски, которые позднее накладываются друг на друга.

Сильно расстраивает отсутствие памяти для долговременного хранения, в устройстве хоть и есть батарейный отсек, но при любом сбое питания (батарейки сели, а блок питания не подключен), память калькулятор сбрасывается и программу придётся набрать заново. То же ожидает и в случае, если одну программу нужно будет заменить другой — хотя программы можно запускать с произвольного адреса, много их в память не уместится — её ёмкость всего 105 инструкций.
4 комментария
6 февраля 2016 22:41

📱«99 бутылок» на языке «Электроники МК-61»

«Электроника МК-61» (59.82КБ)
«Электроника МК-61» с запущенной на нём программой

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

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

Вчера мне в руки попал настоящая «Электроника МК-61» (для передачи компьютерному музею) и я наконец-то на обеде и потом вечером разобрался в этих странных значках.

Так выглядят мои «99 бутылок…» на этом калькуляторе:
8112000 Х→П c 8 + ИНВ Х→П b Вх 10 ÷ [X] Х→П d 8 + ИНВ Х→П e В/О ПРГ
П→Х 0 1 0 ÷ [x] Х→П 1 Вх {x} 1 0 × Х→П 2
1 1 Х→П 8 1 2 Х→П 7 П→Х 2 ПП 34 Х→П a
1 4 Х→П 8 1 3 Х→П 7 П→Х 1 ПП 34 П→Х a
^ С/П
6 - /-/ x<0 45 9 + К П→Х 7 + ИНВ В/О
1 + К П→Х 7 + ИНВ К П→Х 8 ^ В/О
Поскольку у меня в блоге скорее всего отсутствуют любители работать каждый день с калькуляторами советских времён, то я не буду придерживаться принятой нотации с номерами — не думаю, что кто-то будет это набирать.

Вкратце о языке. Больше всего это похоже на крайне примитивный ассемблер с гипертрофированным математическим сопроцессором. Всё то же — переходы на адрес, одно- и двухбайтные инструкции с операндами, регистры с определёнными назначениями, сильно ограниченная память (105 команд), наличествует косвенная адресация и подпрограммы (стек вызовов размером в пять вхождений).

До запуска программы нужно в регистр «0» поместить стартовое значение (например, «99», «Х→П», «0») и запустить программу «В/О», «С/П».

Это я сделал из-за того, что цикла в программе нет — из-за мельтишения разрядов совершенно не понять, что происходит. Хотя добавить его очень просто — до команды «С/П» надо вставить одну проверку с переходом и сдвинуть адреса.

Поэтому на вход подаётся нужное число, например, «42», а на выходе мы можем полюбоваться фразой «BEEr 42». Не весть что, но что вы хотели от калькулятора? Кстати, выводимая фраза — не строка (спойлер: а число), о том как мне пришлось помучаться я ещё расскажу.
4 комментария
5 февраля 2016 07:38

💾 В последний раз о Trek Thumbdrive

Trek Thumbdrive (115.42КБ)
Встреча гаджета из 2001 года с далёким потомком этой флешки внутри ноутбука

Предупреждали ведь меня умные люди в комментариях — сохрани драйвера. Почему я не прислушался?

У нас в городе, силами моего хорошего знакомого — директора высшей школы ИТИС Айрата Хасьянова, создаётся небольшой компьютерный музейчик. Я в размере своих закромов ему помогаю, вот и уникальную флешку на 16 мегабайт тоже передаю.

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

Сейчас смешно звучит, но флешки того времени имели ёмкость от 8 до 256 мегабайт (не гигабайт) и продавались с драйвером на дискете.

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

И вот вчера повезло — на неком тайском блоге нашёл запись со ссылками на другой сайт с полным комплектом драйверов. К сожалению, сначала драйвера не скачались — сайт давно лежит в обломках. Но мне повезло дважды — через «Веб-архив» удалось открыть страницу какой она была в 2011 году и выкачать сами драйвера!
Trek Thumbdrive под Windows XP (136.79КБ)
Флешка обнаружена и работает внутри виртуальной машины

Дома выкачал виртуальную машину с операционной системой постарее (вы в курсе, что их легально можно скачать с сайта «Микрософта»?), поставил драйвера, всё завёл, но, к сожалению, ничего ценного не нашлось, даже стёртого.

Из примечательного, файловая система на флешке — FAT12, служебная информация на ней хранится очень компактно, но она поддерживает накопители не более 32 мегабайт. Такая же файловая система применяется и на дискетах, которые, как говорят, благодаря некоторым налоговым никак не оставят нас в покое.
7 комментариев
4 февраля 2016 08:03

⛪ Деревня, которой ранее не было, а потом появилась

д. Что была пустошь… (154.66КБ)
Деревня, что была пустошь на горе, вниз по горе, меж речек

Изучал вчера старинные карты вокруг Мамадыша и наткнулся на очень интересное название деревни, оцените (внизу, правая сторона): деревня Что была пустошь на горе, вниз по горе, меж речек.

Запятые я расставил сам, но не уверен, что автор имел ввиду именно такую расстановку, какая-то немного неулюжая фраза получается. Куюк (29.06КБ)
Деревня, что была пустошь на горе, а стала Куюк

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

Мне кажется, если вернуть историческое название, будет интересная достопримечательность.
Комментировать
26 января 2016 11:54

🌊 Поверка счётчиков воды

Подошёл срок замены водяных счётчиков дома. Дело длительное, да и не из дешёвых — у меня четыре счётчика, за всё около 5 тысяч. Интересно стало — так ли необходима их замена и какие есть альтернативы.

Оказалось, вместо замены можно втрое дешевле выполнить поверку счётчиков, причём это довольно быстро, делается на дому и даже не требует их снятия. Мне эту процедуру провели специалисты «Казметрологии».
Подключение прибора поверки (92.12КБ)
Установка поверочная переносная УПСЖ 3 ПМ

В назначенное время приходит мастер с чемоданчиком, где лежит установка для поверки с эталонным счётчиком внутри. Она крепится к вашему водопроводному крану специальной трубкой. Крепление трубки (83.18КБ)
Вот так крепится трубка установки

Для поверки нужен доступ к вашему счётчику — мастер пропускает через него определённое количество воды и засекает на выносном пульте начало и конец отсчёта, эталонный счётчик покажет сколько воды за это время прошло на самом деле. Процедура повторяется для разных напоров воды. Засекает отсчёт (62.89КБ)
Мастер засёк начало поверки кнопкой на выносном пульте

Для каждого напора погрешность должна быть в пределах нормы. У меня все счётчики безбожно врут, придётся всё же менять. Как мне сказали, примерно половину счётчиков на вызовах меняют — не проходят поверку. Погрешность моего счётчика (48.68КБ)
Погрешность одного из моих счётчиков — почти 8,5%

На фото выше результат одного из моих счётчиков в ванной — 8,4%, это слишком высоко, надо менять. У меня установлены счётчики «Бетар» СГВ-15, их средний срок службы — 12 лет.

То ли из-за качества воды, то ли из-за каких-то ещё причин (мастер как одну из возможных назвал гидравлический удар) у меня они протянули около четырёх лет. Как бы то ни было, сэкономить не удалось.
10 комментариев
24 января 2016 21:45

🐱 Кот и весы

Кот (65.09КБ) У меня дома весы с вайфаем, которые умеют определять кто именно на них становится и добавлять вес в профиль всяких спортивных программ через сеть. Принцип определения профиля довольно простой — по весу, алгоритм устройства исходит из того факта, что при регулярных взвешиваниях вес человека сильно не меняется.

Недавно в нераспознанных значениях появился ещё один участник — коту почему-то нравится время от времени садиться на весы, уж не знаю почему. Теперь мы точно знаем динамику веса нашего кота.
12 комментариев
20 января 2016 17:48

Пуговица с острова сокровищ

Пуговица (134.59КБ)
Пуговица с завода Бухъ

Как-то, в седьмое «посещение острова сокровищ» выкопал пуговицу со ржавым задником — там смутно угадывались какие-то буквы, но и только. Ничего определённого видно не было.

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

Это оказалась фабрика Бух. Надпись полностью выглядит следующим образом (буквы «эс» неясно по какой причине оборотные):
«БУХЪ Buch 1 Сортъ Ƨ PETERƧBURG»

Фабрика Бух — одна из самый известных пуговичных фабрик России. Была основана в 1816 году в Санкт-Петербурге Иоганом Траншелем и Бургардом Бухом, 1840 гг. была перешла Агатону Карловичу и Герману, которые основали фирму «Братья Бух» — с такой надписью я пуговицу уже как-то находил.

Фабрика ещё потом несколько раз меняла владельцев и название (но фамилия «Бух» в нём неизменно сохранялась), пока не наступила революция.
2 комментария
19 января 2016 22:04

Подпилил переподсоединялку вайфая

Чуть поменял «переподсоединялку вайфая» для Мака — теперь пингуется не 8.8.8.8 (это ДНС Гугла), а адрес гейта, что более надёжно. Правда с конца октября, когда я её написал много воды утекло — вайфай у меня отваливается теперь очень редко, уж не знаю что изменилось.
2 комментария
19 января 2016 16:13

🏠 Дом Микляева в Казани (17 век)

Дом Микляева (175.32КБ)
Фасад дома, справа за домом виднеется верхушка Петропавловского собора

Сегодня благодаря Олесе Балтусовой (за что ей огромное спасибо) побывал в так называемом «доме Михляева» (правильно — Микляева).

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

Иван Афанасьевич Микляев был настоящим олигархом своего времени — крупнейший в Среднем Поволжье подрядчик вина, крупный заводчик (несколько собственных предприятий и паи), аграрий, речной судовладелец, ростовщик.

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

Сейчас Микляева чаще вспоминают как человека, благодаря которому был построен Петропавловский собор — красивейший в Казани, один самых ярких образцов стиля петровской эпохи. Провалилась крыша (101.28КБ)
Внутри дома в одном месте обвалилась крыша

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

Аварийность дома усложняет работы — кое-где перекрытия держатся на честном слове, ходить просто опасно, а ведь оттуда надо собирать и вывозить горы мусора. Стены уже много где обнажились и теперь видны очевидные следы ремонта и перепланировки советского периода — заложенные окна и проёмы. Заложенное окно и проём (140.18КБ)
Заложенное окно и проём — такое встречается часто

Впрочем, дом, очевидно, достраивался и ранее — в одном из углов дома видны клеймённые кирпичи с инициалами «МЧ» («Мария Челышева» — она владела кирпичным сараем при деревне Малые Клыки в конце 19 века), которые в других частях дома на глаза мне не попадались, а в подвале вообще часть стен сложена из тёсанного камня, в отличие от другой, кирпичной части. Кирпичи с инициалами (125.64КБ)
Кирпичи с клеймом производителя — «МЧ». Их довольно много на левом углу со стороны фасада
Стена из камня (148.96КБ)
В подвале есть стена из тёсанного камня

Выдаёт какие-то работы по изменению дома и форма окон — на фасаде есть три их различных типа. То ли дом в своё время от чего-то пострадал и реставрировался, то ли состоял из нескольких разных секций и позже был объединён. Или возможно использование в левой части дома кирпичей конца 19-го века и более простая форма окон там же выдают более поздний пристрой к дому. Разные типы окон (212.40КБ)
Очень хорошо видно, что на фасаде встречаются окна нескольких типов

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

Очень хочется, чтобы дом получил второё рождение и радовал жителей Казани ещё ни одну сотню лет.
Комментировать
16 января 2016 15:45

👅 Болтун — находка для шпиона

Я тут английским занялся плотно в конце прошлого года, репетитор, сериалы с субтитрами, вот это всё. Вчера смотрел очередную серию «Друзей» на английском и, может не к месту, вспомнил свой самый первый опыт устного общения с носителем английского.

Было это в примерно в самом конце 90-х, когда я ещё в Университете учился, параллельно лаборантил на своём же факультете.

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

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

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

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

Slowly!
«Slowly»? Hm… «slowly»… — удивился иностранец.

На этом наш диалог прервался, наткнувшись в самом начале на непреодолимый языковой барьер.
3 комментария
14 января 2016 17:20

☭ Антисоветская шутка

Шутка во всей красе (105.47КБ) На картинке нарисована старая антисоветская шутка. Сможете расшифровать смысл?
16 комментариев
13 января 2016 17:30

🎈 Он улетел, но обещал вернуться

График постов в блог (46.23КБ) Кажется со мной происходит одна вещь, которую очень трудно оценить изнутри. Трудно настолько, что я не понимаю — происходит ли это на самом деле. Вроде какие-то звоночки есть, но они в целую картину складываются настолько с трудом, что это выглядит натяжкой.

Кажется я теряю интерес к окружающему миру и ухожу в себя. Наверху я вывел график постов в блог (строка кода наверху — это я Пайтоном считал статистику, блог у меня на текстовых файлах работает), снижение отчётливо видно после переезда в Казань. На провал 2005—2007 можно внимания не обращать — если я ничего не путаю, тогда я на ЖЖ переключался.

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

Есть и ещё признаки, я не знаю из этого ряда ли. Я нигде не выступаю, не езжу на конференции, сознательно не пишу на востребованные темы, не делаю публичных проектов, все мои новые хобби строго индивидуальны, мне отчего-то трудно общаться со старыми интернет-друзьями, фактически я оборвал эти контакты (это, кстати, единственное, что меня всерьёз беспокоит из этого ряда).

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

Или в голове у меня произошёл какой-то сдвиг парадигмы и всё что было ценно раньше, обесценилось, а я просто цепляюсь за прошлое. Непонятно.
34 комментария
13 января 2016 10:28

Первые социальные сети

Итак, первый брак, заключенный дистанционно, с трансляцией в режиме реального времени, по итогам знакомства в социальной сети, — это брак Сары Ортен из Питтсбурга и Томаса Уэлша из Цинцинатти, познакомившихся в телеграфном «чате» (популярное развлечение тех лет) в 1883 году. Приглашение на виртуальную свадьбу получили все, кто в тот момент находился «он-лайн».

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

И обо всем об этом пишет Джей Клейтон в замечательной книжке «Dickens in Cyberspace: The Afterlife of the Nineteenth Century in Postmodern Culture».
Проблема «в интернете никто не знает, что ты кот» существовала уже в 19 веке.
2 комментария
12 января 2016 00:18

Дерево в цепочках

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

В общем, там где мне совсем сильно жмёт, я пишу иногда небольшие скрипты. Недавно написал очередной и решил поделиться. Этот скрипт (написан на ПХП7) позволяет развернуть дерево в формате GEDCOM (это общепринятый формат для хранения информации о родословной) в цепочки — то есть простраивает все пути от указанного человека до каждого его предка.

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

Для запуска требуются два параметра: нужно указать путь до файла дерева и идентификатор человека, от которого нужно простроить цепочки, его надо посмотреть внутри файла (GEDCOM текстовый формат). Для этого нужно найти внутри запись нужной персоны и выше неё — строку вида «0 @буквыцифры@ INDI», вот часть «@буквыцифры@» и будет требуемым идентификатором.
23 комментария
11 января 2016 21:52