Воен упячки — Роджер Желязны

А Висс пусть усрётся кирпичами! — залился смехом Вонь Пань. — Большими, тяжёлыми, с острыми углами!

Роджер Желязны и Джейн Линдскольд. Лорд Демон. Охохо, в оригинале так и написано: «„Viss’ll shit bricks,“ laughed Wong Pang. „Big ones with sharp, square corners!“»

15 комментариев

Бег

Мда, пора заводить какой-то общий тег «sport». В общем, со вчерашнего дня я бегаю. Цель — к весне 10 километров по пересечённой местности на хорошей скорости. На хорошей, это в идеале, но хотя бы 6 минут на километр. Бегать будем (с женой и ребятами с работы) два-три раза в неделю, вчера пробежали в первый раз.

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

16 комментариев

Google (HTC) Nexus One

Nexus One (14.98КиБ)

Для тех, кто не знает что же я купил, расскажу. Пост достоинств, о недостатках потом.

Это телефон, который для «Гугла» сделала известная фирма HTC, предыдущей телефон у меня был той же фирмы (X7500) и сделаны оба очень качественно. На борту — новейшая ОС «Андроид» версии 2.1, отличный интерфейс, управляемый пальцами.

Телефон очень удобно лежит в руке (он тоньше iPhone, но чуть длинее), у него металлический каркас и две пластиковые вставки, покрытые тефлоном. Экран — 3,7 дюйма, 800×480, AMOLED, время ответа — 1ms, в американской версии телефона (которая у меня) программно выключен multitouch.

Камера — 5 мегапикселей, довольно качественная, хорошо стабилизирует изображение, есть вспышка, съёмка видео — 720×480, 20 кадров в секунду.

Поддерживает GPS/EDGE, 3G, Bluetooth 2.1 с EDR и A2DP, Wi-Fi (802.11b/g), A-GPS.

Время разговора — 7 часов (10 в сетях 2G), время ожидания — 250 часов (290 — в 2G). Процессор — Qualcomm QSD 8250 1ГГц, памяти — 512Мб Flash, 512Мг оперативной, в комплекте карточка на 4Гб (Micro SD, телефон поддерживает до 32Гб).

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

Покупал на сайте MaxApple, стоимость — 27 тысяч рублей.

35 комментариев

Fring: SIP

«Мы, бояре — народ роботящий». Раз уж я весь из себя такой с «Нексусом Уан», то негоже мне звонить в другие города через обычную сотовую связь. Решил вчера посмотреть на SIP. В качестве клиента выбрал Fring, в качестве провайдера — SIPNet. Ничего сложного, регистрация крайне простая, единственное — Fring для «Андроида» не имеет пресетов для SIPNet, поэтому нужно руками указать прокси — sipnet.ru.

Сегодня позвонил родителям, качество приличное, не прерывается, стоимость низкая, пользоваться несложно. Рад.

Потрачу деньги буду переходить на СallWithUs, Каганов говорит, что тарифы там почти в два раза ниже. Рад в два раза больше.

19 комментариев

Google Nexus One

Купил себе Google Nexus One, как теперь перенести контакты из Windows Mobile?

Добавлено 13-го января 2010 года в 20:24: справился с импортом: при помощи программы NS Contact Backup выгрузил данные в XML, при помощи PHP преобразовал его в CSV, который понимает GMail и импортировал контакты из GMail.

Добавлено 14-го января 2010 года 10:38: нужно объяснить почему я выбрал такой экзотический путь. Все менее экзотические уже были перепробованы, но из-за каких-то глюков прежнего телефона (который на Windows Mobile), они не работали (в том числе копирование на SIM).

46 комментариев

Что ты смотришь на сучок в глазе брата твоего, а бревна в твоём глазе не чувствуешь?

Эгегей, чего все так возбудились на «раздевающие» сканеры, которые будут установлены в аэропортах США? В аэропорту «Домодедово» такие сканеры уже третий год работают. Неужели никто из него не летал? Тогда что за толпы народу я там вижу каждый раз? Что, никто, кроме меня и Лебедева не любопытствовал что видно на экране этого сканера?

12 комментариев

Opera Turbo и ̶Т̶а̶й̶н̶а̶я̶ ̶к̶о̶м̶н̶а̶т̶а̶ ограничение по стране

Чем мне нравится режим «Оперы» «Турбо» (помимо экономии трафика), что он совершенно легально пропускает трафик через прокси в другой стране. Не удаётся скачать какую-то безделушку, потому что оплата происходит просмотром рекламы, а Россия их не интересует? Включаем «Опера Турбо» и, оп, следите за руками, мы уже в Норвегии.

(я знаю, что «Опера» покажет в заголовке квадраты, к сожалению, у неё всё довольно плохо с Unicode)

14 комментариев

Статистика браузеров и платформ

Решил чуть более подробно посмотреть на Google Chart API. Принцип понятен, хотелось больше посмотреть что сделано для сокращения длины URL. Его длина ограничена, а впихнуть данных хочется очень много.

Сделано немного, на мой взгляд — короткие имена параметров и перевод чисел в систему с основанием 64. Понятно, чтобы ещё больше сократить разряднось цифр, лучше их поделить на наибольший общий делитель (что я и сделал).

Наверное, для диаграмм этих шагов хватает, но почему не сделали упаковку подписей, неясно — русские буквы передаются как есть, то есть шесть знаков на каждую букву (например, «%D0%9F»). Как-то расточительно. Можно было бы перевести в ту же шестидесятиричную систему или прикрутить LZW какой-нибудь.

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

Круговая диаграмма показывает долю браузеров: FF — 34%, Opera — 26%, IE — 22,37%, Chrome — 10,69%, Safari — 4,05%, остальные — менее 1%.
Круговая диаграмма показывает долю браузеров: FF — 34%, Opera — 26%, IE — 22,37%, Chrome — 10,69%, Safari — 4,05%, остальные — менее 1%.

Мне не нравится очень спорный antialiasing (на мой взгляд, очень бледный) и то что проценты приходится выводить самостоятельно.

6 комментариев

FAQ о праве на съёмку

Отличная статья появилась на сайте «Антирао» — «FAQ о праве на фотосъёмку», рекомендую прочесть полностью. Вот например:

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

Что же касается продажи музеями «права на съемку», то она также незаконна. Фактически музей сначала незаконно ограничивает права посетителей на сбор информации, а затем — убирает за плату данное ограничение.

Дейстивительно ли законодательно запрещена съёмка в магазинах, кафе, самолётах, метро, музеях и так далее. Очень интересный документ, составитель — Павел Протасов, профессиональный юрист.

3 комментария

Устал я что-то

Что-то я как-то подизмотался, даже новогодние праздники ситуацию не выправили — кажется вчера только было первое число. Завтра на работу, не хочется. Родной, вроде, «Яндекс» кажется чем-то чужим, далёким, существующим где-то в сугробах заснеженной Москвы; а хочется в тепло, на пляж, на море. Или, вот, в Париж. Неведомо почему потянуло в Париж. «Потянуло», да. Может ли тянуть место, где ни разу был? Хочется в Париж, непонятно почему. Какие-то неясные образы, музыка, запахи, Mонмартр, опять же.

Почему мне кажется, что это красиво звучит, «Mонмартр» и обещает какие-то сказочные переживания? Тьфу… Любая неприятная мелочь добавляет «+1» к усталости и уже как-то не удивляет. It’s because I’m green isn’t it? Может, правда уехать куда-нибудь.

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

10 комментариев

Чудесный X-Wap-Profile и новые телефоны HTC на базе «Андроида»

Некоторые сотовые телефоны отправляют на сервер заголовок «X-Wap-Profile», в этом заголовке, помимо, как это бывает, другой информации содержится URL «профиля» телефона, где указываются его некоторые характеристики. Очень полезно для сайтов, которые хотят удобно отобразить данные для мобильного телефона. Мобильники очень разнообразны и без профиля пришлось бы туговато. Профиль представляет собой стандартизованный XML-файл (RDF).

Что нам это даёт? Ну, например, недавно в сеть утекла информация о кодовых названиях новых телефонов HTC на базе «Андроида» (впрочем, «утекла» громко сказано — в новой прошивке «Андроида» эти имена вшиты). Естественно, к моменту выхода телефона, его профиль компания уже размещает в сети по какому-то URL. Все URL телефонов на базе «Андроида» компании HTC выглядят одинаково, можно посмотреть какой-то URL у HTC Hero и подставить вместо него любое кодовое имя.

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

Например, «Supersonic». Что даёт нам профиль «Суперсоника»? Процессор — ARM11, нет внешней клавиатуры, разрешение экрана — 480×800, поддерживает GRPS (а значит это GSM телефон, что не исключает поддержки 3G, конечно же), умеет запускать J2ME-приложения.

Liberty: ARM11, нет внешней клавиатуры, 320×480, GSM, J2ME-приложения.

Espresso: ARM11, внешняя клавиатура с раскладкой «qwerty», 320×480, GSM, J2ME.

Paradise: ARM11, внешняя клавиатура с раскладкой «qwerty», 240×400, GSM, J2ME.

Bravo: ARM11, нет внешней клавиатуры, 480×800, GSM, J2ME.

Halo: ARM11, телефонная клавиатура, модель называется Tattoo, 240×320, GSM, J2ME.

Кстати, нет профилей для «Bahamas», «Huangshan», «Incredible». То ли кодовое имя телефона сменилось, то ли выйдет он ещё не скоро.

1 комментарий

Android

Денёк покрутил в руках HTC Hero, вывод: следующий телефон, который себе буду брать, будет на «Андроиде». Кажется, гугловский неплох и у «Моторолы» что-то, наконец, приличное получилось. Итак, когда мой HTC X7500 даст виртуального дуба, надо будет присмотреться к: Google Nexus One, Motorola Droid (только европейская модель, с мультитачем) и Lenovo LePhone. Ну или что там ещё за это время хорошего появится.

«Андроид» на «Hero» не тормозит. Вообще. После Windows Mobile 6.1 на моём X7500, я в вышей степени был обрадован временем отклика. Интересно, модели с WiMAX на «Андроиде» появятся? Вроде как HTC около 15 новых телефонов на базе «Андроида» готовит.

45 комментариев

JavaScript: это IE?

Aleko придумал новый (более короткий, чем известный до этого) JavaScript-хак, позволяющий определить является ли браузер Internet Explorer’ом:

if(-[1,]) {
    // код для нормальных браузеров 
} else {
    // код для IE 
}

Подробный принцип действия хорошо описан в блоге у Aleko. Основан хак на старом баге JavaScript в IE, который Microsoft пока не исправила (и неизвестно будет ли исправлять), но с IE9, я считаю, надо быть осторожными — там грядут очень уж глобальные изменения, хак может и не работать.

Оставить комментарий

«Тщета, или крушение Титана»

В том же 1912 году, но раньше, чем произошла катастрофа, была издана книга Моргана Робертсона (Morgan Robertson) «Тщета, или крушение Титана» («Futility, Or the Wreck of the Titan»), действие которой происходило на борту пассажирского судна «Титан», схожего по описанию и водоизмещению с «Титаником». В этой книге «Титан» гибнет от столкновения в тумане с айсбергом во время плавания из Нью-Йорка в Великобританию. Как следствие — появилась легенда о «предсказании» катастрофы «Титаника» Морганом Робертсоном. Этот факт подкрепляется тем, что несмотря на выход книги в печать в 1912 году, написана она была в 1898.

Цитата из статьи «Титаник» в «Википедии». В 2004-м году я заинтересовался этой книгой, но не нашёл её перевода на русский и попробовал перевести её сам. Моего терпения хватило на пять с хвостиком глав (в книге их 16), вчера, пока просматривал архивы, нашёл этот кусок перевода, положу к остальному старью.

7 комментариев

Pure PHP class LZF decompression (lzf_decompress)

Разбирая архивы на старом компьютере в Казани, наткнулся на свою реализацию PHP-функции lzf_decompress на чистом PHP (распаковка строки, сжатой алгоритмом LZF). Писал в 2006-м году для PEAR, но забросил — не дописал функцию сжатия.

Выкладываю в разделе «Храню», может кому-то пригодится.

4 комментария

«Чёрная молния»: product placement

Мало того, что номер машины в фильме «Чёрная молния» ДЕЕ1991ГР, так ещё на стене завода, в который главный герой влетел со страху, написано «Лепра та» и «Jovan».

14 комментариев

Powershell и объектный pipe

Я задумался над тем, чтобы показать как могла бы выглядеть обработка логов на PowerShell. Как я уже говорил, pipe в PowerShell объектный, то есть по нему идёт не монолитный текст, а набор объектов. Вот я и попробую на примере показать что это.

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

LogFormat "%h\t%l\t%u\t%t\t\"%r\"\t%>s\t%b" common
CustomLog logs/access.log common

В логе у нас есть: хост клиента, его ident, имя пользователя (если была произведена HTTP-авторизация), дата и время запроса, метод-URL-версия-HTTP (одним полем), код ответа и длина отданного клиенту контента:

127.0.0.1   -   -   [03/Jan/2010:16:35:30 +0300]    "GET /favicon.ico HTTP/1.1" 404 1976
127.0.0.1   -   -   [03/Jan/2010:16:35:32 +0300]    "GET /a.html HTTP/1.1"  200 521
127.0.0.1   -   -   [03/Jan/2010:16:35:33 +0300]    "GET /favicon.ico HTTP/1.1" 404 1976

Предположим, наша задача — разобрать лог, отобрать только те запросы, у которых код ответа 200, отсортировать по размеру контента и вывести в табличном виде название метода, URL и размер контента.

cat access.log | %`
{
    $o = "" | Select-Object host, logname, user, date, url, code, len, method
    $o.host, $o.logname, $o.user, $o.date, $o.url, $o.code, $o.len = $_.Split("`t")

    [datetime]$o.date = $o.date -replace '^.([^:]+):(.+).$', '$1 $2'
    
    "logname", "user", "len" | %{ If ($o.$_ -eq '-') { $o.$_ = $false } }

    $o.method, $o.url = $o.url.SubString(1).Split()[0..1]

    $o
} | ?{ $_.code -eq 200 } | Sort-Object -property len | Format-Table method, url, len

Итак, что здесь происходит. Читаем лог, проходимся по каждой его строке (%{ }), внутри цикла странным хаком с Select-Object создаём объект с заданными полями, разбиваем входную строку по символу табуляция, убираем у поля «date» первый и последний символы (там квадратные скобки) и двоеточие между датой и временем (такой формат понимает PowerShell), сразу преобразуем это значение в тип «datetime», у поле «logname», «user», «len» заменяем значение на False, если там «-» («пусто» в терминах лога Apache), поле «url» разделяем пробелу (там три значения — метод, URL и версия протокола), избавляемся от окаймляющих кавычек и записываем в соответствующие поля.

Последней строкой цикла выводим получившийся объект. До цикла по pipe шли объекты попроще — всего лишь наборы строк («System.String»), теперь идут более интересные объекты («System.Management.Automation.PSCustomObject» с заданными нами полями).

Из этих объектов мы вибираем только те, у которых поле «code» содержит значение 200 («?{}» — это короткий алиас «Where-Object»), сортируем по полю длины контента и выводим, форматируя в таблицу, три поля: метод запрос, URL и длину контента. На экране будет что-то подобное:

method                     url                        len
------                     ---                        ---
GET                        /                          4701
GET                        /                          4701
GET                        /                          4701
GET                        /                          4701
GET                        /a.html                    521
GET                        /a.html                    521

Надо будет после праздников взглянуть на PowerShell 2.0, говорят, там очень много нового и интересного добавили.

26 комментариев

В Казань и обратно

Через час, надеюсь, мы с женой уже будем сидеть во взлетающем самолёте, на этот раз летим компанией «Трансаэро», удивительно — деньги те же, а сервис кажется более человечным, чем у «S7». Обратно в Москву — девятого числа компанией «UTair», их смешными винтовыми французскими самолётами.

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

4 комментария