Если у компилятора включить оптимизацию, то полученную программу будет сложно отлаживать. Оптимизированный код при отладке прыгает по строчкам непредсказуемым образом, значения переменных отображаются неправильно, точки останова не срабатывают.
Это касается как программ для компа, так и прошивок. И тут проявляется важный нюанс, на котором можно погореть. В этот раз погорел не я.
Неоптимизированная программа может не влезть в память микроконтроллера! Это сильно осложняет процесс отладки. Поэтому выбирать микроконтроллер надо с запасом.
Историк у меня сестра, а не я. Но я тоже интрересуюсь всяким древненьким. И тут я узнаю, что в 20 км от Ростова-на-Дону имеется в раскопанном виде целый древний город, который просуществовал 800 лет. И туда идёт прямая электричка. И доезжает всего за час.
Тут надо сказать, что электрички в Ростове-на-Дону шикарные. Но все остановочные площадки имеют низкую платформу 200 мм. Только на Ростов-Главный есть одна высокая платформа. Из-за этих особенностей электрички также имеют соответствующие двери и лестницы.
Вход в воказл оборудован весьма серьёзно. Единственное послабление в досмотре по сравнению с самолётным заключалось в том, что мне разрешили не снимать пояс, а когда я пропикал, что у меня есть железо, меня стали просто просматривать ручным детектором, а не посылали назад, пока всё железное не сниму.
Я купил билет и тут увидел надпись "Туалет". Это было то, что мне нужно. Я зашёл туда, а там написано: "Туалет платный, 20 рублей". Ниже был список категорий лиц, которых пускают в туалет бесплатно. Я к этим категориям не относился. Но у меня было одно тайненькое знаньице и я решил им воспользоваться. Я спросил тётку, которая сидела на входе, надо ли платить за туалет, если есть билет? И она сказала -- "показывайте билет". Я показал. Она сказала -- "Проходите". И я прошёл.
Кстати, во всех электричках ездят кондукторы и оформляют билеты всем входящим. По-видимому, купить билет в кассе иначе, как на остановочной площадке "Ростов-Главный", невозможно. Составы четырёхвагонные, поэтому кондукторы (которых не меньше двух) быстро обходят весь поезд. Проехать зайцем не получится.
Я выхожу на платформу и вижу свою электричку. А на ней надпись -- "Ростов-Таганрог". Садясь в неё я почувствовал себя очень странно. Где я? Кто я? Куда я еду? Я ещё не поехал, но было какое-то эмм... "посреди нигде".
Но ладно, что-то я опять про железные дороги. Перехожу к основной теме.
Танаис оказался действительно раскопанным древним городом. Это настоящая Древняя Греция на территории России. К сожалению, в раскоп спускаться было нельзя. Вместо этого вокруг были деревянные мостики, по ним можно было ходить и смотреть сверху на всё, что раскопали. Зрелище восхитительное, но однообразное. Смысла показывать всё нет, поэтому вот несколько снимков.
Кроме самого городища можно посетить "музей истории Танаиса" и "выставочный комплекс". Они интересные.
"Музей истории" содержит в себе те предметы, что выпокопали. В том числе, сохранились нетронутые погреба с амфорами. Ну и, конечно, погребения. Тут я себя тоже почувствовал странно. Я с интересом прочитал как-то раз книжку про погребальные обряды удмуртов. И там были картинки с погребальным инвентарём. Но они все были черно-белые. А тут я увидел погребальные обряды удмуртов, только в цвете! (конечно, тут это были не удмурты). Вот кое-что из могилок (этикетка: "Погребение танаита; поздний Танаис"):
Я слышал, как другие посетители переговариваются: "а это настоящие черепа?" -- "ну что ты, конечно нет!". И мне чудился страх в их голосе. Это понятно, я в детстве тоже черепов боялся. (посетители, правда, не были детьми) Я подошёл к смотрительнице и спросил, настоящие ли скелеты? Она сказала, что конечно же настоящие, а то бы была надпись "копия". И этим скелетам четыре тысячи лет! (скелету выше меньше, я спросил у смотрительницы в другом здании, где выставлено неолитическое захоронение)
"Выставочный комплекс" (на самом деле это изба с очень скрипучим полом) содержит в себе всё, что не попало в "музей истории" из-за несовпадения темы. Дело в том, что на этом месте тусовались люди и до и после Танаиса (а сейчас там деревня Недвиговка). Поэтому раскопки дают богатые результаты по всем периодам. Самым интересным мне показался вот этот половецкий идол XII века.
Видите полочку? 99%, что она предназначалась для подношений. И что мы на ней видим? Деньги.
Я спросил смотрительницу, посетители деньги кладут или это вы? Она сказала, что посетители. Таким образом, посетители оставляют дары неизвестному языческому божеству. Интересно, кто эти люди, и каков их образ мышления? Является ли их поведение язычески-архаическим или это просто развлечение, как оставление монеток в фонтанах "чтобы вернуться"?
Ещё на территории есть реконструкция половецкого святилища XII века. Половцы исповедовали тенгрианство. Оставили после себя огромное количество каменных изваяний на многие километры вокруг. Эти изваяния поставлены в ряды и просто стоят на открытом воздухе на территории. Некоторые изваяния стоят в музеях Танаиса. Их так много, что их даже в соседние музеи отправляют, например, в Новочеркасск. И вот из двух из них сделали реконструкцию святилища. Левая фигура имеет женские признаки.
Постоял я там. У меня был сникерс, но оставить его я там не смог, потому что недалеко стояли охранники и смотрели. Ограничился устной благодарностью.
Дома в округе имеют элементы каменной кладки такие же, как развалины Танаиса. Уж не из тех же самых камней они сделаны?
Очень рекомендую посетить это место.
С Танаисом было всё ясно, но с местностью -- нет. Дело в том, что ещё бродя по развалинам я заметил, что невдалеке стоит... средневековый замок. И ещё высокая красная башня в романском, как подсказывает сестра, стиле. Сначала я думал, что это часть Танаиса. Потом -- что это какая-то база реконструкторов. А потом у меня было два часа до обратной электрички и я решил удостовериться в том, что же это такое, прямым методом.
По мере приближения, я всё больше убежался в том, что это действительно средневековый замок. Я недоумевал. Это что, кто-то настолько богат, что может позволить себе пострить замок?
Часть территории была обнесена... частоколом. И вот когда смотришь на построенный кем-то в наши дни средневековый замок, обнесённый частоколом, то думаешь -- а почему у меня такого нет?
Спереди вместо рва и под'ёмного моста был просто небольшой фиксированный мостик. Были огромные ворота и маленькая дверка сбоку. А за воротами была... башня от танка и крыло самолёта. ЩИТО.
Я поднял глаза и увидел над огромными воротами золотую надпись "ДОНСКОЙ ВОЕННО-ИСТОРИЧЕСКИЙ МУЗЕЙ". После этого стало ясно, что это за замок, и на что он был построен.
Внутрь не пускали -- он то ли недостроен, то ли закрыт на ремонт.
Но. Даже осмотрев замок, я не обнаружил на его территории башни из красного кирпича! Я пошёл дальше. Там была деревня. Я её всю обошёл и обнаружил, что башня стоит на частной территории. Она выделяется на фоне замка и цветом и высотой. Поэтому я сделал предположение, что владельцу башни было завидно, что рядом замок стоит, поэтому он решил выделиться, как мог. И выделился. Мне лично понравилось.
В серьёзных проектах со сжатыми сроками надо стараться использовать методы, которые принесут поменьше сюрпризов. То есть, методы хорошо знакомые и проверенные. Но это не всегда получается. А иногда можно было бы воспользоваться известным методом, но что-то зачесалось и потянуло на эксперименты. Не надо так.
Задача была простая -- в начале выполнения программы удалить файл. Как это сделать? Можно было бы сделать system("del file.txt"). А можно было бы воспользоваться простой советской функцией Win32 API -- DeleteFile. Но я вспомнил, что буквально на днях видел класс CFile. И там была статическая функция, которая удаляет файл.
Ничтоже сумняшеся я написал CFile::Remove("file.txt") и успокоился. Первый раз сработала, второй раз сработала. А на третий я сделал перезапуск особым образом -- и произошла ситуация, при которой файла уже не было. Что же сделала эта функция, не обнаружив удаляющегося файла? Подсказка: функция оказалась типа void.
Она вывела на экран диалоговое окно! В котором сообщила, что файла, который я хочу удалить, нету. Ну спасибо.
У меня программа должна всё автоматически делать, а тут она повисла и ждёт, пока кто-нибудь закроет окно. А... как вообще предполагалось, что программа узнает, что удалить файл не удалось? Для каких же целей подойдёт эта функция? И для каких целей её делали разработчики?
С монитором наблюдалась проблема -- периодически пропадал сигнал. Экран темнел на несколько секунд (но сообщение "нет сигнала" не отображалось), а потом загорался снова.
Через пару дней хдми-порт сгорел. Но был ещё один. Воткнули в него. Вскоре изображение снова стало пропадать. Тогда выткнули монитор поскорее, пока порт ещё не сгорел. Успели поставить VNC.
А был ещё дисплей порт. Подключили к нему. И всё стало работать. Работал и я. Сидел, работал. Но через какое-то время сигнал стал опять пропадать. Это происходило редко. Так как работал за этим монитором я много, в конце концов я опознал причину.
Монитор выключался тогда, когда я проносил мимо проводов сотовый телефон! При этом не каждый раз. Либо должна была идти передача данных, либо вызов.
Разговариваем с людьми из соседней организации. Коллега: Да, результаты измерения ваших образцов получились неправильными. Но вообще-то в них много правды! Я: Только правда эта не о ваших образцах, а о нас.
Идём с об'екта. Вижу -- около кустов лежит... что-то. Кусок серого меха странной формы. Я: Кажется, это было вчерашним котёнком. Коллега: Пойдём быстрее, а то опять увяжется.
Идем с об'екта. Слышу странный звук. Я: Это птица кричит или кошка? Коллега: Котёнок. Я: Ой, и правда! Коллега: Не подходи к нему, а то увяжется. А нам дорогу переходить. Собьют. Я: Ладно. Коллега: Он сюда идёт! Бежим!
И мы побежали. Вот уж не думал, что буду убегать от котят где-то, кроме нетхака!
Хотя я и работаю в НИИ, но только в связи с наладкой установки в командировке я действительно почувствовал, что занимаюсь наукой. Но не потому что установка делает что-то научное, нет, а потому что она плохо работает. А надо, чтобы хорошо.
То есть, надо:
1. Понять, есть какой-либо эффект или нет; 2. Выдвинуть гипотезы, почему так происходит; 3. Придумать эксперименты, которые проверят гипотезы; 4. Исправить косяк.
Коллега придумал метод борьбы с водителями Яндекс.Такси, которые не хотят везти в тмутаракань, в связи с чем проезжают мимо нас на полном ходу по соседней стороне улицы, а затем прячутся.
Он предложил сразу вставать на другой стороне дороги, а не на той, где вызывали. Тогда можно кидаться под машину или махать ей рукой.
(много фоток)По техническим причинам я был на месте в 09:30, а музей открывался в 10:00. Побродил по округе. Вы когда-нибудь видели дома с номерами за 300? А там и до 500 доходит.
Без пяти тусовался у ворот, вышел охранник, спросил "вы в музей?", потом открыл мне ворота.
Касса в отдельном здании. Меня спросили, сколько мне билетов! Я сказал, что один. Мне выдали билет и "правил поведения на экспозиции". Я, уже поимев проблемы с фотографированием тепловозов, уточнил, можно ли фотографировать! Мне сказали, что если на телефон, то можно. А на фотоаппарат -- 200 рублей. А билет стоит 100 рублей. Да. Фотоаппарата у меня, как вы помните, не было.
Суть правил поведения заключалась в том, что на подвижной состав можно забираться только если для этого есть приспособленная лестница. Я этим бессовестно пользовался, пока не понял, что ппод лестницей понимается не лестница самого ПС, а лестница, стоящая перед ним. А таких лестниц было всего три. Я же облазил не меньше десяти паровозов и прочего. К сожалению, большая часть техники, особенно в тепловозной секции, закрыта на навесны и иные замки.
В общем, забрался я в первый попавшский паровоз и... удивился. До этого я внутри паровозов не был. Но увидев такое я, конечно же, сразу вспомнил Koutesujou no Kabaneri (Л-0270):
Но в других паровозах всё не так радужно (Эм 729-29):
У одного из паравозов был открыт проход в тендер, что позволило во-первых снять сам тендер, а во-вторых -- панель управления паровозом в нормальном ракурсе (Эр-750-11):
Снаружи паровозы покрашены, но это всё результат целенаправленной работы. Исходная краска очень не сохранилась.
Даже более новые вагоны без покраски выглядят не очень. Например, ниже -- списанный вагон ростовской детской железной дороги (до которой я пока не добрался):
И ещё немного ржавчины:
А следующий вагон был интересен двумя вещами. Во-первых, у него три тамбура, а не два, как обычно бывает. А во-вторых, когда я зашёл в одну из пассажирских секций, я увидел второго посетителя. Я его видел незадолго до этого, но не подходил. А тут захожу, а он сидит. Время было 10:30. Между нами состоялся примерно следующий разговор: Он: А, тоже по железным дорогам фанатеешь? Я: Типа того. Он: У меня малОй очень любит.
Эмм. А где малой-то? Это ты пришёл для него фоток наделать? Или не хочешь признаваться, что сам фанат? Хм...
Когда-то я думал, как во времена, когда ещё не было холодильников, делали летом лёд? А потом я прочитал, что его банально запасали и прятали в специальных помещениях с хорошей теплоизоляцией, т.н. "ледниках". Он понемножечку таял, но до следующей зимы хватало. А вот для транспортировки применялись вагоны-ледники:
Потом я пошёл во вторую секцию. Между двумя секциями есть пешеходная дорожка к станции. А калитки во вторую секцию закрыты. Я попросил охранника мне её открыть, но он сказал, что там закрыто на проволочку. Замечательно. Теперь понятно, почему мне на кассе сказали держать билет при себе, типа охранник может захотеть проверить. Во второй секции, в основном, стояли тепловозы и электровозы. У них были инопланетные лица:
К сожалению, подписи перед некоторыми экспонатами не соответствуют действительности. Но вот подписи на самих экспонатах соответствуют! (ЧС4Т-548)
Один из немногих экспонатов, доступных для внутреннего осмотра во второй секции, это микротепловоз ТГК2-6970:
Внутри странные надписи:
Ещё одна странная штука -- мотовоз Мз/2:
Очень впечатлила щебёноочистительная машина, потому что её длина составляла 4-5 длин обычных вагонов. По понятным причинам я её тут приводить не буду. Вместо этого приведу ТЭП10-311:
В институте нас учат вести лабораторный журнал по физике и пр., но не об'ясняют, почему нужно делать именно так. Без об'яснений штуки вроде нумерования страниц и запрета замазки кажутся чепухой. А вот реально что-нибудь померяешь -- и всё становится ясно. И оказывается, что чтобы не запутаться в данных, надо делать даже больше, чем учили. Например, ошибочные данные надо не просто аккуратно зачеркивать без применения замазки, но и подписывать, что с ними не так. А промежуточные выводы надо писать прямо по ходу измерений.
Девочка отправляется в путь, чтобы понять, что она за животное! Мономиф в незатейливом исполнении.
Что думаю
Думаю, что я правильно и вовремя стал смотреть эту штуку. Мне нужно было что-нибудь для морального расслабления от морального напряжения. И у этого сериала всё получилось!
Под конец, конечно, некоторое напряжение появилось. Меня даже растрогало и я прослезился (хороший признак!).
Сериал очень глубокий, почти как народные сказки. Сумочка -- настоящий герой, Геракл своего масштаба. Но с анализом можно не заморачиваться, а просто смотреть.
О классификации зверей. Благодаря сериалу я узнал, как выглядит биологическая таксономия в японском языке. Сериал приводит три основных ранга -- отряд (目, семейство (科 и род (属. Интересно тут то, что отряд "хищные" звучит как "нэко", т.е. кошкообразные (пишется катаканой). Поэтому для простых кошек обозначение будет выглядеть как "отряд: кошкообразные, семейство: кошачьи, род: кошки". А для медведей -- "отряд: кошкообразные, семейство: медвежьи". Справедливости ради стоит отметить, что "кошкообразные" действительно существуют, это один из двух подотрядов хищных. В японском языке хищные это нэко-моку, а кошкообразные -- нэко-амоку, где "амоку" значит "подотряд". То есть, выше хищных я назвал кошкообразными для понятности перевода, но на самом деле их так называть нельзя. Кроме того, медведи-то относятся к подотряду собакообразных, а не кошкообразных!
О фурри. Также я задумался над границей между фурри и не фурри. В сериале пруд-пруди девочек-кошек, собачек, мартышек и чего похуже. Но... их антропоморфность доминирует над животностью, поэтому они воспринимаются как люди, а не как животные.
О зловещести. Есть сериалы, где зловещесть прямо сквозит. А снаружи всё розово и няшно (например, прости господи, Jinrui wo suitai shimashita). Тут зловещесть тоже есть, но её мало. Например... что стало с предыдущими составами пингвиньей группы? Что будет, если перестанут производиться булочки?
Рекомендации
Любителям: -- Историй о путешествиях с целью; -- Девочек-кошек (их много и все разные, а ещё есть три лисички и волчица); -- Доброты.
Некоторые девочки в очках. Это странно, т.к. подавляющее большинство населения -- неграмотное. Видимо, даже совы-смотрители библиотеки не умеют читать.
Это волк должен быть детективом, а не жираф! Я это по Fables знаю.
Не ловит...
Хвалёный интеллект Сумочки дал слабину. Очевидно же, что это ловушка.
Звучит пошловато...
Репка!
Явно косят под Котобус, но оригинальный Котобус был круче!
Однажды приехал косоглазый, который постоянно подруливал.
В другой раз водитель заехал за угол, оттуда нажал "я на месте" (чтобы увидеть точку назначения: эта точка отображается не всем и не всегда, точные правила я не понял) и затаился. Я ему звоню, он говорит, что на место назначения ехать не хочет. Дальше у нас состоялся такой разговор: -- Отменяйте заказ. -- Отменяйте заказ. -- Отменяйте заказ. -- Отменяйте заказ. (он повесил трубку)
Водитель не хотел отменять заказ, потому что его по рейтингу оштрафуют. Мне посоветовали водителю в чате написать типа "я на месте, вас не видно" (а по приложению видно, что он за углом стоит). Я написал. Через 30 секунд водитель отменил заказ.
Ещё периодически нажимают "я на месте" не доезжая до точки. Бесплатное время ожидания начинает капать раньше.
Я периодически спрашиваю у водителей, как тут у вас, в Ростове-на-Дону, бандитов много по ночам? Обычно они отвечают, что всё тихо, но один таксист ответил: "он перед вами!"
А потом к нам приехал коллега и мы поехали на такси вчетвером. Едем, и тут коллега спрашивает таксиста -- "а как, у вас вообще город безопасный?" И все засмеялись.
***
В конце предлагают оценить поездку и нажать, что понравилось. -- Если водитель молчаливый, я жму "интересная беседа". -- Если гонщик, я жму "комфортное вождение" (но косоглазому я поставил четыре и написал "неаккуратное вождение", потому что гонять можно аккуратно, а можно ехать медленно, но неаккуратно). -- Если водитель ноет, я жму "хорошее настроение".
Раньше, когда подавал документы на налоговый вычет, надо было написать простое письменное заявление, в котором было бы указано, куда переводить деньги.
В прошлом году это изменили. Теперь надо было заполнить специальное заявление-форму, в котором всё надо писать в квадратиках. И ещё вместо "вычет за 2017 год" надо было писать ГД.00.2017. И ещё указывать, на основании какой статьи налогового кодекса хочешь вычет. Форму мне в тот раз дали.
В этот раз я решил быть умнее. Если декларацию можно заполнить на компьютере и распечатать, то, наверное, заявление тоже можно. Пропустив на сайте разделы про подачу через личный кабинет, я наткнулся на ссылку на программу "Налогоплательщик ЮЛ", которая, вопреки названию, предназначалась для физических лиц тоже.
Я её скачал и стал ковырять. Она оказалась предназначена для написания любых заявлений в налоговую, как от физических, так и от юридических лиц. Нашёл я там с трудом своё заявление. Но в процессе заполнения заявления я столкнулся с непредвиденными трудностями. В разделе о реквизитах счёта надо было указать "вид счёта (код)". И была подсказка, какой код что означает. Там были "текущий счёт", "корреспондентский счёт", "бюджетный счёт" и другие. А лицевого счёта не было. Я стал читать в интернете, как заполнять это заявление. Везде было написано, что в этом поле надо писать "08 -- лицевой счёт". Но программа считала, что 08 -- это бюджетный счёт, который мне, очевидно, не подходил.
Но ладно, думаю, главное -- цифра. Пытаюсь распечатать заявление, а у меня выскакивает сообщение о том, что для физических лиц код 08 недоступен, поэтому печатать мне ничего не будут. Оставить поле пустым я также не смог. Тогда я плюнул и решил идти в налоговую так.
Там мне выдали бумажный бланк и я стал заполнять его вручную. Там было уже в подсказках всё правильно написано, "08 -- лицевой счёт". Я подошёл к консультанту и стал жаловаться на разницу этой формы и формы в программе. Он пошёл уточнять у другого консультанта, что там надо писать. А другой консультант сказал -- "это поле можете вообще не заполнять".
Это хорошо, что его можно не заполнять. Но программа так печатать не даёт! Сдал бланк, заполненный от руки.
То, что программа проверяет валидность ввода -- это правильно. Но невозможность напечатать неправильный бланк -- ерунда какая-то. А вдруг я собираюсь его потом дозаполнить? А ещё в программе нету экспорта ни в пдф, ни в графические файлы. Есть экспорт только в эксель, но для этой формы он не работает, т.к. в форме есть штрих-код, а эксель не умеет в штрих-коды. Неудобно, в общем.