Profile

coolwolf0: (Default)
coolwolf0

August 2025

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Custom Text

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

Собственно, потому и обсуждали, что я её заполучил. Палец конечно же распух, но не болит, а скорее находится в состоянии эдакого наркоза.

Но ничего, остальные плоды я почистил без потерь, прижимая вилочкой и обрезая по краю ножиком. Короче, это тайное знание для избранных, которое передаётся от отца к сыну ;-) Don't try it at home.

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

Только в Израиле Тапиро и Либерман заключив сделку говорят на арабском "мабрук" ;-) и очень довольны, что поняли друг друга.

Короче, слушайте про это старую но хорошую пестню.

Ситуёвина из моих трудовых будней. Сразу скажу, что не-компьютерщикам, и не-юниксоидам тут будет неинтересно.

Итак, типовая рабочая задача. Пользователь открыл тикет: у него почему-то падает тест. Тест запускает из-под себя некий скрипт и ... получат от системы сообщение "file not found". Ну, первая заповедь суппорта - проверь, а не врёт ли пользователь. И как ни странно, выходит, что файл наличествует. Хоть и локальный, но на том самом компьютере, где всё произошло. И время создания у него вполне надёжное, то есть при запуске теста он точно существовал.

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

Перехожу к следующей фазе двоичного дерева решений - свести проблему к простейшему примеру и найти точку, где упрощение приводит к нормальному поведению. Дохожу в декомпозиции до самой команды. Запускаю ... и $%@# получаю ту же ошибку. То есть с точки зрения какой нибудь команды "ls" файл имеется, он не пустой, и не симлинк "в никуда". Обычный файл, скрипт на Пайтоне! В таких ситуациях программист начинает придумывать самые фантастические объяснения, вроде вируса в системе. Ага, в линуксе, который за стопицот фаерволами в корпоративной сети, и при этом портится только этот несчастный скрипт.

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

Короче, проблема была решена без всяких AI-помошников, чисто на собственном более чем 25-летнем опыте. И это оказалась не сигнатура UTF8 и не виндузовая кодировка CR-LF. Когда юзер узнал причину, он прямо офигел.

Даю читателям блога срок до завтра. Если кто может догадаться, что там случилось с несчастным файлом - комментируйте.
Я топчусь на месте. Кручусь в "даймонд лиг" на первых местах, но не могу продвинуться дальше уже выученного материала. Были бы они умнее, то сделали бы какой-нибудь конструктор уроков, чтобы люди сами набирались словарного запаса.

Однако, есть и положительные стороны в этом толчении воды. Например, я начал задумываться над связями между словами. Если "сариа" - быстрый, то "би-сура" - быстро, и они явно однокоренные. Глагол "эшраб" (пью) явно связан с существительным "машруб" (напиток). Понятное дело, в этой игре в прятки мне сильно помогает знание иврита, потому что хоть языки и разбежались давным-давно, но грамматика очень схожа. Я даже попытался найти какие-то самоучители и грамматические пособия. Из имеющейся в сети литературы львиную долю составляют либо упоротые религиозные пособия для медресе, либо научные труды для студиозусов языковых специальностей. Вся эта фигня сводится к литературному языку, который мне нафиг не нужен. Кстати, "медресе" тоже имеет глагольного родственника "эдрус" (изучаю), а также "дурс" (урок). От нечего делать порылся в словаре, нашёл какие-то крутившиеся на слуху словечки. Имя "Расул" (Гамзатов, например) получается означает "вестник", потому что "риселя" - весть, сообщение. Али - высокий, Латиф - милостивый, Риад - прекрасный. Самое интересное обнаружилось в имени Салават (вроде бы даже такой город есть). Так вот, оказывается "салават" - это название стандартного благословения при упоминании имени пророка. Блин, а в советские времена это название казалось таким революционным или по крайней мере посконным татарским, не имеющим отношения к религии. Не обошлось без странных обратных заимствований. Рубашка "камис" - родной брат известного "тенго ла камиса нера", то есть чисто испанского словечка. Или "оранжевый", то есть "апельсиновый" цвет, происходит от понятно какой страны - "бартукаль".

Но самое удивительное ждало меня после прочтения первых страниц грамматики. В учебнике я обнаружил не только знакомое двойственное число, но и смихут (то есть сопряжение существительных), а также гизрот (то есть модели склонения). И при этом даже корневая основа, используемая для иллюстрации моделей - знакомый из иврита корень ПаАЛь. На этом хорошие новости заканчиваются, потому что как и в иврите все эти модели придётся заучивать. Кроме того, в арабском обнаружились несколько падежей, и в отличие от иврита (где дело заканчивается добавлением предлога) они реально меняют произношение слова.
Захотелось мне в пауэрпойнт презентации вставить объяснения по перечисленным в таблице данным.
Чтоб эдак элегантно пройтись мышкой по названию кейса, дойти до иконки "информация" и вуаля, получить ту самую информацию в виде выскочившего облачка с текстом. А потом также небрежно кликнуть по какой-нибудь кнопочке "понятно" и вернуться в табличку.
Казалось бы, я выбрал верный инструмент. Ну не в экселе же искать анимацию и всплывающие окошки. Однако вся эта красота до сих пор невозможна без знания анимации, придуманной микромозгами где-то тридцать лет тому назад. Как придумали, так и оставили лежать эту поделку. Если ты не художник-аниматор, то иди, ищи себе художника, расписывай с ним сценарий кликов и движений, короче заморачивайся на пустом месте.
Ну как же так, скажете вы, мы ведь живём в эпоху искусственных мозгов, которые уже успешно заменяют естественный разум. А вот никак. Попытка вызвать скрепку AI-консультанта прямо из пауэрпойнта привела к зависанию. Хорошо, что зависли мозги у их подсистемы, а не мой компьютер с открытой презентацией, но всё равно как-то погано. Ну ладно, мы не гордые, сформулировал я ту же задачку, но уже снаружи, в Джемини. И он честно рассказал банальную и печальную правду: или делай выделенные странички с информацией (аллё, а где попап и анимация?), или прикручивай анимацию вручную. Никаких готовых объектов хвалёный офисный пакет не поддерживает. Вот такой лес, без деревьев.
Не знаю как у вас, а в наших краях стоит сейчас экстремально высокая температура. Это даже для тутошнего региона неприятно, поэтому из прогревшегося до +29° моря сбежали даже сезонные ядовитые медузы. Но инстинкт советского жителя средней полосы требует пляжного отдыха, благо нам от дома до моря ехать минут 15. Так что было решено - в эту субботу обязательно.

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

Ну что я вам скажу. Море - штука замечательная. Я хоть и плаваю как бревно (а когда устаю - то как топор), но всё равно получил удовольствие от барахтанья на мелководье. Если быть точным, то я заплываю и в глубокие места, где до дна не достать ногами, но рассчитываю, чтобы хватило сил на возвращение в безопасную зону. Сегодня даже умудрился несколько раз полежать на спине, чего не делал ни разу за свою долгую и разнообразную жизнь. Просто преодолел страх и откинулся назад. Ощущение очень некомфортное - вода в ушах, и вот-вот зальёт лицо. Собственно, это и произошло в конце концов, так что я заполучил лечебную порцию морской воды в нос по самое не балуйся. Хорошо хоть с волосами проблем теперь нет (по причине отсутствия таковых) - можно не сушиться и не трясти башкой как пёс.

На сегодня ритуал исполнен: съели привезённые из дома сендвичи, купили мороженое в киоске, насорили в машине песком, устали и вот теперь отдыхаем от отдыха. Надеюсь, что за это лето сможем повторить :-) ин-ше-Аллаh.
Хотя стаж автовладения у меня идёт с сентября, но годовой тест (то есть обновление прав на транспортное средство) надо было сделать до августа. И вот сегодня я наконец-то сподобился. Полученный по почте бумажный бланк был оплачен (онлайн), распечатаны все документы (оплаченные права, копия обязательной страховки и копия удостоверения личности), вот собственно и все вводные. Тест я в стародавние годы делал в Нешере - это минут 10 езды от дома. Контора эта за прошедшие двадцать лет внешне нифига не изменилась. Помимо вышеупомянутого государственного сбора в почти 1800 шекелей, на месте с меня взяли 120 за процедуру теста, и 80 за замену помятого номерного знака (хрен его знает, где мы его успели помять). Сама процедура вышла до смешного простой. Машину проверили по трём пунктам: сигналы и фары, состояние двигателя, и на дессерт - тормоза (ручник и обычные). Может ещё что делали, но я этого не заметил ;-) 

Выезжая после теста вспомнил, что при прохождении планового ТО мне указали на неудовлетворительное состояние колеса, вот я и заехал в шиномонтаж. Поменял сразу два передних (добавим к счёту 300+300). Всего на круг вышло 2,600. И это ещё не конец. Передние тормозные колодки надо тоже менять, да и дворники четырёхлетней давности уже не выполняют свою функцию как положено. Поскольку вся операция проводилась с утра пораньше, до начала рабочего дня, я решил отложить прочие манипуляции на потом. Вернувшись домой я даже подключился к рабочей сети вовремя, словно и не занимался никакими делами. Собственно, это и была основная причина, почему я считал лизинг супер-удобной услугой: приехал утром на работу, отдал ключи, вечером получил машину обратно - будь то техобслуживание, тест или ремонт. С другой стороны, раз в год можно встать в пол-седьмого и смотаться на эту неизбежную процедуру, даже без ущерба рабочему графику.
Краткое содержание предыдущих серий: более года тому назад мне было объявлено, что лавочка закрывается и следующую лизинговую машину я не получу. Соответственно, пришлось выкупать в собственное пользование то, что уже имелось. Машиной я в целом доволен, по крайней мере за такие деньги вряд ли я мог купить что-то новое и надёжное, а искать на стороне кота в мешке тоже не хотелось. Пока что кроме расходов на бензин пришлось поменять лампочку в фирменном салоне (в следующий раз сделаю это самостоятельно), и провести плановое техобслуживание. И вот сегодня утром случилось ЭТО. Жена съездила на тренировку, пытается завести там машину, а в ответ - тишина. Да что там говорить, даже отпирание пультом дверей произошло с третьего раза. То есть налицо все признаки сдохшего аккумулятора. Как меня в своё время предупреждал опытный коллега, эти "сухие" аккумуляторы умирают не так постепенно как привычные нам советские. Вжик, и ты просто не можешь ничего сделать.

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

На месте всё прошло буднично. Меня "принял" очень вежливый арабский дедуля. Он просто повёл меня в торговый зал, погрузил аккумулятор нужного номинала на тележку и предоставил мне расплатиться в кассе. Пока я утюжил кредитку на 746 местных рублей (что-то около 17,5 тыр) он уже бодро откручивал старый аккумулятор и проторачивал новый. Вся операция заняла буквально 15 минут. Я дольше ждал своей очереди в бокс. Всё, теперь и этот этап позади.

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

КДПВ:
Это было тяжело (физически), но очень впечатляюще. Сразу скажу, что "дачу" соловьиного помёта мы не искали. Зато увидели массу прекрасных пейзажей, роскошных вилл, пару ботанических садов и несколько музеев. В целом поездка вышла удачной: никто не пострадал, ничего не потеряли, никаких других эксцессов тоже не случилось. Очень важный момент - мы путешествовали с парой знакомых (мама с дочкой). Так вот, в плане межчеловеческих отношений тоже всё вышло тип-топ, никто не обиделся, не встал в позу, не обломал остальным кайф.

Начну рассказ с планирования. Как обычно, жена наметила цели, купила билеты, забронировала места проживания, выяснила где что надо посетить. Я сделал сайт с маршрутом по дням, списком достопримечательностей и техническими деталями (рейсы, адреса, полезная информация). Машину арендовали от-и-до, то есть взяли и сдали в аэропорту. Теоретически приехав в Милан можно было машину сдать, но тогда пришлось бы или добираться до аэропорта на общественном транспорте, или заказывать два такси. В Бергамо и Милане мы заказали пешеходные экскурсии (на русском языке) с местными гидами. Обе отработали по полной программе, провели нас по самым важным точкам, дали обзор в области архитектуры, истории и искусства. Жильё у нас было разное. В первой точке на озёрах это был верхний этаж виллы с прекрасным видом на озеро и окрестности. Хозяйку мы так и не увидели, нас принимал её племянник (или сын?). Вторая точка - отель. Мы там пробыли всего две ночи, но нам этого хватило. А в Милане мы сняли целый двухэтажный лофт, хоть и далеко от центра. Хозяйка живёт буквально напротив и была любезна до назойливости.

Теперь о транспорте. Машину нам дали какую-то китайскую, даже не буду называть марку (что-то из области игровых приставок). Как обычно в китайских поделиях, функционал электроники очень впечатляет: кругом камеры и датчики, продуманная мультимедия с интеграцией в приборную панель, надёжный навигатор. На четвёртый день я обнаружил кнопку регулировки звука и стоп-пуска музыки, а также раздвижную крышу. Не могу сказать, что как автовладелец купил бы себе такое, но для проката машина вполне сгодилась. Для передвижения по озёрам мы брали местные теплоходики. Что характерно, на озере Маджоре они ходили строго по расписанию, а вот на втором озере - весьма вольно. Платить за проезд на таком транспорте можно или купив билет на причале, или прямо на борту. Ну и в Милане пришлось покататься на общественном транспорте. Сначала мы пристрастились к трамваю No1 с историческим салоном, освещённым стеклянными абажурами. Но этот маршрут оказался слишком затяжным по времени, поэтому мы перешли на S-поезда (чуть не сказал S-bahn) и метро. Для оплаты проезда я скачал местное приложение и после нескольких томительных минут регистрации оно позволило нам покупать и валидировать билеты.

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

По поводу еды, у нас всё было просто - мы кушали только там, где было чем накормить мою дражайшую половину. Я ем всё и в любом виде. В Бергамо (кстати, правильное ударение - на первом слоге) мы даже взяли пиццу, которую нам с прилавка порезали ножницами и разогрели в печке. Как я уже упоминал в записках о прошлых путешествиях, спасибо нашему правительству, цены нас нигде не пугают. С другой стороны, лично мне грех жаловаться, я работаю в хайтеке, то есть могу себе многое позволить. А с третьей стороны, путешествовавшая с нами подруга жены с дочкой - отнюдь не миллионеры, но позволяли себе то же, что и мы. В последний день мы даже пошли обедать в пафосное кафе "Аперол-веранда" с видом на собор. И в Комо, в ресторане на вершине горы, тоже не очень зажимались, выпили по бокалу пресловутого аперол-шприц (я не пил, за рулём всё-таки). Когда мы базировались в апартаментах, то еду на завтрак и ужин покупали в супермаркетах, а в отеле у нас был завтрак, но без всякой возможности что-то сварганить, так что шлялись по общепиту ;-)

Понятное дело, помимо еды мы весьма конкретно прошлись по магазинам. Естественно, в солидных бутиках известных брендов нам было нечего ловить (да и куда потом деть вещицу за тыщу-другую евро?). Одежду частично купили по рекомендации гида в Милане в "аутлете", то есть магазине "последнего экземпляра". Тоже не дёшево, но при этом настоящая "фирмА" и по карману. Да и в Бергамо было несколько удачных заходов в магазин "всё по 14.90". Ну и конечно же косметика, как без неё милым дамам? Помимо этого (как дань советской эпохе) в супермаркетах были куплены традиционные сыр и колбаса. Давиться этой фигнёй придётся скорее всего мне. Благо на обратном пути у нас был другой авиаперевозчик (Визз) и у них разрешённый вес чемодана оказался аж 26 кило, так что за перевес доплачивать не пришлось.

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

Под конец оставлю советы и наблюдения. Многие рестораны добавляют в счёт фиксированную сумму с едока, причём сумма разнится от двух до пяти с лишним евро. Проверяйте меню, где эта фигня может быть написана внизу мелким шрифтом. Ещё один "кетч" - оплата за очевидно бесплатные вещи. В одном месте с нас взяли деньги за съеденные хлебные палочки (sic!). В другом месте вообще охамели - у них гарнир к блюду не полагается, а мы наивно подумали что это часть основного блюда. В результате счёт вышел как минимум в полтора раза больше. В одном городке мы забрели в шикарный парк, но посреди прогулки к нам подъехал на мини-автомобиле какой-то франт и прогнал с криками "вы вторглись в мои частные владения" (ага, через распахнутые ворота без единой надписи). Расписание теплоходов в виде PDF документа - не истина в последней инстанции. Проверяйте, есть ли нужный вам рейс на пристани (там всегда есть бегущая строка) и онлайн. Всегда планируйте на какое расстояние берётся билет по озёрам, так если вы взяли "короткий" тариф, то плыть дальше - незаконно (придётся доплатить на месте). В некоторые парки и виллы лучше купить билет заранее, иначе зря протащите свою тушку и обнаружите целую очередь "для тех, кто не в теме". Научитесь пользоваться онлайн-переводом, а то я в одном месте чуть не встал на стоянку, помеченную корявым граффити "машины не ставить". И чисто автомобильное замечание: подкачать колёса на итальянской заправке, это настоящий квест. Маленькие заправки вообще не оборудованы таким прибором. В одном месте мне сделали личное исключение и подключили шланг к магистрали. Но даже если вы нашли такой прибор на большой заправке (хорошо замаскированный под непонятно что), то накачать им колесо тоже не так просто. Дело в том, что это тупо манометр с гашеткой. Приходится жмакать и следить за стрелкой. Как тут не похвалить наши цифровые системы, имеющиеся практически на любой заправке и давно обогнавшие этот архаизм. В городке Ленно нам пришлось несколько раз проехать по улицам "для местных", то есть там, где одной машине с трудом есть место, но тут ... двустороннее движение. Как разъехаться, спросите вы - да никак, езжай задом до ближайшего "кармана" и молись, чтобы тебя не поцарапали. Впрочем, вся трасса вдоль озёр, там где она проходит через жилую зону, - одно сплошное приключение с моногочисленными извивами, неожиданными поворотами и узкими участками.
Буквально вчера была окончательно решена проблема перманентного логина в Андроид-приложении.

Краткое содержание предыдущих серий.

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

2. Ещё более суровая реальность. До сих пор мои сайты и андроид-приложения эксплуатировали эту фичу без зазрения совести. В webView кукис сохраняются так же, как в обычном браузере, достаточно подключить нужную функцию в классе приложения. Но вот настали трудные времена и все внезапно озаботились приватностью. Откладывать кукисы, даже для упрощения логина, оказалось страшно опасным действием. Все сайты вняли требованиям возмущённых пользователей и начали требовать от них добровольно соглашаться на сию потерю анальной девственности. В частности, мои сайты были занесены в "красный список" сами-понимате-какой-корпорацией именно за отсутствие "консента". Пройдя унизительную процедуру я вернул сайтам честное имя, но пользователям от этого лучше не стало. Периодически у них выскакивают напоминания "этот сайт следит за тобой, нажми кнопку чтобы стать его рабом". Логин при этом мягко говоря про%бывается и пользователю приходится совершать дополнительные телодвижения для его восстановления (да, без ввода пароля, но всё равно геморрой).

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

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

Дополнительная "фишка" - защита от поддельного запроса на аутентикацию. Дело в том, что в роли "перца" выступает юникс-тайм на данный момент времени (со стороны сервера). Если кто-то вздумает повторить запрос на логин со старым "перцем", то сервер его отвергнет, так как он уже "просрочен" по сравнению с последним успешным логином. Единственной лазейкой является полная имитация всех алгоритмов на стороне браузера, плюс кража секретной чек-суммы пароля (что является фактически кражей самого пароля).
Если быть точнее, то рыбы две. Во-первых, получить работающий проект на АндроидСтудио оказалось невыполнимым квестом. При создании нового проекта та же самая версия IDE упорно выдаёт webView который не может прочитать ни одну страничку ни с какого сайта. Тупо падает на необъяснимой ошибке и всё. Единственным способом изготовления нового приложения оказалось размножение всей директории и тотальное переименование переменных и директорий внутри. Как ни странно, после такого шаманства приложение спокойно серфит куда ни попадя. Всезнающий AI на вопрос "чо за нах?" только железными руками разводит и несёт какую-то чушь.

Вторая рыба - покрупнее. Это целый PHP и Апач к нему. Уже несколько раз я натыкался на ситуёвину, когда из браузера шлёшь запрос в PHP API, пытаешься распарсить полученный JSON, и ... вылетаешь по exception "illegal character". Особо зоркий глаз может при этом разглядеть в дампе полученного пакета некий мерзкий непечатный символ перед самым началом JSON-структуры. И что бы я ни делал в самом коде - ничего не помогает. Ни танцы с бубном насчёт заголовка, ни поиски вражеского символа в закодированном ответе, ничегошеньки. Как вариант, в старых проектах я отчаянно вырезаю непечатные символы уже на стороне JavaScript, что есть непотребство и чёрная магия. Так вот, оказывается при редактировании исходника на PHP в самом начале файла могут влететь те самые непечатные символы. Называются они BOM (на английском) и означают некий префикс для распознавания кодировки. Если удалить этот самый BOM из исходника, всё работает как положено. И вот тут возникает вопрос: АНАХ#Я? Почему ни интерпретатор PHP, ни многоуважаемый Апач эту дрянь не фильтруют? Кому нужна такая какашка? Может быть есть сценарий, когда BOM посылается в начале реального HTML? Может быть. Но блин, как жестоко при этом пролетают разработчики API! :-[
Машину из лизинга мы выкупили ещё в сентябре. То есть уже имеется полугодовой опыт автовладельца. Подведём предварительные итоги.
Естественно, пришлось осваивать науку поиска дешёвых заправок. Но это оказалось самой простой и очевидной задачей.
Недавно погасла лампочка в одной из фар, что стало поводом наконец-то найти нормальный фирменный гараж для техобслуживания. Счёт за лампочку вышел как обед на двоих в ресторане.
Дальше - больше. В выходные собрались ехать на пикник, встретиться с нашими друзьями. Начинаем грузиться в машину, глядь, а одно колесо - в лепёшку, смято на уровне земли. Поставил запаску, но решили не ехать по трассе на "костылях" - нас забрали до места и обратно наши "двойные" земляки - самарцы из Хайфы. Утром в рабочий день смотался в шиномонтаж. Увы, колесо протёрто на боку по самое никуда. Пришлось брать новое. Тут уже ценник вдвое больше чем за лампочку. Вот теперь сижу и жду техобслуживания на 75 тыщ километров - сколько за него выставит фирменный гараж, будем посмотреть.

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

Сначала - краткое содержание предыдущих серий. Года два-три тому назад я сделал из говна и палок своё первое андроид-приложение. Поскольку тогда ни о каком генеративном AI речи быть не могло, пришлось использовать видео-тьюториалы, наговоренные какими-то индийскими умельцами. С горем пополам то приложение было доведено до нужной кондиции, а его сорсы сданы в архив. И вот настал день "Икс", когда заглючил сайт у моего бесплатного хостера. Перенос кода и базы данных на другого хостера показал, что дело таки действительно было в хостинге. Ну ладно, причина и решение найдены, как теперь переучить имеющееся приложение работать с другим сайтом? На прошлой неделе я буквально за два дня восстановил приложение путём переноса в оригинальный IDE (на самом последнем сорсы тупо не компилировались). Всё, казалось бы хеппи энд... Но суровая реальность отвергла моё половинчатое решение. Приложение не ставилось на реальном "железе", а после декомпиляции и шаманства с цифровой подписью - зависало и вылетало.

Пришлось начать весь цикл заново. Я, уже наученный горьким опытом, задавал своему механическому наставнику правильно поставленные вопросы, заранее отсекая всякие боковые сюжетные линии. Мы с ним решили выбросить в топку старую версию АндроидСтудио "Flamingo" и перейти к более продвинутой "Iguana". В ней я тупо прошёлся по инструкциям моего опытного советчика и действительно получил самую первую работающую версию. Вот только после попытки открыть сайт она печально зависала. Причём в лучших традициях - без сообщений об ошибках. Пришлось учить, где в эмуляторе можно подглядеть консоль приложения. Дальше стало значительно легче. Ошибка была сходу распознана умным Джемини и по его совету я просто вырубил проверку сертификатов (так как эмулятор пребывал в каком-то странном состоянии рассинхронизации с реальностью). Ещё несколько итераций, и приложений прекрасно сработало в дебаг-режиме. После этого я стал терроризировать железного сенсея насчёт создания APK с валидной цифровой подписью, что в конечном счёте и удалось сделать. Приложение заработало на моём смартфоне, и тут можно было бы поставить точку. Но я ещё чуть-чуть пошаманил, встроил перезагрузку страницы по свайпу вниз, добавил в приложение свою фирменную иконку, зум по нажатию двумя пальцами и наконец - передачу информации наружу через "поделиться". Последним штрихом была отмена мерзкого фона в заголовке окна, диктуемого Material3 - пришлось подружиться и с этой частью настроек.

В целом я более чем доволен. На всю бодягу ушло два вечера мозговых штурмов в компании с Джемини. Приложение полностью восстановлено и теперь, если понадобится, я могу сварганить ещё что-то в аналогичном стиле. Например приложение в котором будут лежать планы поездки за границу, со всеми маршрутами, достопримечательностями, расписаниями и документами. А то я задолбался рассылать всей семье ссылки на очередной план путешествия.
Я и забыл уже точную дату, но оказывается с первым днём весны мне подвернулась хакнутая версия этого замечательного приложения и понеслось... Даже учитывая то, что масса слов весьма похожа на аналоги в иврите, выучить более 1800 слов - серьёзный прогресс, учитывая мой давно не юношеский возраст. Ясен пень, ждать каких-то чудес в области произношения или письменности бесполезно. Но вывески читаю более-менее складно, да и всякие бытовые фразы складываю в голове достаточно уверенно. В добавок появилось неожиданное занятие: прислушиваться к разговорам носителей языка. Если раньше это было что-то устрашающее, то теперь - полезное развлечение. Короче, если желаете изучать иностранные языки - скачивайте приложение и вперёд. Тааллум ал-луhат - шайэ мумтиа жиддан.
В далёком одна тыща девятьсот поцарапанном году, будучи молодым специалистом не нюхавшим пороху, я очень сильно увлёкся продукцией молодой (тогда ешё) и перспективной фирмы мелокософт. Их поделки были не сильно качественными, но по крайней мере имели логичную структуру и функционал. Поскольку смартфонов в те времена ещё не было (кроме экранных прототипов в "Звёздных войнах"), простому народу приходилось распечатывать книги на бумаге. Однако текстовый формат очень плохо ложился на офисные листы А4. Не будет же нормальный человек читать книгу перелистывая такие гигантские страницы. Может для технической документации это был приемлемый вариант, но томик "Мастера и Маргариты" выглядел бы в этом случае немного коряво. Короче, на визуальном бейсике для Ворда из 95-го офиса, я накатал простой и эффективный алгоритм, превращающий обычный текст в документ, разбитый на страницы по две колонки, которые в свою очередь раскладывались в "тетрадки" по несколько сложенных листов. В результате можно было получить вполне приличную книжку формата А5. Одако, с появлением следующей версии мсявного офиса, бейсик оказался тупо несовместим, поэтому мой замечательный скрипт полетел в мусор.

К чему это я пустился в воспоминания? Ведь (как известно) нельзя войти в одну и ту же реку дважды. Зато в дерьмо - запросто. Пару лет назад ВПС совершил неимоверный для своего возраста подвиг: без помощи AI (который тогда ещё пешком под стол ходил) сварганил андроид-приложение. При том, что уровень владения этой вашей джавой - даже хуже чем "читаю перевожу со словарём". Ну сварганил, и казалось бы всё, можно спокойно почивать на лаврах. Ан-нет. Мой бесплатный провайдер, обеспечивающий хостинг FreeRSS2, внезапно стал корёжить файлы при передаче клиенту. Причём случайным образом. Внешне это проявляется как потеря иконок у Fontawesome, отсутствие стилей CSS и даже скриптов JS. Сами понимаете, без этого окно апликации теряет свой основной функционал. Короче, нашёл я другой бесплатный cpanel-хостинг (не без труда, их сейчас не так уж много) и даже перенёс на него приложение с базой данных. А вот как переучить готовый APK на альтернативный хост? В принципе, для этого делают landing-page (что я немедленно и сотворил на своём основном сайте), но проблема переделки APK никуда не ушла.

Ну ладно, думаю, скачаю на новый лептоп Андроид-Студио, закину в него свой старый проект и вуаля. Увы, получилось не "вуаля", а совсем неприличное слово. Последняя версия Android Studio с фривольным названием Ladybug отказалась компилировать мой выстраданный Java-код. Каких-то зависимостей не хватило. Попытка пересоздать проект и скормить ему оригинальный MainActivity.java не продвинула меня никуда. Ошибки, бесконечные попытки совместить несовместимое и т.д. и т.п. Короче, покручинился добрый молодец и пошёл советоваться с любомудрым Gemini от компании Добра. Не горюй, говорит мне сей мудрый пенёк, есть у меня для тебя масса идеек. И как обычно, вывалил полный набор абстрактных советов с человеческих форумов, сопроводив общими рассуждениями о смысле жизни. Попробовал я самое очевидное - скачал старую версию Android Studio - ошибки перегруппировались, но компиляция всё равно вылетает. Я с этими ошибками к Gemini - он мне рассказывает сказки про миграцию на AndroidX, да про версии AndroidSDK. Что бы я ни делал - сплошные проблемы. Даже установка Android Studio Flamingo (завалявшейся в бекапе) не помогла.

Просидел я так допоздна, и завалился спать. А на утро добрая фея common sense подсказала мне, что последняя оставшаяся ошибка вообще-то относится к какому-то модулю тестирования. Нахрена оно мне в простейшем приложении, построенном на webView? Поменял я build variant с debug на release, и всё скомпилировалось, словно на дворе 2022 год.

Вы спросите, а где же мораль? Морали тут рассыпано куча. Начнём с того, что процесс сборки в джава-проектах мягко говоря неочевидный. И даже хвалёный Gradle мне мало помог. Файлы проекта оказались несовместимыми с новой версией IDE. Не в такой степени, как мелкософт бейсик, но всё равно. Ну и пользовательский интерфейс у этой "Студии" оказался весьма "на любителя". Задолбался я в нём искать элементарные вещи. Тот же Eclipse давно решил проблему поиска настроек - они все сведены в одно окно с удобной фильтрацией. На более чем 30-м году жизни мсявный офис тоже сделал что-то подобное. А вот корпорация Добра не шмогла. Ну и самая главная мораль: не для простых умов эта технология. Нехай молодёжь приложения под мобильный контент пишет. Мы уж как-нибудь обойдёмся Пайтоном, JS/Angular, PHP и SQL/Mongo.
Оглядываясь назад удивляюсь, как мы всё это пережили.

Сначала - о самых серьезных событиях.

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

Пережили очередной год войны, включая бомбёжки в нашем районе.

Несмотря ни на что, ездили за границу, причём дважды. Впервые организовали совместную поездку с нашими друзьями. Причём обе поездки - на удивление удачно (если не считать штрафов за превышение скорости). У нас в море тоже купались (назло врагам).

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

Изучение арабского языка перешло на ежедневную основу - у меня уже 208-day streak и я в Diamond League. Свои софтверные проекты уже практически не трогаю (последний фикс был на днях, но это скорее фича, чем баг).

Спорт я как-то забросил (с нового года надо всенепременно возобновить). Но порох в пороховницах есть - подтягивания примерно на том же уровне.

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

Что там у вас, уважаемые телезрители читатели? Чем живём, чем сердце успокоится?
С наступающим! Ну и заодно с Ханукой! Зажигайте свечи осторожно, вдали от ёлки ;-)
"Анора". Как бы романтическая драма. Посмотрели вчера с женой в кинотеатре. Основным впечатлением от фильма был съеденный попкорн. Сюжет про золушку и принца рассказали уже столько авторов, что нас теперь трудно удивить. Но в данном случае сценарист решил вообще забить на зрителя. Знаете в каких фильмах главное - действие? Правильно, в фильмах для взрослых (ну и в ужастиках). Мораль, логика, какие-то оригинальные решения - это всё из области настоящего кино. Тут же мы в стопицотый раз видим печальную историю эскортницы, обманутой избалованным клиентом. Та же "Красотка" с Ричардом Гиром, но только в гораздо более приземлённой и неуклюжей версии. Прибавьте сюда "русский акцент" в антураже Брайтон-Бич, Кони-Айленда и тому подобной "клюквы". Ну (естественно) секас, как же без него. Треть фильма герои трахаются на коммерческой основе, вторую треть - уже как законные супруги, ну а в последней трети зрителю е%$т мозг трагическим разрывом внезапного брака. И действительно, что могло пойти не так, после женитьбы сына олигарха с девушкой по вызову? Почему его родители устроили скандал и безжалостно разрушили союз двух влюблённых половых органов? И как можно было не поверить в "любовь" со стороны обдолбанного избалованного мажора, который только недавно засовывал ей под резинку трусиков стодолларовые купюры? Уходя из зала зритель о%&^вает от вопроса, зачем вообще надо было это смотреть? Ради финальной сцены (не той, где трахаются в машине)? Ну да, там драма с расставанием, все дела. Однако, судя по образу жизни героини, "и это пройдёт". Серьёзно, нам предлагается плакать по поводу её разбитого сердца? Или крушения финансовых планов на фоне перспективы провести жизнь в постели непонятно кого? Что тут вообще произошло экстраординарного? "Чичиряка" Игорь? Короче, отстой и бред.
Постепенно возвращаюсь к привычному формату блога.

Итак, вчера мы с супругой в очередной раз были в театре "Гешер". Смотрели "Преступление и наказание" (по Достоевскому, почти).
Текстуально всё очень близко, но форма весьма авангардистская. Дабы подчеркнуть необычность формата, сцена была оформлена как кабаре, с вращающимся подиумом в центре авансцены, винтажными рядами лампочек и вращающейся же комнатой в стиле 50-х. Орудием убийства был топор, но с пожарного щитка. Полицейские фотографировали место преступления и между делом тырили наличку из карманов убитой.
Следователь, Раскольников и другие персонажи пели песни, причём некоторые - на английском. Вместо актёров некоторые роли исполняли гротескно неуклюжие ватные куклы. Танцы и комические ситуации тоже присутствовали. Но эта буффонада лишь разбавляла атмосферу безысходности, нищеты и несправедливости, окружающей главного героя.

Среди исполителей второго плана заметно выделялся Анатолий Белый. Помимо впечатляющей пластики и актёрского мастерства, должен отметить прекрасный уровень его иврита. У того же Саши Демидова (а также его жены) акцент просто ужасный, а ведь они уже так давно в стране. В целом постановка очень понравилась, несмотря на авангардизм и смешение жанров.

В фойе после представления был замечен Юлий Ким. Мы не стали лезть к нему с просьбами афтографа или селфи, но сам факт уже впечатляет. Это - живой классик, автор знаменитейших хитов советского кинематографа. Кстати, после благотворительного концерта в том же театре Гешер пару месяцев назад, мы видели как Макаревич на "нашей любимой" стоянке укладывал в багажник гитару. Кто-то пытался снять с ним селфи и по справедливости был отшит.

После представления прошлись в сторону набережной Яффо, заценили тамошнюю ёлку. Нашенская-то выше будет ;-). А уж что творится там на набережной... Сплошные кучки подростков понятно какого происхождения, все - в чёрном. Но атмосфера не агрессивная, максимум - кто-то слушает музыку из открытого багажника, где расположилась внушительных размеров колонка. На променаде в Тель-Авивской части их уже было значительно меньше. При мне три каких-то задохлика пытались хоть раз подтянуться на турнике. Я сделал 18 подтягиваний на кольцах (а это сложнее чем на перекладине). Всё равно, старею. Бывали времена, когда на разогреве 24 делал.
Tags:
Вернулись из "предрождественского" тура по Эльзасу. Это как бы "на новый год" и в то же время - традиционный осенний отпуск к нашим с супругой дням рождения. Поскольку билеты покупались буквально под ракетными обстрелами, особого выбора не было, взяли нашего отечественного перевозчика. Перед поездкой расчехлили давно забытые "настоящие зимние" вещи, все эти шапки-шарфы-перчатки, ну и разумеется куртки для холодной погоды. Прогноз нас немного напугал - температура днём чуть выше нуля и дожди. В реальности настоящий дождь застал нас аккурат во время пешеходной экскурсии по Страсбургу. Остальные дни были либо вообще без единой капли, либо с неба сеялось нечто несущественное. Но я всё равно простыл как следует - сначала нос, потом кашель. А ведь в детстве, когда при температуре ниже 30 градусов отменяли занятия в школе, мы все шлялись на улице. Мне реально стало не по себе когда мы приехали в крепость на горе Хаут-Кёнигсберг, а перед нами выходящие из машин местные стали кутаться в дополнительные слои одежды. Тут-то Штирлиц понял, что попал. Там на высоте было действительно холодно.

Итак, начнём рассказ по порядку. Поскольку в тот регион наш авиаперевозчик летает только до Цюриха, мы решили пойти по проторённой дорожке. В уже знакомой нам прокатной конторе получили машину (на этот раз не забыв на стоянке очередной чемодан), и поехали себе спокойно до городу Парижу Франции. По дороге давали концерты проголодались и пообедали в удивительно дешёвом ресторанчике "Brasserie Le Chalet Rhin & Découverte" при шлюзе, уже где-то на французской стороне на другой планете. Это был забавный экспириенс хотя бы потому, что в данном заведении всё меню было написано мелом двумя строчками (то есть без выбора). В пункт назначения "Château de Grünstein" прибыли уже затемно. И это был реально шок (в положительном плане). Огромная усадьба, огороженная забором, раскрывающиеся железные ворота, шато в стиле чёрт-те-каких времён. При ближайшем рассмотрении там из старинного были только стены, а вся отделка - только закос под старину, но тем не менее... Скрипучие лестницы и полы, вычурные канделябры, старинная мебель и всякие мелкие деталюшки. Завтрак был однообразным, но обильным: йогурты, сыры, колбасы, свежайший деревенский хлеб, выпечка, варенья, яичница на заказ. Особо прикольно было приехать в этот дворец вечером, когда главные ворота уже закрыты - нажимаешь на кнопочку пульта, и ворота словно в диснеевской заставке гостеприимно раскрывают свои створки.

Путешествовали мы в основном по окрестностям - малым и большим городам, где уже вовсю шли рождественские гуляния. В первый день это были РиквирРибовилле и Кайзерсберг. После - Эгисхайм и Кольмар. Как видите, даже по названиям ясно, что тут немецкий дух, тут Deutschland пахнет. Конечно, все указатели - на французском, меню, таблички - тоже, но вот названия улиц кое-где дублированы и на немецком. Это очень сильно помогало Штирлицу, потому что французские слова у меня в голове не умещаются, а когда я их пытаюсь произнести, наступает полный апофегец. Архитектурно старая часть города представляла из себя памятник фахверковой отделке фасадов. Это такая старинная техника, которая позволяла не только оригинально заштукатурить дом, но и показать статус его владельца. Говорят, что когда в доме была девушка на выданье, в ставнях её комнаты делали прорези в виде сердечек, а когда она выходила замуж, прорези расширяли в виде крестообразной фигуры (поручик, молчать про ассоциации!).

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

Уже ближе к концу путешествия мы смотались в немецкий город Фрайбург. Если граница Франции со Швейцарией была хотя бы обозначена формальными таможенными постами, то пересечение границы между Францией и Германией в обоих направлениях выглядело как второстепенное транспортное обстоятельство - смена языка на дорожных указателях и всё. Противные немецкие светофоры меня выбесили в очередной раз, поэтому я с удовольствием вернулся во Францию к привычным перекрёсткам где светофор сдублирован по обе стороны, а не только на стоп-линии. В Германии мы заправились, - по цене существенной разницы не наблюдалось. Зато как приятно было нормально общаться с продавцом на заправке по-немецки. Французский сервис хоть и рассчитан на иностранцев, но меню в ресторанах упорно не переводится, а продавцы/официанты делятся на тех кто говорит по английски и тех, кто подзывает англоговорящего коллегу.

Про еду особо расписывать не буду. Цены - примерно как у нас (ещё раз спасибо правительству за дороговизну). В Страсбурге и Кольмаре мы кушали в элитных ресторанах. Места нам заказывала местная гидша, потому что просто прийти и покушать в таком заведении - бесполезно, а звонить и говорить с ними на английском - ещё более бесполезное занятие. В остальных случаях мы с трудом находили заведения которые вообще работали. Дело в том, что французский сервис очень своеобразен - обычно ресторан работает где-то до двух часов, а потом закрывается до вечера. Кто не успел - сосите лапу.

Чтобы не дёргаться перед рейсом обратно, мы заранее сняли гостиницу возле аэропорта в Цюрихе и приехали туда за день до вылета. Сдали машину и гуляли допоздна по уже знакомым улицам центрального района. Заодно познакомились с местным общественным транспортом. От гостиницы до центра ехали на трамвае, обратно - на S-бан, а в аэропорт - на автобусе. Приобретение билетов оказалось несколько мудрёным (поскольку нам требовалось всего три поездки). Всякие извращения со скачиванием приложения, регистрацией и прочими глупостями я отверг. В результате пришлось осваивать уличные автоматы по продаже билетов, а они для случайного туриста не совсем привычны. Ну ничего, справились.

В вопросах связи на этот раз всё было просто - я вставил себе в двухсимочный аппарат симку жены, а ей выдал временную симку с предоплаченным интернетом. У меня на родной симке была включена заграничная программа со звонками и интернетом, так что проблем не было. Да, получается дороже чем E-Sim, но мы пока не освоили эту технику. Для навигации использовали встроенную в машину программу Tom-tom (на удивление не глючную), а если было нужно что-то срочно найти на трассе, то включали привычный нам поиск по гугло-карте на телефоне. Машина у нас была достаточно удобная. Мы уже ездили "на пеже" по Испании-Португалии, поэтому многие фишки были мне уже знакомы. Круиз-контроль хоть и держал скорость, но не работал как у меня на Тойоте в активном режиме, так что приходилось следить, чтобы не влететь на трассе во впереди идущую машину. Зато открывание и закрывание машины как таковой свелось к приближению-удалению от машины. Она сама реагировала соответственно, так что на пульт нажимать не приходилось. Наученные горьким опытом, мы строго соблюдали ограничения по скорости. Во Франции на трассе это либо 110, либо 130, в Швейцарии - до 120, а в Германии... в Германии опять попали на автобан без ограничения скорости. Навигатор чётко отслеживал все эти детали и подавал тревожный сигнал при малейшем превышении. Пару раз навигатор приводил нас в место, где требуемого объекта не было ни слухом ни духом (в обоих случаях - магазины), но (как я упоминал) нас спасал гораздо более продвинутый навигатор гуглокарт в телефоне.

Ну и немного про местный колорит, байки, легенды, тосты. Пили мы глинтвейн, ели уличную еду (горячий бейгл с сыром), понакупили всяких сувениров (в основном - ёлочных игрушек). В Кольмаре сфотографировали статую Свободы (автор американской статуи - родом оттуда). Кстати, фамилия у этого архитектора совсем не немецко-французская - Бартольди (не путать с Феликсом Мендельсоном). Особенность эльзасского национального костюма - огромный чёрный бант у женщины. Судя по всему, это был какой-то национальный протест с политическим подтекстом, но так оно и закрепилось. Из национальных блюд мы ничего толком не пробовали, хотя бы потому, что рагу - штука на любителя, а от названия "телячья голова" у нас пропадал аппетит. Рождественская атмосфера реально ощущалась только во Франции. Фрайбург удивил нас почти полным отсутствием украшений, да и в Цюрихе всё ограничивалось небольшим районом вокруг исторического центра.

Что интересно, арабских бешенцев нам почти не попадалось (может потому что мы гуляли по рождественским мероприятиям?). Ни во Франции, ни в Швейцарии никаких "швободу пластилине" не заметили. В немецком Фрайбурге граффити про "свободу газе" закрасили разными альтернативными версиями "Free Hugs" или "Free Gaza from Hamas". Так получилось, что по дороге к площади старой синагоги нам попался автомобиль, из которого вылезал фанат с флагом. Сначала я подумал, что это флаг футбольного клуба, потом заметил - сирийский. Ну и флаг им в руки, скатертью дорожка на родинку. На площади проходил митинг грузин за вступление в евросоюз (на немецком). А как же старая синагога, спросите вы. Да никак. Одно название для площади и абрис основания. Синагога была снесена нафиг. Между прочим, в некоторых французских городах синагоги нам попадались, но не думаю, что они действующие.

На рейс обратно мы шли уже проторённой дорожкой. Даже гейт нам достался тот же, что и в прошлый раз, и автоматчики в сторонке тоже были уже привычной деталью интерьера. Необычно было то, что усиленное патрулирование мы наблюдали на всех рождественских мероприятиях. Это были и солдатики в полной выкладке, и полиция, и жандармы, и просто частные охранные фирмы. Атмосферу гуляний разбавляли объявления в громкоговоритель на разных языках: будьте бдительны, обращайте внимание на подозрительные предметы, сотрудничайте с правоохранительными органами.

Подводя итоги могу сказать следующее: в плане новогодней атмосферы мы получили максимум. Погода почти не пакостила. В плане логистики всё вышло чётко, без проколов. По деньгам тоже вроде бы уложились. Формально я прощёлкал флешку с музыкой - оставил в арендованной машине и даже обращение в прокатную контору не помогло, но это такая мелочь. Ну и ремень, купленный всего пару месяцев назад, лопнул на пряжке (восстановлению не подлежит). Вот такие пироги...
Помните известный интернет-мем про то, как ребёнок объявляет, что ему в школе на завтра задали соорудить нечто из природных материалов? Так вот, "маленькие дети - маленькие проблемы". Когда делать домашнее задание приспичит студентке академии искусств с факультета кинематографии, вся квартира превращается в съёмочную площадку, а семья перевоплощается в сценаристов, статистов, актёров, гримёров, осветителей, операторов, костюмеров и бутафоров. Внезапно обнаруживается, что куда-то пропала одна Важная Деталь, и тогда гримёры-дирижёры начинают переворачивать шкафы в поисках этой детали. При этом студентка режиссёр подгоняет: "свет уходит, давайте уже начинать". На двери съёмочной комнаты появляется табличка "не входить! не шуметь!". И вся семья проходит по коридору на цыпочках. Вечером, по окончании съёмочного дня, идёт монтаж - тоже при закрытых дверях. А утром - индивидуальные просмотры, с бурными обсуждениями и взаимными упрёками, переходящими в коллективную дискуссию. По итогам принимается паллиативное решение: "Оскар" пока не вручать. ;-)

Перед отъездом обратно в альма-матер, мама-костюмер подгоняет какие-то детали, папа даёт последние инструкции по использованию штатива и настройкам камеры, а бабушка играет роль публики, задавая неуместные вопросы, на которые обязательно надо отвечать. Заботливо постиранные бабушкой бебехи запаковываются в армейский рюкзак, мама подбрасывает до Ж/Д вокзала, и мы начинаем следить за сообщениями в семейной вотсапп-группе о продвижении по маршруту. Финальным аккордом там становится фраза "встретила однокурсницу *** в ракевет каля" (то есть уже в иерусалимском трамвае) и всё, можно вздохнуть спокойно - ребёнок доехал без приключений.

Будь я писателем, накатал бы юмористический рассказик в стиле Ильфа и Петрова. Но во всём этом театре у меня чисто технические роли...
Хулить корпорацию, проливающую в наш мир свет из своих "окон" - традиционное занятие современного человека, независимо от степени его продвинутости в компьютерной области. И система у них "висючая", и офис "глючный", и даже мышь "дурацкая". Но вот уже немало лет, как встроенный в ОС "защитник" вытеснил все сторонние антивирусы, встроенная поддержка ZIP избавила простых пользователей от необходимости чикаться с архиваторами, аутентикация перестала задавать ненужные вопросы при переходе на сенсоры (отпечаток пальца, face ID).

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

У меня с давних пор (лет 20 как минимум) есть заброшенный аккаунт Skype. В своё время их купили всё те же мелкомягкие и понеслось. Каждые пол-года (или что-то вроде того) мне на почту стали приходить угрожающие мейлы, мол ваши деньги на счету Skype пропадут, если вы не сделаете хотя бы один звонок или СМС. Приходилось периодически повторять эту дурацкую церемонию. В результате баланс всё равно убывал - на несколько центов. Судя по всему, кто-то вздрючил их за такую практику, потому что сегодня мейл был немножечко другой. Достаточно зайти в свой аккаунт и ... просто нажать на кнопку "продолжить". И ВСЁ! А что, с самого начала нельзя было так сделать?