macos

«Тайм-капсула»: что получилось

После вчерашних манипуляций «Тайм-капсула» завелась и «Макбук» жены её увидел, но к ночи скорость бакапа сильно упала — через несколько часов расчётное время стало уже больше суток.

Меня это не особо устроило, я подумал, что наверняка есть способ ускориться — например, серверную часть для поддержки протокола SMB мы собирали довольно древним компилятором — gcc седьмой версии, если мне не изменяет память. Я подумал, что более свежий компилятор может помочь — в них всё время добавляют какие-то оптимизации.

Настройка Time Machine в macOS: резервное копирование на диск AirPort Time Capsule.local, доступно 743,87 ГБ из 1 ТБ, скопировано 102,54 ГБ, готово 29,3%, остаётся ~1 день.

Поскольку платформа уже довольно старая, самый свежий компилятор мы брать не стали, взяли двенадцатую версию. По уверению нейросети «ГПТ-5.6 Сол», это последняя официальная версия для NetBSD, на которой собирается софт для «Тайм-капсулы».

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

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

Во-первых, по умолчанию в «капсуле» очень маленькие сетевые буферы — около 32 КБ, мы их увеличили до мегабайта. Во-вторых, мы отключили проблемный для старого NetBSD mmap. В-третьих, исправили проблему совместимости при удалении служебных атрибутов.

В итоге скорость выросла с 7—8 мегабит до 12—14.

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

1 комментарий

«Тайм-капсула» и современные «Маки»

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

Там же посоветовали способ оживить «Тайм-капсулу» — зловреды из «Эпла» убрали поддержку протокола, который она поддерживает, но там же, в комментариях, подсказали ссылку на приложение, которое добавляет в старенькую «капсулу» поддержку протокола SMB, который сейчас требует «МакОС».

Диалоговое окно Time Machine: диск «Диск AirPort» можно использовать только при наличии резервных копий для этого Mac; поддержка Time Capsule прекратится в следующей macOS.
Капсулу пришлось подключить к точке через «Езернет»: почему-то через вайфай она не смогла работать в моей сети, но «МакОС» всё равно отказалась бакапить на неё

Хорошо, что у нас есть нейросети — я рассказал, что хочу, дал ссылку на репозиторий и только попросил проанализировать выложенный там запускаемый файл. И не зря! Внутри оказался код, отсутствующий в исходниках, который скачивает что-то бинарное с домена timecapsulesmb.jamesyc.com.

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

Интерфейс UTM с запущенной виртуальной машиной NetBSD TimeCapsule Build: статус «Запущено», архитектура ARM64, 8 ГБ памяти, 1,06 ГБ размер, Serial TTY /dev/ttys006.
Виртуалка с операционной системой NetBSD внутри. Там собирается софт для «Тайм-капсулы»

Нейросетка довольно долго мне всё настраивала и компилировала, но в итоге собрала требуемую версию, активировала внутри «Тайм-капсулы» ssh и успешно всё установила.

К сожалению, скорость оказалась отвратительной — четыре дня на бакап моего ноутбука. Я попросил нейросетку что-нибудь с этим сделать.

Она посмотрела загрузку процессора (там внутри одноядерный Cortex‑A9) и предположила, что он не справляется с шифрованием канала. После того как мы отключили шифрование — сеть-то всё равно локальная, — скорость сильно возросла: теперь бакап должен сделаться примерно за девять часов.

Завтра посмотрю всё ли успешно и посмотрим нельзя ли ещё ускорить, всё-таки это тоже довольно медленно.

4 комментария

Ошмётки в консоли

Как известно, много лет назад «Эпл» перешла с процессоров «Интел» на собственные, основанные на архитектуре «АРМ». Процессоры несовместимы, однако бинарные программы, скомпилированные под «Интел», продолжают работать — в «МакОС» встроен специальный транслятор, который обеспечивает такую возможность.

Много лет я таскаю с собой различные утилиты, которые при переходе с одного «Макбука» на другой автоматически копируются при помощи встроенной в ОС процедуры миграции. Однако некоторое время назад я занялся тем, что с помощью brew перевёл всё это бинарное хозяйство на «АРМ».

По пути у меня что-то неприятно сломалось — иногда, при редактировании командной строки, всё странно съезжало, части текста наезжали друг на друга и невозможно было понять какая команда получится в итоге.

Я всю голову сломал, пытаясь понять что же произошло, даже переставил себе iTerm2, думал дело в нём, но не помогло. Подумал, что может у меня что-то такое погружается при старте терминала, что всё ломает. В итоге стал отключать команды по одной строке в .bash_profile, пока не отключил строку с переменной PS1, задающей вид приглашения перед вводом программы, и всё стало нормально работать.

Тут я каким-то образом догадался, что дело в кодах, задающих цвет приглашения. Спросил у ЧатаГПТ и тот подтвердил мою догадку.

Оказывается библиотека readline, отвечающая за редактирование текста в командной строке, неправильно считает длину строки, если в ней есть управляющие символы, — например, задающие цвет. Чтобы всё работало как надо, их надо обрамлять специальными последовательностями \[ и \]. Если я когда-то это и знал, то успел прочно забыть.

В общем, я заменил приглашение с

PS1='\e[33;1m\u: \e[31m\W$(__git_ps1)\e[0m \$ '

на

PS1='\[\e[33;1m\]\u:\[\e[0m\] \[\e[31m\]\W$(__git_ps1)\[\e[0m\] \$ '

и всё заработало как надо.

3 комментария

«Телеграм Макс»

Хотите поменять иконку стремительно становящегося нам чужим «Телеграма» на иконку доморощенного «Макса»? Под «МакОСью» это сделать проще простого.

Всего несколько шагов:

  1. если у вас в настройках «Телеграма» выбрана нестандартная иконка, идём в настройки («⌘+,»), меняем на стандартную;
  2. заходим в папку, где у нас лежит «Телеграм» («⌘+клик» на иконке приложения);
  3. открываем «Свойства» («⌘+I») этого приложения;
  4. скачиваем мессенджер «Макс», запускаем инсталлятор;
  5. прямо из инсталлятора иконку «Макса» тянем в левый верхний угол свойств приложения «Телеграм», туда, где иконка;
  6. в программе Finder нажимаем кнопку «извлечь» («⏏») около надписи «MAX» в левом меню, сам файл удаляем, он нам больше не понадобится.

Всё, у «Телеграма» теперь максовская иконка.

Панель задач macOS с иконками Finder, Почта, Календарь, терминал, Qwant, Notion, Opera, Photoshop и Корзиной; всплывающая подсказка «Telegram» над иконкой Qwant.

1 комментарий

Brew: x86 → ARM

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

Несколько лет назад «Эпл» сменила процессоры Интела в своих устройствах на чипы собственной разработки, основанные на архитектуре ARM. Эта архитектура бинарна не совместима с процессами Интела и, чтобы все программы программы остались работоспособными, в состав операционной системы включили специальный транслятор. Он на лету преобразовывает машинный код. О чего, конечно, страдает производительность.

Мой набор утилит, поставленный через «брю», несмотря на то, что у меня новый процессор, остался ещё с интелловских времён. Некоторым утилитам там, думаю, больше десятка лет. Я что-то не заморачивался переходом «брю» на ARM, тем более, что это не так-то просто сделать.

А тут краем глаза где-то зацепил новость, что «Эпл» будет, как ни печально, удалять вышеупомянутый транслятор в ближайшем будущем. Решил не откладывать уже дело в долгий ящик и настроить себе «брю» под архитектуру ARM, заодно поставить новый набор утилит — хотя бы те, которыми часто пользуюсь.

Начал с очень известной утилиты ffmpeg, которую я использую, чтобы конвертировать видео. В последнее время чаще всего — чтобы сконвертировать скаченное с «Ютуба» для дочки. Стараюсь ей подкидывать что-нибудь одновременно интересное и развивающее.

Разница между утилитой, выполняющейся через транслятор, и нативным вариантом на скриншоте. Сконвертировал одно и то же видео два раза. Скорость конвертации — 23 кадра в секунду против 48. Очень серьёзная разница, как мне кажется.

Скриншот консоли FFmpeg: два блока вывода mp4 с одинаковым количеством кадров (14630), но разным fps (23 и 48), скоростью кодирования (0.757x и 1.6x) и битрейтом (~12888 kbits/s).

2 комментария

«Пасхальное яйцо» в Power Mac G3

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

Сейчас они редко попадаются, а когда-то они были в «Фотошопе», микрософтском офисном пакете и многих операционных системах, включая «Виндоуз».

В ранних компьютерах «Эпл» их было навалом, пока Стив Джобс не запретил их, вернувшись в компанию в 1997 году.

Наткнулся на свежую статью по этому поводу — две недели назад стало понятно как вызвать одно из «пасхальных яиц». Было известно, что оно присутствует в компьютерах Power Mac G3, но не было понятно как заставить его появиться на экране.

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

Скриншот программы The Team (Converted 2): 24 портрета на фоне гор, меню File, Edit, Font, Size, Style, Sound, Help, время 1:07 PM.

Увидеть «пасхальное яйцо» можно в эмуляторе. Для этого надо проделать следующее:

  1. Разрешить использование «RAM Disk» в разделе «Memory» контрольной панели;
  2. Выбрать «Restart» в «Special menu»;
  3. После перезагрузки кликнуть на иконку «RAM Disk»;
  4. Выбрать «Erase Disk» в «Special menu»
  5. Напечатать «secret ROM image» в текстовом поле «Name»;
  6. Кликнуть на кнопку «Erase»;
  7. Кликнуть на иконку «secret ROM image».

Откроется папка с иконкой «The Team». При клике разворачивается фотография членов команды, которая работала над всеми продуктами линейки G3.

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

Оставить комментарий

Принтер, MacOS и IPv6 часть вторая

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

На сайте последняя прошивка датируется началом 2020-го, но беда в том, что программа под «МакОС», которая обновляет мою модель принтера, перестала поддерживаться много лет назад и просто не запускается (у меня — HP LaserJet Pro P1102w).

Сравнение конфигурации сетевого оборудования: аппаратный адрес 2C:41:38:78:BD:4A, код даты микропрограммы изменён с 20120814 на 20201023, тайм-аут ввода/вывода 1000.
До и после обновления прошивки

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

Скриншот утилиты обновления прошивки HP LaserJet P1100/P1560/P1600 с предупреждением не выключать принтер.

В общем, поскольку под «МакОС» программа не работает, пришлось обновлять прошивку через «Виндоуз», благо у меня уже развёрнута виртуалка с Windows XP, которую я использую, чтобы переписывать фотографии, сделанные винтажными часами «Касио».

Поставил туда драйвер от принтера и программу для обновления прошивки. Где-то в интернете я прочитал, что прошивку следует обновлять через USB и потратил много времени, чтобы разыскать дома шнурок (в принтере используется USB-B), но оказалось, что всё происходит через вайфай.

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

Теперь остаётся наблюдать — решилась ли проблема.

2 комментария

Принтер, MacOS и IPv6

Я выключил IPv6 на принтере, но позже оказалось, что полностью проблема не решилась

Какое-то время назад один из домашних принтеров стал плохо работать с МакОСью — наши с женой «Макбуки» стали видеть его только после отключения от сети и включения обратно.

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

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

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

Скриншот веб-интерфейса HP LaserJet P1102w: вкладка «Веб-службы HP», раздел «Конфигурация IPv6» с полем «Имя хоста: NPI78BD4A» и таблицей адресов IPv6.

Веб-интерфейс принтера я нашёл следующим образом.

Cначала запустил из командной строки сканирование сети:

$ dns-sd -B _printer._tcp
Browsing for _printer._tcp
DATE: ---Mon 28 Apr 2025---
21:09:21.373  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
21:09:21.374  Add        2  14 local.               _printer._tcp.       HP LaserJet Professional P1102w

Потом запросил информацию о найденном принтере:

$ dns-sd -L "HP LaserJet Professional P1102w" _printer._tcp local.
Lookup HP LaserJet Professional P1102w._printer._tcp.local.
DATE: ---Mon 28 Apr 2025---
21:09:59.306  ...STARTING...
21:09:59.306  HP\032LaserJet\032Professional\032P1102w._printer._tcp.local. can be reached at NPI78BD4A.local.:515 (interface 14)
 txtvers=1 qtotal=1 rp=auto pdl=application/vnd.zeno-zjs,application/vnd.cups-raster ty=HP\ LaserJet\ Professional\ P1102w product=\(Hewlett-Packard\ HP\ LaserJet\ Professional\ P1102w\) priority=50 adminurl=http://192.168.0.127 usb_MFG=Hewlett-Packard usb_MDL=HP\ LaserJet\ Professional\ P1102w Transparent=T Binary=T

Адрес, на который надо зайти браузером, находится после подстроки adminurl=.

2 комментария

«Офис» под «Мак»

Ну почему микрософтский «Офис» на «Маке» всегда ведёт себя, как слон в посудной лавке? Ситуация с годами, конечно, меняется к лучшему, но по-прежнему есть где поплеваться. Из плюсов — свежайшая 16-я версия хотя бы стала смотреться естественно, а не так, будто я её запускаю через виртуалку с Виндоуз.

Окно Microsoft AutoUpdate с надписью «Инициализация. Подождите.», кнопкой «Проверить наличие обновлений» и чекбоксом «Автоматически обновлять приложения Майкрософт».

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

4 комментария

Медиатека Фото.photoslibrary

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

Скриншот окна «Корзина» macOS с одним объектом — папкой «Медиатека Фото.photoslibrary», отображаемой в тёмной теме Finder.

Возможно это странно, но я терпеть не могу, когда в корзине у меня что-то есть. Если я это вижу, рука так и тянется её очистить. Возможно это одно из проявлений моего ОКР.

В общем, я никак не мог избавиться от этого файла, а интернет молчал. Мне удалось найти пару сообщений о том, что проблема проявляется не только у меня, но лекарства нигде не было.

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

Тут картинка сложилась.«Медиатека Фото.photoslibrary», видимо, и есть эта искомая база. Похоже я когда-то её удалил в корзину, в системе осталась какая-то связь между удалённым файлом и тем фактом, что я перенёс файл в корзину и систему заглючило. То есть приложение «Фото», работая в фоне, каждый раз пытается создать свою базу, из-за этой связи создаёт его в корзине, а потом прихожу я и удаляю его из корзины.

Решил проблему просто — перетащил файл из корзины в папку «Фотографии» и проблема ушла.

3 комментария

Замена цифр

Придумал тут штуку интересную. Как у я уже писал ранее, полюбилось мне что-то писать время с минутами в верхнем индексе. Для этого мне пришлось решить проблему ввода всего набора таких символов.

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

А сегодня мне пришло в голову решение лучше — попробовать обойтись функцией «Замены текста», которая встроена в «МакОСь». Мысль простая — заменять двоеточие и две цифры на то же самое, но без двоеточия и в верхнем индексе. Сначала я пытался набрать всё нужное руками, а потом случайно нашёл функцию импорта.

Настройки ввода текста: источники Russian - Ilya Birman Typography и English - Ily..., кнопки «Изменить...» и «Замены текста...», слева — опции быстрого переключения пользователей.

Формат для импорта оказался довольно простым. После того как я в нём разобрался, накидал небольшую программу на «Пайтоне», которая мне за мгновение сформировала нужный файл.

print("""
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>""")

trans = str.maketrans("0123456789", "⁰¹²³⁴⁵⁶⁷⁸⁹")

for i in range(0, 60):
	print(f"""
	<dict>
		<key>phrase</key>
		<string>{f"{i:02d}".translate(trans)}</string>
		<key>shortcut</key>
		<string>:{i:02d}</string>
	</dict>""")


print("</array></plist>")

Чтобы его импортировать, нужно перейти в «Системные настройки…», оттуда в  «Клавитуру», там нажать на кнопку «Замены текста…» и перетащить на открывшийся список получившийся файл.

После этого можно проверить что получилось, — если написать в любом месте «13:00», оно должно само преобразоваться в «13⁰⁰».

9 комментариев

Слеш в имени файлов «МакОСи»

Принято считать, что в мире «Эпла» легко избавляются от наследия, невзирая на несовместимость программ или оборудования. В большой степени так оно и есть, но иногда можно наткнуться на очень странные штуки, которые до сих пор используются:

Another obvious problem is the different path separators between HFS+ (colon, ’:’) and UFS (slash, ’/’). This also means that HFS+ file names may contain the slash character and not colons, while the opposite is true for UFS file names. This was easy to address, though it involves transforming strings back and forth.

The HFS+ implementation in the kernel’s VFS layer converts colon to slash and vice versa when reading from and writing to the on-disk format. So on disk the separator is a colon, but at the VFS layer (and therefore anything above it and the kernel, such as libc) it’s a slash. However, the traditional Mac OS toolkits expect colons, so above the BSD layer, the core Carbon toolkit does yet another translation. The result is that Carbon applications see colons, and everyone else sees slashes. This can create a user-visible schizophrenia in the rare cases of file names containing colon characters, which appear to Carbon applications as slash characters, but to BSD programs and Cocoa applications as colons.

На скриншоте видно как это выглядит в жизни: в командной строке создаём папку с двоеточием в имени, в Файндере в этом месте — слеш. В цитате такое поведение метко названо «шизофренией».

Скриншот терминала с командой mkdir ':)' и стрелкой к синей папке, под которой написано '/)
Создаём в командной строке папку с двоеточием в имени, в Файндере в этом месте — слеш

2 комментария

RAM-диск под macOS

Век живи, век учись, дураком помрёшь.

Понадобилось срочно посмотреть как создать зашифрованный раздел на внешнем диске в «МакОСи» — нужно было помочь другу разобраться. У меня нашёлся и внешний диск, и несколько флешек, но, как назло, не оказалось переходника, чтобы подключить их к разъёму моего ноутбука.

Подумал — нельзя создать диск в памяти (RAM-диск), чтобы попробовать шифрование на нём? Оказалось, можно, делается из командной строки:

diskutil erasevolume APFS 'RAM Disk' `hdiutil attach -nobrowse -nomount ram://XXXXX`

XXXXX тут — размер будущего диска в 512-байтных секторах. То есть, чтобы создать диск размером в один мегабайт, надо написать сюда число 2048: ram://2048.

4 комментария

Бик Зур

Поставил на ноутбук себе неделю назад «Биг Сур», свежайшую версию «МакОСи». В Татарстане её тут же окрестили «Бикзуром» («бик зур» с татарского — «очень большой», «огромный»). В целом, я очень доволен, люблю обновления, даже не очень стабильные, редкий раз могу обновиться даже и на «бету», так как пользоваться чем-либо без обновлений мне почему-то надоедает.

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

Интерфейс видеоконференции с кнопками: звук, видео, участники (5), демонстрация экрана, реакции, подробнее, выйти, пригласить, поднять руку.
Пропали некоторые кнопки в «Зуме», программе для проведения видеоконференций

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

Что точно не фича — проблемы с отрисовкой приложений. В браузере (я пользуюсь «Оперой») иногда при переключении на неактивную вкладку видно лишь пустое окно или вот в программе для видеоконференций «Зум» из интерфейса пропали некоторые кнопки.

Вообще «МакОСь» славится своей нестабильностью первых мажорных версий, большинство моих знакомых предпочитает дождать второго-третьего обновления. Но этот релиз, кажется, переплюнул все проблемы прошлого — пользователи некоторых старых «Макбуков» жалуются, что попытка установки «Биг Сура» приводит к аппаратному повреждению одного из чипов платы ввода-вывода. Это уже совсем какая-то дичь.

9 комментариев

WiFi и Macbook

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

График спектра Wi-Fi-каналов: доминирует сеть Villariba на канале 52 (80 МГц), видны также MaksRoom, KazanHome1, Villabajo и другие сети в диапазонах ISM и UNII.
Распределение вайфайных сетей у нас дома

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

У МакОСи есть неприятный недостаток — при подключении к вайфаю, она смотрит текущую страну через устаревший протокол 802.11d и, в зависимости от того какую страну она увидит на первом попавшемся роутере (возможно соседском), принимается решение какие каналы вайфая должны ловится, а какие нет.

Мои соседи светят в эфир кодами России, Великобритании, Китая и Германии. В этой «русской рулетке» то везло, то нет, и видимо чаще попадались «неудачные» коды, потому что ноутбуки цеплялись к перегруженной сети 2,4, вместо почти пустой пятигигагерцовой, которую они временами вообще не видели.

На эту тему много и подробно написано в интернете, поэтому я рисую проблему лишь общими мазками.

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

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

Это решение чудесным образом лечит все проблемы, нужно только установить в «системных настройках», в списке предпочтительных сетей пятигигагерцовую сетку первой или вообще не подключаться к сети 2,4 ГГц.

2 комментария

Картинка в терминале

Несколько лет назад программа «айТерм2» (iTerm2, терминал для «Мака») обзавелась поддержкой графики в командной строке. Сильной необходимости в ней нет, но иногда это удобно — можно посмотреть картинку на удалённом сервере, не выкачивая её себе.

Вообще уже очень давно существует формат «Сиксел», рождённый в незапамятные времена компанией «ДЭК» (DEC), его даже поддерживают некоторые терминалы, но он значительно сложнее придуманного авторами «айТерма2».

Я это знаю, так как когда-то разобрался в обоих форматах и даже побаловался с тем, что придумали в «айТерме2» — написал программу на «баше», где нарисованный глаз следил за курсором мыши в терминале.

Скриншот: два файла test.gif и test2.gif (24x96) с вертикальным текстом HELP рядом с терминалом bash, где выполнена команда cat ~/Downloads/test2.gif, выводящая тот же текст HELP.
Картинку с надписью «HELLO» видно сразу и в графической среде, и в терминале

В общем виде тот и другой форматы представляют собой управляющие последовательности, после которых передаётся закодированная картинка.

Мне тут подумалось, что было бы интересно попробовать вставить внутрь настоящей картинки её закодированную копию, чтобы при попытке вывода её в консоль в виде текста, в терминал попадали управляющие коды и на экран выводился не бинарный мусор, а картинка.

Для этого я нарисовал небольшой ГИФ и вставил закодированную картинку после изображения следующей командой:

cat test.gif \
    <(echo -ne "\033[3F\033[J\033]1337;File=inline=1:") \
    <(base64 test.gif) \
    <(printf "\a")\
> test2.gif

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

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

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

4 комментария

Общение через AirDrop

Интерфейс AirDrop на macOS: меню слева с разделами, центральный экран с описанием функции и настройками обнаружения.
Окно программы «ЭйрДроп» на моём ноутбуке, я в сети в гордом одиночестве

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

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

Это всё здорово напоминает «Блючалкинг», я о нём писал 15 лет назад. Тогда «ЭйрДропа» не было, но блютуз уже существовал. Правда телефоны тех времён не очень-то умели делать с ним что-нибудь полезное, но можно было, например, обмениваться контактами из телефонного справочника. Вот кто-то и придумал так общаться — в контакт записывали сообщение и отсылали его в эфир.

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

Оставить комментарий

sudo по отпечатку пальца ★

Окно macOS: sudo запрашивает пароль или Touch ID для администратора. Кнопки «Использовать пароль...» и «Отменить».
Запрос отпечатка пальца для команды sudo

На «Маке» я нередко использую командную строку — некоторые мои задачи через неё выполнять проще, чем через графический интерфейс. Как правило для этого используется непривилегированный пользователь, но иногда приходится что-то запускать с правами администратора. С этой целью в системе существует специальная команда sudo.

Обычно она запрашивает специальный пароль, чтобы убедиться, что тот, кто её запускает, действительно имеет право повысить полномочия.

И вот сегодня один из сотрудников спросил — работает ли у меня на «Маке» sudo по отпечатку пальца.

Что-то я даже не задумывался о такой возможности, погуглил, оказывается это элементарно включается: нужно в файл

/etc/pam.d/sudo

первой строкой добавить

auth sufficient pam_tid.so

И всё, при следующем запуске sudo можно просто приложить палец к сканеру. Экономит уйму времени, спасает от опечаток, никто не сможет подсмотреть пароль.

7 комментариев

Проблема с обновлением «МакОСи»

Ошибка установки macOS 10.14.1: «Установка не выполнена. An error occurred downloading one or more packages for the update product.» — скриншот с логом и окном ошибки.
Камрип неудавшегося процесса обновления «МакОСи» на предпоследнюю версию «Мохаве»

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

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

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

Но на этом приключения не закончились. Оказалось трёхгиговая программа для обновления хочет что-то скачать из интернета (это удалось понять из логов, которые у неё показываются по нажатию ⌘+L) и это что-то немаленькое — бесплатного «випиэна» на 500 мегабайт не хватило.

Хорошо приятель (спасибо, Рим!) выручил, дал пароль от своего безлимитного «випиэна», после этого меня ждал успех. До часу ночи суммарно провозился.

4 комментария

Скриптование меню в статус-баре

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

Если кому интересно, то последовательность его прикручивания к системе примерно такова (bolk — моё имя пользователя и требуется установленный brew):

mkdir -p /usr/local/Cellar/ScriptableStatusBar/0.1/bin/
mv ~/Downloads/ScriptableStatusBar-release/usr/local/bin/sbar !:2
mv ~/Downloads/ScriptableStatusBar-release/Applications/ 
    /usr/local/Cellar/ScriptableStatusBar/0.1
brew link ScriptableStatusBar
open /usr/local/Cellar/ScriptableStatusBar/0.1/Applications/

# Тут надо утянуть открывшееся приложение в «Объекты входа»
# и ещё запустить его в открывшемся окне, разрешив ему в принципе запускаться

Очень неудобно и несколько недоделано. Хотелось бы, чтобы из шелла можно было добавить/удалить пункт меню и сменить иконку. Сейчас это тоже можно, но полной переинициализацией и, кроме того, убъёшься всё экранировать.

Вооружившись несложной инструкцией, делаем несколько магических пассов:

cat>~/lockkeyboard.sh<<LOCK
#!/bin/ksh

kext=/System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/
case "$1" in
    unlock )
        /sbin/kextload "$kext"
        ;;
    lock )
        /sbin/kextunload "$kext"
        ;;
esac
LOCK

sudo chown root:staff ~/lockkeyboard.sh
sudo chmod 750 ~/lockkeyboard.sh

sudo cp /dev/stdin /private/etc/sudoers.d/lockkeyboard<<SUDO
bolk    ALL= NOPASSWD: /Users/bolk/lockkeyboard.sh
SUDO

sbar set locker ?\
    'Lock:/usr/bin/sudo /Users/bolk/lockkeyboard.sh lock'\
    'Unlock:/usr/bin/sudo /Users/bolk/lockkeyboard.sh unlock'\
    'Quit:/usr/local/bin/sbar remove locker'

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

Выпадающее меню с пунктами Quit, Unlock, Lock, открытое из иконки замка в строке состояния macOS; видны дата «Ср, 8 марта 7:49», заряд батареи 34%, значки Wi-Fi, звука и поиска.
Простое меню для блокировки клавиатуры

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

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

Дополнение: нашёл ещё две программы: «БитБар» и «ЭниБар».

8 комментариев

← 1 2 3 →