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

Krutoy

Гуру
  • Публикации

    482
  • Зарегистрирован

  • Посещение

  • Победитель дней

    72

Все публикации пользователя Krutoy

  1. Krutoy

    Crunch - Хрустим 4к лимит!

    Эта статья - частичный перевод программы с официального форума. Введение Представьте что вы программируете микроконтроллер. И тут вы упираетесь в предел размера файла - 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
  2. Идея отличная, всегда мечтал о рабочем роботе с минимальным оборудованием. Ты хоть тестил его на работоспособность? Покажи скрины. Выровни текст.
  3. Хорошее оформление темы и хорошая идея. Но... Есть мощный и уже готовый интерфейс GML https://github.com/OpenPrograms/Gopher-Programs/wiki/GML Я еще со времен программирования Базара с Семоро довел GML до работы с юникодом и исправил множество ошибок. Велосипед конечно придумывать интересно, но результат в ряд ли будет лучше. По структуре ты уже делаешь нерасширяемую структуру. Мне нравится как сделан Windows.Forms. Там все элементы начинаются с простых классов, например "Control" и потом наследуются глубже и глубже. Например, та же кнопка наследуется из "ButtonBase", который также наследуется чекбоксами. Еще много конечно, что можно посоветовать. Но закончу на том, что писать в луа названия с больших букв - плохой стиль.
  4. Какие еще блоки? Где "там" ? А дракончик норм, покажи еще чтонить.
  5. Это же просто реализовать! Поставь контроллер предметов, и если работ видит перед собой блок, пишет world:set(x,y,z,true) что бы пометить этот блок непроходимым, и еще раз запускает поиск пути.
  6. Ну вот, другое дело. Вот это уже "правильный" "ооп" на луа.
  7. Держи http://codepen.io/Krutoy242/full/oXWVbe/ Только я конвертер немного изменил, и тебе нужно будет поменять программу самому.
  8. Да, Магика + мой конвертер, который я переписал под отсутствие разделений на кубики. Если хочешь построить дом своей мечты, могу и запостить куда нибудь.
  9. Код хороший, но подожди ка, а где же таблица и функции package? Это ведь специальный инструмент, что бы не забивать оперативную память, и ускорить работу программы при нескольких одинаковых вызовах require(). Больше об этом написано здесь http://ilovelua.narod.ru/about_lua.html#Module_loaders Можешь посмотреть как require и package реализовано в ОС https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/resources/assets/opencomputers/loot/OpenOS/lib/package.lua
  10. Попробовал бы сначала, или хотя бы доки почитал http://ocdoc.cil.li/api:serialization?s[]=serialize
  11. Тем временем, мной проведена работа по организиции обновления моих серверов (интернет-сервер, и сервер обновлений). [ok=Добавленно автообновление программ из пакета opennet][/ok] Теперь, установив opennet один раз, новые файлы и патчи будут закачиваться автоматически при перезагрузки компьютера. Изменена строка установки, теперь она выглядит так: on=component.modem;e=event;on.open(1)on.broadcast(1,"","","getip")function m()r={e.pull(10,"modem_message")}end;m()ud="update"ip=r[6]function sv()on.send(r[3],1,ud,ip,ud,"getFile","client/"..p)m()filesystem.makeDirectory(filesystem.path(p))f=io.open(p,"w")f:write(r[8])f:close()end p="lib/opennet.lua"sv()p="on/update.lua"sv()loadfile(p)("install") Напомню, гайд по установке в этом посте. Еще, по просьбе Алекса, папка /on добавленна в системные пути, и ее не нужно прописывать. Кстати, скриншот консоли самого сервера. Пока еще много бутафории, но уже есть сразу 2 работающие консоли на разных частях экрана.
  12. setBlocks=require("component").debug.getWorld().setBlocks -- массив данных data=loadfile("KrutoyLab.p3d")() X,Y,Z=100,60,200 --координаты левого нижнего угла постройки for i=1,#data do setBlocks(data[i][1]+X,data[i][2]+Y,data[i][3]+Z,data[i][4]+X,data[i][5]+Y,data[i][6]+Z,data[i].id,data[i].meta or 0) end
  13. Лаборатория построена и обустраивается! В возведении участвовали Krutoy, Zer0Galaxy, AlexCC и Fingercomp, за что им спасибо. Лаборатория - открытое здание, и его может навестить любой желающий. Она находится справа по дороге мимо Банка.
  14. Я ООП сам не открывал а искал в гугле. Я могу сделать статью из копипасты с гугла. Сойдет?
  15. Итак, вся лаборатория почти достроена. Осталось только подукрасить крышу и задок. Честно сказать, идеи закончились и линии стали более унылыми. Даже не придумал как сделать небоскреб. Но за то, добавил больше цветных линий. Голубое - это будущее стекло. Кстати, вдохновение я набирал на девиантарте. Можете увидеть как лаборатория по первой ссылке похожа. 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
  16. О, спасибо! Черная глина на самом деле коричневая. Будет совсем некрасиво. Так что из черных блоков только уголь есть.
  17. Продолжаю проектировать новую компьютерную базу в программе MagicaVoxel, что бы потом перенести на сервер с помощью дебаг-карты. Итак, я решил что основном материал будет - уголь. Если белоснежный банк олицетворяет добрых и пушистых администраторов, угольно-черная лаборатория будет олицетворять хардкор и жесткач программистов. Лазурит и еще что нибудь синее будет хорошим украшением. Первый этаж почти закончен и уже думаю над дизайном второго. Буду надеяться, что Алекс не запретит возвести высокий небоскреб.
  18. Krutoy

    Псевдо ООП для новичков. L1

    Заморачиваете голову юным программистам =) Для наших прикладных задач на этом проекте даже сложно найти применение для такого ООП. Единственное, можно использовать в либах вроде векторов или массивов. Ну или похвастаться как круто вы реализовали приватные методы класса. Я использовал подобные функции в коде векторов. Хочу обратить особое внимание на вот эту строчку: setmetatable({new = new, isvector = isvector, zero = zero}, {__call = function(_, ...) return new(...) end} Не делайте вот этих вот :new() или :addObject() Во-первых, можно написать код и без двоеточия, и создавать объекты через точку. Во-вторых, мы же в луа, а не в С++. Есть прекрасный метаметод __call . Зачем создавать класс через какие то дополнительные точки и слова, если можно просто local c = class() Рид как то подкидывал ссылку http://habrahabr.ru/post/182018/ Но вообще, на хабре про ООП для ЛУА много чего есть.
  19. Хорошо, но для тебя будет сначала тестовое задание. Сделаешь какой-нибудь полезный рабочий сервер на опеннете - пропишу и тебя. Что будет полезно лучше спросить у меня. Да, я собираюсь строить из ванильных блоков. По крайней мере основные стены и крыши, что бы с карты открывался хороший вид.
  20. Ну вот! Значит либо наставь в него больше плат, либо корми ему меньший файл.
  21. Смотрю модно нынче блоги создавать. Попробую и я. Моего маленького компьютерного ангара стало маловато для расширения, так как там банально закончилось место для новых компов и серверных стоек. Я решил построить новое здание, но подойти к этому более комплексно, а так же собрать под одной крышой Тоторо и Зеро, установив их сервера здесь. Вот первые пробы набросков в программе MagicaVoxel. Каждый воксель - блок майна. А бирюзовые блоки - будущие мониторы. Скорее всего, я отконвертирую формат этой программы и попрошу воспользоваться дебаг-картой что бы залить территорию нужными блоками. Пока в здании планируется 2-3 этажа с разными секторами: Основной зал со всем ОС оборудованием Серверная Сборочный и печатный цеха Полигоны для отладки роботов Телепортная Если есть какие то еще идеи для интерьера, пишите.
  22. Питман, а как ты думаешь сам, что же такого невероятного не хватает твоему роботу, что бы запустить эту программу?
  23. Все библиотеки, расчитанные на подключение через require будут подгружаться в /bin/ Но с папкой /on/ не понимаю. Что бы запустить, например браузер, нужно ввести 5 символов и нажать таб on/onB [TAB] , и шелл сам допишет имя файла. Проблема в том, что нужно дописывать 2 буквы названия папки?
×
×
  • Создать...