Zer0Galaxy
Гуру-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Zer0Galaxy
-
В Центре поиска внеземного разума (ЦПВР) начал работу роутер сети OpenNet. Зона уверенного покрытия охватывает банк, спаун и поселок Кузякино. Подключиться к роутеру можно при помощи беспроводной сетевой карты и библиотеки opennet.lua (см. под спойлером) Описание функций библиотеки дано в начале темы. За тем исключением, что функция getIP возвращает, помимо IP, расстояние до роутера. Следите, что бы это расстояние не превышало 350.
- 162 ответа
-
- 1
-
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
В общем, никакого дюпа и диверсии. Просто у Троянчика стоит точка доступа, а она, как оказалось, ретранслирует все беспроводные пакеты. Если рядом поставить еще одну, они начинают бесконечно перекидывать пакеты друг другу.
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Дело в том, что у Троянчика в привате стоял вайфай с таким же id как и у твоего роутера. Он и дублировал пакеты. Как такое получилось, не знаю, но без дюпа здесь не обошлось.
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Не позволяет в админпривате ставить. Даже с /ic
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Меня в первую очередь интересует наличие чанклоадера. В админприватах будем ставить креативные компы, в частных - обычные.
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Алекс, можно ли в районе спауна установить WiFi роутер? Есть ли там работающий чанклоадер? А где есть?
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Наверное, на Луа, но сперва нужно написать что нибудь вроде: function split(text, sep) sep = sep or "\n" local lines = {} local pos = 1 while true do local b,e = text:find(sep, pos) if not b then table.insert(lines, text:sub(pos)) break end table.insert(lines, text:sub(pos, b-1)) pos = e + 1 end return lines end
-
Это на каком языке?
-
Нео, не будь жертвой предвзятости. И IP и MAC это всего лишь набор байт, только один почему то выражают десятичными числами, а другой шестнадцатеричными. Суть их от этого не меняется, хоть римскими записывай. Или ты думаешь, что перебирать можно только цифры, а буквы никак? Или ты думаешь, что кому-то кроме тебя придет в голову умножать и делить IP-адреса? Или я должен менять структуру адреса, что бы облегчить тебе задачу пингования всех компьютеров Сети? Максимум, что я могу для тебя сделать, это добавить в роутер функцию, по которой он будет возвращать адреса всех связанных с ним компьютеров. Имея эту функцию и немного мозгов можно с легкостью вычислить структуру всей Сети. А теперь о хорошем. Запущен в опытную эксплуатацию первый WiFi-роутер. Координаты его пока не разглашаю, хотя кое для кого это уже не секрет. Готов помочь любому желающему в установке и настройке подобных роутеров.
- 162 ответа
-
- 3
-
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Обоснуй зачем и я сделаю из цифр
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Это именно IP. MAC гораздо длиннее
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
К сожалению, Нео нам не помогает. Так бы мы за день всё закончили. Может он пушкой займется?
-
Сейчас это первоочередная задача. Крутой сделал доступ из OpenNet в Internet, но прикол в том, что связанная плата в крафте дороже чем интернет-плата. Нужно упрощать доступ к ON, а это можно сделать только через WiFi или проводные роутеры
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Хочу рассказать об изменениях, произошедших в развитии OpenNet. Во-первых создан и функционирует DNS-сервер. Во-вторых реализована служба, позволяющая пользователям OpenNet получать доступ к сети Интернет. Чуть ниже по порядку. Что такое DNS-сервер и зачем он нужен? Предположим, два пользователя Сети, Петя и Вася, обмениваются ON-сообщениями. Как это выглядело до сих пор: Петя, чтобы послать сообщение Васе, должен знать его IP. Именно на этот IP и отправляется сообщение. Вот так это можно представить графически Сообщение проходит через ряд роутеров, которые и определяют путь прохождения. Как видим, в самом сообщении присутствуют IP-адреса получателя и отправителя. Но, запомнить Васин IP в виде набора букв и цифр довольно сложно. Да и что делать если Вася сменил IP и не успел предупредить Петю? На помощь приходит DNS-сервер. Он позволяет зарегистрировать в сети уникальное имя и связать его с определенным IP. Начинается всё с регистрации имени Как видно из рисунка, для регистрации DNS-имени, Вася посылает на сервер определенную посылку, в которой указывает желаемое имя, связанный с ним IP и пароль, который потребуется в случае необходимости внесения изменений. На рисунке я изобразил, что клиентский компьютер направляет сообщение прямо в DNS-сервер. Это конечно не так. Сообщение пройдет как минимум через роутер ef4. Мне просто не хотелось затемнять рисунок. После регистрации имени, Петя может отправлять сообщение не на "ef4.d69", а на зарегистрированное имя "Vasya". Вот так это будет выглядеть: Роутер 7e3, получив сообщение для получателя "Vasya", запрашивает IP у DNS-сервера и заменяет адрес получателя на этот IP. Но это не всё. Какое то время роутер продолжает помнить этот IP и последующие сообщения для получателя "Vasya" будет отправлять без обращения к DNS-серверу. Время это составляет ~25 минут.
- 162 ответа
-
- 4
-
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Да. А еще Луа вычитать может, умножать и даже страшно подумать, извлекать корни
-
Конечно не число, а строка. Тебе нужно эту строку в число преобразовать. Просто tonumber не поможет, поскольку а представляет собой не число, а арифметическое выражение. Можешь сделать функцию для разбора арифметических выражений. А можешь воспользоваться функцией loadstring a="1+2+4" n=loadstring("return "..a)() rs.setBundledOutput("right",n)
-
Нео, сделаешь такой роутер? Пока Сеть ничего из себя не представляет, покупать платы все равно никто не будет. Сейчас Крутой работает над интернет-сервисом, я думаю над DNS. Со временем сделаем WEB-сервер, напишем браузер, может тогда спрос на ОН-платы появится.
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Прописываются они автоматом. Но, вставлять их в сервер придется руками. Да и как мы узнаем, какие платы реально используются, а какие выброшены в лаву? Поэтому цена платы не должна быть слишком маленькой и если возможно надо ограничить выдачу плат в одни руки.
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Совершенно верно. Только есть проблемка - они не стакаются
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Я даже больше скажу, любая даже скрафченая плата не подойдет. Нужна плата, подключенная к Сети. И у меня таких есть несколько штук. Могу предоставить их в банк для реализации.
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Боюсь, не смогу реализовать всё сразу. Рассчитываю на помощь. Планирую реализовывать платы через банк. Но на то нужна воля банкиров. >>Можно было сказать, я бы добавил в свою тему. Я подумал, эта информация должна быть в начале темы вот и завел новую. Хочешь, перенеси в свою, а эту закроем
- 162 ответа
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
На сервере Information Technology начинает работу глобальная сеть OpenNet. В отличии от децентрализованной сети CraftNet, новая сеть построена на компактно расположенных серверах. Связь клиента с одним из серверов осуществляется при помощи пары связанных плат, одна из которых установлена в сервер, другая находится у клиента. Каждый сервер способен обслуживать до трех клиентов. Таким образом связь защищена от прослушивания, а покрытие Сети полностью охватывает все доступные миры сервера Information Technology. Что может и чего не может сеть OpenNet? Если вы думаете, что подключившись к Сети вы получите все мыслимые и немыслимые блага, то вы ошибаетесь. Сеть это просто средство обмена информацией между двумя и более компьютерами. Как будут запрограммированы эти компьютеры и какого рода информацией будут обмениваться, зависит только от вас (ну и от меня, в какой-то мере) Что необходимо, чтобы подключиться к сети OpenNet? Во-первых, ОС-компьютер с установленной операционной системой. Во-вторых, библиотека opennet.lua, которую можно найти под спойлером или скачать при помощи команды pastebin get VYqtYAXL opennet.lua В-третьих, OpenNet-плата. Где взять OpenNet-плату? Количество плат, которые могут быть подключены к Сети, ограничено. Поэтому, массовых раздач я устраивать не собираюсь. Людям, которые проявили себя в программировании, я готов предоставить платы при личной встрече на сервере. Остальным, возможно, придется приобретать их в банке. Очень рассчитываю при этом на помощь наших банкиров: Тоторо и Алекса. Какие функции предоставляет библиотека opennet? getIP() - осуществляет инициализацию компьютера в Сети. В случае удачной инициализации, возвращает IP-адрес компьютера. В случае ошибки, возвращает два значения: nil и строку, содержащую информацию об ошибке. Следует отметить, что IP-адрес статический. Это значит, что при помощи одной ON-платы вы всегда получите один и тот же IP-адрес. Но это не избавляет от необходимости вызывать getIP всякий раз в начале работы с Сетью. send(recIP, ... ) - отправляет данные на адрес recIP. Одним пакетом можно отправить несколько значений, которые должны быть числами, строками и/или логическими величинами. Суммарный объем данных, отправляемых в одном пакете, не должен превышать 8 кБ. Функция возвращает true, в случае удачной отправки или nil и сообщение об ошибке, в противном случае. Если функция вернула true, это означает, что данные были отправлены, но еще не означает, что они были приняты получателем. receive([timeout]) - ожидает приема данных. Если задан параметр timeout, время ожидания ограничивается. В случае приема данных, возвращает первым значением адрес отправителя, затем - принятые значения. В случае таймаута, возвращает nil. sendrec(recIP, ... ) - это просто объединение функций send и receive. Отправляет данные и возвращает полученный ответ. Очень удобно при работе из интерактивного интерпретатора. А можно пример работы с библиотекой? Пожалуйста. На принимающем компьютере выполним следующие команды: После этого компьютер переходит в режим ожидания. Запомним (или, в моем случае, запишем) IP-адрес. На другом компьютере выполним команды для передачи данных на этот адрес: Теперь посмотрим на принимающий: К стати, если отправить данные на несуществующий адрес, в ответ от сервера будет получено сообщение: Каковы перспективы развития Сети? 1. Для начала планирую сделать DNS-сервер, чтобы можно было отправлять данные на удобочитаемые имена.(реализовано) 2. Создание чата, в котором школьники смогут материться не рискуя навлечь на себя гнев администрации (реализовано). 3. Организация доступа к OpenNet через обычную сеть путем установки роутеров в местах проживания игроков. (реализовано) 4. WEB-сервера с полезной или просто интересной информацией. Благо теперь на русском (требуется наполнение web-страниц). 5. Служба pastebin для доступа к известному ресурсу в условиях отсутствия интернет-платы (реализовано) 6. Да и много еще чего.
- 162 ответа
-
- 3
-
-
-
- OpenComputers
- OpenNet
-
(и ещё 1 )
Теги:
-
Но ведь там же сплошь и рядом конкатенация. Ты сравнивал по производительности с serialize?
- 12 ответов
-
- performance
- Serialization
-
(и ещё 4 )
Теги:
-
[CC] Игральные карты (Универсальное ядро 54)
Zer0Galaxy ответил в вопрос Doob в Разные (отсортировать)
Как работает система событий в CraftOS? Когда возникает какое либо событие (тикает таймер, нажимается клавиша, приходит пакет по сети и т.д.), оно становится в очередь событий. Существует функция os.pullEvent, которая вытаскивает первое событие из очереди и возвращает его программе. Функция эта имеет параметр фильтр. Если этот параметр не пустой, pullEvent вытаскивает из очереди события, пока не вытащит совпадающее с фильтром. Все не совпавшие события будут потеряны. К примеру функция sleep ждет события "timer", а функция read - "char" и "key". Это значит, что пока эти функции не завершат свою работу, rednet-пакеты будут теряться. Как этого избежать? Способ №1: Нужно обрабатывать все события, которые нужно обработать. Т.е. вызываешь pullEvent без параметра (а не sleep или read) и в зависимости от того какое пришло событие делаешь те или иные действия. Способ №2: Организовываешь многопоточность и в каждом потоке обрабатываешь какое то одно событие. Например, один поток - для обмена по сети, один - для ввода с клавиатуры и т.д. Где именно проблема в твоей программе, я смогу сказать не раньше чем увижу полный её код. -
[CC] Игральные карты (Универсальное ядро 54)
Zer0Galaxy ответил в вопрос Doob в Разные (отсортировать)
Достаточно сделать отдельный поток, который бы слушал сеть, обрабатывал принятый пакет и снова погружался в rednet.receive. Два игрока все равно не смогут послать пакеты одновременно, как бы не старались.
