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

Лидеры


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

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

  1. 1 балл
    Что такое RemoteOS RemoteOS - это мост для связи OpenComputers с внешним миром, написанный на языке C# (.NET 6.0). В чём отличие RemoteOS от уже существующих решений Начнём с самого очевидного и главного - на сервере имеется (почти) точная копия API OpenComputers. Это позволяет не только использовать подсказки в коде при работе с мостом в IDE но и проверять данные подаваемые в методы ещё до отправки их на компьютер OpenComputers(далее машина). Так-же такой подход позволяет реализовать кэширование, которое даёт возможность в некоторых местах не дёргать постоянно машину для опроса актуальных значений... Из-за того что на сервере наклёпано столько архитектуры он не такой легковесный как остальные мосты... Мой мост работает не из под OpenOS а прямо с EEPROM'а, что позволяет значительно снизить минимальные системные требования для работы этого моста но при этом это же отличие значительно его ограничивает - будут недоступны все те удобненькие библиотеки из опенос, то-есть нельзя работать ни с чем кроме того что предоставляет lua и клиентская ос моста... Не нужно запрашивать сигналы с машины, она сама их шлёт серверу... Какие у RemoteOS системные требования Для машины - интернет карта и EEPROM прошитый на клиентскую ос RemoteOS Для сервера - 1 открытый сетевой порт чтобы иметь связь с машиной и достаточная вычислительная мощность чтобы суметь запуститься а затем отсылать пакеты машинам, получать от них ответ и обрабатывать этот ответ... Как же всё таки пользоваться RemoteOS Начнём с того что C# - не самый удачный выбор для связки с LUA ибо C# это строго типизированный яп а луа не очень...и подгонять сервер под все причуды луа кода было тем ещё приключением...но у меня вроде как вышло, так что посмотрим как всем этим добром пользоваться... Ловля подключений: Компоненты: Сигналы: Выполнение произвольного кода: Директивы предпроцессора: Веб сервер: Какие у меня планы на RemoteOS [+] Планирую добавить документацию в код, чтобы можно было прямо в IDE зачитать что конкретный метод делает... [+] Хочу сделать веб-интерфейс для управления машинами Хочу довести кэширование до ума, чтобы надо было дёргать машины ещё меньше Может быть добавлю поддержку локальной(внутриигровой) сети на сетевых картах/ретрансляторах чтобы ещё больше снизить минимальные требования для клиентской ос Ссылки Репозиторий проекта: Тык (Github) Клиентская ОС: Тык (Github) Демо-видео: Тык (Яндекс диск)
  2. 1 балл
    Не поленился, и всё же открыл свой git сервер, что бы найти код этого безумия php код серверной части: function giveItemsListBysearchKeyWord() { //функция поиска в списке предметов по ключевому слову. Дальнейшая расфосовка результата по страницам и отдача готового результата клиенту include 'connectTodb.php'; $ItemsListForClient; $giveItemsListToClientArray = null; $getJsonDataFromClient = json_decode($_GET['jsonData'], true); //var_dump($jsonDataFromClientsDBitems); $searchKeyWord = strval($getJsonDataFromClient['dataFromClient']); //ключевое слово, для поиска по базе данных. $selectItemsListBysearchKeyWord = $mysqli->query("SELECT itemLabel, itemDamage, itemName, itemUUID, itemPriceCoins, itemmaxSize, canCraft, itemOnSaleStatus FROM items_market WHERE itemOnSaleStatus = 1 and itemLabel like '%$searchKeyWord%'"); foreach ($selectItemsListBysearchKeyWord as $key => $value) { //Поиск совпадения по ключевому слову из GET запроса, и забивка в новую таблицу, что бы в дальнейшем побить это всё на страницы и строки. if (!empty($value)) { //var_dump($row); $ItemsListForClient[] = array( "itemUUID" => $value['itemUUID'], "itemDamage" => $value['itemDamage'], "itemName" => $value['itemName'], "itemLabel" => $value['itemLabel'], "itemmaxSize" => $value['itemmaxSize'], "canCraft" => $value['canCraft'], "itemPriceCoins" => $value['itemPriceCoins'] ); //var_dump($ItemsListForClyient); } } if (!empty($ItemsListForClient)) { $countallItems = count($ItemsListForClient); //выяснение сколько в общем элементов в массиве allItems и запись этого результата в переменную $countPage = ceil($countallItems / 15); // деление на количество элементов в массие, строк на странице будет 16 $ArrayWalkStart = 0; $ArrayWalkEnd = 15; for ($z = 1; $z <= $countPage; $z++) { //echo "Z:".$z." "; //giveItemsListToClientArray[] = $z; $giveItemsListToClientArray[] = splittItemsListIntoPages($ArrayWalkStart, $ArrayWalkEnd, $ItemsListForClient); $ArrayWalkStart = $ArrayWalkStart + 15; $ArrayWalkEnd = $ArrayWalkEnd + 15; } echo json_encode($giveItemsListToClientArray); //var_dump($giveItemsListToClientArray); } else { echo json_encode("searchReturnEmpty"); //это если ни чего не найдено } } Библа что использовалась на стороне клиента для кодирования и декодирования запрос-ответа. https://github.com/rxi/json.lua/blob/master/json.lua Код на стороне клиента. Да тут кусок, но суть думаю будет ясна. То есть, написал в строке поиска слово, нажал enter, запрос улетел на сервер в json формате, потом принимаю ответ и декодируя json строку, если не пусто, то рисую таблицу с результатом на экран. if signal[1] ~= "key_down" and signal[1] == "key_up" and specChar == 28 then --28 это номер клавиши enter local response = getRequest(whereSearchMethod,searchSaveTypeInputText) if response then if response == "searchReturnEmpty" then pageNum = 1 searchReturnEmpty_KeyTouchToRow = 0 whichTableToUseSwitch = searchReturnEmptyTable --Бьём пустой список предметов. tableToUse = whichtableToUse() eventDrawTablePageAndClickRow(pageNum, tableToUse, nil, 1, "itemLabel","itemPriceCoins") --вызов отрисовки страницы fill(2,5,78,18, " ", 0x303030) -- цвет фона в itemlist set(nil, 12, "Хм, странно, но похоже что ни чего не найдено...", 0x303030, 0xffc107) set(nil, 14, "Попробуй поискать что-нибудь другое!", 0x303030, 0xffc107) else pageNum = 1 searchReturnEmpty_KeyTouchToRow = 1 searchOnServerInItemsList = response whichTableToUseSwitch = searchOnServerInItemsList tableToUse = whichtableToUse() eventDrawTablePageAndClickRow(pageNum, tableToUse, nil, 1, "itemLabel","itemPriceCoins") --вызов отрисовки страницы end else FormOutOfService("Ошибка поиска, сервер не доступен!") end end
  3. 1 балл
    @num_pi, ты прав, но прости, брат, не удержался!
  4. 1 балл
    @LeshaInc, о чём так загрустил, что отметился под каждым постом этой темы?
  5. 1 балл
    Упал, отжался, отозвался. Да, человечество уже давно мечтает о программе, которая позволит легко создавать lua скрипты. Но дальше разговоров дело не продвинулось до сих пор. Создавать lua скрипты стало даже сложнее, чем 20 лет назад. Обязательно! Но только если создавать lua скрипты в такой программе и вправду будет легко. В идеале нужно максимально упростить интерфейс. Если можно, оставить лишь две кнопки: "создать lua скрипт" и "создать графический интерфейс", а всё остальное программа должна сделать сама. Это очень бы упростило бы процесс создания lua скриптов и графических интерфейсов. Взаимно)
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...