Author Archives: himself

Летний сезон

Посмотрел два сериала, которые ждал – GATE и Shimoneta. Всё-таки, J.C.Staff знают, что делают. Разница огромна. У GATE отличный исходник, но экранизация в лучшем случае никакая, если не портит его. И сразу же видно, почему такое впечатление, на примере Shimoneta. Исходник Shimoneta… нормальный. Неглупый, но никаких crowning moment of awesomeness. Тем не менее, он исполнен в аниме отлично. Голоса, музыка, физиономии героев, выбор опенинга-эндинга, нарезка сцен – это всё сделано твёрдо в кассу. Всё-таки, что ни говори, попасть на экранизацию к J.C.Staff для ранобе большое везение.

А Гейт попал к каким-то аниматорам хентая, которые рисовать умеют, а леса за деревьями не видят. Единственная знакомая им нотка в манге была comic relief черта главного героя, что он отаку, ну вот её-то они и раздули на всю серию.

Ещё посмотрел (не досмотрел пока) Kekkai Sensen по манге от автора Тригана – в общем неплохо, но 12 серий явно мало, сюжет так и не успел начаться, отдельные рассказики какие-то. Из-за этого сериал не запоминающийся. Жалко, что не сделали сразу 26, тогда бы, как с Триганом, рассказики перешли в основной сюжет как раз вовремя. А так – персонажи харизматичные, Ясухиро-сенсей на пенсию ещё не вышел, это хорошо.

Граждане на реддите собирают правила безопасности по работе с оружием, список неплохой:

1. Пистолет всегда считается заряженым.
2. Всё, что похоже на пистолет, считается пистолетом.
3. Никогда не направляй пистолет на то, что не хочешь убить.
4. Снимай предохранитель только когда дуло смотрит на цель.
5. Клади палец на курок только когда дуло смотрит на цель.
6. Знай, что у твоей цели за спиной.
7. Стреляй несколько раз.

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

Solved: Delphi XE3 64-bit debugger fails to run

Symptoms:

Delphi XE3 sometimes fails to run 64-bit applications under a debugger. Code would compile, but the part where Delphi switches to debug layout never happens, Delphi just pops a message saying "Cannot run the debugger".

32-bit debugging continues to work normally, and so does "Run without debugging".

The funny part is that this happens irregularly. Sometimes the first attempt would succeed, and then the debugger would run all the time in all instances of Delphi. But if it fails the first time then it would always fail even if you restart Delphi.

I also noticed that the earlier I launch Delphi + debugger, the higher is the chance it would run (and then continue working). It seemed like there was something I was doing or the computer was doing sometime after boot that broke the debugger if I hadn't launched it yet.

Solution:

Stop the "Internet connection sharing" service and restart Delphi.

What might have contributed:

– Uninstalling older versions of Delphi on the same PC.
– Disabling Windows Firewall
– Disabling Windows Defender

(Diagnostics process)

Diagnostics process:

Looking at the successful and failed debugger launches with Process Monitor, in both cases Delphi runs a remote debugger. But on the successful run it's dbkw64_17_0.exe (64 bit) while failed runs spawn rmtdbg170.exe (32 bit). Both are Delphi debuggers, but I suspected that the second one is only supposed to be used for 32 bit debugging.

Further investigation showed that in both cases dbkw64_17_0.exe launches initially, but in the second case it terminates shortly afterwards. Delphi then tries to connect to it through TCP, unable to do so, and restarts it automatically. But the code that does the restart probably wasn't updated to 64 bit and launches 32-bit rmtdbg170.exe instead.

Anyway, the problem lies in the initial instance of dbkw64_17_0.exe terminating. Comparing Process Monitor logs, both successful and failed runs load the libraries and then work with winsock. Stack in the final calls indicates ws2_32.dll's socket() is running – the debugger is probably trying to open it's command socket for listening – after which failed instance abruptly terminates (Thread Exit, Process Exit). I figured socket() probably returns with an error.

Using rohitab's Api Monitor I tried to find out the error code, but this didn't work out. Api Monitor successfully traced all the calls until roughly WSAStartup(), but no further – the last bunch of calls just before the termination always got lost, perhaps the injected driver wasn't being able to send it back to the main app in time before the application terminated.

Then I opened dbkw64_17_0.exe for debugging in Visual Studio. I set a breakpoint to {,,ws2_32.dll}socket, caught the execution there and studied what happens step by step. Turns out, socket() was successful. It was followed by setsockopt call, also successful (to know which functions we were stepping into, I used VS's standard ability to load Windows DLL symbols from Microsoft servers). Then dbkw64_17_0.exe called bind() which failed.

My initial guess was that someone else occupied the port it needed. Checking bind() parameters at MSDN, I looked into RDX, RCX, R8, R9 registers which host parameters in x64 calls, namely the memory referenced by RCX, which kept the requested family and port number. It turned out to be 0xC0F3 but it was unoccupied.

I then traced the call to bind() and from the internal call to WSPBind() got the error code: 0x1D27, that is 10013 (WSAEACCES: Permission denied. An attempt was made to access a socket in a way forbidden by its access permissions).

This code has no single specific reason for it. From the internet it looks like it appears when some driver or network-related service misbehaves. I tried stopping network related services one by one, until finally bind() succeeded. The infringing service was "Internet connection sharing (ICS)". As long as I stop this service, the debugger launches normally, and so long as ICS is running, the debugger would not start.

The reason why sometimes the debugger would run and then run always, is probably that ICS hadn't yet been started or did not yet harm the network stack at the time. If the debugger run at that point, it would bind the socket, and for whatever reason binding at that port would then continue working later. But if the debugger was initially launched after the harm has been done, it wouldn't be able to bind to the port neither once nor at all.

0.09

На площади моего посёлка установлены электронные часы, которые попеременно сообщают время и уровень радиации.

Долгое время они показывали 0.18-0.19 Мкзв/ч, что примерно равно двум бананам в час. Иногда доза чуть падала до 0.17, иногда подскакивала до 0.20, но сильно не менялась.

На девятое мая часы показали 0.09 Мкзв/ч.
На десятое мая часы показали столько же.

И с тех пор часы всегда показывают 0.08-0.10 Мкзв/ч.
Один банан выключили.

Адреналин раш

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

Ещё полтора часа.

Я почитал книгу, пощёлкал кандзи — убил 40 минут. Ещё 50 минут (т.е 20 до посадки, а посадка автобусная). Я от полной скуки стал решать судоку. Пятёрки, единички, пятёрки, шестёрки. Семёрки собрались, троечки. Пятёрки добил, восьмёрки собрал, четвёрочку вставил. Двойки собрал, девятки почти доделал. Люди приходят и уходят, накапливаются и отчаливают волнами, а я решаю судоку. Единички…

И тут я прихожу в себя.
В аэропорту.
Вокруг тишина. Никто никуда не торопится. Пассажиры очередного рейса сонно ждут своего объявления.

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

Лихорадочно смотрю на часы — там 15 минут после времени посадки. Я в полном ужасе хватаю сумки, сознавая непоправимость произошедшего. Бегу к выходу. Там уже, конечно, никого нет. Я бегу вниз по лестнице — двери уже закрыты, даже тех, кто проверяет билеты, нет. Вообще никого нет, двери заперты, стойка пустая. Далеко на поле около самолёта на Москву автобус разгружает пассажиров.

Я думаю, блин, двери откройтесь, я догоню. Самолётов всё равно нет, я бегом дотуда. Добежал бы! Но двери заперты.
Крупный план: прижав кулаки к стеклу, я в отчаянии смотрю на лётное поле.

Рекламная пауза.

Делать нечего — иду наверх. Там стоят какие-то тётки лет 45-50. Я одну спрашиваю:
— На Москву что, уже уехали?
Тётка говорит:
— А это смотря какой, их тут два.
— Два?! Мой такой-то.
Тётка говорит:
— А, этот… Этот даже ещё не объявляли.
— Я не знаю, тянут они чего-то, — говорит тётка.
— Сама на него стою.

— Ф… фф-ф-фууууууух…

Справедливость не справедливость

Сегодня в очередной раз встретил частое заблуждение — размытие значений слов, оно же “ничто ничего не значит”. Звучало это так:
– Но когда перед тобой явная несправедливость, надо не философствовать, а исправлять её.
– Откуда мы знаем, что это было несправедливо. Кто знает, что такое справедливость? Может, мы не в курсе, а есть какие-нибудь причины… Всё на свете происходит не просто так, а вследствие чего-то.
– Ты, получается, считаешь, что всё на свете справедливо? Потому, что мир вообще причинно-следственный, причины есть у всего.
– А так и есть.

Это мнение я слышу не в первый раз, и люди считают, что достигли какого-то философского просветления. Мол, мир таков, каков есть, всё в нём неизбежно, у всего есть причины. Если человеку не повезло, значит, он плохо понимал мир, не видел эти причины. И только полезно, что мир ударил его фактом в лицо, ведь теперь человек будет опытнее и в другой раз приспособится лучше. Поэтому всё на свете справедливо, всё говорит о мире правду; что отвечает истине мира, то и успешно, несправедливого нет.

Но это глупость, прыжок недостаточно высоко, невзятая философская планка.

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

Он (Протагор) первый заявил, что о всяком предмете можно сказать двояко и противоположным образом… о мысли он не заботился, спорил о словах — Софистика в Википедии

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

(ещё пол-страницы)

Для причины есть слово “причина”. Если бы, говоря о справедливости, люди имели в виду только “у всего есть причина”, для неё не придумали бы отдельное слово. Слово существует потому, что существует интуитивное представление, пусть расплывчатое и различающееся у разных людей, но тем не менее, достаточно общее, чтобы служить кирпичиком взаимопонимания.

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

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

Сначала проверяем, что относимся к ясным примерам одинаково. Это справедливо? Ну конечно справедливо. А это? Конечно, нет.
Затем находим границы взаимопонимания. А такой вот сложный случай? По-твоему справедливо? А по-моему, нет.
Наконец, находим принципы, по которым судим о справедливости – так, чтобы чёрное было чёрным, белое было белым, а посередине что-то промежуточное.

Рассуждения в духе “справедливость не справедливость значит не значит” расходятся с этой схемой в самом первом шаге. Человек просто не согласен, что чёрное это чёрное, а белое это белое. С ним невозможно ни о чём говорить, потому, что для этого нету слов – он их все сломал.

В качестве последнего реанимационного жеста можно предложить философу новые слова. “ОК, можешь называть справедливостью что хочешь, но давай поговорим о tadashisa. Когда человеку не платят зарплату, это не-tadashisa, когда за преступление сажают – это tadashisa, компрехенд? Вот если ты видишь преступление, и преступник гуляет на свободе, то не нужно ломать очередное слово, а нужно бы добиваться tadashisa.”

Правда, после этого придётся строить из новых слов в голове у философа все обычные человеческие рассуждения, которые приводят к мысли о ценности общих правил справедливости, и пока это будешь делать, он уже половину забудет, а в другой запутается *sigh*

Паланик

Начал перечитывать Паланика, и обнаружил, что он пишет не так цинично и нарушая устои, как раньше казалось. Паланик пишет романтические комедии. Бойцовский клуб, Уцелевший, Пигмей (последний так вообще). Бойцовский клуб ещё немножко чотко дерзко экранизовали, а у Паланика книжки ну вот примерно как “Пипец” (Kick-ass). Шутки, комедия положений, абсурд, романтика во все поля, цундере главные герои, добро и свет побеждают. Хэппи-энды всегда!

Я это одновременно и по книжкам увидел, и прочёл, что сам Паланик говорит “вот меня многие считают нигилистом, а на самом деле я романтик до глубины души”.

Отдаю фигурки

С прошлой поездки в Японию осталось две ненужных:
UPD: Все фигурки розданы.

(фото)

Сена из Ore no Imouto (несправедливо непопулярная!)

Карен из Моногатарей. Занято.

Как обычно, бесплатно, но если вы не в Москве, беру стоимость пересылки. Можно заодно взять ещё что-нибудь.

Скучный мир, где не знают сортирных шуток

Shimoneta to iu gainen ga sonzai shinai taikutsu na sekai
Книга про недалёкое будущее, когда в погоне за моралью и нравственностью всем в приказном порядке подарили часы Moto 360, которые следят, чтобы вы не говорили нехороших слов. Даже за такие безобидные слова, как “жопа” можно получить большой штраф, а за распространение порнографии сесть в тюрьму. Протагонист обычный японский школьник — сын человека, который 20 лет назад боролся с введением этих законов, поэтому при первом удобном случае его разыскивает и приглашает школьный кружокхулиганская организация SOX, члены которой выбегают на платформы в трусах на голове и разбрасывают непристойные открытки по школе.

По сравнению с таким кратким описанием книга условно неплохая, могло быть хуже. Во всяком случае, это не просто беготня “школьники побеждают завучей, потому, что те тупые”, а ещё и социальное послание о цензуре и её последствиях, пусть и немудрящее, но со спланированной демонстрацией. Многое правдиво: цензуру вводят по шажочкам под предлогом воспитания детей — и что получается; фальшивые мероприятия в поддержку законов, “никто не будет протестовать себе в ущерб, у всех свои жизни”.

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

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

Старые игры крупных фирм

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

Например, Epic, которые сделали Unreal Tournament и теперь уже 16 лет выпускают продолжения и широко раскупаемые движки — это Epic Megagames, авторы старой-престарой задорной досовской аркады Jazz Jackrabit, которая была на всех дисках “1000 игр для IBM PC”.

Remedy, которые прославились Макс Пейном (а потом вторым), а сейчас снимают Алана Вейка и Квантум Брейк, давным-давно сделали отличные гонки с видом сверху Death Rally, тоже досовские, тоже с дисков “1000 игр”. Теперь их переиздали для мобильников и в трёхмерной версии, не знаю, такие же ли они увлекательные.

GSC Game World, авторы долгожданного в своё время Сталкера (подумать только, что уже 3 серии вышло и фирма успела развалиться). “Где-то я это название слышал”… Это то самое GSC Game World, которое было в “About” кривой, явно на коленке написаной виндовской переделки варкрафта-2 Warcraft 2000. В той версии, в которую я играл, в самой игре даже кампании не было, можно было только загружать карты через “Открыть файл”. GSC – это Grigorovich Sergey Constantinovich. Короче, Vasya Pupkin presents.

И само Близзард выросло из The Lost Vikings — в неё целое поколение играло. Тогда Близзард назывались Silicon & Synapse.

Вествуд уже почила, увы — сложно сказать, какие игры были у неё до известности, а какие принесли известность. Практически первая их игра, Dune 2, уже была крупной. Но Вествуд делала и милые квесты, например, “Кирандии”.

Третью часть Myst делала Presto Studios, которая до этого выпустила один из моих любимых квестов, The Journeyman Project (все три части).

Вот я уже шесть примеров вспомнил, ещё кто-нибудь знает?