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

eu_tomat

Модераторы
  • Публикации

    2 666
  • Зарегистрирован

  • Посещение

  • Победитель дней

    331

Сообщения, опубликованные пользователем eu_tomat


  1. 20 минут назад, eu_tomat сказал:

    Скорее всего, гитхаб имеет API, позволяющий избежать и лишнего трафика и этих трюков с парсингом.

    Ну, точно! Есть 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",

     

     

    • Нравится 2
    • Спасибо 1

  2. 1 минуту назад, AlexCatze сказал:

    Понял, спасибо. Осталось только прикрутить распознавание файлов и каталогов, и будет считывалка.

    Я забыл сразу упомянуть один важный момент. Надо как-то отличать каталоги от файлов. Интуитивно понятное решение: искать в тексте ссылку на raw-формат файла. Но оно потребует дублирования запроса и ожидания отдачи страницы. Есть более быстрое решение: сразу запрашивать сырой формат. Если получишь 404, значит это не файл, а каталог. Это решение потребует меньше трафика и времени на ожидание.

     

    Скорее всего, гитхаб имеет API, позволяющий избежать и лишнего трафика и этих трюков с парсингом. Моё решение следует рассматривать как отправную точку, интуитивно понятную, но вряд ли оптимальную.

    • Нравится 1

  3. 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

  4. @AlexCatze Есть два предложения:

     

    • Немного упростить гайд, чтобы не заставлять пользователя возвращаться туда-сюда:
    11 минуту назад, AlexCatze сказал:

    2)Заливаем нашу папку на github

    3) Создаём на компьютере файл installer.lua, в него вставляем следующее содержимое:

    ...

    4)Возвращаемся к github`у, открываем любой файл, и нажимаем "raw". Нас интересует адрес файла. Копируем эту часть(без "/" в конце):

    174362339_.png.7b687d0330ae51f2ef6d0c2d46982049.png

    5)Возвращаемся к нашему файлу, вставляем полученный адрес в поле prefix. Должно получится так:

    Пишем проще: заливаем на гитхаб..., копируем адрес..., создаём файл..., вставляем адрес...

     

    Страницы разбираются не сложно, по фразе data-pjax="#repo-content-pjax-container".

    Это позволит пользователю не повторять процедуру при смене структуры каталогов или добавлении и удалении файлов.

    • Нравится 1

  5. 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, который сам по себе загружен все время так же происходит данная ошибка.

    Ошибка возникает только на сервере или и в одиночной игре тоже? И что это за сборка?


  6. 2 часа назад, FKOLOBKOV сказал:

    В системе всего по 1 компоненту, которые проверяются на наличие, т.е. если их нет, по логике должна программа писать "false", а не выбивать ошибку.

    Именно component.isAvailable() вызывает ошибку?

    Если так, то на какой версии Minecraft и OpenComputers?


  7. 1 час назад, FKOLOBKOV сказал:

    Делали проверку через component.isAvailable("Название_компонента") в итоге не помогло, есть подозрение что виновник торжества сама библиотека component.

    Почему подозрение пало на библиотеку component?

     

    component.isAvailable позволяет определить наличие компонента определённого типа, но не гарантирует, что найден именно тот компонент, что когда-то был сохранён в переменной программы.


  8. 2 минуты назад, Grobovshik5121 сказал:

    компьютер тоже будет включатся сам или всё-же нужно будет включать его вручную?

    Да, в современных версиях ComputerCraft компьютер включается сам при загрузке чанка, в котором находится компьютер.

     

    В OpenComputers выполнение программы приостанавливается при выгрузке чанка, а при загрузке продолжается ровно с того же места, где оно было приостановлено.

     

    В ComputerCraft при выгрузке чанка выполнение программы обрывается, а при загрузке чанка компьютер включается и выполняет стартовый скрипт.


  9. 9 часов назад, Grobovshik5121 сказал:

    Всё было аж так просто??

    Ага. Весь секрет в формулировках.

     

    Первая:

    18 часов назад, Grobovshik5121 сказал:

    Как сделать так, что-бы программа на компьютере запускалась сама без ручной активаци при перезапуске мира?

    Это формулировка требует обнаруживать факт перезапуска мира. Эта задача не всегда имеет решение.

     

    Последняя:

    10 часов назад, Grobovshik5121 сказал:

    При каждом перезаходе в игру/мир, нужно постоянно прибегать и включать программу на компе, тк она выключается, а это немного запарно, поэтому ищу способ это автоматизировать

    Эта формулировка требует всего лишь настроить автозапуск программы при загрузке компьютера.

     

    Вот она, сила формулировок:

    • Компьютеры ComputerCraft перезагружаются не столько при перезапуске мира, сколько при перезапуске чанка. Отслеживать загрузку мира в этом случае не требуется. Задача упрощается.
    • Компьютеры перезагружаются не только при перезапуске чанка, но и механиками самого мода. Отслеживать перезагрузку чанка не требуется. Задача упрощается ещё сильнее.
    • Компьютер загружается не только при его перезагрузке, но и просто при включении. Отслеживать факт перезагрузки компьютера также не обязательно. А это уже совсем простая задача!

     

    • Нравится 1

  10. 1 минуту назад, Grobovshik5121 сказал:

    Я тут покопался, если запихнуть текущий код в файл startup, будет работать или фигня идея? 

    Эта идея сгодится для того, чтобы программа запустилась в момент включения компьютера. Но тогда появится новый вопрос: как включить компьютер в момент загрузки мира? И, опять же, компьютер в незагруженном чанке в любом случае не включится, даже если загружен мир.


  11. Только что, Grobovshik5121 сказал:

    Нет, там всё равно только система лифта... 

    В этих условиях задача вряд ли имеет решение. Компьютер не отличает перезагрузку мира от перезагрузки чанка, в котором находится этот компьютер. Да и перезагрузку чанка можно однозначно идентифицировать не на всех серверах.

    • Ха-ха 1

  12. 31 минуту назад, Mihis сказал:

    Останавливает ли выполнение программы component.drone.move?

    component.drone.move(...) возвращает управление в программу, не дожидаясь завершения движения.

    Приближение к целевым координатам контролируется с помощью component.drone.getOffset().

    • Нравится 1
    • Одобряю 1
    • Спасибо 1

  13. 1 минуту назад, NEO сказал:

    В ОС по умолчанию заблокированы все локальные адреса.

    Речь шла о том, что в случае изолированных сетей за NAT эти блокировки не имеют значения, и этот момент требуется уточнить в первую очередь. Автор вопроса сделал это уточнение чуть раньше, пока я писал своё сообщение.


  14. 3 минуты назад, CrimsonTheLynx сказал:

    Может знаете какие нибудь библиотеки для работы с tcp? Просто прокси не хотелось бы задействовать, если без вариантов, то буду шаманить с прокси)))

    Если ты админишь эту локалку, то можно на роутере переадресовать трафик на локальный адрес.


  15. 23 минуты назад, CrimsonTheLynx сказал:

    Так в моде, а вернее в его конфиге по умолчанию есть параметр blacklist и там среди всего есть "192.168.0.0/16", а мой ip как раз начинается с 192.168 и из за этого я не могу подключиться к серверу, потому что если убрать строку с "192.168.0.0/16" то в одиночной игре все начинает работать нормально.

    А игровой сервер физически находится в одной подсети с твоим компьютером? Или в разных?

     

    Даже если IP твоего компьютера входит в подсеть 192.168/16, и IP игрового сервера входит в ту же подсеть, это не значит, что они физически находятся в одной сети. Даже при подключении к одному коммутатору они могут находиться в разных VLAN/ Соответственно, и друг друга они могут видеть под другими адресами. Тогда и чёрный список в конфиге не будет оказывать влияния на доступ к твоему IP.


  16. 8 минут назад, CrimsonTheLynx сказал:

    вариант подключения по tcp без модификации settings.conf

    Можно поднять прокси-сервер на другом IP. Но администратору игрового сервера ничто не мешает добавить в чёрный список и новый IP тоже.

     

    Поэтому для начала следует решить проблему, из-за которой твой IP оказался в чёрном списке. Как это произошло?

     


  17. @Noni23 Не всем интересна тема 3D-печати. Тем более, мало кто хочет говорить об этом в дискорде. Предлагаю задавать вопросы здесь, на форуме. Тогда и шансов получить ответ будет больше, и ответы помогут кому-то ещё кроме тебя.

    • Нравится 1

  18. 53 минуты назад, Noni23 сказал:

    я начинающий пж пролайкайте)

    Можно и лайкнуть. Но отпугивает отсутствие скриншотов моделей и код, размазанный на километр. С какой целью описания форм последней модели разбиты на 9 строк?

     [1] = {
          [1] = 0,
          [2] = 0,
          [3] = 0,
          [4] = 16,
          [5] = 16,
          [6] = 1,
          texture = "planks_oak"
        },

    Что мешает компактно оформить их одной строкой, как для первых двух моделей?

    • Нравится 1

  19. 5 минут назад, OpenReactor сказал:

    На свой.

    Решение зависит от того, каким образом был сделан сайт. В большинстве случаев загрузка текстового файла ничем не отличается от загрузки других файлов, например, HTML-кода страничек или скриптов. Если же сайт был сделан каким-то конструктором сайтов, то решение зависит от конкретного конструктора. Какой случай у тебя?

×
×
  • Создать...