Roman
как можно путаться, если есть папка controllers и в ней в каждом файле по контроллеру, и models, uploaders и так далее? это здорово
Snusmumriken
А потом появится новая папка, и ещё одна, и ещё одна. И ты захочешь отправлять почту, роутить, подцеплять лишние модули и всё такое. Не работай в глобале, тебе говорят )) Это всё равно что в сишке перестали бы существовать неймспейсы.
Roman
они существуют сами по себе и никому не мешают, но иногда наследуются от своих соседей, и тут лези лоад выручает
Snusmumriken
Поздравляю, ты изобрёл троллейбус из буханки : ) Ну правда.
Snusmumriken
Глянь более-менее цельный проект с небольшим количеством зависимостей. https://bitbucket.org/16tomatons/galaxio/src/87b99a8085db?at=develop Тут сложно, но в модулях разобраться можно. Наследования, правда, тут нет, но суть наследования - class foo extends require'bar' Хех, кстати, хорошо что вспомнил про проект. Надо влепить в сетевую либу свой RUDP-протокол, чтобы пересылать большие объёмы данных по UDP.
Snusmumriken
Ща будет визуализация работы крутого RUDP-протокола!
Snusmumriken
Во, слева - список передаваемых сообщений, справа - список принимаемых. Тут параллельный приём-передача кучи фигни, окном на N сообщений, с подтверждением приёма-передачи.
Roman
Тю, я думал будет как аудио визуализируется, такие кружочки расходящиеся, буквы и так много где
Roman
сделаешь?
Snusmumriken
А ещё, эта фигня не мешает обычным UDP-сообщениями приниматься в обход себя: сигнатура в заголовке, довольно точная. Шанс что попадётся что-то такое даже в бинарном файле очень мал. Ну, все хотят кружочки, расходящиеся буквы и графон. Это проще описывать временной диаграммой.
Snusmumriken
Я накидал либу на основе подобных схемок. Вот их - можно визуализировать в виде летающих туда-сюда колбочек с буквами, но долго, и не отразит всей картины.
Vlad
А ведь UDP не гарантирует порядок
Snusmumriken
Да не важно. На один-два пакета больше передастся.
Snusmumriken
ещё может быть -1 (имя интерпретатора). Но не всегда :)
Мейловцы сейчас вообще мутят свой интерпретатор, на основе luajit и такой-то матери. Развлекаются. Не исключено что луа будет ими сильно популяризироваться.
Snusmumriken
И привет огромное количество фиговых библиотек от сообщества, как у js : ) Сейчас их мало, но зато качество более-менее нормальное. А мы такие потом: 'Я начал писать на луа до того как это стало мейнстримом' и 'Раньше трава была зеленее'
Snusmumriken
На своей конференции говорили, на которой Иерузалимски присутствовал. Мб и в сети найду инфу.
Snusmumriken
Да ладно, я на далекое будущее говорю :3
Roman
Кек, будет весело если мейловцы выпустят закрытую версию juajit со встроеным амиго и мейл.ру агентом. "качество библиотек более менее нормальное" - лол, везде свои приколы, в руби надо угадывать версии библиотек и самой руби, в node.js все отлично ставится, но по ощущениям npm микро-вселенную собирает, а в luarocks часто вообще тупо не ставится. Потому что luarocks. Вручную из репозитория установить больше шансов.
Alexey
https://habrahabr.ru/company/oleg-bunin/blog/319968/ тут косвенно...
Alexey
а если хочется прямо по делу подробностей, то в соседнем чатике про Тарантул можно спросить :)
vvzvlad
Нормальной библиотеки для последовательного порта так и нет. А под макось — вообще нет, ни одна не собирается
Vlad
А под Мак есть последовательный порт?
Snusmumriken
Luasocket умеет в serial, но там надо пересобирать с каким-то флагом.
Snusmumriken
И да, вот такое не работает на линуксах? serialin=io.open("/dev/ttyS0","r") print(serialin:read()) --print the data serialin:close()
Vlad
Ну я думаю проблема параметры выставлять
Snusmumriken
А ещё ты можешь написать крошечную либу и сам, оформить в dll/so и будет тебе счастье: https://github.com/diegonehab/luasocket/blob/master/src/serial.c
Andrey
Привет! Кто-нибудь сталкивался в openresty с pack/unpack бинарщины? что-то я сходу не нашёл такой возможности
Roman
Привет, я openresty фэн, может что посоветую. Не совсем понял что за pack/unpack бинарщины, в луа по идее все для этого есть
Andrey
Если коротко, то мне нужно в openresty что-то из этого http://lua-users.org/wiki/StructurePacking
Andrey
Хорошо бы иметь это из коробки т.к. я с openresty не очень. Но если есть возможность принести это туда, то было бы круто подсказать как.
Roman
Это *лишь* мод для nginx, который позволяет писать на великом луа прямо в nginx. Конечно, можно все туда тащить, что вне openresty работает
Roman
require 'библиотека', string.byte и string.char это стандартные функции
Andrey
Мне скорее пригодился бы lpack.
Andrey
Т.е. мне нужно как-то поставить его в систему и сделать require в openresty ?
Roman
да, все просто!
Roman
luarocks install lpack и потом require
Snusmumriken
В пути ещё стоит прописать 🌚
Snusmumriken
Хех, кстати, под свои нужды сделал сборку либ вместе с luajit.
Snusmumriken
И загрузчик скриптов boot.lua, дающий основной цикл приложения + пути до библиотек в папке с проектом + нормальный эррор-хенлинг, и кучка вспомогательных функций, на манер love2d.
Roman
а как на винде / черточки работают? О_о
Snusmumriken
Как обычно, совместимость с линуксами 🌚
Roman
на уровне системы поддерживает?
Roman
или как
Snusmumriken
На уровне системы, да. Правда, в данной сборке ещё есть bat'ник для запуска, если нужна ssl-либа: set PATH=%PATH%./; start ./luajit.exe ./boot.lua ./ Это сделано для того, чтобы текущая папка временно добавилась в PATH, и подгреблись ssleay32/libeay32. HTTPS, хуле. Но основной прекол в переносимости: просто копируем папку на другую машину, вместо возни в путях/заливке либ куда надо и т. д.
Snusmumriken
Я пробовал менять path изнутри boot.lua, но оно не применяется для скрипта, только для единичного os.execute ((( С этим тоже можно считерить: запускать boot.lua без флага через boot.lua с флагом "не запускать boot.lua в os.execute". Ну, в общем, изподвыподверта, скрипт запускающий самого себя через cmd, с иным результатом нежели с прямой запуск.
Snusmumriken
Но имхо, для всяких сервисов под вендой - отлично. Плюс тут lanes/cjson/socket/ssl специально для luajit2 beta3, и вся фигня. По мелочи добавляю сюда ещё своих хотелок, но на выходе должно получиться что-то похожее на крутой-прекрутой модуль для сервисов. Я, на самом деле, задолбался делать lanes для luajit, ибо очень не хотела компилироваться. Но теперь оно у меня есть и я могу скинуть 🌚
mva
luarocks install lpack и потом require
лучше не luarocks, а системным пакетным менеджером, если есть возможность
Roman
вроде yaourt? это как так возможно?
Snusmumriken
В пакетных менеджерах, как правило, всё ужасно старое, потому что обновляются не так часто (много что нужно постоянно проверять-перепроверять), но типа стабильное.
mva
я не знаю, как у вас в yaourt
mva
а в генте — у меня целый оверлей с пакетами (с git-версиями в т.ч.). В дополнение к тем, что в основной репе.
Snusmumriken
10 из 10
Snusmumriken
Кстати, могу выдать загрузчик для скриптов, ему пофигу на ось. https://pastebin.com/WPVKuSrh Его стоит чутка отшлифовать, но он вполне рабочий.
Roman
так признания не будет, надо репозиторий, ридми, вики, можно с примерами и тестами
Snusmumriken
Хе-хе-хе, рановато пока. А признание и так хаваю большими ложками, ибо одной ложкой - не разгребёшь. Суть: запускаем эту фигню примерно так: luajit boot.lua [script.lua or folder with main.lua] Внутри запускаемого проекта есть заранее определённая табличка node. Эксплуатация: node.load(arg) x = 10; y = 20 end node.update() x = x + 1; y = y + 1 end Ну типа грузим load, а потом в цикле гоняем update. Паузу у update можно регулировать.
Snusmumriken
Ой всё!!!
Snusmumriken
Да ладно, немного телодвижений, за час намутил, тут немного. Вот с менеджером lanes-потоков (который делает то же самое что и boot.lua но параллельно, со связями между тредами и с основным тредом) было больше мороки.
Snusmumriken
К тому же, ты что, не знаешь что я тут фулбайк-девелопер высшего уровня? Я ещё свою логирующую библиотеку закочевряжил, с уровнями логирования (которые можно отключать), с произвольными аппендерами для разных типов логирующих сообщений (debug писать на диск, а fatal - писать на диск и отправлять на сервер, например), и эта фигня ещё и проста в использовании!
Snusmumriken
В общем, имхо, прежде чем пользоваться чужими абстракциями, стоит накатать хоть фиговые но свои, ибо в противном случае если что-то у чужой абстракции сломается, на стаковерфлоу никто не будет разбирать за тебя причины падений этого счастья. Плюс обучение в создании АПИ и архитектур. Это реально важно.
Snusmumriken
Snusmumriken
Но знаешь сколько фреймворков с фиговыми АПИ? Если я буду мутить много либ, с повышением уровня сложности, со временем смогу в хорошие АПИ фреймворков. А людей, которые способны проектировать это - очень мало. Такие дела. P.S. Уже умею в апи фреймворков, от которых не хочется блевать прям сразу, только чуть погодя : )
Snusmumriken
Ну нет. Смотри, сейчас каждый томат из левозадрищенска мутит свою CMS/js-фреймворк/огромные разожранные тулзы, которые не расширяются, не стыкуются ни с чем другим (взаимоисключая) и вообще. Таких много, просто они не умеют. Процентное соотношение обычное: 20/80. 20% разработчиков мутят фреймворки, и 20% из них - умеют в апи и архитектуры : ) We need to be better.
Snusmumriken
И очень жаль что так, ибо оно конечно ускоряет производство, но только в рамках заточенности, и это если повезёт : )
Snusmumriken
Я про производство, то есть скорость накидывания говна в проект, который после этого начинает работать примерно так как от него хотят.
Snusmumriken
Это ты описал библиотеки. Фреймворки - это даже брать не надо, но работает не так как тебе нужно, ибо разраб делал для себя и, скорее всего, криворук : ) Есть такая весёлая алкогольная игра: загадываем случайное слово, ищем в гугле [слово.js], и если такое не находится - пьём.
Snusmumriken
Ох, ну я тебе говорю про то, что 95% из кучи фреймворков - кошмарно написанные монолиты или куча кошмарных же обёрток, которые делали так, будто не понимали как это будут использовать, типа для галочки. Про производительность вообще молчу.
Snusmumriken
Да, нам нужен универсальный, на все случаи жизни. Вроде того. Пойду дела делать, давай.
Snusmumriken
Да, нам нужны 42 конкурирующих стандарта.
Snusmumriken
А, это да, под .so стоит влепить, хех.
mva
а в макосе dynlib, или как-то так, вроде
Snusmumriken
Оно тоже умеет в .so, разве нет?
mva
хз
mva
я макось последний раз видел более 10 лет назад
Andrey
почему у меня ffi.copy не копирует?) http://paste.org.ru/?inq82d
Andrey
если я сделаю: print(str.to_hex(buf)) то получу 000000000000000000002400000000003b9beaf159306ab6 т.е. данные там есть
Andrey
и размера нужного
Andrey
и на вид то, что я туда уложил