Показаны сообщения с ярлыком howto. Показать все сообщения
Показаны сообщения с ярлыком howto. Показать все сообщения

четверг, 5 ноября 2009 г.

Рис с битыми пикселами

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

Рис моем и кладем на политую маслом сковородку с высоким бортиком. Постоянно помешивая, обжариваем до тех пор, пока влага полностью не испарится и самые первые зернышки не начнут подрумяниваться. Потом высыпаем пакет овощей и, не забывая помешивать, обжариваем далее до тех пор, пока не перестанет выделяться сок из овощей (да, и посолить не забудьте). После этого заливаем всё водой и тушим под крышкой. Воду, конечно, лучше добавлять постепенно маленькими порциями, но тогда придется внимательно следить, чтобы ничего не пригорело, иначе вся магия моментально исчезнет.

Научное обоснование этого рецепта заключается в следующем:

  1. жареное — завсегда вкуснее, чем вареное;
  2. рис активно впитывает влагу, поэтому если это будет не просто вода, а ароматные овощные соки — это труъ :-)

ЗЫ: Ну и по поводу названия: готовое блюдо представляет собой рис с красными, зелеными, желтыми и оранжевыми вкраплениями. А голубых, синих и фиолетовых нет, потому что все синие пикселы, видимо, оказались битые :-)

Creative Commons License

среда, 9 сентября 2009 г.

Канцелярские скрепки против рака

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

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

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

Creative Commons License

понедельник, 8 июня 2009 г.

Q&As

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

Но здесь есть одна проблема — надвигающийся конец света, а в данном случае, скорее, lite-вариант в лице Мирового Финансового Кризиса, который производители продукции почему-то считают достойным оправданием для снижения качества производимой продукции. Да, я помню, каковы были на вкус бутилированные квасы в прошлом году, и готов утверждать, что это не идет ни в какое сравнение с безвкусной жидкостью, пахнущей уксусом, которую продают сейчас под теми же самыми этикетками.

В общем, в качестве одной из мер личного противодействия наступлению конца света, предлагаю всем заняться домашним квасоварением. Во-первых, это очень просто и не занимает много времени, а во-вторых, качество получаемого напитка на порядок выше промышленного. Серьезно.

Итак, для начала вам понадобится ведро. Если нет ведра — подойдет и большая кастрюля, литров на пять. Ну или на крайний случай — пара трехлитровых банок. Дело в том, что от меньших объемов толку не будет, а будут одни отходы.

Итак, допустим, что емкость найдена. Далее жителям Питера следует отправиться в булочную, а всем остальным — в обычный хлебный магазин :-) Там продается так называемая закваска для кваса — по сути это банальное ржано-пшеничное тесто сероватого цвета по цене 20 р. за полукилограммовый пакет. В каждую трехлитровую банку кладем по 250 г, добавляем стакан сахара и заливаем теплой водой. Через сутки процеживаем продукт через марлю, многоразовый пластиковый фильтр от кофеварки, если есть, или хотя бы через сито. Разливаем по «полторашкам» и убираем в холодильник, в самый теплый «овощной» отсек на пару дней.

За это время процессы брожения закончатся, вкус гармонизируется, а вероятность того, что привыкшему к стерильным напиткам городскому жителю вышибет днище после стакана такого продукта — она значительно уменьшится :-)

При такой технологии изготовления получается «настоящий» квас, в котором процессы молочно- и уксуснокислого брожения преобладают на спиртовым. В общем, квас «Бабушкин рецепт», дешево и сердито, для окрошки со сметаной подойдет идеально, но радости никакой.

Чтобы квас получился не только вкусным и полезным, но и веселым и позитивным, нужно поступить немного по-другому. В хлебобулочном отделе мы покупаем не тесто, а «сухой квас». По сути это молотые ржано-пшеничные сухарики, в которые, если повезет, будет добавлен ржаной солод (читаем состав на упаковке). Можно, конечно, высушить и измельчить пару буханок, но смысла в этом я не вижу: 30 р. за 0,5 кг — и никакой мороки. Кроме сухариков понадобятся дрожжи. Они бывают сухие в пакетиках — это ерунда какая-то, нужны «прессованные», мягкие, напоминающие пластит. 100 г вполне хватит.

250 г сухариков заливаем литром кипящей воды и настаиваем около часа. Разливаем поровну в банки, доливаем теплой водой, добавляем по 25–30 г дрожжей и сахар. Арифметика тут простая: сахар перерабатывается в спирт с коэффициентом 0,5, так что по 200 г в каждую банку будет вполне достаточно. Если все было сделано правильно, то менее чем через час все это дело начнет активно бродить, пузыриться и тихонько жужжать. «Неправильно» тут что-то сделать маловероятно, но в крайнем случае можно будет добавить еще дрожжей. Сбраживаем опять же сутки, процеживаем, разливаем по полторахам. Сутки в холодильнике (в самом низу, где потеплее) — и прекрасный напиток, годящийся как для утоления жажды, так и для опохмела, можно считать готовым. Удачи!

Creative Commons License

пятница, 3 апреля 2009 г.

XMPP OpenID и делегация для ленивых

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

Итак, первый сервис — myid.asemantics.com, гейтвей, связывающий OpenID и Jabber. Это не первый сервис подобного рода, но учитывая, что тот первый расположен где-то на Занзибаре, использование этого мне кажется более правильным :-) Пользоваться просто. Если при авторизации где-либо вы введете OpenID вида myid.asemantics.com/your@jabber.com, то к вам постучится бот, скажет название этого сайта и спросит, хотите ли вы авторизоваться. Ответив «ok», вы подтвердите авторизацию. Если бот не стучится или авторизации не происходит, значит у GTalk снова какие-то проблемы с обработкой подписки, и в этом случае может помочь «регистрация» — просто введите свой JID на вышеупомянутом сайте, и процесс запроса авторизации будет запущен принудительно (хотя в моем случае всё сработало без танцев с бубном).

Итак, у нас есть OpenID с подтверждением через джаббер. Но наверняка все согласятся, что выглядит он не лучшим образом и запоминается далеко не сразу. Для того, чтобы избежать подобных ситуаций, в стандарте OpenID предусмотрен механизм делигирования, когда указанный OpenID и подтверджающий его сервер — это совсем разные вещи. То есть, если у вас есть некая HTML-страница, то прописав в заголовке два тега, вы сообщите тем самым проверяющей стороне, что, дескать, OpenID у меня такой, но провайдер не здесь, а во-о-н там:-)

<link rel="openid.server" href="http://myprovider.com/openid/server" />
<link rel="openid.delegate" href="http://user.anotherserver.com/" />

Подробнее можно почитать тут wiki2008.openid.net, а теперь представим ситуацию, что у вас нет такой странички. Да-да, домен есть, а странички нет. Такое тоже иногда бывает :-) Ну или всё есть, но по какой-то причине выяснять адрес OpenID-провайдера и что-то кодить не хочется. Предположим, что вы пьяны в стельку :-D Так вот, в этом случае на помощь приходит другой сервис: www.own-id.com. Он делает как раз то, что написано выше: выясняет адрес OpenID-провайдера и генерирует страничку с нужными тегами. Для того, чтобы он заработал, вам нужно в DNS, управляющем вашим доменом, прописать CNAME-запись, указывающую на www.own-id.com, а после обновления зайти по этому адресу, и вписать свой OpenID.

Оставя в стороне рассуждения на тему прописывания CNAME-записей в состоянии «пьян встельку», скажу лишь, что, таки-да, можно придумать себе ситуацию, когда это может понадобиться, лично я сделал именно так (поскольку хостинга у меня нет, а блог с blogspot.com привязан к домену точно так же через CNAME) и теперь могу авторизоваться на сайтах, поддерживающих OpenID, отправляя подтверждение через Jabber.

В заключении пара слов о самом факте необходимости связывания OpenID и XMPP. На самом деле, конечно, явных преимуществ у этого способа нет (если вы не Jabber-агитатор, и сама аббревиатура XMPP вызывает у вас чувство глубокого удовлетворения :-) Плюсов немного: это чуть быстрее, потребляет чуть меньше трафика, а кроме того, более секьюрно в ситуациях, когда компьютер чужой, а джаббер есть в мобилке. Минусы тоже есть: нельзя «запомнить» авторизацию для какого-либо сайта (писать «ok» нужно каждый раз), а если кто-то захочет вас поанноить — он может начать авторизоваться где-то под вашим логином, при этом запросы будут приходить вам.

Creative Commons License

воскресенье, 22 марта 2009 г.

Дави его!

Помните Arj? Это архиватор был такой в стародавние времена :-) Если помните, то помните наверняка и про интересную особенность тогдашних архиваторов: если файл сжать сначала одним (например, arj), а потом другим (скажем, zip), то итоговый размер получался меньше, чем при использовании каждого из этих архиваторов по отдельности (или одного и того же два раза). Причина этого заключалась в несовершенстве алгоритмов сжатия. Принцип работы любого архиватора заключается в устранении избыточности информации: как правило в любом файле некоторые байты (или даже группы байтов) повторяются чаще, нежели остальные. Архиватор заменяет их более короткими блоками, в результате чего размер файла становится меньше, а вместо, например, осмысленного текста он теперь представляет псевдослучайную последовательность непонятных символов. Так вот, когда развитие алгоритмов сжатия только начиналось, архиваторы устраняли избыточность не полностью (хотя сами «считали», что уже как бы всё), при этом другой алгоритм мог «дожать» файл ещё чуть-чуть.

В настоящий момент все современные архиваторы используют возможности своих алгоритмов по максимуму, и вышеописанный способ не работает (по этой же причине не сжимаются картинки в jpeg или фильмы: сжатые картинки и фильмы по сути своей являются архивами, а с точки зрения другого архиватора — случайной последовательностью). Однако, в некоторых случаях архивация файлов в два этапа позволяет уменьшить размер архива в несколько (!) раз. Об этом и пойдет речь в статье.

Самым популярным сейчас является архиватор (точнее, формат) Zip. Самым популярным, но далеко не самым лучшим, однако, если вы хотите, чтобы файл можно было распаковать всегда и везде, лучше использовать именно его. Во всех хороших архиваторах присутствует возможность создания «непрерывного архива», когда несколько упаковываемых файлов обрабатываются как единый поток. При упаковке однотипных файлов это позволяет уменьшить размер архива за счет того, что степень избыточности у них похожая и повторяющиеся фрагменты одинаковые. В Zip такой возможности нет, все файлы он сжимает по отдельности. Поэтому, если вам нужно упаковать несколько файлов, есть смысл предварительно записать их последовательно друг за другом. Логичнее и проще всего сделать это средствами самого архиватора: просто упакуйте файлы с настройкой «Без сжатия», содержимое их при этом не изменится, но вместо нескольких файлов получится один. После этого полученный архив упакуйте с максимальными настройками. Если файлов много и они похожи (html-страницы, например), разница между обычной упаковкой и описанным способом может быть очень существенной.

Но это ещё не всё :-) Если вы пользуетесь, например, пакетом OpenOffice.org, то, возможно, знаете, что документы в нём представляют собой несколько xml-файлов, упакованных в обычный zip-архив с измененным расширением. Однако, степень сжатия у встроенного в OpenOffice алгоритма меньше, чем у отдельных архиваторов, кроме того, zip-архивы имеют описанный выше недостаток, а сжать документ OpenOffice другим архиватором не получится (потому что это уже архив). В этом случае, если вдруг очень нужно сжать документ «по максимуму», можно пойти на хитрость.

  • Переименовываем, например, .odt файл в.zip.
  • Распаковываем его содержимое, запаковываем обратно с настройкой «Без сжатия» и переименовываем обратно в .odt: размер файла увеличится, но он будет продолжать нормально открываться, потому что это всё-таки zip-архив.
  • Если теперь запаковать его хорошим архиватором (например, 7-zip*), то размер полученного файла будет существенно меньше, чем был изначально.

Конечно, описанные здесь хитрости не рассчитаны для ежедневного использования, но в случае, когда, например, файл «не полазит» в почту — кое-что вполне может пригодиться.

__________
* 7-zip не имеет (почти) ничего общего с обычным zip-ом, это архиватор, который сжимает лучше, чем любимый в народе Rar, но при этом он бесплатный, открытый и кросс-платформенный, а кроме того, умеет (очень хорошо) сжимать в zip и распаковывает большинство популярных форматов. Настоятельно рекомендуется к использованию.

Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial 3.0 Unported License.

вторник, 2 сентября 2008 г.

Я.Онлайн по пунктам: я оффлайн в результате

Наверняка те, кто интересуется развитием технологии Jabber и всего что с этим связано, уже слышали о том, что компания Яндекс выпустила наконец-таки официальный клиент для своего Jabber-сервера, неофициально функционирующего уже чуть менее чем год. Для тех же, кто не в курсе событий, поясню: компания Яндекс выпустила наконец-таки официальный клиент для своего Jabber-сервера, неофициально функционирующего уже чуть менее чем год.

Несмотря на то, что Jabber-аккаунтом на сервере Яндекса я по ряду причин не пользуюсь, сугубо в целях тестирования, а также ради праздного интереса вышеупомянутый клиент я попытался установить. Далее приводится последовательность действий, которые нужно для этого произвести, поэтапно и по пунктам:

  1. Зайти на http://online.yandex.ru и скачать программу-клиент. 7,5 Мб, и она не кроссплатформенная. Отдельный превед тем, кто оплачивает трафик помегабайтно.
  2. Запустить установку, и прочитать сообщение о том, что необходим Adobe Flash 8-й версии.
  3. ...Хотя в системе установлен Flash 9.
  4. Зайти на сайт Adobe и скачать свежую версию Flash.
  5. Установить ее.
  6. Запустить установку Я.Онлайн, и прочитать сообщение о том, что необходим Adobe Flash 8-й версии.
  7. Заподозрить, что что-то тут не так.
  8. Догадаться, что Adobe Flash для Internet Explorer невозможно скачать с их сайта другим браузером.
  9. ...Хотя Flash 9 установлен и работает.
  10. Запустить Internet Explorer и попытаться закачать Adobe Flash.
  11. После пяти минут ожидания заподозрить, что что-то здесь не так.
  12. Отключить фаерволл, и попытаться закачать его еще раз.
  13. Включить обратно фаерволл.
  14. Установить Я.Онлайн.
  15. Запустить его, и с удивлением обнаружить, что программа, представляющаяся Jabber-клиентом, пытается ломиться на кучу разных адерсов и портов, не имеющих к Джабберу ни малейшего отношения.
  16. Посмотреть, какую красивую фигню программисты Яндекса слабали на Flash 8-й версии.
  17. ...И она умеет показывать почту, погоду и пробки.
  18. ...Но занимет 30 метров оперативки.
  19. ...И несмотря на это позволяет установить всего два (!) статуса: «доступен» и «занят».
  20. ...Хотя работает, как заявляют авторы, по протоколу XMPP.
  21. ...Ломясь при этом на кучу других адресов и портов.
  22. Посмотреть повнимательнее опции, и убедиться, что кроме однопользовательского чата, двух статусов, и настройки цвета окна эта хреновина больше ничего не умеет*.
  23. ...Хотя работает, как заявляют авторы, по протоколу XMPP.
  24. СНЕСТИ НАФИГ сие глючное поделие.

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

___________

* Да, я помню, что есть еще погода, пробки и показ входящей почты но ни одна из этих функций не имеет приямого отношения к XMPP/Jabber.

понедельник, 1 сентября 2008 г.

Автосмена настроек прокси в Miranda IM

Эта статья является переводом записи, опубликованной в блоге Василича. В ней описывается способ запуска Miranda IM с USB флеш-драйва на нескольких компьютерах, имеющих различные настройки подключения к сети.

Сегодня я опишу особенности своего ежедневного использования Miranda IM:
Прежде всего — я запускаю Miranda IM с флеш-драйва — это дает мне возможность использовать ее на любом ПК с Windows, без необходимости синхронизировать историю чата. Я общаюсь на нескольких языках, и поэтому использую Unicode-версию Miranda IM. Кроме того за последние 4 года я не видел ни одного ПК с Windows 9x, так что у меня нет никаких причин использовать ANSI-версию

Запуск Миранды с флеш-диска имеет один (как минимум) недостаток — время запуска резко возрастает. Мой профиль занимает примерно 50 мегабайт, и Миранде требуется около 15 секунд для запуска (хотя простое копирование файла профиля в Explorer-е занимает около 4-х секунд); и хотя я использую драйвер dbx_mmap, это никак не помогает уменьшить время запуска.

Одна из вещей, которая раздражаетм меня каждый раз, когда я запускаю Миранду — это необходимость настройки соединения с интернетом. Дома у меня прямое подключение (через DSL роутер с uPnP), а на работе — через корпоративный прокси. К сожалению, Миранда не умеет читать настройки из IE или Windows, так что мне приходилось открывать диалог настройки и включать/выключать прокси для каждого протокола. Тогда я решил как-то это автоматизировать. После нескольких экспериментов я добился того, чего хотел: простого запуска Миранды вне зависимости от того, домашний ли это ПК или рабочий. Вот способ, которым я воспользовался:

  1. Миранда должна запускаться из командного файла, потому что настройки прокси считываются только при запуске Миранды, и если мы изменим их после подключения всех протоколов, нам придется перезапускать ее. В этом командном файле мы проверяем, где мы находимся — на работе, или дома. Я сделал это путем проверки некоторых папок, о которых мне известно, что они существуют только дома, или только на работе. И далее, в зависимости от расположения, я копирую соответствующий *.ini файл в Autoexex*.ini в папке Миранды. Вот пример моего командного файла:

    if exist "b:\Programs\MirandaIM\miranda32.exe" goto Home
    if exist "c:\Dokumente und Einstellungen\abakumov.BFE\" goto Work
    echo unknown PC. Trying to start Miranda without proxy.
    pause
    goto Home

    :Work
    rem work proxy settings
    copy work.ini autoexec_proxy.ini
    start miranda32.exe
    goto End

    :Home
    rem No proxy settings
    copy home.ini autoexec_proxy.ini
    start miranda32.exe
    goto End

    :End

    Я надеюсь, что здесь всё понятно, поэтому перейдем к рассмотрению *.ini-файлов.

  2. В файле Work.ini я активирую прокси для всех протоколов, и выполняю несколько дополнительных настроек вроде отключения звуков, поп-апов, отключения прямой передачи файлов в Jabber, установки только одной иконки в трее для контакт-листа и т.д.

    SETTINGS:


    [Netlib]
    NLEnableUPnP=b0
    NLUseProxy=b1[ICQ]
    NLUseProxy=b1

    [ICQP2P]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [ICQJ]
    NLUseProxy=b1

    [ICQJP2P]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [JABBER]
    NLUseProxy=b1
    NLEnableUPnP=b0
    BsDirect=b0
    Resource=uWork
    ManualConnect=b1

    [MSN]
    NLUseProxy=b1
    UseGateway=b1
    NLEnableUPnP=b0

    [MSN_HTTPS]
    NLUseProxy=b1

    [MSN2]
    NLUseProxy=b1
    UseGateway=b1
    NLEnableUPnP=b0

    [MSN2_HTTPS]
    NLUseProxy=b1

    [IRC]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC DCC]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC_Freenode]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC_Freenode DCC]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC2]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [IRC2 DCC]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [MRA]
    NLUseProxy=b1
    NLEnableUPnP=b0

    [MRA Avatars]
    NLUseProxy=b1

    [Updater]
    NLUseProxy=b1

    [UpdateNotify]
    NLUseProxy=b1

    [PopUp]
    ModuleIsEnabled=b0

    [Skin]
    UseSound=b0

    [CList]
    TrayIcon=b1
  3. В Home.ini делаем всё наоборот (настройки очень похожи, поэтому приведу здесь только небольшую часть):

    SETTINGS:

    [Netlib]
    NLUseProxy=b0
    NLEnableUPnP=b1

    [ICQ]
    NLUseProxy=b0

    [ICQP2P]
    NLUseProxy=b0
    NLEnableUPnP=b1

    [ICQJ]
    NLUseProxy=b0

    [ICQJP2P]
    NLUseProxy=b0
    NLEnableUPnP=b1

    [JABBER]
    NLUseProxy=b0
    NLEnableUPnP=b1
    BsDirect=b1
    Resource=uHome
    ManualConnect=b0

    [MSN]
    NLUseProxy=b0
    NLEnableUPnP=b1
    UseGateway=b0

    [MSN_HTTPS]
    NLUseProxy=b0
    ……………

    Чтобы всё это начало работать, нужно отредактировать файл MirandaBoot.ini. Я опишу необходимые изменения и прокомментирую некоторые из них.

    [Database]
    ProfileDir=.
    ;Эта опция позволяет нам использовать профиль из папки Миранды, а не из папки пользователя в Windows.


    [AutoExec]
    Use=yes
    Glob=autoexec_*.ini
    Safe=CLC Icons CLUI CList SkinSounds
    Unsafe=AIM ICQ MSN Jabber
    OverrideSecurityFilename=autoexec_proxy.ini
    ;Эта строчка отключает вывод сообщения об импорте файла autoexec_proxy.ini, но для других файлов autoexec_*.ini предупреждения сохраняются в целях безопасности.
    Warn=onlyunsafe
    OnCompletion=recycle
    RenamePrefix=done_
  4. После всех приготовлений нам надо выставить нужные настройки прокси для всех протоколов в Миранде, и на этом всё.

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

  • добавить в командный файл распознавание третьего ПК и копирование соответствующего *.ini файла;
  • создать третий *.ini файл для третьег ПК;
  • добавить во все ini файлы необходимые настройки прокси. Необходимые опции для каждого протокола выглядят так (значения даны в качестве примера):NLUseProxy=b0
    NLProxyType=b4
    NLProxyPort=w3128
    NLUseProxyAuth=b0
    NLProxyAuthUser=s
    NLProxyAuthPassword=s
    NLUseProxyAuthNtlm=b0
    NLDnsThroughProxy=b0
    NLSpecifyOutgoingPorts=b0
    NLSpecifyIncomingPorts=b0
    NLIncomingPorts=s2000-2010
    NLProxyServer=s192.168.150.2
    NLOutgoingPorts=s2000-2010
    NLEnableUPnP=b1

    Конечно, всё это довольно сложно, но всё, что вам нужно — это настроить всё один раз, и забыть об этом. В дальнейшем всё будет происходить автоматически, и избавит вас от рутинной операции смены настроек при каждом подключении.

    Я надеюсь, эта короткая инструкция поможет вам упростить запуск Miranda IM с USB drive даже при разных настройках прокси на разных ПК.

 
 
Copyright © Johan's blog
Blogger Theme by BloggerThemes Design by Diovo.com