Прототип / Primer

Фильм про группу товарищей, которые случайно сделали машину времени. Говорят, это головоломка. “Тот, кто сумеет с первого раза понять происходящее в Праймере – либо гений, либо брехун”. Действительно, поначалу всё понятно, но чем дальше, тем сложнее успевать за сюжетом. Как на экзамене: пропустил пару слов – и всё, уже не догонишь.

Научно-фантастическая головоломка с машинами времени – это очень круто.
Но, к сожалению, Праймер – это не очень круто.
Потому, что у него отсутствует “научно-фантастическая” часть.

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

“Я специально не дал этому объяснения”, – говорит режиссёр, – “Герои тоже не знают ответа. Я хотел показать, что они запутались, не понимают, почему и что происходит”.

Ну здравствуйте! Либо дудочка, либо кувшинчик. Либо фильм о том, как чувствуют себя путешественники во времени – либо головоломка. Праймер очень непонятный фильм, и только одно заставляет разбираться в нём: наличие правильного ответа. Такого, при котором каждому факту найдётся место.

Этого ответа в Праймере нет. В глубине своей Праймер – гуманитарный, а не естественно-научный фильм. Это студент филологического факультета, который выучил все термины математики и в каких сочетаниях их можно использовать. Его слова нельзя сразу отвергнуть, как чушь. Возможно, он гений. Либо просто говорит что попало. Праймер – второе.

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

Раз два, раз два, раз два

Сегодня международный день проверки микрофона: 12.12.12.
А 20-го будет международный день перемены порядка байт: 2012.12.20.

Отаку-ко ацумарэ!

С тех пор прошло два года, так что надо бы эту историю рассказать.

Кирино, Куронеко и Саори в “Имоте” познакомились через японский вконтактик, создав группу “Девочки-отаку, объединяйтесь!” И вот, летом 2010-го показывали этот сериал, а зимой мне однажды было скучно, и я решил созвать сходочку Ычана.
Но не в /b/, а в /a/ – я хотел созвать анимешников.
И назвал тему, конечно, “Девочки-отаку, объединяйтесь!”

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

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

Тема не утонула, народ в ней общался, и человек пять-шесть даже собрались идти на встречу. Мы договорились встретиться у выхода на Лубянке.
А дело было зимой. Надев пальто, я поехал по холодной Москве к месту встречи… и приехал последним.

Выходя из метро на зимний ветер и поднимаясь по лестнице, я искал компанию взглядом.

Можно уже догадаться, чем кончилось.
Пришёл один человек.

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

Консты нереально круты

Да, я понимаю, что тут никто не пишет на дельфи, но раз уж я иногда что-то пишу о ней, то позвольте мне.

В дельфи есть элемент языка, которым все пренебрегают. Очень крутой. Это атрибут входного параметра const.
Вместо:
function IsStringAbrakadabra(s:string): boolean
Получится:
function IsStringAbrakadabra(const s:string): boolean

Зачем?
Строки в Дельфи ведут учёт ссылок. Каждое присваивание увеличивает счётчик на 1. Каждое зануление – уменьшает его. Поэтому любая функция, которая получает строки, преобразуется компилятором в следующую:

UStrLAsg(s); //увеличить счётчик ссылок
try
  //сама функция
finally
  UStrLClr(s); //уменьшить счётчик ссылок
end;

Два лишних вызова! И фрейм try..finally (это очень дорогая конструкция). Эта обёртка легко может тратить больше времени, чем сама ваша функция! Скомпилите и посмотрите в ассемблер – инлайнить такую дуру тоже пропадает всякая выгода.

На помощь спешит модификатор const! Он говорит компилятору, что вы клянётесь героиней любимого мультика не трогать полученной строки. Тогда можно учёт ссылок не вести, и фрейм try..finally тоже не нужен. Вместо 60 ассемблерных инструкций ваша функция внезапно компилируется в шесть!

Но это ещё не всё.
Мало добавлять const к строковым параметрам. Строки могут передаваться неявно. Функция, которая получает структуру со строкой внутри, тоже требует учёта ссылок и фрейма try..finally. Даже хуже: вместо прямолинейного UStrLAsg будет вызван AddRefRecord, который с помощью некоего подобия рефлекшна изучает вашу структуру и решает, каким полям нужен какой учёт ссылок. И так в каждой функции!
Дельфи не глупая, и если структуре совсем не нужен учёт ссылок, она поймёт это при компиляции, и фрейм не вставит. Но когда хоть одно поле требует учёта, вы получите пенальти в размере полного разбора всей структуры дважды.

Поэтому ставьте const везде, где можно. Ставьте const всему, что передаёте на копирование во всевозможные “SetSomething” или “InitSomething”. В крайнем случае он будет просто подсказкой читающему код.

Ещё очень важная информация: отключайте “String format checking” в настройках компиляции. Всегда. Сразу же. Эту опцию следовало бы назвать “замедлить в три раза все операции со строками, для того, чтобы спрятать от вас чудовищные баги в вашем коде”.

Два страшных выражения

Смысла которых никто не знает:
1. Всплеснуть руками.
2. Трагически заламывать руки.

Как “всплескивают руками”? Когда это делают? Вспоминается только, что со словами “Какой кошмар!”. А заламывание рук – знак отчаяния.

Оторимоногатари

Дочитал Оторимоногатари (История о приманке).

Кабукимоногатари” и “Ханамоногатари” приучили к тому, что в мире Моногатарей ничего не меняется, разве что Арараги машину купил. Каждая книга возвращает рычаг в положение ноль.

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

И когда страниц остаётся пять или четыре, вдруг понимаешь: а он и не собирается. Не будет никакого “мальчик сел в свою машину времени, полетел назад и всё отменил”.
Так всё и кончается – необратимыми переменами. Какими – не угадаете, но странными и мрачными.

Облачный атлас

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

Мы как кванты, которые… в общем, кванты.”

Если забыть о прекрасной музыке, увлекательном сюжете и общей грандиозности, вы только что посмотрели “Облачный атлас”. В его обширном философском подтексте каждый найдёт свои любимые ответы на свои любимые вопросы.

Shifuku

В японской прозе постоянно встречается “обычная”, “повседневная” или “будничная одежда” (shifuku, 私服 ). “Навстречу мне вышел отец в обычной одежде”, “в коридоре стояла Кирино в обычной одежде”, “по пути нам встретился Акаги в повседневной одежде”.

Понятно, что это значит “не в школьной форме, не в костюме готик-лолиты и не в рабочем пиджаке”. Но переводить-то неудобно! Читатель скажет – вот заладили: обычная одежда, обычная одежда… Если она обычная, чего о ней говорить?

Дело в том, что в Японии значительно теплее, чем у нас.
В России десять месяцев из двенадцати на улице ветер, слякоть или мороз. Поэтому у нас существуют “домашняя” и “уличная одежда”. Мы привыкли к ним так же, как японцы привыкли к своей “обычной”. Нам не покажутся странными фразы:
“Навстречу мне вышел отец в домашней одежде”
“В коридоре стояла Кирино в уличной одежде”
“По пути нам встретился Акаги в уличной одежде”

Это какие-никакие, а уточнения. Конечно, лучше бы сказать “Акаги в джинсах и куртке поверх футболки”, но “Акаги в обычной одежде” звучит хуже, согласитесь.

Итак, если текст позволяет – если нет картинок – заменяйте “обычную одежду” на “домашнюю” или “уличную”, по обстоятельствам. Ничего страшного, если герой в “уличной одежде” сразу пройдёт к себе в комнату: в тёплом климате Японии это не вызовет вопросов (на самом деле ведь так и происходит).
А если мешают картинки (трудно назвать “уличной одеждой” майку с шортами) – просто замените “обычную одежду” её описанием.

Это вольность перевода, но результат того стоит.

HDTV

Помните, год назад я говорил, что блюреи не нужны? Ну так вот, купив телевизор, который их проигрывает, я, разумеется, поменял мнение на противоположное: теперь я объективно могу заявить, что блюреи – лучшее из всего, что случалось с человечеством после предыдущей случившейся с ним не менее хорошей вещи.

Теперь-то мне стало понятно, зачем мыII-Subs выпускали Бакемоногатри в BD-формате. Это затем, чтоб я его через пару лет на телевизоре посмотрел. От качества перехватывает дыхание. (Ну или в комнате наконец надо проветрить)

Но лучше я расскажу о телевизоре – возможно, кого-то заинтересует.

Оказывается, современные телевизоры умеют подключаться к рутеру по Wi-Fi и проигрывать видео с компьютеров напрямую. Не нужно тянуть никакие провода, кроме обычного электричества. И понимают они почти все популярные форматы и кодеки, включая матрёшку. Только новомодное десятибитное видео на телевизоре пока проигрывается с подтёками.
Можно поставить телевизор, воткнуть в розетку и смотреть по воздуху всё, что лежит у вас на компьютере!
Да если б я знал раньше, я бы из больницы в магазин побежал.

Конечно, на деле всё немного неудобней. Просто расшарить файлы нельзя: нужно ставить программу, сервер медиа-вещания, и объяснять ей, где у вас что лежит. Программа пожует-пожуёт ваши файлы, и они станут доступны на телевизоре.

Хорошие новости: таких программ много. Не обязательно использовать глючную от Samsungвашего корейского производителя телевизора, можно скачать бесплатную открытую и более надёжную Serviio, например (к ней ещё есть плагины). Ну или любую другую.
Хорошие новости: Serviio и некоторые другие программы умеют перекодировать на лету. Если телевизор всё-таки не поддерживает формат файла, так его можно посмотреть.

Плохие новости: безупречных медиа-вещателей нет. Все они глючны, какие больше, какие меньше! Один раз настроить и забыть не выйдет; привыкайте, что с каждым новым сериалом или фильмом придётся минут 15 возиться, перезагружая сервер, скармливая ему файлы, гладя по головке, упрашивая проиндексировать… Ну почему ты не индексируешь? Ну что тебе не нравится? Ах не под тем аккаунтом ты запущен? Ах под администратором тебе не нравится? Запустить твою службу под обычным пользователем? Конечно, запущу, ты только не плачь.
Привыкайте, что телевизор будет файл за файлом отказываться проигрывать, упрямо глядя на вас, как баран, и талдыча: “Ничего не знаю, формат пока не поддерживается”. Что перекодированный файл он не сможет скроллить. Вот так! Смотрите от начала и до конца. Что наткнувшись на восьмую серию Нисемоногатари, медиа-сервер сойдёт с ума, и все дальнейшие папки на телевизоре будут одинаково называться “Ore no imouto”.

Но зато вы можете посмотреть Бакемоногатари в офигенном разрешении 1080p. Это правда очень красиво.

P.S. Плохие новости: медиа-серверы не очень любят внешние сабы, только встроенные. И у встроенных теряется разметка.
Хорошие новости: скоро Новый год.

P.P.S. Забыл сказать, что на телевизор можно устанавливать приложения для работы с интернетом. Например, можно смотреть ютюб. Только это неудобно.

Верните болт

Был у нас переходник с евророзетки на советскую. Маленький белый такой. Если присмотреться, он состоял из двух частей, воткнутых одна в другую и соединённых болтом.
Кто-то пришёл.
Болт выкрутил.
Унёс.
А две части оставил.

Вот нафига? Болтов других не было?