Russian Qt Forum

Qt => Кладовая готовых решений => Тема начата: navrocky от Январь 17, 2011, 23:16



Название: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: navrocky от Январь 17, 2011, 23:16
Решил эту тему вынести из другого  поста.
 
1) Давайте тут решим нужна ли нам такая либа? В которой будут собраны удачные решения из этой кладовки, расширяющие функционал Qt, разные там всякие контролы, вспомогательные классы..

2) Придумать хорошее название.

3) где захостить? git, svn?

4) вносить туда только Qt решения, или не только, например, чистый stl/boost..?

Кто знает, может у нас получится что-то популярное типа буста :)

Можно ее поделить следующим образом:
- общие классы (common)
- gui

Сменил тему на репозиторий, буквальное понимание термина ЛИБА многих смущает )


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: JamS007 от Январь 17, 2011, 23:26
Я думаю библиотека на то и библиотека, чтобы содержать хоть чуть-чуть однотипные решения. А в этой кладовке - самые разные... Будет просто каша...


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: navrocky от Январь 17, 2011, 23:40
Я думаю библиотека на то и библиотека, чтобы содержать хоть чуть-чуть однотипные решения. А в этой кладовке - самые разные... Будет просто каша...
Ну можно не все подряд вносить, а только удачные решения, голосованием что-ли?

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

Потом можно придерживаться следующих правил при включении классов в библиотеку:
  • минимум зависимостей между файлами библиотеки (для облегчения выдирания отдельных классов)
  • только общие решения (никаких частных никому не нужных)
  • простые решения (максимум 2-3 класса)
  • общий кодестайл, например, Qt-шный
  • дока на доксигене или Qt-шном генераторе..


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: ритт от Январь 18, 2011, 01:58
...и получатся солюшены - так зачем либа?


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: ieroglif от Январь 18, 2011, 04:53
Цитата: Т.Л.Пратчетт
Какое  ремесло  ни  возьми,  везде  одно  и  то  же.  Рано  или  поздно
кого-нибудь   осеняет:   необходима   организация.    И   будьте    уверены,
организаторами  станут  не  те,  кто,  по   общему  мнению,   достиг  вершин
мастерства, --  те  вкалывают. Честно  говоря,  и не  худшие.  Они  (а  куда
деваться!) тоже трудятся в поте лица.
     Нет, организационный процесс берут на себя  те, у кого довольно времени
и желания бегать и  суетиться.  И --  опять-таки, если не кривить душой,  --
миру нужны те, кто бегает и суетится. Но не обязательно их любить.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: navrocky от Январь 19, 2011, 12:52
что-то я не понял, надо или нет (


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: SASA от Январь 19, 2011, 19:15
Я такой библиотекой пользоваться не буду.
У меня почти в каждом проекте из нескольких модулей появляется длл с именем common. В ней собраны все функции и классы общего назначения. Если мне что-то понадобиться из "кладовки", я просто скачаю исходник, допилю и добавлю в common. Сделать common один на все проекты нет смысла, т.к. большая часть библиотеки отражает специфику проекта.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: Akon от Январь 19, 2011, 23:20
Если и делать, то что-то типо репозитария, содержащего разнородные решения. Использование - стянул необходимые *.h и *.cpp файлы и включил их в проект.

У меня (как и у многих) есть папка, в которой навалены всякие небольшие полезности в виде *.h и *.cpp файлов.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: asvil от Январь 20, 2011, 00:56
И что же Вы предлагаете, перекомпилировать все ваши полезности при каждой очистке проекта?
Оформлять необходимо каждый класс/набор классов в виде динамической/статической библиотеки. Я предпочитаю статические библиотеки, так как мне не хочеться инсталлировать 5-8 динамических библиотек при разворачивании приложения. И бинарной совместимостью я тоже не хочу заниматься.
Хотя прошу прощения, для qmake проектов это не актуально, они не так просто масштабируются.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: SASA от Январь 20, 2011, 11:11
Складывать всё в отдельный репозиторий - хорошая идея. Надо только оговорить правила включения. Например, внятное писание, соответствие некоторым правилам по оформлению кода, комменты аля дохуген, наличие проекта с примером использования. 


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: alexman от Январь 20, 2011, 11:37
Может вести не одну либу, а несколько? То есть как-то классифицировать реализуемые компоненты. Правда может возникнуть ситуация, что число библиотек будет равно числукомпонентов, то есть разумной классификации невозможно будет предложить...


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: Пантер от Январь 20, 2011, 13:01
core
gui
netwok
У самого такая идея была.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: navrocky от Январь 20, 2011, 13:28
Если и делать, то что-то типо репозитария, содержащего разнородные решения. Использование - стянул необходимые *.h и *.cpp файлы и включил их в проект.

У меня (как и у многих) есть папка, в которой навалены всякие небольшие полезности в виде *.h и *.cpp файлов.

Я про это и говорю. Я сам тоже так делаю (common со всяким хламом...). Вот здесь в форуме поддерживать актуальность тяжеловато, нет версий.

Собственно мое предложение такое:
1) Определиться с хостингом проекта.
2) Придумать название
3) Выбрать что там разместить
4) Структуру организовать так: каждое решение в отдельной папке со всеми необходимыми файлами (там могут быть файлы проекта .pro CMakeLists.txt, примеры, комментарии, дока). Не обязательно это должны быть статические или динамические библиотеки, можно и просто исходники.
5) Если все решения будут прокомментированы в doxygene тогда можно попытаться свести все в одну общую доку.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: asvil от Январь 20, 2011, 13:41
navrocky, отличный план.
Мои предложения, во всем основанные на Qt:
1) gitorious.org (соответвенно scm только git)
2) ru.org.prog.solutions (так вроде в яве делают, а ну еще в QtScript)
3) Все реализации всех Qt интерфейсов (QSettengs, Q*Model, Q*Delegate, Q*View, и так далее), все классы которые можно подключить и использовать.
4) поддерживаю
5) поддерживаю, комментарий в стиле doxygen, другого распространенного стиля я не знаю.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: navrocky от Январь 20, 2011, 13:51
navrocky, отличный план.
Мои предложения, во всем основанные на Qt:
1) gitorious.org (соответвенно scm только git)
2) ru.org.prog.solutions (так вроде в яве делают, а ну еще в QtScript)
3) Все реализации всех Qt интерфейсов (QSettengs, Q*Model, Q*Delegate, Q*View, и так далее), все классы которые можно подключить и использовать.
4) поддерживаю
5) поддерживаю, комментарий в стиле doxygen, другого распространенного стиля я не знаю.
1) gitorious поддерживает тикеты (не углядел пока)? Мне нравится гуглокод, но там нет git, а git хотелось бы пощупать ибо svn надоел ) sourceforge я думаю никто тут предлогать не будет, тормозная помойка...
2) я хотел было предложить QtSolutions, но оно уже есть %)
3) А общие классы, основанные на stl/boost?
5) есть кутэшный генератор доки, например, но я с ним не работал..


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: asvil от Январь 20, 2011, 17:06
1) ну видимо github, но там слово посередине pricing, а на gitorious open source.
2) ну да.
3) ну да.
4) qdoc3 - говорят не поддерживает utf8. Зато генерирует более красивый stylesheet. Зато последний doxygen тоже красив.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: _govorilka от Январь 20, 2011, 19:34
1) gitorious поддерживает тикеты (не углядел пока)? Мне нравится гуглокод, но там нет git, а git хотелось бы пощупать ибо svn надоел ) sourceforge я думаю никто тут предлогать не будет, тормозная помойка...

Гуглокод поддерживает также mercurial.

Из плюсов гуглокода:
1. Система авторизации через HTTPS (На gitorious -  SSL c ключами).
2. Есть тикеты
3. Есть возможность добавлять файлы для скачивания (по прямым ссылкам)
4. Более развитая система Wiki

Из плюсов Gitorious:
1. Нигде не сказано, про размер репозитория  (видимо безгранично, на гугле - 2Gb)
2. Дизайн у gitorious посимпатичнее  :).



Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: _govorilka от Январь 20, 2011, 19:38
Насчет использования qdoc3, вот текст Readme к нему:

Цитировать
qdoc3 is the tool used to generate the Qt reference documentation.
The source code is included as part of this package primarily to
fulfill our GPL obligations. We highly recommend using
Doxygen (http://www.stack.nl/~dimitri/doxygen/) for generating
documentation for your Qt-based application.

Думаю, что тут всё понятно...


Название: Re: Фирменный репозиторий Кладовки готовых решений : Про лицензию
Отправлено: Fat-Zer от Январь 20, 2011, 20:08
Быть может об этом ещё рано думать, но как насчёт полного копилефта? Предлагаю выкладывать весь код под MIT-лицензией (http://licenseit.ru/wiki/index.php/MIT).

Только вот не нарушает ли это лицензию Qt?


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: Igors от Январь 20, 2011, 20:38
Кто знает, может у нас получится что-то популярное типа буста :)
Не получится, то делается профессионально (т.е. за деньги и в срок)


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: Пантер от Январь 20, 2011, 20:48
QtProgOrgRuSolutions тогда уже. И преффикс у классов PORFile, PORDatabase, etc. :)


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: panAlexey от Январь 20, 2011, 20:52
QtProgOrgRuSolutions тогда уже. И преффикс у классов PORFile, PORDatabase, etc. :)
можно и так.
ПС. А мне название нравится....


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: asvil от Январь 20, 2011, 21:45
Стоит ли поступить так как сделали ребята из QtExt, т.е. разбить доп. библиотеки на модули? Хотя нет, видимо будет что-то включающее в себя функционал больший, чем просто расширение класса?


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: alexman от Январь 21, 2011, 09:47
5) есть кутэшный генератор доки, например, но я с ним не работал..
Так qt-ники сами используюь doxygen.


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: navrocky от Январь 21, 2011, 10:13
QtProgOrgRuSolutions тогда уже. И преффикс у классов PORFile, PORDatabase, etc. :)

POR - как-то не благозвучно, PORk, PORno etc.

Цитировать
Не получится, то делается профессионально (т.е. за деньги и в срок)

Профессионально - да, но за деньги и в срок очень не уверен. Так что у нас есть шанс )

Mercurial - как оно в сравнении с git?


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: Пантер от Январь 21, 2011, 10:27
Я за гиториус. Тем более там Qt хостится.


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: asvil от Январь 21, 2011, 11:14
Итак, гиториус?
Предлагаю именовать классы как в кутэ лаборатории, т.е. Qt*, хотя вот, например, у меня есть модели/представления заточенные под postgres, для них я использовал приставку PG.
Тогда давайте вообще не налагать ограничений на именование классов, функции. Одно единственное, что хотелось бы стандартизировать - это camelCase и краткие комменты. Остальное предлагаю оставить на усмотрение конкретного разработчика.
log4qt, например, использует namespace для отделения себя от остальных.


Название: Re: Фирменная либа Кладовки готовых решений :)
Отправлено: Akon от Январь 21, 2011, 19:55
И что же Вы предлагаете, перекомпилировать все ваши полезности при каждой очистке проекта?

Да. Посмотрите хотя бы на эту кладовую, здесь в большинстве include код. Библиотека необходима для достаточно больших модулей.

ИМХО, всякие префиксы лучше не использовать. Использовать пространства имен.
ProgOrgClass -> ProgOrg::QtCore::Class (класс, зависящий от модуля QtCore).

По поводу стиля - Qt-style думаю всех устроит.
Дизайн интерфейса - попадался мне мануал от кого-то из разработчиков Qt - что-то типо Principles of good API design - там про дизайн интерфейса Qt - думаю тоже всех устроит.


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: asvil от Январь 21, 2011, 21:05
Хорошо, тогда предлагаю создать "команду" на гиториусе.
  В данной команде можно хранить несколько проектов.
    А в каждом проекте по нескольку репозитариев.
А я и не говорю о достаточно маленьком include коде. Мне его легче скопипастить из броузера, чем scm clone -depth 1 делать.
Согласен Qt code style + Qt дизайн интерфейса.
Ну что кто уже готов? Некоторые на форуме уже впринципе хранят что-либо на гиториусе, их можно будет добавить в команду, а их проекты перенести в "общую" часть.


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: navrocky от Январь 22, 2011, 14:53
Я готов, куда идти, чего жать?


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: asvil от Январь 23, 2011, 00:03
Ну что же, тогда давайте начнем. Я взял на себя смелость создать команду на gitorious.org
Имя команды: progorg-developers http://gitorious.org/+progorg-developers (http://gitorious.org/+progorg-developers)
Иконка: кнопка включения стиральной машины, она же перевернутая буква "Q" хвостиком вверх, вообщем логотип данного сайта.

Небольшой мануал для публикации Ваших Qt/C++ решений на gitorious.org
Для работы с хостингом проектов Вам понадобиться две программы: ssh-клиент и scm git. Для windows обе программы поставляются в одном инсталляционном пакете:
http://code.google.com/p/msysgit/ (http://code.google.com/p/msysgit/)
Прямая ссылка на текущую версию:
http://code.google.com/p/msysgit/downloads/detail?name=Git-1.7.3.1-preview20101002.exe (http://code.google.com/p/msysgit/downloads/detail?name=Git-1.7.3.1-preview20101002.exe)

Установка и настройка
Запускаем, устанавливаем. При установке будет предложено выбрать тип запуска Git.
Я предпочитаю второй вариант установки системных переменных.
Run from the Windows command prompt: Устанавливает Git и прописывает путь к консольной версии в PATH. Команду ‘Git Bash here’ всё равно можно использовать.
Третий вариант может привести к некорректной работе некоторых других приложений.

Теперь в командной строке необходимо ввести Ваши личные данные.
Код:
git config --global user.name 'Ваше имя['
git config --global user.email 'ваш_email@example.com'
Данные из конфига позже необходимо будет заполнить в gitorious'е.

Далее необходимо сгенерировать пару ключей для защищенного ssh соединения. Открываем консоль Git bash.
Код:
ssh-keygen -t rsa -C "[b]ваш_email@example.com[/b]" #(e-mail из git-config)
У Вас спросят где расположить ключи, дважды спросят пароль (passphrase). Пароль должен быть сложным. После этого Вы получите два файла и RSA fingerprint примерно такого вида:
Код:
e8:ae:60:8f:38:c2:98:1d:6d:84:60:8c:9e:dd:47:81 tekkub@gmail.com

Далее откройте файл id_rsa.pub. По умолчанию он располагается в домашней директории пользователя.
Зарегистрируйтесь на ресурсе: http://gitorious.org. Если Вы являетесь счастливым обладателем OpenID просто авторизируйтесь.
Далее перейдите на "Dashboard" вашего аккаунта, и настройте следующую личную информацию ("Edit your details"):
  • Полное имя (имя из git-config)
  • e-mail (git-config)

Перейдите в gitorious.org "Dashboard" "SSH keys". Добавьте новый ключ и вставте содержимое id_rsa.pub.

Работа с git/gitorious
Далее создайте новый проект на ресурсе.
Владелецем оставте себя. Поле slug должно быть уникальным в рамках всего ресурса. Выберите лицензию, не поленитесь заполнить метки. Краткое описание обязательно.
Далее gitorious предложит создать репозитарий для проекта. Оставьте флаг "Enable merge request" включенным, это позволит Вашим коллегам дополнить/исправить что-то в вашем коде и попросить Вас зафиксировать данное изменение в репозитарии.

Перейдите в папку с Вашим проектом и выполните следующие действия:
Код:
git init #Создаем локальный репозитарий
git remote add origin git@gitorious.org:slug-проекта/имя-репозитария.git
git add . #Добавляем все файлы
git commit -a -m "Initial commit" # Создаем первый коммит - он необходим
git push origin master # Синхронизируем ветку master с сервером origin. origin в данном случае gitorious.org
# Редактируем что-либо в проекте, исправляем ошибки, добавляем файлы etc
# Если добавились файлы делаем
git add newfile.cpp newfile.h
git commit -a -m "Some new features"
# local repo -> origin (gitorious) repo
git push # Отправляем свои изменения в origin репозитарий
# origin (gitorious) repo -> local repo
git pull # Получаем чужие изменения из origin репозитария
Отличия от централизованных систем контроля исходного кода - это наличие этапа синхронизации вашего репозитария с удаленным.
Это значит вы можете работать с Git, почти также как с csv/svn, когда ваш репозитарий локален. Когда же вы хотите публикации вашего проекта, Вам необходимо цикл (изменил-закомитил) дополнить циклом (получил данные от удаленных репозитариев/отправил данные в удаленные репозитарии)

Как попасть в команду.
Предоставьте Ваш nickname на gitorius'e в данной ветке форума, либо мне на почту filonenko.mikhail trampampam google mail.com, либо во внутренюю почту gitorious.org asvil.

Теперь когда все готово, перейдите в настройки проекта http://gitorious.org/slug-проекта/edit и выполните трансфер в команду.

Преимущества инновации.
Вы получите качественный и быстрый хостинг Ваших opensource проектов. Доступ к которым вы сможете получить из любого интернетного места (даже при отсутсвии git'а, Вы сможете скачивать архивы текущих состояний веток Вашего проекта). Приятная мелочь, Вы избавитесь от необходимости делать бэкапы.
Ваш проект будет протестирован некоторым количеством заинтересовавшихся людей, что положительно повлияет на качество проекта.
Ваш проект может быть доработан другими участниками команды, да и любым пользователем gitorious. Прямо в web интерфейсе Вы сможете просмотреть изменения и согласиться либо не согласиться с предлагаемым кодом.
Встроенный движок wiki позволит Вам быстро и удобно написать небольшую документацию по сборке и о других особенностях проекта.
Самые свободные проекты (MIT, BSD, like-Python, like-Postgresql, etc) позволят Вам использовать готовые библиотеки в коммерческих решениях.
Вам придется освоить Git и это доставит Вам удовольствие.


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

Ссылки
http://kuroikaze85.wordpress.com/2009/12/16/git-on-windows/ (http://kuroikaze85.wordpress.com/2009/12/16/git-on-windows/)
http://oss.fruct.org/wiki/Git (http://oss.fruct.org/wiki/Git)
http://oss.fruct.org/wiki/Публикация_проектов_на_gitorious.org (http://oss.fruct.org/wiki/Публикация_проектов_на_gitorious.org)


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: SASA от Январь 24, 2011, 13:22
Зарегистрировался. (AShushunov)
Как мне получить исходники уже выложенных проектов (я про progorg-developers)? А потом внести изменения?
В рамках предыдущей дискуссии, Вы предлагаете каждое "готовое решение" оформлять отдельным проектом, или отдельным репозиторием?


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: navrocky от Январь 24, 2011, 13:32
Я тоже зарегистрировался на gitorious: "navrocky"


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: asvil от Январь 24, 2011, 16:56
Добро пожаловать)

Продолжение руководства.
Упрощенный цикл работы:
В web http://gitorious.org/+progorg-developers (http://gitorious.org/+progorg-developers). Выбираем нужный проект, выбираем нужный репозитарий данного проекта и собственно в консоли\ide осуществляем git clone
Код:
git clone git@gitorious.org/project-name.git
cd project-name
Вы получаете готовый к работе репозитарий Git, с настроенным origin на gitorious.
Вносим изменения. Далее сохраняем результат в локальном репозитарии.
Код:
git add .
git commit -a -m "Some new features/remove some bugs"
Далее отправляем изменения в origin.
Код:
git push
Если вы задавали пароль для ssh ключей, его сейчас и спросят.
Кто-то дополнил этот проект, вы узнали об этом (по почте, например).
Вы выполняете в локальном репозитарии синхронизацию
Код:
git pull

Оформление структуры
На данный момент я перенес в команду два проекта QtSqlSettings, qtscripttemplate. Это, для примера, не стоит на них ориентироваться.
Предлагаю, создать проекты QtCore, QtGui, etc.. а само решение создавать репозитарием в данных проектах.
Есть проекты не попадающие под данную классификацию, их стоит оформлять отдельно. Возможно проект содержит разнообновляемые сущности, например sql схему, front-end, reports, тогда проще будет создание репозитария для каждой сущности.

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



Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: Racheengel от Февраль 11, 2011, 23:40
простите, а почему все таки джит? как по мне, это только для финальных релизов имеет смысл, быстро забирать исходники готового майлстоуна. а для работы в команде имхо оно не особо полезно...


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: Пантер от Февраль 11, 2011, 23:49
Racheengel, а какие, по твоему мнению, минусы гита для работы в команде?


Название: Re: Фирменный репозиторий Кладовки готовых решений :)
Отправлено: asvil от Февраль 11, 2011, 23:55
Я ориентировался на хостинг проектов.