Можно подумать, что джиггер нужен исключительно для алкоголя.
Однако ОКАЗЫВАЕТСЯ, что если в рецепте блюда написано что-нибудь вроде "добавьте в соус 30 мл сливок", то очень удобно использовать для этого именно джиггер, а не громадный мерный стакан.
От омикрона у людей едет крыша вплоть до "ура, живая вакцина, поскорее бы заразиться". ДА, похоже, что вакцины плохо спасают от омикрона и ДА, похоже, что он гораздо заразнее.
Но откуда мысль о том, что омикрон положит пандемии конец? Если иммунитет у переболевших и у привитых не спасает от омикрона, то почему иммунитет, полученный после омикрона, должен спасать против дельты и других штаммов?
Я не знаю, как будет складываться ситуация, однако вполне возможно, что омикроном все тихонько переболеют, и он исчезнет. А дельта -- останется.
Я ехал по шоссе после снегопада -- и мне надо было приехать ко времени. Шоссе было не в пробке, но ехало очень медленно, 30 км/ч. Постепенно я увидел вдали снегоуборочные машины, которые ехали по диагонали. Это часто бывает после снегопадов. Но меня настораживал один факт -- огни снегоуборочных машин я видел, а вот огни машин обычных были только ПОЗАДИ снегоуборочных.
Обычно снегоуборочные едут хотя и по диагонали, но с промежутками, так что легковые могут потихоньку их об'езжать. Эти же ехали сплошным строем, перегородив всю дорогу. Количество машин между мной и снегоочистителями постепенно сокращалось, но сокращалось оно только потому, что машины постепенно с'езжали на побочные дороги.
Полчаса я ехал за ними, пока мне наконец не удалось оказаться в первых рядах. И тут справа открылась временная дополнительная полоса. Я решил этим воспользоваться. Однако из-за того, что снегоуборочные по этой полосе не ехали, на ней был слой снега. Этого я не учёл. Как только я попытался выехать на полосу, я немедленно попал в занос.
У меня задний привод, поэтому с заносом мне приходится работать постоянно. Но обычно это небольшой, только-только зарождающийся занос. С ним я справляться умею. В этот раз я с разгону попал сразу в сильный занос. И он оказался ритмическим. Это было уже выше моих способностей. Я не смог выровнять машину -- спустя три цикла я остановился перпендикулярно дороге (всё это было под музыку из Initial D, да-да). Хвала богам, я ни в кого не в'ехал. Развернулся -- и поехал дальше.
-- Что ты так истерично смеёшься? -- Я волнуюсь. У нас же иностранная поставка. -- И что? Не ты же прибор делал. -- Всё равно. У меня гиперответственность. -- Ну а вот прибор делал я. И мне норм!
Прошло некоторое время -- и я понял, что мне на самом деле не норм. Оказывается, я тоже волновался.
Жмякать руки я, конечно, всегда любил. Но настал коронавирус. Большинство с пониманием отнеслись к тому, что я не жму руку и говорю -- "коронавирус". Из оставшихся многие соглашались в качестве приветствия стукаться кулаками.
Но были несколько человек, для которых рукопожатие оказалось важным ритуалом. И рассказы про коронавирус, а также предложение кулака их не убеждали. "Не жмёт руку -- значит не уважает" -- вот что они говорили. И, на самом деле, они были правы. Потому что когда меня отправили осенью в командировку в Ростов-на-Дону -- там на об'екте я жал руку всем. Потому что там серьёзные пролетарии. Мне было просто страшно отказываться. Страх и уважение оказались сильно связаны.
Таким образом я обнаружил точку, где сталкиваются современные обстоятельства и традиция.
В этот раз я ехал по настоящей неосвещённой областной двухполосной дороге. А потом я увидел вдалеке один синий огонь и один красный огонь, как в анекдоте. Проблема была в том, что огни были метрах в пяти над землёй. Ну точно, инопланетяне с Марса и Венеры.
Под'езжаю -- пропали! Еду ещё километр -- ситуация повторяется.
ОКАЗАЛОСЬ
что это, блин, камеры. Да, на камерах установлены красно-синие огни, которые гаснут, когда к ним приближаешься. С одной стороны -- это правильно, а с другой -- это что ещё за дезинформация?
-- Брат. -- Что? -- Брат! -- Какой брат? -- Ты мой брат?
У меня аж всё упало внутри. Я не большой специалист по психиатрии. Однако, мне доводилось присматривать за своей бабушкой в состоянии деменции. Если у человека появились проблемы с восприятием реальности, то отвечать на такой вопрос, в общем-то, смысла особого нет. Надо думать, где мама находится, и как ей вызвать санитаров. Тем не менее, на всякий случай, я ей ответил:
-- Нет. -- А ЗАЧЕМ ТЫ ТЁТКЕ ИЗ ОБЩЕСТВА ИНВАЛИДОВ СКАЗАЛ ЧТО ТЫ МОЙ БРАТ?
И тут я понял, что к чему. Мама -- инвалид второй группы. Ей периодически звонят из собеса и других контор по различным программам поддержки. Позвонили и сегодня, на городской. Мама фактически проживает на второй квартире, поэтому я предложил им позвонить ей на сотовый. У них не было номера. Тогда я сказал им номер. Но ни про какого брата я тётке не говорил. Это тётка придумала сама.
А злилась мама на меня не поэтому, а потому что я тётке сказал не "общественный", а "секретный" номер телефона. Тут -- мой косяк, да.
Короче, обошлось без санитаров, но перепугался я знатно.
В том участке кода, который по моим предположениям вызывал исключение, я через каждые несколько строчек натыкал вывод на экранчик цифр 1, 2, 3... в одну и ту же позицию. Если всё было хорошо, я должен был видеть последнюю цифру после каждой отработки участка. Допустим, цифру 9. Если бы произошла ошибка, то она была бы после последней цифры, которую я увидел бы на экране.
При обычной работе я действительно видел цифру 9. Однако при соблюдении специфичных условий вместо этой одной цифры -- или какой-либо другой -- я увидел мигание всех цифр по очереди в течение нескольких секунд, а потом МК ушёл в перезагрузку.
У меня что-то зациклилось, что не должно было? Почти. В этом участке кода была запланированная рекурсия. Однако при нормальных обстоятельствах она либо вообще не должна была возникать, либо должна была иметь глубину 1 (один). При рекурсивном вызове у меня всегда передавался параметр, который рекурсию прерывал.
Точнее, я думал, что передавался. Из-за алгоритмической ошибки при некоторых обстоятельствах повторный вызов происходил с тем же параметром, с которым происходил первый. А поскольку обстоятельства не менялись в течение пары секунд, КАЖДЫЙ следующий вызов воспринимался как первый. Рекурсия становилась бесконечной.
Я предполагал выход за границы массива. На самом же деле я имел дело с переполнением стека. Да-да, тот самый stack overflow.
Микроконтроллер стал внезапно перезагружаться. Точнее, не внезапно, а после строго определённых действий с оборудованием. Поскольку действия были связаны с включением/отключением нагрузки, я было решил, что дело в электромагнитной совместимости, но игры со схемой заземления эффекта не дали.
По совету друзей я решил посмотреть причину перезагрузки. В большинстве МК есть регистр, который показывает, в каком статусе произошла текущая загрузка. В PIC32 он называется RCON. Регистр не слишком информативен, но это уже кое-что. Особенностью отладки в этот раз было то, что МК был установлен в уже собранный шкаф, поэтому были проблемы с тем, чтобы подключить отладчик. Но посмотреть содержимое данного регистра можно было несколькими способами. Во-первых, после перезагрузки контроллер нормально работал, поэтому к нему можно было подключиться с компа через штатный интерфейс. Дописать команду выдачи регистра -- не проблема. Но у меня было кое-что получше. Разработчики электроники приделали LCD-экранчик, который выдавал текст. И я мог вывести содержимое регистра прямо на него -- это во-вторых. Так я и сделал.
Я ожидал увидеть после "внезапной" перезагрузки или "нормальный старт", или "brown-out старт", т.е. сбой по питанию. Однако вместо этого я увидел бит, сигнализирующий о том, что перезагрузка была вызвана программно. А когда у нас вызывается программная перезагрузка? Либо при срабатывании Watchdog-таймера, либо в тех случаях, когда МК сваливается в необрабатываемое исключение типа деления на ноль или микроконтролерного аналога access violation. Watchdog был, но он был настроен где-то минут на 15, поэтому я решил копать в сторону исключений.
Для этого в PIC32 есть целых два регистра -- адрес исключения и причина исключения. Адрес я и так примерно знал, а вот причина была очень интересна. Причина -- это число от 1 до 30. И мне надо было как-то вытащить из МК это число.
Я собрался вывести его на экранчик, однако обнаружил, что в состоянии исключения МК на экранчик выводить ничего не хочет (SPI). Тем более, он не смог бы вывести ничего на компьютер.
Тогда я подумал, что поскольку перезагрузка программная, то содержимое оперативной памяти может сохраниться. Я сохранил регистры по определённому адресу, однако после перезагрузки обнаружил лишь нули, увы.
И вот тогда-то я вспомнил, как смеялся над разработчиками, что они мне поменяли светодиод на пищалку. Я написал цикл, который через паузу включает и выключает эту грёбаную пищалку столько раз, сколько указано в регистре причины исключения. После этого я с удовлетворением услышал пять гудков.
В переводе на виндузятский это означало "access violation, memory could not be written". Обнаружить конкретную ошибку ещё только предстоит, но уже сейчас можно сказать, что это, по-видимому, что-то вроде выхода за границы массива.
Осторожно дальше будет чёрный юмор. Или не юмор, но что-то в этом духе.
У мамы есть подруга по имени Клава. У Клавы мать умерла от коронавируса (отказывалась делать прививку). Мать Клавы жила на Украине, а Клава -- в России. Гражданство украинское.
Клава решила на похороны не ехать, потому что выяснила, что до Украины она может и доедет, а вот обратно вернуться не сможет.
И тогда Клава сначала организовала похороны по интернету, а потом по интернету побывала на них! Технические детали мне, увы, не известны.
***
А теперь "юмор". Отец Клавы умер в ещё в 2013 году. Когда его хоронили -- сделали сразу двойное надгробие -- для него и для матери. И... та-дам! На этом надгробии сразу же выгравировали ФИО матери, которой оставалось жить ещё восемь лет. Также там была дата её рождение, тире -- и пропуск вместо даты смерти. А самое главное -- на надгробии сразу же сделали её портрет!
Если у вас есть чаты, то это обновление могло вас обеспокоить. И вот почему.
В чём смысл: вот у меня есть несколько каналов, владельцем которых я являюсь. Каналы должны быть публичными. Я могу зайти в любой публичный же чат и начать писать не от своего лица, а от лица любого из своих каналов.
При этом никто, даже админы чата, не будет знать, кто на самом деле постит (если, конечно, я где-нибудь на канале не спалил свой аккаунт).
Это открывает широкое поле для применения не по назначению (а что тут вообще является назначением?). То есть, можно "как бы анонимно" писать в чате что угодно, при этом админы не будут знать, что это за хуй их терроризирует.
Можно создать сотни каналов, и от лица каждого из них слать дикпики!
Ужасная перспектива? Конечно. Но всё-таки, как я выяснил, на таких шутников есть управа. Да, админы не могут знать, кто точно в чате прикалывается. Но "юзернеймы" каналов тоже можно банить. И если хотя бы один из каналов, принадлежащих этому умнику, забанен, то он теряет возможность писать от лица любых своих каналов. Может писать только от своего. Таким образом, сотни каналов, постящих фигню, чатам не грозят. Но один (!) раз любой пользователь может подгадить админам безнаказанно.
Э-эх.
UPD. На март 2023 года функция теперь доступна только владельцам премиум-аккаунтов. Когда её убрали у простых пользователей -- я не отследил. Лучше это или хуже, чем старый вариант -- не знаю.
Когда я был в командировке в 2019 году, я там был долго, три месяца. На об'екте работало много людей. И они приходили посмотреть что к чему, пообщаться. В основном, это были различные начальники. Обычно они все представлялись. Потом надо было как-то понять, кто вообще перед тобой стоит. Самая вежливая формулировка, которую я смог придумать, звучала так: "кем вы здесь работаете?"
А потом наступали сложности. Чувака как-то надо было запомнить, потому что он же ещё раз придёт. Фоткать начальников было бы плохой идеей. Поэтому после ухода каждого посетителя я открывал последнюю страницу тетради, куда я всё записывал, и делал запись:
Иванов Иван. Генеральный директор. Щуплый, бородатый.
Не то чтобы эти записи помогали опознать пришедших, но они помогали лучше осознать, как выглядел тот или иной человек, чтобы его потом было легче узнать.
Что там говорил Шерлок Холмс? Ну, например, такое:
"Отбросьте все, что не могло иметь места, и останется один-единственный факт, который и есть истина."
Конан Дойл обращается к такому понятию, как "универсальное множество". Среди всех возможных вариантов есть истинные и ложные. Если все варианты расписать, то для каждого можно оценить истинность. Мы исключаем все ложные -- и остаются истинные.
Это очень красиво и математически точно. Но теория и практика отличаются. Засада кроется именно в том, что надо пересчитать все варианты. А это легко только в том случае, если варианты можно представить в виде бинарного дерева, у которого из каждого узла будут выходить листья в духе "условие А выполняется" и "условие А не выполняется".
В иных случаях может выясниться, что вы предусмотрели не все варианты. Таким образом, когда останется лишь один -- это вовсе не будет означать, что он истинный. Истинный какой-то ещё, о котором вы даже не догадались.
Вот, например, я тестировал на установке некую линию управления. Она глючила. Я методом дифференциальной диагностики перебрал последовательно все блоки и соединяющие их кабеля, ожидая, что после замены одного из звеньев всё заработает. Когда осталось последнее звено, я не стал делать преждевременного вывода о том, что оно-то и неисправно. Я проверил в натуре. И оказалось, что его замена тоже не дала результатов.
А потом я узнал, что вторая, аналогичная линия управления, глючит тоже. Таким образом, проблема оказалась на уровень выше. И вот на этом уровне выше я, честно говоря, затрудняюсь сочинить даже несколько правдоподобных вариантов для проверки. Не говоря уже о том, чтобы пересчитать их все.
Когда на дороге внезапно выключили свет, я растерялся. Фары, конечно, светят, но видно плоховато. Куда я вообще еду? Каким-то чудом доехал до освещённого участка не сбавляя скорости. А потом понял, что надо было замедлиться, причём очень сильно, потому что участок дороги, который видно -- постоянной длины. И чем меньше скорость, тем больше времени на раздумья. В тот раз мне повезло, что дорога была широкая, очень хорошо знакомая, не встретилось препятствий, а также были встречные машины, по которым можно было ориентироваться.
Итак, первое правило -- по тёмной дороге надо ехать медленно.
В другой раз я ехал по другой, менее знакомой дороге, и там был заведомо неосвещённый участок. Я решил поехать по крайней правой полосе, из трёх. Передо мной вдалеке ехала ещё одна машина. Основная масса машин ехала по второй и третьей полосе. Вдруг эта машина взяла левее. А почему? Когда я под'ехал ближе, я обнаружил, что полоса внезапно заканчивается и начинается отбойник, который еле видно. Я собрался взять левее, но прямо сбоку от меня ехал длинномерный грузовик. Мне удалось затормозить и вписаться в интервал времени между тем, когда грузовик уже кончился и когда отбойник ещё не начался. Этот интервал времени был не очень большой.
Тогда я не задумывался о том, что вдалеке передо мной едет какая-то машина. Но именно это стало решающим фактором того, что мне удалось заметить окончание полосы.
Второе правило -- если есть возможность, нужно всегда ехать за кем-то и не выёбываться (как и при езде в тумане).
Нюанс тут такой, что как правило неосвещённые дороги -- это областные двухполоски, поэтому попасть в ситуацию типа моей, когда я выбрал непопулярную полосу, сложно. Но на двухполосках есть другой соблазн -- обогнать машину, едущую с неудобно низкой скоростью. И лишиться этим дополнительного ориентира.
Напоследок -- про дальний свет. Водители действительно включают дальний свет на неосвещённых дорогах, при этом сильно не заботятся об ослеплении других водителей. Если у вас есть конкретные советы или наблюдения про дальний свет, которые не являются пересказом ПДД, сообщите, пожалуйста.
Появились сообщения о блокировках Tor в России. Я на своём опыте увидел блокировку у провадйера NetByNet. Когда Тор перестал подключаться, я подумал -- "да ну, не может быть! неужели начали блокировать? наверное, телефон глючит"
Если вы искали знак, чтобы уехать из России, то я его вам даю. Сам я вряд ли уеду. Я лох. Но вы-то нет.
Целиком заблокировать Тор сложно, но затруднить его применение очень даже можно. Ватник с работы говорит, а вон в Германии штрафы приходят за скачивание с торрентов. Но оннепонимает, блокировка Тора -- этодругое.
В последнее время я заинтересовался Кровостоком. Предлагаю прослушать следующую композицию (осторожно, песня противная!): www.youtube.com/watch?v=c7YQnCn5NqQ
***
Напоследок -- вредные советы. Чтобы система эффективно работала, требуется: 1. Белый список протоколов, а желательно -- айпи-адресов для доступа. 2. Ответственность, желательно уголовная, за доступ к запрещённой информации.