metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-04-24 05:50 pm

Запретите мне

Мне нельзя писать на C, по причине психологических проблем. Я начинаю от входа изобретать велосипеды, писать какие-то свои строки, массивы строк и прочую хрень.
Впрочем, в целях самообучения оно, конечно, полезно, но потом надо заставить себя взять готовые библиотеки и переписать на них.
Тогда возникает следующая проблема: какую из 100500 библиотек взять?
А вообще это я пытаюсь сделать общение с девайсом в continuation-passing style с трамплином, но начав его делать, я углубился в строки и списки строк )

PS: Наверно возьму glib. Код строк у них там внезапно почти идентичен тому, что я тут наколхозил.
PPS: Хотя уже есть и альтернативное мнение в комментариях. Ну и спрашивается, как жить в языке, где на каждую тему есть половина мнений за и половина мнений против?:)

[identity profile] mend0za.livejournal.com 2012-04-24 05:49 pm (UTC)(link)
с нами случился QSqlRelationalTableModel, QSqlTableView и драйвер Sqlite3.

Пока ты показываешь поля так, как по дефолту хочет эта шняга - всё ок. Как только хочешь сделать показ и редактирование 16-ричных значений, или поле Description с длинными строками, выходящими за экран - наступает умца-умца.

В драйвере Sqlite3 для Qt были утрачены по дороге foreign keys - они не отрабатывают при удалении, которое должно быть каскадным. Пришлось хардкодить удаление записей из всех связанных таблиц (помимо главной).

Короче - в Qt всё изумительно, пока ты остаёшься в пределах функиционала демок. Как только реальные задачи - начинается фейерия, когда кастомизируешь дефолтное поведение.

Подгрузка значений из базы тоже странновато сделана. Хорошо что не всё грузит во model сразу, но странно дёргается и сбрасывает почём зря текущие значения положения активной ячейки при сохранении изменений.

[identity profile] metaclass.livejournal.com 2012-04-24 05:56 pm (UTC)(link)
Хм, foreign keys по идее не должны зависеть от драйвера. Хотя зная практику статической сборки sqlite во что попало, вполне могли и поломать.

[identity profile] mend0za.livejournal.com 2012-04-24 05:58 pm (UTC)(link)
Я предполагаю что проблемы гдето внутри драйвера qt для sqlite. Там где производится отображение их диких абстракций на реальные БД.

Консольный клиент (без qt) отрабатывал ок.

[identity profile] metaclass.livejournal.com 2012-04-24 06:03 pm (UTC)(link)
sqlite вообще говоря, может быть вкомпилен прямо в драйвер. Т.е. движок внутри драйвера и движок внутри консольного клиента - два разных движка )

[identity profile] mend0za.livejournal.com 2012-04-24 06:08 pm (UTC)(link)
Я понимаю на что вы намекаете. Нет, тут не такой случай :)

Package: libqt4-sql-sqlite
Depends: libsqlite3-0 (>= 3.5.9)

Package: sqlite3
Depends: libsqlite3-0 (= 3.7.9-2)

Package: libsqlite3-0
Description: SQLite 3 shared library

[identity profile] theiced.livejournal.com 2012-04-24 06:32 pm (UTC)(link)
бабуинасты могли что то сломать. они всегда что то ломают. я бы потестил на нормальном дистре сначала (хотя признаю что в данном случае хуйни понаделали кутисты скорее всего).

[identity profile] fkng-stupid-lj.livejournal.com 2012-04-24 06:33 pm (UTC)(link)
foreign keys включаются прагмой, после чего работают как ожидается.

[identity profile] theiced.livejournal.com 2012-04-24 06:35 pm (UTC)(link)
если это наломали бабуинасты - я буду долго ржать ;]

[identity profile] fkng-stupid-lj.livejournal.com 2012-04-24 06:48 pm (UTC)(link)
Там ломать нечего -- в sqlite они действительно из коробки не работают, это описано, плюс можно их включить, так что это, по всем признакам, не бага, а фича. :) А кто такие бабуинасты?

[identity profile] theiced.livejournal.com 2012-04-24 06:50 pm (UTC)(link)
это те которым важнее воздрочка на бороду столлмана чем реально работающие продукты ;]

[identity profile] metaclass.livejournal.com 2012-04-24 07:05 pm (UTC)(link)
Более того, наиболее продвинутые дрочат не только на бороду столлмана, но еще и на существ, живущих в ней, а так же на портрет торвальдса.

[identity profile] mend0za.livejournal.com 2012-04-24 06:37 pm (UTC)(link)
Вот это 'query.exec("PRAGMA foreign_keys = ON;"); ' ?

Коллега, это реальная уличная магия :). Спасибо, попробуем.



[identity profile] metaclass.livejournal.com 2012-04-24 06:44 pm (UTC)(link)
фак мой мозг. :)

[identity profile] perepertoz.livejournal.com 2012-04-24 10:46 pm (UTC)(link)
срочно отпишитесь о результатах лечения
тут все очень переживают!

[identity profile] mend0za.livejournal.com 2012-04-26 07:42 am (UTC)(link)
всем как обычно пофиг

[identity profile] perepertoz.livejournal.com 2012-04-26 09:01 am (UTC)(link)
я не все. мне не пофиг :)

[identity profile] mend0za.livejournal.com 2012-04-26 04:06 pm (UTC)(link)
к сожалению - у нас в коде больше этот кусок не используется, как я выяснил вчера.

[identity profile] perepertoz.livejournal.com 2012-04-26 05:01 pm (UTC)(link)
ну почему же "к сожалению"? надо радоваться : меньше кода - меньше багов :)