Category: it

крендель

Пишем Qt-программы красиво

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

Однажды я случайно наткнулся в интернете на сборник правил, придерживаясь которых, можно писать качественный (в смысле читабельности) код:

http://qt.gitorious.org/qt/pages/QtCodingStyle


Я решил перевести данную статью и, быть может, кому-нибудь это окажется полезным.
Collapse )




крендель

Удаленное управление закачками

В продолжении технической тематики рассмотрим, каким образом можно организовать простое удаленное управление закачками.

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

Давно хотел настроить возможность скачивания файлов с помощью известной консольной утилиты wget, путем выдачи заданий удаленно. И вот недавно наткнулся на любопытный полуфабрикатный проект:



http://irodov.nm.ru/wget4web/



вкратце - это набор perl-скриптов, позволяющих ставить загрузки (давая задания wget'у) и производить простой анализ логов (например для отображения прогресса загрузки) и статистики скачиваний. Данные скрипты должны работать как FastCGI из-под какого-либо web-сервера (например, apache).

Скажу сразу - данный набор меня разочаровал, т.к. обладал рядом существенных недостатков, среди которых:

- Неверная работа с логами wget версии 1.12 (и выше)
- Нет никакого вообще интерфейса объединяющего эти скрипты
- Ошибки не позволяющие ставить закачки если в URL имелись символы '&' и '?'
- Нехватка полей (таких как владелец закачки) в скрипте прогресса (который и не работал вовсе)
- ....

В общем, на картинках это выглядело куда лучше, чем на самом деле.

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

Вот так это выглядит в работе (все картинки кликабельны):



===== Инструкция по настройке (для web-сервера apache): =======

Требуется наличие в системе: apache, mod_scgi (для FastCGI), wget, perl
1. Устанавливаем данные пакеты в систему.

2. Скачиваем wget4web и разворачиваем его в /var/www/wget4web.

3. Корректируем настройки закачек в файле
/var/www/wget4web/data/info.cgi

заводим пользователей, заполняя файл:
/var/www/wget4web/data/users.cgi

Создаем виртуальный хост, к примеру:

#------ /etc/apache2/vhosts.d/01_wget_vhost.conf -----
Listen 8082
NameVirtualHost *:8082

Listen 8082
NameVirtualHost *:8082

<VirtualHost *:8082>
# разрешаем для wget4web использование perl скриптов
AddHandler cgi-script cgi pl

ServerName yourservername
# путь куда вы развернули архив wget4web
DocumentRoot "/var/www/wget4web"

<Directory "/var/www/wget4web">
Options Indexes FollowSymLinks
# разрешаем для wget4web использование perl скриптов
Options +ExecCGI

AllowOverride All
# настройка политик доступа (это индивидуально ;-))
Order deny,allow
# разрешим доступ для всех
Allow from all
</Directory>

# запрещаем для всех пользователей просмотр файлов,
# содержащих имена пользователей/пароли (users.cgi) и настройки (info.cgi)
<Directory "/var/www/wget4web/data">
AllowOverride All
Order deny,allow
Deny from all
</Directory>

<IfModule mpm_peruser_module>
ServerEnvironment apache apache
</IfModule>

</VirtualHost>
#---------------------------------

Перезапускаем apache, заходим по адресу http://yourservername:8082. Наблюдаем работу как на скринах, показанных выше.

Удачного использования!