Pull to refresh
82
0
Валерий @Vayun

Пользователь

Send message

Патчим процессы в Linux на лету при помощи GDB

Reading time11 min
Views15K
Техники перехвата функций в Linux хорошо известны и описаны в интернете. Наиболее простой метод заключается в написании динамической библиотеки с «функциями-клонами» и использовании механизма LD_PRELOAD для переопределения таблицы импорта на этапе загрузки процесса.

Недостаток LD_PRELOAD в том что необходимо контролировать запуск процесса. Для перехвата функций в уже работающем процессе или функций отсутствующих в таблице импорта можно использовать «сплайсинг» — запись команды перехода на перехватчик в начало перехватываемой функции.

Также известно, что в Python имеется модуль ctypes позволяющий взаимодействовать с данными и функциями языка Си (т.е. большим числом динамических библиотек имеющих Си интерфейс). Таким образом ничто не мешает перехватить функцию процесса и направить её в Python метод обёрнутый в С-callback с помощью ctypes.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments6

Экспорт истории сообщений из Skype

Reading time4 min
Views32K
Многие пользователи Skype в Linux замечали насколько неудобно там сделана работа с историей сообщений чата. Нет нормального поиска, сообщения за длительный период времени грузятся очень долго. Нет возможности экспорта в другие форматы/клиенты.

Skype для Linux хранит историю сообщений в недокументированном бинарном формате. Несмотря на то что энтузиасты расковыряли его довольно давно, еще многое остается неизвестным.

Поверхностный поиск готового решения для экспорта истории сообщений не привел к успеху. Поэтому я, собрав всю доступную информацию, написал своё.
Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments51

6 способов слияния списка списков

Reading time4 min
Views123K
Зашел тут у нас в офисе разговор как наиболее «красиво» и быстро склеить список списков в Питоне. Действительно как?

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

ВАРИАНТ1
Все знают, что элементы списка можно перебирать в цикле и, то что можно добавлять элементы в конец. Это приводит нас к первому варианту решения:
def listmerge1(lstlst):
    all=[]
    for lst in lstlst:
        for el in lst:
            all.append(el)
    return all

Мало того, что функция растянулось аж на 6 строк, так вдобавок она еще и не эффективная.
Попробуем её улучшить в обоих смыслах: скорости и красоты («pythonic way»).
Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments74

Миниотчет об участии в ICFPC 2009

Reading time7 min
Views735
ICFPC это ежегодный конкурс программистов. Здесь мой отчет об участии.

Задание описано сто раз, можно посмотреть здесь habrahabr.ru/blogs/icfpc/63279

В двух словах:
Вокруг земли крутится несколько спутников, мы управляем одним из них. Надо выполнить задания, написав серию включений двигателей. Задания проверялись на виртуальной машине-симуляторе, программы для которой предоставили организаторы.

Т.к. я не знал заранее будет ли у меня время участвовать, я оказался без команды, это серьёзно повлияло на процесс принятия решений. Было ясно, что одному выиграть очень сложно, поэтому я решил не гнаться за очками, а делать «красивое» решение даже если и будет понятно, что не успеваю. Так же по ходу дела я периодически отвлекался на интересные, но не сильно важные для получения очков вещи, о которых и напишу.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments13

Скоро ICFPC 2009

Reading time2 min
Views1.1K
В эту пятницу 26 июня стартует ежегодный конкурс программирования, International Conference on Functional Programming Contest (сокращенно ICFPC). Конкурс знаменит оригинальными заданиями, варьирующимися от «очень интересных», до «срыв башни». Не смотря на слово «функциональный» в названии, никаких ограничений на используемый язык программирования нет (абсолютно! это традиция конкурса).

В прошлом году участвовало 330 команд со всего мира. В этом году снова приглашаются все желающие.
Конкурс длится три дня (72 часа). Участвовать можно, как самому, так и командой. Есть так называемый «скоростной тур» — ответ в первые 24 часа соревнования.

Задание будет выложено в Пятницу 26 июня в 22:00:16 MSD (время Московское летнее, GMT+4) на страницу конкурса icfpcontest.org (счетчик до начала icfpcontest.org/countdown.php)

Небольшой обзор заданий за прошлые годы. Многие из них стоят того, чтобы скачать условие и покопаться самому (поверьте мне это непередаваемое удовольствие).
Читать дальше →
Total votes 36: ↑35 and ↓1+34
Comments24

Случайные числа из звуковой карты

Reading time15 min
Views13K
Многие когда-либо интересовались случайными числами. Хочу поделиться моими экспериментами по получению истинно случайных чисел с помощью «аппаратного генератора» встроенного в практически любой компьютер — звуковой карты.

При подготовке материала, я переписал свой старый Си код на Питоне, поэтому данный опус также является примером по использованию Windows DLL из Питона с использованием стандартной библиотеки ctypes.

В конце статьи сравниваются данные полученные от двух звуковых карт Realtek и Audigy 2, приведены результаты статистических тестов на случайность.

UPD Исправил пропавшие в коде нули, которые съело НЛО.
Читать дальше →
Total votes 143: ↑137 and ↓6+131
Comments72

Information

Rating
Does not participate
Location
Berlin, Berlin, Германия
Date of birth
Registered
Activity