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

Лидеры


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

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

  1. 1 балл
    Ну, JSON:encode не превращает тебе в нормальные символы твою кириллицу. Ты перед отправкой используй Unicode Escape Sequence, тогда при запросе на сервак кодировка не слетит, потому что все символы в ASCII будут. Либо на самом серваке укажи кодировку принимаемую: Why doesn't Spring Boot force UTF-8 for parameters in a POST request? · Issue #1819 · spring-projects/spring-boot (github.com)
  2. 1 балл
    Я проверил на версии MineTweaker3-1.7.10-3.0.10B.jar, команда успешно выгрузила рецепты в файл. Попробуй у себя проверить на минимальной сборке. Возможно, конфликтуют какие-то из модов.
  3. 1 балл
    Ответ: никак. Оно смотрит не буквальные комплектующие(Могло бы оно), а их характеристики. Именно: разрешение экрана и глубину цвета. У планшета это 80 на 25, когда у 3 тир компьютера 160 50. Можно обойти это собственным щиткодом, но, наверное, не зря там стоит такое ограничение. Картинка будет насколько малой, что кнопки будут наслаиваться. Если, кстати, перевести то, что оно от нас просит, оно требует тир 3 видеокарту и экран, коим не обладает ни один планшет.
  4. 1 балл
    Можно вытянуть крафты из jar самого майна но правда версии поновее, так что прийдёться отсортировать крафты которых ещё не было на 1.7.10, да и плюсом крафтов из модов не будет ещё как вариант "написать мод" который будет считывать зарегестрированые рецепты, почти уверен что так можно сделать, правда и заниматься этим вряд ли кто то будет. лично я бы попробовал вытянуть все стандартные крафты, отсортировать и уже потом вручную добавлять тех что нету
  5. 1 балл
    Предисловие: Недавно, по накурке, мне пришла идея написать браузер для OC. Браузер это конечно хорошо, но для его работы нужна сеть. Первое, что вспомнилось, это OpenNet. Но у него нашлось некоторое некоторое количество серьёзных недостатков(про них позже). Не найдя альтернативы, я пришёл к выводу, что нужно сделать новую сеть, которая будет похожа на OpenNet, но в которой не будет таких недостатков, какие есть в OpenNet. Собственно, о каких недостатках я говорю: 1) Ограниченность в рамках одного сервера. Для того что бы от сети был хоть какой то минимум пользы, ей нужны пользователи. Тяжело найти сервер, где хотя бы пяти людям будет интересна тематика OC. 2) Требования к структуре сети. Три уровня, не больше, не меньше. Первые два - роутеры, третий - клиенты. Роутеры первого уровня соединены с роутерами второго посредством спаренных карт, и с клиентами только через модемы. 3) Низкая надёжность. Стоит из роутера второго уровня вынуть спаренную карту, он сразу превратится в кирпич. 4) Сложность в развёртывании. Два вида роутеров, три вида библиотек. Отсутствие документации. Захотел сеть на даче - нужно участие владельца "коренных" роутеров. Ключевые особенности: Собственно сеть должна обладать такими свойствами: 1) Возможность бесшовно соединять несколько игровых серверов. 2) Иметь максимально простую структуру. 3) При разрыве связи между двумя частями сети, сеть должна "раскалываться" на две, а не ломаться. 4) Сеть должна иметь максимально простую структуру, и иметь хорошую документацию Процесс разработки: Обозначив основные моменты, я потихоньку начал писать сеть. За основу брал OpenNet. С кодом можно ознакомится на складе грязи(тут сама сеть, и ещё несколько программ, которые я использую при разработке). Что сделано: Собственно, сама библиотека, реализующая связь между узлами. Роутер. Библиотека, позволяющая работать в сети программам, заточенным под OpenNet. Браузер и HTTP-сервер, из за которого собственно, всё и началось. Вернее первая его версия. Теоретически(на практике мост, который я хочу использовать, себя странно ведёт) есть возможность устанавливать соединения между игровыми серверами. Инсталлер Что нужно сделать: DNS Интернет-сервер, и клиент под него Чат (клиент, сервер) Нормальный интерфейс. Шифрование пакетов Как это всё безобразие выглядит: И так, допустим, мне очень нужно развернуть сеть. Что мне для этого нужно: Ставим три компьютера. Один будет роутером, и два клиента. Пусть один клиент подключается к роутеру через модем, а второй через спаренную карту. Начинка роутера: И клиентов: Теперь ставим на все компьютеры OpenOS и файлы с репозитория. Можно воспользоваться инсталятором: wget https://raw.githubusercontent.com/AlexCatze/RacoonNet/master/installer.lua installer Начнём с настройки роутера. Запускаем "routconf", и первым делом конфигуратор попросит указать, через какую карту роутер будет подключатся к сети. Так как сети у нас пока нет, пропускаем этот момент. Теперь у нас спрашивают, какие карты будут использоваться для подключения клиентов к роутеру. Отвечаем: Теперь можно и запустить роутер. Пишем "router", и видим картину: Роутер ругнулся, что не имеет выхода в сеть, ну оно и понятно. Теперь настраиваем клиентов, вводим "rnconfig" на каждом из них: Сеть настроена, но что теперь с ней делать? Запускаем на одном компьютере "chat_server", на другом "chat <ip сервера>" . И можем поговорить сами с собой. Или можно посмотреть на браузер. Поднимаем сервер, "webserver", браузер "wr" и наслаждаемся. К стати, сеть называться RacoonNet(над названием я не заморачивался). Собственно, зачем эта тема: Т.к. изначально я собирался сделать только браузер, и вообще, это мой первый проект на Lua, я сам долго не выдержу. Понимаю что сеть сейчас практически является копией OpenNet`а. Я ищу людей, которые захотят помочь мне. Как то так.
  6. 1 балл
    Изменен редактор. Теперь редактируется всё игровое поле. Но маааленькими точками. А было не всё, но большими. Исправлена небольшая ошибка немного снижавшая производительность. Также изменена (не критичная по влиянию на общее быстродействие часть) конкатенация строки перед выводом на экран. Исправлена критическая ошибка приводившая к вылету после последовательности операций play -> stop -> edit -> play Дорисована рамочка вокруг игрового поля и покрашена в светло-зелёный. (На т2 экране не проверялось) Покрашены надписи в разных режимах в разные цвета. Изменены правила перехода между состояниями (s)(p)(e)(c)(t)(r), теперь можно перейти почти в любой режим из любого. Теперь не надо stop -> edit -> -> play, можно сразу в edit. Добавлена возможность пропуска нескольких поколений. Включается в ручную на третьей строке. Добавлено три пресета. Автозапуск с третьего. Фигурка носит название "жёлудь", самая долгоживущая из известный маленьких фигур. Возможности выбора между пресетами из GUI не добавлены (но вы всегда можете поискать, найти, и сменить или доделать, да) На этом пока всё Ах да, чуть не забыл: https://gitlab.com/doomiurg/evolution/-/raw/main/evolution.lua
  7. 1 балл
    В общем, меня никто не просил и не ждал, но я поднял +- рабочее, на 1.12.2. Без приватов, без каких либо валют, магазинов и так далее. Есть авторизация, может потом докину ещё пару QoL-плагинов. Поменял некоторые настройки модов: Список модов: Также, так как сервер в первую очередь не для выживания, а для игр с компутерами, готов выдавать предметы -- для этого заранее пишите мне в личные сообщения discord (@wolframoviy) список предметов, по возможности буду заходить и выдавать, но разумеется в разумных количествах. Готов дать права оператора, на условиях добросовестного использования 1-2 активным игрокам. А ещё, не откажусь от добровольца, который сможет добавить планеты из Galacticraft в конфиг WarpDrive. IP: 194.187.150.243:25565 Версия: Forge 1.12.2 (тестировалось на Forge 14.23.5.2860, стандартная поставка Legacy Launcher) Сборка(все jar-файлы в папку mods): Тык
  8. 1 балл
    gpu.bind(component.list("screen")()) <--- component.list("screen")() ---> 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'screen' Получается gpu.bind('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'screen') 2 аргумент функции gpu.bind это reset: boolean Поэтому ошибка С какого то момента добавили второй аргумент в gpu.bind Здесь его нет, а здесь есть Можно заменить на gpu.bind(({component.list("screen")()})[1])
  9. 1 балл
    Фактически я так и делал на сборке с gregtechнесколько лет назад. Менял все стержни с помощью ме шин, а не труб, выключая на время замены охладителей подачу топливных стержней. Но дописывать программу для вылавливания момента рестарта сервера мне было откровенно лень. А поскольку после рестарта реактор сперва отсутствовал, а потом превращался в 7 реакторов с другими адресами на время до его самосборки в монолитную структуру с опять же новым адресом, недоделанная программа без обработки таких событий не могла продолжить работу. И пару раз реактор бахнул. Не имея возможности получить предварительные данные о рестарте сервера программа в энный момент времени оказывалась перед фактом отсутствия запрашиваемых методов и происходило это в рандомный момент выполнения кода, зачастую сразу же после проверки на наличие компонента реактор. Хочу сказать, что запрос типа getAllStacks был лимитирован временным интервалом 59 секунд. Прямым текстом написано А на это из известных мне механизмов способен как раз транспозер. И ещё робот. Предвосхищая возможный вопрос сразу скину то, что сохранилось от программы. Ёмкость охладителей которые использовал была 1080к. Контролировался один реактор, остальные, а их было штук 6 подключённых к фризеру, были паралельной цепью. --nuccontrol --1сверху-минус фризер (15) - задействовать --2сзади - плюс фризер (15) - задействовать --5слева - минус топливо(15) - задействовать --0снизу - плюс топливо (0) -включить факел local math,component,nuclear_item,error = require('math'),require('component'),{},0 local event,nuclear_scheme,iter = require('event'),{},1 local u,c,m = 'ic2stuff:hexadeca_uranium_fuel_rod','ic2stuff:coolant_cell_1080k','ic2stuff:hexadeca_mox_fuel_rod' local depleted,vent = 'depleted','heat_vent' --составим таблицу расположений элементов в реакторе for f = 1,9 do nuclear_scheme[f]=m nuclear_scheme[f+18]=m nuclear_scheme[f+27]=m nuclear_scheme[f+45]=m nuclear_scheme[f+9]=c nuclear_scheme[f+36]=c end component.gpu.setResolution(30,15) ------------------------------------------ reFreezer = function()----заменить охладители component.redstone.setOutput(1,15) while component.reactor_chamber.getStackInSlot(14) == c do computer.pullSignal(0.5) end computer.pullSignal(1) component.redstone.setOutput(1,0) computer.pullSignal(1) component.redstone.setOutput(2,15) while component.reactor_chamber.getStackInSlot(14) ~= c do computer.pullSignal(0.5) end computer.pullSignal(1) component.redstone.setOutput(2,0) return true end reFuel = function()----заменить топливо component.redstone.setOutput(5,15) while component.reactor_chamber.getStackInSlot(5) == dm do computer.pullSignal(0.5) end computer.pullSignal(1) component.redstone.setOutput(5,0) computer.pullSignal(1) component.redstone.setOutput(0,15) while component.reactor_chamber.getStackInSlot(5) == m do computer.pullSignal(0.5) end computer.pullSignal(1) component.redstone.setOutput(0,0) return true end ------------------------------------------ compareStacks=function() error=0 for f = 1,54 do nuclear_item[f]=component.reactor_chamber.getStackInSlot(f) if not(nuclear_item[f].name:find('vent') or nuclear_item[f].name:find'fuel_rod' or nuclear_item[f].name:find'coolant_cell') --~=nuclear_scheme[f] and nuclear_item[f].name~=vent and nuclear_item[f].name~=vent then error=error+1 end end return true end ----реактор проверить целостность схемы reactor_compare_elements=function() compareStacks() if error > 0 then return error end --если охладители изношены отправить к их замене if nuclear_item[14].damage > 920000 then reFreezer() end compareStacks() if error > 0 then return error end --если топливо выгорело - заменить if nuclear_item[5].name:find('depleted')then component.gpu.set(2,9,'depleted') reFuel() end compareStacks() return error end -----реактор включить выключить nuc = function(flag) if flag==component.reactor_chamber.isReactorWorking() then return true end if flag then component.reactor_chamber.startReactor() else component.reactor_chamber.stopReactor() end --ждём while(not(component.reactor_chamber.isReactorWorking() == flag))do computer.pullSignal(0.1) end return true end --реактор работать до замены охладителей work = function() while component.reactor_chamber.getStackInSlot(14).damage<920000 do component.gpu.set(2,11,'damage: '..tostring(component.reactor_chamber.getStackInSlot(14).damage)..' ') computer.pullSignal(1) local output=component.reactor_chamber.getReactorEUOutput() component.gpu.set(2,12,'reactor output: '..tostring(output)..' ') end return true end ------------------------------ function main() ---выключить реактор nuc(false) reactor_compare_elements() if error > 0 then component.gpu.setResolution(80,40) component.gpu.set(2,2,'схема не верна') return "Схема не верна" end ---включить реактор if component.reactor_chamber.getStackInSlot(14).damage < 920000 and component.reactor_chamber.getStackInSlot(14).label == c or component.reactor_chamber.getStackInSlot(14).label:find(vent) then component.gpu.set('Охладители готовы. Запуск '..tostring(iter)) iter=iter+1 nuc(true) else component.gpu.set(2,2,'Что-то пошло не так...') return false end work() return main() end main() Впрочем, это не более чем пример сохранившийся от давно не существующей на том сервере сборки модов, поэтому является не более чем вариантом возможной реализции без уточнений о перезапуске программы, автовключении компьютера, и внешней обвязке реактора.
  10. 1 балл
    В тему от 2015 года [OC] [CC] Table to string (сериализация) - Библиотеки - ComputerCraft.RU Форум Написал свой небольшой сериализатор таблиц, который возвращает строку в компактном формате в отличие от аналога из темы выше, сравнение в скриншотах внизу текущей темы. - прирост производительности при тестах на ~10% - отсутствие lookup таблицы Тесты проводились на - Lua 5.1.5 - процессор i5-9400 2.9 GHz Объекты, сгенерированные моим сериализатором требуют обычной загрузки через loadstring(s)() ( load для OC) Объекты, сгенерированные сериализатором из темы выше, требуют дополнительных операций функции десериализации через дополнительные операции над loadstring. Пример вывода: Сравнение производительности (модифицированный тест из приведенной темы: таблица на 100 000 записей, но каждая из функций сериализации запущена 250 раз с подсчетом суммы и среднего времени выполнения): Исходный код функции сериализации и соответствующего теста: Lua serialization test (github.com)
  11. 1 балл
    Не надо путать два разных понятия: версию языка и версию JRE. Да, игра работает на Java 8, но это только язык. У самой JRE ещё есть приписка — вроде 8u42. Здесь 42 — номер обновления. Думаю, очевидно же, что если в JRE баг, то фикс его язык никак не меняет? Проблема ведь не в языке, а в его реализации. Поэтому, хоть Java всё так же восьмая, реализация её получала множество обновлений различного характера. В частности, почти 8 лет назад один из таких апдейтов, 8u91, добавил в список дефолтных сертификатов те, которые нужны на замену протухавшим старым, и именно их использует GitHub. Возникает вопрос: какого чёрта качается JRE лишь немногим новее, чем MC 1.7.10, чтобы запускать MC 1.12.2? Решение этого вопроса — уж точно не область ответственности ни меня, ни @ECS, которого ты нещадно пингуешь. Скачай последний апдейт восьмой JRE (это, на секундочку, 8u411 — более, чем на 320 апдейтов новее, чем у тебя) и заставь лончер юзать её. P. S. Это форум, а не мессенджер какой-то. Здесь есть кнопка «Изменить». Не надо постить миллиард сообщений по одному предложению в каждом.
  12. 0 баллов
    Компоненты и утилиты, которые будут в составе mineCORE 4. То, что затемнено, сейчас отсутствует, но планируется к разработке после разработки основных необходимых компонентов. Если вкратце, то вот вам небольшая памятка пакетов и функций, что за что отвечает, дабы разгрузить вас от не нужной вам информации. Пакеты и утилиты, которые разрабатываются вместе с mineCORE: - MTAR: тип автономных установочных пакетов, в которых содержится собранное для mineCORE ПО; - MSH: терминальный сервер для работы с терминалом системы. По сути, это переделанный полностью bash из mineCORE 3, но с куда улучшенным функционалом; - USRMGR: менеджер пользователей и групп, что поможет настроить инфраструктуру пользования между юзерами и их окружением, отделяя их рабочие зоны; - MPKG: менеджер пакетов и сервис доставки пакетов/модулей/обновлений. Можно как обновлять систему и компоненты, так и устанавливать новые; - MVM: контейнеризация окружения систем, можно будет воспользоваться поддержкой любых систем для OpenComputers, если ПО не поддерживается, к примеру, в mineCORE, но поддерживается в условной OpenOS, вы можете его запустить без установки системы отдельно, прямо в окружении mineCORE; - MEFI: загрузчик и компонент для управления ПК и настройками запуска систем. Грубо говоря, BIOS на стероидах; Планируемые компоненты: - MSECURE (планируется): система защиты системы от несанкционированного доступа к системе и файлам. Защищает в первую очередь, не опытных пользователей; - CSDK (CoreSDK, планируется): компоненты и API для разработки ПО и утилит на базе mineCORE (планируется сделать в первую очередь, лёгкое переписывание ПО и утилит с других систем на mineCORE, дабы увеличить охват пользователей и дать им лучший опыт использования, а также облегчить разработчикам написание ПО); - mineOS Kit: кит совместимости с нашим форком mineOS (Next версия, новая) для работы mineCORE в окружении mineOS и наоборот. Это только 1/5 часть того, что будет в mineCORE 4. На самом деле, функционала у неё будет больше, чем мы анонсировали.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...