Всем привет, данная публикация будет посвящена работе с встраиваемой реляционной базой данных SQLite в Unity. Данная статья написана новичком для новичков с целью показания работы с SQLite, предполагается, что вы знаете основы SQL. Так как в интернете нет ясного тутора для новичков, я решил занять эту нишу. В данной статье мы напишем простенький класс для работы с данной СУБД, который можно использовать для решения широкого круга задач (локализация, сохранение данных, ведение разных таблиц).
Читать полностью »
Рубрика «sqlite» - 4
Использование SQLite в Unity (Unity + SQLite)
2019-03-07 в 15:22, admin, рубрики: C#, sql, sqlite, sqlite3, unity, unity3d, unity3d уроки, туториалыТрехмерный движок внутри запроса SQL
2019-01-11 в 8:21, admin, рубрики: 3d, 3d-движок, phong, postgresql, ray marching, raymarching, sql, sqlite, аппроксимация, аппроксимация квадратного корня, вавилонский метод, затенение по фонгу, квадратный корень, любителей читать теги, магическая константа, метод герона, ненормальное программирование, погрешность, поздравляю с первой пятницей, рекурсивные запросы, трассировка лучей, трехмерный движокНесколько лет назад на форуме SQL.ru решили провести сравнение реализаций трассировщиков лучей на разных языках программирования. К сожалению, моя заявка не может участвовать т.к. она не выводит надпись «PIXAR», поэтому публикую ее здесь.
Для чистоты эксперимента я использовал SQLite без расширений. Оказалось, что там нет даже функции SQRT.
WITH RECURSIVE numbers AS (SELECT 0 AS n UNION ALL SELECT n+1 FROM numbers WHERE n<89),
pixels AS (SELECT rows.n as row, cols.n as col FROM numbers as rows CROSS JOIN numbers as cols WHERE rows.n > 4 AND rows.n < 38 AND cols.n > 9 AND cols.n < 89),
rawRays AS (SELECT row, col, -0.9049 + col * 0.0065 + row * 0.0057 as x, -0.1487 + row * -0.0171 as y, 0.6713 + col * 0.0045 + row * -0.0081 as z FROM pixels),
norms AS (SELECT row, col, x, y, z, (1 + x * x + y * y + z * z) / 2 as n FROM rawRays),
rays AS (SELECT row, col, x / n AS x, y / n AS y, z / n AS z FROM norms),
iters AS (SELECT row, col, 0 as it, 0 as v FROM rays UNION ALL SELECT rays.row, rays.col, it + 1 AS it, v + MAX(ABS(0.7+v*x) - 0.3, ABS(0.7+v*y) - 0.3, ABS(-1.1+v*z) - 0.3, -((0.7+v*x) * (0.7+v*x) + (0.7+v*y) * (0.7+v*y) + (-1.1+v*z) * (-1.1+v*z)) * 1.78 + 0.28) AS v FROM iters JOIN rays ON rays.row = iters.row AND rays.col = iters.col WHERE it < 15),
lastIters AS (SELECT it0.row, it0.col, it0.v AS v0, it1.v AS v1, it2.v AS v2 FROM iters as it0 JOIN iters AS it1 ON it0.col = it1.col AND it0.row = it1.row JOIN iters AS it2 ON it0.col = it2.col AND it0.row = it2.row WHERE it0.it = 15 AND it1.it = 14 AND it2.it = 13),
res AS (SELECT col, (v0 - v1) / (v1 - v2) as v FROM lastIters)
SELECT group_concat(substr('$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^. ', round(1 + max(0, min(66, v * 67))), 1) || CASE WHEN col=88 THEN X'0A' ELSE '' END, '') FROM res;
:++++I _________________________" ------/jucYJLQ0OZmwwwwwwwmmZO0QCUXcnj---------- ???????:<}/nzJQOwqdbkhao***####**o LUcx|[<;???????????????? ]]]]]]]]][[[ !{xu; o#MW&8%BB@@@@@ -ct[l ]]]]]]]]]]]??- U[[[[[[[}}}}}}}}} ;1X] $$$$$$$$$$ cx[" [[[[[[[[]]]?? UUJJJCCCLLL{{{{{{{{{{ :|QZzffB$$$$$$ |Qu? {{{{{{}}}[[]]??- YUUJJJCCCLLLQQ000OOO111111111 ,l!!; 111111111111{{}}[[]]??- YUUJJJCCCLLLQQQ00OOOZZZmmmwww(((((((((((((((((((()))))))))))))11{{ i]??- YYUUUJJCCCLLL ?fuv| ZZZmmmwwwqqqpppd||||||||||||||||||((())11{ i++i;??-- YYYUUUJJJ i Cmmwwwqqqppppdddbbbbk///////||(())11 }czfYuf{_-- XYYUUU Wwwwqqqpppddddbbbbkkkk/||(())) |j :zr)-- XXYYY; $$wqqqqpppddddbbbbk/|||(()) ^X Jcf- XXXY $$$$xwqqqppppddddbbb/||(()) v LX-_ zXX! $$$$$$$nqqqqppppdddbb||(()) q mQX- zzX> $$$$$$$$$$$$qqqqppppddd|(()) k dmL-_ zzl $$$$$$$$$$$$$$wqqqqppppd((() o W*kqOJ__ czz? $$$$$$$$$$$$$$$$$ wqqqqpp|(() O $$BadmQ__ ccc!1x $$$$$$$$ wwqqqq(() {$$$$$$$Babw0___ vcc<)xXQm W%@$$$$$$ mwwwwq()) %$$$$$@%W#adwQ___ vvcc>1rzCZqkoM&B$$ bmmwww)) )o$$$$B&MokpZL-__+ uvvvcc]tuUQmpkoM Zmmmm)1 J- &MohdmQU-__++ uuvvvcc{jvUQmp ZZZm)11 J: kpmQUc-__; nuuuvvvcc}fuYL nOOZZ11 /| .0CXu}-_ nuuvvvccc-)jv !00OOO11{ ;/zvzvxt1-- vvvcccz+{ }QQ000O1{{ !~+~>?- ccczz:<] : LQQQQ00{{}}[ ]?? zzzzXX ";I;" JCCCLLLLQQQ{}}[[]]]? zzXXXYYYUUUUJJJCCCCLLL{}}[[]]] XXYYYYUUUJJJJCCCC}}[[]] YYYUUUUJJJJC}[[] YUUUUJJ[[ UU
Под катом построчный разбор запроса. Как обычно, достаточно знания основ SQL и школьной математики.
Читать полностью »
Используем SQLite в Flutter
2019-01-08 в 10:45, admin, рубрики: android, android development, flutter, iOS, ios development, sqlite, разработка мобильных приложений, Разработка под android, разработка под iOSПривет! Представляем вашему вниманию перевод статьи «Using SQLite in Flutter».
Сохранение данных очень важно для пользователей, так как нецелесообразно грузить одни и те же данные из сети. Разумнее будет сохранить их локально.
В этой статье я продемонстрирую как сделать это, используя SQLite, в Flutter-e
Читать полностью »
Упрощаем работу с базами данных в Qt с помощью QSqlRelationalTableModel
2019-01-04 в 14:13, admin, рубрики: c++, qt, qt5, sql, sqlite, разработка под windowsДоброго времени суток, Хабровчане! В этой статье я хочу рассказать о своем опыте упрощения взаимодействия с базами данных SQL при разработке десктопного приложения с помощью класса QSqlRelationalTableModel кроссплатформенной библиотеки Qt.
Пролог
С Qt я познакомился еще будучи студентом 1 курса, только начиная программировать на C++, тогда же и серьезно заинтересовался библиотекой и, с тех пор, слежу за ее апдейтами. Несколько месяцев назад, на работе, мне дали ТЗ, в котором требовалось разработать приложение, взаимодействующее с БД SQLite. Структура базы фиксирована и заранее известна мне из ТЗ.
Приложение должно уметь удобно для оператора представлять данные, хранящиеся в базе, позволять добавлять новые записи, удалять и изменять уже существующие.
Далее я кратко опишу процесс разработки с приведением кусков кода и попытаюсь аргументированно объяснить, почему в данном случае был сделан выбор в пользу QSqlRelationalTableModel.
Читать полностью »
Магелланова ошибка: Buffer overrun или кругосветная экспедиция средствами SQLite FTS
2018-12-18 в 19:12, admin, рубрики: Google Chrome, sqlite, vulnerability, WebSQL, браузеры, информационная безопасность, ПрограммированиеКак-то обошли на Хабре недавнюю Magellan-ошибку и связанные с ней уязвимости, попробую исправить это упущение.
Немного истории:
- 1 Ноября 2018 в Chromium прилетел баг-репорт за номером 900910: "Multiple issues in SQLite via WebSQL." Об ошибке сообщает Wenxiang Qian из Tencent Blade Team.
- 5 Ноября 2018 ошибку закрывают в ядре библиотеки SQLite (FTS3), где она собственно и живет чуть не со времен создания модуля, т.е. с ноября 2009-го года.
- 28 Ноября 2018 оно вливается в Chromium
- Чуть позже Tencent Blade Team публикует сообщение об ошибке, дав ей название Magellan, особенно не раскрывая при этом подробностей, и указав, что публикация готовых эксплойтов и PoC пока не планируется.
- Через неделю в интернете полно PoC, крэшащих Chrome, Electron dev-framework и т.п. Доказательств и каких-либо других сведений, что уязвимость использовалась в злонамеренных целях по прежнему нет.
- DRH, подтвердил подозрения на Hacker News, что уязвимость имеет место (как минимум если допускается исполнение "чужого" SQL-запроса, или SQL Injection подобного сценария).
Немного подробнее о Magellan SQLite BUG
Ошибка связана с переполнением суммы целых чисел aka integer overflow, которая может быть вызвана в подсистеме FTS3/4 изменением индекса FTS таблицы, что в свою очередь может привести к переписыванию памяти или завершению с исключением.
Введение
В данной статье мне бы хотелось рассказать об одном способе связывания Swift с базой данных. Хочу отметить, что в целом материал не новый, но основное в нем — это пошаговая инструкция как установить SQLite.Swift и как добавить базу данных в свой проект, что может пригодиться начинающим.
Приложения простое, вот только возникла проблема: как связать базу данных и Swift.
Фиаско. История одной самоделки IoT
2018-10-15 в 4:48, admin, рубрики: arduino, diy или сделай сам, ds2482, esp, I2C, node.js, omega 2, sqlite, web-разработка, Анализ и проектирование систем, Разработка под ArduinoБольшинство статей пишется по принципу «Я/мы это сделал/и, глядите как круто!». Эта же публикация посвящается провальному проекту. Добро пожаловать под кат…
Читать полностью »
Лучший SQL Builder – используем jOOQ на Android
2018-09-13 в 3:18, admin, рубрики: android development, jooq, kotlin, sqlite, Разработка под androidЛучший SQL Builder. Используем jOOQ на Android
Введение
При разработке Android-приложений вполне естественным считается использовать SQLite базу данных в качестве основного хранилища. Обычно, базы данных на мобильных устройствах имеют весьма простенькие схемы и состоят из 10-15 таблиц. Для подобных случаев подходит почти любой SQL Builder, ORM, и даже голый SQLite API.
Но, увы, не всем разработчикам везет, и порой на нашу долю выпадает описывать большие модели данных, использовать хранимые процедуры, настраивать работу с кастомными типами данных или писать 10 INNER JOIN в запросе за очень толстой сущностью. Так не повезло и вашему покорному слуге, из чего и появился материал для данной статьи. Что же, суровые времена требуют суровых мер. Итак, накатываем jOOQ на Android.
Знакомство с SOCI — C++ библиотекой доступа к базам данных
2018-09-10 в 16:28, admin, рубрики: c++, firebird, mysql, oracle, postgresql, sqlite, базы данных, ПрограммированиеВступление
Сама библиотека довольно таки зрелая, — первый релиз на гитхабе
датируется аж 2004 годом. Я был удивлён когда хабр в поиске
не выдал мне ни одной ссылки на статьи, в которых бы упоминалось
об этой замечательной библиотеке.
SOCI поддерживает ORM, через специализацию type_conversion.
В SOCI имеются бэкенды для:
- Firebird
- MySQL
- Oracle
- PostgreSQL
- SQLite
Я не стану переводить мануалы или приводить здесь код из примеров,
а постараюсь адаптировать (с изменением структуры таблицы, и других упрощений)
код из своего прошлого проекта, чтобы было наглядней и интересней.
Что нового в AppCode 2018.2
2018-08-28 в 14:37, admin, рубрики: appcode, iOS, objective-c, sqlite, swift, Блог компании JetBrains, мобильная разработка, разработка мобильных приложений, разработка под iOSВ этом выпуске: больше новых рефакторингов, лучше автодополнение, поддержка баз данных из DataGrip и даже поддержка Touch Bar. Более подробно — под катом.