Что на даче нужен фонарь -- это и так ясно. Фонарь сейчас в каждом телефоне, но это неудобно. Раньше я ходил с ручным фонарём -- и был очень доволен. Но в этом году попробовал налобный.
И я вам скажу, что это имба. Очень рекомендую. 1. Руки свободны. 2. Не надо волноваться, что фонарь куда-то выпадет. 3. Светит сразу куда надо.
Соревнования по NetHack'у были в июне, а я ещё не написал отчёт. Да и за 2020 год отчёта не написал. Исправляюсь.
Предупреждаю, текста много и он для специалистов. Пролистывайте.
Играть в NetHack для меня очень нервно, поэтому я играю только на июньских соревнованиях. Раньше я делал по два вознесения за месяц, а теперь -- только одно. В 2019 году у меня была причина -- меня отпустили из командировки ровно на столько, сколько времени у меня заняло прохождение (хотя меня отпустили не для того, чтобы я играл). Но в 2020 и 2021 годах ситуация была иной.
Что было в команде, в которой я играю (Smile Mold), я, честно говоря, уже забыл. Поэтому пишу только свои личные похождения.
Нервность в июне 2020 года у меня была повышенной. Тогда я с трудом усаживал себя играть. Я работал через день из-за коронавируса. Когда приезжал -- сил играть не было, а в дни, когда работал из дома -- играть было лень (а точнее, я как обычно боялся). Как известно, основная особенность NetHack -- "смерть навсегда". После смерти надо начинать игру заново. Когда играешь катку 1-2 недели, цена смерти становится высокой. А если не играешь, то и умереть не можешь. Так зачем садиться играть? Короче говоря, к концу месяца я взялся за голову и стал считать -- а успею ли я вообще пройти катку до конца? Получалось, что могу и не успеть. Оставалось 3-4 дня, а я тусовался в районе Замка. Это надо сделать всю Геенну, пройти башни различных чудаков, потом ещё Санктум и вознесение (на которое я всегда выделял отдельный день). И, в общем, вечером последнего дня я еле-еле успел всё доделать.
Играл я за Разбойника, Rog-Hum-Fem-Cha.
Что сказать о роли? Роль нормальная. Начинаешь с мешком -- очень удобно. Кинжалы искать не надо -- тоже очень удобно. Только кроме кинжалов нормального оружия в начале и не будет (возможно, я недооценивал short sword?) Меня пугал Квест, поскольку там на последнем уровне три несвязанные зоны, поэтому могут быть проблемы с попаданием куда надо. У разбойника увеличенный урон по убегающим от него монстрам, но после нерфа Elbereth в 3.6.x эта механика стала практически бесполезна.
Прошёл только с четвёртого раза. Первые две попытки кончились довольно быстро и бездарно, но вот третья была очень странной. На меня на первом уровне, во второй же комнате, на меня напали четыре (!) giant spider. По игромеханике этого быть просто не может в ванильном NetHack. Если бы я был менее самонадеян, возможно, я бы смог мимо них пробежать при помощи Elbereth. Полагаю, что две из трёх смертей были предотвратимы.
Что интересненького было в партии?
-- На дне шахт появился iron golem, один из немногих мобов, которые warning показывает как 5 из 5 по сложности. Почему, я не знаю, ведь он не так сложен в середине игры. Но шахты -- это начало игры. Появился голем там, как я выяснил позднее, из-за ловушки полиморфа. Мне пришлось уйти из шахт и временно отказаться от лакстоуна, пока я не раскачаюсь. -- Собака застряла в магазине и не могла сдвинуться с места. Думаю, что и это, и пауки -- следствие багов в бете 3.7.0, в которую я играл. -- Случайно прочитал свиток огня рядом с торговцем. Еле его успокоил. -- Нашёл в одной комнате сразу три разных алтаря. Я думал, это невероятная случайность, но буквально недавно узнал, что это фишка 3.7.0 -- есть шанс генерации особой комнаты с тремя разными алтарями. И ещё есть несколько новых особых комнат. -- В попытки получить сопротивление сну, хотел убить эльфа, но он наступил в ловушку полиморфа и превратился в dust vortex! Это был длвл21, а я всё ещё без сопротивления сну! -- В 3.7.0 кроме левитации есть "полёт" (flying), что гораздо удобнее. Можно макать предметы в воду не прыгая, и выкладывать предметы из инвентаря не разбивая. Однако, если вы стоите на лестнице вниз, то выложенный предмет может упасть на этаж ниже! Это надо учитывать. -- Я ехал верхом на драконе, но василиск его покусал -- и мне пришлось спешиться! Теперь у меня есть статуя дракона. До конца партии пытался найти способ своего дракона оживить, но тщетно. -- Квест Разбойника славен не только последним уровнем из трёх независимых секций, но и обилием хамелеонов. Пришлось полипайлить ring of protection from shape changers. Я пошёл в Квест после Замка, а также отгеноцидил личей, поэтому смог бы, наверное, справиться с хамелеонами и так, но было бы очень неудобно. -- Оказалось, что будучи невидимым можно спокойно давать взятку Асмодею. Он разозлится, если не сможет определить, где игрок, однако невидимость ему в этом не помеха, потому что он видит невидимое. -- А вот с Вельзевулом возникла проблема: он как только появился, чтобы брать у меня взятку, решил выпить зелье увеличения уровня. Оно оказалось проклятым и он улетел на соседний уровень. Думал, возьмёт ли он у меня взятку там? Взял. -- Впервые Wizard of Yendor был разбужен не по плану: его разбудило заклинание Титана. Пришлось первое убийство Родни совершить досрочно. Сейчас побудка Родни из внешней зоны за башней признана багом и исправлена. -- Это просто прочитайте: The sergeant swings his flail at the wolf. The sergeant hits the wolf. The wolf is killed! The seemingly dead wolf suddenly transforms and rises as a vampire lord! The vampire lord hits the sergeant. The sergeant is killed! -- Впервые священник Молоха сгенерировался с cloak of magic resistance, поэтому палка смерти против него не действовала. Пришлось убивать его вручную. Это неудобно, потому что каждый ход тебя из алтаря лупит молнией. -- На астральном плане священники генерировали так много насекомых, что я подумывал о геноциде "a". Однако сейчас я понимаю, что стало бы ещё хуже, поскольку монстры бы стали случайными. Junethack 2021
Наш клан Smile Mold занял пятое место из 23 со счётом 2.92 очка. Результат сложился следующим образом: -- 2.0 очка за четыре игры со всеми поломанными обетами -- 0.4 очка за уникальные смерти -- 0.3 очка за трофеи
Есть ещё один показатель, который мог бы сыграть роль, но не сыграл -- число прохождений, завершённых в один день. На этом показателе и на показателе с обетами можно заработать довольно много очков и выйти на четвёртое место. На первые три мы, увы, выйти не сможем, потому что там сидят такие зубры, к которым лучше не соваться.
Основной моей психологической проблемой было то, что я переболел коронавирусом. Как известно, это сказывается на умственных способностях. Я опасался, что с прохождением игры у меня будут проблемы. NetHack -- игра, очень сильно завязанная на неигровых (!) способностях игрока. Игрок должен быть умён, терпелив, внимателен -- и тогда он успешно пройдёт игру. Хотя я не замечал в себе особых перемен после коронавируса, это не меня не ободряло. Известно, что с точки зрения пациента проблемы с психикой могут быть незаметны.
Играть я начал только 9 июня, сразу умер, а следующую, уже успешную, партию, я начал только 12 июня. Это означало, что два вознесения я сделать не успею в любом случае. Особых проблем при прохождении я не испытал, прошёл со второго раза. Будем считать, что на моих умственных способностях коронавирус сказался незначительно.
Играл за Священника, Pri-Hum-Mal-Law. Роль интересная, сразу видишь проклятость предметов и начинаешь с запасом святой воды. Кроме того, есть чеснок и аконит, которые имеют больше интересных применений, чем я знал.
Стал играть в версию 3.4.3. И... надо сказать, что в 2020 году я ошибся, став играть в 3.7.0, т.к. Разбойник стал в этой версии слабее. А в 2021 году я ошибся, начав играть за Священника в 3.4.3, потому что в 3.7.0 священник стал сильнее. Он может метать некую дубину под названием alkys и та будет возвращаться. Кроме того, чувствуется уже устарелость 3.4.3 после 3.7.0 .
Что у меня было интересненького при игре за Священника? -- Буквально на втором уровне я нашёл магазин с непроклятой книгой заклинаний. Я взял её почитать, но забыл, что даже непроклятые книги читать небезопасно. Меня телепортировало из магазина, поэтому продавец оказался обижен. Он шёл за мной и стрелял, а ещё вызвал ментов. Мне пришлось срочно эвакуироваться в шахты. -- Я сделал "спидран" по ходам -- рекорд среди себя, 27,5k ходов. Обычно у меня вознесение занимает 40-50 тысяч ходов. Предыдущий рекорд, 35 тысяч, у меня был в 2015 году. Тогда я возносил Лекаря -- и вообще возноситься-то и не собирался. Я хотел проникнуть к Медузе и убить её как можно больше раз. Но оказалось, что для соревнований считается только одно убийство за игру, поэтому я решил просто как можно быстрее закончить партию, что и сделал. -- Что же мне помогло? Конечно же, чужие кости. В шахтах (на третьем уровне!) я нашёл мёртвого Мага, причём с амулетом отражения. Как мы помним, для прохождения NetHack стратегически необходимо три элемента: отражение, сопротивление магии и сопротивление ядам. И два из трёх я уже имел на тысячном ходу. А сопротивление ядам получил примерно на 6000-м. -- Как раз благодаря отражению и сопротивлению магии я смог подойти к обиженному продавцу не умерев -- и заплатить ему за кражу. Это, вообще, несправедливо. Продавцу надо заплатить, но он сам не подходит, а только стреляет. И как я подойду? -- А в другом магазине я нашёл кости Валькирии, которая с торговцем подралась, а не сбежала, как я. С неё я снял щит+3, очень крутой предмет, на самом деле. -- В Сокобане чуть не сдох от мумии эттина. Два раза стукнул её -- и вижу, осталось здоровьечка на один удар от неё. Элберет писать -- ненадёжно (70%). Тогда я придумал отступать до незаполненной дыры (это же сокобан) и туда повалиться. Пока я отступал, я увеличил разрыв (внезапно) и поэтому смог написать Элберет. А в дыру я бы всё равно не провалился, потому что это был первый этаж сокобана, а там вместо дыр -- ямы. -- Ещё я чуть не сдох от ochre jelly. Неприятный моб, который пожирает и начинает атаковать кислотой. А защиту от кислоты очень сложно достать, тем более в начале игры. Когда увидел, что дохну, догадался последний удар сделать не мечом, а палочкой. А дело в том, что удары мечом по ochre jelly изнутри наносят большой урон мне же самому, поэтому рекомендуют вообще-то кидать меч в неё и подбирать обратно, а не сразу бить, как делал я. -- На дне шахт какой-то уёбок прочитал проклятый свиток создания монстра, поэтому я оказался окружён сразу десятком созданий. Подумав, что делать, я обнаружил среди монстров лошадь. Я приручил её первым же ходом, после чего она мне помогла зачистить весь этот зверинец. К сожалению, лошадка очень быстро умерла, а я ведь мог её вылечить, т.к. было заклинание. Но не догадался. -- Заклинание простого лечения вообще -- имба. Если вы можете его надёжно кастовать, то шансы на смерть в схватке сильно уменьшаются. -- Winged gargoyle. Чудовищный монстр середины игры. Она очень здоровая и сильно бьёт. Однако, у неё нулевое сопротивление магии. Если у вас завалялся свиток приручения, то крылатая гаргулья -- отличная цель. Я с этой ручной гаргульей ещё половину игры ходил. Это лучше даже, чем драконы. Рекомендую. -- Квест. На третьем уровне квеста реально огромное кладбище с сотней (!) мобов или даже больше. Я тихонько прошёл мимо них, пока они спали, но в центральной зоне я случайно... наступил на мину. Проснулись ВСЕ. И начался махач. Я, конечно, не стал всех зачищать. -- Были очень большие проблемы с получением сопротивлений огню, холоду и молнии, поэтому я намеренно прошёл коронацию. -- Впервые испробовал тактику сокращённого прохождения замка, поскольку уже созрел план по спидрану. Я превратился в ксорна, который ходит сквозь стены, и забрал палочку желаний, предварительно определив её местоположение с помощью зелья object detection. А потом я просто обошёл замок вокруг. -- Кстати, первую палочку желаний я нашёл ещё в Большой комнате. Поэтому желаний у меня было дофига. -- Произошло ЧП в городе Оркуса. Первым ходом Оркус снял с меня чуть ли не 45 хп. Я его парализовал, и убил, но вокруг материализовались Тени и стали меня коцать очень сильно. я сбежал вниз, а они за мной. пришлось выпить даже зелье полного лечения. Тени -- существа сложные. Их можно убить только серебром или блеснутым оружием. У меня рог единорога (основное оружие) был блеснутым, но урон слабый. тогда я прочитал, что вообще-то Колокол Открытия серебряный, поэтому он подходит для этого дела. Только так я с ними и справился. Было сложно. А ещё серебряный урон от Колокола работает на вампиров и демонов тоже. Избивать их колокольчиком было очень смешно. -- Я играл в 3.4.3, где нельзя быстро найти вибрирующий квадрат на дне подземелья, поэтому для того, чтобы ускорить копание, я приручил umber hulk. Но оказалось, что заставить его копать там, где надо, не так-то просто! -- На астральном плане в меня метали прицельно: The priest of Ishtar hurls a potion of paralysis! The potion of paralysis misses the invisible priestess of Anshar. The potion of paralysis misses the Angel of Anshar. The potion of paralysis misses the Angel of Anu. The bottle crashes on your head and breaks into shards. You stiffen momentarily. -- Я решил для ускорения прохождения воспользоваться helm of opposite alignment, чтобы принести Амулет Йендора в жертву на чужом алтаре. Это получилось, но всё равно первым оказался нейтральный алтарь, а я, как законопослушный, не мог стать нейтральным при помощи этого шлема, только хаотиком. Пришлось идти ко второму алтарю, который тоже оказался не мой, но там я уже шлем применил.
Таким образом, у меня остались только две невознесённые роли, Монах и Турист.
Смотрим с папой Shokugeki no Souma. Это аниме про кулинарные поединки.
Кто не в курсе, в конце первого и начале второго сезона основная тема -- некие "осенние выборы". Выбирают, кто лучше готовит.
Папа: Ну что там, скачал нам второй сезон? Я: Ага. Я случайно прочитал, чем закончатся осенние выборы. Папа: И чем? Я: Это спойлер. Всё равно сказать? Папа: Да. Я ему сказал. Папа: Блин! Я думал, ты про выборы в Госдуму!
К нам пришли козы. Их было пятеро. И с ними был хозяин. Босс и минионы.
Козы едят листья. Мы как раз отпилили много веток, которые мешали жить. И спилили парочку деревьев.
Козы и хозяин тусовались на заднем дворе. А мы выносили туда ветки и складывали их кучей. Я пишу "ветка", вы, наверное, представляете себе тоненькую палочку миллиметров 5 диаметром и длиной сантиметров 30? Но имею я ввиду ветищи длиной 3-4 метра и толщиной 5-10 сантиметров.
Хозяин: Вам эти ветки нужны? Я: Нет. Берите. Хозяин: А можно их козы есть будут? Я: Конечно.
Тащу следующую ветку.
Хозяин: А можете ветки поближе к моему участку подтаскивать, хотя бы вот сюда? Я: Ладно.
Тащу следующую ветку.
Хозяин: А можете прямо ко мне на участок подтащить? Я: Нам так ветки в два раза дальше нести. Мы же не можем всё к вам тащить. Хозяин: Ну я тоже не могу один всё таскать! Я:... Хозяин: Вам же самим меньше забот будет! Я:... Хозяин: А если вы их тут оставите, вас ругать будут! (он ещё угрожает!)
Не стали мы ветки к нему на участок таскать. Ветки три оставили в средней точки, остальные в изначальной.
Заметьте, как плавно хозяин коз оттягивал себе всё больше и больше нашего ресурса. А козы хорошие.
Вот что я ненавижу при сборке раз'ёмов/вилок питания.
Бывает конструкция, когда сначала надо на провод нацепить одну из деталей раз'ёма, потом всё припаять-прикрутить, а в конце эту деталь (фактически, корпус) надвинуть на всё остальное. Если по описанию непонятно, вот тут пример такой вилки:
И вот я всё прикрутил, собираюсь закрыть корпус -- и тут оказывается, что эту деталь я на провод надеть забыл. А всё, больше никак раз'ём собрать нельзя. Приходится всё откручивать-отпаивать -- и начинать заново. ААААРГХ.
А этих деталей может быть две. Или можно какую-нибудь надеть на провод не той стороной, а выяснится это только при попытке закрыть корпус. Я так некоторые раз'ёмы по три раза собирал.
Интересно, стал бы я меньше ошибаться, если бы собирал раз'ёмы чаще.
Есть некоторое количество тем, которые свободно обсуждать нельзя. Набор этих тем разный в разных странах -- и за обсуждение санкции могут следовать тоже разные. Некоторые идеи нельзя защищать, другие идеи нельзя оспаривать. Предлагаю читателям самостоятельно найти аналогии к нижеследующему тексту, но предупреждаю, что если вы способны обижаться либо резко реагируете на обсуждение остросоциальных вопросов, то закройте этот текст немедленно.
Сейчас очень удобный момент, когда существует остросоциальная тема, которую можно свободно обсуждать -- это антивакцинаторство. На примере этой темы я и двину свою мысль.
Свобода слова в обществе очень важна (я не буду рассматривать вопрос, почему), но есть в обществе ещё одна важная вещь -- общественная безопасность. И общественная опасность антивакцинаторов не в самой идее. А в количестве сторонников.
Не является большой проблемой, когда антивакцинаторов 1% населения. Что же, это право человека -- не прививаться. Это его право -- рассказывать о своём мнении (и может быть, даже пропагандировать). Я за свободу слова.
Когда антивакцинаторов 10%, это уже критический уровень. Я тоже за свободу слова, но уже кривлюсь. Пропаганду бы надо свернуть.
30% это уже атас. После достижения 30% противостоять антивакцинаторской идеологии должны и государство, и общество. Как противостоять -- вопрос отдельный. Почему маргинальная, общественно опасная идеология набирает 30%? Были ли у этого причины? Можно ли убрать эти причины или как-то компенсировать? Но это уже вопрос политики, его я рассматривать тоже не буду.
Но есть и обратная сторона. Тут я не могу привести ни одного примера по понятным причинам. Некоторых идей в некоторых странах боятся панически, хотя они будут представлять опасность только по достижении критического процента. А по некоторым, которые процент опасности давно превысили, ничего не предпринимается. А ведь общественно опасны и те, и другие.
Я "нормально" играл только в одну такую игру -- Thouhou 6 (EoSD).
Итак, что же такое "динамическая сложность" в игре?
Игра постоянно анализирует, насколько хорош игрок. Если игрок хорош -- он получает "усложнение". Если же игра видит, что игрок не справляется, задачу ему упрощают. При этом такой анализ ведётся постоянно -- если на следующем отрезке игрок вдруг начал играть лучше, задача снова усложняется.
В EoSD игромеханика очень бедная, поэтому "анализ" и "сложность" реализованы незамысловато: -- Если умер, то становится меньше пуль, плюс они летят медленнее. -- Если долгое время не умираешь, сложность постепенно нарастает до определённого предела, после чего становится постоянной.
Есть ещё NetHack. Там есть элемент динамической сложности: чем более прокачанный игрок, и чем глубже он забрался, тем более сильных мобов ему присылает игра. Это, однако, не может считаться динамической сложностью в полном смысле слова, поскольку: -- при правильной стратегии NetHack в течение каждой катки упрощается, а не усложняется, т.е. повышение сложности компенсируется. -- сложность не зависит от качества игры игрока, если только качеством не считать сам факт выживания. -- даже если считать, смерть приводит к концу игры, поэтому "упрощение" для плохих игроков невозможно.
Сюда же относятся игры, где сложность только растёт, например, увеличивается скорость в тетрисе. Впрочем, именно в тетрисе есть большой простор по созданию "добрых" и "злых" генераторов деталек, но это отдельная тема. Такими способами можно реализовать динамическую сложность.
Если вы знаете другие игры с динамической сложностью (кроме Doom Eternal, о котором мне рассказали сегодня), сообщите, пожалуйста, как там это реализовано.
Так вот, динамической сложностью я недоволен. Вот причины: 1. Статическая сложность это определённая "планка", "челлендж", который надо преодолеть. Это приносит чувство удовлетворения. Если же ты преодолел динамическую сложность, то... что ты преодолел? Ты преодолел свою индивидуальную планку. Но достижение ли это, когда специально для тебя планку понизили? Как мериться с другими? 2. Динамическая сложность наказывает (!) хороших игроков. Это вызывает ощущение несправедливости. Обычно за хорошую игру, вообще-то, положены бонусы. 3. Игра подыгрывает плохим игрокам. Это нечестность другого рода. Во-первых меня, как плохого игрока, жалеют, а жалости вашей мне не надо. Если бы я не хотел порвать жопу на этом боссе, я бы просто не запускал игру. Во-вторых, игра с челленджем (в смысле, игра "на прохождение", а не "песочница") -- это распределение ролей. Разработчики ставят перед игроками задачу, а игроки её решают. Подыгрывание -- это нарушение роли.
Я недавно упражнялся по поводу того, что оплата штрафов "со скидкой" -- это как "товар по акции". Так что вы думаете, если оплачивать штраф через интернет по карте, то в смс-ке так и пишут -- "Покупка SHTRAFI GIBDD".
Маску я надеваю, когда захожу в магазин. Когда просто по улице иду -- нос освобождаю. И то, мужики на скамеечке у магазина смеются -- ишь какой, в маске и перчатках идёт.
А на улице ремонт. Я мимо шёл, а рабочий с болгаркой вдруг ВЖЖЖЖ. И поднялось облако пыли. После пары непечатных мыслей я начинаю думать, что надо бы раздобыть противогаз. А потом понимаю, что противогаз-то у меня уже есть. И надвигаю маску на нос.
Поставил старый жёсткий диск в новый комп -- не грузится. Решил, что это из-за того, что железо слишком новое. Наверное, надо винду с 7 до 10 обновить. С нуля ставить не хотел, надо было сохранить установленные программы.
Запускаю установщик, а он мне пишет, что если вместо чистой установки я хочу "обновление", то установку надо вызывать из-под запущенной старой версии! А она не запускается.
***
Дело было не совсем в железе. Это был STOP 0x7B, INACCESSIBLE_BOOT_DEVICE. На решение этой проблемы можно потратить несколько дней. Поэтому коллега решил установить винду на другой винт.
MFC -- фреймворк устаревший, написанный вразрез с парадигмой ООП. Тем не менее, на нём у нас крутятся проекты. Особенность этого фреймворка в том, что он очень близок к чистому WinAPI. И знание основ WinAPI может помочь определить, в чём проблема.
Евгений Евгеньевич, наш доктор наук, рассказывает, что интуиция -- это, в первую очередь -- опыт. Чем больше различных ситуаций ты видел, тем быстрее ты догадаешься о решении в сходной или даже новой ситуации.
Я так уклончиво начинаю, а что случилось-то? История крайне странная.
Создаю чекбокс. Мне надо, чтобы при клике на чекбокс производились определённые действия. Пишу действия -- это называется "обработчик". Обработчик не вызывается. В окне есть другой чекбокс, со своим обработчиком -- он прекрасно вызывается. Никакой разницы между чекбоксами нет. Переименовал чекбокс, создал новый обработчик -- не помогает. В чём же дело?
Тогда я полез проверять идентификаторы чекбоксов. Идентификатор -- это просто число, которое уникально для каждого элемента управления в окне. Как же происходит нажатие кнопки в WinAPI? (а кнопка и чекбокс с точки зрения WinAPI отличаются слабо).
Когда пользователь нажимает кнопку, генерируется сообщение, например, WM_COMMAND. Это сообщение ставится в очередь сообщений для того окна, где нажали кнопку. Цикл обработки сообщений на очередной итерации узнает, что произошёл щелчок. Но как он узнает, по какой кнопке щёлкнули? А вот у каждого сообщения есть "параметр" и этот параметр содержит идентификатор кнопки.
MFC и вижуал студия хорошо назначают идентификаторы только когда вы рисуете окно с нуля и ничего в нём не переделываете. Много ума для этого не надо. Когда же вы начинаете удалять элементы управления, студия за вами не "подчищает" мусор. Это надо делать самому. И для этого надо понимать, что и где чистить. Ситуация парадоксальная: ломать сложнее, чем строить.
ОКАЗАЛОСЬ
Много лет назад в диалоговом окне, где я рисовал чекбокс, уже была кнопка с идентификатором 1016. Потом её удалили. А идентификатор и обработчик нажатия остались. Когда я добавил новый чекбокс, студия посмотрела, какие идентификаторы не заняты? Ага, 1016 не занят ни одной кнопкой. Ставим его.
И тут в игру вступил притаившийся устаревший обработчик. Хотя у меня и было указано, что вызывать надо новый, но мои указания были в самом конце таблицы вызовов. А при поиске обработчика таблица просматривается с начала. При клике на чекбокс вызывался обработчик старой, давно удалённой кнопки! Ну и когда я его удалил -- всё заработало.
Если (когда) дайари закроется, по этим адресам я напишу о том, куда переехал.
Насколько понимаю, многие с дайари уходят или на блог-хаус или на дыбр. Как по вашим наблюдениям, записи с которого из них лучше ищутся гуглом? Какие есть ещё варианты?
***
Хочу отметить перспективность телеграма самого по себе. С 2011 года я набрал 70 читателей на дайари. В телеграме же я набрал 30, но с 2018 года. Короче говоря, можете меня поздравить, сегодня моя суммарная аудитория впервые достигла 100 человек.
Опять я борюсь с типами в Си, но в этот раз борьба получилась... поучительной, что ли.
Поскольку проверить, что конкретно зашито в микроконтроллер, нелегко, как правило в прошивку добавляется команда, возвращающая номер версии. У меня по основному проекту такой функции долго не было -- и я мучился. Потом я такую функцию добавил. Вместо номера версии я решил хранить дату коммита. Для хранения я выбрал целое число (int32). Дата содержит восемь цифр, YYYYMMDD, поэтому 32-битный тип вполне подходит для её хранения.
Далее, дату надо как-то получать. У меня уже была готовая функция для чтения и записи параметров в микроконтроллер, но поскольку контроллер работает и с некоторой математикой, для единообразия я получал и записывал данные как float (32 бита). Целые числа тоже перегонялись во флоат и обратно. Я знаю, как устроен тип флоат, и как с ним работать, поэтому я мог быть уверен, что целые числа будут гоняться туда-сюда без погрешностей.
На самом деле я знал это не досконально, а именно, я не помнил конкретное число бит под мантиссу и порядок.
Один из коммитов был первого июля. Дата: 20210701. Однако, когда я решил получить номер версии у прошитого микроконтроллера, я с удивлением получил несуществующий день, а именно, 20210700. Почему же? Я открыл интернет и обнаружил, что под мантиссу в типе float выделяется 23 бита (24 неявно), что в пересчёте на десятичные числа даёт 7-8 значащих цифр (знак хранится отдельно, поэтому можно рассчитывать на сохранение чисел от -16777215 до 16777215). 20210701 превышает максимальное число, которое можно хранить без потерь. И в рамках типа float это необоримо.
Остаётся только не хранить ведущие цифры года, поскольку и так понятно, что они будут "20". Шесть цифр я могу хранить гарантированно.
Надо было совершить техническую поездку на дачу. Холодильник ещё не включен. Хотя часто говорят, что в жару холодное пить не надо, потому что холодная вода не усваивается, но всё равно холодненького хочется. Обещали +35.
Как взять с собой холодненькое? Мама предложила заморозить бутылку, а ко времени употребления она как раз оттает. Я видел, как тают замороженные бутылки, поэтому полагаю, что её решение бы не сработало. Но это навело меня на идею получше.
Термос подходит не только для сохранения тепла, но и холода. И! В термос можно положить лёд кубиками. А потом этим льдом охлаждать уже всё, что хочется.