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

Fingercomp

Гуру
  • Публикации

    1 629
  • Зарегистрирован

  • Посещение

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

    283

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


  1. Началооооось... :facepalm:

    Опять друг дурга поливать будете дёгтем? Просто возьмите и объединитесь.

    ТаксШотовым вариантом я вряд ли вообще буду пользоваться до того, как там появится нормальный пароль и управление токенами централизованное (вы мне предлагаете между двумя токенами в двух браузерах вообще бегать?). Лёшиным я вообще не смогу воспользоваться, так как это нефункциональные картинки цветные (фейковые игрушки для дошкольников).

    А своими недоделками не спамьте, @@LeshaInc.

     


     

    Самым лучшим вариантом мониторинга была бы отправка КОНТЕНТА в виде HTML на страницу, с заголовками ещё, может, там. И шаблон дефолтный.


  2. Ну так на глаз я посмотрел практически понял мысль (хм, хотя с сокетами и не работал).

    Не знаю если хватит времени попробую сделать что-нибудь.

    Кстати а где в коде вообще POST запросы? Что пых должен обрабатывать какие параметры? Я кроме inet.connect из интернет-сетевого не понял.

    Придётся писать отдельный скрипт read.php, который будет работать с сокетами. Принимать команду "auth" с параметрами email, token. Возвращать OK при успешной авторизации и любую ошибку в противном случае. А дальше уже от реализации. Нужно с дашборда все сообщения переносить на этот read.php, который в свою очередь будет отправлять полученное на клиент (простого сенда хватит).


  3. Думаешь я не думал об этом.

    Но как заставить OC "слушать" сервер. Он может только отправлять запросы и получать на них ответ.(или делать while на постоянную отправку запроса на файл на сервере который будет содержать команду и выполнять ее через shell.execute).

    Пока что логику и структуру этого RCON для OC я не придумал. Если есть реально практическая реализация (код в частности для OC), то я буду этому рад.

    Так ведь нам не нужна эта фоновая прослушка сообщений с сокета! Приведу пример кода под ОС, правда, не тестил, ибо в эмуляторах нет инета =\

     

    local ADDR = "monitoring-tuxshot.c9.io/"
    local sock = inet.connect(ADDR .. "read.php") -- Создание сокета
    
    repeat                     -- Ожидание подключения
      os.sleep(.1)             -- к скрипту
    until sock.finishConnect()
    
    -- Придётся использовать авторизацию.
    local gemail, gtoken --, password (если будет)
    local connected = false
    
    -- ...несколько строк опущено... --
    
    function monitoring.read(email, token)
      if (type(email) ~= "string" or type(token) ~= "string") and not (gemail and gtoken) then
        return nil, "email and/or token not set, or wrong type"
      end
      if gemail == nil then gemail = email end
      if gtoken == nil then gtoken = token end
    
      if gemail == nil then return nil, "email not set" end
      if gtoken == nil then return nil, "token not set" end
      if not connected then
        sock.write("auth", gemail, gtoken)
        local resp = sock.read()
        if resp == "OK" then
          connected = true
          return true
        end
        return nil, resp
      end
      return sock.read()       -- Чтение из сокета через АПИ инет-карты **НЕ блокирует**
                               -- исполнение программы.
    end
    
    -- Можно дополнить функцией показа данных авторизации.
    function monitoring.getUser()
      return gemail, gtoken
    end
    
    -- При работе с сокетами через АПИ инет-карты создаётся некий "стэк" сообщений
    -- с сервера. При каждом обращении .read() этот стэк обновляется, заполняясь
    -- **_построчно_**. Таким образом, если при обновлении в стэке пришли две строки,
    -- то первый вызов .read() возвратит первую строку, второй же — вторую, и т. д.
    ------
    -- Тем не менее, можно сделать иначе, через внутренний листенер сообщений.
    -- Код короче, но возможна потеря данных на os.sleep().
    
    -- Код сверху до ф-ии monitoring.read();
    
    local event = require("event")
    local comp = require("computer")
    
    local function read()         -- Внутренняя функция => локальная.
      local data = sock:read()
      if data ~= nil or data ~= "" then
        comp.pushSignal("monitor_data", data)
      end
    end
    
    function monitoring.auth(email, token)
      if not connected then
        gemail, gtoken = email, token
        sock.write(gemail, gtoken)       -- Проверка на стороне сервера
        local resp = sock.read()
        if resp == "OK" then
          connected = true
          event.timer(.5, read, math.huge) -- В фон ставим на бесконечность работу read()
          return true
        end
        return false
      end
      return nil, "already logged in"
    end
    
    Повторюсь, не тестил. Писал наобум, код ужасный, особенно в первом примере, нужно переписать по-человечески.

  4. Конструктивный оффтоп (как мы все любим).

    Понеслась.


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

    Хотя, конечно, можно придерживаться правила вроде "главное — работает" (что, собственно, я обычно и делаю, если большего не требует никто и ничто). Но в данном случае, повторюсь, нет ни слова про ужасную работу. Просто предложение.


    Штуке чертовски не хватает отдачи команд пользователем с веб-морды. Помещать в буфер команды с веб-интерфейса и на либе делать команду .read(), которая возвратит строку и удалит из буфера. То бишь, сокет на прослушивание команд.


  5. Отрисовать OC сможет и так, без find.

    На счет матов: нашел парочку)

    Жми "Ответить" под сообщение, неудобно ориентироваться.

    Отрисовать он сможет и так, согласен. А вот отыскать в строке юникодовскую последовательность? Он ведь этим занимается сначала (см. код).

    Ну а маты — не зацикливайся на этом)) Сам же нецензурную лексику употребляешь. Тем более, что в программах важна работоспособность в первую очередь, а комменты большинство почти не читают.

     


    Штука хорошая, выглядит удобной. Надо бы впилить в едит такое.


  6. ...

     

    Так и должно быть (см. кол-во строк)?

     

     

    PXATfwA.png

     

     

     

    P. S. Только заметил (см. вр. обн.). При удалении токена в лог сыпятся ошибки стэктрейсовые (не успел разглядеть). Что-то в пхп напортачено.

     

    P. P. S. Лучше для публичных токенов делать указываемое ИМЯ, а не использовать название токена заместо него. email легко узнать, я бы сказал, СЛИШКОМ легко.


  7. Ингрийский — язык какой-то межмировой, тыры-пыры, не важно. Важно то, что тот же "ThiefBot" поймётся и русскими, и американцами, и китайцами, т. д. Напирмер, Hologram Editor — название идеальное, суть отражает, на англофорум по ОС публиковать можно. Другой вопрос, а нужна ли такая мультиязычность этой программе? Думаю, нет, так что русские имена вполне сойдут.


  8. да при чем тут виндовс? И когда это винда не работала с UTF-8?  Это что-то новенькое :o

     

    Скачал файл. Файл там изначально в кодировке ANSI  http://puu.sh/jZwL3/db399dcc2b.png  Если его конвертировать в UTF,

    то вот - http://puu.sh/jZwLL/0c3b6cdebd.png

    Там где-то каша с кодировками какая-то. Я понимаю черную зависть линуксоидов с выходом win10, но не надо же так люто и еще больше теперь за то ненавидеть винду :D

    Тогда почему скачанный мною файл ИЗНАЧАЛЬНО был в кодировочке UTF-8 и отображался нормально?..


  9. Там было что-то вроде: [OpenComputers] HologramEditor ver 0.7.8 интертеймент роботинг корпорэйшн программинг бай Тоторо энд Нео и что-то бла-бла-бла

    И именно Дима попросил переименовать в просто: "Hologram Editor [OpenComputers]" . Вот и весь, в принципе, тайный смысл, если он там, конечно, есть :)

    Там было "HE 0.70 <бла-бла-бла>". Я потом переименовал в просто "[OpenComputers] HologramEditor", затем префикс вдруг стал постфиксом) Ах, ладно, пусть так будет


  10. Нельзя посмотреть потому что textarea грузиться через AJAX с 1 мс. обновлением (я уже говорил).

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

    Насчет выехавших полей могу лишь сделать перенос в textarea.

    хм...

    А фокус со считыванием scrollTop/scrollLeft, обновлением и записыванием обратно в scrollTop/scrollLeft не катит?

    П.С. Дима! И с кодировкой глянь, пжлст, что там за попка. Если сендить рус., вылезает вот это. (http://puu.sh/jZngK/65721cd621.png)

    С кодировкой проблема ЯВНО не на дашборде) Проблема с сервером Майнача (ну, это ж Винда, конечно же она с UTF-8 нормально не работала никогда на моей памяти) или с кодировкой файлов. На виндосервере Файна на тесте Дримса я отсылал на пастбин прогу, когда скачал на хосте текущем — там ненормаль творилась.


  11. Эта... эти... это... поле сбрасывает прокрутку на каждом обновлении! В общем, выехавшие за пределы поля строчки строки просмотреть просто так нельзя.

    Вот скриншотик ситуации (text-wrap какой-то нужно ставить нормальный, без полосочек этих) + демонстрация отличной работы кодировочных элементов (отправлено через прямой пост-запрос хтпэсовский с компьютера)

     

     

    yKdQfD6.png

     

     


  12.  Ну так есстественно, нет этой функции. exportItem == nil

    Поэтому у нет у нас еще базара.

     

    Проблема очевидно на вашей стороне. Версия мода старая, мб?

    Самая последняя, что вообще существует, с гитхабика:

     

     

    4YCSdnO.png

     

     

     

    Как видно, всё там есть.

    • Нравится 1

  13. Я не нашел метода exportItem. Остальные методы типа "pullItem" и "pushItem" непонятно как работают. Когда я год назад их тестил, ничего достать из МЕ не получалось.

    Хм...

     

     

    local me = com.me_interface
    
    -- ... --
     
    local function pushItem(item, slot)
      local itemPrint = item.fingerprint
      print("[INFO] [Pusher] Exporting " .. itemPrint.id .. "@" .. itemPrint.dmg .. " into robot (Slot: " .. slot .. ")")
      rSlot = slot + TECH_SLOTS
      rSlot = rSlot + math.floor((slot - 1) / 3)
      me.exportItem(itemPrint, DIR, 1, rSlot) -- [!]
    end
    

     

     

    Может, будет где-то полезным. Последняя строка, как минимум. Принимает структуру (fingerprint, направление по отношению к интерфейсу, количество, слот конечного инвентаря).

    pushItem не экспортирует из МЭ. Это общая штука для всех адаптеров, пытающая выпихнуть из САМОГО интерфейса предметы (то есть, сначала придётся указать конфигурацию, дождаться и потом уже пашить в соседей). Но exportItem проще.

     


    Хотя могли и выпилить функцию эту... Не тестил


  14. Там нет нужных функций. Но на всякий случай, пойду еще раз проверю.

    С OpenPeripherals появляются: interface.exportItem(fingerprint, direction, stacksize) — экспортирует предметы из системы, как, например, из сундука, нужно иметь отпечаток "fingerprint" — таблица {["id"] = "somemod:someitem", ["dmg"] = itemmetadata, ["nbthash"] = NBTHash}, где "id" — имя предмета, "dmg" — метаданные и nbthash — хэш нбт-данных. Всю эту информацию можно получить через функцию interface.getAvailableItems() — возвращает таблицу с предметами в МЭ.


  15. -- … --

    Зачем спорить вообще с самой идеей? Потому, что на ИТ-Лайт АЕ не будет? И не пойму, к чему тут другие серверы. Я загуглил — сразу тонна серверов нашлась с АЕ. Кто-то неправильно ищет? Я понимаю, что распротранения не будет из-за отсутствия ОС на многих севрерах, вот там да, в единичных как раз случаях и стоит (хотя и быстро находится нужное).

    Не хочется париться, а всё через плагины и моды делать (а кто-то совсем недавно с пеной во рту кричал о том, что моды — зло, и всё через компьютеры сделать можно) — ну так не нужно ничего ставить там и пр.

     

    Ну, и, наконец, блин, интерес от программирования получить нужно, а не слушать "а ае плахой делате всо на дебаке". Что, серьёзно, вообще никак нельзя сделать нормальную торговую систему без поддержки админа? Не смешите меня.

    Допустим, я поставлю 10 таких цепочек по извлечению. Это 640 предметов в такт...

    Не знаю, довольно сомнительно конечно, но можно попробовать. А где найти инфу, какие блоки подключать и какие функции вызывать? Я бы потестил.

    Для работы с МЭ вполне хватит простого интерфейса МЭшного, подключённого к адаптеру из ОС. А далее — по сетке. По `components` находим имя компонента, в `lua` пишем =component.<имя>.listMethods() — и показываются методы все. Ну, и у каждой функции есть описание. Кстати, в ComputerCraft есть встроенная программа документации по OP, не помню название только.

     

    Пиэсь: см. подпись.


  16. Я уже не помню что у нас использовалось, но это был какой то аддон к ComputerCraft'у, который умел сколько угодно каких угодно предметов перемещать.

    Воооот. В этом аддоне (OpenPeripherals) нет такой проверки, и он отлично понимается OpenComputers'ом. Нужно его использовать для базаара, раз лимиты делают невозможным работу. К сожалению, за раз — стэк максимум, но в цикле вполне можно отэкспортить всякого. Стэк — ограничение уже апишки АЕ2. Он там не пихает по нескольку, каждый пакет — реальный стэк, точнее, его представление))


  17. Я хочу чтобы в кодовом замке были звездочки а не цифры. 

    Так это ни разу не кодовый замок!)) Это что-то вроде сканера отпечатка пальца... Жмякаешь на мордочку на мониторе — пользователям дверь открывается, чужим — нет)) Установка кода там нет)


  18. Да, я сам снова и снова вспоминаю про Базар.

     

    Проблема есть и никуда не девалась.

    Интерфейсы работы с МЕ позволяют перемещать по 1-4 предмета в такт, что для целевых объемов продаж миллионами неприемлемо. Я читал чэндж логи, но так и не дождался возможности кидать сразу крупные объемы предметов из МЕ.

    О, я не одинок в этой Вселенной! O_o

    Сам долго мучался, бился головой, перелазил исходники на гите, пока не обнаружил... Пока не обнаружил, что скорость экспорта зависит от количества акселерационных апгрейдов, как на странно Oo. Кстати, у вас используется OpenPeripherals в работе?


    Код самого OC-драйвера к экспорт-шине. Пришлсь ставить интерфейс и OpenPeripherals, там такого безумия нет.

     

     

    LZk6yYc.png

     

     


  19. Эх, блин, прождал почти год БАЗААРА — и ничего :( Будет ли возобновлена в ближайшем будущем работа над проектом? Написано уже, я так понимаю, кода много, а бросать на полпути такое — ну, печально. Проблемы давно нет никакой — OC спокойно взаимодействует с МЭ-сетью, а использование интерфейса вообще минимизирует всякие ненужные затраты кода и времени. И метаданные, и NBT.

    • Нравится 1
×
×
  • Создать...