Larban
-
Публикации
23 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Сообщения, опубликованные пользователем Larban
-
-
сори заглянул в Википедию (мегабит уже не тот)
сколько себя помню он всегда был мерой скорости передачи данных
-
ето скорее похоже на костыльную работу в фоне чем на многопоточность
многопоточность - одна программа делится на много кусков (например через coroutine)
многозадачность - много программ запущеных одновременно (например через process api)
-
самый примитивный декомпрессор
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км/ч (даже в физике вес и скорость разные понятия)
-
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))()
-
1
-
-
у меня вот какая проблема хочу в сингле с помощью 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 (и как мне от этого избавиться?)
я делаю что-то не так или геометрия сильно изменилась за последний год?

-
я хотел написать программу для микроконтролера и я это сделал а как известно в них нельзя запихнуть жесткий диск потому я писал данные в код программы
сейчас я понял что добавив в нее все желаемое она просто не поместится в eeprom по этому я переписываю ее под openos
-
нет нет Totoro данные никуда не деваются

повнимательнее посмотри на функцию save()
программа читает себя из eeprom заменяет массив ServerList новым и сохраняет себя обратно всякий раз при изменении массива ServerList следовательно перезагрузка не приводит к потере данных
-
1
-
-
если что-то случиться с eeprom то нетработает сие чудо на уровне eeprom в нем и хранит данные о сайтах
Сохранит ли данные о сайтах если грохнется сервак?
AlexCC да по сути это так
планирую поисковик какой сделать или чего еще
вмещается примерно 23-25 адресов
не 16 минут а реальную неделю оффлайна сайта
Zer0Galaxy координаты нужны для вычисления дистанции дабы не тратить энергию просто-так
да конечно нужно прикрутить OpenNet
cyber01
программа аналог DNS сервера (моя реализация работает не так как реальный DNS но выполняет туже функцию)
прикрутим OpenNet
добавим поддержку хранения данных в дисковых хранилищах (23 адреса это мало)
в общем сделаем из OpenDNS реальный DNS
-
программа аналог 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 то обясните пожалуйста
да есть ошибка с отправкой ответа в случае успешного создания адреса сайта, исправлю пожже (не в час же ночи
)
жду коментариев-
2
-
-
тут я выложил свой (извените что ткнул куда не надо)
http://computercraft.ru/topic/133-antivirus-dlia-cc-obsuzhdenie/page-2
в конце страницы (не хочу один код по нескольким темам розбрасывать)
-
временное ограничение на вопрос (за 5 сек ты в гугле ничего толкового не найдешь)
-
ну ок вот вам на оператив
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и как вы это пофиксите (ответ отключим ауторан не принимается т.к.в таком случае программа перестанет удалять авторан и будет поставляться с какой-то программой) -
так не приятно когда все готово релиз а потом находишь ошибки которые раньше не находил

-
1
-
-
извини пока никак я с++ еще изучаю и в книге я до этого места еще не дошелА структура
int *a=new int[1000];
...
delete[] a;
Как она у тебя обрабатывается?
напиши чего еще не хватает я добавлю
-
1
-
-
ответ: некие игроки (например null если не ошибаюсь) жаловался на синтаксис lua видимо ему было не удобно без фигурных и круглых скобокОдин вопрос... Зачем? Зачем C++ конвертировать в Lua, это же полный бред. Lua - встраиваемый язык, он встраивается в такие языки как C, C#, C++ и другие.
вот я и написал конвертер c++ в lua
там ведь сразу тебе и фигурные плюшки и классы и минимальная реализация собственных классов и все что только хочешь
-
1
-
1
-
-
Доброго всем времени суток
я хотел бы показать вам плод трудов за последние 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 нужно писать слитно иначе придется допиливать код вручную-
4
-
1
-
-
байт достал я хотел даже ввести команду /ignore Байт
но мне написало что нет прав на использование командынасчот сборки 1.7.10 есть свои плюсы например исправлен баг со звуком и он будет у всех и всегда (мне надоело немое кино)
всей сборке я очень рад но я не представляю строительство дома на сервере где его никак нельзя украсить (кроме ванильных блоков майна)
согласен с AlexCC насчот того что лишние моды надо-бы в топку
и я думаю что в критической ситуации можно избавиться от увесистых модов чем потерять весь сервер изза нагрузки
-
если на сервере будет хотябы то что я увидел в видео
то ето самий класный сервер который я видел за всю свою жызнь
я только за здесь все самие класние моди которие я видел
!!! (сори за кривописание весь русский забыл сразу после окончания школы) -
сидиш в кафе получаешь смс что черепаха все закончила заходишь на страничку пишешь куда ее переставить черепаха делает http запрос получает координаты и сама туда перемещается

Сколько килобайт в одном мегабите?
в Программирование
Опубликовано:
нисчем не спутал. привык что всюду скорость в мегабитах и как-то єто у меня закрепилось (я в стопоре то мегабайт оказывается не 220 то мегабит не обозначает скорость мои знания о величинах информации теперь хлам чтоли?)