pdd - подготовка к теоретическому автоэкзамену в ГИБДД

В продолжение этой темы.

Появилось желание сделать интерфейс, пригодный для Maemo 5 и вообще улучшить интерфейс и переделать код (и под Maemo 4 тоже).

Проект на гараже: https://garage.maemo.org/projects/pdd/
Я пока только мельком глянул код. Он уже компиллировался когда-нибудь? Нашел там задатки поддержки клавиатуры)

Между делом разбирался с копирайтами на базы, вот моя переписка со светланой, которая выкладывает билеты на ucoz:
Светлана, здравствуйте!

Я являюсь одним из новоиспеченных участников проекта по разработке приложения для мобильных устройств (платформа Nokia Maemo5), понимающего базы, выложенные вами здесь http://pdd.ucoz.ru/load/2-1-0-15
Приложение полностью бесплатное и с открытым исходным кодом.

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

P.S. В качестве бонуса, напишу о найденной ошибке в базах: билет 1, вопрос 2, как минимум база с альтернативными картинками имеет неправильный вариант ответа.

C уважением,
Илья.
-------------------------------------------------------------------------------------------------------------------------------------
sveta-aex кому: мне
Показать подробные сведения 1 мая (2 дн. назад)
Мы не возражаем, но не всё так просто.
Если Вы разместите билеты в дистрибутиве – будете попадать под нарушение авторских прав.


Цитата одного из писем:
« « «
Здравствуйте
На Вашем сайте незаконно размещена наша программа
Экзаменационные билеты и тематические задачи ГИБДД
Я Ямбулатов Юрий Геннадьевич являюсь автором рисунков к экзаменационным билетам
и автором программы.
Исключительные права на издание в электронном виде принадлежат фирме
\"Новый Диск\". http://www.nd.ru http://nd.ru/prod.asp?razd=descr&prod=gibddbilets
Как автор и правообладатель я прошу Вас удалить незаконное размещение копии
нашей программы с вашего ресурса.

NOTIFICATION OF COPYRIGHT ABUSE
Greetings
I am the Yambulatov Juriy Gennadevish
who exclusively own \"Examenationnie bileti GIBDD\" Software.
I can find my programm at this location

Please remove the files and prevent future abuse.
Thank you.
Yambulatov Juriy Gennadevish
Russia, Moscow
http://www.nd.ru
http://nd.ru/prod.asp?razd=descr&prod=gibddbilets
Tel: +7(918) 6181898
Email: YambulatovJuriyG@yandex.ru
--
Best regards,
YambulatovJuriyG mailto:YambulatovJuriyG@yandex.ru

»»»

----------------------------------------------------------------------------------------------------------------------------------------------------

little_beat кому: sveta-aex
Показать подробные сведения 2 мая (2 дн. назад)
Спасибо за ответ! А как насчет базы с любительскими рисунками? Они-то НД не принадлежат, наверное?

----------------------------------------------------------------------------------------------------------------------------------------------------

sveta-aex кому: мне
Показать подробные сведения 2 мая (1 день назад)
Любительские картинки Вы можете использовать свободно, указывая в программе ссылку на проект Автоэкзамен.

Обращаю внимание на то, что авторы билетов выдвигают требования об удалении не только картинок, которые можно перерисовать (что уже сделано), но и настаивают на авторстве над текстами вопросов и ответов, так что с этим в последствии также могут быть проблемы.

Именно поэтому в проекте Автоэкзамен сама программа и базы вопросов разделены и не объединяются в дистрибутиве, чтобы пользователь только под свою ответственность устанавливал оспариваемые авторством элементы и не возникало претензий к разработчикам.

Вот ссылки на подобные ситуации с другими программами, использующими билеты ПДД:
http://alexproject.ru/forum2/viewforum.php?f=17&sid=27f1acd437f167301a8887d34feb88e2
http://wladm.narod.ru/Jeep/jeep.html#2

Удачи.


В общем, мое предложение такое:
Сделать 3 отдельных пакета с данными (3D+обычные+любительские картинки). С любительскими проблем точно не возникнет. С отальными базами можно поступить так: при установки выдать предупреждение, что данный пакет собран разработчиками исключительно для личного использования, и устанавливать его вы не имеете права. Это, конечно, довольно дешевая отмазка, но на самом деле для того, чтобы посмотреть эти базы, копирайтерам надо будет прикупить N900, что достаточно маловероятно) Кроме того, даже если и захотят прикопаться - то вряд ли разберутся, кому капать на мозги, и в самом худшем случае пакеты просто удалят.
В общем, не вижу смысла не выкладывать базы в репозитории, по крайней мере в devel. Готов сделать это лично от себя, чтобы никого не компрометировать.

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

Жень, если нужна какая-то помощь с разработкой - давай конкретные задачи. Боюсь, с GTK я буду дольше разбираться, чем у тебя займет весь интерфейс пофиксить, но если есть какие-то проблемы или фичи, которые ты хочешь мне отдать - говори. Я пока займусь изучением вопроса упаковки баз в deb и выкладыванием в devel.
Все доброго времени суток!

По самому проекту. Надо прежде всего подумать как все будет устроено. Будем ли мы делать заново, или просто перепишем на QT интерфейс. mosfet, думаю с версии 0.1, вы многое изучили. Можно попробовать сделать покрасивее.

Соответственно по предложению little_beat:
1.
Сделать 3 отдельных пакета с данными (3D+обычные+любительские картинки). С любительскими проблем точно не возникнет. С отальными базами можно поступить так: при установки выдать предупреждение, что данный пакет собран разработчиками исключительно для личного использования, и устанавливать его вы не имеете права. Это, конечно, довольно дешевая отмазка, но на самом деле для того, чтобы посмотреть эти базы, копирайтерам надо будет прикупить N900, что достаточно маловероятно) Кроме того, даже если и захотят прикопаться - то вряд ли разберутся, кому капать на мозги, и в самом худшем случае пакеты просто удалят.
В общем, не вижу смысла не выкладывать базы в репозитории, по крайней мере в devel. Готов сделать это лично от себя, чтобы никого не компрометировать.

Как вы думаете, а что на это скажут владельцы репа devel? Может для начала надо бы им написать и объяснить? Потому, что подставляются именно они. На сегодняшний день я склоняюсь к мысли, что им это, мягко говоря, не понравится. Насчет \"данный пакет собран разработчиками исключительно для личного использования\" - это должны говорить не мы, а автор текстов/картинок.
2.
Я пока займусь изучением вопроса упаковки баз в deb и выкладыванием в devel.

Хммм... А что вы будете укладывать в deb то? Может для начала надо договорится о структуре базы и о том где она будет лежать? Мне кажется, что она должна как-то модифицироваться для удобства засовывания ее в программу.
Хорошо это или плохо, но Maemo5 заточена под управление пальцами (стилус практически не используется), и так просто сохранить совместимость как PC/N8xx уже совершено не получится. Виджеты другие.

Отправная точка здесь: http://maemo.org/development/sdks/maemo_5_api_documentation/
А здесь ещё одна :) http://pymaemo.garage.maemo.org/docs.html
А тут http://www.forum.nokia.com/info/sw.nokia.com/id/eb8a68ba-6225-4d84-ba8f-a00e4a05ff6f/Hildon_2_2_UI_Style_Guide.html и в see also к нему - информация о создании интерфейсов

К сожалению по pyqt для маемо информации почти ноль. Поэтому предлагаю начать с главного окна и переделать вот этот пример с главным меню на qt: http://wiki.maemo.org/PyMaemo/UI_tutorial/Menus
Табы темы/билеты превратить в фильтры, кнопки начать/настройки/чтотамещёпоявится убрать в меню.
little_beat:чтобы посмотреть эти базы

n900 не нужен, эти пакеты - обычные tar-архивы. Если только их не шифровать как-то.
Но если хотим, чтобы программа выставилась на суд общественности, нужно чтобы изначально был доступен какой-то пример.

Формат \"базы\" у pdd.ucoz.ru простейший:

img/Pdd_xx_xx.jpg или xxxx.jpg
txt/xxxx.txt

.txt выглядит так:
первая строка - номер правильного ответа
вторая - вопрос
третья и далее - варианты ответа
предпоследняя - звёздочка
последняя - комментарий
mosfet:Хорошо это или плохо, но Maemo5 заточена под управление пальцами (стилус практически не используется), и так просто сохранить совместимость как PC/N8xx уже совершено не получится. Виджеты другие.

О чем и говорил, когда упоминал про MVC. Ведь View придется делать разный - это я с самого начала понял.

mosfet:
Отправная точка здесь: http://maemo.org/development/sdks/maemo_5_api_documentation/
А здесь ещё одна :) http://pymaemo.garage.maemo.org/docs.html
А тут http://www.forum.nokia.com/info/sw.nokia.com/id/eb8a68ba-6225-4d84-ba8f-a00e4a05ff6f/Hildon_2_2_UI_Style_Guide.html и в see also к нему - информация о создании интерфейсов

К сожалению по pyqt для маемо информации почти ноль. Поэтому предлагаю начать с главного окна и переделать вот этот пример с главным меню на qt: http://wiki.maemo.org/PyMaemo/UI_tutorial/Menus
Табы темы/билеты превратить в фильтры, кнопки начать/настройки/чтотамещёпоявится убрать в меню.

Погодите, погодите. Все приведенные примеры на gtk. Откуда брать qt и самое главное какую из версий то.

Может дизайн интерфейса набросаем? Для начала.

Почитал тот форум про противостояние автора подобной проги и владельцев авт прав - http://www.internet-law.ru/forum/index.php?board=1&action=display&threadid=1837&start=0
Жуть.Полный кошмар. Если мы соберем эти базы в пакеты, то станем пиратам со всем вытекающими. И позиция у нас, по сравнения с тем автором гораздо слабее. А сайт, где мы это выложим, будет под ударом. Примерно так же как оказался под ударом torrents.ru. До иностранного сайта они конечно не сразу доберутся, но если захотят, то доставят много неприятностей.
mosfet:Если только их не шифровать как-то.

Если их шифровать, то пользователям надо дать возможность расшифровать. А эта возможность будет доступна и копирайтерам. Можно конечно усложнить им жизнь, но это все отсрочки. Они не будут смотреть не на программу, а на наши сообщения, сопровождающие ее на сайте.
Ну во всех этих темах \"правообладателем\" выступает автор картинок, который просто хочет срубить денег (фактически, права свои он продал, и не думаю, что у него есть право выступать от имени НД). Соответвенно, ни о каких серьезных наездах речи быть не может. А стилем своих писем он только подтверждает предположение о своей несерьезности и неадекватности.
Кроме того, любительские картинки никому не принадлежат, так что на них он претендовать никак не может.
Так что предлагаю с примерами не морочиться и просто выложить любительскую версию. Остальные две тогда не будем в репозитории засовывать.

По поводу интерфейса - а не хотите сначала допилить то, что есть? Тема с QT может затянуться, а мне на права летом сдавать =)

Алекс, не знаю, понял ли ты уже, но прога изначально понимает тот формат баз, в котором они сейчас находятся, и путь к ним можно указать любой.
Если буду паковать деб - положу файлы в /opt/pdddb/freepics. Но это не принципиально все равно.
Ну а авторы Конституции и Устава не требуют денег?
Почему для подготовки к государственному экзамену я должен покупать конкретные программы или пособия.
В общем копирастия во все поля.

Кстати в процессе создания программы я мог ответить на 800 вопросов из 800. Я правда на А сдавал, там никакой нужды покупать права нет. На Б пока не собираюсь.
alex2ndr:
Если их шифровать, то пользователям надо дать возможность расшифровать. А эта возможность будет доступна и копирайтерам. Можно конечно усложнить им жизнь, но это все отсрочки. Они не будут смотреть не на программу, а на наши сообщения, сопровождающие ее на сайте.

Тогда надо зашифровать сайт вместе с сообщениями!

P.S. MVC поддерживаю.
MVC (pygtkmvc) мы как-то пробовали в findit и нам не очень понравилось - создаётся много лишних для простой программы сущностей. Здесь отделить логику от интерфейса - уже будет хорошо.
Пока пробую сделать главное окно в стиле Maemo 5
little_beat:
Алекс, не знаю, понял ли ты уже, но прога изначально понимает тот формат баз, в котором они сейчас находятся, и путь к ним можно указать любой.
Если буду паковать деб - положу файлы в /opt/pdddb/freepics. Но это не принципиально все равно.

Это я понял. Понял так же и то, что вероятно есть какие-то сложности, если например размер картинок не совпадает с полем в программе. Поэтому могу предложить сделать при первом запуске какое-то преобразование форматов к тому, что нужно. Например ресайзить все картинки и перевести весь текст в питоновксие списки, которые сохранить, например с помощью pickle. Подумать надо вообщем.

little_beat:Тогда надо зашифровать сайт вместе с сообщениями!

Угу и читать только самим :)

mosfet:MVC (pygtkmvc) мы как-то пробовали в findit и нам не очень понравилось - создаётся много лишних для простой программы сущностей. Здесь отделить логику от интерфейса - уже будет хорошо.
Пока пробую сделать главное окно в стиле Maemo 5

Говоря о MVC я имел в виду не конкретный фрэймворк, а просто разделение логики и представления.
Насчет дизайна. Думаю все элементы управления будут одинаковыми, только их надо будет расположить по разному для N900 и N800. За основу дизайна для N800 можно взять уже существующую программу. Готов набросать в Inkscape. Но вот кто возьмется за дизайн для N900? Я точно не осилю. В исходном коде даже есть некоторый дизайн :)

Господа, вам может показаться, что я все усложняю - но это не совсем так. Как там в Дзен Питона - Explicit is better than implicit (явное лучше неявного). Мне кажется что если все будут видеть какие элементы и где расположить, то сделать это будет просто и все будут знать чего ожидать. И с базами то же самое - если договоримся как с ними будем работать, то один может делать разработку модуля работы с ними, а второй возьмется за gui.

Или я не прав в своих рассуждениях?

Ps. Пока я работаю только с кодом. Прогу еще не пробовал, т к медленный и дорогой интернет и не могу качнуть базы. Завтра с работы качну.
Разделим на модули:
гуи для маемо 4
гуи для маемо 5
парсер файлов данных (баз) Можно даже сделать универсально - под разные форматы
парсер конфига
логика работы

Сейчас более-менее отделён только конфиг. Логика прикручена шурупами к гую.


Посмотрел MADDE (под венду) - производит впечатление чего-то недоделанного (на то он и technology preview) - ссылка на документацию никуда не ведёт, самой документации нет, питон вроде как есть, запускать код предлагается на самом устройстве.
Более перспективным выглядит недавно вышедший Qt SDK beta, но он исключительно C++/Qt (по-крайней мере пока)
mosfet:Разделим на модули:
гуи для маемо 4
гуи для маемо 5
парсер файлов данных (баз) Можно даже сделать универсально - под разные форматы
парсер конфига
логика работы

Описание:
1. гуи для маемо 4:
Отображение следующих окон:
- Окно выбора тем. Обращается к логике за списком тем.
- Окно вопросов. Обращается к логике для получения вопросов и выяснения правильности ответов
- Окно конфигурации. Обращается к парсеру конфигов за чтение/сохранением конфига
2. гуи для маемо 5:
Аналогично пункту 1.
3. парсер файлов данных
Читает БД. Вопрос - будет ли какой-то промежуточный формат БД? например картинки нужного размера, чтобы на жрать оперативку напрасно и тд. Возможно здесь будет 2 модуля. Один работает только с новой базой. преобразовывая ее к нужному виду, второй же читает нужную базу в память и передает ее логике.
4. парсер конфига
Ну тут все более менее ясно. Более того он вполне нормально уже написан. Возможно подрихтовать и все ок. Только стоит подумать над списком опций в файле.
5. логика работы
Самый загадочный компонент(для меня). Пока могу только в общих словах описать что он должен делать:
- Обращаясь к парсеру получает в оперативу список вопросов/тем/ответов.
- Обращаясь к нему можно получить вопрос/ответ для гуи

Направление работы такое:
Парсер БД -> Логика -> Гуи
Парсер файлов данныз -> Гуи
Т е Гуи вызывают логику а та в свою очередь Парсер БД. Как-то так наверно.

Прошу проверить все ли я правильно понял. Уточнения по каждому из компонентов приветствуются.
mosfet:
Посмотрел MADDE (под венду) - производит впечатление чего-то недоделанного (на то он и technology preview) - ссылка на документацию никуда не ведёт, самой документации нет, питон вроде как есть, запускать код предлагается на самом устройстве.
Более перспективным выглядит недавно вышедший Qt SDK beta, но он исключительно C++/Qt (по-крайней мере пока)

Насколько я понимаю, MADDE является интегральной частью эсдеки, по крайней мере в ее доках предлагается поставить на девайс соответствующий пакет для отладки на девайсе. Лично мне C++ куда роднее, правда, я под маэмо даже hello world еще не собрал, так что от меня толку все равно пока ноль. И питон, наверное, прикрутят как-нибудь в дальнейшем, все-таки QT creator хорошая штука, и с ней надо интегрироваться.
alex2ndr:
- Окно выбора тем. Обращается к логике за списком тем.

В текущей реализации включает в себя окно с табами, переключающими темы<->билеты, и с соответствующими кнопками на каждом вью. Так что потенциально это 2 элемента. Хотя я бы предпочел их уместить на один экран, т.к. показывать 40 кнопок по билету на каждую не слишком резонно, да и в экран не влазит. Может, сделать 2 комбобокса с выбором либо номера билета либо темы и одной кнопкой начать?

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

Еще предлагаю обсудить вопрос навигации по вопросам при прохождении экзамена. Мне наиболее удобным кажется breadcrumb-стиль, например, как в форумах: prev...1..3...5...6...7...8...9...12..20... next. Правда, тогда будет отъедаться ценное вертикальное пространство, но зато навигация будет привычнее. Можно немного сэкономить место, не показывая еще не пройденные вопросы - лично я ни разу не пытался перескочить к вопросу, который еще не проходил. Кроме того, тогда не нужны будут кнопки вперед-назад, которые сейчас расположены внизу.

Также важным вопросом мне кажется возможности использования большей части экрана. В Maemo5 целых 4 режима: можно отображать верхнюю панель, нижнюю панель, обе или ни одной (фулскрин). Еще можно подумать над поддержкой портретного режима, но это если только совсем времени не жалко.
little_beat:
В текущей реализации включает в себя окно с табами, переключающими темы<->билеты, и с соответствующими кнопками на каждом вью. Так что потенциально это 2 элемента. Хотя я бы предпочел их уместить на один экран, т.к. показывать 40 кнопок по билету на каждую не слишком резонно, да и в экран не влазит. Может, сделать 2 комбобокса с выбором либо номера билета либо темы и одной кнопкой начать?

Я еще не ознакомился с базами, но мне тоже кажется резонным, что надо выбрать тему, а потом решать билеты. Имхо окно с табами наверно просто есть пространство. Можно обойтись кнопкой или пунктом в меню \"Вернуться к выбору тем\"

little_beat:
По поводу изготовления промежуточной базы - не вижу в этом необходимости. Текущий парсер работает достаточно быстро, ужимать картинки перманентно не стоит, т.к. тогда потеряется возможность отображения в полном разрешении на весь экран. Получается, промежуточная база будет есть дисковое пространство и создавать коллизии ради экономии полуметра оперативки. Кажется нерезонно. Единственная возможная причина для этого - универсальность, но в крайнем случае можно будет преобразовать базу из другого формата в текущий, благо, он не так плох.

Проверю. Пока ни того ни другого под рукой нет. Если все можно будет хранить в оперативке, то проблемм нет. Только в N800 наверно меньше оперативы и проц помедленее, чем в N900. Короче отложим этот вопрос до тестирования.

little_beat:
Еще предлагаю обсудить вопрос навигации по вопросам при прохождении экзамена. Мне наиболее удобным кажется breadcrumb-стиль, например, как в форумах: prev...1..3...5...6...7...8...9...12..20... next. Правда, тогда будет отъедаться ценное вертикальное пространство, но зато навигация будет привычнее. Можно немного сэкономить место, не показывая еще не пройденные вопросы - лично я ни разу не пытался перескочить к вопросу, который еще не проходил. Кроме того, тогда не нужны будут кнопки вперед-назад, которые сейчас расположены внизу.

Также важным вопросом мне кажется возможности использования большей части экрана. В Maemo5 целых 4 режима: можно отображать верхнюю панель, нижнюю панель, обе или ни одной (фулскрин). Еще можно подумать над поддержкой портретного режима, но это если только совсем времени не жалко.

Раз у вас столько идей, то может осилите дизайн сделать? На мой взгляд это должно представлять из себя что-то типа разметки экрана на скриншоте с таблетки. Можно даже paint`ом сделать.
Главное окно на н900 будет выглядеть как в аттаче. Наборы вопросов - фильтрами, меняющими содержимое окна; остальное - просто кнопками.

В новом хилдоне есть замечательная вещь hildon.StackableWindow. Из главного окна попадаем в окно вопросов, откуда можно вернуться обратно. Как, например, в приложении Почта.
alex2ndr:Раз у вас столько идей, то может осилите дизайн сделать? На мой взгляд это должно представлять из себя что-то типа разметки экрана на скриншоте с таблетки. Можно даже paint`ом сделать.

Ну с лейаутами серьезные проблемы, думаю, нужно будет делать динамическое расположение полей в зависимости от их размера. Общие вещи интерфейса окна вопросов попробую набросать в пейнте.

mosfet:Главное окно на н900 будет выглядеть как в аттаче. Наборы вопросов - фильтрами, меняющими содержимое окна; остальное - просто кнопками.

Ну выглядит вполне неплохо. Это какой QT? Если 4.6.2 - посмотри, будет ли меню в вертикальном режиме нормально работать?
Не, это пока gtk.

Может лучше сделать окно с вопросами фиксированным? А картинку масштабировать. А при показе комментария - отображать только верный вариант ответа.

И ещё что-то надо делать с выбором ответа - оставить как есть - или делать сам вариант какой-то большой кнопкой.
mosfet:Может лучше сделать окно с вопросами фиксированным? А картинку масштабировать.

Т е при клике на картинке показывать ее в большом размере?

mosfet:И ещё что-то надо делать с выбором ответа - оставить как есть - или делать сам вариант какой-то большой кнопкой.

А в чем проблема? Radiobutton вроде логично должно быть.

Господа, дайте ссылку где образ scratchbox можно качнуть. Я наверно буду специализироваться на гуи для N8xx. Вот его и хочу. Он вообще сколько весит то? Завтра на работе хочу качнуть.
И ссылки на все 3 базы, пожалуйста. Тоже качну.
mosfet:Не, это пока gtk.

Может лучше сделать окно с вопросами фиксированным? А картинку масштабировать. А при показе комментария - отображать только верный вариант ответа.

И ещё что-то надо делать с выбором ответа - оставить как есть - или делать сам вариант какой-то большой кнопкой.

На мой взгляд фиксированное окно не вариант. Даже немасштабированные картинки мне мелковаты, а у меня зрение 1. Кроме того, даже без картинки объяснение может не влезть.

Выбор ответа предлагаю сделать кнопками в нижнем тулбаре и с клавы. Текст ответов мелковат, чтобы по ним тыкать.
Я имел в виду масштабировать так чтобы влезала в окно вопросов, и во всплывающее окно по нажатию (как и сделано, но надо допилить).
mosfet, какая версия из выложенных под N800. Если я из svn соберу она будет работать в N800 или там уже под N900 заточено?
Вообще надо думать о либо о двух ветках разработки либо хотя бы о двух папках в транке. Думаю по первости версии под N900 и N800 будут несовместимы между собой.
коллеги
предлагаю совместными усилиями разработать классовую структуру и интерфейсы гуя. потом разделить фронтенд с бекендом и сделать бранчи/теги для разных устройств. это позволит распараллелить разработку.
@алекс
насколько я понимаю, причесанного кода под дьяблу у Жени нет, так что советую тебе попробовать собрать из транка. в главном меню изменилась одна панель, в остальном все пока должно быть идентично старой версии.
бинарники старой версии и подробности по измененной панели посмотри в старой теме.
Достаточно заменить в card.py и main.py hildon.PannableArea на gtk.ScrolledWindow и должно работать в дьябле. Если нужно собрать пакет - то ещё изменить пути в debian/*

SDK под линукс здесь: http://maemo.org/development/sdks/
(просто установочные скрипты, требующие много интернета)
mosfet:Достаточно заменить в card.py и main.py hildon.PannableArea на gtk.ScrolledWindow и должно работать в дьябле. Если нужно собрать пакет - то ещё изменить пути в debian/*

Заменил и запускаю из командной строки. Лень мне было пути переписывать(это еще надо вспомнить что куда класть). Вроде и так работает :)

mosfet:
SDK под линукс здесь: http://maemo.org/development/sdks/
(просто установочные скрипты, требующие много интернета)

Много интернета это не про меня. Я на работе качнул SDK образом для вмвари. Запустил, посмотрел - блин половина нужных пакетов не стоит. Ни python-qt, ни даже python-hildon. Фиг знает что с ним тогда делать. Еще потыкаюсь...

Базы качнул, только кто мне скажет какая из них какая
3DdataAB-03-09
ALdataAB-03-09
LUdataAB-03-09
и почему их столь много. На чем упор делать?

Завтра попробую набросать парсер для баз. Какой нужен вариант? Класс, где есть методы генераторы(типа get_ question), возвращающие вопросы/картинки все по очереди, или просто собрать все это в список словарей и прикрутить групповой метод извлечения(типа get_all_question)?

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

Текущий дизайн конечно хммм.... Обдумать короче надо. Этот как-то частично расползается. Давайте все-таки с набросков начнем. И самое главное - решения что куда расширяется при нестандартном размере текста/вопросов и их кол-ва.

Еще момент. Раз уж пошли такие сложности, может стоит действительно как-то перепрофилировать нашу программу? Сделать ее универсальной для баз экзаменационного типа, а не только для этих. Написать адаптеры для распаковки и тд. И назвать соответствующе.

little_beat:
предлагаю совместными усилиями разработать классовую структуру и интерфейсы гуя. потом разделить фронтенд с бекендом и сделать бранчи/теги для разных устройств. это позволит распараллелить разработку.

Что именно вы предлагаете, говоря о \"классовой структуре\". Чем наброски разделения на модули не подходят? Фактически тоже самое.
Не знаю как в svn, но по моему нельзя там на бранчи(т е ветки) разделить. Это все-таки не git.
@алекс
эти базы отличаются картинками. я думаю, надо поддерживать все три, по умолчанию будет последняя (бесплатная). большинство проблем с первой- там самые большие картинки.
по поводу парсера - я бы написал метод, возвращающий индекс вопросов по фильтру (массив строк для файлов, которые существуют) и потои по этому индексу по запросам от бэкенда строил объект типа вопрос, который бы умел сам себя обрабатывать. так получится много маленьких запросов к фс вместо одного большого.

по поводу того, как все разъежается - я предлагаю сразу рисовать все, что нужно и делать глобальный скроллинг вниз. то, как сейчас сделана прокрутка подсказок - очень неудобно на фремантле. а потом уже буем смотреть, как сделать так, чтобы скроллинг был нужен как можно реже. если бы делали на кути - можно было бы по вопросам генерить хтмл и скармливать это вебкиту.

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

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

в свн вместо бранчей теги. я сам ими не пользовался никогда, но должно работать даже лучше бранчей (можно использовать несколько тегов одновременно).
Привет,

Искал готовые базы вопросами с целью накропать приложение под N900 и наткнулся на ваш топик.

Кстати кажись поиск по \"Ямбулатов\" и привел к вам... По этому запросу было множество мест на эту тему :)

alex2ndr:Базы качнул, только кто мне скажет какая из них какая

По поводу баз, есть еще для PddTest, там вопросы в sqlite базе в готовом виде.
Где-то-в-сети есть готовые с правками на 1 февраля 2010.

mosfet:Разделим на модули:
гуи для маемо 4
гуи для маемо 5

IMHO, делить интерфейсы под каждую ОС это тупик. Лучше сразу заложиться на адаптацию под особенности на лету, во время компиляции либо во время исполнения...

alex2ndr:Посмотрел MADDE (под венду) - производит впечатление чего-то недоделанного (на то он и technology preview)...

Это среда для быстрой и легкой компиляции на машине разработчика... Не более.

mosfet:Более перспективным выглядит недавно вышедший Qt SDK beta, но он исключительно C++/Qt (по-крайней мере пока)

Думаю быстрее всего дело стронется если писать скелет на Qt 4.6.2 под ПК с оглядкой на мобильные платформы в плане интерфейса.

Удачи!
little_beat:
эти базы отличаются картинками. я думаю, надо поддерживать все три, по умолчанию будет последняя (бесплатная). большинство проблем с первой- там самые большие картинки.

Хорошо буду глядеть пока на последнюю. Потом посмотрим.
Самый основной вопрос - в предыдушем варианте есть разбивка по темам. У mosfet она набита ручками в файле lists.py(т е какой билет/вопрос к какой теме относится). А откуда она взята? Логичее было бы ее брать из самой базы, но в распакованном виде ничего такого там нет.

little_beat:
по поводу парсера - я бы написал метод, возвращающий индекс вопросов по фильтру (массив строк для файлов, которые существуют) и потои по этому индексу по запросам от бэкенда строил объект типа вопрос, который бы умел сам себя обрабатывать. так получится много маленьких запросов к фс вместо одного большого.

Посмотрим. Генератор это и есть множество маленьких запросов. Только вот нужны ли они? Как я понимаю интерфейс со всеми вопросами/картинками генерится за один раз и потом висит в памяти.

little_beat:
по поводу того, как все разъежается - я предлагаю сразу рисовать все, что нужно и делать глобальный скроллинг вниз. то, как сейчас сделана прокрутка подсказок - очень неудобно на фремантле. а потом уже буем смотреть, как сделать так, чтобы скроллинг был нужен как можно реже. если бы делали на кути - можно было бы по вопросам генерить хтмл и скармливать это вебкиту.

Сгенерировать html мы и без qt можем. Только в чем выгода?

little_beat:
по поводу универсальности - надо сначала найти хоть одну базу другой тематики, чтобы понимать, где нужна габкость. делать универсальность вслепую довольно опрометчиво - она может и не пригодиться вообще. тут я сторонник симпл дизайна - сначала сделать так, чтобы текущий вариант хорошо работал, а потом по мере надобности расширить до универсального.

Вот тут не согласен. Надо написать так, чтобы была возможность подключить базу другой тематики без переписывания например кода GUI. Т е разные объекты для работы с базой и для гуи.

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

Ну вот у нас так и разбито. Классы друго от друга не зависят. Читайте что каждый наш \"модуль\" это класс(или их набор) выполняющий определенную роль.

little_beat:
в свн вместо бранчей теги. я сам ими не пользовался никогда, но должно работать даже лучше бранчей (можно использовать несколько тегов одновременно).

Отлично. Вы же тоже разработчик - разберитесь с этим. А потом нам скажете. А мы пока с самим кодом поморочимся.
Subchaser:Привет,

Искал готовые базы вопросами с целью накропать приложение под N900 и наткнулся на ваш топик.

Кстати кажись поиск по \"Ямбулатов\" и привел к вам... По этому запросу было множество мест на эту тему :)

Странно. Я ничего такого не нашел. Ладно - посмотрим что будет дальше. Объявится ли здесь этот господин...

Subchaser:
[quote=mosfet]Разделим на модули:
гуи для маемо 4
гуи для маемо 5

IMHO, делить интерфейсы под каждую ОС это тупик. Лучше сразу заложиться на адаптацию под особенности на лету, во время компиляции либо во время исполнения...[/quote]
Ну если интерфейсы у этих OS малосовместимы, то выбора нет. Выбор интерфейса на лету конечно будет - это все-таки питон.

Subchaser:
Думаю быстрее всего дело стронется если писать скелет на Qt 4.6.2 под ПК с оглядкой на мобильные платформы в плане интерфейса.

Я так примерно и планировал. Это гораздо удобнее.
А чего все так носятся с этим Qt 4.6.2, чего там такого, чего нет в текущем 4.5.3?

Инсталляция питона в SDK: http://pymaemo.garage.maemo.org/installation_scratchbox.html
Если надо, попробую выложить готовые образы для VirtualBox, смотря насколько ужмутся (сейчас около 5ГБ нежатые)

Никакого разбития по темам в самой базе конечно нет, это же просто набор рисунков и текстов.

Насчёт компоновки окна вопросов: два предложения - прокручивать его целиком, либо делить на три равные области, и прокручивать каждую отдельно.

Subversion я выбрыл для разнообразия и потому что она многим привычнее. Ветки там конечно есть.
Пакеты для маемо4/5 нужно делать разными хотя бы из-за путей.
mosfet:
Никакого разбития по темам в самой базе конечно нет, это же просто набор рисунков и текстов.

А откуда же вы его взяли? \"Ручками\" сделали? Не очень то удобно...
mosfet:А чего все так носятся с этим Qt 4.6.2, чего там такого, чего нет в текущем 4.5.3?
Позволю себе прокомментировать. \"носятся\" по той простой причине, что держать два QT на одной таблетке неразумно, а с выходом прошивки 1.2 версия QT 4.6.2 будет в ней (таблетке) априори.
alex2ndr:если интерфейсы у этих OS малосовместимы, то выбора нет.

Несовместимость решаема, а с учетом Qt Mobility будет еще проще.

alex2ndr:Выбор интерфейса на лету конечно будет - это все-таки питон.

Вы таки меня запутали - у вас будет Qt или Python версия ?
Кстати, а нельзя починить пока текущую Python-версию для N900? а то подвисает с исключением в выводе.

alex2ndr:Надо написать так, чтобы была возможность подключить базу другой тематики без переписывания например кода GUI. Т е разные объекты для работы с базой и для гуи.

При таком подходе проще тогда сразу начинать использовать свой формат хранения плюс конверторы из других форматов нежели пытаться затачиваться под все имеющиеся. Но не факт...
[spoiler]
mosfet:А чего все так носятся с этим Qt 4.6.2, чего там такого, чего нет в текущем 4.5.3?

Там нет, например, Qt Animation Framework. Очень интересная, кстати, штука.
[/spoiler]
Subchaser:
Вы таки меня запутали - у вас будет Qt или Python версия ?

И то и другое :) - PyQT.

Subchaser:
Кстати, а нельзя починить пока текущую Python-версию для N900? а то подвисает с исключением в выводе.

Вроде выкладывали уже рабочую питон версию для N900. Разве не это? - http://n8xx.com/post49601.html#p49601
mosfet:А чего все так носятся с этим Qt 4.6.2, чего там такого, чего нет в текущем 4.5.3?

Ну на мой взгляд в самих библиотеках разительных различий нет - скорее эволюция, но 4.6.2 будет предустановлена на N900 и N8 + с ней выходит QT Mobility SDK - шумиха связана в основном с этим.

Образ виртуалки выкладывай, если сможешь, скачать 5 гиг не проблема. Удобнее всего было бы торрент, я думаю, и включить суперсид.
Насчёт компоновки окна вопросов: два предложения - прокручивать его целиком, либо делить на три равные области, и прокручивать каждую отдельно.

Больше одной прокрутки в интерфейсе - моветон. Я все еще за одну глобальную.
Кроме того, можно сделать некоторый финт с прокруткой и сверху-снизу вставить кнопки следующий билет/предыдущий билет. Примерно как в fennec-е. По-моему будет удобно.
Выложил образ с Diablo SDK с PyGTK и PyQt внутри, выплюнутый из последней версии VirtualBox
http://narod.ru/disk/20453891000/Kubuntu%209.10%20Maemo4.tar.html
(Голая Kubuntu 9.10. До 10.04 не обновляйте, там убрали hal, из-за чего VirtualBox Guest Additions не работают)

Если нормально откроется, выложу такой же с Fremantle. Два Maemo SDK в один scratchbox ставить не стал, хотя это наверное возможно.
Контрольные суммы внутри архива.

В Diablo простейший PyQt пример с википедии вылетает с сегфолтом. Пока не ясно в чём дело.
PyGTK работает. Maemo-программы запускаются через run-standalone (выставляет правильное окружение)
little_beat:Кроме того, можно сделать некоторый финт с прокруткой и сверху-снизу вставить кнопки следующий билет/предыдущий билет.


А можно по-вертикали прокручивать содержимое вопроса, а по-горизонтали - вопросы билета/темы.
mosfet:Выложил образ с Diablo SDK с PyGTK и PyQt внутри, выплюнутый из последней версии VirtualBox
http://narod.ru/disk/20453891000/Kubuntu%209.10%20Maemo4.tar.html
(Голая Kubuntu 9.10. До 10.04 не обновляйте, там убрали hal, из-за чего VirtualBox Guest Additions не работают)

Спасибо. Качаю.

mosfet:А можно по-вертикали прокручивать содержимое вопроса, а по-горизонтали - вопросы билета/темы.

Кстати хорошая идея. Мне нравится.

Насчет PyQT - я глянул в репах. Какой-то PyQT 4.7 Full там лежит. Вести 20Мб! Это что, за нашей программой будем такую дуру тащить? А не перебор?
mosfet:
А можно по-вертикали прокручивать содержимое вопроса, а по-горизонтали - вопросы билета/темы.

Да, у меня тоже была такая мысль, но почему-то у меня есть ощущение, что интерфейсные библиотеки такого не позволят сделать. Если позволят - я за. Только нужно будет тогда и прогрессбар горизонтально располагать.
alex2ndr:Вроде выкладывали уже рабочую питон версию для N900.

Спасибо. Правда пришлось доподточить путь к /usr/share/pdd прежде чем заработало.
С Qt зависимостями вообще непонятно. Есть python2.5-qt4 от которого нам пока нужно только QtGui вроде бы.
А ещё есть нокиевский PySide.

Лучше всего сделать тестовые пакеты с зависимостями для обоих маем и посмотреть на сколько придёться накачать зависимостей.

Да, пароли в образе с SDK везде 123
Насчет Классификатора по темам. Логично было бы его привести текстовым файликом и положить рядом с базой. Ну а потом соответственно парсить. Я наверно так и сделаю. В код его засовывать как-то не правильно... Он к коду отношения вообще не имеет.
alex2ndr:Насчет Классификатора по темам. Логично было бы его привести текстовым файликом и положить рядом с базой. Ну а потом соответственно парсить. Я наверно так и сделаю. В код его засовывать как-то не правильно... Он к коду отношения вообще не имеет.

Полностью поддерживаю.

Как там образ виртуалки от mosfet?
В общем, у PyQt на диабле перспектив мало.
От нокиевской PySide только огрызок какой-то. Метапакет python2.5-qt4 с поломанными зависимостями, ставится только отдельно python2.5-qt4-gui.
В SDK простейший пример вылетает с сегфолтом, на n800 долго думает, но запускается. Зависимости требуют 25МБ места (при уже установленном питоне).

В Маемо5 зависимости не поломаны, есть привязки на выбор: PyQt или PySide. В SDK работают обе. На н900 не проверял.

Если надо, выложу образ для virtualbox с обеими SDK в одном scratchbox. Переключаться между ними можно.
Такс. Выкладываю мою работу за выходные. Т к большую часть времени инета у меня не было, то в svn все попало одном большим коммитом. В моем локальном git репе конечно есть промежуточные коммиты, но как их
отравить в svn я не знаю. Чтобы не ломать текущую версию создал папку newsrc, в которую все и сложил.

Теперь о ее содержимом.
1. themes.txt
Из файлика lists.py я вылил все темы в этот файл. Получилось так:
...
Название темы
Список файлов, которые к ней относятся
...
По моей идее themes.txt должен лежать в папке с базой. Рядом с папками txt и img.

2. parser.py
В основном я работал над вот этим файлом. Здесь хранится 2 класса - Parser и Card
Описание класса Card -

Класс, описывающий билет с вопросами
Вводные параметры:
(path,filelist)
path - путь к месту хранения БД
filelist - список названий файлов с текстовым описанием
Использование:
get_all_quest - возвращает генератор, где каждой значение - словарь
следующего типа:
{
card_nmb:int - Номер билета.
quest_nmb:int - Номер вопроса в билете.
image:str - Полный путь к файлу с картинкой. Если
картинки нет, то пустая строка.
question:utf8_str - Вопрос.
answers:utf8_str - Список с вариантами ответов.
corr_ans_nmb:utf8_str - Номер правильного варианта ответа.
comment:utf8_str - Пояснение к ответу.
}
Данный словарь описывает один из вопросов билета.

Таким образом этот класс имеет только один метод - get_all_quest.
Класс Parser. Имеет 2 метода -
get_card_list - Возвращает список, состоящий из пар, где 1-й элемент это название билета(напр Билет № 1), а второй - объект класса Card, который при вызове его метода get_all_quest будет возвращать словари с вопросами.
get_theme_list - Тоже самое, что вышеназванный, но только не по билетам, а по темам.

3. default.ini
Я решил, что лучше настройки по умолчанию хранить не в коде и не в ~/.pddrc. Наверно лучше их положить в /etc/pdd/default.ini. Соответственно вырезал секцию DEFAULT и скинул ее в этот файлик. Заодно туда можно будет складывать настройки приложения, которые не требуется менять, но и захардкоживать их плохо. Пока я не думал что это будет.

4. config.py
Объект конфигурации. Описалово:
    Класс для работы с конфигурационными файлами. Использование:
cfg - словарь, содержащий в себе все опции из файла настроек.

read - прочитать конфигурационный файл. Если в пользовательском
каталоге нет файла .pddrc, то настройки читаются из файла с глобальными
настройками(например из /etc/pdd/default.ini) а затем записываются в
~/.pddrc

write - записать настройки в конфигурационный файл (в ~/.pddrc)

set_default - прочитать глобальные настройки и записать их в настройки
пользователя(~/.pddrc)


пока я его не очень проработал, поэтому и комментариев в коде нет. Я еще подумаю как лучше сделать, возможно перетасую кое-что.

5. main.py
Здесь я пока ничего не делал. По идее это будет тот файл, что вызывает все остальные. Думаю надо содержимым.

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

Сейчас буду изучать QT. Несмотря на слабые перспективы его на N800(думаю что этот GUI придется делать на gtk) все равно хочется разобраться что и как. Пока буду ориентироваться на работу с ББ.
little_beat:
Как там образ виртуалки от mosfet?

Вроде заработало. Долго морочился с тем как его подцепить. Почему-то к VirtualBox он подключаться отказался, поэтому я конвертнул его и подключил к VMware. Вроде формат vmdk и так к vmware относится, но без конвертации почему-то не работало. Вообщем запустил, потихоньку разбираюсь. Пока он еще не понадобился.
Еще момент. Насчет баз в tar. Будем организовывать их поддержку? Я пока не пойму зачем нужны запакованные таким способом базы. Сжатия нет, да даже если бы и было, то его процент был бы минимален - jpg уже сжат. Только разве представлять базу одним файлом, но стоит ли оно того? В принципе это не очень сложно организовать но надо? Отрицательные факторы такие - потребление ресурсов на извлечение туда сюда. Если же извлекать только один раз, то потребление места. Прошу высказать мнения.