Как-то раз коллега привёл на работу своего сына-шестилетку. Сложно с ним было говорить.
-- Смотри, что тут лежало! -- Это не моё. -- А знаешь, что тут написано?
В руках у него была бумажка с надписью типа レーザークラス1機械.
-- Да, тут написано по-японски. -- Нет, тут написано древними буквами! -- Тут написано по-японски! -- Древними буквами! -- Я знаю японский, поэтому могу сказать, что тут точно написано по-японски. -- Но это древние буквы!
И тут до меня дошло, что это и правда древние буквы.
-- Апчхи! -- Желаю тебе, чтобы ты... вообще никогда не болел! -- Эмм... это очень плохое пожелание. Знаете, кто никогда не болеет? -- Эх, ладно. Желаю тебе, чтобы ты болел! Но редко и слабо...
Оказалось, что если жмейл считает ваш вход подозрительным, он вас просто не пустит. Может, это из-за того, что я не указал номер телефона.
Так или иначе, мне предложили три варианта: 1. Ответьте на контрольный вопрос; 2. Укажите ваш емейл для восстановления пароля; 3. Свяжитесь с нами и докажите вашу личность по переписке.
Вариант 3 мне не подходил, т.к. в аккаунт мне надо было срочно.
Вариант 1 казался самым лёгким, но ответ, который я помнил, почему-то не подошёл.
Вариант 2 казался непроходимым. Я думал, придётся подтверждать владение вторым емейлом. А я его даже не помнил.
Но оказалось, что его надо просто указать, причём мне подсказали первые буквы! Так я вспомнил -- и меня пустили.
В этих командировках я уже порвал две пары штанов, сломал пару тапочек и продырявил несчётное количество носков.
Сегодня меня отправили в третий раз. Я решил, что хватит -- до этого меня дважды отправляли "на неделю", что в итоге превращалось в месяц. А я ведь честно брал небольшую сумку вещей на неделю. В этот раз я решил лететь с багажом. Пусть лучше я пробуду неделю с багажом, чем месяц без багажа.
Решение оказалось правильным, но совсем по иной причине. Я зашёл в метро, спустился, посмотрел на сумку с ручной кладью и обнаружил в ней отверстие. Да, сумка тоже дала дуба. Отверстие было большое -- порвалась вся боковая сторона возле дна. Это сулило мне две проблемы: -- если выпало что-то важное? -- как теперь ехать дальше? (возвращаться домой и менять сумку времени не было)
Для начала я сел в поезд, что было не очень остроумно, поскольку это сокращало шанс и увеличивало время нахождения чего-то важного, что выпало. Потом я дождался, пока получится сесть. А потом уже стал смотреть, всё ли на месте. Удивительно, но ничего не выпало. Ни паспорт, ни ключи от с'ёмной квартиры, ни флешка с исходниками ПО (за неё я переживал больше всего).
А дальше мне предстояло то, что я называю в NetHack "сортировкой лута". В реальности это почти так же нудно, как в игре.
***
В последней партии NetHack на плане воды я оказался в ситуации, когда мне надо было переплыть воду. При этом я не мог оставить свои вещи, а потом вернуться. Но зайти в воду просто так я не мог тоже: вещи бы промокли. Единственное спасение -- промасленый мешок. У меня его не было, но было ещё несколько неизрасходованных желаний. Я заказал себе этот мешок, а потом понял, что у меня есть два основных мешка с вещами: один волшебный, а другой обычный. Волшебный мешок уменьшает вес положенных в него предметов. Это позволяет носить с собой больше вещей. Но в волшебный мешок нельзя класть некоторые предметы. От этого он взрывается. Эти предметы я ношу в обычном мешке, чтобы уменьшить шанс случайного складывания их в волшебный мешок (один раз у меня такое было).
Я взял промасленый мешок и положил в него ОБА своих основных мешка с вещами. И так поплыл. А когда вышел с другой стороны -- вытащил мешки из мешка.
***
У дырявой сумки дырявым было основное отделение. Но ещё был боковой недырявый карман. В нём лежали всякие таблетки. Я вытащил все таблетки и переложил их в чемодан с багажом. Также в чемодан с багажом я переложил наименее ценные предметы из сумки с ручной кладью. Потом я достал самые ценные вещи из основного отделения и переложил их в боковой карман. Но всё туда не влезло. Оставалось ещё несколько крупногабаритных ценных предметов: внешний винчестер, фотоаппарат, запасные очки и т.п. Тогда я вспомнил, что у меня есть ещё один большой полиэтиленовый пакет. Я достал этот пакет и положил в него ноутбук (который, естественно, лежал в сумке ручной клади). Потом я сложил в тот же пакет ВСЕ остальные вещи из основого отделения сумки ручной клади. Сам пакет я положил обратно в основное отделение.
Ноутбук был гораздо больше дырки в основном отделении, поэтому выпасть бы он не смог. А у меня были основания полагать, что дальше дырка в сумке увеличиваться не будет. Поскольку не выпадет ноутбук, то не выпадет и пакет с ноутбуком. А значит не выпадут и остальные вещи в пакете.
Таким образом мне удалось довезти все вещи до точки назначения. Хотя я всё равно придерживал дыру рукой. На всякий случай.
Для разных проектов у нас используются разные вижуал студии, от 2005 до 2017. Текущий проект сделан в 2005. Если то, что я опишу ниже, вы встречали в других версиях, сообщите, пожалуйста.
***
Когда первый класс включает в себя указатель на другой, а другой -- на первый, приходится пользоваться об'явлением класса "вперёд". А именно -- указать название класса вместо его настоящего об'явления (class CName1; ). Это должно работать как надо, но периодически возникают сбои, когда компилятор "не видит" второй класс. Обычно их удаётся победить, но сегодня я застрял.
Застрял до такой степени, что решил посмотреть, что выдаёт препроцессор. В настройках проекта можно задать "генерировать файлы препроцессора", что я и сделал. И о чудо -- модули по отдельности стали компилироваться, хотя раньше не компилировались! Это меня напрягло, поскольку мне не было смысла смотреть на результат препроцессора, если там всё хорошо. А когда всё плохо -- препроцессорных файлов нет.
Однако, полной сборки в таком режиме добиться не удалось. Компилятор сказал на этапе компоновки, что у него нет об'ектных файлов.
ОКАЗАЛОСЬ
что компиляция в режиме выдачи файлов после препроцессора не производится вовсе! После генерации i-файла компилятор с модулем больше ничего не делает. Поэтому и ошибок не возникало.
Я открыл один из препроцессорных файлов и стал искать упоминание нужного мне класса. Оно находилось, но слишком поздно. Я видел, что выше по тексту выше класс тоже упоминается. В общем в одно из наименований типа CName1 затесалась русская буква C. Когда я её исправил, всё заработало.
Когда я учился в институте, у нас по одному из предметов препод готовил презентации в Power Point и показывал их на проекторе. А экран был расположен над доской. Я обычно сидел в первых рядах, поэтому приходилось задирать голову. Так я обнаружил, что постоянно держать голову задранной -- неудобно. Шея болит и затекает. После этого я стал отсаживаться на пять рядов дальше -- тогда стало более-менее.
Перед сдачей установки нам сказали, что она должна выглядеть прилично -- ничего лишнего. Мы убрали все пустые пластиковые бутылки и фантики от сникерсов, а монитор поставили сверху на монтажный шкаф. Стол, за которым я работал, убрали тоже. Стало прилично. Но работать стало возможно только стоя, потому что сидя приходилось задирать голову. А я уже знал, что так работать нельзя.
Я подождал, пока уйдут представители заказчика, и поставил стол обратно.
Когда-то я писал, что обнаружил на парте нарисованный член с крыльями. Студент тогда предположил, что это "современный купидон".
Однако оказалось, что член с крыльями -- очень древняя штука. Сестра показала в "Страдающем средневековье" соответствующие изображения. Они относятся к XIV-XV векам!
Картинки я тут вывешивать, естественно, не буду, но их можно посмотреть либо в самой книге в разделе "святой Fuck" (с. 64 обоих изданий), либо, если вас устраивает пояснительный текст на неизвестном языке, тут (осторожно! члены с крыльями и не только).
Интеллектуальные поддавки с романтическим уклоном: кто симпатию проявил, тот и проиграл. Вот главные герои и сидят по углам, неровно дышат, но виду не подают, а пытаются устроить провокацию. С переменным успехом.
Что думаю
В начале была дикая ржака. К концу стало больше милых романтических моментов, а ржаки меньше. Хуже всего, когда сцена посвящена побочным персонажам. Большинство этих сцен просто скучные. Но потерпеть можно. Очень хорошо, что у главных героев имеется развитие, а точнее, изменение состояния (за кадром). В начале они не те, что в конце. Так что смотреть интересно везде.
Между главными героями на самом деле существует мезальянс. Парень хотя интеллектуально и крутой -- и по рангу в школьном совете выше девицы, всё равно происходит из бедной семьи. У них совершенно разный уровень жизни. Спасает ситуацию от развала только то, что персонажи взаимодействуют в очень ограниченной модели -- то есть, в школе.
Рисовка классная.
Рекомендации
Это романтическая комедия под необычным соусом. И романтика и комедия получились хорошими. Вот и рекомендация.
Меня временно вернули из командировки, поэтому я сразу побежал играть в NetHack (Junethack).
Ситуация. Играю за самурая. В шахтах нашёл седло -- очень редкий предмет. В Сокобане на меня напала лошадь. Я хотел сделать её мирной, кидая в неё мясо, но это не сработало (и, видимо, в 3.6.2 перестало работать совсем). Поэтому пришлось кидать в неё лишай. В результате она стала не мирной, а ручной. Ходит за мной. Седло есть, лошадь есть. Самурай -- хороший ездок на лошади.
Я надел на лошадь седло, а сам пошёл по делам. Потом на нас напали орки и нимфа. Я спрятался от них в магазине, а лошадь оставил расхлёбывать. Выхожу, собираюсь сесть на лошадь, а игра мне говорит, что лошадь не осёдлана. У меня появляются фантазии на тему того, что теперь седло растворяется, если на лошадь не сесть сразу. Или что лошадь скидывает седло. Облазил уровень -- седла не видно.
А потом нашёл труп напавшей нимфы. У неё было много вещей, но в том числе было и моё седло. То есть, пока лошадь сражалась с нимфой, нимфа УКРАЛА у неё седло. Да, нимфы в NetHack воруют постоянно, но я не мог себе представить, что седло с лошади можно украсть в принципе.
1. Пусть программа зависла. Она вела логи и видно, в какой момент она зависла. Более старшая управляющая программа тоже вела логи. Логи надо сопоставить. Но прежде, чем делать выводы, следует сверить часы! В моём случае разница составляла две минуты (разные компьютеры, единого сервера синхронизации времени нет, интернета в локалке нет). Это была критичная разница: примерно через две минуты после зависания я выключил программу. Если бы время было одинаковым, отчёт об ошибке старшей программы сигнализировал бы о том, что зависание было старшей программой определено ещё в момент зависания. А разница в две минуты означала, что старшая программа отреагировала не на зависание, а на то, что я младшую программу прибил.
2. Пусть у нас есть система реального времени: мы посылаем куда-то запросы, при этом гарантируется, что операция выполнится, скажем, за 10 мс. В этом случае, если надо провести несколько операций, можно просто подождать 10 мс, а потом слать следующий запрос. Оказалось, что лучше этого всё равно не делать. Если есть техническая возможность, надо сначала проверить, выполнилась ли предыдущая операция. Тут есть две причины. Первая -- операция могла закончиться с ошибкой, поэтому следующую пока слать нельзя. А вторая -- хотя изготовитель и гарантировал 10 мс, по факту в редких случаях может оказаться больше. Особенно если изготовитель -- я.
Сел в электричку. С местами туговато. А это была та самая ростовская электричка, где по два контролёра и два охранника. Я выбрал свободное место и сел на него. Один из охранников сидел от меня через проход. У нас состоялся такой разговор: Охранник: Тут занято. Я: Что? Охранник: Тут занято, идите сидеть в другой вагон! Я: Что? Почему? Охранник: В соседнем вагоне девушки лежат на трёх сиденьях сразу. Сгоняйте их и сидите там.
Я смотрю рядом с собой. Там ещё одно пустое место. А дальше чей-то бесхозный рюкзак.
Я: Это что, все три места в ряду заняты? Охранник: Да.
В этот момент за меня вступилась контролёр.
Контролёр: Сидите, мужчина, где сидите.
На этом разговор был закончен.
А потом я понял, в чём было дело. Контролёры и охранники заняли вместе двенадцать сидений -- четыре скамейки по три. Разложили там свои вещи и сидели там, когда у них был перерыв в работе. Но даже с таким подходом они могли обойтись всего шестью местами, а не двенадцатью!
Несколько раз видел/сталкивался с ситуацией, когда несёшь на кассу товар со скидкой, а её уже нет, просто "ценник ещё не обновили".
А сегодня я впервые увидел, как мужику продали пиво по скидке, которая только что появилась. Ценник тоже обновить не успели. Он не возражал, но взял ещё две бутылки.
Однажды я понял, что передачи в машине не обязательно переключать по очереди. Надо включать ту передачу, которая соответствует скорости (оборотам). И вверх, и вниз. Например, можно разогнаться побольше на первой, а потом сразу воткнуть третью. Я так иногда делаю при выезде из переулка на магистраль, когда надо как можно быстрее набрать скорость (на первой передаче машина лучше ускоряется). Может быть, это вредно для машины, не знаю.
И вот меня везёт такси -- и я понимаю, что водитель постоянно слишком долго едет на предыдущей передаче. А потом я замечаю, что он со второй сразу переключается на четвёртую!
-- Ой, а вы сразу второй на четвёртую переключаетесь? -- Ага. -- А в этом есть какой-то замысел? -- А третья передача не работает! Гонки на этой машине на спор устраивали -- и доломали.