Snusmumriken
Открываешь сурцы. И смотришь :3 Они просты для понимания, хоть и написаны на сишке. Снабжены комментариями и всем таким. Превосходный самодокументированный код.
Oleg
Ну, это же просто регулярки. Они довольно магичны, конечно, но их незнание очень сильно мешает работе с текстом.
Регулярки я уж лет 20 использую. С этим проблем нет. А вот твой совет по раскукоживанию многомерного массива как раз в тему пришёл. Я про присвоения объектов знал, но почему-то к этому случаю с массивом не допетрил применить =)
Oleg
Теперь надо обработку кнопок сделать.
Oleg
Колбасу типа «a and b or c» я тоже юзаю. Мне кажется такая конструкция выглядит более понятней, чем «a ? b : c».
Yogurt
Вообще-то нет
Tverd
в "a and b or c " есть одна проблема... если b ложно, то С не будет )
fgntfg
Тернаную операцию лучше не использовать (сам любитель)
mva
в "a and b or c " есть одна проблема... если b ложно, то С не будет )
a and (b and b or c) or c. Не уверен, можно ли внутри or c сократить, но, вроде...
mva
Алсо: > =(true and false or "moo") [1] moo
Snusmumriken
Да, потому что таки все элементы цепочки должны быть истинными, чтобы вытащить последний элемент.
Disi
Интересно думаете?
Disi
#lua https://github.com/zeta0134/LuaGB
B
Чет вроде и идут, а общее количество людей вроде особо и не меняется
Snusmumriken
Хех, расслабься. Раз в неделю по одному человеку - это немного. Цифра особо не изменится.
B
Тут еще нормально, люди как то сжато и по делу, а сижу в чате по blender'у тк там замутить пришлось, прям флуд, сотни сообщений, а по делу мелочь Людей там столько же
Snusmumriken
Ну, время от времени и тут есть флуд, так что да. Мне главное чтобы были те, кто задают вопросы, чтобы я мог на них отвечать :3 Хобби такое.
Snusmumriken
#lua https://github.com/zeta0134/LuaGB
Ох вау, и это на love2d. Действительно забавно, уже хочу в сурцы.
Snusmumriken
Вот я и там!
B
есть что по json у кого?
Snusmumriken
Дофига либ, от чисто lua до офигенно быстрых но нуждающихся в компиляции cjson.
B
не не, пока только в плане знакомства
Snusmumriken
http://lua-users.org/wiki/JsonModules
B
с самым джейсоном в целом =) просто видимо плохо гуглю, что то мне крайне мало чего попадается, и то только в купе с джавой или пхп
Snusmumriken
Да, как ты понимаешь, не стоит перегонять объекты напрямую в json, лучше экспортировать поля. Хм, кстати, можно добавить забавную функцию к своим классам "toTable", экспортирующую поля для дальнейшего восстановления.
Snusmumriken
Json - представление данных изначально из жаваскрипта. Инициализация - как будто код жаваскрипта. Ну там: [1, 2, 3, 4, 5, "foo", "bar"] или {"foo":"bar", "bar":[1, 2, 3, "foo"]} Единственное различие с луа-таблицами - ключи в кавычках, двоеточие вместо "равно", и квадратные скобки для списков. Умеешь в таблицы - умеешь в json.
B
просто видел в той же короне как с луа нормально можна с ним работать, а сам джейсон вроде как позволяет кучковать инфу в удобочитаемом виде но толком информации больше и не нашел, мне пока посмотреть почитать то такое json и как оно там все ага, ну вроде не страшно
Snusmumriken
Ты знаешь для чего используется? В целом, что такое json и с чем его едят?
Snusmumriken
Технически, это преобразователь строчек в объекты нужного тебе языка и обратно. Ну, конвертер таблица -> строка -> таблица Зачем? В основном, чтобы сохранять на диск, передавать объекты/структуры по сети. Просто сохранять, просто загружать. Можно придумать ещё несколько способов применения.
B
ну те же к примеру тайловые проги для создания уровней хранят всю информацию в json файлах
Snusmumriken
Да, да, например так. Darkest Dungeon хранит кучу конфигов в json'ах. Да и я тоже. Просто нужно грузить одну табличку из файлика при каждом запуске приложения. А при изменениях (громкость звука в игре повысили) - перезаписывать файл. Ну, ещё стоит иметь вшитую табличку дефолтных значений, шоб если файла нет - тут же записать. Вот и всё : )
Snusmumriken
О, избранные, кстати, делают полноценные сериализаторы, которые ещё и функции сериализуют, и мета-данные типа __index. Но это уже не json.
B
оффтоп но : только сел смотреть, и тут корочи как воткнуть одно в другое...ща "author" : {"f1" : "value","f2" : "value","f3" : "value"}, "book" : {"f1" : "value", "author", "f2" : "value"}
Roman
оу, знакомые f'ки!
Roman
это ответ от БД?
B
не не не, вопрос про внедрение автора в книгу
Roman
и я о том же!
Roman
это ответ от бд?
B
это на скору руку написаный пример
Roman
тогда в чем проблема
B
вот так просто можно писать? "author" как потом с этим работать?
Roman
"book" : {"f1" : "value", author: author, "f2" : "value"}
Roman
result.book.author — автор
B
а как выбирать если такого много? если там писало трое, то пишем всех отдельно а как потом заганять их
Roman
не знаю в чем проблема, author = таблица, потом в другую таблицу присваевается tbl.author = author и все
Roman
но если вдруг нужны техники вытаскивания иерархий из постгреса - есть множество увлекательных наработок
Roman
он просто тоже неименованые поля выводит как f1, f2
Roman
вот про него и подумал
B
я просто сам запутался, мы ж по сути в джейсоне только храним данные в структурированной форме так?
Roman
в том то и его задумка - в нем данные в НЕ структурированной форме - делай в нем как хочешь
Roman
{"book": {..., "author": {"name": "..."}, ...}}
Roman
интересный аналог это GraphQL
B
я просто уже сам окончательно запутался тобишь воткнуть верхнего автора как используемый обьект нельзя, это ж не яп { "author" : { "id" : "value", "name" : "value", "surname" : "value" }, "book" : { "title" : "value", "author" : "id", "numOfPages" : "value", "genre" : "value" } } а типа потом нужно будет вытаскивать и работать как то с ним, это мне типа к книжке значит сразу приписывать ид автора что ю потом сравнивать с авторами на сходство
Roman
да, вот как раз графкюэльный пример нашел: { "posts": { 4565633: { "author_id": 599, ... }, 4565634: { "author_id": 599, ... }, }, "autors": { 599: { "posts": [4565633,4565634] }, } }
Roman
лучше id делать ключами, чтобы потом нужного автора не искать перебором
B
в смысле парой конкретно указывать куда сразу идти? меня что то просто с простых вещей жесско паяет, вроде не сложно а понять не в состоянии
Roman
res = тот json выше author = res.authors[599] first_post = res.posts[author.posts[0]] как-то так
B
обьекты\таблицы мы получаем как таблицы? как я понял еще и с "нормальной" нумерацией с 0
Roman
две поправки по примеру моему: json не умеет числовые ключи, не луа) и глупый js сортирует как хочет, так что выдача в таком виде без порядка
Roman
забыл, json не только для js
Roman
тогда зависит от языка
B
тут ж кстати, встроеного ничего в луа по дефолту нет для джейсона? просто у меня идет автокомплит не совсем понятно он от луа или от короны, просто пользуюсь атомом и там пачка пакетов разных
Roman
луа зе бест для встраивания, ничего лишнего, нужен json - бери библиотеки
Roman
вся забава с json'ом - в json'е есть тип null, в луа его нет, вот и выбирай библиотеку, которая нулл реализует как тебе нравится
B
а свою проверку какую то черкануть никак? или заганять null как строку ну типа сложно, там же по сути главное получать передавать данные а остальное можно уже попробовать обрабатывать на месте
Roman
конечно можно, не очень и сложно самому json составлять
Roman
не очень хорошо это, потому что cjson очень быстр, а самому так быстро не выйдет
Roman
по секрету, в json'е null нафиг не нужен, от него никакого эффекта в результате
Roman
я имел в виду то как пустые таблицы в jsonе хранятся - это разные библиотеки по-своему и решают
Snusmumriken
Хе-хе, на определённых данных, неплохо работает как раз формат аналогичный json'у. authors = { {name = 'Stephen Edwin King', bdate = 1974, books = {2}}, {name = 'Douglas Noël Adams', bdate = 1952, books = {1}} } books = { {title = 'The Hitchhiker’s Guide to the Galaxy', date = 1979, author = 2}, {title = 'It', date = 1990, author = 1} } Чот такое. Тут в качестве id-ключа выступает номер в параллельной группе. Выгрузка списка книг конкретного автора выглядит примерно так: getBooksByAuthor(name) local author for i, v in ipairs(authors) do if v.name == name then author = v end end if not author then return nil, 'not found' end local booklist = {} for i, v in ipairs(author.books) do table.insert(booklist, books[v]) end return booklist, #booklist end Для унификации всего этого счастья и автодополнения, нужны всякие первичные-вторичные ключи, язык запросов (или методы взаимодействия), механизмы поддержания целостности данных и прочая фигня. Но зачем, если есть sql/nosql?
Snusmumriken
я имел в виду то как пустые таблицы в jsonе хранятся - это разные библиотеки по-своему и решают
Как стандарт - пустая таблица ([]/{}). И это правильно, потому что с "другой стороны" ждут список/таблицу, и пытаются его обработать, даже если он пуст.
Roman
как кому нравится
Snusmumriken
Ниет, тут стандарты :3 В противном случае, json был бы опасен.
Roman
мне этот подход не нравится, надо думать как сериализатору сказать - это пустой массив, или это пустой хеш
Roman
по этому в моей реализации пустой массив или хеш - это его отсутствие
Snusmumriken
Не надо думать. field = {}, перед тем как мы вообще начали парсить содержимое таблицы. В общем, ты не прав, товарищ. Стандарты есть стандарты, или это уже не json.
Roman
да парсить то другое, я про превращение пустой таблицы в json строку
Snusmumriken
http://www.json.org/json-ru.html Почитай ECMA, тут валяется. А, пустая таблица превращается в скобки. t = {yo = {}, foo = {1, 2, 3}, bar = {a = 10, b = 20}} -> "{"yo":[], "foo":[1, 2, 3], "bar":{"a":10,"b":20}}" Пустая таблица = пустой список. Инфа сотка. Обрабатываются одинаково.
Roman
нененене
Roman
какой это пустой список?