09 декабря 2012

Продам AV-ресивер Yamaha RX-V757 RDS Titanium


7 -канальный Hi-Fi аудио-видео-ресивер со встроенным усилителем: 7x150Вт (при подключении 4-омной аккустики) или 7x100Вт (8Ом). Скачать инструкцию.


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


Главная особенность этого ресивера - высокая точность передачи звука (Yamaha не зря снабжает свою продукцию гордой надписью Natural Sound): что бы вы ни решили слушать - классическую или современную музыку, фильмы с DVD/BD, игры с приставки или компьютера - всё это звучит просто офигено на любой громкости (для прослушивания музыки и фильмов на маленькой громкости предусмотрены специальные "ночные" режимы, уменьшающие динамический дипазон - разницу между самым громким и самым тихим звуками). Для особо требовательных аудиофилов предусмотрен режим Pure Direct, физически отключающий все схемы обработки звука для уменьшения ЭМ-наводок, и пускающий звук по отдельному "прямому" аудиотракту.

Самое интересное, что с таким девайсом для получения качественного звука с цифровых носителей не обязательно иметь источник звука класса Hi-Fi: достаточно подключить дешёвенький DVD-плеер или обычный компьютер со встроенной звуковой картой по цифровому каналу (например, оптическому Toslink), и указать в настройках, что ресивер умеет декодировать аудиопотоки DTS и AC3 - тогда звук из видео (BlueRay, DVD, .mkv, .avi и т.п.) будет передаваться ресиверу без побитово, без преобразований, а декодированием займётся процессор ресивера, выдавая аналоговый сигнал Hi-Fi класса. 

09 августа 2012

Поиск сохранённых паролей в Chrome

Открыл для себя в Google Chrome приятную особенность: поиск в настройках ищет также в сохранённых паролях.

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

  1. открыть настройки
  2. показать дополнительные настройки
  3. прокрутить вниз
  4. открыть управление сохранёнными паролями
  5. ввести название сайта
  6. показать пароль
Оказывается, всё гораздо проще:
  1. открыть настройки
  2. ввести в поиске название сайта или его часть (при этом скрываются все лишние настройки)
  3. управление сохранёнными паролями
  4. показать пароль
Мелочь, а приятно!


18 июля 2012

Юнит-тесты

Сидел, писал тесты, и чо-то пропёрло:


Юнит-тесты - это круто,
Юнит-тесты - это клёво,
Это вам не жать на клаву,
Не руками мышкой дёргать

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

Напиши мини-программку, имитирующую, будто
Пользователь нехороший ввёл тебе кривую строчку,
И смотри, что будет делать
Настоящая программа.

Так ты думаешь мозгами,
Так ты пишешь код хороший,
Если кто его сломает, сразу по мозгам получит,
И почти что автоматом!

Будет устыжён публично
Красным цветом павших тестов,
И узнают все об этом
От continuous intergration.

28 июня 2012

Репозиторий программ Windows

С тех пор, как я начал пользоваться Linux'ом, я понял, что в Windows очень сильно не хватает одной вещи - репозитория ПО.

Для тех, кто не в курсеВ Windows есть компонент панели управления "Установка и удаление программ", но он позволяет только управлять уже установленным ПО, а в Linux соответствующий компонент - менеждер пакетов позволяет управлять ещё не установленным ПО: он умеет подключаться к специальному сервису, называемому "репозиторий ПО" - это такой сервис, в котором лежат программы, которые вы можете установить на своей ОС. Для каждой программы протестирована совместимость с текущей ОС, отслеживаются связи (если вы захотели установить программу А, а для её функционирования требуется В, то вам предложат установить В вместе с А) и т.п.  Большинство программ вам не нужно искать в тёмных закоулках интернета, самостоятельно скачивать инсталлятор и т.п., а нужно открыть менеджер пакетов и сказать "хочу поставить ОФИС", вам предложат на выбор список доступных дистрибутивов офисных пакетов, и вам остаётся только нажать "установить". Как следствие, нет тысячи и одного механизма самообновления каждой уважающей себя программки, а есть одна большая кнопка "обновить всё ПО", которая к тому же может "нажиматься" сама по расписанию. Это очень сильно облегчает жизнь и экономит ресурсы компьютера.

23 апреля 2012

Lync - нафиг нам всё это в нашем зоопарке?

Есть такой замечательный анекдот:

Верблюжонок(В) спрашивает у мамы (М): 
В: - Мама, а зачем нам два горба?
М: - Это для того чтобы можно было обходиться без воды в пустыне много дней
В: - А зачем у нас такая густая шерсть ?
М: - Это для того чтобы в пустыне ночью не было холодно, а днем жарко
В: - А зачем у нас такие большие копыта?
М: - Для того чтобы было легко ходить по песчаным барханам в пустыне
В: - Мама. Так нафига нам эти навороты, если мы в зоопарке живем?


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

10 апреля 2012

ICEnroll4::addExtensionToRequest or problem widely known to fiew people SOLVED

Sometimes it's needed to create a Certificate Signing Request (SAR), using Internet Explorer and ActiveX technology. There is a very good manual how to create a certificate request with CertEnroll for Windows Vista and newer (Windows 7, 2008, 8). There's also a manual in MSDN for CEnroll (Windows XP, 2003), and it works fine until you try to create a request with specific X.509 extensions (for example, Subject Alternative Name - SAN). Many programmers complain that addExtensionToRequest method doesn't work. If you look for addExtensionToRequest in Google, you'll see that most of links lead to discussions of this problem and I've found no one with working solution. Some of them even claim that there is no solution for script languages at all. But solution exists!

Typical problem

Typically problematic code looks like this:

var enroll = CreateActiveXObject("CEnroll.CEnroll");
enroll.addExtensionToRequest(0, "2.5.29.17", strExtensionBase64);
strPKCS10 = enroll.CreatePKCS10(strDN, strEKU);

* This source code was highlighted with Source Code Highlighter.


This block of code runs without any errors, and generates a valid PKCS#10 request, but the problem is that generated request doesn't contain desired extension (in this sample 2.5.29.17 that used to assign SAN).

ICEnroll::addExtensionToRequest или решение проблемы, широко известной в узких кругах

Предисловие

По долгу службы мне понадобилось генерировать запросы на сертификат (CSR - Certificate Signing Request) в браузере. Под Windows, в Internet Explorer. А чо, дело-то нехитрое: создаёшь COM-компонент (CertEnroll под Windows Vista/7/8, CEnroll под XP/2000/2003), скармливаешь ему данные, отдаёшь команду сгенерировать запрос, и voila, PKCS#10 у тебя в кармане переменной. Есть очень хорошее руководство по тому, как сделать запрос на сертификат с помощью CertEnroll - с ним, как правило, не возникает никаких проблем. Для CEnroll тоже есть руководство, и у многих в соответствии с ним всё работает, и вопросов не возникает, особенно, если достаточно запрашивать сертификаты, не содержащие расширений (X.509 extensions) специфических для какого-либо применения сертификата, идентифицирующий владельца только по DN. Чаще всего, так оно и бывает. Однако, когда возникает необходимость добавить в запрос альтернативные имена (SAR - Subject Alternative Name), многие сталкиваются с проблемой: добавляемое имя в сгенерированный запрос не попадает. Разумеется, я тоже столкнулся. При поиске в Google по названию метода addExtensionToRequest большинство ссылок окажутся жалобами на различных языках на то, что он не работает. К сожалению, среди всего этого множества обсуждений проблемы мне так и не удалось найти действительного решения. Наоборот, есть прямые указания на то, что для скриптовых языков решения нет. Но оно существует!

Проблема

Итак, типичная формулировка проблемы: есть код, который генерирует запрос на сертификат
var enroll = CreateActiveXObject("CEnroll.CEnroll");
enroll.addExtensionToRequest(0, "2.5.29.17", strExtensionBase64);
strPKCS10 = enroll.CreatePKCS10(strDN, strEKU);

* This source code was highlighted with Source Code Highlighter.
Примечание:
В strExtensionBase64 записано значение расширения, закодированное в ASN.1 / DER (бинарный формат), которое, в свою очередь, закодировано в Base64.

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

23 марта 2012

Улитки на льду

Сегодня наблюдал чудеса упорства. Весна "порадовала" автомобилистов с вечера обильным снегопадом, который тут же превратился в грязно-снежную кашу, а к утру в солидную корку льда. При таких дорожных условиях наблюдать буксующие фуры - обычное дело, но что-то меня сегодня зацепило при виде обыденной картинки фуры, пытающейся карабкаться в горку. Для всего потока фура стоит, и первым делом, при наблюдении бессильно пробуксовывающих колёс, посещает мысль: "да чо этот идиот буксует, не видит что ли, что стоит, и не движется?". Однако, если присмотреться, то оказывается, что всё относительно: по сравнению с потоком даже медленно ползущих в пробке машин, кажется, что фура стоит. Но, на самом деле, колёса медленно, но верно, миллиметр за миллиметром стачивают лёд до асфальта, едва цепляясь за который, фура так-и ползёт со скоростью хорошо тренированной улитки-спринтера! И, судя по следам, уже преодолела уже, как минимум, четверть своей марафонской улиточной дистанции. Мне осталось лишь подивиться упорству и выдержке дальнобойщиков, и мысленно пожелать успешного завершения миссии.

P.S.: Без конца поражаюсь, почему на грузовые авто запрещено ставить шипы, несмотря на количество проблем, которые это порождает. Ну не верю я, что экономический ущерб от шипованных грузовиков (в виде разрушения дорог) превышает совокупный экономический ущерб от пробок, аварий, сожжённого бензина, истраченных нервов, расчищающих фуре дорогу гаишников и т.п. А гораздо больший ущерб дорогам наносят не шипы, а тотальное разворовывание средств при их строительстве и ремонте.

16 февраля 2012

На случай ядерной войны, или как жить с доменом

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

08 февраля 2012

Память девичья - 4Кб

Когда-то наиболее тяжеловесным приложением в моей системе была Visual Studio, потребляющая неприличные 600-700 Мб оперативной памяти (оставим в стороне службы типа SQL Server). Ещё бы, ведь она столько всего умеет! Теперь она потребляет всё те же 600-700 Мб (вкупе с много-ещё-чего-умеющим R#), но они уже кажутся весьма скромными и умеренными на фоне Skype и qip, потребляющих по 120-150 и 150-200 Мб соответственно. Про количество оперативки, отъедаемой браузерами, лучше вообще скромно промолчать (но там хотя бы изоляция процессов, песочницы и всё такое, что несколько опрадывает такие цифры).

В общем, глядя на это и прочие безделушки, чьё соотношение полезности к потребляемым ресурсам, стремится к нулю, хочется сказать что-то вроде "ах, ё% ж твою %$#%#@!%& c%к@ в &%$ую &@$%*у" и после этого грязно выругаться. Ибо слово "охуеваю" для сего случая недостаточно нецензурное.

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

Эх, где же золотые времена, когда 640Кб оперативной памяти было достаточно каждому пользователю?