IS2511
Пользователи-
Публикации
14 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя IS2511
-
Я думаю попросить название взять такое же (mIP, mTCP, mUDP?) и попробовать, но ничего не гарантирую. Планирую делать другой алгоритм поиска пути, поскольку никто не хочет заниматься ручной настройкой и разницы рангов как таковой нет, система провайдеров нам не подойдет (требует ручной настройки и централизации в виде провайдера), как и DHCP (требует настройки и централизации в виде роутера). Поскольку сеть будет скорее всего одноранговая, то ARP технически тоже не нужен, как и виртуальные адреса (обойдемся физическими). Думаю больше подойдет что-нибудь типо адресной книги (над форматом все еще думаю), либо как zn сеть... В список сомнительной надобности из-за использования физических адресов также уходит NSP (и DNS). Протокол DIX Ethernet условно входит в сам мод, кроме чек-суммы (а может и да, я хз как там мод работает внутри), но нам все равно как он работает, главное, что гарантирует доставку по физическому адресу. Для реализации остается mIP для роутинга, mTCP и mUDP для сессий и передачи любой информации любой длины. К сожалению, из-за децентрализованности сети не получится сделать что-то кроме P2P, но с другой стороны игроки и не готовы строить централизованную сеть, ей просто не суждено быть. А вот P2P итак постоянно используется игроками почти везде, остается только сделать доступным всех членов сети, ну и повысить абстрактность соединений (спрятав адресацию и тп), облегчив тем самым написание сетевых приложений. Могу быть сильно неправ, хотелось бы услышать мнение других. EDIT1: Только увидел про русскую документацию пост, хах. Я тоже не горю желанием писать 2 документации, но видимо придется)
-
@LeshaInc ковырял последний ocelot-desktop, нашел противный визуальный глюк. Когда окно в расфокусе: Во время перехода в расфокус: Глюк стабильный, пока окно в расфокусе все время графика растянута чуток
-
Кратко Утилита для командной строки, не хуже чем те же утилиты с https://catbox.moe/tools.php. Загрузка файлов (с диска и по url), удаление, менеджмент альбомов. Все возможности API. Установка Pastebin: https://pastebin.com/kuGkdm53 Для ленивых: # pastebin get kuGkdm53 /usr/bin/catbox.lua Gist: https://gist.github.com/IS2511/e4c6a6f638609fcfa733ceeb432cfced Органический продукт! Разработан полностью на ocelot-desktop! catbox --help Может устареть если я буду обновлять программу! Usage: catbox <command> [arguments] Commands: user [userhash] - Get or set current userhash. Pass 'off' to forget set userhash file <filename(s)> - Upload files to catbox.moe url <url(s)> - Upload files from URLs to catbox.moe delete <filenames(s)> - Delete files from catbox.moe. Requires userhash album - Album Managment ('catbox album' for help) -a, --anonymous - Ignore userhash, upload anonymously -h, --help - Print this message -y, --yes - Yes to everything, skip all checks -q, --quite - Suppress all output (except sys err) and --yes Размышления Изначально писалось с мыслями об удобном хранении файлов и повышении квалификации в использовании component.internet. После написания могу сказать, что удалось только второе. Самый большой минус - отсутствие серверов catbox в России. Пинг 200-250, регулярные тайм-ауты при подключении. К тому же неудобно управлять файлами, это все-таки не менеджер, только реализация API. Для нормально работы скорее всего надо сделать что-нибудь типо веб-папки (Наводит на мысли о следующем проекте ). Кстати, использует недавно написанную мной библиотеку parg. Витают пару мыслей для улучшения либы, но пока ничего конкретного. Буду ли я делать веб-папку на catbox в будущем? Нет, пока некто (https://psychz.net, https://i.imgur.com/kqhCJ02.png) не завезет сервера колокации в Россию. От этого проекта я научился (сильно сказано) работать с component.internet.request() и данными в формате multipart/form-data, отличный опыт. Комментарии и критика приветствуются :з
-
Отважно постим мимо Программы новичков Наверняка за такое долгое время развития экосистемы OpenComputers кто-то уже писал свои обработчики аргументов. Я даже видел какую-то на репе hpm (помянем). Для истории: https://gitlab.com/oc-programs/libxargs/raw/master/libxargs.lua Но в основном всех устраивает shell.parse(...). Ну а меня нет. Установка Pastebin: https://pastebin.com/nSgXWHtp Для ленивых: # pastebin get nSgXWHtp /usr/lib/parg.lua На всякий случай: https://gist.github.com/IS2511/96847fe185278b457505218b1c141f9d Органический продукт! Разработан полностью на ocelot-desktop! API parg.parse(a: table): table: Принимает {...}, возвращает таблицу аргументов. Alias: parg(a: table): table. parg.register(argument: string or table, argType: string, callback: function): nil: В argument название аргумента или список названий одного и того же аргумента (Например {"timeout", "t"}). В argType либо "flag", либо "value". В callback функция с 1 аргументом, это будет либо кол-во флагов, либо значение. Последний аргумент необязательный. parg.unregister(argument: string or table, clearSame: boolean): nil: В argument название аргумента или список названий аргументов (Например {"timeout", "verbose"}). Если clearSame = true, то родственные аргументы также будут удалены. Последний аргумент необязательный, по умолчанию false. Я не знаю зачем эта функция, она просто есть. Базовое использование Механика библиотеки схожа c shell.parse. Для быстроты приведу примеры. Программа для тестов будет такая (далее prog.lua): local ser = require("serialization") local parg = require("parg") local arg = parg({...}) -- same as parg.parse({...}) print(ser.serialize(arg)) Попробуем вызвать с набором разных аргументов: /home # prog test1 test2=test3 --test4 --test5=test6 -test7 -89=10 {"test1","test2=test3",[0]="/home/prog.lua",["9"]="10",test5="test6",["8"]=1,["7"]=1,t=2,s=1,e=1,test4=1} Тут в принципе есть все основные варианты аргументов и их поведение. Самые простые аргументы типа "test1" и "test2=test3" далее не будут рассматриваться. Как можно заметить появился также аргумент [0]="/home/prog.lua", это путь к файлу, который вызвал parg(), бывает иногда удобно. Этот аргумент так же далее не будет рассматриваться. (TODO: Есть мысли, что вызов debug.getinfo(3, "S") самый затратный из всей либы. Так ли это?) Регистрация аргуметов Типы В библиотеке есть 2 типа аргументов: "flag" и "value". Первый всегда number, второй всегда string или nil. По умолчанию (без регистрации аргументов) все аргументы считаются "flag", если не используется =, тогда аргумент считается "value". "flag" в значении имеют количество своих появлений. Например prog -xxx => {x=3}. "value" в значении имеют строку со значением, указанным пользователем. Например prog -x=123, prog --x=123 => {x="123"}; prog --test=123 => {test="123"}. Далее переходим к регистрации типов аргументов. Отредактируем prog.lua: local ser = require("serialization") local parg = require("parg") parg.register({"timeout", "t"}, "value") parg.register({"verbose", "v"}, "flag") local arg = parg({...}) print(ser.serialize(arg)) Теперь некоторые аргументы имеют явный тип, а также родственников (Получается "--timeout" = "-t" = "--t"). Поскольку у "timeout" теперь явно тип "value", аргумент может принимать значения через пробел prog -t 10 => {t="10",verbose=0,v=0,timeout="10"}. Обратим внимание! Отсутсвие "flag" дает 0 в таблице аргументов. "verbose" явно "flag", значит любые = больше не сработают prog -v=abc --verbose=def => {v=2,verbose=2}. Каллбэки Последняя фича - каллбэки. Добавим в prog.lua последние штрихи: local ser = require("serialization") local parg = require("parg") local timeout, verbose parg.register({"timeout", "t"}, "value", function (value) timeout = tonumber(value) or 10 end) parg.register({"verbose", "v"}, "flag", function (count) verbose = count > 0 end) parg({...}) print(ser.serialize({timeout,verbose})) Попробуем. prog => {10,false}; prog -t abc => {10,false}; prog -t 20 -v => {20,true}; prog --verbose => {10,true} Ну вот и все, библиотека работает. TODO: Добавить порядок обработки? Взаимосвязанные каллбэки? Конец Остался только один вопрос. Зачем? Почему у меня не используются регулярки? А нужны ли они? На самом деле я просто забыл о них, не знаю есть ли смысл переделывать. Комментарии и критика приветствуются :з Первый пост, критика по оформлению также велком
-
Кстати, такой вопрос, можно ли tps регулировать в Ocelot? Я подозреваю, что да. Хотелось бы тоже в настройках потом увидеть это :з
-
Давно такая фигня, ничего не понимаю @Totoro
-
Я подозреваю, что где-то утечка памяти @LeshaInc Открыто уже несколько суток наверное Если надо конфиг:
-
Вроде существует. У меня при создании компа почему-то без нее система и до, и после установки EDIT-1: Я не на винде, забыл упомянуть) Просто кастомный ярлык сделал. Буду ждать офф иконку) На счет иконок на jar'ки это я не в курсе, сомневаюсь, наверное проще будет для винды exe "запускалку" сделать с иконкой, а для юниксов скрипт sh и возможно на него, не помню как делают обычно
-
Иконку для десктопа не планируете? Смотрится неплохо) (favicon с сайта) Про вопросы: Зачем такая структура папок сохранения (save/opencomputers)? Для удобства перемещения в мир? Если да, то очень странно. Разве /home не существует изначально после установки? Мне казалось да, переменная окружения же есть $HOME Когда template'ы?) Очень хочется) Про хотелки: Честно говоря счетчик FPS в названии окна немного раздражает F3 debug screen?) (см. пункт 1) Настройки внутри приложения? Очень не хватает Создание новых дисков каждый раз раздражает (выбор в настройках?) Выбор сохранения майна (при указании .minecraft) или хотя бы выбор куда папки дисков класть Я так понимаю Ctrl + W прямо в движке заменили на Ctrl + E? Хотелось бы вынести это только на сайт, а в десктопе съедать Ctrl + W (чтобы система не закрывала программу) Крестик на окно компа? Немного неудобно, что приходится тянуться за ESC все время при редактировании сетапа мышкой Сеть только через реле? Добавить настройку "Вкл wifi" для адресной связи всех со всеми (может даже по блокам сетки расстояние брать)? [EDIT-1] Как и у ECS в посте сверху, ресайз окон со скэйлингом контента было бы неплохо, но лично я пока справляюсь на втором tier'е экранов и их влезает 4 штуки удобно, так что для меня это не критично (в отличии от ECS с полноценной графикой) [EDIT-1] Осторожно, имхо. Я пока не привык к управлению, но мне кажется странным иметь действие создания блоков на ЛКМ, может таки перенести создание на ПКМ? Просто кажется нелогичным [EDIT-1] Осторожно, имхо. Принудительный фокус хотя-бы на 1 окно позволяет быстро закрывать окна, но может добавить фокус на поле? Чтобы все экраны становились полупрозрачными и тд. Как раз для таких целей переназначить ЛКМ [EDIT-1] Осторожно, имхо. Затухание пунктов в выпадающем на ПКМ меня кажется очень долгим, возможно немного ускорить? Про баги: Всякие соединения при удалении не полностью чистятся, иногда остаются навечно провода ни к чему UUID дисков в программе не соответствует названиям папок (не очень удобно) Фокус/расфокус на окнах дисплеев дергает их рамку и небольшие визуальные глюки появляются в тексте дисплея Легкие проблемы блюра? [EDIT-1] Сомневаюсь что баг, но при соединении компов (в том числе через те же цвета реле) возникают крайне веселые визуальные глюки когда оба компа пытаются рисовать на 1 дисплей. В оригинале так же? [EDIT-1] Маленький, но все равно. Кабели можно поставить за компы, кабель пытается свалить, но не до конца. Писать алгоритмы поиска пути для кабеля звучит тупо, unless?) WIP Может еще что-то добавлю когда вспомню/найду Edit count: 1
-
EDIT: Я тупой, все это к эмулятору ECS. Удалю отсюда, если попросят. Я не хочу никого ругать, ни в коем случае, проект в свободном доступе и тд. Все проделали и продолжают делать хорошую работу. Теперь к плохому. Desktop версия работает из рук вон плохо. Срач в логах при первом старте (pastebin), определенно под -v надо убирать, оставить только основное. Конфиг машин не сохраняется от слова совсем, каждый старт - новая машина. При краше оно забыло удалить конфиг, все последующие запуски - нерабочее состояние (окно шириной 1?). После первого ребута по кнопке img. Классика, постоянно. Мигает белым как новогодняя елка. Untitled window это как Новая папка, некультурненько. При нажатии "..." для выбора папки - краш. Я на линуксе конечно, но джавка вроде должна смягчать такое... Визуальные баги в консоли (типо исчезания текста после нажатия Backspace) появляются со средней частотой. beep() отвечает мне stdin:1: illegal index, что звучит странно. Кривой звуковой? Ползунок громкости не влияет на громкость звука включения компа. "Поток интерруптнулся чет у компа"... Ну читается интерраптунлся, и фу, логи на русском + транслит. Кровь из глаз. (ИМХО) Ползунок памяти заставляет моего внутреннего перфекциониста страдать. Выставить круглые немного сложно... Крестик для выхода не переспрашивает о выходе, я расстроен. Размеры экрана (3x2) не меняются. Просто не работает Потом допишу возможно
-
Как на счет смотреть за фокусом курсора в компе? Если фокус на компе, то не закрывать. Или даже проверять открытость программы edit (и других похожих?), если такое возможно. Плохо помню JS, если там нельзя напрямую это делать (скорее всего можно, лень гуглить), то можно даже упороться и грузить пустое аудио на петле для незакрываемости вкладки. Вохможно можно еще упороться и всегда отлавливать Ctrl + W и отправлять на комп, а потом проверять эффект и исходя из этого закрывать вкладку через JS или скушать событие и все. Я видел там сокет простой, через него можно передавать результат эффекта, немного криво, но работать должно.
-
@Totoro Что-то у меня shell.parse(...) не пашет... Проверял в десктопе и онлайн версии, сам (...) не содержит опций после 1 и 2 -. Похоже на баг в brain EDIT: Оказывается shell.parse(...) (И вообще (...) ) не получает параметры такие ибо lua съедает их, надо запускать чисто по названию программы
