Перейти к содержимому

Fingercomp's Playground

  • записей
    87
  • комментария
    452
  • просмотров
    508 219

Об этом блоге

Прогрызаемся наружу.

 

Разбираю Lua, OpenOS и OpenComputers. Изредка пишу о всяком.

Приглашаю в IRC (#cc.ru @ irc.esper.net) или мост в дискорде. Там задают вопросы и получают ответы. А ещё страдают фигнёй — её читать необязательно.

Записи в этом блоге

 

Sound Card / спектр, преобразование Фурье, PCM и WAV

В звуковой карточке есть дохрена функционала - поэтому она и крутая. В этой части попытаюсь объяснить достаточно сложные штуки, которые используют большие дяди. Надеюсь, что вы прочитали и поняли две предыдущие части цикла - это будет довольно важно для последующего повествования. [Раньше тут был полноценный пост с эмбедом, но после переезда оно всё, соответственно, сломалось. Текст доступен здесь.]

Fingercomp

Fingercomp

 

Sound card / звуковые волны, модуляция

Продолжаю рассказывать про Computronics и, в частности, про офигенную звуковую карточку из этого мода. На очереди модуляция: частотная и амплитудная. Помимо этого восполняю долг по основам.   Юзать будем мою прогу synth, которую я недавно зарелизил. Она здесь невероятно поможет.   Звуковая волна Вы же знаете, как выглядит звуковая волна?     Вот, например, синусоида. Как видно, здесь есть некоторый фрагмент, который повторяется несколько раз. Частота показывает, сколько раз в сек

Fingercomp

Fingercomp

 

Что изменилось в Computronics с прошлых обзоров

Вкратце проедемся про изменениям с невероятно старой версии 1.5.5 до самой новой, 1.6.3.   1.5.6 / 2015-07-24 Большинство блоков из мода можно покрасить, тыкнув по ним красителем. Интеграция с модом Flamingo (самая нужная фича, конечно): через компы можно заставлять фламинго качаться. Интеграция с Armourer's Workshop. Улучшен улучшенный шифратор. Ключи быстрее генерируются. 1.5.7 / 2015-09-12 Разноцветный апгрейд добавлен, который делает роботов разноцветными. Можно вызвать compo

Fingercomp

Fingercomp

 

Sound Card / как сгенерировать простой звук

Перед тем, как я начну, хочу сразу обратиться к забугорным ребятам, читающим эту запись.   Hey! If you are reading this, please tell Vexatos to document the sound card. The in-game manual page is a meaningless piece of text that explains nothing. Documentation is written to help others to get an idea of how something works. The sound card is a complex thing that definitely needs a how-to guide to be used in programs. So if he wants the sound card to be used in programs, he should w

Fingercomp

Fingercomp

 

Палитры OpenComputers

Немногие знают, как работают палитры в OpenComputers. Расскажу здесь, как избавиться от необходимости прописывать гектары цветов в палитре, покажу, как упаковываются цвета в OpenComputers и дам пару алгоритмов для работы с индексами.   Сразу условимся, что индексы палитр у нас будут начинаться с нуля.   На каждой из трёх уровней видеокарт и мониторов своя поддерживаемая палитра цветов. Будем двигаться снизу вверх. Первый уровень Палитра состоит из двух цветов: чёрно

Fingercomp

Fingercomp

 

Что такое IRC

Сегодня нашему каналу в IRC исполняется один годик, поэтому пришло время рассказать, что это, зачем это и как к нему подключиться.   Начнём с понятий. IRC — это протокол обмена мгновенными сообщениями через интернет. Сделанный в далёком 1988 году, и по сей день он всё ещё юзается из-за удобности, простого масштабирования, простоты и доступности буквально отовсюду, где есть подключение к интернету — вплоть до холодильников. В общении участвуют клиент и сервер. Клиенты подключаются к серверу и о

Fingercomp

Fingercomp

 

OpenComputers 1.6.2

Вышла новая версия OpenComputers, в основном с самыми разными фиксами. Что изменилось: Моды теперь могут добавлять свои кастомные дискеты, которые можно получить перекрафтом их с ключом. (Vexatos) Две функции дебаг-карты: для отправки сообщения на другую дебаг-карту и отправки текста в буфер обмена какого-либо игрока. Опасная штука. (Vexatos) Когда роботы/дроны выкидывают что-либо в мир, они теперь посылают ивент. (Sangar) Добавлен новый предмет — MFU. Позволяет подключить к адаптеру люб

Fingercomp

Fingercomp

 

Автозапуск программ

Если до версии 1.6 все использовали файл /autorun.lua и были довольны, то теперь ситуация несколько изменилась. Поэтому я опишу все варианты автозапуска программ в этой небольшой заметке.   С версии OpenOS 1.6 файл autorun.lua больше не запускается на rootfs (то есть на файловой системе работающей операционной системы). Вот все пять способов, которые можно использовать для автозапуска программ. Модифицировать /init.lua. Это самый плохой и ужасный вариант из всех. Во-первых, программа будет

Fingercomp

Fingercomp

 

OpenComputers 1.6.1

Новая версия! Новое: Можно теперь отключать некоторые стороны адаптера с помощью ключа. Очень нужная фича, если требуется контроль в огромном лагодроме. От Vexatos. robot.compare умеет теперь сравнивать предметы, игнорируя метаданные. Например, сравнивать инструменты можно. Достаточно указать опцию. От Vexatos. Очень хорошая фича заключается в том, что теперь апгрейды табличек не игнорят приват просто, а посылают ивенты! От хорошего человека makkarpov. Можно указать белый список владель

Fingercomp

Fingercomp

 

Advanced Term [OpenOS 1.6]

Тут полгода назад я описывал изменения в OpenOS 1.6 и среди прочего я упомянул какие-то окна в либе term. Пришло время описать всю либу term.   Прежде всего, рассмотрим понятие окна. Окно — это таблица типа такой:   {x = 1, y = 1, fullscreen = true, dx = 0, dy = 0, w = 0, h = 0, blink = true} По порядку. x, y — это позиция курсора. Ну тут всё предельно ясно. fullscreen — тоже достаточно очевидно. Находится ли окно в фулл-скрине или нет. dx, dy — это смещение окна отновительно лев

Fingercomp

Fingercomp

 

OpenComputers 1.6.0 Release

Добавлено Версия дисковода гибких дисков (дискет, если что) для серверов. Возможность взаимодействовать с некоторыми хранилищами предметов с помощью контроллера инвентаря (не особо понял, что тут нового. Видимо, новые инвентари или черех адаптер). Поддержка энергии RotaryCraft. Возможность задать границы вывода (я про viewport, да) на GPU, так что теперь можно химичить с производительностью всякими нестандартными путями. Кабели запоминают цвета, в которых их красили, при срубании. Можно

Fingercomp

Fingercomp

 

Парсер CSV

CSV идёт от Comma-Separated Values, что, в общем, довольно точно описывает этот формат хранения таблиц. Вот типичная таблица: aaa,bbb,ccc,dddeee,fff,ggg,hhh Как видно, строки отделяются \n, а ячейки ­— запятой. Последняя строка может иметь или не иметь \n.   Формат очень простой. Описывается он в RFC 4180. Там всего 7 пунктов. Ну а раз простой, давайте соорудим парсер.   Вот у нас есть строка aaa,bbb,ccc,ddd\neee,fff,ggg,hhh. Задача: сделать из неё [ [ "aaa", "bbb", "ccc", "ddd" ], [ "ee

Fingercomp

Fingercomp

 

Разрешение зависимостей в пакетном менеджере с версиями

В прошлой части: Вы-то прогу скопировать/разархировать и сами можете, вот только если программа зависит от другой, а та — от двух других, и т. д., вам это надоест. Людям надоело. Создали пакетные менеджеры.       Итак, давайте сделаем программу для установки пакетов. Очевидно, что просто так в рандомном порядке пакеты поставить нельзя: нам надо сначала брать пакеты без неразрешённых зависимостей и подниматься вверх.       Итак, у нас есть простая функция, которая составляет список па

Fingercomp

Fingercomp

 

Разрешение зависимостей в пакетном менеджере

Раз уж я тут пишу понемногу свой крутой пакетный манагёр, расскажу о пакетных менеджерах немного.   Пакетный менеджер — штука сложная. Потому что, хотя задача у него, в общем-то, одна — менеджировать пакеты — сюда включается и установка, и удаление, и обновление, и, вообще, много всякого. Но а так как пока сам не напишешь, ПМ не поймёшь, здесь расскажу об установке пакетов и зависимостей с кодом.   Ещё немного предисловий, о зависимостях. Это ключевая фича ПМ: вы-то прогу скопировать/разархи

Fingercomp

Fingercomp

 

BuMPGold // завершён

Здрассьте! Я тут прогуливался по StackExchange, и нашёл интересную штуку: Code Golf. В общем-то, это программистский конкурс, который цель ставит эффективно расходовать ресурсы... только жёсткго диска. Надо любыми судьбами на любом языке сделать программу с наименьшим числом даже не символов, а байт! Мне показалось это очень интересным занятием. Посмотрев на вопросы, которые по той ссылке доступны, у меня и идейка пришла тоже.   Я всё расписал по идейке здесь: https://znc.hanvix.ru:1308/vori_z

Fingercomp

Fingercomp

 

MoonJam — джем с привкусом луны // завершён

Лого от Totoro   Здрассьте! Несколько дней назад я прогуливался по всяким оплотам бюрократии и, не теряя времени, заодно размышлял о том, что форум наш наводит тоску и уныние: программок нет, ничего не обсуждается, дискуссии только разве что о лагах на сервере и сборочках с недосборочками. И появилась идея организовать конкурс программистский типа джема.   Джем — это желеобразный пищевой продукт с равномерно распределёнными в нём целыми или измельчёнными плодами (ягодами), сваренными с сахар

Fingercomp

Fingercomp

 

[Moonscript] Библиотека SemVer

Имеется один проект на Питоне, который потребовал для себя парсер семантического версионирования, семвера, в общем. Ну там такие штуки как парсинг версий человеческий, обработка ввода юзверёв, умение сравнить все эти версии и выбрать из списка по указателю типа ">=1.5.17", ну, думаю, об этом вы слышали. К слову, вот тута лежит спецификация SemVer: http://semver.org/, можете почитать.   Ну и нашёл я либу интересную, semantic_version зовётся. Подключил и нарадоваться не мог фичам всяким. И та

Fingercomp

Fingercomp

 

[OC Updates] Обновление OpenComputers до версии 1.6.0 Beta 4

Недавно вышло мелкое обновление OC, которое я пропустил из-за некоторых проблем, и в нём: ДобавленоИнтернет-карты посылают событие, когда они получили данные по сокету и можно использовать :read. [*]Пофикшено Несколько мелких багов. [*]OpenOS Небольшие фиксы install, /lib/buffer.lua, ls, /lib/package.lua, rc, /lib/sh.lua. Вот и всё действительно небольшое обновление. Скачать можно по ссылкам в блоке справа сверху.

Fingercomp

Fingercomp

 

[OC Updates] Обновление OpenComputers до версии 1.6.0 Beta 3

Обновление OpenComputers до третьей беты 1.6. Сегодня в гостях у нас следующие изменения: Добавлено В русский мануал добавлена информация про saveConfiguration (PR #1855 от cyber01). Функция computer.getProgramLocations, которая используется для программы install из OpenOS. [*]Пофикшено Неожиданный баг с сохранением мира в версиях MC выше 1.8. [*]OpenOS Команда cat теперь будет читать stdin, если не указан файл. cp: поддержка путей вида /. и более мелкие фиксы. df теперь по

Fingercomp

Fingercomp

 

[OC Updates] Обновление OpenComputers до версии 1.6.0... Beta 2

Начну со слов автора мода: "давайте будем считать, что кандидата к релизу не было. Не потому, что он был сломан, нет. Просто я добавил несколько вещей, которые требуют тестирования, поэтому у нас снова будет бета".   Изменения ДобавленоНовая функция computer.getDeviceInfo() теперь возвращает список всех компонентов, имеющихся у устройства, включая планки памяти, процессоры и пр. Для показа их в OpenOS есть теперь команда lshw. [*]Изменено Большинство "магических файловых систем" у комп

Fingercomp

Fingercomp

 

[OC Updates] Обновление OpenComputers до версии 1.6.0 RC 1

И лучше поздно, чем никогда. Недели две-три назад вышла версия OC 1.6-RC1 (Release Candidate). В основном ничего особенного, только баг-фиксы.   Изменения: Фиксы LuaJ с помощью мастера по починке LuaJ. gamax92, если быть точнее. Plan9k теперь будет хотя бы запускаться. Ну замечательный прогресс уже, хотя крашиться всё так же любит. Switch и Access Point были скрыты в NEI. Поддержка энергии RotaryCraft. Обновление мануала под 1.6. Облегчённые рецепты. Из алмазов делаются алмазные ку

Fingercomp

Fingercomp

 

Пара трюков OpenComputers

Здесь опишу такие штучки, которые могут потребоваться продвинутым OC-программистам (да и просто Луа-программистам).   Busy Idle С помощью этого трюка можно делать довольно точные задержки, причём с длительностью менее тика. local lastSleep = os.clock() local function sleep(t) local begin = os.clock() while os.clock() - begin < t do if lastSleep - os.clock() >= 3.5 then -- В конфигурации дефолтное значение = 5 секунд, ставим на 1.5 меньше для безопасности.

Fingercomp

Fingercomp

 

OpenComputers 1.6. #2

Продолжаем расследовать обновление 1.6 OpenComputers. На очереди новая OpenOS с крутым функционалом и вкусными плюшками.   Так как изменений много, но они разбросаны, призываем маркеры. Новая утилита find Прогуливается рекурсивно по файлам, выводя их имена на экран. Можно задать Луа-паттерн аргументом --name для поиска файла нужного. find . --name=".+%.lua" [*]Утилита grep Тот самый монстр, который ищет паттерн в файлах. Идентичный натуральному, но паттерны Луа. grep -rin "hi" .

Fingercomp

Fingercomp

 

OpenComputers 1.6. #1

Прогулка с экскурсоводом по обновлённой части парка "OpenComputers". Глянем на новые вещи и попытаемся разобраться.   Начнём с самого значительного изменения. Серверные Стойки. Ну тут всё интересно. Пугающая штука теперь — интерфейс стойки. А на хотбаре у меня лежат орудия пыток.   Думаю, предпоследний предмет опознали — это сервер T3. По нажатию ПКМ этим предметом всё так же открывается интерфейс подобный компьютерному, куда можно вставить компоненты. Заменил я его на креативный, т

Fingercomp

Fingercomp

 

[OC Updates] Обновление OpenComputers до версии 1.6.0 Beta 1

О 1.6 было говорено ещё с очень давних пор — примерно год назад. И наконец-то первая бета OC 1.6 доступна для скачивания. Вообще, 1.6 всё это время можно было загрузить как дев-версию — достаточно перейти на Jenkins. Однако билды там не всегда блещут стабильностью.   Что изменилось: Полный ченджлог Sangar предоставит, когда отрелизится 1.6.0. Но благодаря ГитХабу я могу сравнить 1.5.22 и 1.6. Так что краткое переложение >150 коммитов: Новые серверные стойки. Модульность, крутой GUI и мног

Fingercomp

Fingercomp

×
×
  • Создать...