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 комментариев

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

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

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

Pure PHP class LZF decompression (lzf_decompress)

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

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

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

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

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

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

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

JavaScript: это IE?

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

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

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

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

Android

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

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

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

Чудесный 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 комментарий

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

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

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

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

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

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

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

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

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

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

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

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

Решил чуть более подробно посмотреть на 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 комментариев

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

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

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

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

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

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

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

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 комментариев

Fring: SIP

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

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

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

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

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 комментариев

Бег

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

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

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

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

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

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

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

Сайт, RSS и браузерный XSLT

Мне последние три года не даёт покоя мысль: вот у нас есть RSS на сайтах, он же — XML, что мешает взять его за основу, наложить на него XLST через браузерный движок и получить оформленный сайт? Зачем делать аж два разные источника?

Листалки вперёд/назад, ссылки на комментарии — всё есть в расширениях, для остального RSS можно расширить самостоятельно. Никто ещё ничего такого не сделал?

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

Спелеотренировка №1

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

Спелео (41.53КиБ)

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

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

Подробности можно посмотреть в фотоальбоме на «Яндекс.Фотках».

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

Френдик

У пушистой школоты, оказывается, новое слово в ходу: френдик. Пример употребления (регистр, видимо, важен): «Ти моЙ ФрЕндИк и я Тя ЛаФФки».

Френдики, я вас лаффки!

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

Принцип неопределённости Гейзенберга

Многие считают принцип неопределённости Гейзенберга какой-то высокоуровневой магией, которую очень сложно понять. Впервые с его подробным толкованием, которое я всё-таки прочитал, я столкнулся около года назад и теперь понимаю насколько всё там всё просто. Я сейчас читаю «Краткую историю времени» Стивена Хокинга и не могу не процитировать небольшой кусок из его книги, посвящённый этому принципу:

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

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

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

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

10 км

Сегодня пробежал 10 километров, натёр ещё один палец на ноге, пластырем с первого. Стёр до крови (думаю — что-то больно как-то, «печёт»). Бежал с одной остановкой минуты на две — развязались шнурки. Где-то 6,3 минуты на километр. Надо стремиться к результату 5,5 минут.

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

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

Единичные случаи: по одному в день

Заместитель министра внутренних дел Аркадий Еделев назвал убийство мирных граждан милиционером Евсюковым «единичным случаем». Esquire составил ежедневный календарь следующих единичных случаев, которые вскоре появились в новостях.

Сам календарь можно увидеть на сайте журнала «Esquire».

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

Эпическая швабра: +1 к бардаку

Спам пришёл: «легендарная паровая швабра». Легендарная!!! Где можно приобрести сборник «легенды о паровой швабре»? «Эпос древней греции о Паровой Швабре»?

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

10км: сегодня cancel, вопрос про фонарик

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

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

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

30 января: я в Киеве, на PyCamp

PyCamp (5.80КиБ)

30-го января буду в Киеве на «PyCamp Kyiv, программа нравится. Особенно доклады по оптимизации скорости Python, хранилищу Google App Engine, Redis, расширению и встраиваиванию Python, WebSockets в Twisted, интернатиализации в Python и работе из Python c системами оплаты.

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

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

B.I.T.C.H.E.S

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

Женщины и здесь устроены совершенно не так. Если ты хочешь хорошей жизни, не делай ничего, просто с детства верь, что ты крутая и подороже продай себя. Не в этом ли кроется одна из причин женского одиночества? Не идти же «принцессе» замуж за пастуха?

Из статьи «Мужской взгляд: Кто вырастает из девочек-принцесс?».

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

Спелеотренировка №2

Спелео (27.58КиБ)

Сегодня проводили вторую спелеотренировку. Было холодно — около 25°С «по ощущениям», если верить сайту «Real Meteo». Мои успехи: спуск в режиме кроль/жумар стал проходить быстрее, что мне помогло, когда я с первой попытки не смог взять себя в руки, чтобы подняться на самый верх вышки (сколько там не знаю, где-то 14—17 метров).

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

На фотографии я как раз вишу, встегнувшись в точку, 14—17 метров над землёй.

Плохо, что у меня короткий «ус» настолько короткий, что приходится вставать в педаль двумя ногами, при попытке встегнуться. Наверху у меня замёрзли руки и, чтобы было проще встёгиваться, я слишком высоко поднял жумар и вогнал его в узер. Додумался, как освободить — надо чуть его повернуть.

Я молодец, что проверил снаряжение, прежде чем спускаться (но не молодец, что не сделал этого на земле) — рапид на «решётке» был не затянут; кроме того, увидел, что на верхней точке я «решётку» поставил неправильно — вверх ногами, переделал.

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

За фотографию спасибо жене и iPhone.

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

Verbatim Game

Абстрактные роботоподобные фигуры из электронных устройств на белом фоне с радужными полосами.
Verbatim Moster

У Экслера подсмотрел игрушку «全日本バーベイタム選手権» («Японский чемпионат Verbatim») — из флешек составляется монстр, которым потом можно драться с другими монстрами. От каждого боя достаётся немного гигабайт, увеличивается рост и улучшаются различные характеристики: мощность, оборона, скорость и живучесть. Скорость после 35 у меня больше так и не выросла. Если вам удаётся победить большую часть своих соперников, можно попробовать победить боссов — The IQ, The Captain, The Tank, The Queen и The Verbatim.

Характеристики прокачитаются довольно быстро, так что и на монстров можно идти где-то уже через полчаса. На скриншоте я как раз победил самого сильного босса — The Verbatim (справа).

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

P.S. Моего монстра зовут HIW.

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

Multitouch в Nexus One

Как известно, в американской версии Nexus One нет не было multitouch, теперь есть. На форуме XDA-Developers опубликован рецепт.

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

«Реактивные веб-сайты»

«Реактивные веб-сайты» (21.78КиБ)

Вышла электронная версия нашей (три автора — я, Николай Мациевский и Глеб Кондратенко) книги «Реактивные веб-сайты», можно выкачивать и читать, именно в таком виде книга попадёт в печать. Электронная версия доступна в двух форматах — PDF и FB2, последний в трёх вариантах (например, на мобильных устройствах, где мало памяти, книгу можно читать без иллюстраций).

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

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

10 км: третий раз

10км (58.55КиБ)

Нормально пробежали, хоть и холодновато было. Ничего не стёр и вообще без особых приключений: только один раз остановился шнурки завязать и один — собаку отогнать, всё вместе не более 20-30 секунд остановки.

Немного болела связка на ноге, кажется не размялась — холодновато было на улице. Скорость не могу прикинуть, навигатор показывает странное (например, что лучшее наше время — 44 секунды на километр), но точно никак не ниже 6 минут на километр. Вторая половина бежалась как-то проще, чем первая, то ли, наконец, разогрелся, то ли от осознания, что бегу домой. Последние 200 метров решился сильно прибавить скорость. В следующий раз можно попробовать с 500 метров или последний километр бежать в максимуме.

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

Болк ПЦ

Ну привет, в бороде появились седые волоски, в последний раз у меня такое было после сессии третьего курса КГУ, прозываемая «отсевочной», после которой я и получил свой ник. Последний крупный стресс я пережил в самом конце прошлого года, причём все те проблемы так и не решены.

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

Asus DSL-N13 и торренты

Решил настроить свой роутер/модем/wifi-точку так, чтобы он сам качал торренты, это удобнее — можно отключить ноутбук, он не будет шуметь по ночам и старьё не будет мозолить глаза. Если у вас Asus DSL-N13, то это делается так.

Для начала, вам нужен внешний жёсткий диск, подключаемый через USB, у нас есть eGo Helium, вот я его и использовал. Можно использовать флешку, но, на мой взгляд, она очень уж быстро забьётся.

Следующий шаг — ставим альтернативную прошивку (прошивать нужно из браузера Internet Explorer, в других может не получиться), перезагружаем роутер, подключаемся telnet’ом к роутеру (для этого лучше всего использовать putty), логин — admin, пароль — ваш пароль для входа в веб-интерфейс.

Втыкаем винт в роутер и убеждаемся, что его стало видно в системе:

> sh -c 'ls /dev/scsi/*/bus0/target0/lun0/disc'
/dev/scsi/host0/bus0/target0/lun0/disc

Если не видно, то, вероятнее всего, нехватает питания. Покупаем внешний USB-хаб, подключаем диск через него. Слава «Самсунгу» (внутри eGo Helium находится винт этой фирмы), у меня заработало без хаба.

Переразбиваем жёсткий диск, нам нужен раздел для свопа и для данных, раздел для данных можно сделать EXT3 (роутер его поймёт), я делал FAT32, чтобы видеть винт из-под винды, NTFS из альтернативной прошвки выпилили, поскольку драйвер работал только на чтение.

Запускаем «sh -c ’fdisk /dev/scsi/*/bus0/target0/lun0/disc’» и переразбиваем (пишу что надо нажимать):

d, Enter — удаляем раздел n, Enter — создаём новый раздел (далее жмём p, Enter, 1, Enter, Enter, +256M, Enter) n, Enter — ещё раздел (p, Enter, 2, Enter, Enter, Enter) t, Enter — первый раздел будет Linux swap (1, Enter, 82, Enter) t, Enter — второй пусть будет FAT32 (2, Enter, c, Enter) w, Enter — пишем что получилось на диск

далее выполняем команду «sh — c ’mkswap /dev/discs/disc0/part1’», отключаем винт от роутера, подключаем к винде, идём в интернет и скачиваем программу fat32format. Она умеет форматировать винты большого размера в FAT32 (Windows это делать отказывается).

На винт, в корень диска нужно записать распакованный hdd.tar.gz (под виндой для распаковки можно использовать WinRAR или 7-zip) c сайта LuxPort. В файле startup я у себя исправил строку, начинающуюся с swapon, написал там «swapon /dev/scsi/*/bus0/target0/lun0/part1», почему-то у меня заработало только так.

Несём диск к роутеру, подключаем, роутер перезапускаем. Подсоединяемся браузером (обязательно FireFox!) на адрес http://192.168.1.1:18000 (логин — admin, пароль — admin), добавляем торрент за закачку. У меня в интерфейсе торренты почему-то отмечены как «stopped», но несмотря на это, Torrents.Ru показывает, что я эти файлы всё-таки качаю.

Возможно, будет время, разберусь с CTCS (это протокол по которому консольный клиент ctorrent, используемый в этой прошивке отдаёт статистику) и напишу собственную веб-морду, посмотрю откуда такие глюки.

Добавлено 28 января 2010 22:13: я понял, почему у ctorrent статус всегда «Stopped», чтобы всё работало нормельно, надо в файле /etc/dctcs.conf поправить строку client-host, там должно быть написано «127.0.0.1:15000» (мой роутер просто не знает что такое localhost, который туда вписан).

Вообще, мой файл конфигурации выглядит вот так:

torrent-directory=/var/harddisk/torrents/
download-directory=/var/harddisk/downloads/

user=admin
password=смени-меня-напиши-тут-пароль

exit-hours=168
exit-ratio=5.6
cache-size=5
restart-torrents=1

download-limit=0
upload-limit=0

check-interval=1

port=18000

ctorrent-args=-a
detail-url=ftp://192.168.1.1:1111/downloads/

write-stats=1
ctorrent=/bin/ctorrent
client-host=127.0.0.1:15000
htmlroot-directory=/var/harddisk/www/darkside.ctcs.gui/

wget-args=-c

Кстати, очень рекомендую сменить ещё и значение password, адрес вашего интерфейса для торрентов видно снаружи и будет очень неприятно, если кто-то получит к нему доступ. Кстати говоря, у роутера есть настройки, которые позволяют дать доменное имя, для удобного доступа из внешнего интернета (см. «Advanced Setup / Dynamic DNS» в веб-интерфесе роутера).

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

Альтернативный CTCS

Мой CTCS (45.95КиБ)

Вчера слегка приболел и так как сегодня в дорогу (в Киев, на PyCamp), решил остаться дома, чтобы не заболеть серьёзнее. Пока болел, поковырял протокол обмена между веб-мордой «Yet anOther Dummy CTCS» и его бакэндом. YODCTCS — это такой страшное, как смрад от народного ополчения, огромное (около мегабайта JS) и работающее только под FireFox поделие.

Предназначен YODCTCS для пуска «Enhanced CTorrent» и отображения его данных. «Enhanced CTorrent» — это консольный Torrent-клиент, который умеет работать на урезанном донельзя чём-то линуксообразном моего роутера.

Веб-морда написана на Java и транслированна в JavaScript каким-то чудовищным колдунством, что мне, кстати, помогло — искать в мегабайтном невразумительном JS как происходит авторизация мне не понравилось бы, а подсмотреть это в Java оказалось гораздо проще. Остальной протокол разламывал просто сравнением и анализом.

В итоге накидал небольшую веб-морду, которая пока умеет только отображать информацию (и занимает 88КБ), потом доделаю остальное — это уже много проще. Если кому-то надо, потом могу выложить, когда доделаю.

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

Хабры осуждения псот

Глагне (12.74КиБ)

Вот такое висит сейчас на главной странице «Хабры». Тьфу, маркетолочья мерзость.

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

PyCamp Киев

Сижу на PyCamp Kyiv, зарегистрировался, всё хорошо. Единственное приключение (кроме того, что прогноз погоды промахнулся на 10 градусов), что в поезде чуть было не почистил зубы спортивным разогревающим кремом.

P.S. Вот и пригодилась SIP-телефония, которую я настраивал ранее. Точнее, стала единственным выходом — позвонил жене через бесплатную WiFi-точку, сказал, что всё в порядке, роуминга у меня нет.

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

bigsync vs. rsync

Bigsync is a tool to incrementally backup a big file to a slow destination (think network media or a cheap NAS). The most common cases for bigsync are disk images or virtual OSes or encrypted volumes.

Bigsync will read the source file in chunks calculating checksums for each one. It will compare them with previously stored values for the destination file and overwrite changed chunks if checksums differ.

Насколько я понял идею, bsync не проходится по удалённому файлу, что ускоряет процесс, если на другом конце медленный накопитель.

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

Motorola Milestone

Покрутил в руках Motorola Milestone, что я могу сказать.

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

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

«Гопник» и «Гопник-2»

На «PyCamp Kyiv», на тех немногочисленных докладах, которые мне были не интересны, играл в текстовые игры «Гопник» и «Гопник-2». Наверное многим они известны. Если нет,то поиграйте, забавно. Так как в интернетах я с огромным трудом нашёл вторую часть, то попробую наводнить эту заметку ключевыми словами.

Действие первого «Гопника» (автор — V.P, июнь 2003-го, язык — Turbo Pascal) происходит в Новосибирске, сюжет — вы вылетаете из университета и попадаете на улицу, у есть вас выбор какую «специальность» освоить — пацан, отморозок, гопник или вор. У каждой «профессии» свои плюсы (хотя, кажется, проходить проще всего вором): у «пацана» есть девушка и его сразу пускают в клуб, на «отморозке» всё заживает, как на собаке, «гопник» свой в притоне, а «вор» на короткой ноге с барыгами и, как следует из названия, хорошо умеет воровать.

Вам придётся (в текстовом режиме) шататься по окрестностям, воровать, покупать и продавать, ходит в качалку и клуб и так далее, а в конце — разобраться с ректором.

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

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

Шмотки дают различные бонусы, например, броня уменьшает силу вражеского удара, а тюремная наколка помогает реже влипать.

Гопник (30.01КиБ)

Сюжет второй части «Гопника», «Гопник-2 „Покорение культурной столицы“» (автор другой — d-maxx, из Сургута, ≈2005-й год, использован Turbo C++ 3.00): вы из Новосибирска отправляетесь в Санкт-Петербург поступать в университет, вам это с трудом удаётся, но через какое-то время вас выгоняют из общаги на улицу за постоянные пьянки и нарушение общественного порядки.

На улице надо выбирать, кем вы будете: «потсан» (есть девушка), «отморозок» (пускают качалку на Петроградской), «гопник» (разводит лохов на деньги) и «нефор» (бесплатно проходит в клуб на Сенной).

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

Впрочем, вот вам небольшая строка, которая работает в Windows NT/2000/XP/Vista, которая установит счётчик в значение 255:

CMD /C "(ECHO e144 ff && ECHO w && ECHO q) | DEBUG GOP2_1.SAV > nul"

Для Windows 7, из которой, оказывается, удалили утилиту DEBUG, я команды написал на PowerShell (в каталоге, где расположен файл сохранения нужно запустить powershell и выполнить следующие команды):

$var=Get-Content -Encoding Byte gop2_1.sav
[byte[]]($var[0..67] + 255 + $var[69..134]) | Set-Content gop2_1.sav -Encoding Byte

Как всегда, в случае с PowerShell, расскажу что здесь происходит в этой небольшой програмке.

Файл читается в переменную $var, читается побайтово как массив чисел. Далее я формирую массив из элеметов с нуля до 67, значения 255 и элементов с 69 до 134-го.

Получившийся массив разношерстных элементов (добавленное мною число «255» имеет тип Int32, остальные — byte) преобразуется к типу «массив байт» и записывается в тот же файл. Set-Content преобразует эти данные в бинарный вид, он знает как их трактовать, так как я явно задал это в параметре.

Так как мне хотелось продемонстрировать как происходит добавление элемента к массиву, преобразование типа массива и передача его по конвееру, я не стал заменять значение одного элемента, что было бы проще и нагляднее.

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

← сюда туда →