Fingercomp
-
Публикации
1 629 -
Зарегистрирован
-
Посещение
-
Победитель дней
283
Сообщения, опубликованные пользователем Fingercomp
-
-
Ну так на глаз я посмотрел практически понял мысль (хм, хотя с сокетами и не работал).
Не знаю если хватит времени попробую сделать что-нибудь.
Кстати а где в коде вообще POST запросы? Что пых должен обрабатывать какие параметры? Я кроме inet.connect из интернет-сетевого не понял.
Придётся писать отдельный скрипт read.php, который будет работать с сокетами. Принимать команду "auth" с параметрами email, token. Возвращать OK при успешной авторизации и любую ошибку в противном случае. А дальше уже от реализации. Нужно с дашборда все сообщения переносить на этот read.php, который в свою очередь будет отправлять полученное на клиент (простого сенда хватит).
-
Так ведь нам не нужна эта фоновая прослушка сообщений с сокета! Приведу пример кода под ОС, правда, не тестил, ибо в эмуляторах нет инета =\Думаешь я не думал об этом.
Но как заставить 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Повторюсь, не тестил. Писал наобум, код ужасный, особенно в первом примере, нужно переписать по-человечески. -
Конструктивный оффтоп (как мы все любим).
Понеслась.
Меня очень удивила эта агрессия, если можно так сказать, по отношению более удобного и красивого интерфейса (ну, блин, сами же понимаете, что всегда есть, куда стремиться, и то, что нравится Вам, может не нравиться другим, особенно, если ничего плохого не сказано). Как бы, знаете, тут мнения высказывать не запрещено совершенно.
Хотя, конечно, можно придерживаться правила вроде "главное — работает" (что, собственно, я обычно и делаю, если большего не требует никто и ничто). Но в данном случае, повторюсь, нет ни слова про ужасную работу. Просто предложение.
Штуке чертовски не хватает отдачи команд пользователем с веб-морды. Помещать в буфер команды с веб-интерфейса и на либе делать команду .read(), которая возвратит строку и удалит из буфера. То бишь, сокет на прослушивание команд.
-
При правильном подходе робот сможет и полноценные 3D фигуры рисовать. Где то на ютубе видел прогу как в СС робот строил дом по проекту нарисованному в подобном редакторе.
http://computercraft.ru/topic/48-stroitelnaia-sistema-krutoyturtle-maining/
-
1
-
-
Отрисовать OC сможет и так, без find.
На счет матов: нашел парочку)
Жми "Ответить" под сообщение, неудобно ориентироваться.
Отрисовать он сможет и так, согласен. А вот отыскать в строке юникодовскую последовательность? Он ведь этим занимается сначала (см. код).
Ну а маты — не зацикливайся на этом)) Сам же нецензурную лексику употребляешь. Тем более, что в программах важна работоспособность в первую очередь, а комменты большинство почти не читают.
Штука хорошая, выглядит удобной. Надо бы впилить в едит такое.
-
Так можно русские буквы вообще не обрабатывать - нету русских букс синтаксисе lua.
Подумай ещё немного. Не понял?
Содержимое строк ты тоже всегда на английском пишешь?
-
...
Так и должно быть (см. кол-во строк)?

P. S. Только заметил (см. вр. обн.). При удалении токена в лог сыпятся ошибки стэктрейсовые (не успел разглядеть). Что-то в пхп напортачено.
P. P. S. Лучше для публичных токенов делать указываемое ИМЯ, а не использовать название токена заместо него. email легко узнать, я бы сказал, СЛИШКОМ легко.
-
Ингрийский — язык какой-то межмировой, тыры-пыры, не важно. Важно то, что тот же "ThiefBot" поймётся и русскими, и американцами, и китайцами, т. д. Напирмер, Hologram Editor — название идеальное, суть отражает, на англофорум по ОС публиковать можно. Другой вопрос, а нужна ли такая мультиязычность этой программе? Думаю, нет, так что русские имена вполне сойдут.
-
да при чем тут виндовс? И когда это винда не работала с UTF-8? Это что-то новенькое

Скачал файл. Файл там изначально в кодировке ANSI http://puu.sh/jZwL3/db399dcc2b.png Если его конвертировать в UTF,
то вот - http://puu.sh/jZwLL/0c3b6cdebd.png
Там где-то каша с кодировками какая-то. Я понимаю черную зависть линуксоидов с выходом win10, но не надо же так люто и еще больше теперь за то ненавидеть винду

Тогда почему скачанный мною файл ИЗНАЧАЛЬНО был в кодировочке UTF-8 и отображался нормально?..
-
Там было что-то вроде: [OpenComputers] HologramEditor ver 0.7.8 интертеймент роботинг корпорэйшн программинг бай Тоторо энд Нео и что-то бла-бла-бла
И именно Дима попросил переименовать в просто: "Hologram Editor [OpenComputers]" . Вот и весь, в принципе, тайный смысл, если он там, конечно, есть

Там было "HE 0.70 <бла-бла-бла>". Я потом переименовал в просто "[OpenComputers] HologramEditor", затем префикс вдруг стал постфиксом) Ах, ладно, пусть так будет
-
Нельзя посмотреть потому что textarea грузиться через AJAX с 1 мс. обновлением (я уже говорил).
Можно конечно выключить обновление, тогда спокойно можно будет смотреть логи, но придется в ручную обновлять страницу, чтобы посмотреть новые результаты.
Насчет выехавших полей могу лишь сделать перенос в textarea.
хм...
А фокус со считыванием scrollTop/scrollLeft, обновлением и записыванием обратно в scrollTop/scrollLeft не катит?
П.С. Дима! И с кодировкой глянь, пжлст, что там за попка. Если сендить рус., вылезает вот это. (http://puu.sh/jZngK/65721cd621.png)
С кодировкой проблема ЯВНО не на дашборде) Проблема с сервером Майнача (ну, это ж Винда, конечно же она с UTF-8 нормально не работала никогда на моей памяти) или с кодировкой файлов. На виндосервере Файна на тесте Дримса я отсылал на пастбин прогу, когда скачал на хосте текущем — там ненормаль творилась.
-
Эта... эти... это... поле сбрасывает прокрутку на каждом обновлении! В общем, выехавшие за пределы поля строчки строки просмотреть просто так нельзя.
Вот скриншотик ситуации (text-wrap какой-то нужно ставить нормальный, без полосочек этих) + демонстрация отличной работы кодировочных элементов (отправлено через прямой пост-запрос хтпэсовский с компьютера)

-
П.С. Переименовал тему.
Требую объяснения тайного смысла переименовывания "[OpenComputers] HologramEditor" в "Hologram Editor [OpenComputers]"!))
-
Красота.
Отредактировал заголовок (и не пихайте больше версию туды, самим же траблее будет).
Отредактировал пост какой-то первый, добавил туда последнюю версию программы.
-
1
-
-
Ну так есстественно, нет этой функции. exportItem == nil
Поэтому у нет у нас еще базара.
Проблема очевидно на вашей стороне. Версия мода старая, мб?
Самая последняя, что вообще существует, с гитхабика:

Как видно, всё там есть.
-
1
-
-
Я не нашел метода 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 проще.
Хотя могли и выпилить функцию эту... Не тестил
-
Там нет нужных функций. Но на всякий случай, пойду еще раз проверю.
С OpenPeripherals появляются: interface.exportItem(fingerprint, direction, stacksize) — экспортирует предметы из системы, как, например, из сундука, нужно иметь отпечаток "fingerprint" — таблица {["id"] = "somemod:someitem", ["dmg"] = itemmetadata, ["nbthash"] = NBTHash}, где "id" — имя предмета, "dmg" — метаданные и nbthash — хэш нбт-данных. Всю эту информацию можно получить через функцию interface.getAvailableItems() — возвращает таблицу с предметами в МЭ.
-
-- … --
Зачем спорить вообще с самой идеей? Потому, что на ИТ-Лайт АЕ не будет? И не пойму, к чему тут другие серверы. Я загуглил — сразу тонна серверов нашлась с АЕ. Кто-то неправильно ищет? Я понимаю, что распротранения не будет из-за отсутствия ОС на многих севрерах, вот там да, в единичных как раз случаях и стоит (хотя и быстро находится нужное).
Не хочется париться, а всё через плагины и моды делать (а кто-то совсем недавно с пеной во рту кричал о том, что моды — зло, и всё через компьютеры сделать можно) — ну так не нужно ничего ставить там и пр.
Ну, и, наконец, блин, интерес от программирования получить нужно, а не слушать "а ае плахой делате всо на дебаке". Что, серьёзно, вообще никак нельзя сделать нормальную торговую систему без поддержки админа? Не смешите меня.
Допустим, я поставлю 10 таких цепочек по извлечению. Это 640 предметов в такт...
Не знаю, довольно сомнительно конечно, но можно попробовать. А где найти инфу, какие блоки подключать и какие функции вызывать? Я бы потестил.
Для работы с МЭ вполне хватит простого интерфейса МЭшного, подключённого к адаптеру из ОС. А далее — по сетке. По `components` находим имя компонента, в `lua` пишем =component.<имя>.listMethods() — и показываются методы все. Ну, и у каждой функции есть описание. Кстати, в ComputerCraft есть встроенная программа документации по OP, не помню название только.
Пиэсь: см. подпись.
-
Я уже не помню что у нас использовалось, но это был какой то аддон к ComputerCraft'у, который умел сколько угодно каких угодно предметов перемещать.Воооот. В этом аддоне (OpenPeripherals) нет такой проверки, и он отлично понимается OpenComputers'ом. Нужно его использовать для базаара, раз лимиты делают невозможным работу. К сожалению, за раз — стэк максимум, но в цикле вполне можно отэкспортить всякого. Стэк — ограничение уже апишки АЕ2. Он там не пихает по нескольку, каждый пакет — реальный стэк, точнее, его представление))
-
Я хочу чтобы в кодовом замке были звездочки а не цифры.
Так это ни разу не кодовый замок!)) Это что-то вроде сканера отпечатка пальца... Жмякаешь на мордочку на мониторе — пользователям дверь открывается, чужим — нет)) Установка кода там нет)
-
Как сделать так чтобы место цифр писались звездочки?
А что за циферки?

-
Да, я сам снова и снова вспоминаю про Базар.
Проблема есть и никуда не девалась.
Интерфейсы работы с МЕ позволяют перемещать по 1-4 предмета в такт, что для целевых объемов продаж миллионами неприемлемо. Я читал чэндж логи, но так и не дождался возможности кидать сразу крупные объемы предметов из МЕ.
О, я не одинок в этой Вселенной! O_o
Сам долго мучался, бился головой, перелазил исходники на гите, пока не обнаружил... Пока не обнаружил, что скорость экспорта зависит от количества акселерационных апгрейдов, как на странно Oo. Кстати, у вас используется OpenPeripherals в работе?
Код самого OC-драйвера к экспорт-шине. Пришлсь ставить интерфейс и OpenPeripherals, там такого безумия нет.

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

Библиотека мониторинга lua-программ в реальном времени
в Библиотеки
Опубликовано:
Началооооось...
Опять друг дурга поливать будете дёгтем? Просто возьмите и объединитесь.
ТаксШотовым вариантом я вряд ли вообще буду пользоваться до того, как там появится нормальный пароль и управление токенами централизованное (вы мне предлагаете между двумя токенами в двух браузерах вообще бегать?). Лёшиным я вообще не смогу воспользоваться, так как это нефункциональные картинки цветные (фейковые игрушки для дошкольников).
А своими недоделками не спамьте, @@LeshaInc.
Самым лучшим вариантом мониторинга была бы отправка КОНТЕНТА в виде HTML на страницу, с заголовками ещё, может, там. И шаблон дефолтный.