вторник, 29 января 2013 г.

Обмен медиа-информацие в файл-листах

Все привет!
В серой ветке начиная с r502-build build 12742 активирован обмен с fly-server-ом и фреймом просмотра файл-листов, позволяющий видеть характеристики файлов в шарах скачанных с пользователей использующие оригинальны клиенты без поддержки расширенных тэгов mediainfo
Алгоритм работы
При открытии любого файл листа клиент:
1. Просматривает видимый список файлов в ListView справа от дерева
2. Формирует get-JSON запрос на сервер для тех файлов, которых нет у него в шаре.
{
    "array": [
        {
            "size": "367742976",
            "tth": "QPIPCPFWZSZGECKSPNRVNJ44HD3PPJMF7XMS2NQ"
        },
        {
            "size": "367640576",
            "tth": "MHRRU45RGNCNROAEVAYKJEJ4IM52ZQOT6A6DZYA"
        }
    ]
}

3. Получает ответ с сервера и дополняет информационные колонки информацией.
4. Если в видимой части есть файлы находящиеся в шаре и они содержат медиа-информацию
клиент формирует второй set-JSON запрос и предает на сервер медиа-инфу по файлам.
{
   "array" : [
      {
         "media" : {
            "fly_audio" : "43mn 17s | MPEG , 192 Kbps, 2 channels",
            "fly_audio_br" : 192,
            "fly_video" : "MPEG-4 , 1 816 Kbps, 16:9, 23.976 fps",
            "fly_xy" : "720x400"
         },
         "size" : "
367742976",
         "tth" : "
MHRRU45RGNCNROAEVAYKJEJ4IM52ZQOT6A6DZYA"
      }
   ]
}
 

5. Для экономии трафика после выполнения пункта 4 массив переданных TTH сохраняется в локальной кэш-таблице (media_db.fly_send_to_server) и более по данному файлу клиент информацию на сервер не передает.
6. При скролировании списка файлов и ожиданни в течении 2 секунд. операция с шагами 1-5 автоматически повторяется для вновь появившихся файлов.

Шлите замечания.
Кто не активировал серый канал обновления тест-версию можете скачать тут
http://flylinkdc.dyndns.org/install/last-build/test-build-for-blog


понедельник, 28 января 2013 г.

суббота, 26 января 2013 г.

Тестирование fly-server (часть 1)

Привет.
Начиная с build 12693 сборки из "серой" ветки научились копировать полную медиа-информацию полученную с сервера. Пока идет загрузка тэга mediainfo->Inform для всех типов и каналов)
Технические детали обработки результатов с сервера:
http://code.google.com/p/flylinkdc/source/detail?r=12693
Спасибо всем, кто принимает участие в тестировании.
Кто не использует серый канал обновления - может загрузить версию тут
FlylinkDC-r502-x64-beta62-build-12695-2013.01.26-22.28.35.7z
FlylinkDC-r502-x86-beta62-build-12695-2013.01.26-22.23.49.7z
FlylinkDC-r502-src-beta62-build-12695-2013.01.26-22.25.28.7z



среда, 23 января 2013 г.

FlylinkDC++ r501 sp12.1

После публикации версии sp12 в авто-обновление локализованы и исправленные
две группы ошибок приводившие к падениям программы у 99 пользователей.
  • Ошибка открытия сокета при инициализации natpmp
  • Падение при получении лички под паролем. 
Спасибо за отсылку дампов на краш-сервер - вы помогаете программу сделать стабильнее.
Исправлены ошибки
 https://crash-server.com/Problem.aspx?ClientID=ppa&ProblemID=11461
 https://crash-server.com/Problem.aspx?ClientID=ppa&ProblemID=11460
 https://crash-server.com/Problem.aspx?ClientID=ppa&ProblemID=11555

В авто-обновление помещена исправленная версия версия
Инсталляторы

http://flylinkdc.googlecode.com/files/SetupFlylinkDC-x64-r501-build-12637.exe
http://flylinkdc.googlecode.com/files/SetupFlylinkDC-x86-r501-build-12637.exe
http://flylinkdc.googlecode.com/files/SetupFlylinkDC-x86-x64-r501-build-12637.exe 
Инсталляторы для сетей
http://flylinkdc.dyndns.org/install/last-build/r5xx/32bit
http://flylinkdc.dyndns.org/install/last-build/r5xx/64bit
mini-VIP
http://flylinkdc.dyndns.org/install/last-build/r501-sp12-mini-vip





вторник, 22 января 2013 г.

FlylinkDC++ r501 sp12

Инсталляторы
http://flylinkdc.googlecode.com/files/SetupFlylinkDC-x64-r501-build-12608.exe
http://flylinkdc.googlecode.com/files/SetupFlylinkDC-x86-r501-build-12608.exe
http://flylinkdc.googlecode.com/files/SetupFlylinkDC-x86-x64-r501-build-12608.exe
Портабельные версии и исходные коды на С++
32-битная версия
64-битная версия
Исходники 
Отладочная информация  
Версия r501-sp12 ушла в авто-обновление!
Если что-то заработает не так как раньше - прошу написать pavel.pimenov@gmail.com
* Добавлена визуальная подмена иконок с DVD и BR дисками
* Для битрейта рекурсивно вычисляем минимальное и максимальное значение
* Перевел хранения DHT в базу данных SQLite (файл FlylinkDC_dht.sqlite)
* Исправлены падения на больших смайл-паках
* Добавлено расширение для файла образов .cso http://en.wikipedia.org/wiki/.CSO и другие
* Обновлены
 - sqlite 3.7.15.2
 - Mediainfo
 - boost 1.52 

Важно!
После установки приложения с нуля оно попросит обновить мелкие файлы локализации 
не отказывайтесь от этого иначе возникает падение  
https://crash-server.com/Problem.aspx?ClientID=ppa&ProblemID=11461

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













понедельник, 21 января 2013 г.

Дизайн сайта

Hi all!
Мы начали плотно заниматься сайтом. Но мы же программисты... Так что нам нужен веб-дизайнер.

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

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

Свои варианты предлагайте в каментах.

четверг, 17 января 2013 г.

Оптимизируем загрузку GeoIP

Всем привет.
Пост для программистов! 
Возможно кто-то из вас в свободное время "копает" исходный код FlylinkDC++ в академических целях
и если вдруг вы заметили элементы говно-кода обязательно сообщите об этом!
Пример использования профайлера для поиска хот поинтов по нагрузке на CPU
Шаг 1   - под профайлером запускаем флайлинк и после завершения процесса студия показывает нам стек вызова "горячей" функции.














Шаг 2 - находим тормозной кусок в коде и , где выполняется заполнение массива стран и провайдеров через использование 
линейного поиска по std::vector. данный вызов выполняется ~180 тысяч раз
при этом в результирующем векрторе набирается всего ~2900 названий стран и провайдеров.

Шаг 3 - заводим дополнительную хэш таблицу std::unordered_map
через которую пробрасываем наши 180 тысяч записей. и после индексации всего массива чистим.









Шаг 4 - Сравниваем скорость загрузки GeoIP старой и новой версии:












суббота, 12 января 2013 г.

FlylinkDC++ r414 release

* Добавлена визуализация файлов планируемых для загрузки авто-апдейтом
* Исправлена ошибка восстановления источников из БД после перезапуска клиента.
* Обновлены:
 - sqlite 3.7.15.2
 - Mediainfo

Инсталляция
http://flylinkdc.googlecode.com/files/SetupFlylinkDC-x86-r414-build-12471.exe
http://flylinkdc.googlecode.com/files/SetupFlylinkDC-x64-r414-build-12471.exe
Портабельные сборки + исходники
FlylinkDC-r414-x64-build-12471-2013.01.12-14.22.21.7z 
FlylinkDC-r414-x86-build-12471-2013.01.12-14.17.18.7z
FlylinkDC-r414-src-build-12471-2013.01.12-14.18.32.7z
FlylinkDC-r414-debug-info-build-12471-2013.01.12-14.22.24.7z
mini-VIP 
Cборки для сетей
Появятся через 4-6 часов:
 

четверг, 10 января 2013 г.