четверг, 17 октября 2013 г.

Как определить запрос из tor-сети

Для определения ip-адреса из tor-сетки можно послать запрос для A-записи, вида
<reversed ip>.<port>.<addr>.ip-port.exitlist.torproject.org

вторник, 30 июля 2013 г.

Xhprof на Ubuntu 10.04

Возникла необходимость поднять профайлинг для проекта на локальном серевере под Ubuntu 10.04
Выбор само собой пал на Xhprof. Конечной целью было получение графическое отображения графа вызовов функций.

Что было сделано для этого?

вторник, 2 июля 2013 г.

Настройка двух мониторов в Ubuntu

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

воскресенье, 24 марта 2013 г.

Lazarus. Подключение к Firebird DB

Для работы с Firebird DB в IDE Lazarus есть уже готовые компоненты. Используя их, можно успешно проводить sql-транзакции, отображать результат на стандартных визуальных компонентах.

среда, 13 марта 2013 г.

TDD with PhpStorm. Class 'PHPUnit_TextUI_ResultPrinter' not found

Обновившись на новую версию PhpStorm обнаружил, что мои unittest отваливаются с ошибкой
PHP Fatal error:  Class 'PHPUnit_TextUI_ResultPrinter' not found
Перерыв Интернеты в поисках решения, в итоге нашел следующие команды, которые помогли:
pear channel-discover pear.symfony.com
pear install pear.symfony.com/Yaml
pear install --alldeps pear.phpunit.de/PHPUnit
Вполне возможно, достаточно последней команды:)

понедельник, 11 марта 2013 г.

GIT. Создание ветки

В своей работе при создании очередной ветки в GIT использую простой bash-скрипт:
#!/bin/bash

if [ $# -lt 1 ] || [ $# -gt 2 ]; then
 echo 1>&2 Usage: $0 [-c] branch_name
 exit 127
fi

if [ $# -eq 2 ] && [ $1 == "-c" ]; then
 BNAME='HEAD'
 NAME=$2
else
 BNAME='master'
 NAME=$1
fi

git pull
git push origin ${BNAME}:refs/heads/$NAME
git fetch origin
git checkout --track -b $NAME origin/$NAME

воскресенье, 10 марта 2013 г.

Firebird DB: создание простого primary key auto increment

Проблема

В Firebird по-умолчанию невозможен автоинкремент первичных ключей, как это, например, возможно в MySQL.

Для реализации auto increment для первичного ключа будем использовать триггеры.

вторник, 5 марта 2013 г.

Javascript. Остановка setTimeout в рекурсивных функциях

Задача

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

среда, 27 февраля 2013 г.

Git постоянно требует ввести passphrase?

Так уж повелось, что при работе с git (с консоли на Ubuntu 10.04) любое мое более ли менее серьезное телодвижение (pull, push,...) начинается с ввода passphrase.

вторник, 26 февраля 2013 г.

jQuery deferred animation

Анимация

Альтернативным и более гибким использованием колбэков для jQuery-методов анимации является deferred-технология:

воскресенье, 24 февраля 2013 г.

Javascript. Установка и чтение данных в многомерных хэшах

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