Блог программистов





468x60 banner

Apr17th

Шифровка данных заменой

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

Mar27th

Игра Fortress. Конкурс на создание лучшего бота. Итоги

Здравствуйте читатели блога программистов. 18 января на форуме программистов стартовал конкурс на создание лучшего бота для игры в Fortress. Правила игры Fortress.
Игра рассчитана на двух игроков. У каждого есть база. У базы есть щит. Есть также три типа ресурсов: энергия (En), металл (Me) и эллектроелементы (El). Есть набор проектов, которые игроки могут реализовывать. Они бывают разных типов: атака чужой базы, ремонт своей базы, развитие своей базы и т.д. Всего проектов 30, перед началом игры игрок должен выбрать только 15 из них на своё усмотрение (согласно выбранной стратегии). Каждый проект стоит некоторое количество ресурсов. Игроки делают ходы (выбирают проекты) по очереди. Если у игрока не хватает ресурсов ни на один проект, он пропускает ход. Задача игрока уничтожить базу противника (уменьшить броню базы до нуля).
Более подробно правила описаны в этой теме, а обсуждение конкурса в этой теме (также там есть вся необходимая информация для создания бота). Бот представляет собой DLL с тремя экспортируемыми функциями.

(more…)

Mar5th

Как узнать, запущена программа с правами администратора или нет

Иногда возникает задача узнать, запущена ли программа под администраторской учеткой или же обычного пользователя. Для чего это нужно? Ну, например мы написали крутую софтину, выполняющую некие действия с системой (например свой собственный редактор реестра). Для редактирования некоторых веток (например HKEY_LOCAL_MACHINE), требуются права админа. А вдруг программа запущена без соответствующих привилегий, то тогда мы ничего не сможем сделать – это раз, система нам будет показывать непонятные на первый взгляд ошибки – это два. Одна из самых частых в такой ситуации – ошибка с кодом 5 (ERROR_ACCESS_DENIED). С проверкой на “вшивость” можно говорить пользователю, что нужно запустить программу с правами администратора и смело закрываться.
(more…)

Feb5th

Быстрое преобразование Фурье. Практика использования

Рис. 1. “Преимущества софтовых вариантов очевидны лишь на малых частотах, либо при использовании аппаратно-программных реализаций”

Получение спектра в радиотехнике уже стало обыденным явлением. Появились как аппаратные высокоскоростные реализации, например от таких брендов как Tektronix, так и совмещенные варианты анализаторов на основе DSP процессоров или ПЛИС в промышленных или офисных компьютерах. Данным материалом мы начинаем цикл статей посвященных теме анализа спектра сигналов и их визуализации, для чего сегодня разработаем компонент, работающий с цифровым аудиопотоком, и освоим  методику Фурье-анализа применительно к распознаванию DTMF. 

Краткий экскурс…

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

 * В 1822 году Фурье опубликовал работу “Аналитическая теория тепла”, сыгравшую значительную роль в последующей истории математики. В этой работе он описал метод разделения переменных (преобразование Фурье), основанный на представлении функций тригонометрическими рядами (ряды Фурье). Фурье также сделал попытку доказать возможность разложения в тригонометрический ряд любой произвольной функции и, хоть его попытка оказалась неудачна, она фактически стала основой современной цифровой обработки сигналов. Как известно, звуковой сигнал является суперпозицией звуковых колебаний различных частот, то есть такой сигнал можно представить в виде “классического” спектра, описываемого f(ω). Именно преобразование Фурье однозначно определяет соответствие между j(t) и f(ω) и лежит в основе Фурье-спектроскопии / Лит.

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

(more…)

Jan10th

Платформа Android. Краткое введение для разработчиков.

Данную мини-статью я бы хотел посвятить платформе Android. Меня уже давно интересовала эта система и недавно я стал обладателем замечательного коммуникатора HTC Hero, что позволило мне плотно заняться изучением этой платформы. В этом обзоре я постараюсь кратко изложить основы Android, надюсь статья будет полезна тем кто интересовался андроидом, но боялся спросить

(more…)

Jan4th

Хуки в Windows. Часть третья. Оконные функции

Здравствуйте, программисты и им сочувствующие! После долгого перерыва представляю к вашему вниманию третью статью про механизм хуков в системах MS Windows. В первых двух статьях про хуки речь шла о клавиатурных хуках и хуках на события создания и уничтожения окон. В этой статье мы будем говорить про самое интересное: про хуки на оконные функции. Хуки на оконные функции являются самым мощным и гибким типом хуков, с их помощью можно сделать всё что угодно касающееся пользовательского интерфейса.
(more…)

Nov1st

Низкоуровневое сетевое программирование. Пишем клиент/серверное приложение на сокетах Беркли

Вступление.
Итак. Свою новую статью я бы хотял посвятить низкоуровневому сетевому программированию. Постараюсь наиболее полно и одновременно сжато изложить основные принципы сетевого программирования, а так же будет рассмотрен пример построение рабочего многопоточного сервера и клиента. Все примеры разрабатывались и комплировались на Unix-подобной операционной системе и все ниже сказанное будет справедливо для любой Unix. Но, т.к. описываемое является стандартом, – данным материалом смогут воспользоваться и программисты, работающие в среде Windows (я на рассматривал конкретно сетевое программирование в этой ОС, т.к. не использую её), изменения коснуться, разве что, заголовочных файлов.
Как было сказано выше – будет рассмотрено низкоуровневое сетевое программирование. Справедливости ради, следует сказать, что оно, на самом деле, не такое уж низкоуровневое, т.к. существуют гораздо более низкие уровни, но все это, как правило, прерогатива ядра ОС/драйверов/железа. Для облегчения работы с сетью, операционной системой предоставляются особые объекты – сокеты (в некоторых книгах их называют “гнезда”), представляющие собой разновидность программных интерфейсов. Они позволяют представить сетевой интерфейс как простое устройство ввода/вывода и работать с ним, почти как с обычным файлом (что истинно, ибо в Unix все устройства представлены как файлы). Для работы с сокетами используются API, разработанные в Калифорнийском университете в городе Беркли (для BSD Unix) в 1983 году. Эти API являются сегодня стандартном де-факто и поддерживаются практически всеми современными операционными системами. Данный программный интерфейс, так же называют сокетами Беркли. В основе сокетов лежат протоколы TCP/IP и UDP. Рассмотрение особенностей каждого из них выходит за пределы данной статьи. Скажу только самое главное: TCP – это протокол, обеспечивающий надежное соединение и гарантированную доставку пакетов. UDP – протокол без установления соединения и без каких либо гарантий доставки пакета. IP – протокол сетевого уровня, служит транспортом для протоколов TCP и UDP.
(more…)

Aug27th

Графика окон и их программирование

В этой статье описывается создание нестандартных окон.
Для этого нам понадобится Delphi (желательно Delphi 7 или RAD Studio).
Все графические объекты созданы в Photoshop 11.

(more…)

Aug16th

Работаем в сети с помощью libcurl

В этой статье я бы хотел осветить вопросы взаимодействия с Web и Ftp серверами в C++ программе.
Никто не запрещает программировать сокеты и самостоятельно реализовывать протоколы. Но зачем изобретать велосипед, когда существует готовое, отлаженное и мощное решение, способное удовлетворить практически любые Ваши потребности? Речь идет о библиотеке libcurl. Это простая в использовании, кроссплатформенная (поддерживаются Linux, Windows, Solaris, Qnx, FreeBSD, OpenBsd, MacOS X и многие другие) клиентская библиотека, позволяющая работать с протоколами FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. Поддерживаются SSL сертефикаты, HTTP POST, HTTP PUT, FTP закачка, HTTP закачка, прокси-сервера, куки, аутентификация, восстановление закачки файла, тунелирование http proxy и многое другое. Libcurl имеет завязки на множество языков программирования, среди которых: C, C++, Java, Lisp, PHP, Ruby, Perl, Pascal, Haskell.
И самое главное – библиотека полностью свободна, как для некоммерческого, так и для коммерческого применения.

(more…)

Aug16th

Работа с MySQL в С++ с использованием библиотеки mysql++

Под впечатлением от этой статьи я решил написать свой небольшой мануал по работе с СУБД MySQL, используя библиотеку mysql++. Данная библиотека представляет собой кроссплатформенное решение, написанное на С++, предоставляет богатый набор классов и позволяет эффективные приложения. Т.к. моей основной операционной системой является Linux – я буду рассматривать процесс создания приложения под Unix платформу. Под платформу Windows все будет практически точно так же, за исключением собственно подключения библиотеки, ее заголовочных файлов к IDE (MS Visual studio, Dev-c++).
Для создания приложения в среде Unix наличие IDE, как и собственно графической оболочки не необходимо, процесс написания и компиляции может проходить в голой консоли.

(more…)

Next Page »
Page 1 of 812345»...Last »