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

Лидеры


Популярный контент

Показан контент с высокой репутацией за 28.02.2024 во всех областях

  1. 4 балла
    У меня давно была идея реализовать на опенкомпах клиент для какого-нибудь протокола, позволяющего подключиться к полноценному удалённому шеллу. В голову сразу приходит SSH, но я даже не стал разбираться, как он работает, ведь, он, наверное, работает очень сложно. Поэтому мой взгляд пал на древний протокол - telnet, впервые разработанный аж в 1969 году. Сейчас его практически никто не использует, ведь все данные, включая логины и пароли, он передаёт в незашифрованном текстовом виде. Хотя и существуют расширения протокола, реализующие шифрование, мой клиент их не поддерживает. Репозиторий программы можно найти тут. Установить можно в OpenOS с помощью команды wget -f https://raw.githubusercontent.com/Smok1e/oc-openos-telnet/master/installer.lua /tmp/installer.lua && /tmp/installer.lua Синтаксис очень простой, достаточно ввести telnet <адрес> [<порт>]. По умолчанию используется порт 23. Учтите, что если вы подключаетесь к серверу по локальной сети, в конфиге мода необходимо поменять "deny private" на "allow private" в 675 строке (ну или где-то рядом). В данный момент единственная проблема - escape последовательности. OpenOS обрабатывает некоторые из них сама, но далеко не все, из-за чего можно наблюдать различные текстовые артефакты в более-менее графонистых программах.
  2. 3 балла
    Прости, мы сочли священным долгом отпентестить сей шедевр. Уязвимостей не обнаружено, комиссия ставит 10/10 на кончиках пальцев
  3. 2 балла
  4. 2 балла
    Тред подошёл к логическому концу. Нет ни смысла, ни мотивации, ни сил заниматься тем, что всё равно не имеет смысла. Решение о закрытии проекта возрождения приняли мы с Томатом ещё год назад, сейчас дошли руки до остановки машины и снятия её с питания. Лично у меня нет желания работать над Легаси модами и плагинами под 1.7.10(по другому разработку сервера не назвать). Для нормальной работы нужно два Java-программиста и полтора мотиватора. Я могу выступить только как лидер и наставник, потому что приближаться к серверам Майнкрафта, тем более с модами, и тем более на старой версии -- желания нет совсем. Считаю, это был хороший опыт в моей жизни, но не прощаюсь. Сейчас готов оценить разные идеи, и если понравится - взяться за управление. Однако не пытайтесь совершить моих ошибок, у вас не получится сильно лучше чем у меня. Я не Алекс, вы -- тоже. Спасибо eu_tomat и ProgramCrafter за наибольший вклад в развитие этой попытки. Может быть когда-нибудь. Не прощаюсь.
  5. 1 балл
    Я восстановил через wayback машину эту ос. Правда, решил не восстанавливать некоторые иконки и дополнения к приложениям. И немножко изменил расположение некоторых файлов. Перемещаете в корень компьютера и вводите 'OS'. os.zip ВАЖНО: Контекстное меню OS,VIEW не работают.
  6. 1 балл
    Нашёл способ исправить проблему, на 82 и 83 строках нужно заменить переменную holoName на name
  7. 1 балл
    А ты разве не будешь банить за накрутку кликов?
  8. 1 балл
    кому то, видимо, не было что делать xdd)
  9. 1 балл
    Давай проверим это вместе. Для начала посмотрим содержимое, которым предлагается прошить EEPROM: И там первой же строкой видим: local handle, code, result, reason = component.proxy(component.list("internet")()).request('https://raw.githubusercontent.com/titan123023/OCBios/master/bios.lua'), '' А все последующие строки кода используют результаты этой строки. Получается, что код в EEPROM предназначен для скачивания и запуска кода, находящегося по адресу https://raw.githubusercontent.com/titan123023/OCBios/master/bios.lua. А так как скачать код без интернет-платы невозможно, из этого следует, что OCBios работает только при наличии интернет-платы.
  10. 1 балл
    Очень интересно получается: Через наковальню знак параграфа нельзя добавить, зато можно через компьютер. Через наковальню можно задать имя робота длиной максимум 30 символов, а через компьютер — больше мегабайта. И это, скорее всего, не предел, просто для вызова функции rep не хватило оперативной памяти. Ограничение EEPROM в 4096 байт с этого момента потеряло свою актуальность. Upd: Обсудили этот трюк в дискорде: Я заметил, что видимое имя робота обрезается по модулю 64 KiB. Например, при длине имени 64*1024+1 видимое имя будет состоять из одного символа, по крайней мере, при использовании стандартных ASCII-символов. @ProgramCrafter сделал прогноз, что имя длиннее 32KiB не переживёт перезагрузки сервера. Так и вышло: сохранился лишь огрызок из 32769 символов. Формат NBT не позволяет сохранить больше.
  11. 1 балл
    Ок, вот мои наработки по теме: https://gist.githubusercontent.com/Krutoy242/1f18eaf6b262fb7ffb83c4666a93cbcc Документацию напишу позже. Пока, как я и говорил, робот (или дрон!) умеет выполнять свое имя как Луа-код. Но к тому же, он может всё сокращать до 1-2 символов. Например, вот такая строка сторгует всё что есть у жителя: ~:Tg(){?!v{tr}} А вот мега программа в 54 символ для дрона, который носит предметы из одного вейпоинта к другому: Dm(tb.u(Nf(300)[a++%2+1].p))s(3)~#{Dsel(i)Dd(0)Dsu(0)} В этом примере есть такие сокращения: a++ это продвинутая версия a=a+1, только она работает даже если а==nil s(3) расшифруется как sleep(3) ~#{BODY} получится for i=1, (R or D).inventorySize() do BODY end Еще, я добавил крутые фичи связанные с "трубами" - как в лямбда программировании, когда мы можем скомпоновать функцию, которая будет передавать результат своей работы в другую функцию. Но пока не придумал как ими пользоваться. Главная фишка это утилизировать битовые операции. Я сделал такое: a|b превращается в function(c) return b(a(c)) end. Но оказалось, что это почти бессмысленно, если мы не можем получить ключ\значение из цикла. В итоге, я уже могу написать вот такую функцию: _4|(Dsel|Dd&0) Получится вот так (примерно): for k,v in pairs{1,2,3,4} do (function() return D.drop(0) end)(D.select(v,k)) end Но как то криво всё равно. Не элегантно. Но уже можно пользоваться. javaw_0VdCQylZec.mp4
  12. 1 балл
    У меня есть идея, но она ломает изначальный замысел. С точки зрения пользователя я бы предпочёл использовать стандартный синтаксис Lua, и чтобы все необходимые сокращения кода за меня выполняла программа. Получилось бы подобие упаковщика кода в последовательность ASCII-символов, которые можно было бы ввести через наковальню.
  13. 1 балл
    Писать программы для eeprom - то еще занятие. Попробуем облегчить этот процесс. в \config\OpenComputers.cfg устанавливаем bufferChanges=false Это отключит буферизацию, и все изменения файлов в каталогах сохранения будут немедленно отображены внутри игрыЗагружаем игру в сингл, строим себе базу, ставим там компьютер, и инсталлируем на него OpenOS.После этого, в каталоге \saves\%save_name%\opencomputers\ появится UID нашего виртуального "винчестера", со всем содержимымЗаписываем туда файл bibi local gpu = component.proxy(component.list("gpu")()) gpu.bind(component.list("screen")()) local cy=1 prn=function(...) local t={...} for i=1,#t do t[i]=tostring(t[i]) end gpu.set(1,cy,table.concat(t, ' ')) cy=cy+1 end local readfile=function(f) for addr in component.list("filesystem") do local fs=component.proxy(addr) local h=fs.open(f) if h then --костыль для init.lua computer.getBootAddress=function() return addr end local s,r='','' while r do r=fs.read(h,math.huge) s=s..(r or "") end fs.close(h) return s,f end end end prn('bibi: press a key to force init.lua') computer.beep(440) local s,f=readfile('boot.lua') if ({computer.pullSignal(1)})[1]=='key_down' or not s then s,f=readfile('init.lua') end if s then local r,e=load(s,f) if r then r,e=pcall(r) end prn('bibi:', r, e) else prn('bibi: no file') end prn('bibi: press a key to reboot') repeat until ({computer.pullSignal()})[1]=='key_down' computer.shutdown(true) И файл boot.lua prn('Hello world', nil~=false) После чего в OpenOS делаем: flash -q bibi bibi reboot Наблюдаем наш хелловорлд и убеждаемся, что nil и false - это две большие разницы: Теперь открываем наш boot.lua в блокноте или в чем вам удобно писать код, разминаем мозги и пальцы и погружаемся в процесс творчества. В одном окне блокнот с кодом, в другом - майнкрафт с нашим виртуальным компьютером. Написали-сохранили-проверили. --- Ошибки компиляции нашего кода будут выглядеть так: Ошибки выполнения так: А если нам захочется в OpenOS то мы нажмем секретную кнопку "а кей" когда наш bibi пискнет при старте.Также в OpenOS мы попадем если bibi не найдет файла boot.lua. А если и init.lua не найдет, то скажет "no file" и будет ждать когда мы исправим ситуацию ЗЫ Не злоупотребляйте prn(), она очень служебная и не умеет scroll, конечно scroll это всего лишь условие и две строки, но зачем?! Пишите свои prn-ы с преферансом и барышнями, предварительно поиграв ну хотя-бы с таким вот хелловорлдом:
  14. 1 балл
    Картинка с восклицательным знаком.
  15. 1 балл
    Просто оставлю это здесь. Картинка сделана на основе шрифта из OC 1.6.2.12. Я убрал из неё большую часть японских(и прочих китайских) символов. Все символы которые отображаются как "?" были заменены на пробелы. старая таблица новая таблица пример использования: 0. допустим нам нужен символ с человеком. 1. ищем его в таблице. он находится в строке EC2# и в столбике 3. 2. соединяем их и у нас получается EC23. это и есть номер нашего юникод символа в HEX. 3. далее используем библиотеку unicode. код следующий: local unicode=require("unicode") s=unicode.char(0xEC23) И вуаля. переменная s теперь содержит нашего человечка.
  16. 0 баллов
  17. 0 баллов
    Показывает основную информацию о системе и дисках, позволяет выбирать приоритетный и конкретные диски для загрузки. Из работающего: Информация о системе Краткая информация о дисках Загрузка через init.lua в корне диска Установка приоритетного загрузочного диска (при старте биос будет пытаться загрузится именно с него, а потом уже проверять другие диски) Выжигающий глаза интерфейс и код Форматирование дисков Загрузка в MineOS Из не работающего: Загрузка в Plan9k и SecureOS Вкладка настроек Частично работающее: Загрузка в MineOS (не будет работать если установлено значение приоритетного диска) Предстоит реализовать: Вкладку настроек с языком Включение/выключение авторана Функцию ремонта файла запуска системы (перекачка с репозиции) Модификатор запускаторов MineOS и OpenLoader Запуск файлов на уровне биоса Поддержку (хоть какую нибудь) дисков в блочном режиме Вырезать главный кусочек и сделать возможность работы без интернет карты Перелопатить интерфейс и код, дабы делать всё через ООП Для установки прошейте биос этим файлом: https://raw.githubusercontent.com/titan123023/OCBios/master/bios-starter.lua Сслыль на репозицию: https://github.com/titan123023/OCBios Для работы требуется: Интернет карта Монитор любого уровня Клавиатура (если хотите зайти в сам биос) Как минимум 1 палец (см описание выше)
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...