Новости!
Теперь мой браузер будет называться "Арбузер", и будет выполнен в зеленоватых тонах.
Zer0Galaxy мне помогает, и уже набросал парсинг и поиск по самым простым селекторам в CSS. Думаю, ему для полной работы с CSS нужно будет написать еще разов в 6 больше кода.
Готовы первые наброски самого браузера без страниц. Закладки, навигация, строка пути.
Кстати, вы можете посмотреть эмулятор экрана компьютера из OC, который можно открыть в браузере и даже посмотреть исходный код.
Ядро написано примерно на 15% пока что. В следующий раз буду отрисовывать элементы страниц, подгружая их стили.
Эта статья - частичный перевод программы с официального форума.
Введение
Представьте что вы программируете микроконтроллер. И тут вы упираетесь в предел размера файла - 4к. Вам придется уродовать ваш код, что бы втиснуться, но есть лучшее ренешие:
Crunch!
Crunch (хруст) - это программа, сжимающая код на Lua.
Она уменьшает размер файла разными способами, начиная от удаления лишних пробелов и табуляций, заканчивая переименованием локальных переменных в более короткие имена.
Еще, Crunch умеет создавать "самораспаковывающийся" архив, используя алгоритм LZ77.
Программа позволяет сжать файл в 4 раза, уменьшая размер до 25% от первоначального!
Skex (загрузчик для биоса) был уменьшен с 3 990 до 2 366 байт - уменьшение на 40%.
Totoro Recursive Miner был уменьшен с 9 390 до 3 477 байт. В 2.7 раз меньше. Теперь его можно всунуть в биос.
Установка
Просто скачайте tar архив и распакуйте в корень. Все файлы установятся по своим местам.
github
Распаковщик .tar файлов:
wget 'https://raw.githubusercontent.com/mpmxyz/ocprograms/master/home/bin/tar.lua'
Crunch:
wget 'https://raw.githubusercontent.com/mpmxyz/ocprograms/master/tars/crunch.tar'tar -xf crunch.tar
Для документации по командам наберите в консоли
man crunch
Итак, начинаю большой проект - браузер реальных HTML страниц для OpenComputers.
Всё началось с того, что я решил прикрутить скроллинг лога моего интернет-сервера.
Потому я понял, что для этого мне нужно будет подключить GUI, и решил что это будет GML.
Но мне не нравилось, что весь код контролов там распологается в одном файле. Я начал разделять отдельно.
Потому я понял, что нужно перевести его .gss формат стилей на всем известный CSS, для большей понятности.
От этого мне захотелось сделать методы контроллов больше похожими на DOM-элементы...
И тут понеслось.
Очнулся через 5 дней усиленного изучения Document Object Model, CSS стилей, парсинга HTML и многочисленных библиотек под Lua.
HTML парсер на луа я нашел, и даже его начал внедрять, но потом нашел монстра похлеще, с проработанным древом наследования и множеством других функций, хотя для него пришлось переписать парсер, так как он работал с либами на C.
Пока показать могу только результат работы парсера.
В коричневых областях слева оригинальный файл. Парсер перебирает его по косточкам, разбирая на отдельные теги, аттрибуты и ноды. В правой части обратная сборка документа из таблицы.
В черном окне - запущенный эмулятор ОС, который просто выводит текстовые данные из страницы.
Красным выделены разницы в файлах. Как видите, парсер только отбросил !DOCTYPE и в некоторых местах убрал лишние пробелы.
Мне согласился помочь Zer0Galaxy и написать парсер для css файлов, а так же поиск аттрибутов в них.
Браузер планируется сделать так, что бы он умел открывать настоящие веб-сайты, например http://computercraft.ru/ , и выполнять в них навигацию.
Из главных фич будет быстрая отрисовка, и возможность использования библиотек как интерфейса для создания GUI.
Сейчас исходники весят уже 200кб. Это будет круто.
Продолжаю проектировать новую компьютерную базу в программе MagicaVoxel, что бы потом перенести на сервер с помощью дебаг-карты.
Итак, я решил что основном материал будет - уголь. Если белоснежный банк олицетворяет добрых и пушистых администраторов, угольно-черная лаборатория будет олицетворять хардкор и жесткач программистов. Лазурит и еще что нибудь синее будет хорошим украшением.
Первый этаж почти закончен и уже думаю над дизайном второго. Буду надеяться, что Алекс не запретит возвести высокий небоскреб.
Моего маленького компьютерного ангара стало маловато для расширения, так как там банально закончилось место для новых компов и серверных стоек.
Я решил построить новое здание, но подойти к этому более комплексно, а так же собрать под одной крышой Тоторо и Зеро, установив их сервера здесь.
Вот первые пробы набросков в программе MagicaVoxel. Каждый воксель - блок майна. А бирюзовые блоки - будущие мониторы.
Скорее всего, я отконвертирую формат этой программы и попрошу воспользоваться дебаг-картой что бы залить территорию нужными блоками.
Пока в здании планируется 2-3 этажа с разными секторами:
Основной зал со всем ОС оборудованием
Серверная
Сборочный и печатный цеха
Полигоны для отладки роботов
Телепортная
Если есть какие то еще идеи для интерьера, пишите.
Итак, вся лаборатория почти достроена. Осталось только подукрасить крышу и задок.
Честно сказать, идеи закончились и линии стали более унылыми. Даже не придумал как сделать небоскреб.
Но за то, добавил больше цветных линий. Голубое - это будущее стекло.
Кстати, вдохновение я набирал на девиантарте. Можете увидеть как лаборатория по первой ссылке похожа.
http://jimmyjimjim.deviantart.com/art/Sci-fi-Lab-300578532
http://sc4v3ng3r.deviantart.com/art/Random-Space-Platform-Structure-409412499
http://talros.deviantart.com/art/Building-concepts-350130607