zHz00 Untitled

воскресенье, 27 ноября 2016
23:18 Untitled [454]
Сестра рассказывает сказку о трёх братьях из Гарри Поттера.

Сестра: И вот они построили мост, входят на него, тут перед ними появляется фигура в плаще...
Я: И говорит "ТЫ НЕ ПРОЙДЁШЬ!"

@темы: Викторика

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

Сегодня я встретил маму из поездки и получил шанс покатать такой чемодан самостоятельно. До этого я катал телеги только грузовые (советские), с диаметром колёс от 15 см (и загрузкой от 25 кг).

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

1. Опыт спуска и под'ёма грузовых телег по лестнице тут бесполезен. Из-за малого диаметра колёс сама сумка цепляет за ступеньки. Остаётся действительно только одно -- взять за ручку и нести.
2. Не только малый диаметр колёс, но и малое расстояние между ними делают бесполезным понатыканные всюду пандусы. Даже если бы расстояние между колёсами было больше на 10-15 см, воспользоваться пандусами не вышло бы всё равно, т.к. большинство пандусов -- с высокими бортиками (П-образный профиль), которые больше, чем расстояние от окружности колеса до поверхности сумки. Также малое расстояние между колёсами придаёт телеге просто божественную устойчивость -- резкий поворот или старт с места -- и телега заваливается на бок.
3. Дело ещё в малом расстоянии от окружности колеса до арки колеса. Я не разглядывал, сколько там, то эта щель забивается мгновенно -- уличной грязью, песком, рассыпанным коммунальщиками, и снегом. После этого тележка уже не катит. В прямом смысле.

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

@темы: Крик души, Наблюдения

URL
пятница, 25 ноября 2016
23:54 Собака Маруся
Мама говорит -- а пошли на выставку Рафаэля в Пушкинский. И мы все пошли.

Выставка была не очень интересная. Картин мало. Людей со значками черепашек-ниндзя замечено не было. Но две вещи поразили:
1. Этому, блин, куску бумаги, 500 лет!
2. А в 16 веке картины рисовали на доске.

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


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

А ещё там же была выставка "обстановка немецкого дома 18 века". И всякие бытовые предметы. Стоит туфля одна. Экспонат подписан. "Полупара туфель"! То есть это не просто туфля, это полупара, видите ли!

@темы: Выставки, Ая, Наблюдения

URL
четверг, 24 ноября 2016
23:55 Untitled [453]
К нам пришёл для переговоров гражданин из дружественной организации.

Коллега: Кофе будешь?
Гражданин: Нет. Я с детства кофе не пью...
Я: А до детства значит пил?
Гражданин: Да.

О_о

@темы: Викторика

URL
среда, 23 ноября 2016
23:55 Зазеркалье
С детства нас учат правильно выбирать тип переменной. Например, если числа она должна представлять только положительные, её можно сделать типа unsigned int -- тогда она сможет представить в два раза больший набор значений.

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

То есть, до разворачивания макрос выглядел так:

loop 3
command1
command2
endloop

А после разворачивания так:

nop
command1
command2
nop
nop
command1
command2
nop
nop
command1
command2
nop

По тактическим соображениям команды начала и конца цикла не удалялись, а заменялись на nop (пустая команда).

Циклы поддерживались только одного уровня вложенности, в то время как существовала необходимость сделать циклы минимум вложенности 2. Это задание было выдано мне. Я решил сразу делать цикл вложенности n. Как определять границы циклов -- плёвая задача. В итоге я написал функцию:

void Unfold(CMacros *pMacros, unsigned int nStart, unsigned int nEnd);

Она должна была брать макрос pMacros, извлекать из него заданный набор команд -- от номера nStart до номера nEnd -- повторять их заданное число раз (тут этот момент опущен) и вставлять после первого встречания тела цикла. Там было написано примерно следующее:

unsigned int x;
for(x=nEnd;x>=nStart;x--)
{
pMacros->aCommands->InsertAt(nEnd+1,pMacros->aCommands->GetAt(x));
}

InsertAt -- вставляет в заданную позицию, сдвигая то, что там было (и всё дальнейшее), дальше по массиву.
aCommands -- массив команд.
GetAt -- обращение к массиву по заданному индексу.

Эта штука работала без нареканий 2 года. Но сегодня ружьё выстрелило. Программа падает. Почему? Выход за границы массива в GetAt.

ОКАЗАЛОСЬ, что nStart равен нулю. Два года работы, десятки скриптов. Ни у одного из них начало цикла не было первой командой! Поэтому значение типа unsigned int (переменная x) всегда сравнивалось с числом 1 или больше (очевидно, первая команда имела номер 0, а не 1). И когда оно становилось равно в худшем случае нулю, цикл прекращался. Когда же цикл оказался стоящим первой командой, возникла прикольная ситуация. Число типа unsigned всегда будет больше либо равно нуля! Если из него вычесть 1, оно станет равно 2^32-1 (если int 32 бита). Перенос! И по этому четырёхмиллиардному смещению программа пытается что-то там прочитать.

Я смотрю на это и говорю -- а давайте поменяем тип x на int. Тогда он станет равным -1, а -1>=0 это ложь. Т.к. условие в цикле for проверяется ДО тела, то цикл завершится ещё до того, как -1 попадёт в аргумент GetAt.

Сделали. Но не помогло. Происходил вход в тело цикла! Тогда мы заменили nStart и nEnd тоже на просто int -- и всё заработало!

Что это означает? Что при проверке условия x>=nStart по неизвестной причине int преобразуется к unsigned int, а не наоборот! И -1 при сравнении превращалась в ту же 2^32-1 или может и во что похуже, но это значения не имеет, т.к. оно было типа unsigned int, а любое число этого типа будет заведомо больше либо равно нулю.

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

@темы: Программирование, Борьба с техникой

URL
вторник, 22 ноября 2016
23:57 Мимик
Сегодня подкинули идею, как ограничить количество голосового спама по сотовому телефону.

Многие телефонные спаммеры используют открытые и закрытые базы данных, так что уже знают, как зовут "клиента". Когда звонят с неизвестного номера и спрашивают "Имя Отчество?" -- надо отвечать "нет, вы ошиблись".

Я говорю -- погоди, а что делать, если кто-то нормальный звонит? Коллега говорит -- нормальные сначала представляются.

Я стал думать -- а вот нифига. Мне кажется (со стороны звонящего) нормальным сначала проверить, туда ли я попал, а потом уже об'яснять, кто я (хотя кто сказал, что я нормальный?). Я изложил эти соображения. Коллега предлагает тогда (со стороны принимающего) СНАЧАЛА спрашивать, кто звонит, а потом уже говорить, что не туда попали.

Надо попробовать.

@темы: Лайфхак, Мысли

URL
понедельник, 21 ноября 2016
23:57 Об ответственности
Я всегда хвастался (или гордился) тем, что заранее не хочу брать на себя ответственность за что-либо, потому что типа её осознаю. И типа это гораздо лучше, чем взять на себя ответственность не понимая её -- и облажаться.

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

@темы: Мысли

URL
воскресенье, 20 ноября 2016
23:59 Одним глазком
В играх серии Dark Souls (по крайней мере, в 1 и 2 частях) есть такая штука -- проход, закрытый туманом.

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

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

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

Можно воспользоваться одним из средств возврата к последнему костру -- косточкой возвращения, чудом "возвращение" или пером (только в дарк соулс 2). Как правило, босс не атакует в ту же секунду, а воспользоваться этим способом можно за 2-3 секунды.

Это полностью убирает проблемы с неопределённостью ситуации за туманом.

@темы: Игры

URL
суббота, 19 ноября 2016
21:00 Мо Янь // Устал рождаться и умирать
Книга о том, как расстрелянный в 1950 году китайский помещик Симэнь Нао перерождается в осла, вола, свинью, собаку, обезьяну и человека, следя при этом за бытовой жизнью тех, кого он знал, и их потомков, а также принимая в этой жизни участие.

Суб'ективно -- очень длинная книга. Читаешь, читаешь, читаешь, читаешь -- а края не видно.

Мо Янь -- этот паршивец -- китайский писатель. Надо сказать, что японскую литературу я читал, а вот китайскую -- нет. Делать выводы о китайской литературе по одному измерению, конечно, не следует.

Но книжка хорошая. Что в ней хорошего -- беллетристическая увлекательность, в первую очередь. Кроме того, книга даёт представление об истории Китая времён второй половины 20 века. То есть -- времён китайского коммунизма и Мао Цзедуна.

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

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

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

Интересно, что этот паршивец Мо Янь зациклен не только на теме сексуальности (это норма!), но и на тебе кастрации. К чему бы это?..

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

В заключение я приведу один из отрывков из романа. Этот отрывок меня очень впечатлил. Примечание: автор включил себя (Мо Яня) в качестве одного из персонажей романа. При этом рассказчики часто ссылаются на него и приводят выдержки из различных книг, которые он якобы написал. По-видимому, большая часть этих книг не существует.

В «Записках о свиноводстве» Мо Янь так пишет о тушах свиней, сброшенных в реку:

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

Неплохо написал, паршивец, ничего не скажешь. Одну только возможность упустил. Случись ему увидеть, как я, Шестнадцатый, Царь свиней, с Сяо Хуа [тоже свинья -- прим. zHz] на спине плыву в тускло-золотом потоке, а за нами гонятся волны — вот тогда он не смерть живописал бы, а жизнь, превозносил бы нас, воспел бы хвалу мне! Я и есть жизненная сила, я — страсть, я — свобода, я — любовь, я — самое прекрасное, самое поразительное проявление жизни на земле.

@темы: Книги

URL
пятница, 18 ноября 2016
23:59 Сколько надо шлакоблоков
Однажды в школе нас повели в Пушкинский музей. Там стоял металлоискатель. Я тогда ещё не носил с собой ножи-пистолеты. С телефонами у меня тогда тоже была напряжёнка. А рамка всё равно пищит.

Во многих местах на пищание рамки закрывают глаза. Но только не там.

Вытащил кошелёк и ключи от квартиры -- всё равно пищит. Я в ужасе -- вытащил всё, что могло пищать, но меня всё равно не пускают!

Начинаю думать -- что ещё могло с собой быть? И вспоминаю. У меня же в кармане лежит калькулятор Электроника МК-85М! У него металлический корпус. Выкладываю перед охранником калькулятор. И рамка перестаёт пищать. После этого меня пустили. Вместе с калькулятором.

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

@темы: Случай из жизни

URL
четверг, 17 ноября 2016
23:53 Untitled [452]
Если у пианино две педали -- это автомат. А если три -- механика.

@темы: Викторика, Автомобили

URL
среда, 16 ноября 2016
23:59 Кит на стеклянной волне
Когда внезапно требуются знания, которые когда-то были, но давно забыты, после напряжения памяти чувствуешь, как они слой за слоем плавно выступают из глубин памяти.

@темы: Восприятие

URL
вторник, 15 ноября 2016
23:52 Со стен на тротуары!
Я заметил, что в Московском метро наблюдается стандартная схема ремонта некоторых станций. Станции должны отвечать следующему требованию: у них на стенах должен быть кафель.

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

Зачем это делают? Достоверных сведений у меня нет, но я читал, что кафель с кафельных стен хорошо обсыпается из-за вибраций.

Какие станции уже стали жертвой такого ремонта? Минимум четыре -- Академическая, Юго-Западная, Кузьминки, Пролетарская (Пролетарской повезло, т.к. у неё сохранили хотя бы исторический шрифт, используемый для написания названия на многих станциях, на Юго-Западной же шрифт сменили).

Также год-два назад обдирали плитку на Киевской Филёвской линии. Чем это закончилось, не знаю. И сейчас обдирают на Ленинском проспекте.

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

UPD. На Ленинском Проспекте на стены решили класть мрамор. На апрель 2017 уложено больше 2/3 мраморной плитки. Я доволен.

@темы: Общественный транспорт

URL
понедельник, 14 ноября 2016
23:59 Untitled [451]
Обнаружил странную особенность Яндекс.Карт, провляющуюся ИЗРЕДКА на двух разных компах. При попытке открыть страницу Яндекс.Карты браузер Firefox намертво зависает. После перезагрузки браузера при попытке открыть ту же страницу -- опять зависает. Помогает перезагрузка.

Встречался ли кто-нибудь с этим?

@темы: Борьба с техникой

URL
воскресенье, 13 ноября 2016
23:57 Мужья на час
а-айсберг фирма странная. Она много лет занимается ремонтом бытовой техники. Кажется, она была уже в конце девяностых. Лет пять назад я с бабушкой возил к ним сломавшийся бабушкин телевизор. Диагностика (платная, кажется) показала, что в телевизоре погорела главная микросхема (это был телевизор из новых, уже с микропроцессором). Таких у них нет. Заказ и установка -- дороже нового телевизора (так часто бывает). И ещё они потеряли подставку-ножку от телевизора. Искать не хотели. Но бабушка настояла -- в итоге нашли. Мастер-диагност тоже никак не хотел продиагностировать -- задерживал сроки. Короче говоря, по факту у меня к ним претензий нет, но впечатление они оставили печальное.

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

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

И вот захожу я в одно помещение, там стоит железный шкаф. Не холодильник. А на нём несколько магнитиков. Я думаю "эх, был бы магнитик а-айсберга, прилепил бы!" Просто потому что.

Поворачиваю голову -- рядом стоит другой шкаф. И на нём налеплен магнит а-айсберга! Лол.

@темы: Случай из жизни

URL
суббота, 12 ноября 2016
23:11 Синхронное плавание
Дело было вчера. Москва превратилась в Элеум Лойс. Метель, снег. Ночь. Наблюдаю картину.

На шоссе на светофоре встают машины. Ряда в каждую сторону два, правый ряд имеет стрелку направо. Поэтому машины встают только в левом.

Подряд -- 4 или 5 штук.

Из них одновременно выходят водители. Я думаю -- у них ДТП что ли?

Нет, они начинают чистить свои ветровые стёкла.

@темы: Автомобили

URL
пятница, 11 ноября 2016
23:51 Untitled [450]
"Сообщества ТНН и КНН решили провести совместную сходку для укрепления своих убеждений."

@темы: Викторика

URL
четверг, 10 ноября 2016
23:59 Выученная беспомощность
В детстве мне мама говорила, что надо смотреть перевод слов незнакомых в английском языке -- в бумажном словаре. Потому что если она мне сразу скажет перевод, я слово не запомню. Впоследствии я убедился, что она права. Более того, поиск в электронном словаре (на компьютере) также не приводит к запоминанию слова.

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

Но запоминание не происходит. Или просто лень.

Но это ладно. Любопытна обратная ситуация. У нас есть специалист по другим вопросам, которые тоже всех касаются. Так вот, он наоборот ругается, когда к нему не обращаются, а решают проблему сами. Говорит "а вдруг вы что-нибудь сломаете".

@темы: Восприятие

URL
среда, 09 ноября 2016
23:59 Аппендикс
Мне дали готовый проект для микроконтроллера когда-то. И вот понадобилось добавить туда поддержку SPI (последовательный аппаратный интерфейс для связи с внешними устройствами). Проект на Си, контроллер LPC.

Обычно есть готовые библиотеки для работы с частями контроллера. А у контроллера поддержка SPI была. Но заголовочного файла для SPI почему-то не было. Однако файлы имели имена типа lpc_model_device.h, где model -- модель устройства, а device -- подсистема контроллера. Например, lpc_1111_usart.h -- поддержка USART.

Забиваю в гугл -- lpc_1111_spi.h -- и нахожу библиотеку, из которой были стырены заголовочные файлы проекта, который мне дали. Библиотека от производителя -- NXP. Беру нужные два файла (заголовочный и сишный), качаю, добавляю в проект, пытаюсь собрать.

Вижу сообщение об ошибке:

LPC_SPI_BASE: identifier not found.

Как же так. Открываю "базовый" заголовочный файл, содержащий идентификаторы всех устройств (lpc_1111_cgu.h). Он имеет ту же дату, что и файл в интернете. Но в файле в интернете этот идентификатор есть! А в моём его нет.

Смотрю, что написано в моём:

enum DEVICES
{
LPC_DEV1_BASE=0,
//...
LPC_SSP_BASE,
LPC_I2S_BASE=LPC_SSP_BASE+2,
///...
};

В файле из интернета же после SSP_BASE расположен SPI_BASE. То есть авторы проекта его зачем-то не просто вырезали из готовых исходников, но и даже подправили нумерацию, чтобы не сбилась. То есть, это было сделано сознательно. Зачем -- ещё предстоит выяснить.

@темы: Программирование, Борьба с техникой

URL
вторник, 08 ноября 2016
23:59 Как я нюхал слонов
Пост, обещанный мной когда-то.

Однажды, несколько лет назад, я оказался в московском зоопарке -- я туда привёл одного знакомого, который был в Москве проездом. В зоопарке в это время шёл грандиозный ремонт. Вся центральная часть была закрыта, приходилось ходить вокруг. В процессе хождения мы дошли до павильона "слоны". Два слона стояли снаружи. Когда мы зашли внутрь, сразу стало понятно, что третий слон внутри. Потому что вокруг стояла сильная вонь. Я затрудняюсь охарактеризовать её, поскольку она была незнакомой, но явно биологического происхождения. Возможно, это был запах не слона, а его говна. Или ещё чего-нибудь.

Мы походили вокруг -- там была лестница и два этажа. С каждого этажа был вид на "арену", в центре которой стоял слон. Просто стоял. Зачем он это делал -- я не знаю.

Посмотрев на слона, мы пошли к выходу. И тут я заметил одну потрясающую вещь -- я перестал чувствовать вонь. Остался только запах сена...

Мой знакомый подтвердил моё наблюдение.

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

@темы: Случай из жизни, Восприятие, Наблюдения

URL