пятница, 28 октября 2011 г.

Система удаленного тестирования

За 4 дня по заказу работодателя сварганил программу для проведения тестирования муниципальных служащих. Программа имеет клиент-серверную архитектуру. Клиент написан на Си++ с использованием Qt 4.7.4. Таким образом клиентская программа получилась к тому же и кросс-платформенной. Серверная часть написана на PHP, поэтому может быть реализована практически на любом хостинге. Обе части обмениваются данными по HTTP-протоколу. Формат данных свой (текстовый). Программа может печать отчет, вопросы для самоподготовки. Также отчет отправляется на сервер.

Через некоторое время опубликую исходники обеих частей, а сейчас пока провожу испытания.

пятница, 21 октября 2011 г.

Мой компьютер через FTP. Очередной велосипед.

Захотелось мне создать простой FTP-сервер, который бы позволял иметь доступ к любому файлу на компьютере, даже если в системе несколько жестких дисков. Это было бы удобно при администрировании локальной сети. Все имеющиеся FTP/SFTP-серверы в качестве корня, предлагают конкретную папку, но не весь компьютер сразу. Я же хочу, чтобы при подключении к моему серверу на запрос листинга корневой директории выводился список дисков, подобно тому, как это делает стандартный проводник Windows.

И так, взялся я за программирование. В качестве языка и тулкита выбрал C++/Qt. Этот выбор обоснован, только тем, что мне хочется получше изучить Qt, хотя я понимаю, что это возможно выглядит, как выстрел из пушки по воробьям.

Рабочее имя проекта совсем банальное — «ftpaccess».

Итак, вот, что я хочу получить в итоге:

  • кроссплатформенное решение (Windows/Linux)
  • простая установка (инсталлятор, DEB/RPM-пакет)
  • с простейшей системой разграничения прав: или все, или только один.
  • FTP-сервер запускается в виде системной службы  или демона.
  • Поддержка UTF-8
  • Настройка сервера одним простым INI-файлом.
  • Множественное подключение
  • Докачка файлов
  • Открытый и бесплатный проект
Полурабочие версии буду пока выкладывать в этом блоге. А если проект кого заинтересует, то можно создать отдельный сайт.

Дефрагментация дисков с помощью Defragler

Попробовал недавно программу дефрагментации дисков Defragler. Весьма интересная прога. Имеет два режима дефрагментации: быстрая и стандартная. Программа бесплатная и на русском языке.

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

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

Программа Defragler вполне может потягаться с другими программами дефрагментации такими как O&O Defrag. Так как Defragler распространяется бесплатной, то я её включил в свой каталог программ http://fresh-apps.ru/#defragler. Отсюда вы всегда сможете скачать самую последнею версию.

пятница, 14 октября 2011 г.

Ubuntu 11.10

Сегодня утром моя Убунта предложила обновить свою версию до версии 11.10. Я согласился, обновился и, к своему удивлению, был несколько огорчен. Дело в том, что я пользовался окружением рабочего стола GNOME, а после обновления гном был удален, и была установлена Unity. Ну не смог я пока осилить эту новомодную фичу!.. Ну да ладно, установил гном и... снова  ошалел. Гном оказался не привычным, и по-моему неудобным. Пошел в обход: выбрал Gnome Classic. И опять я был ошарашен... 

Короче пришлось устанавливать KDE, с которого я когда-то ушел. И тут на конец-то мне повезло. КДЕ не сильно изменился с того момента, как я его покинул. Я довольно быстро включился в работу и все встало на круги своя.

Может когда-нибудь я смогу привыкнуть к Unity, а может и не стоит к нему привыкать...

P.S: Чтобы установить KDE в Ubuntu, нужно установить пакет kubuntu-desktop:
$ sudo apt-get install kubuntu-desktop

четверг, 6 октября 2011 г.

ASUS M2N-SLI POST C1

Сегодня попал ко мне очень пыльный компьютер с материнкой ASUS M2N-SLI. Компьютер не стартовал, то есть он включался, загорались лампочки, но никаких надписей и звуков не выдавал. Вставил я пост-карту, и она показала мне код C1. Почитав таблицы с кодами, идущие к карте, выяснил, что код этот в некоторых версиях BIOS это связан с оперативной памятью...

Короче, смёл я пыль с модуля памяти, и компьютер стал загружаться!

среда, 5 октября 2011 г.

Простой парсер арифметических выражений

Однажды мне нужно было создать парсер математических выражений. Я взялся за этот труд и сразу же понял, что используя посимвольный разбор, я просто погрязну в большом количестве строк кода. Тогда на помощь пришел очень замечательный инструмент - регулярные выражения. Использовать регулярные выражения в Delphi или Builder'е стало легко возможным благодаря подключению модуля RegExpr.pas, созданного Андреем Сорокиным. Всё о регулярных выражениях Вы можете найти на его сайте: http://RegExpStudio.com/ Итак, приступим к созданию самого парсера.

Принцип работы

Нашему парсеру мы передаем выражение в виде строки, а он возвращает результат тоже в виде строки символов.

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

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

Ну, а теперь на деле. Создадим класс TExParser, в который мы заключим все необходимые нам функции.

Работаем с форматом Base64

В этом обзоре мы рассмотрим модуль Base64. Он предназначен для конвертации информации в формат Base64 и обратно. В этом модуле всего две процедуры: ConvertToBase64 и ConvertFromBase64. Аргументами обеих процедур являются потоки: входной и выходной.

Суть формата Base64 заключается в том, чтобы вместо всех 256 вариантов байта использовать, только 64. Следовательно выходной поток будет немного длинее, но зато его можно будет без проблем передать по электронной почте. Весь набор из 64 символов представлен здесь:

Входной поток (0..255)
Результат разбиения: 0..63

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/


Каждым трем байтам входящего потока соответствует четыре символа в выходном потоке. Принцип кодирования изображен на этом рисунке:


Так как из входного потока берется по 3 байта, то может быть такой случай, когда в очередной раз при попытке взять 3 байта нам не хватит их. Тогда в выходном потоке появятся на конце знак равенства (ABC= или AB==).

Модуль вы можете скачать здесь: base64.zip (1 КБ).

Хочу выразить благодарность за предоставленный материал по Base64 виртуальному клубу программистов Королевство Delphi, а также Александру Терехову - автору статьи "Base64 для не продвинутых".

Обновление с помощью ZvUpDrw Lite антивируса Dr.Web с заблокированным ключом


Данный проект является дальнейшим развитием проекта ZvUpDrw в сторону облегчения работы с программой. Лайт-версия работает аналогично полной: формирует локальное зеркало, и автоматически запускает штатную утилиту обновления Dr.Web.

Внимание! Автор программы никак не связан с компанией Dr.Web, поэтому Вы не можете предъявлять какие-либо претензии к авторам антивируса Dr.Web по поводу работы программ ZvUpDrw и ZvUpDrw Lite. Вы их используете на собственный страх и риск.
Список основных возможностей:


  • Загружает базы с официального хранилища Dr.Web.
  • Обновляет только те файлы, которые предусмотрены установкой Dr.Web.
  • Загружает файлы в несколько потоков.
  • Определяет общий размер скачиваемых обновлений, как следствие, отображает общей прогресс.
  • Автоматически запускает штатную утилиту обновления.
  • Поддерживает версии: 4.44, 5.00, 6.00.
  • Поддерживает Microsoft Windows 2000/2003/XP/Vista/7.
  • Управление из командной строки для автоматизации процессов.
  • Синхронизация зеркала с установленными файлами (не загружает все подряд при первом запуске).
  • Возможность остановить процесс загрузки.
  • Инсталлятор (Windows).
  • Установка в планировщик Windows (XP/Vista/7) прямо из интерфейса программы.
  • Отсутствие каких-либо настроек. Все работает "из коробки".
  • Поддержка прокси. См. ниже. 
  • Самообновление программы. При обновление баз, программа попутно проверяет свои обновления и автоматически их загружает (как правило около 400 кбайт).
  • Корректная работа в Windows Vista: изменено место хранения локального зеркала для лучшей совместимости.
  • Программа переведена на новую версию Qt: 4.7