Oleksandr
Oleksandr
Спасибо за помощь, всем кто откликнулся на мой вопрос. Истина уже где то рядом :)
MrSmith
vvzvlad
а как проще всего сделать кольцевой буфер?
vvzvlad
мне приходит по одному символу строка без разделителей и символов конца строки, и я хочу не глядя запихивать ее в такой буфер, а потом регуляркой проверять, а не подходит ли под нее содержимое буфера — не набралась ли там строка полностью
vvzvlad
а, стоп, мне не нужен кольцевой. пусть с конца они пропадают
Roman
Можешь материал мне найти, пожалуйста, попробовать хочется. Гугл выдает lua vm in browser - да нуу, vm туда тащить, а чтобы скомпилировать с полной оптимизацией?
Roman
мне кажется, что вебассамбли новая эра кококо пиши на чем хочешь - только на словах, а на деле с ним дружит си и плюсы
Roman
Спасибо, значит lua -> llvm -> браузер! тогда супер
Roman
нет?
Roman
а как
Roman
я зашел на гитхаб emacripten, там написано Emscripten is an LLVM-to-JavaScript compiler. It takes LLVM bitcode. Луа в этот биткод можно превратить, профит?
ㅤ
Roman
есть даже линунс js, туда можно установить хоть lua, хоть хаскел, но в зачем?
ㅤ
Как зачем? Чтобы страдать.
Anonymous
The birth and death of Javascript, humor, 30min: https://vk.com/video3209020_168239546
Это на тему "можно". У меня на современный веб складывается взгляд, что они все мазохисты, так что подойдет :)
Roman
То что lua_json нынче отвалился - стало последней каплей, и я вознамерился сделать ещё один json, будет быстрее и правильнее.
Тут много сишников и плюсеров, можете с одним нубским вопросом по си помочь?
🦥Alex Fails
что по си? (Если что, то есть чат #supapro )
Roman
есть строка!
const char *data
lua_pushlstring(l, data, 3); // печатае первые 3 буквы
data++; // тут магия си! не знаю, как это происходит, но строка сдвигается!
lua_pushlstring(l, data, 1); // теперь это вторая буква
static void fn(const char *data) {
data++;
}
Как послать data в эту функцию так, чтобы строка после вызова сдвинулась?
Roman
ребят?
V◌┗⢎ℍıK
char **data
V◌┗⢎ℍıK
ну и передавать надо &data
Roman
я разные звездочки пробовал
V◌┗⢎ℍıK
fn(&data)
V◌┗⢎ℍıK
{
*data++;
}
Roman
Рома https://www.tutorialspoint.com/cprogramming/c_pointer_arithmetic.htm
Roman
магия...
Roman
если вдруг заметил за собой, что подбираешь синтаксис, значит не понимаешь сути. Срочно бросай всё и читай мануал
Roman
static void fn(const char **data) {
*data++;
}
другая_функция {
fn(&data);
дальше все равно печается с первого символа
}
V◌┗⢎ℍıK
а где объявление data?
Roman
static int decode(lua_State *l)
{
const char *data;
size_t json_len;
data = luaL_checklstring(l, 1, &json_len);
fn(&data);
lua_pushlstring(l, data, 3);
return 1;
}
V◌┗⢎ℍıK
а бля
V◌┗⢎ℍıK
(*data)++
Roman
получилось, спасиббо-спасибо-спасибо!
Roman
Роман Шакал, полностью согласен, что надо не брутфорсить синтаксис, а читать K&R и другие вещи, только это не у всех работает так. Я читал K&R год назад, не осилил, все забыл, решил ещё годик с си не связываться. И совсем другое дело, если пишешь рабочий код, кое-что угадываешь, и это по-моему лучше всякой книги, концепции сами собой расширяют сознание
V◌┗⢎ℍıK
в сишке указатели это базис. то, что используется везде постоянно. если ты будешь на ней код писать/читать, то без понимания, как это работает, ты и 10 строчек не осилишь
Roman
или другой вариант - угадывать синтаксис и запоминать как оно работает, а как не работает =)
Roman
шучу, конечно, си в моей очереди на прочтение
B
хто шо по планировщикам может рассказать?
B
какие программы или ресурсы для составления планов и мониторинга этапов исполнения, прогресса и такие все вещи знает?
слышал только что то типа trello но сам его не использовал
Алексей взываю к тебе
#мумрикпридиответпринеси
Snusmumriken
Хех, сам использую трелло
Snusmumriken
Для небольших команд - катит. Ещё есть jira как таскменеджер-багтрекер
Snusmumriken
Snusmumriken
Подобная организация плашек оказывается нормальной для билдов.
Потом в билд v0.12345 пихаем готовые плашки.
Roman
у меня проблемы с си апи, Снус, разбираешься в нем?
Snusmumriken
Ниоч : )
Сишку юзаю для алгоритмизации и в накатывании крошечных модулей в луа.
🦥Alex Fails
🦥Alex Fails
я правда ща спать собираюсь, поэтому просьба поскорее
Roman
lua_replace и lua_insert
Roman
сначала то попробовал - segmentation fault, потом другое - то же самое
🦥Alex Fails
код
Roman
делаю ещё одну реализацию json
вот что входит '{"key":"value"}'
где-то в коде:
lua_pushlstring ключ
lua_pushlstring значение
i = количество ключей = 1
а теперь я создаю таблицу, у которой заранее память на один ключ:
lua_createtable(l, 0, i);
теперь, чтобы ключи-значения в неё положить, надо чтобы таблица оказалась где-то внизу стака, а она вверху
Roman
lua_insert(l, любое число); — делает segmentation fault
Roman
блин, где у этого вашего си стак трейс?)
🦥Alex Fails
вот мы ща с Антоном Полухиным пишем пропосал в стандарт, чтоб появился
Roman
lua_pushlstring(l, "key", 3);
lua_pushlstring(l, "value", 5);
lua_createtable(l, 0, 1);
lua_insert(l, любое число); какого такого? может в луаджите косяк с этой функцией?
Alexander
Всем привет
Alexander
Кто сталкивался с установкой OPenRysty на freebsd
Roman
Кто задумывался, как у луа все печально с си апи
Snusmumriken
Да с этим вроде всё довольно просто
Roman
Когда спускаешься на уровень ниже - там все вопит о помощи, будто подвал с функциями на цепях
Roman
Я такой смотрю, жалко, хочу помочь, но я то что, я в си полный нуб и времени на это нет
Snusmumriken
Ну, так было принято писать на сишке в девяностые.
Или ты хочешь ООП?
Roman
В луа есть tostring
Snusmumriken
Подобный подход сделал внутренности lua очень простыми для понимания, даже без ООП.
Roman
если его дергать из си - оно работать не будет
Roman
там все работает очень страннл
Roman
тот же cjson не пользуется возможностями луа, а сторонние библиотеки использует
Roman
я от си тащусь! он офигенный, написано все хреновенько просто
Roman
и не продумано
Snusmumriken
А теперь подумай, почему именно написано так, а не иначе : )
Roman
в том же луаджите - где переменная неиспользуется, где проверки одного и того же по цепочке
Roman
почему? потому что некому заниматься, всем лень, спонсоров нет
Snusmumriken
Ну, кстати, если бы всё было супер-пупер-круто написано, спонсорам не нужен был бы сам Майк Пол : )
А вот апи у луаджита и луа - идентичны, и это нормально. Иначе не было бы кросс-платформенных библиотек.
Snusmumriken
Апи написано в католическом университете, и там есть обоснования, почему апи выглядит именно так.
Во-первых, это одна из самых человекочитакмых апишек на сишке. Всё остальное будет гораздо хуже по пониманию, ИЛИ производительности. Или ты хочешь получить на выходе питонопроизводительность?
Roman
ненене, я только за! фан производительности
Roman
и вот ты такой свитчем выяснил тип переменной в стеке, дальше хочешь для неё метод вызвать луашный, а любой метод для переменной первым делом опять будет проверять её тип
Roman
для каждого типа есть свои функции, безусловно, но вот в апи их тащить - а, пофиг, так сойдет
Roman
то что lualstring меняет саму переменную - ну как так можно было накосячить?
Snusmumriken
В сишке не работают те же методы что и в луа. Учить писать на сишке, в общем.
За счёт системы указателей под элементарные типы.