Pull to refresh
0
0
Артем Сененко @slima4

User

Send message

Кодим безумный пассивный сниффер в виде модуля для Python

Reading time6 min
Views37K


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

Итак, сегодня мы вот что наколдуем:

1. Реализуем простейший пассивный перехватчик пакетов для TCP и UDP
2. Засунем его в C-библиотеку в виде расширения для Python
3. Приделаем ко всему этому интерфейс итератора, дабы байты сыпались, как из рога изобилия
4.…
5. PROFIT!
Берите стул, садитесь ближе к камину
Total votes 66: ↑60 and ↓6+54
Comments15

Valve: как я здесь оказался, на что это похоже и чем я здесь занимаюсь

Reading time14 min
Views63K
Автор оригинальной статьи — Майкл Эбраш, человек и пароход. Для тех, кому лень изучать википедию, отмечу, что это программист с более чем 30-летним стажем работы, который в свое время помог Кармаку сделать Quake, разработал GDI для Windows NT, приложил руку к созданию первых двух версий Xbox, а сейчас работает в R&D-отделе компании Valve.
В своей заметке он вспоминает, как зарождалась индустрия 3D-игр вообще и Valve в частности, рассказывает про свой опыт работы в различных корпорациях, приоткрывает завесу внутренней кухни Valve и ищет новых сотрудников. Статья большая, и я посчитал ее достаточно интересной для того, чтобы перевести на хабр.





Всё началось с Лавины*.

Если бы я не прочел её и не влюбился в идею Метавселенной, если бы она не заставила меня представить, насколько распределенная 3D сеть близка к воплощению в жизнь, если бы я не подумал я могу сделать это и, что более важно, я хочу сделать это, я бы никогда не встал на путь, который в конечном счете привел меня в Valve.

В 1994 году я уже несколько лет как работал на Microsoft. Однажды вечером, когда моя дочка рассматривала книги в магазине Little Professor в Sammamish Plateau, мне посчастливилось заметить Лавину на полке. Я взял книжку, прочитал первые страницы, решил купить и в итоге проглотил её за день. Параллельно я начал задумываться о том, что 80 процентов описанного в ней осуществимо прямо сейчас, и мне захотелось реализовать это сильнее, чем когда-либо вообще хотелось сделать что-то с компьютером — я всю жизнь читал научную фантастику, и вдруг мне выпал шанс превратить её в реальность. Так я попытался начать в Microsoft проект по созданию технологии сетевого 3D.

Читать дальше →
Total votes 222: ↑220 and ↓2+218
Comments98

Внутренность boolinq для взрослых

Reading time6 min
Views2.2K
Статья для тех, кому интересна реализация библиотеки boolinq из предыдущего моего поста. В этой статье я копну в исходники и покажу несколько интересных приёмов, которые позволили сделать библиотеку «ленивой» и расширяемой.


Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments17

Функциональное программирование для всех

Reading time33 min
Views353K

Доброго времени суток. Это статья — перевод заинтересовавшего меня поста в блоге аспиранта Университета штата Нью-Йорк в Стоуни-Брук. Статья в доступной форме описывает основные концепции функционального программирования, их преимущества и недостатки. Думаю она будет полезна широкому кругу читателей, которые сомневаются, нужно ли им углубляться в мир функционального программирования или нет. Пожелания, предложения и замечания по переводу и терминологии принимаются по личной почте.

Мнение переводчика может иногда не совпадать с мнением автора, но переводить статью было крайне занимательно.

UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
Читать дальше →
Total votes 188: ↑181 and ↓7+174
Comments151

Unbiased rendering (рендеринг без допущений)

Reading time7 min
Views53K
В компьютерной графике, рендеринг без допущений относится к технике рендеринга, которая не вносит в расчет систематических ошибок, предположений или погрешностей. Изображение получается таким, каким должно быть в природе, а рендер не имеет настроек качества поверхностей либо источников света.


Изображение отрендерено с помощью Maxwell Render.

Читать дальше →
Total votes 165: ↑161 and ↓4+157
Comments70

60+ средств для разработки мобильных приложений

Reading time19 min
Views149K
Появилось желание сделать свое приложение — быстро дешево и максимально полезно. Начал собирать информацию о современных инструментах разработки. Чтобы не потерять, а так же получить отзывы, мнения, комментарии и вообще любую полезную информацию, оформил в виде статьи.
Планирую использовать некоторые инструменты, и позже написать по ним более развернутый обзор. Итак, встречайте

1. Appmakr
appmakr.com
Платформы: iOS
Стоимость: free-$999, FREE- if you submit yourself to your own app store
Дополнительные услуги: Бесплатный доступ к ресурсам сайта.
Описание: Appmakr.com — веб-приложение, которое поможет вам создать приложения для айфона быстро и просто.
Замечания: Если вы не знаете как создать приложение для айфона, вы можете запросить помощь по телефону.
Владельцы могут размещать рекламу в своих приложениях и зарабатывать на ней.
Читать дальше →
Total votes 106: ↑79 and ↓27+52
Comments25

Практика работы с сигналами

Reading time6 min
Views110K
Хочу запечатлеть небольшой опыт работы с сигналами в Linux. Ниже будут представлены примеры использования наиболее значимых конструкций в этой области. Постараюсь разложить все по отдельным полочкам, чтобы всегда было легко глянуть и вспомнить, что и как использовать.
Читать дальше →
Total votes 73: ↑62 and ↓11+51
Comments61

Коды возврата & исключения

Reading time3 min
Views18K
Замечательные статьи публиковались в последнее время, хотелось бы добавить ещё несколько абзацев по данной теме.

Уважаемые авторы предыдущих топиков как-то упускали тот момент (или мне показалось? или это само-собой подразумевается?) что exceptions возникли как инструмент для решения весьма утилитарной задачи —
Читать дальше →
Total votes 70: ↑64 and ↓6+58
Comments53

Реализация exceptions на plain C

Reading time4 min
Views6.9K
Продолжение вот этой статьи habrahabr.ru/post/131212, где я собирался показать, как «и ошибки удобно обрабатывать и exceptions при этом не использовать», да всё руки не доходили.

Итак, будем считать, что у нас ситуация, что «настоящие C++ exceptions» использовать нельзя — например, языком разработки является C или компилятор С++ для нашей платформы не поддерживает exceptions (или формально поддерживает, а реально этим пользоваться нельзя). Это, конечно, нетипично для desktop приложений, но вполне обычно для embedded разработки.
Читать дальше →
Total votes 47: ↑39 and ↓8+31
Comments50

Началось тестирование Qt 5 Alpha

Reading time6 min
Views11K
Мы рады сообщить о выпуске альфа-версии Qt 5 — первого значительного релиза Qt с момента запуска сообщества Qt Project. Команда разработчиков Nokia благодарит всех энтузиастов этого комьюнити, принимающих непосредственное участие в создании Qt 5 Alpha, ведь многие возможности Qt 5 стали доступны именно благодаря их сплоченной работе. Нам очень приятно, что Qt Project стал местом, где люди объединяются, чтобы совместными усилиями развивать любимый фреймворк.

Основной целью альфа-версии Qt 5 является получение фидбека от разработчиков, который поможет улучшить все последующие релизы. В альфа-релизе Qt 5 акцент ставился на предоставлении основных модулей Qt Essentials, формирующих базовый функционал Qt 5. Это кросс-платформенные модули, достаточные для создания большинства приложений.

В виде бинарного пакета Qt 5 Alpha распространяться не будет, но для самостоятельной компиляции доступны исходные файлы. Разумеется, доступна и инструкция по компиляции.

Разработка Qt 5 началась примерно 9 месяцев назад, преследуя несколько основных целей, описанных в мае прошлого года директором по развитию Qt в Nokia Ларсом Ноллом. Ниже будет список этих целей и того, что уже было достигнуто.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments34

Рендеринг наоборот. Преобразование Хафа на GPU

Reading time10 min
Views19K
title

Преобразование Хафа служит для поиска на изображении фигур, заданных аналитически: прямых, окружностей и любых других, для которых вы сможете придумать уравнение с небольшим количеством параметров. О преобразовании Хафа написано немало, и данная статья не ставит цели подробно осветить все аспекты. Я лишь объясню общий принцип, останавливаясь на особенностях, мешающих его реализации на GPU «в лоб» и, конечно же, предложу решение. Те, кто знают проблемы и хотят сразу видеть решение, могут пропустить пару-тройку разделов.

Читать дальше →
Total votes 77: ↑76 and ↓1+75
Comments9

Особенности работы с Multicast

Reading time4 min
Views70K
Хочу поделиться небольшим опытом работы с технологией групповой передачи данных, или иначе UDP Multicast, и проблемой особенностью, которая возникает при написании кроссплатформенного кода.
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments4

Простой скринсейвер с использованием библиотеки CImg, C++

Reading time4 min
Views7.6K
Доброго времени суток!
На этой неделе опубликовал статью, где привел краткое описание основных методов библиотеки CImg и разобрал простейший пример. Не скрою, пост был предназначен для инвайта, но тем не менее, старался сделать его как можно более информативным. Собственно говоря, как и было запланировано ранее и учитывая пожелание skor, решил попробовать написать элементарный скринсейвер с применением CImg. Стало интересно — добро пожаловать под кат!
Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments8

Оптимизация для CPU: как найти черную кошку в темной комнате

Reading time9 min
Views27K

Метод недопустимой операции:
Разделить кошку на ноль,
после чего она станет бесконечно большой,
так что её будет невозможно упустить.

[АбсурдопедиЯ]

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

Итак, имеем задачу последовательной перестановки байтов в каждом слове массива (big-endian <-> little-endian) и суммирования всех слов в одно (reduction). Оставим пока в стороне задачу распараллеливания, ибо ее решение близко к тривиальному, и для нас пока не представляет интереса.

image

Читать дальше →
Total votes 61: ↑58 and ↓3+55
Comments36

Восемь принципов программирования, которые могут облегчить вам жизнь

Reading time3 min
Views48K
Одна из главных проблем в разработке программного обеспечения – борьба с возрастающей сложностью системы. Решением этой проблемы занимаются с времен появления первых программ. Результатами являются языки, всё более упрощающие взаимодействие с машиной, парадигмы программирования вроде ООП, паттерны. В этой статье будут рассмотрены принципы программирования, позволяющие уменьшить сложность и облегчить сопровождение системы.
Читать дальше →
Total votes 75: ↑47 and ↓28+19
Comments39

Пользовательские литералы в C++11

Reading time5 min
Views40K
Более полугода прошло с момента принятия стандарта C++11. В сети можно найти много материалов посвященных новому стандарту, однако большинство из них касаются самых простых возможностей, самых сладких. Я говорю о лямбда-функциях, системе автоматического выведения типов, новых спецификаторах, умных указателях и т.д. Да, это действительно интересные вещи и, можно смело сказать, они одни из самых полезных и часто используемых. Но на них свет клином не сошелся, и новенький C++11 предлагает нам не только их.

Ниже я хочу рассказать о пользовательских литералах — весьма полезном средстве, хоть и не в повседневных целях.
Читать дальше →
Total votes 96: ↑94 and ↓2+92
Comments18

Извлекаем мета-информацию из Си/C++ кода при помощи (py)gccxml

Reading time5 min
Views5.4K
До появления gccxml, был только один способ извлечь мета-информацию из Си/С++ кода. Для начала, необходимо было написать парсер, способный справиться с грамматикой языка С++. Это не та задача, которую вы обычно решаете дома за выходные.

Теперь, писать парсер больше не нужно. Модифицированный компилятор gcc анализирует ваш код и выдает описание всех пространств имен, типов, классов и функций, встреченных в программе. Данные выдаются в формате XML и в принципе готовы для дальнейшего автоматического анализа и обработки.

Для разбора XML данных, полученных от gccxml, пригодится библиотека pygccxml. Это не просто ридер формата gccxml — библиотека предоставляет интерфейсы для изучения собранных метаданных; в частности есть готовые функции, отвечающие на вопросы вроде «совместимы ли типы T1 и T2?» или «наследует ли класс C1 от C2?». Библиотека написана на языке Python.

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments16

Фанаты собрали уже $1.3M на Wasteland 2

Reading time3 min
Views20K
imageБрайан Фарго (основатель Interplay) уже несколько лет хочет создать продолжение игры Wasteland (1988). В своё время игра стала прародительницей жанра постапокалиптических RPG, в первую очередь — культовых Fallout 1 и 2. Однако, найти издателя для продолжения оказалось непросто.

Несколько дней назад Брайан от лица его компании InXile начал проект по сбору средств для создания Wasteland 2 при помощи сервиса KickStarter.

«Пожалуй, это последний шанс создать продолжение Wasteland. Мы пытались убедить издателей не один раз, но они отказывались. Они не нашли ничего интересного в крепкой игре старой школы.»

Необходимая сумма в $900'000 была собрана за рекордные 42 часа.
Читать дальше →
Total votes 100: ↑96 and ↓4+92
Comments125

Unreal engine 3 портирован на flash

Reading time1 min
Views6.9K
image

Посмотреть альфа-демку можно на unrealengine.com, весит она метров 50, полноэкранного режима пока нет.

Помимо molehill, во всю используется alchemy2, поэтому требуется flash player 11.2, который можно скачать в adobe labs.
Total votes 90: ↑74 and ↓16+58
Comments119

Синхронная и асинхронная загрузка изображения из сети с последующей обработкой

Reading time10 min
Views11K
Доброго всем хабрадня!

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


Как будем загружать?


Для загрузки изображений мы будем использовать QNetworkAccessManager и QEventLoop, а так же немного мета-объектов. Загружать будем по HTTP изображение в любом формате, из поддерживаемых Qt. Ну, ещё будем обрабатывать редиректы.

Как обрабатывать-то будем?


Есть замечательный класс QGraphicsEffect с подклассами. Но мы с ними работать в рамках данной статьи не будем, смиритесь! И я даже объясню почему. К примеру, в Qt 4.8.0 эти эффекты ведут к крашу приложения в Mac OS X 10.7.+, а в Qt 4.7.4 в той же системе они вообще не работают. Уж не знаю, как так вышло, но багу в багтрекере Qt я поставил.

Значит, будем создавать свой класс для обработки изображений. Он будет у нас уметь слудющее:
  • Переводить изображение в оттенки серого
  • Колоризировать (как это по русски-то сказать?)
  • Добавлять тень
  • Менять прозрачность
  • Вращать вокруг центра
  • Квадратизировать
  • Квадратизировать со скруглением углов
  • Как бонус, научимся считывать пользовательские цвета в формате #RRGGBBAA

Сразу отмечу, что полный код тестового проекта можно скачать на гитхабе, ссылка в конце статьи.
Поехали!
Total votes 44: ↑44 and ↓0+44
Comments24

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity