5 заметок с тегом: программы
Здесь я пишу свои идеи, мысли, описываю события своей жизни и просто делаю личные и рабочие заметки. «А Вы что, собираетесь жить вечно?»
5 заметок с тегом

программы

Report Builder for Synadyn Broadcast 1.0

15 января 2016, 23:00

Достаточно давно, ещё когда я работал на «Восточном Экспрессе» я написал и выложил в свободный доступ программу для генерации отчётов в РАО на основании отчётов о проигранных файлах, которые оставляет Synadyn Broadcast.

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

Скомпилированная версия 1.0:
Report Builder for Synadyn Broadcast 1.0

Так же, для всех желающих, я выложил в открытый доступ исходные коды проекта:
GitHub Report Builder for Synadyn Broadcast

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

Данное программное обеспечение является совершенно бесплатным и поставляется как есть.

Ошибки и косяки Delphi XE10 Seattle и xCode 7

21 сентября 2015, 16:55

И так, пока русскоязычная и англоязычная части интернета молчат по поводу работы в новой Delphi XE10 Seattle в связке с xCode 7, а компании представители описывают, какое замечательное вышло обновление, пользователи столкнулись с проблемой, что приложения, сделанные на XE10 Seattle, xCode 7 + SDK9, не запускаются на предыдущих платформах.

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

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

Коротко о главном. Если вы хотите, как можно скорей перейти на новую Delphi XE10 Seattle с целью писать свежие приложения\обновления для iOS, спешу вас разочаровать. Ваши программы перестанут работать на предыдущих версиях iOS. Статистика испытаний такова, что приложения собранные на XE10 Seattle, xCode 7 + SDK9 будут работать только на устройствах под управлением iOS9.

Вторая проблема, состоит в том, что недавнего времени AppStore при проверке приложений стала проверять их именно на iOS 9, а приложения собранные на XE8.1 такую проверку не проходят, так как зависают на стартовой заставке приложения и как следствие их отклоняют. Вот так то. Прошла уже целая неделя, а интернет по данному поводу ничего сказать нам особо не может.

На днях появилась статья от Сарины Дю Понт, о том, как всё же запустить приложение сделанные в XE8.1 на iOS9.

В результате изысканий Китайских друзей, получаем на данный момент такую картину:

XE8 + iOS 6 = полёт нормальный
XE8 + iOS 7 = полёт нормальный
XE8 + iOS 8 = полёт нормальный
XE8 + iOS 9 = зависание на экране заставки (если не воспользоваться советом Сарины)

XE10 + iOS 6 = приложение вылетает
XE10 + iOS 7 = приложение вылетает
XE10 + iOS 8 = приложение вылетает
XE10 + iOS 9 = полёт нормальный

Таким образом в XE10 Seattle и xCode 7 можно получить на данный момент только приложение, работающее на iOS9.

Ждём Delphi XE10 Seattle Update 1.

P.S. А в на Android в Delphi XE10 Seattle приложение с компонентами для отправки Push не запускается в режиме Release — Application Store. Что тоже, очень и очень печально.

Delphi   iOS   Seattle   xCode   XE10   программирование   программы

Аудио-плеер на Delphi для Android с применением библиотеки BASS.

24 марта 2015, 9:48

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

И так, сегодня я подробно опишу, как создать простой плеер потокового вещания.

Для работы нам понадобятся среда программирования Code Gear RAD Studio XE7, работать я рекомендую именно в данной версии программы, т. к. в используемых библиотеках, имеются некоторые не стыковки в работе с предыдущими версиями.

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

Для корректной работы библиотеки BASS я рекомендую так же установить компоненты DPF Android Native Components, я в своём примере буду использовать версию 2.8.6.

Начало

Ну я думаю процесс установки Code Gear RAD Studio XE7 описывать не стоит, поэтому сразу переходим к установке дополнительных компонентов и библиотек, потому что именно эта часть вызывает наибольшие проблемы, и именно поэтому данный этап я опишу наиболее подробно.

BASS

Идём на официальный сайт un4seen.com библиотеки, нажимаем в левом меню на ссылку BASS и скачиваем там последнюю версию для Android. На момент написания данной статьи на сайте опубликована версия 2.4 от 13 марта 2015 года. Прямая ссылка на скачивание библиотеки с официального сайта. Ссылка на скачивание с моего сайта.

Сайт библиотеки BASS Ссылки на скачивание библиотек

Примечание: я рекомендую использовать именно данную версию библиотеки, потому что предыдущие версии не работают с XE7, и при инициализации библиотеки появляется ошибка.

BASSFunctions

Для корректной работы с библиотекой, нам потребуется ещё один дополнительный файл, это BASSFunctions.pas. Данный файл опубликовал на форуме пользователь с ником 3delite.Ссылка на оригинальный файл.

DPF Android Native Components

Для корректной работы библиотек BASS, часто требуется установка компонентов DPF Android Native Components, т. к. в их составе имеется компонент для работы с аудио, без которого компилятор будет просто выдавать ошибку.

Идём на официальный сайт и скачиваем последнюю версию компонентов. Или вы можете скачать версию 2.8.6 с моего сайта.

Поехали

После того, как мы скачали все необходимые дополнительные файлы, приступаем к установке компонентов.

Начнём с DPF Android Native Components. Я рекомендую (во избежании дополнительных проблем с подключением) распаковать файлы в папку DPF.Android.Native.Components.v2.8.6 в корень диска C.

В каталоге с файлами, имеется файл Install.txt. У кого хорошо с английским, могут сделать всё по инструкции описанной в файле, для тех кто в школе учил немецкий, я опишу процесс установки компонентов подробно.

Запускаем Codegear RAD Studio. Далее в верхнем меню открываем Tools->Options->Delphi Options->Library.

В выпадающем списке справа выбираем платформу «32-bit Windows» и добавляем в раздел «Library path» путь к нашим компонентам.

Теперь то же самое проделываем для платформы «Android».

Теперь нам потребуется скомпилировать и установить компоненты. Для этого нажимаем File -> Open Project. Открываем проект из папки компонентов, соответствующий вашей среде программирования.

Открываем проект DPFAndroidPackagesXE7.dproj

Далее нам надо скомпилировать проект и установить полученные компоненты.

Нажимаем правой кнопкой на проекте в инспекторе проекта и выбираем пункт «Build», начнётся построение проекта.

После завершение построение, опять нажимаем правой кнопкой на проекте в инспекторе и выбираем пункт «Install».

Компоненты готовы к работе. Приступим к созданию проекта.

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

Для работы в библиотекой BASS, нам потребуется в каталог с проектом добавить файл BASSFunctions.pas и указать его в разделе uses.

Добавляем файл BASSFunctions.pas. Добавляем в раздел uses.

Теперь собственно сама библиотека libbass.so. Нам необходимо добавить данную библиотек в наш проект, иначе ничего не заработает.

Открываем архив bass24-android.zip и видим... Множество папок, нас интересует на данный момент только одна libs. Распаковываем её в каталог нашего проекта.

В каталоге libs, есть три подкаталога, нас интересуют 2 из них:

  • armeabi-v7a
  • armeabi

В них находятся два разных файла libbass.so.

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

Deployment Добавляем библиотеки

После того, как мы добавили библиотеки в наш проект, надо поменять параметр «Remote Path» для каждой библиотеки соответственно на «library\lib\armeabi» и на «library\lib\armeabi-v7a». Данную процедуру надо проделать для обеих конфигураций «Debug» и «Release».

Библиотеки Конфигурации

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

Объявляем глобальную переменную.

var
  uStream:HSTREAM;

В момент создания формы инициализируем библиотеку.

procedure TmainForm.FormCreate(Sender: TObject);
begin
  // Загружаем и инициализируем библиотеку
  Loadbass;
  BASS_Init(-1,44100,0,Handle,nil);
end;

На кнопку «Играть» вещаем обработчик:

procedure TmainForm.mainToolbarBarItems1Click(Sender: TObject);
var
  otStream : TStringStream;
  Result : integer;
begin
  try

    // Включаем индикатор загрузки контента
    ind1.Enabled := True;
    ind1.Visible := True;

    // Код проигрывателя
    Result := 0;

    // Закрываем старый поток
    BASS_StreamFree(uStream);

    // Создаём новый поток
    uStream :=
      BASS_StreamCreateURL(PChar('http://motochelyabinsk.ru:8000/play'),0,BASS_STREAM_STATUS or BASS_UNICODE,nil,nil);

    // Включаем проигрывание
    BASS_ChannelPlay(uStream, True);

    // Получаем и выводим название текущего трека из скрипта на сайте
    // Создаём поток UTF8
    otStream := TStringStream.Create('', CP_UTF8);
    // Делаем запрос к скрипту сайта
    IdHTTP1.Get('motochelyabinsk.ru/current-track.php', otStream);
    IdHTTP1.Disconnect;
    // Записываем название трека в Label
    Label1.Text := otStream.DataString;
    // Очищаем переменную потока
    otStream.Free;

    // Запустить таймер отслеживания изменений названия трека
    Timer1.Enabled := True;

    // Включаем и отключаем кнопки
    btn1.Enabled := False;
    btn2.Enabled := True;

  except on E: Exception do
    begin
      ShowMessage('Ошибка доступа к сети!');
    end;
  end;

end;

Ну вот в общем самый простой и работающий пример создания проигрывателя интернет радиостанций.
P.S. Чуть позже, выложу готовый пример данного приложения.

Документирование ПО

30 января 2012, 0:35

Довольно часто при написании дипломов по программному обеспечению, я сталкиваюсь с рутинным занятием — написанием документации.
Как правило, документация довольно детально и подробно должна описывать функции, меню, выполняемые операции и алгоритмы работы. А особо узкие места, сложные для понимания должны описываться более детально.
Но вот недавно пришлось мне поработать с одной системой управления сайтом HOST CMS, сказать честно, ребята которые пишут документацию и ставят описание к элементам, ушлёпки. Как правило описание элемента в точности соответствует его названию. И всё бы ничего, я бы не был так возмущён, если бы это не был коммерческий продукт. Мои работы и те получается документированы лучше.
Ребята, ёб вашу мать, пы продаёте это ГАВНО! Будьте любезны, доводиде дело до конца. Зачастую бесплатные проекты, которые пишутся одним человеком, выполнены значительно лучше.
Чтобы не быть пустозвоном, вот несколько скринов:

Ссылка, да не может быть! Невероятно! Ёба мать, а то я сам не понял Капитан очевидность нервно курит в сторонке

Если вдруг у вас возникла мысль, что можно скачать документацию, то спешу вас обрадовать, там описание не многим лучше. Особенно это касается документации программиста. Очень забавно выяснять, что за поле такое «Функция» и что туда вписывать, а главное, где эту функцию описать.

P.S. В моём представлении, система CMS для того и создаётся, чтобы максимально упростить управление сайтом. Т. е. сделана для людей с минимальными знаниями программирования, а на деле выходит, что купив коммерческий продукт, мы должны быть и программистами, и менеджерами, и дизайнерам и если надо сантехниками, мать их. Учитесь писать нормальную документацию, блеать!

Report Builder for Synadyn Broadcast

12 октября 2011, 17:30
Так как работаю я на телеканале «Восточный Экспресс» и на «Радио 100» (бывшее «Абсолютное радио»), то постоянно приходится работать с узко специализированными программами. Одной из них является программа Broadcast от компании Synadyn.
Программы такого типа обладают рядом существенных недостатков:
  1. Делаются они и вспомогательные компоненты порой на коленке.
  2. Отсутствие интуитивно понятного интерфейса или вообще удобного интерфейса в целом.
  3. Отсутствие внятной и подробной документации.
Про внутренее устройство радиоивещания.
Каждый месяц работники радиостанции должны составлять отчёт для РАО о том, какие песни и в каком количестве прозвучали в эфире радиостанции. Программа которая ведёт вещание сигнала, записывает лишь отчёт, о том, что прозвучало в эфире и отвратительно работает с тегами мультимедиа файлов. Данные файлы отчёта представлены в неудобоваримом формате. Т. е. задача подсчёта песен прозвучавших в эфире представляет собой адский труд.
НО, для нашего счастья питерские программисты придумали программу Report Builder. Инсталятор программы представляет собой rar архив, стоимость программы порядка 10000 рублей и защищена она HASP ключом.
Разочарования начались сразу после покупки программы. Сначала она отказалась запускаться на компьютере человека генерирующего отчёт. Программа требовала компоненты среды программирования. После того, как программу всё же удалось запустить, разочарование стало ещё сильнее, потому как в файлах отчётов теги были некорректными или отсутствовали вовсе. В результате, конечный отчёт для РАО содержал пустые ячейки и ненужную информацию (джинглы, реклама и пр.).

В результате всей этой истории было решено написать свою программу, которая будет составлять отчёт для РАО. Программу я назвал «Report Builder for Synadyn Broadcast».
Формат отчёта о прозвучавших в эфире треках имеет слудуюющий вид:
<code>
< 01.09.2010 00:00:00 381 Джинглы 100 FM — clocks_tickin — 02.wav 00:00:13
< 01.09.2010 00:00:09 629 Disk D \RusMusic\Океан Эльзы — Больше Для Нас.mp3 00:03:22
> 01.09.2010 00:00:13 381 Джинглы 100 FM — clocks_tickin — 02.wav 00:00:13
< 01.09.2010 00:03:26 1135 Джинглы Universal\100 FM — 2005 — 06.wav 00:00:06
> 01.09.2010 00:03:30 629 Disk D \RusMusic\Океан Эльзы — Больше Для Нас.mp3 00:03:22
< 01.09.2010 00:03:31 630 Disk D \InostrMusic\David Usher — Black Black Heart.mp3 00:03:34
> 01.09.2010 00:03:32 1135 Джинглы Universal\100 FM — 2005 — 06.wav 00:00:06
< 01.09.2010 00:06:59 1136 Джинглы CHR\100 FM — АПРЕЛЬ — 15.wav 00:00:07  — f-f/scratch no beat
< 01.09.2010 00:07:03 631 Disk D \InostrMusic\Finger Eleven — I'll Keep Your Memory Vague.mp3 00:03:21 Finger Eleven — I'll Keep Your Memory Vague
> 01.09.2010 00:07:05 630 Disk D \InostrMusic\David Usher — Black Black Heart.mp3 00:03:34
> 01.09.2010 00:07:06 1136 Джинглы CHR\100 FM — АПРЕЛЬ — 15.wav 00:00:08  — f-f/scratch no beat
</code>
Разберём по порядку поля отчёта:
  1. Символы < и > обозначают начало и окончание трека (насколько я мог разобраться)
  2. Дата и время начала или окончания трека.
  3. Идентификатор трека.
  4. Псевдоним. Остановлюсь подробнее. Для удобства работы в программе Boradcast для указания расположения треков используются псевдонимы, ссылающиеся на определённый каталог. Относительно псевдонимов программа ищет треки, которые должны прозвучать в эфире. В Report Builder'е псевдонимы используются для отсеивания джинглов, рекламы и пр. треков, которые не должны попадать в отчёт.
  5. Путь к файлу трека, указанный, относительно псевдонима. Report Builder использует именно имя файла для подсчёта прозвучавших треков, а не теги файлов.
  6. Длительность трека.
  7. Имя трека основанное на его тегах. Если взглянуть более внимательно, то можно заметить, что для многих треков данное поле либо некорректно либо отсутствует вовсе. Таким образом, составление на основании тегов выдаёт некорректный результат.
Порядок работы с программой:
  1. Заходим в меню «Настройка» и указываем псевдонимы, которые должны быть обработаны программой. В моём случае это псевдоним «Disk D». Относительно него у нас указываются все музыкальные треки (псевдонимы необходимо указать только в первый раз).
  2. Указываем каталог с файлами отчётов эфира, которые имеют расширение «.dpm».
  3. Устанавливаем в календаре месяц за который необходимо сгенерировать отчёт.
  4. Нажимаем кнопку «Создать отчёт».
После обработки файлов, в каталоге программы будет создан отчёт в формате «.xls», который будет содержать данные об исполнителе, названии трека, его длительности и количество проигрываний его в эфире.

Системные требования:
  • Microsoft .NET Framework
  • Microsoft Office 2003 — 2007
На данный момент порграмма имеет версию 0.5, в ней имеются недочёты, некоторые алгоритмы необходимо оптимизировать и добавить некоторый функционал.
P.S. Программу выкладываю в пока архиве. Большая просьба, если кто-то будет пользоваться программой, оставляйте ваши комментарии, пожелания, замечания и возможно новые идеи. И просто отмечайтесь в комментариях.

Report Builder for Synadyn Broadcast 0.5