В какой кодировке?
Евгений Степанищев (RSS)
Попался мне недавно на глаза вот этот разворот из детской книжки «Энциклопедия профессора Фортрана» 1991-го года. На ней, как мы видим, высоколобый Новосельцев с указкой говорит, что справа закодирована фраза «ПРОЧИТАЙ ГЛАВУ "ЯЗЫКИ ПРОГРАММИРОВАНИЯ"».
Сразу бросается в глаза, что бинарные строки справа не восьмибитные, как мы все привыкли, а на бит короче. Ещё, при внимательном рассмотрении, в закодированных числах узнаются пробелы, у них код 32 или 0100000. Только первый почему-то на одиннадцатой позиции, а не на девятой, как в фразе на русском.
Всё это меня очень заинтересовало, я отложил себе эту картинку, а сегодня, по пути домой, разобрался в этих странностях.
Воспользовавшись программой для распознавания, я перевёл текст на картинке в буквы и цифры, вырезал оттуда закодированное и попробовал перегнать этот кусок в буквы. Получилась следующая строка: pro~itajte glawu "qzyki programmirowaniq".
Какой-то странный транслит, но что написано догадаться можно. Заодно стало понятно почему позиции пробела не совпадают — на самом деле закодировано не «прочитай», а «прочитайте».
Теперь осталось понять что это за кодировка. Не уверен, что я когда-либо в жизни сталкивался с КОИ-7, но название такое слышал. Предположил, что это она и не ошибся.
Латинские символы видно, потому что эта кодировка содержит в себе несколько наборов символов, которые надо переключать специальным кодом. Русские символы находятся в тех же позициях, что и латинские, а поскольку кодировка ЮТФ-8, который мы все пользуемся, совместима с латинским набором КОИ-7, мы видим не бинарный мусор, а какие-то буквы.
В конечном счёте, я написал небольшую программу на Перле, чтобы вывести строку на русском:
В конечном счёте текст выглядит так: ПРОЧИТАЙТЕ ГЛАВУ "ЯЗЫКИ ПРОГРАММИРОВАНИЯ". Лобастый Новосельцев немного нас обманывает.
https://bolknote.ru/all/v-kakoy-kodirovke/
Евгений Степанищев (RSS)
Попался мне недавно на глаза вот этот разворот из детской книжки «Энциклопедия профессора Фортрана» 1991-го года. На ней, как мы видим, высоколобый Новосельцев с указкой говорит, что справа закодирована фраза «ПРОЧИТАЙ ГЛАВУ "ЯЗЫКИ ПРОГРАММИРОВАНИЯ"».
Сразу бросается в глаза, что бинарные строки справа не восьмибитные, как мы все привыкли, а на бит короче. Ещё, при внимательном рассмотрении, в закодированных числах узнаются пробелы, у них код 32 или 0100000. Только первый почему-то на одиннадцатой позиции, а не на девятой, как в фразе на русском.
Всё это меня очень заинтересовало, я отложил себе эту картинку, а сегодня, по пути домой, разобрался в этих странностях.
Воспользовавшись программой для распознавания, я перевёл текст на картинке в буквы и цифры, вырезал оттуда закодированное и попробовал перегнать этот кусок в буквы. Получилась следующая строка: pro~itajte glawu "qzyki programmirowaniq".
Какой-то странный транслит, но что написано догадаться можно. Заодно стало понятно почему позиции пробела не совпадают — на самом деле закодировано не «прочитай», а «прочитайте».
Теперь осталось понять что это за кодировка. Не уверен, что я когда-либо в жизни сталкивался с КОИ-7, но название такое слышал. Предположил, что это она и не ошибся.
Латинские символы видно, потому что эта кодировка содержит в себе несколько наборов символов, которые надо переключать специальным кодом. Русские символы находятся в тех же позициях, что и латинские, а поскольку кодировка ЮТФ-8, который мы все пользуемся, совместима с латинским набором КОИ-7, мы видим не бинарный мусор, а какие-то буквы.
В конечном счёте, я написал небольшую программу на Перле, чтобы вывести строку на русском:
#!/usr/bin/perl
use Text::Iconv;
my @codes = qw(
1110000 1110010 1101111
1111110 1101001 1110100
1100001 1101010 1110100
1100101 0100000 1100111
1101100 1100001 1110111
1110101 0100000 0100010
1110001 1111010 1111001
1101011 1101001 0100000
1110000 1110010 1101111
1100111 1110010 1100001
1101101 1101101 1101001
1110010 1101111 1110111
1100001 1101110 1101001
1110001 0100010
);
$conv = Text::Iconv->new("KOI-7", "UTF-8");
# ПРОЧИТАЙТЕ ГЛАВУ "ЯЗЫКИ ПРОГРАММИРОВАНИЯ"
print $conv->convert(chr oct "0b$_") for @codes;
print "\n";Перл, конечно, малопопулярный язык, но тут вполне читаемый даже для тех, кто его не знает. Его я выбрал из-за лени — у него есть конструкция qw( ... ), которая позволяет создавать массивы из строк без кавычек и запятых, так что в него просто было удобно запихнуть такой текст, каким он получился после распознавания.В конечном счёте текст выглядит так: ПРОЧИТАЙТЕ ГЛАВУ "ЯЗЫКИ ПРОГРАММИРОВАНИЯ". Лобастый Новосельцев немного нас обманывает.
https://bolknote.ru/all/v-kakoy-kodirovke/
🔥1
Монета с Некрасова
Евгений Степанищев (RSS)
Ну и последняя находка с чердака дома на Некрасова.
Её я тоже, как и крестик, нашёл металлоискателем и сначала подумал, что это просто какой-то неинтересный металлический кружок, но свете фонарика разглядел еле угадывающийся рельеф.
Уже дома я понял, что это сильно потёртая серебряная монета и обработал её жидкостью для чистки серебра. После чего на ней проступил какой-никакой рисунок и я смог, постепенно просматривая серебро от Николая II и старше, её идентифицировать.
Оказалось, что это 10 копеек 1802-1805 годов, то есть монета времён Александра I. Судя по всему, её сильно чем-то тёрли — в диаметре она не изменилась, а вот в весе потеряла — в интернете пишут, что она должна быть 2,07 грамма, а у меня всего лишь 1,7, солидный недовес.
В углу фотографии я поместил пример того как она могла выглядеть то того, как потеряла часть своего веса.
https://bolknote.ru/all/moneta-s-nekrasova/
Евгений Степанищев (RSS)
Ну и последняя находка с чердака дома на Некрасова.
Её я тоже, как и крестик, нашёл металлоискателем и сначала подумал, что это просто какой-то неинтересный металлический кружок, но свете фонарика разглядел еле угадывающийся рельеф.
Уже дома я понял, что это сильно потёртая серебряная монета и обработал её жидкостью для чистки серебра. После чего на ней проступил какой-никакой рисунок и я смог, постепенно просматривая серебро от Николая II и старше, её идентифицировать.
Оказалось, что это 10 копеек 1802-1805 годов, то есть монета времён Александра I. Судя по всему, её сильно чем-то тёрли — в диаметре она не изменилась, а вот в весе потеряла — в интернете пишут, что она должна быть 2,07 грамма, а у меня всего лишь 1,7, солидный недовес.
В углу фотографии я поместил пример того как она могла выглядеть то того, как потеряла часть своего веса.
https://bolknote.ru/all/moneta-s-nekrasova/
Накрыло «Гопником-2»
Евгений Степанищев (RSS)
Что-то мой закрывшийся, было, гештальт опять открылся — думал, что меня этот старинный текстовый квест уже не интересует, ан нет, вчера что-то совершенно не спалось, я снова расчехлил игру «Гопник-2» и играл в неё до поздней ночи.
Пока играл, нашёл и поправил несколько незначительных багов, всё какая-то польза. Судя по всему, меня опять потихоньку засасывает эта игра, что даже неплохо, — руки чесались что-нибудь попрограммировать, но так, чтобы много времени на это не уходило. Правка небольших багов — самое оно.
Меня позвали на «стрелку» в игре «Гопник-2», если бы не шокер, я бы не выжил
https://bolknote.ru/all/nakrylo-gopnikom-2/
Евгений Степанищев (RSS)
Что-то мой закрывшийся, было, гештальт опять открылся — думал, что меня этот старинный текстовый квест уже не интересует, ан нет, вчера что-то совершенно не спалось, я снова расчехлил игру «Гопник-2» и играл в неё до поздней ночи.
Пока играл, нашёл и поправил несколько незначительных багов, всё какая-то польза. Судя по всему, меня опять потихоньку засасывает эта игра, что даже неплохо, — руки чесались что-нибудь попрограммировать, но так, чтобы много времени на это не уходило. Правка небольших багов — самое оно.
Меня позвали на «стрелку» в игре «Гопник-2», если бы не шокер, я бы не выжил
https://bolknote.ru/all/nakrylo-gopnikom-2/
Приехали «The Sensor Watch»
Евгений Степанищев (RSS)
Наконец завершилась эпопея с «The Sensor Watch» — это плата, превращающие оригинальные часы «Касио» в некое подобие смарт-часов. Для них можно будет писать программы и заливать вместе в прошивкой в часы. При этом органы управления и экран, а, при наличии прямых рук, ещё и динамик, остаются оригинальными.
Я для них уже написал свою первую программу — порт классической текстовой игры 1970-х «Охота на Вампуса», которая успешно заработала под эмулятором. Теперь жажду её запустить на настоящих часах.
Эту плату я пытаюсь заполучить с августа. Получилось только с третьей попытки, сегодня забрал. Два пересыльных сервиса их отправлять отказались из-за таможенных ограничений, пришлось покупать через знакомых. Сначала они приехали в Сербию, помариновались там какое-то время, оттуда попутным самолётом прилетели в Россию, в Москву, откуда доехали до меня службой доставки.
Купил сразу три штуки — одну себе, остальные заказали два моих друга.
https://bolknote.ru/all/priehali-the-sensor-watch/
Евгений Степанищев (RSS)
Наконец завершилась эпопея с «The Sensor Watch» — это плата, превращающие оригинальные часы «Касио» в некое подобие смарт-часов. Для них можно будет писать программы и заливать вместе в прошивкой в часы. При этом органы управления и экран, а, при наличии прямых рук, ещё и динамик, остаются оригинальными.
Я для них уже написал свою первую программу — порт классической текстовой игры 1970-х «Охота на Вампуса», которая успешно заработала под эмулятором. Теперь жажду её запустить на настоящих часах.
Эту плату я пытаюсь заполучить с августа. Получилось только с третьей попытки, сегодня забрал. Два пересыльных сервиса их отправлять отказались из-за таможенных ограничений, пришлось покупать через знакомых. Сначала они приехали в Сербию, помариновались там какое-то время, оттуда попутным самолётом прилетели в Россию, в Москву, откуда доехали до меня службой доставки.
Купил сразу три штуки — одну себе, остальные заказали два моих друга.
https://bolknote.ru/all/priehali-the-sensor-watch/
👍1
PVS-Studio и «Гопник-2»
Евгений Степанищев (RSS)
Много читал об инструменте статического анализ PVS-Studio — на «Хабре» постоянно выходят статьи с разбором ошибок, которые он помогает найти. Выглядит действительно очень здорово. Несмотря на неизбежные ложные срабатывания, находится много такого, что пропустил программист.
PVS-Studio — платный инструмент, но утром за завтраком мне стало интересно, нет ли там какой-нибудь триальной версии, чтобы можно было на практике познакомиться с тем как он настраивается и чем может быть полезным. Оказалось, что у него есть восьмидневная бесплатная лицензия и я решил глянуть что он сможет найти в коде «Гопника-2».
Нашлось несколько интересных ошибок. На скриншоте одна из них — как видно, str_enemy_amount проверяется два раза, тогда как после первого условия там гарантировано ноль. Очевидно автор этого куска кода его скопипастил, но забыл во втором куске исправить enemy на hero.
Я бегло посмотрел все ошибки, которые он мне выдал, надо будет внимательно посмотреть каждую, но как будто бы всё по делу, ноль ложных срабатываний.
https://bolknote.ru/all/pvs-studio-i-gopnik-2/
Евгений Степанищев (RSS)
Много читал об инструменте статического анализ PVS-Studio — на «Хабре» постоянно выходят статьи с разбором ошибок, которые он помогает найти. Выглядит действительно очень здорово. Несмотря на неизбежные ложные срабатывания, находится много такого, что пропустил программист.
PVS-Studio — платный инструмент, но утром за завтраком мне стало интересно, нет ли там какой-нибудь триальной версии, чтобы можно было на практике познакомиться с тем как он настраивается и чем может быть полезным. Оказалось, что у него есть восьмидневная бесплатная лицензия и я решил глянуть что он сможет найти в коде «Гопника-2».
Нашлось несколько интересных ошибок. На скриншоте одна из них — как видно, str_enemy_amount проверяется два раза, тогда как после первого условия там гарантировано ноль. Очевидно автор этого куска кода его скопипастил, но забыл во втором куске исправить enemy на hero.
Я бегло посмотрел все ошибки, которые он мне выдал, надо будет внимательно посмотреть каждую, но как будто бы всё по делу, ноль ложных срабатываний.
https://bolknote.ru/all/pvs-studio-i-gopnik-2/
Марковские цепи
Евгений Степанищев (RSS)
Сейчас время колоссального интереса к нейросетям, видимо поэтому меня не оставляет мысль вставить в игру «Гопник-2», которой я опять увлёкся, что-нибудь умеющее генерировать осмысленный текст. В идеале — чтобы это была сеточка, умеющая поддержать дискуссию с уместным использованием всех необходимых жаргонизмов в духе этой игры.
Но вставлять в игру, занимающую около мегабайта, любую, даже самую маленькую БЯМ (большую языковую модель) — странная идея. Размер возрастёт в десятки раз, а фана будет — чуть.
Поэтому я решил попробовать использовать марковские цепи. Марковская цепь — это, если очень упрощать, состояния и вероятности перехода между ними.
Засовываем в неё готовый осмысленный текст, цепь подсчитывает вероятности перехода между токенами (чаще всего это слова) и дальше её можно попросить продолжить произвольный текст на ту же тему.
У меня была идея скормить ей достаточное количество разговоров из книг «Слова пацана» и «Казанский феномен: миф и реальность», чтобы получать какой-то осмысленный диалог. К сожалению, лодка надежд разбилась о примитивность алгоритма.
Конечно, я посидел над этом идеей всего один вечер, но, кажется, качественного скачка не произойдёт, сколько не сиди. Удачные диалоги встречаются, но чаще всего видно, что модель мира там отсутствует полностью.
Зато, когда я скормил цепи тексты матерных загибов, получился довольно качественный генератор мата, правда с очень архаичным языком. Там среди отборного мата попадается упоминание небесного царя, архиереев и прочей религиозной атрибутики. Что неудивительно, конечно, — этим загибам не одна сотня лет.
Примеры приводить я не буду, мне как-то стыдно, но когда я их просматривал, то заметил, что марковские цепи из алгоритма можно и выкинуть — достаточно немного выправить текст, разбить его кусками по знакам препинания и подать в случайном порядке, результат будет не хуже.
Не знаю, продолжать ли заниматься этой идеей или нет. Пока не решил. В игре есть несколько багов, которые тянутся ещё из оригинального кода, можно было бы ими заняться.
https://bolknote.ru/all/markovskie-cepi/
Евгений Степанищев (RSS)
Сейчас время колоссального интереса к нейросетям, видимо поэтому меня не оставляет мысль вставить в игру «Гопник-2», которой я опять увлёкся, что-нибудь умеющее генерировать осмысленный текст. В идеале — чтобы это была сеточка, умеющая поддержать дискуссию с уместным использованием всех необходимых жаргонизмов в духе этой игры.
Но вставлять в игру, занимающую около мегабайта, любую, даже самую маленькую БЯМ (большую языковую модель) — странная идея. Размер возрастёт в десятки раз, а фана будет — чуть.
Поэтому я решил попробовать использовать марковские цепи. Марковская цепь — это, если очень упрощать, состояния и вероятности перехода между ними.
Засовываем в неё готовый осмысленный текст, цепь подсчитывает вероятности перехода между токенами (чаще всего это слова) и дальше её можно попросить продолжить произвольный текст на ту же тему.
У меня была идея скормить ей достаточное количество разговоров из книг «Слова пацана» и «Казанский феномен: миф и реальность», чтобы получать какой-то осмысленный диалог. К сожалению, лодка надежд разбилась о примитивность алгоритма.
Конечно, я посидел над этом идеей всего один вечер, но, кажется, качественного скачка не произойдёт, сколько не сиди. Удачные диалоги встречаются, но чаще всего видно, что модель мира там отсутствует полностью.
Зато, когда я скормил цепи тексты матерных загибов, получился довольно качественный генератор мата, правда с очень архаичным языком. Там среди отборного мата попадается упоминание небесного царя, архиереев и прочей религиозной атрибутики. Что неудивительно, конечно, — этим загибам не одна сотня лет.
Примеры приводить я не буду, мне как-то стыдно, но когда я их просматривал, то заметил, что марковские цепи из алгоритма можно и выкинуть — достаточно немного выправить текст, разбить его кусками по знакам препинания и подать в случайном порядке, результат будет не хуже.
Не знаю, продолжать ли заниматься этой идеей или нет. Пока не решил. В игре есть несколько багов, которые тянутся ещё из оригинального кода, можно было бы ими заняться.
https://bolknote.ru/all/markovskie-cepi/
😁1
Собираю «The Sensor Watch»
Евгений Степанищев (RSS)
Ну что, погнали? Что-то со вчерашнего вечера жутко болит голова. Попробую себя чем-нибудь отвлечь, например, вставлю платку «The Sensor Watch», которая так долго ко мне ехала, в часы-донор.
Там есть очень мелкие детали, обидно осознавать, что моё, когда-то идеальное зрение, начинает подводить, но надеюсь справиться. На крайний случай, у меня есть нумизматическая лупа.
https://bolknote.ru/all/sobirayu-the-sensor-watch/
Евгений Степанищев (RSS)
Ну что, погнали? Что-то со вчерашнего вечера жутко болит голова. Попробую себя чем-нибудь отвлечь, например, вставлю платку «The Sensor Watch», которая так долго ко мне ехала, в часы-донор.
Там есть очень мелкие детали, обидно осознавать, что моё, когда-то идеальное зрение, начинает подводить, но надеюсь справиться. На крайний случай, у меня есть нумизматическая лупа.
https://bolknote.ru/all/sobirayu-the-sensor-watch/
👍1
Поставил свою игру на часы
Евгений Степанищев (RSS)
С процессом заливки своей игры на мои новые кастомные «Касио» разобрался. Процесс несложный.
Если у вас, как у меня, «Мак», скачиваем специальный компилятор, переходим по инструкции в нужный каталог той прошивки, куда добавлена игра, и запускаем команду make COLOR=RED. RED — потому что платы есть разных версий, у меня именно «красная».
Потом разбираем часы, вынимаем плату и подключаем её к компьютеру через шнурок микро-USB-B. У меня такой нашёлся, но пришлось втыкать в переходник — на другом конце у него USB-A, а таких разъёмов на моём «Макбуке» не водится.
В момент подключения на платке должен мигнуть красный светодиод, если не мигнул, значит шнурок вставлен в плату не той стороной.
Если всё правильно подключили, то на той стороне, где светодиод, надо найти крошечную кнопку RESET и нажать на неё дважды. Если вы сделали это достаточно быстро, то светодиод загорится красным, а на компьютере появится новый диск с названием WATCHBOOT, на него надо перекинуть новую прошивку.
Она перепишется достаточно быстро, после чего светодиод погаснет, а диск отключится.
Попробовал поиграть, обнаружились недостатки — значения мигают слишком медленно, надо найти способ увеличить скорость мигания, иначе некомфортно, буду смотреть как это сделать.
https://bolknote.ru/all/postavil-svoyu-igru-na-chasy/
Евгений Степанищев (RSS)
С процессом заливки своей игры на мои новые кастомные «Касио» разобрался. Процесс несложный.
Если у вас, как у меня, «Мак», скачиваем специальный компилятор, переходим по инструкции в нужный каталог той прошивки, куда добавлена игра, и запускаем команду make COLOR=RED. RED — потому что платы есть разных версий, у меня именно «красная».
Потом разбираем часы, вынимаем плату и подключаем её к компьютеру через шнурок микро-USB-B. У меня такой нашёлся, но пришлось втыкать в переходник — на другом конце у него USB-A, а таких разъёмов на моём «Макбуке» не водится.
В момент подключения на платке должен мигнуть красный светодиод, если не мигнул, значит шнурок вставлен в плату не той стороной.
Если всё правильно подключили, то на той стороне, где светодиод, надо найти крошечную кнопку RESET и нажать на неё дважды. Если вы сделали это достаточно быстро, то светодиод загорится красным, а на компьютере появится новый диск с названием WATCHBOOT, на него надо перекинуть новую прошивку.
Она перепишется достаточно быстро, после чего светодиод погаснет, а диск отключится.
Попробовал поиграть, обнаружились недостатки — значения мигают слишком медленно, надо найти способ увеличить скорость мигания, иначе некомфортно, буду смотреть как это сделать.
https://bolknote.ru/all/postavil-svoyu-igru-na-chasy/
🔥1
Исследование странного кругляка
Евгений Степанищев (RSS)
В мае мы с моим другом ездили в небольшой сельский музей, где, среди прочего, подержали в руке странный кругляк невыясненного назначения. Я обещал себе и читателям, что обязательно туда вернусь и попробую снять характеристики этого артефакта, чтобы лучше понять что бы это могло быть.
Сегодня мы туда опять съездили и спешу сообщить что удалось выяснить.
Масса объекта — около 96 грамм. Я взял с собой аптечные весы, но у их предел — 50 грамм, поэтому мне пришлось воспользоваться музейными весами и гирьками.
Диаметр — около 49,8 мм, а толщина — около 5,74 мм. Отсюда можно вычислить примерный объём — 11,18047794 cм³ и плотность — 8,5 см³/г, что соответствует плотности латуни.
Думаю, что кругляк сделан из меди и чем-то покрыт. Вообще, мы сделали трёхмерный скан, попробуем определить объём по нему. Когда будет готова модель, думаю объём станет чуть меньше моих прикидок и плотность станет как у меди.
https://bolknote.ru/all/issledovanie-strannogo-kruglyaka/
Евгений Степанищев (RSS)
В мае мы с моим другом ездили в небольшой сельский музей, где, среди прочего, подержали в руке странный кругляк невыясненного назначения. Я обещал себе и читателям, что обязательно туда вернусь и попробую снять характеристики этого артефакта, чтобы лучше понять что бы это могло быть.
Сегодня мы туда опять съездили и спешу сообщить что удалось выяснить.
Масса объекта — около 96 грамм. Я взял с собой аптечные весы, но у их предел — 50 грамм, поэтому мне пришлось воспользоваться музейными весами и гирьками.
Диаметр — около 49,8 мм, а толщина — около 5,74 мм. Отсюда можно вычислить примерный объём — 11,18047794 cм³ и плотность — 8,5 см³/г, что соответствует плотности латуни.
Думаю, что кругляк сделан из меди и чем-то покрыт. Вообще, мы сделали трёхмерный скан, попробуем определить объём по нему. Когда будет готова модель, думаю объём станет чуть меньше моих прикидок и плотность станет как у меди.
https://bolknote.ru/all/issledovanie-strannogo-kruglyaka/