Tverd
да, было дело... параллельно писал одну и ту же прогу на обоих... не хватало некоторых моментов в луа, но решабельно
Tverd
ну например if a in tbl
Tverd
keys и values
mva
Рома про массивы частенько плачут ещё
mva
то им нумерация с 1 не нравится, то nil, то ещё чего
mva
Вот, например, из "поехавших": https://m.facebook.com/olga.onoyko/posts/1131376423638352
Roman
Согласен, стандартного мало, но это спорные вопросы на самом деле: if a in tbl - тут лучше всего заводить отдельную таблицу [value]: true, а для этого какую-нибудь кастомную функцию. Даже в доках луа часто видел "в луа нет этого и этого, потому что это можно реализовать по-разному, вот и делайте как хотите". Лично я от этого подхода тащусь, это как arch с kiss подходом
Roman
keys и values - в две-три строчки малюсенькая функция, нет, надо плакать что нет по стандарту
Tverd
Roman
На чистом луа может и правда неудобны многие вещи, зря мунскриптом никто не пользуется, это как zero cost абстракция: вместо if a in v можно
for item in *b
if a == item
и дальше логика
писать совсем чуть-чуть дополнительно, зато нет лишних вычислений
Tverd
ну почему никто ))))
Roman
Snusmumriken, пожалуйста, пруф про тормоза мунскрипта? По-моему вполне логично все транслирует, лишнего не замечал
Roman
Да ну нет, не верю, разница однозначно от нуля, а не от полутора, а вот чтобы он замедлял работу в тринадцать раз! Да ну!? Максимум на десятую
Snusmumriken
Ой, там где мунскрипт делает несколько лишних условий, и высоконагруженный код становится перегруженным обычными if-else.
Snusmumriken
Там производительность может очень резко упасть.
Snusmumriken
Почитай как работают трассирующие компиляторы.
Tverd
Да нужно им пользоваться разумно... И знать где эта производительность падает... Смотреть луа код полученный. И не будет никаких падений
Roman
просмотрел http://moonscript.org/reference/, все таки, где он тут хоть одно лишнее условие добавляет?
Roman
циклы, которые превращаются в массивы, ни тут, ни в coffee не использую, довольно неясно что там внутри, а в остальном вполне чисто
Tverd
my_function = (name="something", height=100) ->
print "Hello I am", name
print "My height is", height
наверно имелось ввиду такое
Snusmumriken
Вот это меня и раздражает.
Чтобы не сделать говняху на js, нужно реально быть Ниндзя На JS. Потому что что-то казалось бы обычным и очевидным, но работает в 100500 раз медленнее чем что-то то же самое, но чуть по другому описанное.
Имелось ввиду еще большое количество loadstring'ов, которые компилируется очень специфически.
Roman
да нет, там проверки нужны чтобы дефолтные значения присваивать. (это про функцию)
Tverd
Ты чего-то путаешь, нет лоадстрингов...
Roman
Может tostring?
Roman
"#{}" можно использовать, а можно и ..
Snusmumriken
Ребят, каким образом работает moonscript, скажите мне пожалуйста?
Tverd
запускаешь moonc и компиляешь moon код в lua код
Tverd
потом что хочешь с ним, то и делай
Snusmumriken
1. Парсим файл.
2. Находим конструкции. Преобразует их в соответствующий lua-код и запускаем loadstring'ом.
Tverd
нет, ничего не запускаем... на выходе lua файл...
Tverd
вот потом его и запускаем
Snusmumriken
Оки. Я пользовался динамическим мунскриптом.
Snusmumriken
Который на лету подгребает кучу всего, там же парсит. Смотрю потом дамп виртуальной машины - а там большая часть трасс - о трансляции мунскрипта.
Roman
Это лол, тогда прошу дать ему ещё шанс, но с трансляцией по файлам, мун классная штука
Snusmumriken
Посмотрим
Roman
moonc довольно неудобно следит за файлами и порой коряво срабатывает на изменения, кому-нибудь интересен мой node.js'овый сборщик?
Snusmumriken
Да ты прям большой любитель мунскрипта :3
Roman
хотя, это можно делать и gulp'ом и прочими
Snusmumriken
Я просто предпочитаю чуть больший контроль за происходящим, и сишные библиотеки.
Tverd
я питоном сибираю ))) свой мэйк написал
Tverd
Снус, дык контролируй потом. Код в принципе читабельный ) В принципе ))))))))))))))
Anonymous
Какой компилятор на mac лучше поставить? подскажите новичку
Anonymous
mac не когда не пользовался
Snusmumriken
Вот это мне и лень.
Мелкие улучшалки синтаксиса делаю в виде библиотек. Те же стрелочные функции и функциональщину в массивах. Это быстро.
Tverd
Snusmumriken
все то же что и на линуксе...
Погоди, мы же не знаем, что человек хочет компилировать, и не факт что это про мунскрипт: человек может перепутать компилятор и интерпретатор, например.
Anonymous
Скорее не так выразился поставил андроид студио + нужен хороший, редактор кода из free
Snusmumriken
Ох, а сейчас я ничего не понял : )
Tverd
вот теперь и я не понимаю )
Tverd
Snusmumriken
Давай объясняй, что ты хочешь сделать.
Прицепить lua к проекту на Android?
Anonymous
Да
Anonymous
Или это невозможно
Snusmumriken
Вот, уже лучше.
Это возможно, но не ко мне, увы.
Уверен что есть бриджи между java и lua, надо загуглить.
Sergey
JNLua
Snusmumriken
Такого много:
https://www.google.ru/search?q=lua+in+android+app
Tverd
тоже не юзал такую связку.
Snusmumriken
Так как неизвестно, как именно ты хочешь юзать луа (или код на java скриптуется, или небольшие расширения, или только гуй на луа), тут тебе не дадут инфы. Люди хорошо отвечают на конкретные вопросы с наиболее полным описанием проблемы : )
Anonymous
Ок спасибо, буду гуглить может и найдется решение.
B
вопрос не по теме, но интересен
знает ли кто что либо об использовании облака, возможности его подключения к сайту
меня интересует использования облака как хранилища всех ресурсов используемых на сайте
—------—
к примеру картиночки-шмартиночки, какие то полновесные файлы в целом
—------—
никто с таким никогда не сталкивался?
—------—
ну или в целом какая то интеграция облачного хранилища в свои проекты но в том смысле что бы не просто просматривать содержимое, а что бы оно непосредственно работало
—------—
звините за оффтоп
Sergey
CDN это называется.
Snusmumriken
Ребятки, мутю либу для общения по байтоёбским протоколам.
Кому ннада?
Snusmumriken
Суть: транслятор байтов в цифры и обратно по ключам, мб взаимодействие с флагами.
Snusmumriken
Ну, к примеру, протокол nat-pmp, который позволяет пробивать порты и узнавать свой глобальный адрес.
Там применяются такие таблички:
NAT-PMP adress request:
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vers = 0 | OP = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Тут просто два нулевых байта.
Но суть в том, что когда этой фигни становится много, с ней крайне неудобно работать из языков с классом строк.
Я прост хочу преобразовывать это в табличку, типа:
msg = {Vers = 0, OP = 0}, для комфортной работы.
Получится что-то типа этого:
req = protolol_mapper{
{Vers, 1},
{OP, 1}
}
где в первой табличке - Vers - ключ, 1 - количество байт, а положение таблички относительно других - позиция.
И дальше:
data = req.decode('\0\0')
data.Vers --> 0
data.OP --> 0
и наоборот:
req.encode{Vers = 0, OP = 0} --> '\0\0'
Snusmumriken
Мало ли тут есть такие же байтоёбы как я.
Sergey
Штука классная. В будущем может пригодится.
Anonymous
А-ля google protobuf?
Snusmumriken
Только написать осталось : 3
Не знаю что такое protobuf, сам начал активно байтоёбить (в т.ч. в своих протоколах), и понял что без подобного проблемно.
Snusmumriken
Ух ты, а протобуф забавный.
Snusmumriken
Хм, кстати, на тему бит: можно использовать дробные числа 0.1 - 0.8 для доступа к отдельным битам. Ну там, в общую последовательность загнать битики с байтиками.
vvzvlad
А этой штукой можно как-то удобнее собирать посылку из байтов для отправки в порт? А то сейчас они у меня хранятся в HEX(т.е. как строка FFAE8D), в зависимости от условий выбираются if-ами, затем преобразуются в строку простой функций fromhex и склеиваются.
Snusmumriken
Во-во, для этого и хочу использовать.
Anonymous
интересно. хотя вроде повсеместно используют интервалы типа 31-0 чтобы указать нужные биты, нет?
Snusmumriken
Можно и так, но это же луа :3
Индексации с единички, всё такое.
vvzvlad
https://github.com/unwireddevices/unwired-smarthome-router/blob/master/router.lua вот так у меня сейчас
Snusmumriken
Карочи, обдумаю на тему доступа к битам, скорее всего они будут ключами в любом случае.
Sergey
Для портов индексацию лучше с нуля, конечно.