Скрипт накрутки рейтинга (голосов)

Продолжим написание постов по использованию Python и UrlLib. Может, плохо рассказывать о таких вещах как накрутке, но это весьма интересно. Опять же не забуду напомнить, что всё это исключительно в учёбных целях!

Что я рассмотрю в этой статье:

  • Авторизация на сайте через UrlLib
  • Работа с Cookies в UrlLib
  • Составление POST-запросов
  • Разбор html через Beautiful Soup
  • Загрязнение совести

Читать далее >

Работа с UrlLib. Скрипт накрутки рекламы

Python LogoПриветствие! Сегодня напишем программу по накручиванию рекламы, которая сможет скрывать свои реальные данные (ip, user-agent, гео-положение). Хочу заметить, что всё это исключительно в учёбных целях.

В этой статье я разберу:

  • UrlLib, базовая информация
  • Подмена user-agent
  • Proxy в UrlLib
  • Анонимизация через Tor
  • Выборка элементов из массива
  • Использование библиотеки Beautiful Soup для работы с html
  • Работа с DOM в Python

Читать далее >

Основы Assembler для i8086

Здравствуйте. На предмете Архитектура ЭВМ в целях ознакомления с принципами работы компьютера нас обучили основам ассемблера под i8086 процессор (большинство современных процессоров с ним совместимы). Я подумал, что не будет лишним рассказать здесь все, о чем узнал.

Читать далее >

Локальное время на чистом С++

В этой небольшой заметке хочу написать о том, как на чистом С++ можно получить текущее время.

#include <time.h>
 
std::string getCurrentTime()
{
  time_t curTime;
  struct tm *timeInfo;
 
  time(&curTime);
  timeInfo = localtime(&curTime);
 
  char buffer[1024];
  strftime(buffer, 1024, "%d.%m.%Y %X", timeInfo);
  std::string curFormatDate = std::string(buffer);
 
  return curFormatDate;
}

Читать далее >

Работа с POP3 сервером в PHP

EMailНедавно мне попался заказ на обработку писем из почтового ящика: вытягивания нужных e-mail адресов. Всё бы прекрасно, да я никогда не работал с POP3-протоколом в PHP-скрипте.

Первый, кто пришёл на помощь — google.com. Я нашёл описание почтового стандарта “MIME” (RFC1521), и почтового протокола POP3.

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

Проверка рабочей платформы

Для начала, давайте согласуем версии инструментов, с которыми будем работать. У меня стоит самая последняя версия PHP: 5.3.2 (Это важно, так как я буду использовать ООП при решении задачи). Также ваш Apache-сервер должен быть настроен на поддержку работы с сокетами.

Читать далее >

Введение в ChaiScript

Скриптовые движки очень активно используются разработчиками в своих программах. Благодаря им можно улучшить “интерфейс” работы с информацией. Благодаря скриптовым файлам, нет нужды каждый раз перекомпилировать исходный код программы, достаточно просто передать заново скрипт для парсера, или перезапустить программу.

Также скрипты есть важной частью игровых движков. Там их используют для самых разнообразных целей:

  • Загрузка уровня
  • AI
  • Управление игровым состоянием (объектами, музыкой, …)

Применить скрипты можно практически везде, была бы фантазия и потребность в этом.

В качестве скриптового движка можно выбрать большинство скриптовых языков программирования. Самые популярные это Lua и Python. Игроделы всегда спорят, что лучше. В этой статье я хочу познакомить вас с другим, более “лёгким” скриптовым языком. Если вас всё-же интересуют вышеназванные, можно использовать lua + luabind, python + boost.python. С некоторыми из них я работал, поэтому, если кто-то захочет, я смогу описать работу и с ними.

Читать далее >

Установка размера шрифта в VIM

Vim LogoНам нужно изменить размер и тип шрифта в Vim’e. Проблема в чем, я знаю команду guifont=…. Сегодня мне понадобилось установить шрифт Consolas размером в 14. Я сделал по мануалу:

set guifont=Consolas:h14

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

set guifont=Consolas

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

Читать далее >

Введение в OgreNewt (Ogre3D + Newton Game Dynamics)

Сегодня мы познакомимся с физическим движком Newton Game Dynamics и графическим Ogre3D. Конкретно — с их связкой OgreNewt, которая написана walaber’ом.

Во время написании статьи я брал OgreNewt из svn. Версия была совместима с Newton 2.15 (последняя — 2.17). Надеюсь, автор и далее будет активно разрабатывать библиотеку. Для примера, разрушения мне придётся писать вручную.

Но начнём с самого начала — скомпилируем библиотеку. В исходниках есть project-файл для Visual Studio и файл для утилиты CMake. Для успешного билда нам нужно будет скачать сам физический движок Newton и прописать путь к нему в настройках OgreNewt. Также в зависимостях есть boost.

Надеюсь, подключить всё это вам не составит труда, иначе браться за физику рановато :). В комплекте также идут 9 демо-приложений. Именно их я хочу расписать поэтапно.

Читать далее >

Класс работы с дробями на C++

Приветствие, давно мы не шаманили на с++ :) Сегодня поговорим о небольшой олимпиадной задачке с информатики. Суть довольно проста: написать класс, который может работать с дробями. Например:

-2 5/3
*
9/10

Реализовать все 4 базовые действия над ними.

Для всего действия мы создадим 1 большой класс Fraction. Вся работа сводится до: парсим дробь из строки, сокращаем по возможности и переопределяем операторы + - / *.

Сразу же хочу выразить благодарность хорошему человеку — Илье, который не раз помогал мне с моими нубскими вопросами :) Спасибо.

Итак, сегодня мы с вами научимся переопределять операторы, писать классы, парсить строки, думать, считать :) Для начала, напишем вспомогательные функции: поиск наибольшего общего делителя и кратного (НОД/НОК). Реализовать это достаточно просто за алгоритмом Эвклида:

НОД( a, b ) = НОД( a, a mod b );
НОК( a, b ) = (a * b) / НОД( a, b );

Читать далее >

Материалы и текстуры в шейдерах с Ogre3D

Это вторая часть вводной статьи о работе с материалами и шейдерами в render-движке Ogre3D. Все 4 файла нужно скопировать (или писать прямо в них).

Первое, с чем разберемся — вертексный шейдер:

float4x4 matViewProjection;
 
struct VS_INPUT
{
  float4 Position : POSITION0;
  float2 TexCoords : TEXCOORD;
};
 
struct VS_OUTPUT
{
  float4 Position : POSITION0;
  float2 TexCoords : TEXCOORD;
};
 
VS_OUTPUT vs_main(VS_INPUT Input)
{
  VS_OUTPUT Output;
 
  Output.Position = mul(matViewProjection, Input.Position);
  Output.TexCoords = Input.TexCoords;
 
  return Output;
}

Читать далее >