@ProLua

Страница 195 из 307
Elias
09.11.2017
19:09:51
В XML тэги по два раза повторяются, это увеличивает размер и делает его написание вручную чуть сложнее + В xml есть очень много способов сделать одну и ту же вещь, а в JSON таких вещей не встречается Но вообще я вижу, что xml все ещё много где используется, и это вполне разумно и логично, так что против xml я ничего не имею. Порой даже завидую тому, как его можно делать более строгим и типизированным с помощью всяких schema, у JSON с этим все не так хорошо.

https://www.json.org/index.html Вот здесь прекрасно видно, насколько минималистичен JSON :)

Columbus
09.11.2017
19:12:42
но даже с json.hpp я умудряюсь говнокодить

Vadim
09.11.2017
19:16:09
это в крови :)

Google
Elias
09.11.2017
19:23:52


Я сделал вот такой биндинг для json.hpp

Довольно удобно И можно итерировать по объектам и массивам с помощью pairs

Потом код на github кину, как немного отполирую :)

Group Butler [beta]
09.11.2017
20:24:31
Добро пожаловать в чат pro.lua, Дядя Федор! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Daniel
10.11.2017
08:17:22
Как лучше парсить JSON?

Yuriy
10.11.2017
08:18:03
программно)) А если серъезно то Lua CJSON

Snusmumriken
10.11.2017
08:27:54
Потом код на github кину, как немного отполирую :)
А чем превращатор json в lua-table плох? Таких много, превращают в обычную lua-таблицу, благо они совместимы с json.

Vadim
10.11.2017
08:29:14
Потом код на github кину, как немного отполирую :)
если оно ещё и быстрее/оптимальнее по памяти чем cjson будет, то будет вообще ня

Snusmumriken
10.11.2017
08:30:55


И есть просто json-либы, на чистой луа, но чутка медленнее работают.

Elias
10.11.2017
08:32:23
Я сделал биндинг, потому что на C++ стороне использую JSON for Modern C++ И я на C++ стороне открываю JSON, получаю json объект и часть данных получаю в C++, а часть - в Lua При этом если бы я использовал Lua библиотеки, то мне пришлось бы два раза один и тот же JSON парсить, что было бы плохо. Производительность биндинга пока не тестировал. :)

Google
Snusmumriken
10.11.2017
08:33:48
Хмм. А на С++-стороне это как выглядит? Превращает json в некоторый объект, типа списка списков списков указателей на отдельные "ноды" json?

Потому что ты теоретически мог бы знаешь что сделать? Один раз грузить json на луа-стороне, а потом передавать луа-таблицу на С++-сторону, чтобы там с ней баловаться, например.

Elias
10.11.2017
08:37:30
Ага Можно, но Lua таблица не будет настолько же быстрой, как C++ контейнер. Большая часть загрузки больших JSON происходит именно на C++ стороне, на Lua относительно небольшая часть данных грузится

Snusmumriken
10.11.2017
08:39:13
Не факт что луа не такая же быстрая : ) Если грузишь большие json'ы на C++, выгружая кусочки в луа - можно в луа выгружать луа-таблицу, сгенерированную из куска контейнера. Или тебе ещё и нужно редактировать эту таблицу из луа, чтобы и на С++-стороне менялось?

Я просто предпочитаю разделять такие штуки.



И на луа-стороне не используется никаких userdata и нестандартных типов данных, специально чтобы у пользователя было меньше поводов что-то сломать, напороться на невозможность сериализации данных, например, и всего такого.

Elias
10.11.2017
08:43:44
Эти кусочки не всегда идут в большом JSON как один объект. Всё-таки удобно передавать целый JSON и потом давать скрипту делать с ним всё, что угодно И да, иногда нужно изменять JSON на стороне Lua Да и к тому же someJson.someKey.someKey2 в Lua на C++ стороне напрямую обратится к someJson["someKey"]["someKey2"]. И никаких таблиц не нужно дополнительно создавать Биндинг библиотеки строк 100 занимает, работает довольно быстро. И если я и хочу сделать из JSON Lua-таблицу, то я могу это сделать на Lua стороне вызовом C++ функции.

Snusmumriken
10.11.2017
08:44:12
Оки : )

Elias
10.11.2017
08:44:34
И да, если напрямую использовать Lua C API, то то, как ты делаешь, наверное, лучше. А я просто как казуальщик использую sol2, поэтому для меня сделать userdata - вообще не беда, не парюсь особо по такому пока что. :D

Snusmumriken
10.11.2017
08:46:36
У меня бзик на "простые решения, которые не дают никому ничего сломать", а ещё на "решаем все задачи на луа-стороне, С++ - только для расширения функционала".

Columbus
10.11.2017
08:48:13
А зачем вообще парсить жсон через луа?

Vadim
10.11.2017
08:50:14
А зачем вообще парсить жсон через луа?
а где его ещё парсить, если приложение на lua?

Columbus
10.11.2017
08:50:37
Зачем делать приложение на луа?

Vadim
10.11.2017
08:50:55
...

Columbus
10.11.2017
08:51:04
Я так поняла, что луа медленнее, чем си/си++

Луа как скриптовый язык хорош, он для этого охуенный

Snusmumriken
10.11.2017
08:52:00
Ну представь себе, что ты делаешь сетевую игру. У тебя есть сервер, который общается через json. Ты делаешь ему запрос: local request = { type = 'leaderboard', value = 'UserPupkin', } server:send(json.encode(request)) data = server:receive() print(data) --[[ { kills = 10, death = 20, assExplodes = 100500 } ]] Ты это парсишь, и добавляешь в статистику игрока.

Vadim
10.11.2017
08:52:17
Луа как скриптовый язык хорош, он для этого охуенный
покажи в современном мире хоть одно веб-приложение не на скриптовом языке, плз

(они есть, да, но я уверен, что не покажешь)

Google
Columbus
10.11.2017
08:52:36
А не проще сделать функции для работы парсера в плюсах и ебануть их в луа

Snusmumriken
10.11.2017
08:52:52
Зависит от твоих конечных целей.

Columbus
10.11.2017
08:53:05
Тут скорость важна

Vadim
10.11.2017
08:54:39
Я так поняла, что луа медленнее, чем си/си++
я как-то в IRC постил. и в конфе prosody, вроде, тоже. Делал я как-то на pure lua имплементацию sha512+crypt() (пароли в линупсах). Она работала от двух до десяти раз (в зависимости от к-ва циклов) быстрее референсной C-имплементации

Тут скорость важна
где "тут" и кому важна?

Columbus
10.11.2017
08:55:22
Тут, в конечной проге, важна мне

Мне скорость важнее всего

Vadim
10.11.2017
08:55:43
ну, так то у тебя в твоей неведомой проге

а выше ты задаёшь более общий вопрос "зачем вообще"

это немного разные вещи

Columbus
10.11.2017
08:56:47
Так луа же обернут вокруг си

Vadim
10.11.2017
08:57:17
...

Columbus
10.11.2017
08:57:20
Поэтому я думаю, что оно должно работать медленнее, чем си, но луа да, самый быстрый из скриптовых языков

Vadim
10.11.2017
08:57:36
ни вокруг чего Lua не обёрнут

Columbus
10.11.2017
08:57:56
Питон люто медленный, squirell быстрый, но не популярный

Vadim
10.11.2017
08:58:08
у Lua если лексические правила, которые можно парсить на чём угодно, включая сам Lua

Columbus
10.11.2017
08:58:14
ни вокруг чего Lua не обёрнут
У него есть компилятор?

Vadim
10.11.2017
08:58:23
LuaJIT, вон, вообще изобрёл DynASM

Columbus
10.11.2017
08:58:50
Кроме интепретера у луа вроде ничего нет, в бинарники луа может?

Google
Columbus
10.11.2017
08:59:09
LuaJIT, вон, вообще изобрёл DynASM
Про луажит я мало слышала, но вроде он быстрый

да
Вау

Я думала, что есть только луа, который как либа для си

Ну и жит

Snusmumriken
10.11.2017
08:59:37
Тут скорость важна
Скорость - смотря где важна. Ну смотри. Тебе надо обновлять лидерборд раз в пол года, но при том - нужно легко переносимое приложение без перекомпиляций. Ядро у тебя уже есть, скомпилированное под всё, и тебе лень компилировать С/С++-либу под всё, или пересобирать ядро десять раз, с правками под каждую версию, где будут запускать твою приложулю. Делаешь не шибко требовательную к скорости часть на луа, получаешь полную переносимость.

Vadim
10.11.2017
08:59:54
Я думала, что есть только луа, который как либа для си
этого уже достаточно для того чтобы завернуть lua-скрипт в бинарник

он даже, скорее, отрицательный

потому что на производительность это не повлияет ВООБЩЕ никак, а запиливая код в бинарник ты ещё и усложняешь дебаг (и скрываешь код). Сразу два плохих дела.

Snusmumriken
10.11.2017
09:02:55
Я, например, активно использую love2d. Это - фреймворк с биндингами в луа, и он уже скомпилирован на 100500 архитектур. Модификации исходного кода фреймворка для меня - табу, поэтому я всё что можно пишу на луа, а что нельзя - пишу в виде динамически подключаемых сишных библиотек, благо их после этого можно подключать к чему угодно, что использует луа, не только к этому движку-фреймворку.

Elias
10.11.2017
09:04:57
Я всегда любил C++, но после того, как пописал много на Lua, начал жалеть о том, что не начал писать игру изначально на Love2d. С Lua просто легче и приятнее жить, что ли. ?

Snusmumriken
10.11.2017
09:05:41
С++ не даёт нормальной переносимости, приходится много трахаца чтобы запускать и там и там.

Vadim
10.11.2017
09:06:20
я знаю одного C++ специалиста, который пишет так, что компилировать это может только clang

Snusmumriken
10.11.2017
09:06:48
В моей стимовой либе - не используется ничего кроме стима и STD, поэтому она ОТНОСИТЕЛЬНО переносима. Но стимовая часть компилится только VS, и ничем другим, это особенность самого стима.

Elias
10.11.2017
09:06:48
Зависит от платформ У меня игра на Windows, Linux и Mac компилируется без проблем с CMake. Использую только кроссплатформенные библиотеки, так что в целом проблем нет Хотя в этих библиотеках могут быть платформо зависимые баги... и вот тогда лучше застрелиться

Snusmumriken
10.11.2017
09:07:53
Ну, в VS можно настроить выход для линупсов/arm.

Google
Vadim
10.11.2017
09:07:59
напомню, что vs есть только под одну ос и одну процессорную архитектуру

(ну, без кросскомпиляции, с которой там грустновато)

Snusmumriken
10.11.2017
09:09:02
Надо будет тестить стим с кросскомпиляцией.



Хотя я скорее сделаю чуть другую фиговину, типа: 1. При инициализации стима, начинаем трекать таблицу steam.event (мы её выгружаем вместе с таблицей steam) 2. Колбеки - проверяют наличие нужной функции в таблице event, и при наличии - запускают её через lua_pcall.

Philipp
10.11.2017
11:28:21
Хотя сейчас мне таки не хватает какого-нибудь «серьезного» языка типа С/++/Питона

Elias
10.11.2017
11:45:37
Думаю скоро работу искать, и даже хочется пойти куда-то, где будет Lua или Python Жить будет легче. Но 7 лет на C++ жаль просто так оставлять :D

Tverd
10.11.2017
11:50:39
Переходи на nim )

Elias
10.11.2017
11:56:00
А на нём много кто кодит?

Group Butler [beta]
10.11.2017
12:10:39
Добро пожаловать в чат pro.lua, Алексей! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Алексей
10.11.2017
12:10:47
https://iponweb-events.timepad.ru/event/610813/

(извините за наглость)

Tverd
10.11.2017
12:11:14
А на нём много кто кодит?
да в том то и дело что не много, хотя очень крутая штука

Snusmumriken
10.11.2017
12:12:44
Elias
10.11.2017
12:12:59
https://iponweb-events.timepad.ru/event/610813/
О, спасибо А то пропустил бы. До этого все пропускал :(

Group Butler [beta]
10.11.2017
12:13:08
Добро пожаловать в чат pro.lua, Anton! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Страница 195 из 307