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

25 янв 2023 Ср Смог ли бы записать длинное видео

Все время думаю про то, смог бы создать что-то вроде очень длинного видео на несколько часов, где разрабатывал бы какой-то проект. Постоянно думаю, и в общем-то, понимаю, что нет, для этого надо конское терпение, ослиное упрямство и отвагу льва, которых нет. У меня ничего нет из вышеперечисленного. Так что хотел бы сделать? Самое интересное, мне уже ничего делать не хочется. Слишком большая усталость от всего и слишком огромный страх. Да и никто такое смотреть точно не будет, даже сам не буду смотреть.
Когда-то хотел сделать трехмерный ускоритель на верилоге, но какой в этом смысл, не понимаю. Есть видеокарты, работают в миллион раз быстрей, чем работало бы что-то на плис. Нет никакого смысла в том, чтобы все это делать, ведь делать придется просто колоссально много и еще для видеокарт требуется просто колоссального размера памяти, как на видеобуфер, так и на текстуры. Ничего из этого мне задействовать не хочется, потому что, если даже и создам такой код, он будет предназначен только для очень больших плис, что совершенно несовместимо. Короче, что-то делать на верилоге полностью бессмысленно, потому что повторяемость этого около-нулевая, вот так вот.
В последнее время, вообще не вижу ни в чем смысла. На верилоге уже не программировал почти месяц, потому что не знаю, что мне программировать на нём такое, что было бы интересно. Заметил, что чем больше микросхема и чем больше в ней логических элементов, тем меньше мне хочется ее программировать. Что за беда такая. Помню времена, когда у меня был только Марсоход2 и для него кодил день и ночь. Столько времени... все бессмысленно. Нет никакого толка в том, что делаю. facepalm
Сейчас изучаю лишь только некоторые алгоритмы. Вчера снова открыл по нейросетям материал и не понял опять его. Нейросети это очень сложная тема, но преодолимая, надо разобраться в том, как устроен этот математический аппарат, зафиксировать его на сайте, обязательно написать статью. Не знаю, насколько это позже, не знаю, смогу ли вообще что-то записать, ведь будущее туманно, не могу даже знать, что будет через день или два, не говоря о более длительном периоде.
Все бессмысленно, ничего не имеет значения, ничего не надо.

24 янв 2023 Вт Заинтересовался алгоритмами

Заметил, что в последнее время заинтересовался алгоритмами. Недавно писал статью по ханойским башням, а вчера полностью смог разобраться с алгоритмом пирамидальной сортировки. Как же удивительно то, каким образом у меня все так получается. Четко помню, как в 9-м классе мне пытались объяснить этот алгоритм и то, как его абсолютно не понял. И потом не понял, и спустя 10 лет не понял, и спустя 15 лет не понял, и вот понял только вчера, причем, как же это оказалось просто!
Как же так? Почему то, что ранее не мог разобраться в чем-то десятилетиями, дается так легко сейчас? Что изменилось? Говорят, с возрастом все только хуже становится, но похоже, это не всегда так. Лет 10 назад не мог разобраться ни в чем, а сейчас все даётся пока что довольно легко. Ушел ли у меня страх? Нет, он только добавился и с каждым разом добавляется все больше.
Опишу вкратце, в чем суть алгоритма сортировки пирамидой. Сначала надо построить пирамиду, чтобы самый верхний элемент был самым большим, и два дочерних элементах были либо меньше, либо равны верхнему. И так должно быть для каждого элемента. Для того, чтобы это сделать, первоначально надо привести пирамиду в такой вид. Как это сделать — я тут описывать не буду, но сделать это можно довольно просто.
Так вот, когда наверху самый большой элемент, это и хорошо. То есть, сверху пирамиды всегда будет самый большой элемент, абсолютно всегда, потому что мы это ранее сделали. Теперь же надо убрать этот большой элемент, записать в конец пирамиды снизу, а из конца же пирамиды вытащить другой элемент и поставить в корень. Количество элементов в пирамиде уменьшается на 1. Теперь элемент, который поставили в корень, опускаем вниз так, чтобы он был на своем месте. Это делается за log(n) шагов, то есть, за то количество шагов, какая высота у пирамиды. Если у пирамиды 128 элементов, например, то высота ее 7 слоев. Значит, чтобы привести в порядок пирамиду после перестановки, надо сделать 7 обменов (максимум).
После этого, в корне опять появится самый большой элемент из оставшихся данных. Снова относим в конец (в данном случае на предпоследний элемент бывшей пирамиды), и повторяем до тех пор, пока не остается 1 элемент — это корень. Алгоритм заканчивается.
Ясное дело, что на словах ничего неясно, но я буду статью писать про этот метод сортировки. Однако, это классно, что получилось в этом разобраться. Вообще-то, хотел этот метод сортировки применить для задачи трехмерного рендеринга на ПЛИС, но так не уверен, что дойду вообще до этой задачи. Она не такая сложная, просто надо очень много делать и мне ужасно лень.

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