LJ bug: protected entries count visible

Между прочим, в ЖЖ есть небольшой баг, позволяющий видеть, когда и сколько вы писали подзамочных записей.
Если зайти в календарь, там отображается суммарное количество записей. Но если выбрать какой-либо день, то вы можете увидеть, что вам показали меньше записей, чем должны были или же вообще «there were no entries on this day». Определить количество подзамочных записей — пару раз плюнуть.
Может показаться, что фигня, а не баг, но только тем, кто не имеет никакого представления о компьютерной безопасности. Тут правило простое — если кто-то может увидеть то, чего он видеть не должен — это уже охрененный баг. Например, вы написали подзамочную запись и кто-то увидел, что вы её написали, но не увидел её содержимое. Что он может ещё узнать? До фига всего, если честно. Например:
* У вас есть, что от него скрывать.
* Вы писали в ЖЖ в такой-то день.
* Значит, выходили в Интернет.
Теперь строим некую гипотетическую ситуацию, в которой этот кто-то думал (и должен был думать), что вы находитесь Хрен знает где, где, допустим, не только Интернета, но даже сортира и водопровода нет. А тут вдруг выясняется, что это не так. Таким образом, этот человек может сделать некоторые выводы о вашем месторасположении, построить некоторые догадки о ваших действиях… Параноики могут продолжить, но потенциальная опасность подобных знаний очевидна. Это ещё если забыть о том, что некоторым людям может быть просто не хочется, чтобы о них знали, что они вообще пишут подзамочные записи (допустим, те люди, которые их читают, помалкивают в тряпочку).
Причём баг этот уже довольно давно.
А если перелистывать записи по одной, то вообще можете наткнуться на сообщение «You are not authorized to view this protected entry» при нажатии на «взад» или «вперёд». Благодаря этому можно определить последовательность записей. Теперь, если представим себе ситуацию, в которой на день Хэ приходилось 2 записи, одна из которых — подзамочная, причём идёт она по времени после открытой. А открытая написана в 23:55. Вывод — подзамочная написана в интервале времени от 23:55 до 00:00. Из этого в определённых ситуациях можно догадаться и о приблизительном содержимом этой записи… В общем, мало не покажется!

Hello Alqualos, часть 2

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

23:58:01 [—-] Sandra:
Hello Alqualos
00:01:07 [—-] Alqualos:
Detecting peer type…
Using meta-AI heuristic algorithm.
Possibilities:
20% Moron, imbecile or idiot.
30% Robot.
50% Satanist.
Analysis complete.
Is this result ok? ([Y]es / [N]o / [D]on’t know / [H]ey, you are idiot yourself!)
00:01:08 [—-] Sandra:
look ;) http://handymancrew.net/images/myphoto.jpg
00:14:42 [—-] Alqualos:
Shutting down…
00:14:50 [—-] Sandra:
look ;) http://handymancrew.net/images/myphoto.jpg
00:16:21 [—-] Alqualos:
Detecting peer type… (pass 2)
Using meta-AI post-heuristic algorithm.
Possibilities:
99% Robot.
1% Moron, imbecile or idiot.
1% Satanist.
Analysis complete.
Is this result ok? ([Y]es / [N]o / [D]on’t know / [H]ey, you are robot yourself!)
00:16:23 [—-] Sandra:
look ;) http://handymancrew.net/images/myphoto.jpg

По указанному адресу находится документ в формате HTML с расширением JPG, содержащий ссылку на ещё один JPG, уже истинный. Этот истинный содержит фотографию одетого женского тела средней степени уродства. Кроме ссылки на JPG первый документ содержит ещё некий iframe размером в 1 пиксел с совершенно неприличным урлом. Неприличный урл при расшифровке равен «http://toolbarbiz.biz/dl/adv552.php» и ничего интересного, кроме «Internal Server Error» не сообщает. Мда.

Наиболее вероятное предположение: наверное, когда-то там бесплатно раздавали вирусы, а потом то ли раздача вирусов накрылась, то ли она подавилась моим FreeBSD/Firefox. В общем, инстинкты меня не обманывали: нажатие кнопки «Kill» — это действительно самое разумное решение этой проблемы. Правда, временное.

Не с глаголами или «не» с глаголами?

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

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

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

Что стоило сделать это с глаголами? Было бы: «Я не хочу» и «Я нехочу». Опять же, для контраста можно было бы и применять дополнительные слова, например: «Я не хочу» и «Я совсем нехочу». Но…

Utena Musical

А вы знаете, мьюзикл «Утена» — это даже не отстой. Это ацтой полнейший, или ваще аццтой.

Впрочем, я вру, как всегда. Хотя мне на самом деле не понравилось, уж больно рожи страшные. Разве что Химемия ничего, а у Утены, например, вечно рожа то хмурая, то кислая, то выпендрёжная. И потом, Утена с чёрными волосами — это уже не мировая революция, это натуральный конец света. Именно конец, прошу заметить, а не край. Что у них, розовой краски не нашлось? Сравнительно терпимо выглядят Тоога, Диос, Сайонджи и Акио. Бедного Микки задвинули в самую жопу, я его даже не очень разглядел. Джюри какая-то тоже противная… Вакаба ещё ничего.

А самое главное — как и во всех мьюзиклах, присутствует некая серость (если, конечно, не смотреть с закрытыми глазами), в том смысле, что выразить что-то с помощью музыки и видео довольно тяжело, обычно музыка оказывается самодостаточной и видео только мешает (потому эффект серости и исчезает, если глаза закрыть, а вовсе не потому что во тьме все кошки серые). При этом наблюдается закономерность, что чем меньше в мьюзикле соотношение песен ко всему остальному, тем легче от этого эффекта избавиться. Тут, похоже, никто и не пытался. Лучший мьюзикл, что я видел — это, пожалуй, Jesus Christ — Superstar, там песен много, и всё равно неплохо вышло.

Зато попутно изобрёл фразочку «Kyou kara watashi wa anata no maou desu», что меня бы сильно порадовало. Ещё возникла мысль, что столько раз я видел, как извлекается меч Диоса, а как они его обратно запихивают — почему-то не показывают. Ещё почему-то Shadow Girl стала ассоциироваться с Shadow Warrior. Только ядерной боеголовки ей сильно не хватает…

Помимо «Kyou kara maou» представил себе сюжетец, в котором в академию Оотори случайно забрёл Химура-доно и случайно же оказался втянут в какую-то дуэль. Причём по плану так должно было, что Перец-1, с которым он дуэлировал, должен был потом победить Перца-2 и бесплатно получить никому не нужный спам, ну, то есть, вы поняли. Поэтому Диос с Акио напару стали строить всякие планы: Акио думал, как бы получше запудрить мозги всем, так, чтобы все действовали, как надо и не выпендривались, а Диос думал, в какой момент ему удобнее всего спрыгнуть из замка вниз на победителя. Только вот дуэль закончилась, не успев начаться, причём никто толком не понял, как, но, я думаю, не надо объяснять, кто победил? Хитен Мицуруги Рю — это вам не какая-то несчастная сила Диоса…

UNIX как инструмент массовой обработки файлов на примере перемещения анимэ

Нет, вот за что я люблю UNIX? Да что вы, я его ненавижу, так же, как и всех вас, впрочем.
Думаю, нет нужды объяснять, что это всё ложь, да? Тем более, что это ещё не факт.
Но это всё также неважно, впрочем. (Пидорасы ебут всех в жопу! Таков закон.)

Впрочем, я отвлёкся. Так вот, за что я люблю UNIX. В Windows у вас есть, образно говоря, некоторая кнопка в окне некоторой программы, которая делает нечто. Если у вас этой кнопки ни в одной программе нет, этого нечто вам ни за что не сделать, пока не найдёте программу, в которой эта кнопка есть. В результате потенциал вашей системы ограничен максимальным потенциалом установленного на нём ПО.

В UNIX он ограничен не максимальным, а суммарным потенциалом. Это практически недостижимый предел, но поскольку он существенно выше неотъемлемого предела Windows, то и средний потенциал получается тоже существенно выше.

Пример. У вас есть большая кипа файлов в одной директории, скажем, в формате AVI. Они имеют имена примерно одинакового вида, скажем «<мусор><Название><мусор><номер серии><мусор>.avi». При этом в названии могут присутствовать вообще произвольные символы, а мусор может состоять из пробелов, знаков подчёркивания, дефисов и всякой фигни в квадратных или круглых скобках, например «[mahou]_Tsukuyomi_Moon_Phase_-_24_[0E8E3AB7].avi» или «Gakuen Alice 01 (Naisho) (3017C01A).avi». Номер серии состоит из цифр, но может содержать букву v в середине, например «Rozen Maiden ~traumend~ 01v2.avi».

Задача. Для каждого анимэ создать отдельную директорию. В неё покидать все файлы, относящиеся к этому анимэ. Имена файлов, допустим, оставить как есть, но директории назвать по принципу «последовательность слов, разделённых пробелами», то есть файл «[mahou]_Tsukuyomi_Moon_Phase_-_24_[0E8E3AB7].avi» поместить в директорию «Tsukuyomi Moon Phase». Формулировку можно варьировать, но это уже дело вкуса, мне, например, предпочтителен именно такой вариант. Ещё усложним задачу дополнительным условием: в директории с файлами уже есть поддиректории, их никак трогать не нужно и их содержимое тоже. Только файлы в текущей директории. Кроме того, у некоторых анимэ есть субтитры, имена их файлов идентичны AVI’шкам, только расширения другие. Их тоже нужно поместить туда же, куда и AVI’шки.

Как вы это будете делать в Windows? Ну, я даже не знаю… Найдёте (или напишете) специальную программу для такого дела. Или не найдёте и не напишете, и будете долго материться и переписывать файлы вручную, рискуя где-нибудь что-нибудь потерять.

В UNIX задача решается следующей командой:
for i in *.avi; do if [ -f «$i» ]; then dn=»`echo -n «$i» | sed -E -e’s/\[[^]]*]|\([^)]*\)//g’ -e ‘s/[ _-]+/ /g’ -e’s/^ +| *[[:digit:]]+(v[[:digit:]]+)? *\.avi$//g’`»; if ! echo «$dn» | grep ‘\.avi$’ >/dev/null; then bn=»`echo -n «$i» | sed -e ‘s/\.avi$//’`»; mkdir -p «$dn»; mv «$bn».* «$dn»; fi; fi; done

Конечно, на составление этой команды, если считать вместе с написанием данного поста и тестированием её на той части моего анимэ, которое лежит на харде, у меня ушёл ровно час, притом что я довольно хреново этой кухней вообще владею (пока). Но, уверяю вас, это было бы гораздо увлекательнее, чем ковыряться вручную. Причём если ничего переименовывать не надо, то это ещё ладно, а если вы, к примеру, хотите убрать из названий файлов всякие «[mahou]», а также знаки подчёркивания (или наоборот, поменять пробелы на них)? Тогда вообще… Частично эту задачу может решить коммандеровский multi-rename, но и его возможности ограничены. Чуете, что я имел в виду под потенциалом? Здесь же использованы несколько инструментов (bash, send, echo, mkdir, mv, grep), каждый из которых сам по себе мало чего может, но суммарный результат налицо.

Конечно, это не универсальная команда. К примеру, при тестировании на моём анимэ она не справилась со следующими именами:
«[mahou]_Tsukuyomi_Moon_Phase_Ep_01_Preview_[2DCA396A].avi»
«[a-e]_Tenshi_na_Konamaiki_50_Final_Episode_[DVD]_[CB9C5B6C].avi»
«UtenaMusical.avi»
«[Koi] AIR TV — Prelude [B6E1FEA9].avi»
«Kaze to Ki no Uta.avi»
«[CAP]Nurse_Witch_Komugi-chan_Magikarte_2.5(GerSub)_[9426F4F5].avi»
«Battle Athletes 3-4.avi»
«[a-e]_Tenshi_na_Konamaiki_36_v2_[DVD][1BF6950D].avi»
А также с субтитрами к «Tenchi Muyo Ryo-ou-ki», которые все имели «rus» после номера серии, в отличие от AVI’шек. На входе было 339 файлов совершенно разнообразного происхождения. Но всё же результат налицо. А если вам эту задачу приходится решать довольно часто, никто вам не мешает сохранить куда-нибудь эту команду и каждый последующий раз вводить что-нибудь вроде «anmove» и наслаждаться результатом.

Замечу также, что в решении нет ничего специфичного для AVI-файлов, анимэ или процесса переименования или перемещения как такового. Точно также можно решить любую задачу «сделать с большим количеством файлов нечто», например: переименовать mp3-файлы в соответствии с ID3 (или наоборот — прописать ID3 в соответствии с именами файлов и/или директорий), отправить кучу произвольных файлов по почте, предварительно разбив их на фрагменты не более мегабайта, составить плейлист, отсортированный в хронологическом порядке и из которого выброшены дубли (скажем, песни с одинаковыми названиями в ID3) и так далее.

Статистика мудаков, дебилов и пидорасов

Общеизвестно, что весь мир состоит из мудаков, дебилов и пидорасов. Гораздо менее известно, кого из них больше и насколько.

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

С дебилами сложнее. Они обычно измеряются в локальном пространстве (что само по себе примечательно, хоть и не очень ясны причины и следствия этого), где их содержание, очевидно, обязано быть более высоким, чем во вселенной. Более подробное ислледование позволяет нам узнать, что дебилов в мире — много, а времени — мало. Я всегда подозревал что-то подобное, не смотря на то, что мой личный опыт говорит мне, что времени как минимум столько же, но всё-таки приятно увидеть научное подтверждение своим догадкам. Если копаться дальше, становится ясно также, что фраза «how many morons does it take to black out of the sun» ((C) «Полный бред» (ТМ))звучит почти как «how many tears flow away to become a sea of fears» ((C) Helloween). Что при этом совершенно непонятно, так это как же она переводится (если вообще). В общем, в конечном итоге установить процентное содержание дебилов так и не удалось. Однако, известно, что суммарный процент дебилов, идиотов и имбецилов составляет примерно 2,2%. Следовательно, можно утверждать, что дебилов не более 2,2%.

Теперь легко вычислить процент мудаков: 100 — 7 — 2,2 = 90,8. Поскольку данные являются, строго говоря, неточными, можно сказать, что мудаков в мире около 90%.

Rise of the Triad

Играю в порт Rise of the Triad. Игра 1995 года, хотя она немного запоздала, ибо хуже дума, а оба дума вышли раньше.

Но. Как же народ старался! Ограничения движка: весь мир обязан состоять из квадратов (даже не прямоугольников) одинаковой высоты на одинаковом уровне. Это значит: никаких лестниц, многоэтажных зданий, или даже просто ступенек. Что было сделано, чтобы это компенсировать. Ну, поскольку мир обязан быть убогим, осталось максимально разнообразить его наполнение.

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

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

Всякие бонусы! Режим бога — не просто бессмертие, но бессмертие плюс рука бога, выпускающая самонаводящиеся светящиеся шарики, дезинтегрирующие всех противников. Шарик летает от цели к цели до тех пор, пока в пределах его видимости есть хоть один враг. Если нет, то просто летит дальше, пока либо не увидит кого-нибудь, либо не врежется во что-нибудь. Потрясающая вещь. Также режим собаки, который тоже почему-то даёт бессмертие, но помимо него — способность пролезать в узкие щели и неплохое оружие: собака может либо просто нехило кусать врагов, либо может немного повыть и затем своим лаем разорвать всех видимых врагов в клочья. Тоже потрясающе. Кроме того — режим полёта, всякая временная броня, а также два прикола: режим резинки и грибной режим. В первом персонаж отскакивает от всех поверхностей как резиновый мячик. Во втором — шатается как пьяный, при этом все предметы в его поле зрения, способные двигаться, мигают, что порой помогает найти какой-нибудь секрет.

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

В общем, если это сравнивать с каким-нибудь третьим думом, он проигрывает по всем параметрам, кроме, конечно, качества графики, звука и музыки (хотя насчёт последней не помню, что там в третьем думе). Даже дизайн уровней, который с помощью движка от третьего дума теоретически можно было сделать просто потрясающий, у Rise of the Triad всё равно лучше, ибо хоть какое-то разнообразие вносит.

Жаль только, что порт ни капельки не улучшает графику, в отличие от портов думовского движка, к примеру. Как было 320×200, так и выглядит, хоть и работает при 640×480 и 85 Гц.

А ещё есть Blood, Redneck Rampage и Shadow Warrior. Все разные (хоть и почти на одном движке) и все просто потрясающи.