Flazy и Open Source

пятница, 19 августа 2011 г.

Привет читатель. Обещания надо сдерживать и в этот раз я расскажу об опенсорсе в наших проектах.

Flazy - это форк PunBB, отличного, а главное лёгкого форумного движка. Большинство спросит, "зачем еще один недофорум?". Но первый взгляд, и с этим сложно поспорить, это было оправдано. В старых версиях PunBB (ветка 1.2), когда не было возможности простого расширения функциональности без ковыряния в исходных кодах, приходилось всё затачивать под нужды конкретного заказа, под особенности российского пользователя.

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

Но так как тема об OpenSource, остановим плач об PunBB.

Flazer - это больше эксперимент. Первые месяцы, мы и не знали с чего начать, но пораскинув мозгами было выдвинуто волевое решение работать с тем, что знаем лучше всего. В качестве вебсервера был
запущен Nginx, версия не имеет значение, траблов не было выявлено ни с одной. Поверх пущен PHP-FPM, родной из PHP 5.3. В качестве базы данных используется PostgreSQL, сначала 8 версия, позже 9.

Как не смешно, но сначала в качестве ОС была выбрана Gentoo, и работала несколько месяцев довольно хорошо, но с переездом к другому поставщику, отказались от неё и остановились на Debian, более не требовательному к обслуживанию дистрибутиву.

Небольшая серверная часть была написана на Qt, а имеено было использовано qt-core и qt-sql для обращений к PostgreSQL. Но такое решение "не красиво" и планируется избавиться от Qt-кишков, в пользу чистого С\С++ и библиотеки libpq.

Что ждать от KDE Telepathy

среда, 15 июня 2011 г.

Новости о KDE Telepathy проскакивают все чаще и чаще. Описывать, что это такое Telepathy и о способах его применения я не буду. Ясно одно, за ним будущие и рано или поздно он заменит Kopete. Со времен релиза KDE 4.0, честно сказать, я не припомню какие-либо значимые нововведения, Kopete остался в далёком 2008 году и возможно он целенаправленно сейчас не развивается именно из-за наступающего KDE Telepathy.

Я решил попробовать KDE Telepathy, а это куча мини подпроектов, причём добрая половина из них еще не имеет релизов, но обещат, что закрыв блокирующие ошибки релиз состоится. Поэтому пришлось устанавливать из гита.

USE="-gstreamer -spell -xscreensaver -gnome -vala -xulrunner -libproxy" emerge -av net-im/telepathy-kde-meta net-voip/telepathy-haze net-voip/telepathy-gabble

telepathy-kde-meta — метапакет в который входят основные части Telepathy, KDE контакт-лист (нечто похожее на Kopete), приложение для настройки аккаунтов и приложение для чата.

telepathy-haze — это интерфейс для доступа к ICQ, AIM, Yahoo, MySpase и Skype, на данный момент это все протоколы реализуемые в KDE, но сам Haze позволяет больше. Не приятная особенность, он зависит от другого месаджера, от Pingin. Но юз флаг -gnome, позволяет собрать только libpurple, без гуя.

telepathy-gabble — для поддержки Jabber. Маленький плюс, есть Jingle, но протестировать не удалось, не очень его много людей использует. Gabble также работает с GTalk, Facebook и т.д.

По своему вкусу можно добавить SIP и MSN, установив специальный компонент Telepathy.

Немного времени на компиляцию, не долгие манипуляции с настройками и всё готово.

В параметрах системы появился новый пункт, что логично. Все настройки в одном месте.

Добавим нужные мне IM, выбираем из не маленького списка, спасибо Telepathy.


В итоге наблюдаем их в таком виде. Управление здесь схоже с настройками в Kopete.


Хотя я вру, помучатся пришлось, не запускался ICQ. Проблема оказалась не в KDE, а в глючности работы Telepathy c шифрованием.

Решил с помощью простой правки конфига. Помог багтрекер Ubuntu (линк, линк). Из консоли пришлось действовать, так как в диалоге настройка аккаунта нужных позиций не оказалось, хотя наверное, когда-нибудь допишут.
mc-tool update `mc-tool list | grep icq` string:encryption=no_encryption
mc-tool update `mc-tool list | grep icq` bool:use-clientlogin=0

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


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

Ну и чат, который так же независим как и остальные части.


Трудно описать, насколько всё сыро. Нет истории, нет метаконтактов, нет жаббер конференций, нет юсер-инфо, невозможно добавить новые контакты, не говорю уже повсеместной интеграции, то ради чего это затевалось и тд. и тп. При всем при этом пользоваться можно. Уже сейчас ведётся работа на интеграцией с Nepomuk, передачей файлов и утиллит для незаметной миграции с Kopete.

Flazer и монетизация трафика

Традиционно в летний период свободного времени значительно больше, в том числе и у команды Flazer. И я решил поделиться своими мыслями о будущем этого проекта.

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

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

Я хочу рассказать о способах монетизации трафика.
Для нас этот проект скорее хобби, чем реальный способ заработка и в данном положении это убыточно хобби. Есть несколько способов это исправить, изначально планировалось, что будет создано некое ООО, для этих целей.

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

Но прежде всего необходимо ввести внутреннюю валюту. Причины создания чуть позже. По статистике пользователи Flazer это не только граждане РФ, кстати, в нашей команде разработчиков также присутствуют не только граждане России. И забывать про рынок за пределами РФ не нужно, у каждой странны своя валюта. Чтобы ценовой эквивалент продаваемого контента был всегда одинаков и не возникало путаниц среди пользователей, да и самой поддержки, внутренняя валюта необходима. Такой системой можно легко изменять цены при скачках курсов валют не меняя цен на контент. Например, все знают о денежном кризисе в Белоруссии, имея цену на товар 100 единиц, в докризисной ситуации субъект РФ заплатит 15 рублей, субъект РБ - 30 бел. рублей. В кризисной ситуации за те же 100 единиц, субъект РФ заплатит сумму в 15 рублей, а вот субъект из РБ уже 50 бел. рублей.

Причины создания внутренней валюты? Да легко! Проще и выгодней работа непосредственно с источником денег, а не через его представителей. Пользователь захотел снять баннер или иной вид рекламы со страниц своего форума, пожалуйста, есть отключаемая реклама для разных ситуаций предусмотрены свои тарифные сетки. Пользователь захотел, чтобы администрация закрыла глаза, что есть нарушения правил (порно, варез), шучу, будет удалять нарушителей не задумываясь. А вот чтобы изменить к примеру некоторые пункты соглашения, не относящие и не затрагивающие законодательного РФ, возможно. Не удалять неактивные форумы или сделать отсрочку, тоже можно.

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

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

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

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

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

Google снова подружили с Akonadi

понедельник, 13 июня 2011 г.

На сообщение полученное по RSS от Planet KDE, меня посетило лёгкое дежавю, так как проект по интеграции Google Calendar и Google Contacts для KDE через Akonadi уже есть и он не молод, первые строки реально работающего кода были опубликованы в начале 2009 года. Его название в портаже Akonadi GoogleData (Google Code). На его основе создан другой проект libgcal (Gitorious), библиотека для работы API Google.
Первое время он работал, не сказать, что очень хорошо, есть минусы, но требуемые от него ожидания оправдывал. Сейчас я им не пользуюсь, но пару месяцев назад была возможность почти полной синхронизации контактов и событий календаря, что является очень большим плюсом. Так почему же я не пользуюсь им сейчас?

GoogleData имеет ряд существенных негативных особенностей. Во первых и это пожалуй главное, проект скорее мёртв, чем жив, полностью остановлено развитие, ситуация настолько критическая, что ресурс для синхронизации с Google Contacts просто сегфолтится при попытке его запустить с новыми версиями KDE. Так же нет возможности использовать несколько календарей, т.е. большую часть событий не возможно получить на свою машину. Имели место частые проблемы с авторизацией, но это было в ранних версиях. В синхронизации контактов так же есть проблемы, но на них можно закрыть глаза.

Вернёмся к началу. Выход KDEPIM подстегнул разработчиков и на этой недели был анонсирован новый проект для синхронизация с Google. Человеческого названия еще нет, он фигурирует как Google Resource for Anonadi. Эта разработка сразу привлекла внимание сообщества и была помещена в главную песочницу KDE. Я не мог не протестировать. Написал ебилд и установил.

Главные минусы его старшего брата ему не присуще. Все собралось, запустилось. Сразу бросаются в глаза диалоги настроек. Не такие обрезанные и недопиленные, в отличии от аналога. На скриншоте выбран календарь Яндекса, ранее импортированный в Гугл Календарь.


Используется более безопасный, без парольный метод авторизации.


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



И такие мелочи как карточка KAddressBook заполняющиеся полностью, в отличии от GoogleData, но аватары пустуют. И как можно догадаться они тоже только для чтения, хотя при изменении новая информация все же кешируется и сохраняется локально, но не обновляется в Google Contacts, с чем были проблемы у GoogleData, у которого локальное имя карточки было рандомное в итоге, к примеру было невозможно научить использовать Kopete адресную книгу.


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

PS: Прилепляю ебилд akonadi-google-9999 (30 дней ссылка будет еще жива)
PPS: Аконади ресурс заработает с любой версией KDE. Протестировал с версиями 4.6.4, 4.6.80, KDEPIM 4.6.0

Работа с таблицами с разным префиксом

суббота, 9 октября 2010 г.

Не многие знают, что получить данные из базы данных средствами API Flazy из таблиц с разным префиксом, на данный момент, невозможно, но рамках проекта Devils Gear такая возможность была реализована.

Пока тестовый код написан только для PostgreSQL и проходит отладку. Стилистически написание запроса не претерпело никаких изменений, это все тот же массив.

Пример для FROM

$query = array(
    'SELECT' => '1',
    'FROM' => array(
        'PREFIX' => 'forum_',
        'FROM' => 'users AS u'
    ),
);

Пример с JOINS
$query = array(
    'SELECT' => '1',
    'FROM' => > 'users AS u',
    'JOINS' => array(
        array(
            'INNER JOIN' => 'groups AS g',
            'PREFIX' => 'forum_',
            'ON' => 'g.g_id=u.group_id'
        ),
);

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

Systemd в Gentoo

четверг, 26 августа 2010 г.

Многие люди бредят о следующим поколении системы инициализации (так же известной как systemd), уже сейчас точно можно сказать, что она будет являться init-системой по умолчанию в Fedora 14. Таким же путем, возможно, пойдет и OpenSuse и даже консервативный Debian рассматривает в перспективе такое развитие ситуации. Но также точно известно, что Ubuntu, в ближайшем будущем, не собирается менять upstart на systemd.

Так где же Gentoo в этом списке? Текущей init-системой для нас является baselayout-1, в стабильном дереве и OpenRC для ~arch. Маинтейнеры systemd ведут активную работу, вместе с пользователями заинтересованными в этом, по поиску и исправлению ошибок. Запрос в багзиле имеет более 30 подписчиков и 86 голосов, таким образом пользователям очень интересно наблюдать за состоянием systemd в Gentoo. Однако, потребуется проделать большую работу, прежде чем systemd попадет в дерево portage.

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

По всей вероятности конечный результатом будет, то что OpenRC наконец стабилизируется и заменит baselayout-1, и если какие-либо разработчики будут готовы тратить огромное количество усилий и времени, необходимых чтобы сделать systemd пригодной для использования в Gentoo, то systemd будет дополнительной init-системой рекомендуемой для desktop/laptop машин.

Вольный перевод Nirbheek Chauhan, разработчика Gentoo.
Оригинал

Внешний сервер базы данных для KDE

понедельник, 23 августа 2010 г.

Идея перевести приложения KDE на использование внешней БД витала в воздухе давно.
Покопавшись в настройках я определил список программ которыми я пользуюсь, поддерживающих это:

  • Akonadi (MySQL, SQLite, PostgreSQL)
  • Amarok (MySQL)
  • DigiKam (MySQL, SQLite)
  • KMyMoney (MySQL, SQLite, PostgreSQL)
Как видно все они дружат с MySQL, значит будем использовать его.

Плюсов для себя я нашел несколько:
  • Каждое из вышеописанных приложений поднимает свой внутренний сервер БД, а DigiKam использует даже две базы. Обойдемся одним сервером.
  • MySQL уже установлен, он был вытянут по зависимостям, дополнительных манипуляция делать не надо.
  • Легкий бекап данных, ведь гораздо удобнее когда вся информация находится в одном месте. Я не параноик, но домашнюю систему время от времени бекаплю. Если брать относительно этих программа, то ручное тегирование в DigiKam и куча транзакции в KMyMoney конечно необходимо бекапить.

Создав 4 таблицы (desktop_akonadi, desktop_amarok, desktop_digikam, desktop_kmymoney) и изменив настройки приложений перезапустил их. Позже импортировал старые данные из DigiKam и KMyMoney во внешнюю базу средствами самих приложений, цель достигнута!