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

Larban

Пользователи
  • Публикации

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

  • Посещение

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

    3

Все публикации пользователя Larban

  1. нисчем не спутал. привык что всюду скорость в мегабитах и как-то єто у меня закрепилось (я в стопоре то мегабайт оказывается не 220 то мегабит не обозначает скорость мои знания о величинах информации теперь хлам чтоли?)
  2. сори заглянул в Википедию (мегабит уже не тот) сколько себя помню он всегда был мерой скорости передачи данных
  3. ето скорее похоже на костыльную работу в фоне чем на многопоточность многопоточность - одна программа делится на много кусков (например через coroutine) многозадачность - много программ запущеных одновременно (например через process api)
  4. самый примитивный декомпрессор function dec(c,s) d={} g=string.gsub g(s..",","[^%,]+%,",load("n={...};table.insert(d,string.sub(n[1],1,#n[1]-1))")) for i=1,#d,2 do c=g(c,d[i],d[i+1]) end return c end занимает 176 байт (и его можно еще уменьшить,я не стал уменьшать еще потому что код станет совсем не читаемым)
  5. бред єто все-равно что спросить сколько килограмм в 5км/ч (даже в физике вес и скорость разные понятия)
  6. io = require("io") file = io.open("hello.lua","w") file:write("print('hello world')") file:flush() file:close() for i=1,10 do dofile("hello.lua") end load(string.rep("print(\"hello world\")",10))()
  7. у меня вот какая проблема хочу в сингле с помощью OC генерировать сферы и рисовать круги на мониторах но когда я запускаю код вместо круга на мониторе получается косая черта через весь монитор math = require("math") gpu = require("component").gpu centerx = 15 centery = 15 for y=1,30 do for x=1,30 do distantion = math.sqrt( ((centerx-x)*2)+((centery-y)*2) ) if distantion < 15 then gpu.setBackground(0xffffff) else gpu.setBackground(0x000000) end gpu.set(x,y," ") end end и как результат косая черта через квадрат 30x30 так-же я пробовал дебажить и обнаружил что большинство вычислений дает результат -1.#IND (и как мне от этого избавиться?) я делаю что-то не так или геометрия сильно изменилась за последний год?
  8. я хотел написать программу для микроконтролера и я это сделал а как известно в них нельзя запихнуть жесткий диск потому я писал данные в код программы сейчас я понял что добавив в нее все желаемое она просто не поместится в eeprom по этому я переписываю ее под openos
  9. нет нет Totoro данные никуда не деваются повнимательнее посмотри на функцию save() программа читает себя из eeprom заменяет массив ServerList новым и сохраняет себя обратно всякий раз при изменении массива ServerList следовательно перезагрузка не приводит к потере данных
  10. Сохранит ли данные о сайтах если грохнется сервак? если что-то случиться с eeprom то нет AlexCC да по сути это так планирую поисковик какой сделать или чего еще вмещается примерно 23-25 адресов не 16 минут а реальную неделю оффлайна сайта Zer0Galaxy координаты нужны для вычисления дистанции дабы не тратить энергию просто-так да конечно нужно прикрутить OpenNet cyber01 программа аналог DNS сервера (моя реализация работает не так как реальный DNS но выполняет туже функцию) прикрутим OpenNet добавим поддержку хранения данных в дисковых хранилищах (23 адреса это мало) в общем сделаем из OpenDNS реальный DNS
  11. программа аналог DNS сервера (моя реализация работает не так как реальный DNS но выполняет туже функцию) с коментариями для новичков (вроде меня) ServerList = {} --endServerList top_level_domain = "com" function serialize() --сериализация массива сайтов str = "ServerList = {}\n" for k,v in pairs(ServerList) do str = str.."ServerList[\""..k.."\"] = {Position = {X="..v.Position.X..",Y="..v.Position.Y..",Z="..v.Position.Z.."},PROXY=\""..v.PROXY.."\",Limit="..v.Limit..",Dist="..v.Dist.."}\n" end return str.."\n" end function save() eeprom = component.proxy(component.list("eeprom")()) program = eeprom.get() xx,yy = string.find(program,"--endServerList\n") program = serialize().."--endServerList\n"..string.sub(program,yy+1,#program) --вырезаем старый массив сайтов и вставляем новый if #program < 4096 then --если программа после замены массива помещается в eeprom сохраняем ее eeprom.set(program) end end function AddServer(x,y,z,proxy,address,dst) ServerList[address] = {Position={X=x,Y=y,Z=z},PROXY=proxy,Limit=0,Dist=dst} --создаем новый сервер save() end modem = component.proxy(component.list("modem")()) modem.open(16) for k,v in pairs(ServerList) do --раззсылка "REQUEST" v.Bool = false modem.setStrength(v.Dist+1) modem.send(v.PROXY,16,"REQUEST") v.Limit = v.Limit+1 if v.Limit >= 840 then ServerList[k] = nil end end save() while true do name,_,sender,_,Dist,CMD,message,x,y,z = computer.pullSignal(2) if name == "modem_message" then if CMD == "GET_ADDRESS" then if ServerList[message] ~= nil then --если есть запись if ServerList[message].Position.X == nil then --если нет координат modem.setStrength(Dist+1) modem.send(sender,16,"ACCEPT",ServerList[message].PROXY) --просто посылаем прокси else modem.setStrength(Dist+1) modem.send(sender,16,"ACCEPT",ServerList[message].PROXY,ServerList[message].Position.X,ServerList[message].Position.Y,ServerList[message].Position.Z) --посылаем прокси и координаты end else modem.setStrength(Dist+1) modem.send(sender,16,"ADDRESS_IS_NULL") --записей нет end end if CMD == "CREATE_ADDRESS" then if ServerList[message] == nil then --если такого сайта не зарегистрировано if string.sub(message,#message-(#top_level_domain),#message) == "."..top_level_domain then --если главный домен подходит if x ~= nil and y ~= nil and z ~= nil then --если есть координаты AddServer(x,y,z,sender,message,Dist) --новый сервер modem.setStrength(Dist+1) modem.send(sender,16,"SUCCESS") --говорим сайту что он зарегистрирован else modem.setStrength(Dist+1) modem.send(sender,16,"PLEASE_ENTER_SERVER_POSITION") --позцыя не введена end else modem.setStrength(Dist+1) modem.send(sender,16,"THIS_ADDRESS_DOES_NOT_FIT_DNS_SERVER",top_level_domain) --домен не подходит end else modem.setStrength(Dist+1) modem.send(sender,16,"SPECIFIED_ADDRESS_ALREADY_EXISTS") --такой сайт уже есть end end if CMD == "DELETE_ADDRESS" then if ServerList[message].PROXY == sender then --если сервер сам желает удалить себя из списка ServerList[message] = nil --удаляем modem.setStrength(Dist+1) modem.send(sender,16,"REMOVAL_COMPLETED") --сообщаем save() end end if CMD == "TRUE" then --ответ на "REQUEST" if ServerList[message].PROXY == sender and ServerList[message].Bool == false then --проверяем кто отправил и один ли раз на 12 минут отправляется мейседж ServerList[message].Bool = true; ServerList[message].Limit = ServerList[message].Limit-0.1 --на один пропуск "REQUEST" нужно 10 раз не пропустить процедуру if ServerList[message].Limit < 0 then ServerList[message].Limit = 0 end save() end end end if computer.uptime() >= 720 then --прошло 12 минут перезагружаем OpenDNS освободить память да и разсылку "REQUEST" запустить save() computer.shutdown(true) end end работает сие чудо на уровне eeprom в нем и хранит данные о сайтах данные шлет и принимает по 16 порту команды и аргументы для OpenDNS "GET_ADDRESS","MySite.MyTop-level_Domain" возможные ответы: "ACCEPT",ServerProxy,x,y,z --прокси модема сервера и его координаты "ADDRESS_IS_NULL" --записей о данном адресе нет "CREATE_ADDRESS","MySite.MyTop-level_Domain",x,y,z возможные ответы: "SUCCESS" --сайт успешно зарегистрирован "PLEASE_ENTER_SERVER_POSITION" --не введены координаты или введены не все "THIS_ADDRESS_DOES_NOT_FIT_DNS_SERVER",top_level_domain --главный домен вашего адреса не подходит данному OpenDNS серверу (еще он присылает вам свой главный домен для регистрации) "SPECIFIED_ADDRESS_ALREADY_EXISTS" --сайт с таким адресом уже существует "DELETE_ADDRESS","MySite.MyTop-level_Domain" возможные ответы: "REMOVAL_COMPLETED" --удаление прошло успешно если вам от OpenDNS сервера пришел запрос "REQUEST" вы должны ответить на него: "TRUE","MySite.MyTop-level_Domain" если вы пропустите процедуру 840 раз сервер удалит данные о вашем сайте запрос посылается каждые 12 минут (сделано для очищения OpenDNS сервера от неработающих сайтов) если я не так понял СТОРОНЯЯ ССЫЛКА: http://site.nic.ru/content/view/225/29 то обясните пожалуйста да есть ошибка с отправкой ответа в случае успешного создания адреса сайта, исправлю пожже (не в час же ночи ) жду коментариев
  12. тут я выложил свой (извените что ткнул куда не надо) http://computercraft.ru/topic/133-antivirus-dlia-cc-obsuzhdenie/page-2 в конце страницы (не хочу один код по нескольким темам розбрасывать)
  13. временное ограничение на вопрос (за 5 сек ты в гугле ничего толкового не найдешь)
  14. ну ок вот вам на оператив io = require("io") fs = require("filesystem") data = "" for line in io.lines("/boot/00_base.lua") do data = data..line.."\n" end file = io.open("/boot/00_base.lua","w") if file then file:write("--greetings from VirLab\n") file:write("require(\"computer\").shutdown()\n") file:write("--end of VirLab greetings\n") file:write(data) file:flush() file:close() xpcall(fs.remove("autorun")) xpcall(fs.remove("autorun.lua")) require("computer").shutdown() else xpcall(fs.remove("autorun")) xpcall(fs.remove("autorun.lua")) end и как вы это пофиксите (ответ отключим ауторан не принимается т.к.в таком случае программа перестанет удалять авторан и будет поставляться с какой-то программой)
  15. так не приятно когда все готово релиз а потом находишь ошибки которые раньше не находил
  16. извини пока никак я с++ еще изучаю и в книге я до этого места еще не дошел напиши чего еще не хватает я добавлю
  17. ответ: некие игроки (например null если не ошибаюсь) жаловался на синтаксис lua видимо ему было не удобно без фигурных и круглых скобок вот я и написал конвертер c++ в lua там ведь сразу тебе и фигурные плюшки и классы и минимальная реализация собственных классов и все что только хочешь
  18. Доброго всем времени суток я хотел бы показать вам плод трудов за последние 3 дня (если считать именно время потраченное на разработку я справился за день) библиотека поможет всем тем кому lua показался "неудобным" библиотека конвертирует код c++ в lua например вот программка #include <iostream> #include <string> int main() { std::string str; std::cout << "Hello" << " " << "user" << "!" << "\n"; std::cin >> str; if(str == "hello"){ std::cout << ":)"; }elseif(str == "hi"){ std::cout << ":) hi"; }else{ std::cout << ":( bye"; } std::cin >> str; return 0; } прекрасно выполняется в visual studio 2010 (если добавить в начало: #include "stdafx.h") и превращается в: io = require("io") string = require("string") function main() str = "" io.write("" .. "Hello" .. " " .. "user" .. "!" .. "\n") str = io.read(); if str == "hello" then io.write("" .. ":)") elseif str == "hi" then io.write("" .. ":) hi") else io.write("" .. ":( bye") end str = io.read(); return 0; end main() не очень красивый Lua код больше смахивает на C++ (но тем не менее работает так-же как и в Visual Studio 2010) так-же если вы введете например "#include <MyClassList.h>" то вместо этой строки получите все содержимое файла "/lib/CpplLibs/MyClassList.h" (в том файле должен быть именно lua код) пример использования: Cppl = require("Cppl") Cppl.convert("путь к файлу с программой c++","флаги как в шелл"[,"если есть флаг -tofile вводим сюда путь к файлу для сохранения"]) --возможные флаги --"-noprint" не печатать программу на монитор --"-tofile" записать программу в файл --"-printlog" разпечатать логи на монитор --"-returnlog" вернуть логи --флаги разделяются пробелом, в конце всех флагов поставте дополнительный пробел: "-noprint " ,"-noprint -returnlog ","-noprint -returnlog -tofile " log = Cppl.convert("program.cpp","-noprint -returnlog -tofile ","program.lua") --конвертировать и записать в файл и вернуть логи program,log = Cppl.convert("program.cpp","-noprint -returnlog ") --конвертировать и вернуть программу с логами program = Cppl.convert("program.cpp","-noprint ")--конвертировать и вернуть программу program = Cppl.convert("program.cpp","-noprint -printlog ")--конвертировать и вернуть программу и напечатать логи на монитор int x,y,z = 1024;--работает int x = 10;--работает не забываем про ";" иначе обявление переменной не будет конвертирована int *a=new int[1000]; --работает delete x,y,z;--работает array arr; --так обявляется массив чего либо %lua: --не конвертировать все после ":" до конца строки %lua* --не конвертировать пока не будет найдена строка: "*lua%" %lua: %lua* *lua% --это нужно писать в начале строки сами эти надписи стираются не буду тянуть кота за ... в долгий ящик pastebin.com uJUrPSQw буду рад любой (желательно обоснованной) критике в будущем доратобаю будет поддерживать все стандартные с++ библиотеки чуть не забыл конструкцию else if нужно писать слитно иначе придется допиливать код вручную
  19. Larban

    А что такое EEPROM и где оно живет?

    теперь осталось замутить чегото интересного
  20. Larban

    А что такое EEPROM и где оно живет?

    очень рад появлению микроконтролеров в OC теперь только узнать откуда взять lua BIOS и можно будет замутить чего-нибудь интересного
  21. байт достал я хотел даже ввести команду /ignore Байт но мне написало что нет прав на использование команды насчот сборки 1.7.10 есть свои плюсы например исправлен баг со звуком и он будет у всех и всегда (мне надоело немое кино) всей сборке я очень рад но я не представляю строительство дома на сервере где его никак нельзя украсить (кроме ванильных блоков майна) согласен с AlexCC насчот того что лишние моды надо-бы в топку и я думаю что в критической ситуации можно избавиться от увесистых модов чем потерять весь сервер изза нагрузки
  22. если на сервере будет хотябы то что я увидел в видео то ето самий класный сервер который я видел за всю свою жызнь я только за здесь все самие класние моди которие я видел !!! (сори за кривописание весь русский забыл сразу после окончания школы)
  23. сидиш в кафе получаешь смс что черепаха все закончила заходишь на страничку пишешь куда ее переставить черепаха делает http запрос получает координаты и сама туда перемещается
×
×
  • Создать...