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

Лидеры


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

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

  1. 3 балла
    Вроде разгрёб завал на учёбе, потихоньку возвращаюсь к OC. Вот очередная реализация, правда уже не очень простая. За то по скорости не уступает варианту с предварительно заданным списком файлов. Сам инсталятор: local internet = require("internet") local fs = require("filesystem") local shell = require("shell") local ser = require("serialization") local host = "alexcatze.pythonanywhere.com" local owner = "AlexCatze" local repo = "RacoonNet" local ref = "v0.2" local path = "/" local deploy_to = "/" function request(url) local data = "" local result, response = pcall(internet.request, url) if result then local result = pcall(function() for chunk in response do data = data .. chunk end end) end return data end files = ser.unserialize(request("http://"..host.."/?owner="..owner.."&repo="..repo.."&path="..path.."&ref="..ref)) for _,v in pairs(files) do local pth = deploy_to..v if not fs.exists(pth:match(".*/")) then fs.makeDirectory(pth:match(".*/")) end shell.execute("wget -f ".."https://raw.githubusercontent.com/"..owner.."/"..repo.."/"..ref.."/"..v.." "..pth) end Как видно, он стучится мне на pythonanywhere, откуда и берёт список файлов. Вот код с pythonanywhere: from flask import Flask from flask import request import requests import json def request_url(url, result): r = requests.get(url) j = json.loads(r.text) for x in j: if x["type"] == "file": result = result + "\"" + x["path"] + "\"," else: result = request_url(x["url"],result) return result app = Flask(__name__) def main(): uname = "AlexCatze" token = "тут мой токен, вам я его не скажу!!!" if uname != request.args["owner"]:#Проверка, что бы другие не использовали мой лимит return "{}" result = request_url("https://"+uname+":"+token+"@api.github.com/repos/"+request.args["owner"]+"/"+request.args["repo"]+"/contents"+request.args["path"]+"?ref="+request.args["ref"],"{") result = result + "}" return result app.add_url_rule("/", "main", main,methods=['GET']) Тут мы получаем запрос, из него извлекаем нужные данные. Потом используя api ключ(тогда лимит запросов 5000 в час), рекурсивно получаем список файлов, и отправляем его на клиент. Вечером подробно распишу, как это настроить.
  2. 1 балл
    Очередной никому не нужный мост Библиотека для Kotlin/Java с клиентом OpenComputers для интеграции в ваше приложение. Мост нестандартный. Потому что может это всё: Выполнение существующих функций на удаленном устройстве OpenComputers (без компиляции, быстрый способ) Выполнение произвольного кода на удаленном устройстве OpenComputers (с компиляцией, медленный способ) Можно комбинировать выполнение функций и кода в одном запросе, передавая в аргументы результаты предыдущих выполнений. Получение ивентов с фильтром (например, по умолчанию игнорируются множество ивентов пользовательского ввода) Возможность отправки любых сообщений через протокол из, например, event.listen (что крайне не рекомендуется, но возможность есть) Соединение с клиентом будет разорвано автоматически максимум через 10 секунд, если компьютер перестал функционировать (например, выгрузился чанк или отключился сервер), а соединение не разорвалось. И все это с условно-неограниченным количеством подключенных клиентов - лишь бы хватило ОЗУ, производительности ЦПУ и ОС хоста поддерживала что-то получше select (у него есть ограничение в 1024 сокета). Так же поддерживается аутентификация, но не поддерживается шифрование. Оно было бы возможно (в простом варианте без кучи кода и криптографии), если бы мод поддерживал вебсокеты, но пока такая возможность отсутствует. Основная цель - хранение кода подальше от опенкомпов, желательно у себя дома. Так же вы всегда знаете, подключен ли компьютер или нет. Минусы: Требуется статический белый айпи (хотя для написания промежуточного сервера нужно переписать минимум кода благодаря использованию селекторов, я пока не стал этого делать) Из-за того, что изначально OpenComputers не имеет кода для выполнения, немного снижена производительность. Присутствует Javadoc. Пример кода на стороне сервера (Kotlin) Более полный пример (тоже котлин) Репозиторий - в README есть описание работы, а в самом репозитории готовый клиент на moonscript. Да-да, я знаю, что в Lua нет компиляции, но судя по скорости это именно она и происходит.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...