eu_tomat
-
Публикации
2 666 -
Зарегистрирован
-
Посещение
-
Победитель дней
331
Сообщения, опубликованные пользователем eu_tomat
-
-
1 минуту назад, AlexCatze сказал:Понял, спасибо. Осталось только прикрутить распознавание файлов и каталогов, и будет считывалка.
Я забыл сразу упомянуть один важный момент. Надо как-то отличать каталоги от файлов. Интуитивно понятное решение: искать в тексте ссылку на raw-формат файла. Но оно потребует дублирования запроса и ожидания отдачи страницы. Есть более быстрое решение: сразу запрашивать сырой формат. Если получишь 404, значит это не файл, а каталог. Это решение потребует меньше трафика и времени на ожидание.
Скорее всего, гитхаб имеет API, позволяющий избежать и лишнего трафика и этих трюков с парсингом. Моё решение следует рассматривать как отправную точку, интуитивно понятную, но вряд ли оптимальную.
-
1
-
-
52 минуты назад, AlexCatze сказал:Можно, пожалуйста, по подробнее.
Вот пример скрипта, считывающую ссылки на элементы каталога:
local url = "https://github.com/AlexCatze/racoon-dev/" local internet = require("internet") local html = "" local result, response = pcall(internet.request, url) if result then local result = pcall(function() for chunk in response do html = html .. chunk end end) end if result then html:gsub( 'data%-pjax="#repo%-content%-pjax%-container" href="(.-)">', function(s)print(s)end ) end
Результатом его выполнения вывод будет следующий вывод:
/AlexCatze/racoon-dev/tree/master/bin /AlexCatze/racoon-dev/tree/master/boot /AlexCatze/racoon-dev/tree/master/etc /AlexCatze/racoon-dev/tree/master/lib /AlexCatze/racoon-dev/tree/master/www
Далее потребуется рекурсивно обойти все каталоги и найти в них файлы.
-
1
-
-
@AlexCatze Есть два предложения:
- Немного упростить гайд, чтобы не заставлять пользователя возвращаться туда-сюда:
11 минуту назад, AlexCatze сказал:2)Заливаем нашу папку на github
3) Создаём на компьютере файл installer.lua, в него вставляем следующее содержимое:
...
4)Возвращаемся к github`у, открываем любой файл, и нажимаем "raw". Нас интересует адрес файла. Копируем эту часть(без "/" в конце):
5)Возвращаемся к нашему файлу, вставляем полученный адрес в поле prefix. Должно получится так:
Пишем проще: заливаем на гитхаб..., копируем адрес..., создаём файл..., вставляем адрес...
- Дописать установщику возможность динамически считывать структуру репозитория, например, из каталога https://github.com/AlexCatze/racoon-dev/installer
Страницы разбираются не сложно, по фразе data-pjax="#repo-content-pjax-container".
Это позволит пользователю не повторять процедуру при смене структуры каталогов или добавлении и удалении файлов.
-
1
-
6 часов назад, FKOLOBKOV сказал:Если судить по ошибке, то она происходит на 108 строке кода, где идет проверка подключен ли компонент к компьютеру, если подключен - выполнение последующей части кода, где используется данный компонент.
Да, действительно. Сразу я не смотрел скриншоты, а ориентировался по описанию:
19 часов назад, FKOLOBKOV сказал:Делали проверку через component.isAvailable("Название_компонента") в итоге не помогло
Из этой формулировки не ясно, как именно не помогло, и что ошибка генерируется именно при выполнении component.isAvailable.
7 часов назад, FKOLOBKOV сказал:Версия minecraft - 1.7.10
Версия OpenCompucters - 1.6.2.12 (в папке с модами написано), в игре OpenOS - 1.6.1Я сейчас сравнил работу component.isAvailable в 1.6.2.12 и 1.7.5.1290. Отличий не вижу. При этом в 1.7.5.1290 подобная проблема у меня ни разу не возникала. Проблема вряд ли в библиотеке component.
7 часов назад, FKOLOBKOV сказал:На компьютере используемом в чанке с точкой spawn, который сам по себе загружен все время так же происходит данная ошибка.
Ошибка возникает только на сервере или и в одиночной игре тоже? И что это за сборка?
-
2 часа назад, FKOLOBKOV сказал:В системе всего по 1 компоненту, которые проверяются на наличие, т.е. если их нет, по логике должна программа писать "false", а не выбивать ошибку.
Именно component.isAvailable() вызывает ошибку?
Если так, то на какой версии Minecraft и OpenComputers?
-
1 час назад, FKOLOBKOV сказал:Делали проверку через component.isAvailable("Название_компонента") в итоге не помогло, есть подозрение что виновник торжества сама библиотека component.
Почему подозрение пало на библиотеку component?
component.isAvailable позволяет определить наличие компонента определённого типа, но не гарантирует, что найден именно тот компонент, что когда-то был сохранён в переменной программы.
-
2 минуты назад, Grobovshik5121 сказал:компьютер тоже будет включатся сам или всё-же нужно будет включать его вручную?
Да, в современных версиях ComputerCraft компьютер включается сам при загрузке чанка, в котором находится компьютер.
В OpenComputers выполнение программы приостанавливается при выгрузке чанка, а при загрузке продолжается ровно с того же места, где оно было приостановлено.
В ComputerCraft при выгрузке чанка выполнение программы обрывается, а при загрузке чанка компьютер включается и выполняет стартовый скрипт.
-
9 часов назад, Grobovshik5121 сказал:Всё было аж так просто??
Ага. Весь секрет в формулировках.
Первая:
18 часов назад, Grobovshik5121 сказал:Как сделать так, что-бы программа на компьютере запускалась сама без ручной активаци при перезапуске мира?
Это формулировка требует обнаруживать факт перезапуска мира. Эта задача не всегда имеет решение.
Последняя:
10 часов назад, Grobovshik5121 сказал:При каждом перезаходе в игру/мир, нужно постоянно прибегать и включать программу на компе, тк она выключается, а это немного запарно, поэтому ищу способ это автоматизировать
Эта формулировка требует всего лишь настроить автозапуск программы при загрузке компьютера.
Вот она, сила формулировок:
- Компьютеры ComputerCraft перезагружаются не столько при перезапуске мира, сколько при перезапуске чанка. Отслеживать загрузку мира в этом случае не требуется. Задача упрощается.
- Компьютеры перезагружаются не только при перезапуске чанка, но и механиками самого мода. Отслеживать перезагрузку чанка не требуется. Задача упрощается ещё сильнее.
- Компьютер загружается не только при его перезагрузке, но и просто при включении. Отслеживать факт перезагрузки компьютера также не обязательно. А это уже совсем простая задача!
-
1
-
1 минуту назад, Grobovshik5121 сказал:Я тут покопался, если запихнуть текущий код в файл startup, будет работать или фигня идея?
Эта идея сгодится для того, чтобы программа запустилась в момент включения компьютера. Но тогда появится новый вопрос: как включить компьютер в момент загрузки мира? И, опять же, компьютер в незагруженном чанке в любом случае не включится, даже если загружен мир.
-
Только что, Grobovshik5121 сказал:Нет, там всё равно только система лифта...
В этих условиях задача вряд ли имеет решение. Компьютер не отличает перезагрузку мира от перезагрузки чанка, в котором находится этот компьютер. Да и перезагрузку чанка можно однозначно идентифицировать не на всех серверах.
-
1
-
-
2 минуты назад, Grobovshik5121 сказал:Перезаход в игру/мир
А чанк с компьютером всегда загружен?
-
20 минут назад, Grobovshik5121 сказал:Как сделать так, что-бы программа на компьютере запускалась сама без ручной активаци при перезапуске мира?
Что значит "перезапуск мира"?
-
31 минуту назад, Mihis сказал:Останавливает ли выполнение программы component.drone.move?
component.drone.move(...) возвращает управление в программу, не дожидаясь завершения движения.
Приближение к целевым координатам контролируется с помощью component.drone.getOffset().
-
1
-
1
-
1
-
-
1 минуту назад, NEO сказал:В ОС по умолчанию заблокированы все локальные адреса.
Речь шла о том, что в случае изолированных сетей за NAT эти блокировки не имеют значения, и этот момент требуется уточнить в первую очередь. Автор вопроса сделал это уточнение чуть раньше, пока я писал своё сообщение.
-
3 минуты назад, CrimsonTheLynx сказал:Может знаете какие нибудь библиотеки для работы с tcp? Просто прокси не хотелось бы задействовать, если без вариантов, то буду шаманить с прокси)))
Если ты админишь эту локалку, то можно на роутере переадресовать трафик на локальный адрес.
-
23 минуты назад, CrimsonTheLynx сказал:Так в моде, а вернее в его конфиге по умолчанию есть параметр blacklist и там среди всего есть "192.168.0.0/16", а мой ip как раз начинается с 192.168 и из за этого я не могу подключиться к серверу, потому что если убрать строку с "192.168.0.0/16" то в одиночной игре все начинает работать нормально.
А игровой сервер физически находится в одной подсети с твоим компьютером? Или в разных?
Даже если IP твоего компьютера входит в подсеть 192.168/16, и IP игрового сервера входит в ту же подсеть, это не значит, что они физически находятся в одной сети. Даже при подключении к одному коммутатору они могут находиться в разных VLAN/ Соответственно, и друг друга они могут видеть под другими адресами. Тогда и чёрный список в конфиге не будет оказывать влияния на доступ к твоему IP.
-
8 минут назад, CrimsonTheLynx сказал:вариант подключения по tcp без модификации settings.conf
Можно поднять прокси-сервер на другом IP. Но администратору игрового сервера ничто не мешает добавить в чёрный список и новый IP тоже.
Поэтому для начала следует решить проблему, из-за которой твой IP оказался в чёрном списке. Как это произошло?
-
@Noni23 Не всем интересна тема 3D-печати. Тем более, мало кто хочет говорить об этом в дискорде. Предлагаю задавать вопросы здесь, на форуме. Тогда и шансов получить ответ будет больше, и ответы помогут кому-то ещё кроме тебя.
-
1
-
-
2 часа назад, serafim сказал:что это за параметр collidable
Насколько я помню, этот параметр задаёт возможность прохода сущностей сквозь модельки в выключенном и включенном состоянии редстоуна.
-
1
-
-
53 минуты назад, Noni23 сказал:я начинающий пж пролайкайте)
Можно и лайкнуть. Но отпугивает отсутствие скриншотов моделей и код, размазанный на километр. С какой целью описания форм последней модели разбиты на 9 строк?
[1] = { [1] = 0, [2] = 0, [3] = 0, [4] = 16, [5] = 16, [6] = 1, texture = "planks_oak" },
Что мешает компактно оформить их одной строкой, как для первых двух моделей?
-
1
-
-
4 минуты назад, OpenReactor сказал:файл на OpenComputer
Из OpenComputers файл можно переслать через PUT-запрос. В качестве примера рекомендую изучить pastebin.lua, позволяющий как скачивать, так и отсылать файлы.
-
2 минуты назад, OpenReactor сказал:У меня есть сайт - хостинг я хочу залить туда тхт и считать на сайте. Обычный Html
И что мешает залить txt-файл тем же путём, каким заливаются html-файлы?
-
5 минут назад, OpenReactor сказал:На свой.
Решение зависит от того, каким образом был сделан сайт. В большинстве случаев загрузка текстового файла ничем не отличается от загрузки других файлов, например, HTML-кода страничек или скриптов. Если же сайт был сделан каким-то конструктором сайтов, то решение зависит от конкретного конструктора. Какой случай у тебя?
-
4 минуты назад, OpenReactor сказал:нужно загрузить файл "base.txt" на (сайт)
На какой сайт?


Как сделать простой инсталятор на основе github
в Гайды
Опубликовано:
Ну, точно! Есть API:
$ curl -i https://api.github.com/repos/AlexCatze/racoon-dev/contents/ 2>/dev/zero | egrep '"(path|url|type)"' "path": "bin", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin?ref=master", "type": "dir", "path": "boot", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/boot?ref=master", "type": "dir", "path": "etc", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/etc?ref=master", "type": "dir", "path": "lib", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/lib?ref=master", "type": "dir", "path": "www", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/www?ref=master", "type": "dir",$ curl -i https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin 2>/dev/zero | egrep '"(path|url|type)"' "path": "bin/chat.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/chat.lua?ref=master", "type": "file", "path": "bin/chat_server.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/chat_server.lua?ref=master", "type": "file", "path": "bin/loader.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/loader.lua?ref=master", "type": "file", "path": "bin/mc.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/mc.lua?ref=master", "type": "file", "path": "bin/ping.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/ping.lua?ref=master", "type": "file", "path": "bin/rnconfig.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/rnconfig.lua?ref=master", "type": "file", "path": "bin/routconf.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/routconf.lua?ref=master", "type": "file", "path": "bin/router.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/router.lua?ref=master", "type": "file", "path": "bin/webserver.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/webserver.lua?ref=master", "type": "file", "path": "bin/wr.lua", "url": "https://api.github.com/repos/AlexCatze/racoon-dev/contents/bin/wr.lua?ref=master", "type": "file",