← на главную

Алексей Батищев. Заметки обо всём, что происходит со мной и окружающим миром

Позднее Ctrl + ↑

КЭНК: выгрузка фото из iCloud на Яндекс диск

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

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

Сегодняшний рассказ — о сервисе, который достался «забесплатно», но потом перестал работать, и о том как я добился получения привычного результата уже своими силами.

Что случилось и кто виноват

В мире победившей вычислительной фотографии я уже много лет снимаю на телефон и веду архив фото на телефоне. Это удобно, и всё связанное с повседневным фото завязано у меня на экосистему Apple. Однако, было бы глупо полагаться только на одного вендора, да и вручную выдёргивать фото из Apple для резервной копии не самый удобный вариант, поэтому как только Яндекс запустил фичу автоматической синхронизации фотографий на Яндекс.Диск, я сразу же начал ей пользоваться.

Вышло удобно:

  • фотографирую на телефон или планшет, имею синхронизированные фотки на всех личных устройствах и ноуте (на разных платформах приложение называется по разному, буду дальше использовать термин Айклауд как синоним определения «ну где там у эпплов всё лежит и красиво синхронизируется и показывается на всех девайсах»).
  • Сразу после съемки или по напоминанию отмечаю в Айклауде сердечком лучшие фото и удаляю откровенный брак и шлак, на телефоне остаются материалы лучшие и «пусть просто для архива»
  • Всё это время полное зеркало всех фото и видео с телефона автоматически синхронизируется с папкой Фотокамера в Яндекс диске (а она уже в свою очередь бэкапится как надо на NAS)
  • раз в 2-3 месяца провожу чистку:
  1. захожу в айклауд через приложение на ноуте или телефоне,

2. скрываю все избранные (Library — альбом Favourites — ⌘A — hide items),

  1. стираю все оставшиеся нескрытые (и не лайканые) фотки (Library — альбом photos — ⌘A — delete items),
  2. возвращаю все скрытые обратно (Library — альбом Hidden — ⌘A — unhide items)
  • переношу все фотки из папки Фотокамера Яндекс диска в долговременный архив, Яндекс на телефоне сам синхронизируется и обратно заливает в фотокамеру только избранные фотографии

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

Красиво переименованные и уложенные яндексдиском файлы

Схема удобная, и работала она несколько лет, пока не случилась та самая упомянутая ранее потеря сервиса. В какой-то момент Яндекс поменял логику работы мобильного приложения — весной при очередной чистке я обнаружил, что он больше не перезакачивает в папку Фотокамера файлы, которые ранее в ней были, и после были мной удалены. Похоже что у себя они хранят хэши всех файлов, так как отредактированные после фотки в диск при такой схеме перезаливаются. Но неизменные — нет, а значит я больше не мог проводить синхронизацию лучших фото при регулярной чистке.

В принципе, потеря небольшая, просто весь 2020-й Яндекс диск скидывал мне напоминания о событиях 19-го. Тем не менее, это натолкнуло меня на мысль о том, что случись что — у меня есть полный архив всех фото включая самые свежие, но архива лучших нет! На отбор их потрачено время, и теперь сведения этого отбора не защищены от потери.

Казалось бы, чего тут сложного? Берём штатный способ выгрузки из Айклауда, сохраняем в папку избранные данные за нужный период — вуаля. Но тут вскрывается второй упомянутый ранее аспект — скрытая под капотом сложность.

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

Выгрузка из Айклауда. Ад и мешанина в именах, атрибутах и метаданных файлов. Дата съемки видео якобы неизвестна (но она есть, просто зашита глубоко)

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

Что делать

Проводим НИР, применяем для решения задачи великий и могучий ExifTool. Общая схема такая:

  • экспортируем данные из macOS Photo в оригинальном качестве и с записью дополнительных файлов xmp
  • пробиваем с помощью ExifTool метаданные из xmp в медиафайлы
  • проходимся по файлам набором команд ExifTool с разными параметрами в зависимости от типа файла и сохранённых в нём данных, чтобы переименовать их по дате
  • раскладываем полученные файлы по каталогам дат (для удобства)

Собственно, на понимание того, в каких случаях как может храниться дата съемки, и экспериментальный подбор команд для третьего пункта, и ушло несколько часов этой субботы

Зато теперь есть способ выгрузить лучшие материалы из Айклауда и разложить их красиво с сохранением метаданных, в том числе и положить в Яндекс диск для бэкапа и красивостей. Вторичная выгода — прокачка скилла и овладение инструментом ExifTool и скриптования на bash под macOS, теперь эти ваши экзифы и переименования файлов можем делать с закрытыми глазами и одной левой

Итог

Итоговый скрипт достаточно специфичен, чтобы его публиковать и отчуждать, но для истории сохраню здесь.

# экспортируем фотки из macOS Photo в оригинальном качестве и с записью xmp, открываем терминал в этот каталог

# далее пробиваем параметры из xmp в графические файлы
find . -maxdepth 1  -not -iname "*.xmp" -exec bash -c 'file="{}"; xmpname=${file%.*}.xmp; echo "$xmpname"; echo "$file"; exiftool -tagsfromfile "$xmpname" -xmp "$file" -overwrite_original' \;

# пробиваем атрибуты и переименовываем файлы по дате в зависимости от типа и содержимого

exiftool '-FileModifyDate<TrackCreateDate' '-FileName<TrackCreateDate' -d "%Y-%m-%d %H-%M-%S.%%f.%%e" *.mov -directory=out
exiftool '-FileModifyDate<TrackCreateDate' '-FileName<TrackCreateDate' -d "%Y-%m-%d %H-%M-%S.%%f.%%e" *.mp4 -directory=out

exiftool -v '-Filename<${datetimeoriginal}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.jpg -directory=out -if '($datetimeoriginal and (not ($datetimeoriginal eq "0000:00:00 00:00:00"))) and ($filetype eq "JPEG")' 
exiftool -v '-Filename<${datetimeoriginal}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.jpeg -directory=out -if '($datetimeoriginal and (not ($datetimeoriginal eq "0000:00:00 00:00:00"))) and ($filetype eq "JPEG")' 
exiftool -v '-Filename<${DateCreated}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.jpeg -directory=out -if '($DateCreated and (not ($DateCreated eq "0000:00:00 00:00:00"))) and ($filetype eq "JPEG")'
exiftool -v '-Filename<${DateCreated}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.jpg -directory=out -if '($DateCreated and (not ($DateCreated eq "0000:00:00 00:00:00"))) and ($filetype eq "JPEG")'


exiftool -v '-Filename<${datetimeoriginal}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.heic -directory=out -if '($datetimeoriginal and (not ($datetimeoriginal eq "0000:00:00 00:00:00")))'

exiftool -v '-Filename<${datetimeoriginal}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.png -directory=out -if '($datetimeoriginal and (not ($datetimeoriginal eq "0000:00:00 00:00:00")))'
exiftool -v '-Filename<${DateCreated}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.png -directory=out -if '($DateCreated and (not ($DateCreated eq "0000:00:00 00:00:00")))'

exiftool -v '-Filename<${datetimeoriginal}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.gif -directory=out -if '($datetimeoriginal and (not ($datetimeoriginal eq "0000:00:00 00:00:00"))) and ($filetype eq "GIF")' 
exiftool -v '-Filename<${DateCreated}.%f.%e' -d "%Y-%m-%d %H-%M-%S" *.gif -directory=out -if '($DateCreated and (not ($DateCreated eq "0000:00:00 00:00:00"))) and ($filetype eq "GIF")'

# Чистим xmp
rm -f ./*.xmp

# перекладываем файлы в папки YYYY/YYYY-MM/
cd out
find . -maxdepth 1  -type f -exec bash -c 'file=$(basename "{}"); yearname=${file:0:4}; monthname=${file:5:2}; pathname="$yearname/$yearname-$monthname"; mkdir -p "$pathname"; echo "$pathname"; mv "$file" "$pathname"/ ' \;

Полезные ссылки по теме

КЭНК!
Слава роботам!

Пионерлагерь Пыльная Радуга и Такой Макар в Арбат Холл

20 ноября пробрался с фотоаппаратом в зал (и немного в закулисье) шабаша группы Пионерлагерь Пыльная Радуга в Арбат Холле.

Пионерлагерь Пыльная Радуга в Арбат Холле

Дико соскучился по таким безумствам на сцене и в зале, ребята традиционно прошлись по всем граням ярости, тоски и пронзительного недоумения по поводу всего происходящего на этой странной планете. Дядя Лёша был вполне себе огурец после пневмонии, Мирза скакал и валялся по сцене в лучших традициях, Андрей рубил и оч круто давал второго голоса, Никита невозмутимо вколачивал бас бочкой толпу в танцпол. Было как всегда страшно, больно, грустно и очень-очень хорошо.

Пионерлагерь Пыльная Радуга в Арбат Холле

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

Такой Макар в Арбат Холле

Сет Макара сняли на 5 камер, включая мои планы из под сцены и два плана с гопро. Надеюсь материал пригодится для той задумки, для которой его и попросили снять )))).

Сообщества групп в ВК:
Пионерлагерь Пыльная Радуга
Такой Макар

Такой Макар в Арбат Холле

Из-за ковидлы совместное шоу ребят в Ярославле перенеслось аж на май — ну, доживём и оторвёмся как следует.

КЭНК: сортируем и фильтруем каналы IPTV

Решил подарить маме на новый год IPTV от широко известного в узких кругах провайдера. Этот сервис за небольшую плату предоставляет плейлисты с каналами, и главная суть услуги — то что списки каналов обновляются, протухшие источники заменяются новыми, клиент не бегает по интернетам в поисках собранных энтузизястами плейлистов сомнительного качества, и не остаётся вдруг без любимого НТВ под ёлочкой.

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

Телевизор Темп. Ровно такая же модель стала причиной больших перемен в семье моих родителей в начале 1980-х

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

По итогу размышлений принимаю решение реализовать компромиссный вариант. По мере протухания каналов и жалоб клиента, буду скачивать и обновлять плейлист, фильровать и обновлять в настройках плеера. Но максимально всё это автоматизирую. На выходе — плейлист с центральными каналами в HD качестве и правильном порядке (Первый, Россия и тому подобное), дополненный избранными каналами про природу, путешествия, и хорошее кино. Под рукой винда — значит фигачим на павершелле.

Первая итерация — скрипт, умеющий взять плейлист, и отфильтровать и отсортировать его по заданному правилу (простой json файл). В дальнейшем, если потребуется, можно прикрутить в него скачивание провайдерского плейлиста (тривиально) и закачивание в плеер (тут будет непросто разобраться в формате HTTP запроса). Но пока так. Быстро, зло, бесплатно, работает.

Страница на гитхабе https://github.com/alexbatishchev/kenk-iptv-playlister

КЭНК!
Слава роботам!

КЭНК: контролируем сроки действия сертификатов

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

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

Решение. Выгружать или как-то ещё получать доступ к сертификатам в работе система не даёт, но мы можем договориться с группой поддержки, что они будут хранить сертификаты в отдельной папке с ограниченным доступом, и работать с ней при любом обслуживании клиентов — убирать оттуда ушедшие из работы сертификаты, класть вновь выпущенные и использованные в настройке. После этого остальное дело техники — по расписанию дампим сертификаты, находим в них данные о сроке окончания, начинаем присылать предупредительные письма группе поддержки заранее. Тут кстати родилась универсальная формула, позволяющая не попасть на праздники и прочие выходные  — предупреждения высылаются за 14, 5, и 3 дня до истечения срока действия сертификата.

Главный технический ингредиент — договориться с certutil, которая в разных версиях по разному выдает дампы.
В моем конкретном случае просто парсится дата окончания через

$data = certutil -dump $file | select-string -pattern "NotAfter:"

В итоге, письма рассылаются, сроки не продалбываются, клиенты довольны, человеки не держат в голове лишней информации

Пример уведомления о скором сроке окончания действия сертификата

КЭНК!
Слава Роботам!

Cockpit в CentOS 8

Будучи Ветераном Этих Ваших Комплюктеров, всегда забивал на приветственные «знаете ли вы» различных программ и систем. Ну во-первых, камон, чему меня человека может научить какая-то там софтина. А во-вторых, мне надо будет — сам в документации посмотрю.

А сегодня вот логинясь по совершенно другим делам в свежий тестовый CentOS 8, зацепился глазом за совет сделать вкл какому-то там «cockpit.socket», загуглил обо что это всё, попробовал — и открылась мне, всезнающему, целая новая непривычная парадигма управления линукс серверами через веб консоль, да ещё и встроенная вот так вот в минимальный дистрибутив.

Век живи, век учись, и тому у кого и как учиться — тоже учись.

КЭНК: сиделка для WSUS и её приключения на планете апдейтов

Хорошо настроенный WSUS работает как часы: ходит себе в интернеты за обновлениями, раздает их клиентам, и много хлеба не просит. Есть только несколько моментов: во-первых по привычке со старых версий я обычно применяю регулярную принудительный пинок, форсирующий штатную очистку базы от устаревших и ненужных объектов (честно говоря, не знаю есть ли проблема сейчас — но готово решение есть, почему бы не запускать — хуже не будет, а времени роботов не жалко).

Во-вторых, штатные средства WSUS не дают фильтровать апдейты по целевым аппаратным платформам. В итоге KB для неиспользующихся классов железа грузят базу, а руками читать описания и отклонять всё выпущенное, например, для Itanium  — ну такое.

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

Трент Резнор сказал, что BSOD тут — часть инсталляции, но мы то Всё Понимаем. Фото -ltrandazzo

На уровне процессов последняя задача решается выделением тестовой группы хостов, потеря которых некритична (=которых не жалко), но которые при этом активно используются (=о сбое быстро станет известно). На эти хосты обновления одобряются сразу средствами WSUS, а по прошествии выбранного времени и при отсутствии выявленных проблем — обновления раскатываются на остальные. За это определенное заранее время хорошо бы ещё держать руку на пульсе с помощью комьюнити и тематических ресурсов — благо новости о очередном KB, превращающим комплюктеры в тыкву, разносится народным гневом как лесной пожар.

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

Прибежали в хату дети, притащили новый скрипт

Зовём на помощь кэнк-мена, благо у актуальных версий WSUS есть API, которое можно дёргать из PowerShell. Пара вечеров — и имеем скрипт, умеющий:

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

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

Скрипт на гитахабе https://github.com/alexbatishchev/kenk-wsus-carer

КЭНК!
Слава роботам!

КЭНК: следитор за изменениями в контактах Exchange

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

Заряжаем павершелломёт

Для целей автоматизации Exchange я часто использую Exchange Web Services (EWS) Managed API, вызывая его функции из PowerShell через библиотеку. Его применение напрашивается и тут. Можно смотреть содержимое адресной книги, дампить интересуемые данные из ящика в текстовый файл, сравнивать результаты актуального дампа и предыдущего, и формировать отчёты об изменениях. Побочный результат — раз уж мы получаем изменения, можно хранить их историю и иметь возможность ретроспективы.

Дальше — дело техники и деталей. Выгружаем поля в текстовый формат, схлопываем многоэлементные объекты в строки по формату как нам вздумается, исключаем те поля, за которыми следить не хотим. Приправляем наглядным представлением в виде HTML отчёта, выделяем цветом изменения и наносим прочую пользу клиентам сервиса. Даем возможность службе техподдержки ставить и снимать ящики с контроля добавлением в специальную доменную группу. Запускаем скрипт по планировщику с максимально возможной частотой. Роботы трудятся — а человеки пользуются результатом.

Примеры отчётов об изменении части контакта и удалении контакта из ящика

Сервис на базе этого скрипта успешно работает несколько лет. Служба техподдержки всегда может разрешить вопросы клиентов об изменениях в адресных книгах, некоторые клиенты пользуются отчётами для контроля работы в группе и оперативного отката изменений. Уникальный кастомный сервис достался заказчику в рамках общего контракта на обслуживание системы. Проблемы, для решения которых раньше требовалась работа специалиста, решаются автоматически и часто без привлечения техподдержки вообще. Чистый КЭНК!

Скрипт на гитхабе https://github.com/alexbatishchev/kenk-contacts-watcher

Слава Роботам!

КЭНК: уменьшаем диск сервера Windows через зеркалирование

Редкий, но противный кейс: есть сервер на Windows — виртуальная машина на платформе VMware, у которого нужно уменьшить размер одного из дисков (и размер соответствующего vmdk файла на хранилище). До кучи — сервер нельзя выключать надолго.

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

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

Картина неизвестного художника «Админ накидал на датастор виртуалок с тонкими дисками и ушёл в отпуск»

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

Сейчас КЭНК-мэн займётся вашими дисками, ребята

Как сжать системный диск

  • Сжать раздел стандартными средствами Windows Server до необходимого
  • Добавить новый виртуальный диск(и) такого размера как получившийся необходимый размер
  • На разделах старого диска (100 мб и системный вместе, остальные если надо — по отдельности) правой кнопкой — добавить зеркало, указать новый диск. Диски преобразуются в динамические и начнётся синхронизация
  • В свойствах компьютера установить опции загрузки с вторичного плекса и выбора операционной системы и возможности восстановления при запуске
  • Дождаться полной синхронизации зеркальных томов
  • Выключить виртуалку. Отключить оригинальные диски от виртуальной машины
  • Загрузить сервер, отключить (поломавшееся) зеркалирование

Как сжать несистемный диск

* Сжать раздел стандартными средствами Windows Server до необходимого

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

Детали и тонкости

Использующие раздел ИС переживают такие операции без проблем, в случае если диск не системный простой сервиса = 0

Иногда всё свободное пространство освободить не получается — диспетчер дисков Windows выдает ошибку «недостаточно свободного места» (There is not enough space available on the disk(s) to complete this operation). Проблема не в месте, а в неперемещаемых файлах, используемых в момент сжатия системой. Решается изучением логов Event Viewer Windows Logs\Application, где видно что именно мешает, и после соответствующих операций (типа временного отключения мешающего файла подкачки на разделе) раздел скорее всего удастся сжать.

Слава Роботам!
КЭНК!

Дмитрий Кетов, Внутреннее устройство Linux

В издательстве BHV вышло второе издание книги Дмитрия Кетова «Внутреннее устройство Linux». Лучше всего отличительную особенность книги сформулировал в предисловии сам автор:

в книге рассматриваются абстрактные концепты внутреннего устройства ОС, иллюстративно подкрепляемые примерами анализа (а иногда и синтеза) ее конкретных компонент и связей между ними.

Именно такого взгляда на Линукс, глубокого и направленного в корень истории того, что в итоге стало важнейшей технологией современности, не хватает многим спецам моего поколения, учившимся работе с системой методом проб и ошибок, ковыряясь с неведомым чудо зверем прямо in the wild.

Прекрасно помню как весной 1999 я обошёл всю Савелу в желании купить видеокарту, которая в том числе будет нормально работать с тогдашним RedHat (купленным на диске в ларьке на территории Академии). Продавцы на мои вопросы делали квадратные глаза, и в итоге карта была взята наобум, и после ночи камлания над конфигами всё-таки завелась в X Window, не очень понятно как.

Помню ещё смешную историю, хоть и не в тему линукса — когда ребята в общаге несколько часов воевали с дровами на притащенный откуда-то матричный принтер с подключением по LPT. Система его упрямо не видела — как оказалось, в тесноте переполненного стола кабель воткнули не в тот системник.

Возвращаясь в реальность 2020, я очень завидую студентам Дмитрия и вообще всем, кто погружается в тему сейчас: с такими учебными пособиями разбираться легко, продуктивно и очень полезно.

Книга на сайте издательства по ссылке https://bhv.ru/product/vnutrennee-ustrojstvo-linux-2-izd/
В Мск с доставкой в пункт СДЕК выходит в смешные $10

Москва — Воронеж — Таганрог — Ростов

В конце июля совершил автопутешествие на Азовское море, и в итоге получилось неплохо.

Дорога Москва-Ростов

Я не люблю ездить далеко на авто — обычно от размеренного движения по трассе я быстро устаю, теряю внимание, засыпаю и тому подобное. Но ковидла внесла коррективы и в планы на лето вообще, и в возможности перемещения по стране в частности, так что было решено попробовать доехать до моря на еноте.

Такой способ путешествия для меня непривычен, пришлось знатно подготовиться — гуглить информацию о трассе, разбираться с транспондером для платных дорог, провести более тщательное чем обычно ТО. Я даже по ходу дела выяснил, что для моей машины фанаты-энтузиасты начали делать нештатный круиз контроль, купил блок, но не успел поставить до отъезда, так что про это будет отдельный рассказ. Также, зная свою нелюбовь к длинным забегам по трассе, я сразу решил что туда ехать будем с остановкой на ночь примерно посередине — в Воронеже, а по итогам дороги решим, в каком режиме возвращаться обратно.

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

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

Второй день пути принёс пробку на час перед Ростовом и небывало отстойный участок дороги после новенького аэропорта, примерно посередине пути мы пообедали на настоящей стоянке грузовиков «У Армана». Лишь затемно мы добрались до места назначения — встретили друзей, заселились, смотались в магазин за вкусняшками и легли спать.

Следующие 12 дней мы провели в Таганроге, выбираясь иногда на небольшие путешествия в округе.

Ростов-на-Дону

В один из дней посетили Ростов-на-Дону (около 2 часов на машине от дома до места). Город понравился чистотой и уютом, много следов приведения в порядок к ЧМ-2018, типа свежих автобусов, но и в целом сама по себе центральная часть милая и аккуратная. Прошлись пешком от церкви Сурб Арутюн до Соборной площади, заглянули в Макдак и на центральный рынок, прокатились на корабле по Дону (самая лаконичная экскурсия в истории), поужинали в отличном ресторане Раки И Гады, постояли в пробках на выезде, попали в жуткую грозу на обратной дороге, и вернулись домой.

Танаис

В другой из дней прокатились недалеко от Таганрога в Археологический музей-заповедник Танаис — поглазели на раскопки (совершенно непонятные кучи камней, туда так и просится развлектально-познавательная программа с применением AR), побродили по павильонам-музеям, заехали на обратной пути на рукав дельты Дона Мёртвый Донец.

Кооператив Шторм и супер-комары

Основное время отпуска мы провели в Таганроге. Мы жили в просторном трёхэтажном коттедже — 4 большие спальни с санузлами, две из них с балконами на море, на первом этаже санузел большая кухня-гостиная и терраса с выходом в море. Коттедж по сути вертикальный типовой отсек в ряду таких же домиков на территории лодочного кооператива «Шторм», и это совершенно уникальная (и насколько я понимаю малозаконная) история с домами, стоящими прямо на море. Фото арендодателей в объявлениях рисуют красивую перспективу балконов на море и купаний прямо с персональных пирсов и веранд. В реальности крутость выхода в море сильно разнится от хозяина к хозяину (рядом с нами например у людей был мега-пирс с подъёмником для гидроциклов, террасой с мангалищем, креслами-качалками, и прочими пирогами). У нашего коттеджа была веранда с довольно неудобной стальной лестницей в море, но возможность так вот выйти в море, весьма неглубокое к тому же (что подходит для детей) — ценно.

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

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

А ещё ночью внутри стаи этих комаров можно погулять как Городецкий в Сумраке, и если прислушаться, они звенят в точности как синтезаторы в The Chemical Brothers — Hey Boy Hey Girl.

Таганрог

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

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

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

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

Дорога Таганрог-Москва и Воронеж

По опыту дороги туда, домой решили возвращаться также с ночевкой. Стартовали в 8 утра, объехали кривой участок у аэропорта и полетели по трассе. По дороге узнали от друзей, что в утренних сборах оставили целую сумку — хорошо что ребята смогли пронести её в самолет как ручную кладь. Засветло прибыли в Воронеж, заселились в классный сетевой отель, поужинали в ПонесЛосе, отправили подростков отлёживаться в номера и пошли гулять по Воронежу. Удивительно, но в этот раз город открылся с другой стороны — просторный, расцвеченный иллюминацией, с музыкой и танцующими фонтанами, с аллеями и гуляющими горожанами, с бесящимися в струях цветной воды детьми — совершенно непохожий на тот первый Воронеж 12 дней назад. Было очень уютно и хорошо.

Утром следующего дня позавтракали в отеле, заскочили к Котёнку на улицу Лизюкова, после стартовали в Москву, заехали по дороге искупаться на Оку, забрали у друзей забытую сумку и к вечеру были дома.

Итоги и выводы

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

Машина дала классную свободу на месте (хоть и временами задалбывался кататься в магазин-на рынок-на вечернюю прогулку). Всего за время отпуска накатал почти 3000 км.

Таганрог как морской курорт — 3/10.
Путешествовать по М4-Дон — удобно.
Жить — хорошо.

 Нет комментариев    28   10 мес  
Ранее Ctrl + ↓