Рубрика «sqlite» - 3

Анализируя статистику сайта, мы получаем представление о том, что происходит с ним. Результаты мы сопоставляем с другими знаниями о продукте или сервисе и этим улучшаем наш опыт.

Когда анализ первых результатов завершён, прошло осмысление информации и сделаны выводы, начинается следующий этап. Возникают идеи: а что будет, если посмотреть на данные с другой стороны?

На этом этапе есть ограничения инструментов анализа. Это одна из причин, почему мне было недостаточно инструмента Google Analytics, а именно, из-за ограниченной возможности видеть свои данные и манипулировать ими.

Всегда хотелось быстро загрузить базовые данные (мастер-данные), добавить другой уровень агрегации или иначе интерпретировать имеющиеся значения.

Это легко сделать в своём маленьком хранилище на основе файла access.log и для этого достаточно языка SQL.Читать полностью »

Утилита Webalizer и инструмент Google Analytics помогали мне много лет получать представление о том, что происходит на веб сайтах. Сейчас я понимаю, что они дают очень мало полезной информации. Имея доступ к своему файлу access.log, разобраться со статистикой очень просто и для реализации достаточно элементарных инструментов, таких как sqlite, html, языка sql и любого скриптового языка программирования.

Источником данных для Webalizer является файл access.log сервера. Так выглядят его столбики и цифры, из которых понятен лишь общий объём трафика:
imageЧитать полностью »

Всем привет, данная публикация будет посвящена работе с встраиваемой реляционной базой данных SQLite в Unity. Данная статья написана новичком для новичков с целью показания работы с SQLite, предполагается, что вы знаете основы SQL. Так как в интернете нет ясного тутора для новичков, я решил занять эту нишу. В данной статье мы напишем простенький класс для работы с данной СУБД, который можно использовать для решения широкого круга задач (локализация, сохранение данных, ведение разных таблиц).
Читать полностью »

Несколько лет назад на форуме 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 и школьной математики.
Читать полностью »

Привет! Представляем вашему вниманию перевод статьи «Using SQLite in Flutter».

Используем SQLite в Flutter - 1

Сохранение данных очень важно для пользователей, так как нецелесообразно грузить одни и те же данные из сети. Разумнее будет сохранить их локально.

В этой статье я продемонстрирую как сделать это, используя SQLite, в Flutter-e
Читать полностью »

Доброго времени суток, Хабровчане! В этой статье я хочу рассказать о своем опыте упрощения взаимодействия с базами данных SQL при разработке десктопного приложения с помощью класса QSqlRelationalTableModel кроссплатформенной библиотеки Qt.

Пролог

С Qt я познакомился еще будучи студентом 1 курса, только начиная программировать на C++, тогда же и серьезно заинтересовался библиотекой и, с тех пор, слежу за ее апдейтами. Несколько месяцев назад, на работе, мне дали ТЗ, в котором требовалось разработать приложение, взаимодействующее с БД SQLite. Структура базы фиксирована и заранее известна мне из ТЗ.

Приложение должно уметь удобно для оператора представлять данные, хранящиеся в базе, позволять добавлять новые записи, удалять и изменять уже существующие.

Далее я кратко опишу процесс разработки с приведением кусков кода и попытаюсь аргументированно объяснить, почему в данном случае был сделан выбор в пользу QSqlRelationalTableModel.
Читать полностью »

Как-то обошли на Хабре недавнюю 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 и как добавить базу данных в свой проект, что может пригодиться начинающим.

Предисловие

При написании своего приложения для IOS было необходимо использовать существующую таблицу. Само приложение очень простое. Существует некая таблица с определенным количеством строк и столбцов. Каждому столбцу соответствует свое текстовое поле (TextField). Пользователь вводит число в любой TextField нажимает «Готово» и во всех остальных текстовых полях автоматически подгружаются значения из таблицы. В случае если такого числа нет, то необходимо выполнять интерполяцию чисел взятых из двух ближайших строк.
Приложения простое, вот только возникла проблема: как связать базу данных и Swift.

Читать полностью »

Большинство статей пишется по принципу «Я/мы это сделал/и, глядите как круто!». Эта же публикация посвящается провальному проекту. Добро пожаловать под кат…
Читать полностью »

Лучший SQL Builder. Используем jOOQ на Android

Введение

При разработке Android-приложений вполне естественным считается использовать SQLite базу данных в качестве основного хранилища. Обычно, базы данных на мобильных устройствах имеют весьма простенькие схемы и состоят из 10-15 таблиц. Для подобных случаев подходит почти любой SQL Builder, ORM, и даже голый SQLite API.

Но, увы, не всем разработчикам везет, и порой на нашу долю выпадает описывать большие модели данных, использовать хранимые процедуры, настраивать работу с кастомными типами данных или писать 10 INNER JOIN в запросе за очень толстой сущностью. Так не повезло и вашему покорному слуге, из чего и появился материал для данной статьи. Что же, суровые времена требуют суровых мер. Итак, накатываем jOOQ на Android.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js