воскресенье, 18 января 2015 г.

Как заставить работать PEAR в XAMPP

1. В C:\xampp\php\pear.bat нужно добавить строку (там в начале файла есть несколько аналогичных - после них и добавляйте) источник
IF "%PHP_PEAR_SYSCONF_DIR%"=="" SET "PHP_PEAR_SYSCONF_DIR=C:\xampp\php"
2. Открываете консоль в папке C:\xampp\php\ и вводите команды: источник
pear config-set doc_dir C:\xampp\php\pear\docs
pear config-set cfg_dir C:\xampp\php\pear\cfg
pear config-set data_dir C:\xampp\php\pear\data
pear config-set cache_dir C:\xampp\php\pear\cache
pear config-set download_dir C:\xampp\php\pear\download
pear config-set temp_dir C:\xampp\php\pear\temp
pear config-set test_dir C:\xampp\php\pear\tests
pear config-set www_dir C:\xampp\php\pear\www
Все, после этого PEAR должен заработать.
суббота, 20 октября 2012 г.

Что такое NCrunch

NCrunch — это расширение для Visual Studio, которое автоматически запускает тесты. Причем для этого даже не обязательно сохранять файл. Все запускается на лету. Прошел тест или нет — это отображается сразу в редакторе. Так же отображается покрытие кода и узкие места по производительности.

Материалы по теме:
Альтернативы:
четверг, 27 сентября 2012 г.

System.Web.Razor для SimpleBrowser

Во время компиляции SimpleBrowser понадобится библиотека System.Web.Razor. Чтобы ее получить, достаточно установить ASP.NET MVC 3. Весит где-то 20 мегабайт. После установки сразу должно все скомпилироваться (может быть нужно будет перезагрузить студию).

Побеждаем NCrunch: "Невозможно загрузить файл или сборку"

Иногда бывает так, что проект компилируется, запускается, тесты через visual studio работают, а вот NCrunch не хочет работать и выдает ошибку:
"C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamTest\Microsoft.TeamTest.targets (14): Невозможно загрузить файл или сборку "Project2, Version=0.5.0.0, Culture=neutral, PublicKeyToken=null" или один из зависимых от них компонентов. Не удается найти указанный файл."
Т.е. он не может найти какой-то там файл и из-за этого не удается скомпилировать проект. В этом случае:
  1. Меню NCrunch → Configuration → All solutions. И меняем настройки
    Log to output window = True (по-умолчанию False),
    Logging verbosity = Detailed (по-умолчанию Summary).
  2. Меню View → Output. Там выбираем "Show output from" = NCrunch Output.
  3. Если надо, то в окне NCrunch Tests жмем правой кнопкой по проблемному проекту → Rebuild...
  4. Теперь выделяем весь лог, копируем и вставляем в какой-нибудь текстовый редактор.
Там может быть что-то типа такого: 
Could not resolve this reference. Could not locate the assembly "SimpleBrowser, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
 И далее будут указаны места, в которых он искал этот файл. Тогда:
  1. Идем в NCrunch → Configuration. Выбираем тот проект, про который он писал в самой первой ошибке "невозможно загрузить файл или сборку..." (у меня это Project2). 
  2. Additional files to include → Жмем кнопку "..." и добавляем недостающие файлы. Обычно они уже есть в папке bin\Debug.
После этого все должно нормально работать.
воскресенье, 11 марта 2012 г.

Serialize CookieContainer to string

Как сериализовать CookieContainer в строку, а затем получить его обратно.
private static string SerializeCookiesToString(CookieContainer cookieContainer)
{
    using (var stream = new MemoryStream())
    {
        try
        {
            new BinaryFormatter().Serialize(stream, cookieContainer);
            return Convert.ToBase64String(stream.ToArray());
        }
        catch (Exception)
        {
            return string.Empty;
        }
    }
}

private static CookieContainer DeSerializeCookiesFromString(string cookies)
{
    try
    {
        using (var stream = new MemoryStream(Convert.FromBase64String(cookies)))
        {
            return (CookieContainer)new BinaryFormatter().Deserialize(stream);
        }
    }
    catch (Exception)
    {
        return new CookieContainer();
    }
}
понедельник, 19 сентября 2011 г.

Как в javascript переименовать функцию

Переименовать уже существующую функцию не так-то просто. Но возможно:
// при помощи этой функции будем переименовывать
Object.defineProperty(
    Object.prototype, 
    'renameProperty',
    {
        writable : false, // Cannot alter this property
        enumerable : false, // Will not show up in a for-in loop.
        configurable : false, // Cannot be deleted via the delete operator
        value : function (oldName, newName) {
            // Check for the old property name to 
            // avoid a ReferenceError in strict mode.
            if (this.hasOwnProperty(oldName)) {
                this[newName] = this[oldName];
                delete this[oldName];
            }
            return this;
        }
    }
);

// сам пример. переименовываем функцию NIRV.repaintMain в NIRV.repaintMain2
NIRV.renameProperty("repaintMain", "repaintMain2");
NIRV.repaintMain = function() {
  NIRV.repaintMain2();
  $("li.task.completed").each(AddReaddButton);
};
Этот вариант может не везде работать. Я его взял здесь. Там есть и другая функция для переименования.
среда, 31 августа 2011 г.

Как в javascript обернуть функцию

Однажды мне для юзерскрипта потребовалось обернуть функцию. Вот есть функция repaintMain. Мне нужно обернуть ее, т.е. чтобы когда она вызывается, то сперва бы вызывался ее оригинальный код, а потом мой.

Оказывается, в джаваскрипте это делается довольно просто:
repaintMain2 = repaintMain;
repaintMain = function() {
  repaintMain2.apply(this, arguments);;
  $("li.task.completed").each(AddReaddButton);
};
Узнал об этом способе здесь.

Еще есть способ оборачивания через переименование функции.

Кроме того, есть довольно продвинутые способы оборачивания функции. Которыми можно пользоваться вот так:
var beforeExecute = function() { ... }
var afterExecute = function() { ... }

myFunc = wrap(myFunc, beforeExecute, afterExecute);