Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet

23 янв 2023 Пн Мои дневники

Свои дневники я стал писать еще с очень давних времен, даже вот помню, первый свой сон записал где-то в возрасте 8-9 лет, это была красная ручка (писчая, а не от двери). На протяжении всей жизни пытался записать в дневники, не периодически конечно, все что со мной было, и я могу сказать, что это не зря все. Нет, я не говорю про "Эффект Бабочки", где человек попадал в свое прошлое и менял его, этот фильм мне вообще не нравится. Я говорю только о том, что мне нравится читать свои старые дневниковые записи и прикасаться к своему прошлому.
Вчера я открыл свои старые записи за 2017 год, да и даже за 2012, на самом деле, и могу сказать одно. Ныть и страдать я никогда не переставал, причем что сейчас, что 5 лет назад я занимаюсь все теми же вещами, что занимался, писал процессоры, причем те же самые — avr, 6502, z80, x86. У меня одинаковый ассортимент каждый день. Никакого нового процессора что-то делать мне не хочется. Да и вообще, пока что ничего не хочется делать на верилоге в данный момент, устал и лениво.
Так что, мне нравится вести дневники, чем я в данный момент вообще-то, и занимаюсь, я пишу дневник прямо сейчас и знаю, что через какое-то время буду с удовольствием читать эти записи и вспоминать свое прошлое, даже недавнее. Вот вчера, к примеру, написал статью по алгоритму решения ханойских башен, было весело и классно, поскольку задача то сложная, но легко решается с помощью очень простого рекурсивного алгоритма.
Думаю, что помимо всяких интересных вещей, сюда, в этот блог, я буду писать еще и просто свои дневниковые записи. Может быть, я даже сделаю отдельную секцию, посвященную именно дневнику. Почему бы и нет? У меня на сайте есть теги, теперь бы сделать так, чтобы добавлять картинки невозбранно, то есть, прямо отсюда, с редактора записей.
Могу сказать вот еще что. Каждый день мне дается с трудом, и это факт. Читая свои дневники, я мало вижу в них каких-то особенных достижений, ощущение такое, что делаю я все неохотно, с большим трудом и это очень меня расстраивает. Мне хочется достижений, еще вот заметил, что часто ловлю себя на мысли, что думаю о том, кто и как прочтет мой блог, что об этом подумает. Так не надо, надо всегда делать для себя в первую очередь, чтобы самому было интересно.
Еще хочется порассказывать различных истории. Пожалуй, я скопирую несколько истории из своего ЖЖ, который я ранее делал, ничего в этом не будет страшного, тем более на этом сайте еще сделал так, чтобы гугл не читал мой блог и не смог никто найти мои записи. Они же все равно не несут никакой ценности для других. Только для меня.
Теги: Дневник

22 янв 2023 Вс Вчера получил книгу FoxPro2

Наконец-то мне пришла книжка "Программирование в среде СУБД FoxPro 2.0" 1994-го года издания, автор А.А.Попов. Не столько сами книга интересна, как ее история, которую я уже ранее рассказывал и повторять не буду сейчас. Эта книга прямо один к одному выглядит как та книга, которая была. Это и есть та самая книга, утерянная в глубинах прошлого тысячелетия.
Я смог прочитать аж 4 страницы, на чем мое знакомство с книгой пока что и завершилось, потому что я не выдержал и поставил среду Fox Pro 2.0 себе на жесткий диск в эмуляторе PCem и это круто. Выбрал 286 компьютер, 8 мегагерц и погрузился в ностальгические воспоминания о забытом, но прекрасном прошлом.
foxpro.png
Меня удивило то, как выглядит эта среда. Там есть даже мини-игры. Самое интересное в том, что именно такую среду я и пытался всю свою жизнь сделать, и я думаю, что на подсознательном уровне я запомнил и сам фокс-про, и вообще, Фокс, ведь теперь я давно уже выбрал себе имя Лис, к которому привык. Это прямо удивительно, как все получается.
Наверное, я потихоньку буду изучать этот продукт, хотя он и безнадежно устарел и никуда не годится. Но все же, хочется прикоснуться к прошлому.
Теги: Новости

21 янв 2023 Сб Компьютер на транзисторах

Как много я говорил об этом уже и не перестану говорить, наверное, никогда — это про детство, о моих детских мечтах, желаниях, которые частично исполнились, но некоторые нет, и, наверное, никогда не сбудутся. Дело в том, что когда у меня не было компа, я мечтал о нем, пытался сделать каким-то образом. Помню, как делал что-то вроде электронной викторины, когда лампочка загоралась при нажатии на фольгу, как это доставляло мне радость, такая простейшая вещь, просто лампочка, батарейка и куча фольги и картона с клеем, кстати, именно лампочка, а не светодиод. Это вроде такой небольшой миниатюрной лампы из машины для подсветки.
Ранее я уже рассказывал о том, как кое-кто из моего прошлого сказал, что создал собственный процессор на транзисторах, как я десятилетия пытался разобраться в принципе работы транзисторов и как разобрался. Смогу ли я сделать процессор сейчас, понимая то, как работает транзистор?
Ответ: нет, это невозможно. Создать полноценный компьютер только лишь из одних транзисторов — дело реальное, но крайне затратное и бессмысленное. Такой процессор будет потреблять много тока, делать мало и занимать огромную площадь, при этом легко может и ломаться где-нибудь.
megaprocessor-panorama.jpg
Рис 1. Вот так выглядит уже созданный Megaprocessor
Но что, если не делать сложный компьютер? Что если ограничиться сотней транзисторов и на этом успокоиться? Ведь именно в детстве мне не нужен был сложный комп, мне нужен было именно свой, сделанный своими руками. То есть, на самом деле, мне достаточно одного лишь сумматора с несколькими триггерами. Сделать такой процессор не так и сложно на транзисторах. Проблема в том, что, помимо транзисторов, требуется еще и огромное количество резисторов, даже больше, чем самих транзисторов. Мало того, можно сделать еще и навесным монтажом, ведь в детстве у меня не было ничего, кроме папиного паяльника. Управляться с ним я не умел, но все же... для начала, можно сделать просто обычный полный сумматор. Для него потребуется 18 транзисторов (2 XOR + 1 NAND). Резисторов потребуется примерно столько же, я как-то не считал еще.
Можно пока что собрать на макетной плате такой сумматор, тоже, между прочим, один из вариантов. Только такая сборка будет не зафиксированной. У меня есть печатные макетные платы, туда можно как раз и сделать. Сделать хотя бы один сумматор. Это уже будет для меня достижение.

20 янв 2023 Пт Подключить Wifi к своему процессору

Давно я уже думал о таком. У меня очень много, на самом деле, wifi модулей, которые я никак не использовал еще, не изучал, и мне вчера пришла одна интересная мысль. Вот я сделал собственный процессор и компьютер, так. Но есть проблема — я не знаю, что делать на нем. Реально, не вижу цели, смысла развивать этот компьютер. Очень часто говорю о том, а зачем оно мне все надо, когда есть реально все то же самое, только лучше, на моем основном компе?
Мысль заключается в том, чтобы провести стрим со своего компьютера. Да, все так, именно со своего компьютера. Это было бы невероятно. Во-первых, чтобы это сделать, необходим доступ в интернет, а это реально через Wifi модуль. Еще для этого мне потребуется сделать на сайте такой код, который бы принимал данные от моего процессора и переводил бы их в экранное видео. Не знаю, можно ли подключить микрофон к собственному компьютеру, передача голоса была бы достаточно сложным делом в том смысле, что придется передавать огромный объем данных...
Как же было бы классно, если бы мне и правда удалось сделать самодостаточный компьютер, с которого можно было бы стримить. Да, на ютуб бы не удалось, ведь для этого надо передавать видеопоток, на что мой слабый процессор не был бы способен, да и к тому же, мне потребовалось бы как-то сжимать данные, а я и алгоритмов не знаю, и такое дело сложно скомпилить на ограниченном ресурсе. Ведь 128кб памяти не так и много.
Насчет wifi-модуля, я пытался как-то его понять, даже пытался сделать что-то на отладочной плате DE0, но дело особо не пошло у меня. Для этого мне нужно и время, и мотивация, которой у меня почти нет.
Еще вчера я смог доделать сжатие музыки и выгрузку в файл .wah, но это уже мелочи. Теперь бы распаковщик сделать.
Теги: Идея

19 янв 2023 Чт Моя первая крупная программа

Время написания истории из жизни продолжается и потому я расскажу о том, как я писал свой Norton в 11 лет. Как я рассказывал в прошлом, у меня приключился компьютер в 5 лет. Одними из самых запомнившихся моментов были это как папа играет в Prince of Persia, как он рисовал кота и то, как я через Norton Commander сломал компьютер, а точнее, протер один из системных файлов до нерабочего состояния.
Дело было вот как. Сидели мы с братом за включенным компом (видимо, мы сами его включили), и хотели поиграть в Принца Персии. Собственно, поиграть то мы смогли, а потом я включил режим очень умного и прошаренного сверх-программиста и попытался повторить то, что делал папа, то есть, копался в Norton Commander и в прямом смысле тыкал случайные (рандомные) клавиши. Все было ничего, если бы не то, что внезапно выключился свет. Не помню, это было днем или вечером. Следующее что я помню это то как мы сидим в темной комнате и страдаем. К папе приехал его знакомый программист и стал там чинить что-то через дискету. Я чувствовал себя виноватым в этой истории. Ах да, заговорился совсем. Через год нашего компа не стало. cray Мы уехали с квартиры и компа больше не было. Вот такие дела.
Спустя несколько лет мне попалась книжка "128 советов начинающему программисту" (кстати, у меня она снова есть), и я заново открыл для себя мир компьютеров и программирования. Помню, много каких еще книг было, которые я прочел, но книга "128 советов" оказалась очень интересной, там были веселые картинки и программы. Да, я припоминаю, что читал еще и другую книгу, справочник по языку Бейсик, где и научился кодить. Мне было тогда 9 лет.
Почти 1.5-2 года я совершенствовался в создании программ на Бейсике. Однажды, призадумавшись о том, смогу ли я написать особую программу под названием Noron Commander, я приступил к делу. У меня была ручка и огромный плакат карты покрытия МТС для города Москвы в 1999 году. Глаза мои горели, я программировал... на бумаге. Да, это все так. Мало того, что я писал на обратной стороне плаката МТС, так еще и света особо не было по вечерам, приходилось сидеть при свечах иногда, так еще и компа не было. Какой там комп. Окна в комнату разбиты, на улице холод собачий, в комнате есть только камин, чтобы согреться, а от здания, где мы тогда жили, веяло страшным ужасом. Когда я вспоминаю об этом времени, мне думается о том, как я тогда вообще выжил.
Да, я опять отвлекся, воспоминания... они такие. Почему я писал эту программу? Просто суть в том, что тогда, в то непростое время, у меня была возможность ходить в компьютерный кружок и прикасаться к священному компьютеру. В кружке были разные компьютеры, такие как ZX Spectrum 128K, УКНЦ, мажорные 286 и еще какие-то. Мне так нравилось там быть, ведь я мог делать то, что я любил и люблю сейчас — программировать!
Была только одна незадача. На 286 был Norton Commander, а на УКНЦ, где я сидел иногда, Нортона не было. Я захотел его написать. Но как? Компьютер мне давался максимум на час примерно, так что пришлось делать то, что я делал — писать на обратной стороне плаката, неизвестно откуда у меня взявшегося.
Эту программу и сам плакат я берегу до сих пор. Это — единственная такая вещь, оставшаяся с моего непростого прошлого. Саму же программу и даже попытку ее реализации я разместил у себя на сайте уже достаточно давно. Как известно, написанное в 11 лет без всяческой отладки, работать не будет. Но я не стал ничего исправлять, ведь это такое ретро. Уже 24 года прошло с того момента.
А я все помню.

18 янв 2023 Ср Вчера сделал код сжатия музыки

Оказалось, это не так и сложно, если тщательно все продумать. Код получился очень даже небольшим, где-то на 200 строк всего лишь. Для сжатия я использовал код Хаффмана, который уже давно изучал, но никак не мог реализовать его в виде программы на C/C++ и вот у меня получилось это сделать. Вчера сделал на Си, а сегодня переписал на использование классов, поскольку это удобнее получается намного. Код, правда, еще не доделан и ему достаточно далеко до завершения. Нужно придумать как хранить файл.
Например, я могу формировать файл .wah, в котором будут следующие поля:
  • Частота дискретизации (1 байт)
  • Стартовый байт
  • 512 байт для воссоздания дерева Хаффмана
  • Весь оставшийся код
Хранить данные для дерева довольно просто. Первые 256 байт всегда будут указывать на родительский элемент 256 + n, где n=0..254 (родительских элементов может быть максимум 255), а код номер 255 будет означать, что этот символ пустой. Причем, кстати интересно, если указывать родителя, то в заданной таблице всегда будет левая и правая часть (0 и 1). Слева будет потомок 0, справа — потомок 1. Это очень важно, поскольку именно так кодируется дерево.
Для остальных 256 все точно так же, в том числе порядок потомков. Если к примеру, из диапазона первых 256 указывает на родителя 5, и из диапазона 512 тоже на родителя 5, то первый будет потомок ветки 0, второй — ветки 1. Таким образом, можно закодировать все дерево через 512 байт. Но это, конечно же, надо проверить. Надеюсь, у меня получится.
Да, еще вчера все же заказал книгу по FoxPro 2.0 с Озона. Хорошо бы, если она у меня была. Может, я даже ее частично прочту.
Теги: Алгоритмы

17 янв 2023 Вт Моя первая программа

Когда я был совсем еще небольшим, примерно ростом чуть ниже метра или около того, к нам домой заявился Его Величество Компьютер 286. И Нортон. Коммандер, конечно же. Из всего, что я помню до этого знаменательного периода, это то, что моя жизнь представляла из себя сплошную тоску, в которой... так, постойте, это получается, что я всю жизнь страдаю?!.. scratch1
Ладно, опустим детали прозрения на пустом месте и продолжим рассказ. Так вот, привезли этот чудо-агрегат и водрузили его на свое место — на стол, естественно. И вот, стоит он себе на столе, чарует взор. На нем папа пишет программы, изучает его, что-то делает, и мне крайне любопытно все, что связано с этим. Мне тоже интересно было, как это все делается. Там еще был матричный принтер, который производил очень громкий звук печати и выводил различные интересные картинки. Например, там была программа "Плакат", от вида которой у меня начинает неистово сводить олдскулы. Папа любил написать что-нибудь там и распечатать на черно-белом принтере.
Конечно же, меня было не оторвать от зрелища чудесной машины, где либо на GW Basic или в FoxPro делались какие-то программы. Помню эту очаровательную книгу по FoxPro 2.0 (обратите внимание на слово Fox). Я помню, что у меня эта книга все лежала, лежала потом, да куда-то исчезла. Печально. Надеюсь, я смогу ее вернуть как-нибудь.
Особенно меня впечатлила программа, где папа с помощью Бейсика нарисовал кошку на крыше. И мне захотелось сделать то же самое! Но я долго не мог сделать тоже самое, да и сейчас пока что не могу, потому что я не особо помню, как выглядела картинка. Однако, я попробую это сделать в будущем.
Помню, что у папы был блокнот, который он мне подарил после того, как я написал там свою первую программу вот в таком роде:
110 LET 5=A
220 PRINT A
Даже от такого небольшого количества программ я в свои 5 лет был счастлив. Долго сомневался, правильно ли я написал LET, и выбрал ошибочный вариант. Как обычно, блокнота у меня этого не сохранилось, но что поделать. Все ушло в прошлое, жаль конечно.
У меня есть еще несколько интересных истории по поводу того, что было со мной в детстве, но я их отложу на следующие посты. Наверное, я смогу рассказать их все, ведь истории ограничены. Пусть будет дневник моей жизни запечатлён здесь, на страницах моего сайта. Ведь зачем я создавал сайт? Не только чтобы писать статьи, но и делиться своей жизнью, своим прошлым и настоящим. Так что, все правильно.

16 янв 2023 Пн Про алгоритм Хаффмана

Уже не помню, когда и как я впервые услышал про этот алгоритм, но как и обычно, это было очень давно и выдумка. Обычно я сначала узнаю о чем-то, а через год, два или даже десять лет изучаю этот вопрос и реализовываю. Так же произошло и с кодом Хаффмана. Как и обычно, я сразу не смог его понять, мне показался он чересчур сложным и потому просто не стал изучать, да и всё. Впервые серьезно пытался его разобрать я после того, как однажды мы как-то зашли в магазин и купили там книгу по распродаже, она называлась что-то вроде "алгоритмы изображений", я уже реально не помню как, а книгу я эту читал очень поверхностно.
В этой книге тоже был описан алгоритм кода Хаффмана, но я его опять не понял, хоть и пытался. Но не понял. Там в этой книге, помимо Хаффмана, еще были и gif, и png, и jpg — все основные картинки в интернете. Не спорю, книга хорошая, но я не умею читать книги, просто не могу, не получается. Мне подходят различные короткие статьи с интернета, а не книги. С последних толка никакого.
Окончательно я с этим алгоритмом смог разобраться только в прошлом году. При помощи страшных мучений примитивного мозга, преодоление препятствия было выполнено, и у меня получилось даже написать алгоритм как на PHP (Pre Historic Programming, в переводе как До Историческое Программирование - ДИП), так и на Си, который является языком, на котором программируют сейчас абсолютно все и который является языком для мажоров. Ладно, я опять отступил от темы, как обычно. biggrin
Этот алгоритм Хаффмана интересен тем, что он работает только для алфавита из фиксированного количества символов, при этом необходимо, чтобы частота встречи каждого символа очень сильно различалась, чтобы каким-то образом попытаться сжать эти данные. Эффект кода Хаффмана заключается в том, чтобы сжимать более часто встречающиеся символы более короткими кодами и это факт. Этот алгоритм очень распространен, используясь везде где можно и где не можно. Да, кстати, насчет этого...
Мне пришла мысль, а что если кодировать музыку через Хаффмана? Степень сжатия, конечно, не всегда может быть, но вот как кодировать музыку? Самая первая мысль, которая у меня была, это взять все семплы, подсчитать их частотность и закодировать. Но эта мысль оказалась ошибочной, сжатия почти не было, какие-то жалкие проценты. И тут я подумал о втором варианте — кодировать не сами семплы, а разницу между ними. Вот здесь все получилось гораздо успешнее!
Для этого я написал алгоритм по-быстрому, чтобы проверить догадку. Действительно, сжатие удается до 44% примерно для аудиотрека, что чуть больше чем в 2 раза. Для очень хороших случаев сжимать получается и до 15%, но это в хороших случаях, а вообще, кодом Хаффмана более чем в 8 раз не получится сжать, потому что минимальный код — это 1 бит, который бы кодировал 8 бит.
Я не придумывал какой-то собственный формат, но мне было реально интересно, что получится и получится ли сжатие, и у меня получилось. На данный момент у меня нет реализации формата этого файла для сжатия, так что думаю, что надо будет над этим подумать, и попробовать сделать. Как обычно, через пару месяцев или через пару лет, по традиции. Кто здесь главный слоупок? Я, конечно! facepalm

15 янв 2023 Вс Странные мечты

Моя жизнь связана с кодом и программированием, а также с компьютерами. Всю свою жизнь я мечтал разработать собственный компьютер и создать для него собственную ОС. Однако, есть проблема, которую все время озвучиваю, над которой постоянно бьюсь: почему мне это надо, и если я сделаю, то что от этого мне будет? Это очень сложный вопрос, на который у меня нет никакого ответа. Так трудно разобраться в себе.
С одной стороны, сделать что-то собственное — это было бы так классно, просто, меня сейчас устраивает и то что есть в данный момент. Есть хороший компьютер, много жестких дисков на большое количество терабайт, так зачем мне делать собственный слабомощный компьютер, если все это есть уже.
Недавно, я подумал о следующем. Могу предположить, что дело в том, что я однажды утратил. Это свежий взгляд на вещи, когда я радовался и умел радоваться даже простой программе, когда изучал чего-то новое. Очень не хватает того волшебства первооткрывателя, которое было в детстве. Мне бы так хотелось научиться писать такой код, который бы меня радовал. Теперь все кажется пресным и неинтересным. От многого я устал... но пожалуй, не буду много писать об этом здесь.
Лучше посвятить этот блог хорошим новостям и разработке кода.
Теги: Нытье

15 янв 2023 Вс Статья про код Хэмминга

Как же давно я хотел написать эту статью по этим кодам, и вот день этот настал и я смог затащить эту изи-катку, как выражаются CS:GO-еры. Интерес к этому коду у меня возник еще тогда, когда я обнаружил, что SDRAM-память для Марсохода2 у меня жестко сбоит и совершает непоправимые ошибки. Видимо, память битая оказалась, что очень плохо. Тогда я стал искать, как это исправить и наткнулся на статью о том, что существует волшебный метод, как исправить единичные ошибки в сообщении. И это оказался код Хэмминга.
Сначала я пытался его понять, но у меня не получилось разобраться в самой сути. Я читал в разных источниках, но не находил простого объяснения, как именно это дело работает. И вот вчера как говорится, психанул и начал искать. Вначале сам прикинул, как это может работать, а потом прочел прекрасную статью от хабраюзера и на меня прямо снизошло Знание!
Сообщениеr0r10r2123r34567
Бит №123456789101112
Бит #0xxxxxx
Бит #1xxxxxx
Бит #2xxxxx
Бит #3xxxxx

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