Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Сбор мнений по поводу возможного нового проекта  (Прочитано 1163 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Lifewalker

  • Автор темы
  • Гость
Коллеги! Решил я вдруг тряхнуть стариной и наваять проехт. И не просто проехт, а чтоб людя́м пользу приносил. Суть проехта излагать пока не буду, хотя намекну, что это стопицотпервый каталогизатор изображений, ибо имеющиеся меня не удовлетворяют вообще никак :)

Проблема в том, что последний раз чего-то реальное (в смысле не учебное) я программировал более 10 лет тому назад и это было никак не графическое приложение, а вполне себе бизнес-проект по добыванию данных из СУБД и смешиванию их в логистическую похлёбку для управления складами и прочей ерундой. Ну плюс кое-чего на 1С-ке делал так, по мелочи. Посему, от магистрального направления в разработке графического ПО для людей слегка подотстал. Отсюда возникает ряд вопросов, относительно которых желаю собрать мнения.

Актуально ли вообще сегодня зачинать проект для десктопа? Особенно, если на его реализацию уйдёт никак не менее 2 и более лет, поскольку я не собираюсь посвящать ему всё время, а только так, набегами и то, если не лень будет.

Какое средство разработки / язык применить? Имею опыт разработки на Pascal/Delphi, программировал для СУБД Paradox и Access, применял Visual Basic в Windows/MS Office. Из языков общего плана знаком с Modula, Oberon. С линейкой Си/Си++ знаком давно, даже знаю как конструктор копирования сделать, но я ненавижу это кошмарище. Лет 10 тому назад посвятил изрядно времени изучению Microsoft.NET, WPF и прочих приблуд, но за недодобностью забыл к чёрту почти всё. Знаком с Java и средой NeBeans, могу использовать Swing, но JavaFX для меня - тёмный лес.

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

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

Прошу высказаться.
« Последнее редактирование: 09 Март 2014, 15:33:38 от Lifewalker »

Оффлайн maximand

  • Активист
  • *
  • Сообщений: 307
    • Просмотр профиля
Привет.

Не мог пройти мимо. Я разрабатываю mmex https://sourceforge.net/projects/moneymanagerex/ (с++)
уже лет несколько. Я начинал как не кодер вовсе (ибо только в детстве на асме и бейсике кодил под Z80).
При подключении очень квалифицированного программиста проект претерпел качественное преобразование, благодаря чему не загнётся, а будет развиваться. Программер, что любопытно, из Китая. Таких широких взглядов в программировании до него я не встречал. Основная идею это использование сторонних библиотек по максимуму и разделение кода на системный и пользовательский. Например в последней бета версии программы реализован этот принцип. Отчёты можно делать на данных полученных из БД посредством SQL с последующей обработкой в Lua, а представление через html-5 шаблон с поддержкой js.
(Сравните с реализацией когда кусочки html тэгов склеиваются на стороне приложения, как было до этого).

Моё мнение, что за два года можно сваять нечто функциональное, если только этим и заниматься изо дня в день. и 100% это не получится сразу "правильный" продукт в код которого захочется кому-то лезть, чтобы помогать. А уж популярность в народе сыскать и вовсе сложно. А так как продукт не новый (ещё один вьювер), то и вовсе маловероятно.

PS средств разработки, может и тонны, но юзабильных в разы меньше.
PSS Чтобы сваять проект одному, надо быть мегагуру.
PSSS Используя модули Mmex, при желании, вьювер я бы сваял, возможно за пол года - год. БД и обвязка есть, дерево навигации тоже. Аватарки и прочие прелести придётся осваивать.

Lifewalker

  • Автор темы
  • Гость
maximand, спасибо за мнение и что поделились опытом :)

Хочу лишь уточнить, что идея не в просмотрщике, а в каталогизаторе. Ключевая мысль в том, чтобы убрать от пользователя как можно дальше понятие файла, выведя на первый план понятие изображения, метки, группировки и так далее. В общем, что-то вроде испытательного приложения, которое должно показать, возможно ли приделать теговое хранилище к файловой основе. Ведь проекты типа WinFS до сих пор остаются голубой мечтой.
« Последнее редактирование: 09 Март 2014, 22:44:38 от Lifewalker »

Оффлайн maximand

  • Активист
  • *
  • Сообщений: 307
    • Просмотр профиля
Абстрагирование от файлов, мысль верная.
Для реализации подобного надо решить несколько задач, таких как:
1) БД, тип, структура данных
2) FrameWork и язык программирования
3) Среда программирования.
4) репозиторий ...  и ещё моного чего, наверное

Надо решить, это будет проект, чтобы реализовать свой замысел, или обязательно с выходом на рынок.
Для PC, планшетов или что-то облачное.

У меня, например, дальше С++ + wxWidgets + SQLite видения нет.

Пользователь решил продолжить мысль 09 Март 2014, 16:25:23:
И, например, есть такой проект https://sourceforge.net/projects/calibre/?source=directory . Он вроде хорошо написан. Но ориентирован на книги. Можно же на нём поучится и переделать в каталогизатор изображение, а не книг.
« Последнее редактирование: 09 Март 2014, 16:27:29 от maximand »

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7080
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Lifewalker, про exif не забудь, нет ничего хорошего на эту тему. Если начнёшь на плюсах и WxWidgets писать, то выложи проект на github и ссылку дай мне. Если смогу помочь и будет свободное время, то постараюсь помочь. Скажи только, какую среду выберешь или классика в виде vim/emacs? Если любишь IDE, то для C/C++ рекомендую CodeBlocks.
« Последнее редактирование: 09 Март 2014, 16:30:03 от peregrine »

Lifewalker

  • Автор темы
  • Гость
peregrine, в списке языков, рассматриваемых для реализации проекта, Си++ стоит на последнем месте. Нет, на предпоследнем, перед Бейсиком. Если сильно-сильно-сильно прижмёт, тогда может быть выберу его.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7080
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Lifewalker, тогда выбирай Pascal+Lazarus. Но размер у бинарика будет ого-го (пустая форма 14 Мб). Если Strip-ом обработать, то до 1-2 Мб ужмётся.

Lifewalker

  • Автор темы
  • Гость
Абстрагирование от файлов, мысль верная.
Ради этого всё и затевается. Это ключевая идея, так сказать киллерфича.

Базы данных изначально не будет, всё в файлах. База данных — это дополнительные библиотеки, дополнительные привязки/обвязки, ну это всё к чёрту. Для отработки первоначальной идеи, т.с. для черновика думаю посмотреть на Ruby, набросать макет, посмотреть работоспособна ли идея вообще. У кого есть опыт работы Ruby + QT/wxWidgets, сложно ли это, учитывая мой базис, перечисленный в первом сообщении?

Если черновик заработает, тогда возможно расширю/улучшу/углублю используя другой язык и библиотеку, скажем Java + JavaFX. Подчёркиваю, выбор в пользу Джава не сделан, это только примерка. Главное, чтобы не Си++ :)
« Последнее редактирование: 09 Март 2014, 17:47:25 от Lifewalker »

Оффлайн maximand

  • Активист
  • *
  • Сообщений: 307
    • Просмотр профиля

Базы данных изначально не будет, всё в файлах. База данных — это дополнительные библиотеки, дополнительные привязки/обвязки, ну это всё к чёрту.
Думаю ошибочное мнение. SQLite идеальна для однопользовательского приложения и wrapper найти не сложно.

А LAMP рассматривали как среду для разработки?

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7080
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
maximand, если для *nix, то с базой данных не очень приживётся. Взять тот же монстр амарок, многие его выпиливают из-за того, что он тянет мускул.

Lifewalker

  • Автор темы
  • Гость
maximand, понимаете в чём дело.

Если цепляться за СУБД, то логично всё загнать в неё, т.е. использовать БД как единственное хранилище (не зря же я вспомнил про WinFS). Какого же размера будет это хранилище в итоге? Например, у меня не так много картинок, всего-то тыщ 10, но они занимают несколько гигов. Вы представляете что будет, если запихнуть всё это в один файл БД? Понятно, что к файловому хранилищу придётся приделать какой-то механизм индексирования… Если только SQLite можно совсем проглотить внутрь приложения, тогда это станет применимо.

LAMP для десктопа? Оригинально, но чрезмерно. Да и с кроссплатформенным развёртыванием засада. На Линуксе это вроде не сложно, но как вы себе представляете поднять LAMP на Винде силами «обычного пользователя»™? :)
« Последнее редактирование: 09 Март 2014, 22:44:50 от Lifewalker »

Оффлайн maximand

  • Активист
  • *
  • Сообщений: 307
    • Просмотр профиля
WAMP?  8)

Запихивать файлы в БД я бы не стал. Только ссылки на файлы. В БД надо хранить когда, где, чем снято. ISO, размер окуляра, диафрагма, выдержка, лайки по 5 бальной шкале и т.п.

Т.е. чтобы были альбомы, а файлы пофиг где. И можно было бы статистику собирать.
Например очень интересно с каким фокусным расстоянием сняты понравившиеся мне кадры. Допустим 100. О я тогда бегу в магаз на фиксом типа

Lifewalker

  • Автор темы
  • Гость
maximand, хм, а идея со статистикой мне даже в голову не пришла... Спасибо!

Далее, вы пишете, «Запихивать файлы в БД я бы не стал. Только ссылки на файлы.» Именно этого — разрыва между данными и метаданными — я стремлюсь избежать. Иначе нафига вообще затевать эту песню, мало ли подобных программ наштамповано? Потому или всё в БД или всё вне БД на файлах... Во всяком случае я так вижу.

Понимаете, опыт использования OS/2 не даёт спать спокойно. Там был такое понятие, как «расширенный атрибут файла», в который можно было запихнуть метаданные, в том числе эскизы или метки, и проблема решалась как бы сама собой, нужно просто быстро пробежать по расширенным атрибутам и вот тебе готовый каталог всего. Аналогично она потенциально решаема на NTFS под Виндой, там есть понятие «поток файла». Но вот Линукс... Потому и приклеивают к файлам извращения в виде внешних БД и оторваться от связки БД+файлы не могут. А я хочу преодолеть это недоразумение :)

Однако, главный вопрос так и остался открытым. На чём и как лучше писать «морду» приложения?
Повторяю, нутро я сделаю на любом из известных мне языков, хоть на Паскале, потому как не первый день женат, а вот интерфейс рисовать не представляю на чём... Вернее представляю, но не представляю насколько это сложно и долго...
« Последнее редактирование: 09 Март 2014, 19:04:53 от Lifewalker »

Оффлайн Grigory Smirnov

  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Скажу по поводу десктопа. Сейчас большинство проектов делаются под веб, т.к. мобильные девайсы заполонили рынок. Под десктоп выживут лишь браузеры и большие/нужные программы. Поэтому сразу рассматривайте возможные варианты портирования.

Цитировать
Далее, вы пишете, «Запихивать файлы в БД я бы не стал. Только ссылки на файлы.» Именно этого — разрыва между данными и метаданными — я стремлюсь избежать. Иначе нафига вообще затевать эту песню, мало ли подобных программ наштамповано? Потому или всё в БД или всё вне БД на файлах... Во всяком случае я так вижу.
Файлы в БД - плохо. И это известно всем. Делайте ссылки на файлы в бд.

Цитировать
Однако, главный вопрос так и остался открытым. На чём и как лучше писать «морду» приложения?
Swing?

Lifewalker

  • Автор темы
  • Гость
Grigory Smirnov, согласен на счёт портирования, потому чисто десктопные интерфейсные либы типа Swing использовать не считаю логичным, разве что в первоначальном макете.

 

Страница сгенерирована за 0.068 секунд. Запросов: 24.