13 заметок с тегом

Инструкции

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

HTML-подпись в Mail.app

Для некоторых целей ;-) мне понадобилось настроить в стандартном почтовике macOS подпись в формате HTML для сообщений. Как оказалось, вставка такой подписи для работы в Mail.app является нетривиальной задачей.

Для начала, следует понимать, что все подписи в Mail.app находятся в HTML-формате, но по каким-то причинам Apple не даёт возможность через интерфейс почтовика скопипастить внутрь WYSIWYG или HTML-код подписи. Для того, чтобы получить нужную подпись, необходимо сделать следующее:

  1. Создать в Mail.app подпись, привязанную к нужному адресу электропочты, в теле которой ввести любой рандомный текст. Закрыть Mail.app
  2. Открыть терминал и ввести команду:
open ~/Library/Mail/V5/MailData/Signatures/

, где V5 — версия данных Mail.app, для High Sierra — V5, для Sierra — V4, для Mojave, скорее всего, будет V6.

  1. В открывшемся окне Finder нужно отсортировать файлы по дате создания. Наша свежесозданная подпись — самая свежая.
  1. С помощью TextEdit нужно открыть вашу новую подпись. Верхняя часть с метаинформацией должна остаться нетронутой, в нижней же части вместо того кода, что там уже есть, нужно вставить HTML-код необходимой подписи
  1. Закрывайте и сохраняйте готовый файл. Открывайте Mail.app

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

5 сентября   macOS   Инструкции

Дуалбут хакинтоша и Windows 10

Для запуска Frostpunk (да и в принципе для игр — я не хочу ставить игровые клиенты на macOS, которая почти всегда используется для работы) я установил себе в дуалбут Windows. Здесь должна быть шутка, что все бздуны — виндузятники. Далее — некоторые замечания по этому вопросу.

Легальный ключик почти за халяву

На eBay продаются ключи для Windows 10 Pro за 385 рублей. В чём прикол? Это OEM-ключи, принадлежавшие компьютерам, которые во время изготовления оказались бракованными настолько, что их проще выкинуть, чем починить (к примеру, со сгоревшей материнской платой). Ребятки продают ключи для Windows 10 за 3-4 фунта стерлингов, которые вполне можно использовать для установки. Но есть нюансы:

  • С точки зрения Microsoft такой ключ может использоваться только на 1 компьютере, причём на том, которому назначен (на сломанном). В случае. если хочется заморочиться, ребята, продающие ключи, могут прислать сгоревшую материнку вам, без дополнительной платы. С её наличием переиспользование ключа на другом ПК становится возможным, так как вы можете переносить свою версию Windows на другой компьютер, удалив её с изначального, всегда.
  • Исходя из первого нюанса — ключ одноразовый. Как только вы его активировали, Microsoft привязывает его к вашей учётной записи и конфигурации компьютера. Хотите ещё ключей — платите ещё 385 рублей за каждый компьютер.
  • После выдачи ключа его стоит активировать в течение недели — иначе его могут успеть отозвать за неактивность.

Если вышеприведённые нюансы вам не страшны и вы не собираетесь использовать данную установку Windows в коммерческих целях (ака «на офисных компах») — пробуйте смело. Это, конечно, не бесплатная Windows, как пару лет назад, но это даже дешевле, чем Windows 8.1 для студента, которую я купил по бешеной скидке для студентов за 1800 рублей (при долларе в 30).

Установка параллельно с хакинтошем

Во первых: Boot Camp нам не бро. Он предназначен для железа от Apple, и к нашим условиям не применим. Создавайте флешку для Windows так, как обычно её создаёте для нормального ПК.

Во вторых: отключите нафиг все жёсткие диски, кроме того, на который будете ставить Windows, перед установкой. И крайне желательно ставить Windows на отдельный жесткий диск или SSD, не логический — а физический. В противном случае проблем с загрузчиком не оберётесь. После нормальной установки Windows можно вернуть все диски на место, и Clover увидит свежеустановленную ОСь автоматически.

Ну и в третьих: после установки обязательно отключите Fast Boot в винде! Для этого в поиске меню «Пуск» пишем «cmd», открываем «Командную строку» с правами администратора и вводим команду:

powermgr -h off

После выполнения этой команды перезагружаемся.

Если у вас внешняя видеокарта, при повторной загрузке в macOS на этапе загрузки графического интерфейса сигнал по HDMI может пропасть. Если такое случилось — просто вытащите HDMI-кабель из видеокарты и вставьте его обратно.

27 августа   macOS   Windows   Инструкции   Хакинтош

FreeBSD Jails 101: краткое руководство по поднятию первой клетки

Дисклеймер: если у вас машина с FreeBSD стоит за отдельным роутером, который раздаёт IP-адреса, является маршрутизатором и всё такое — вам сюда. Я же описываю случай, когда сама машина с FreeBSD является роутером для клеток.


Собственно, условия разворачивания такие:

  • Хост является маршрутизатором и провайдером NAT-а для клеток. Внешний роутер отсутствует.
  • Клетки являются автономными и не имеют общих файловых систем. Это спорное решение для некоторых, и каждая клетка-сервис будет занимать 500 мегабайт на жёстком диске минимум, но при этом каждая клетка обновляется автономно. В данной установке принцип «понимать, что обновляешь» важнее автоматизации обновлений.
  • Хост установлен на root с ZFS. Староверы с U-word FS идут в хэндбук.
  • Всё происходит на FreeBSD 11.2-RELEASE.

Для начала добавляем в /etc/rc.conf следующие данные:

gateway_enable="YES"
cloned_interfaces="tap0"
ifconfig_tap0="inet 192.168.99.1 netmask 255.255.255.0"
jail_enable="YES"

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

Теперь создаём ZFS-датасет, в котором будут лежать все клетки (допустим, /usr/jails/):

zfs create -o compression=lz4 -o mountpoint=/usr/jails zroot/jails

Далее — создаём ZFS-датасет, в котором будет храниться наша шаблонная клетка. Таких шаблонных клеток можно создать несколько, в зависимости от необходимых задач. Внимание, если вы ещё не в курсе — клетки работают исключительно с FreeBSD!

zfs create -o compression=lz4 -o mountpoint=/usr/jails/11-2-amd64 zroot/jails/11-2-amd64

Здесь 11-2-amd64 — имя клетки. Оно может быть любым, в зависимости от ваших предпочтений. Здесь — имя по версии и архитектуре FreeBSD внутри шаблонной клетки.

Теперь можно скачать базовую установку для FreeBSD и распаковать её (поддержку lib32 и сборки из портов мы оставим за пределами данного руководства):

cd /usr/jails
fetch https://mirror.yandex.ru/freebsd/releases/amd64/11.2-RELEASE/base.txz
tar -xf base.txz -C /usr/jails/11-2-amd64

Следующий шаг — создание конфигурационного файла клеток /etc/jail.conf. Он достаточно стандартен:

exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;
path = "/usr/jails/$name";
interface = "tap0";
allow.raw_sockets = 1;

# Шаблонная клетка. После настройки этот блок можно закомментировать.
11-2-amd64 {
    host.hostname = "template";
    ip4.addr = "tap0|192.168.99.250/24";
    allow.chflags = 1;
    allow.socket_af = 1;
}

Вверху — общие параметры для всех клеток. Они достаточно стандартны. Стоит обратить внимание на allow.raw_sockets = 1 — без этой опции ping, traceroute и половина прочих сетевых утилит работать не будет.

Далее идёт секция с индивидуальной настройкой нашей шаблонной клетки:

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

Если хочется изучить побольше опций, man jail.conf поможет (на английском языке).

Создаём клетку:

jail -c 11-2-amd64

Клетка запущена и готова к настройке. В процессе выполнения этой команды возможна ругань на «missing hostname»: игнорируем смело, в клетке всё будет нормально. Теперь мы можем войти в клетку:

jexec 11-2-amd64 sh

Единственное, что надо сделать на этом этапе — поднять ssh внутри клетки, что делается командой:

sshd_enable="YES"

По умолчанию рут-логин по ssh выключен. Или включите его, или создайте пользователя для входа.

Следующим шагом будет включение NAT для клеток. Воспользуемся PF для этого. Включаем его в rc.conf:

pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"

Перед запуском напишем правила маршрутизации. Для простой конфигурации достаточно этого варианта:

ext_if="re0"
jails_if="tap0"
jails_nr="{192.168.99.0/24}"

nat on $ext_if from $jails_nr to any -> ($ext_if)

О том, как более-менее безопасно настроить PF, я расскажу в другой заметке. Перед включением файрвола обязательно выполните команду pfctl -vnf /etc/pf.conf и посмотрите её результат! После удовлетворения результатом выполняйте service pf start: в этот момент вас может выкинуть из SSH-сессии, это нормально.

После запуска файрвола можно или перезагрузиться, или сделать service jail restart 11-2-amd64, и после этого зайти на свою шаблонную клетку по SSH. Для того, чтобы увидеть, какой IP-адрес и хостнейм у каждой из запущенных в системе клеток сейчас есть, существует команда jls.

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

# О ZFS, ты так хорош…
# создаём датасет для новой клетки, допустим, это будет storage
zfs create -o compression=lz4 -o mountpoint=/usr/jails/storage zroot/jails/storage
# Копируем шаблонную клетку в новую клетку.
zfs send zroot/jails/11-2-amd64 | zfs recv -F zroot/jails/storage

После копирования ФС создаём в файле конфигурации /etc/jail.conf секцию для новой клетки:

storage {
    host.hostname = "storage";
    ip4.addr = "tap0|192.168.99.25/24";
}

Командой service jail start storage теперь можно поднять новую клетку для настройки и установки своих сервисов.

По умолчанию при перезагрузке все клетки запускаются последовательно согласно порядку в /etc/jail.conf. Для того, чтобы это изменить, можно добавить в /etc/rc.conf следующую запись:

jail_list="mysql storage"

После чего все клетки, которые не указаны в этом списке, запускаться не будут, а все клетки в списке будут запускаться согласно порядку в нём: в данном случае первым запустится MySQL, а потом — storage.

24 августа   FreeBSD   Инструкции

Как сделать американский Apple ID бесплатно за 5 минут

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

Для нижеследующих манипуляций нам потребуется iPhone или iPad. Порядок манипуляций и скриншоты относятся к iOS 11, в других версиях операционки выглядеть интерфейс может по-другому. Вот — скриншоты всех шагов, последовательно; описание шагов — ниже.

Шаг 1: App Store в iOS 11 Шаг 1: Настройки учётной записи App Store в iOS 11 Шаг 2: Окно входа в учётную запись App Store Шаг 3-4: Смена магазина в App Store Шаг 4: Американский App Store Шаг 5: Spotify в App Store Шаг 6: App Store, выбор действия Шаг 7: Первый шаг создания учётной записи App Store Шаг 8: Второй шаг создания учётной записи App Store Шаг 9: Третий шаг создания учётной записи App Store Шаг 10: Четвертый шаг создания учётной записи App Store Шаг 11: Пятый шаг создания учётной записи App Store Шаг 12: Завершение создания учётной записи App Store

Шаг 1: Открываем App Store. В правом верхнем углу нажимаем на свою аватарку (или инициалы в кружочке, если аватарку вы не ставили). Откроется панель управления учётной записью App Store, в которой нам нужно «Выйти» из своей текущей учётной записи.

Nota bene: у автора не получилось после этого открыть регистрацию в App Store, и пришлось через Настройки разлогиниваться целиком с iPhone. Возможно, вам будет достаточно разлогиниться в App Store.

Шаг 2: Откроется окно входа в учётную запись Apple ID. Закрываем его.

Шаг 3: В Google вводим поисковый запрос «Spotify iOS». Он предлагает нам скачать приложение из App Store. Переходим по ссылке — и App Store предлагает сменить магазин:

Шаг 4: Нажимаем «Сменить магазин». После успешной смены магазина снова откроется главная страница App Store, где все карточки будут уже на английском языке.

Шаг 5: Идём на вкладку Search, и вводим туда Spotify. В открывшихся результатах поиска напротив Spotify Music нажимаем кнопку Get.

Почему Spotify? Потому что на момент написания этой статьи это приложение гарантированно отсутствует в российском App Store.

Шаг 6: В появившемся меню выбираем «Создать новую учётную запись».

Шаг 7: Откроется меню создания учётной записи. Вводим туда E-mail и пароль два раза. Тапаем по надписи «Agree to Terms and Conditions», чтобы принять лицензионное соглашение Apple. Нажимаем Next

Шаг 8: На этом шаге надо ввести своё имя и дату рождения. Небольшой подвох — даты в Америке пишут в порядке «месяц/день/год», а не «день.месяц.год», как у нас. Нажимаем Next.

Шаг 9: Самый важный шаг — ввод платёжной информации. Так как мы — васьки без американских банковских карточек, то здесь в самом верхнем меню надо выбрать None — нечем нам платить, мы бесплатное приложение качаем. Ниже нам нужно заполнить адрес: чтобы получить валидный адрес, можно воспользоваться вот этим сервисом или ввести любой адрес отеля во Флориде. Почему во Флориде? Потому что там налоги 0%, и если нам вдруг приспичит что-то покупать за деньги в американском App Store, нам не придётся платить налог. После ввода всех данных нажимаем Next. Возможно, выпадет сообщение с ошибкой типа «Something went wrong, please try again later», но после нажатия OK нас перенесёт к следующему этапу.

Шаг 10: Для Apple ID нужно привязать свой номер телефона. Слава богу, на этом этапе региональных ограничений нет, и можно просто свой обычный текущий номер оставить. После нажатия Verify на телефон придёт SMS, которую диалог настройки прочитает автоматически.

Шаг 11: После успешной проверки номера телефона потребуется подтвердить электропочту. Идём с другого устройства (вы же не в чистом поле сейчас?) в свою почтовую программу или сервис, получаем новое письмо с заголовком «Verify your Apple ID что-то там», вводим оттуда шестизначный код на устройстве.

Шаг 12: Готово! После закрытия окна загрузка приложения, которое вы хотели установить, начнётся автоматически. Если не началась — нажимаем Get ещё раз, вводим пароль от свежесозданного Apple ID и скачиваем нужное нам приложение.

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

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

2018   Apple   Инструкции   Прайвеси

Как обмануть Apple (и MacPaw до кучи) и стать «нормальным Маком»

Данный гайд основан на работе P1LGRIM с форума tonymacx86 — An iDiot’s Guide To iMessage. После проделывания описанных ниже процедур Apple будет считать, что ваш Хакинтош — не какая-то наколеночная поделка, а настоящий, свежекупленный Apple-branded device.

Подготовительные работы

Подготовительные работы не требуются, если вы не добавляли в macOS свою учётную запись iCloud. Если добавляли, то надо:

  1. Удалить учётную запись из настроек
  2. На сайте iCloud удалить в «Найти iPhone» ваше устройство (которое уже распознано Apple неправильно)
  3. Отключиться от интернета (сохраните копию этого руководства на флешке или в текстовом файле: подключиться к интернету обратно можно только после завершения всех настроек.
  4. Перезагрузиться.
  5. Удалить кучу малу служебных файлов и кэша. Открываем Terminal и последовательно туда копипастим следующие команды:
rm -r $HOME/Library/Caches/com.apple.iCloudHelper*
rm -r $HOME/Library/Caches/com.apple.imfoundation.IMRemoteURLConnectionAgent*
rm -r $HOME/Library/Caches/com.apple.Message*
rm -r $HOME/Library/Preferences/com.apple.iChat.*
rm -r $HOME/Library/Preferences/com.apple.icloud.*
rm -r $HOME/Library/Preferences/com.apple.ids.service*
rm -r $HOME/Library/Preferences/com.apple.imagent.*
rm -r $HOME/Library/Preferences/com.apple.imessage.*
rm -r $HOME/Library/Preferences/com.apple.imservice.*

Определение параметров сетевой карты

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

  1. У нас есть сетевой интерфейс en0
  2. Он должен быть встроенным (built-in)
    Для определения параметров сетевой карты нужно скачать и открыть утилиту DPCIManager. SourceForge говорит, что утилита — вирус, но это не так: просто она использует «грязные» методы определения PCI-устройств в системе (в том числе — тех, про которые macOS знать не знает и не слышала никогда).

В главном окне программы на первой же вкладке видны сетевые интерфейсы и их свойства:

Окно DPCIManager

Если единственное ваше устройство, которое обладает сетевыми возможностями — PCIe Wi-Fi-карточка, то тут надо просто скрестить пальцы, чтобы macOS посчитала это устройство встроенным. Вот такая конфигурация:

<key>IOBuiltin</key>
<true/>

в /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist, к сожалению, не помогает. Если есть возможность заставить работать встроенный в материнскую плату Ethernet-адаптер — пользуйтесь ей. Абсолютно необязательно пользоваться этим же сетевым интерфейсом для подключения: главное — чтобы он в системе присутствовал.

Если на данном этапе вы устанавливали какие-то кексты для Ethernet-сетевухи, и она появилась в системе, но как en1, en2 или что-то в этом духе — волшебная команда в Terminal поможет:

sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist

(Нет, ну конечно можно BSD-имя интерфейса в plist-файле и ручками поправить, но если вы это умеете — зачем вам этот гайд?)

После удаления файла настроек сетевых интерфейсов перезагружаемся. При загрузке macOS прочитает сетевые интерфейсы, начиная с встроенного, и присвоит им имена.

Конфигурация SMBIOS

Для следующего шага можно воспользоваться Clover Configurator (наверняка он у вас уже как-то установлен). Это не единственный способ добиться нужного результата — но достаточно простой и понятный. Clover Configurator позволит спокойно отредактировать config.plist, отвечающий за загрузку системы. Не стоит пытаться редактировать этот файл в текстовом редакторе: он, сука, XML, и его очень, очень легко отредактировать с нарушением синтаксиса. А config.plist, в котором нарушен синтаксис, не работает вовсе.

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

  1. Открываем Clover Configurator. Монтируем раздел EFI на вашем диске с установленной системой с помощью раздела Mount EFI.
  2. Через File — Open открываем config.plist, который лежит в папке EFI/CLOVER вашего раздела с EFI.
  3. На левой панели выбираем пункт Rt Variables. Из списка ROM выбираем ’UseMacAddr0’. Убеждаемся, что поле MLB пустое. Устанавливаем BooterConfig в значение 0x28, а CsrActiveConfig — в 0x67.
Clover Configurator: Rt Variables
  1. На левой панели выбираем SMBIOS. Щёлкаем по неприметному списку, который расположен правее и чуть ниже изображения нашей «системы» (так как системное определение на скриншоте не выбрано, там знак вопроса). То, какое определение системы вы выбираете, зависит от вашего железа.
Clover Configurator: SMBIOS
  1. После выбора определения системы рядом с полем Serial Number нажимаем кнопку Generate New. Полученный серийный номер копируем в буфер обмена для проверки.
  2. Проверяем серийный номер на правильность здесь. Вставляем номер, решаем капчу, нажимаем Lookup. Ответом должна быть информация о системе, такой, как в определении системы, что мы выбрали на шаге 4. Если результат не такой, повторяем шаг 5.
  3. На сайте проверки гарантии Apple снова вводим полученный серийный номер. А теперь внимание: сайт Apple должен сказать, что такого серийного номера не существует. Если же по серийному номеру показывается информация о каком-то компьютере — возвращаемся к шагу 5 и повторяем всё ещё раз.
  4. Открываем Terminal и вводим туда команду uuidgen. Результат команды копируем и вставляем в Clover Configurator в поле SmUUID.
  5. В Clover Configurator выбираем File — Save.
  6. Перезагружаемся.
  7. Готово, вы восхитительны.
  8. Дополнительный шаг: проверка работоспособности NVRAM. В Terminal вводим следующие команды:
sudo nvram TestVar=HelloWorld
nvram -p | grep TestVar

Если вторая команда не вернула вам TestVar HelloWorld — нужно устанавливать эмуляцию NVRAM. EmuVariableUefi-64 и RC Scripts в установщике Clover помогут вам.

После перезагрузки

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

Нужно ли совершать все эти телодвижения, если не собираетесь пользоваться iMessage/Facetime? Все равно нужно. Без правильно настроенного SMBIOS хакинтош будет вести себя странно/будут проблемы с Bluetooth (если таковое оборудование есть в системе) и так далее. Лучше один раз заморочиться, чем не делать этого и ловить рандомные глюки.

А при чём тут MacPaw?

А вот при чём:

Если не настроить правильный SMBIOS, то ни SetApp, ни приложениями из него, пользоваться нельзя. Мгновенный разлогин и привет. После настройки выше — всё работает, и «It looks like your Mac’s identity was changed» больше не появляется.

Впрочем, можно воспользоваться альтернативой SetApp, и альтернатива даже дешевле на $11.90 в месяц… Но это уже совсем другая история.

2018   Инструкции   Хакинтош

RCode — редактирование файлов на удалённом SSH-сервере в Visual Studio Code

Иногда очень не хочется редактировать файлы в vim или, прости господи, nano на удалённом сервере, а хочется нормального размера окна, подсветки синтаксиса и прочих удобств графического редактора текста с претензией на IDE, коим является Visual Studio Code. Далее — инструкция, как с помощью нехитрой магии сделать себе удобное редактирование конфигов, кода и всего такого. Disclaimer: я не приветствую редактирование кода на продакшене мимо VCS.

Данная последовательность действий предполагает, что на сервере вы можете получить права суперпользователя, вы знаете, что такое SSH, и вы уже можете подключиться к своему серверу без проблем с той машины, на которой установлен Visual Studio Code.

Шаг 1: устанавливаем в Visual Studio Code расширение Remote VSCode. Нажимаем Ctrl+P и вводим:

ext install remote-vscode

Шаг 2: открываем параметры редактора сочетанием клавиш Ctrl+,, и добавляем в настройки пользователя следующие параметры:

// Порт, по которому rcode будет "дозваниваться" до нашего сервера
"remote.port": 52698,

// Запускать ли сервер удаленного редактирования при запуске редактора?
"remote.onstartup": true

// На каком сетевом адресе слушать команды. 127.0.0.1 здесь менять не стоит.
"remote.host": "127.0.0.1"

// Если вы не хотите видеть ошибки "Remote port already in use", включите эту опцию
"remote.dontShowPortAlreadyInUseError": false

Шаг 3: устанавливаем rcode на нужный сервер. Реализаций rcode великое множество на различных языках программирования, и если вы хотите какую-то специфическую — на странице расширения Remote VSCode перечислены они все. Я же использую самую универсальную реализацию — на чистом Bash (который есть на серверах почти всегда). Для её установки на сервере выполняем следующую последовательность команд:

sudo wget -O /usr/local/bin/rcode \
https://raw.github.com/aurora/rmate/master/rmate
chmod a+x /usr/local/bin/rcode

Настоятельно рекомендую проверить содержимое файла /usr/local/bin/rcode, прежде чем запускать его.

Шаг 4: На локальной машине редактируем настройки соединения по SSH с нужным сервером, чтобы Port Forwarding, через который и будет работать rcode, запускался автоматически. В файл ~/.ssh/config/ добавляем следующие строки:

Host хостнейм.удаленного.сервера
Port 22
User ваш_пользователь
ForwardAgent yes
RemoteForward 52698 127.0.0.1:52698

Две последних строки включают Port Forwarding для выбранного сервера.

Перезапускаем Visual Studio Code, перезапускаем SSH-соединение, и с помощью команды rcode пробуем открыть файл в локальном редакторе. Скорее всего, файл откроется, и вы сможете его нормально редактировать. Помните — если соединение с сервером потеряно, файл не сохранится даже после переподключения, его придётся сохранять вручную.

Если при попытке запуска rcode возникает ошибка «команда не найдена», добавьте в .bashrc своего пользователя следующую строку:

export PATH="$PATH:/usr/local/bin"

Если у вас не Bash, то вы а) наверняка знаете об этом и б) сами можете добавить в свои настройки шелла эквивалент команды выше

2017   Visual Studio Code   Инструкции

Dynamic DNS у Hurricane Electric

Небольшая заметка на тему того, как настраивать Dynamic DNS у Hurrican Electric. Постоянно забываю, а у них на сайте это посмотреть неочевидно (надо разлогиниться, чтобы увидеть инструкцию). Прелесть HE заключается в том, что они предоставляют сервис динамического DNS бесплатно — я им пользуюсь вот уже 4 года для различных целей, и он меня не подводил.

Для начала, конечно, нужно делегировать домен или поддомен на NS-сервера HE — ns1.he.net, ns2.he.net (есть ещё ns3, ns4 и ns5). Делегация занимает плюс-минус 72 часа, и после неё можно приступать к настройке.

Последовательность действий такая:

  1. Входим в панель редактирования домена (карандашик у свежедобавленного домена в списке)
Список доменов
  1. Добавляем новую A-запись, которую хотим сделать динамической, нажатием кнопки «New A». Нас встретит диалоговое окно, в котором нужно ввести имя поддомена и нажать галочку «Enable entry for dynamic dns». По нажатию этой галочки подставляется автоматически текущий IP адрес, с которого производится работа с веб-интерфейсом. После этого нажимаем «Submit»
IP-адрес тут указан неправильный (ага, стану я вам палить свой домашний айпишник…)
  1. В списке DNS-записей теперь существует наша новая запись с динамическим IP. Строка с ней окрашена в бирюзовый цвет. У неё есть кнопка обновления — она нам понадобится для генерации ключа, с помощью которого мы будем автоматически обновлять запись.
Возможно, это не бирюзовый цвет, но мне он кажется таковым
  1. В появившемся окне нужно нажать на кнопку «Generate a key». Ключ можно ввести самостоятельно, или сгенерировать внешними приложениями — я рекомендую или пользоваться встроенным генератором HE, или сгенерировать ключ в 1Password. Ключ следует воспринимать, как пароль, причём очень важный — знающий его человек может перенаправить ваш поддомен на любой IP-адрес!
Окно создания ключа для DDNS-записи
  1. Ключ записан (и спрятан), теперь можно настраивать «клиент» динамического обновления. «Клиент» в кавычках — потому что никакого специального ПО устанавливать не нужно, данный DDNS обновляется с помощью curl. Кроме того, HE говорит, что их система совместима с ddclient или другим ПО, совместимым с DynDns, но я это не проверял.
  2. Схема URL для обновления IP такая:
http://[доменное имя]:[сгенерированный ключ]@dyn.dns.he.net/nic/update?hostname=[доменное имя]
  1. Запрос curl на сформированный таким образом адрес даст один из ответов
    • badauth — ошибка авторизации (неправильное имя или пароль)
    • nochg  — для данной записи IP-адрес не изменился
    • good <новый IP-адрес> — IP-адрес обновлён
  2. Запросы к HE разрешены не чаще, чем раз в час. Это не техническое, а правовое ограничение: за спам их системы раз в 5-10 минут аккаунт могут заблокировать.

После получения и проверки возможности обновления IP-адреса можно настроить ddclient, в кронтаб положить обновление раз в час или каким-либо образом триггерить обновление при начале соединения с интернетом (во многих роутерах поддержка динамического DNS есть). Я обновление настроил на роутере, вы же в данном вопросе вольны решать сами, каким образом и как часто обновляться.

2017   Инструкции

TFTP в macOS

В macOS встроен сервер TFTP — протокола, по которому получают по сети файлы перепрошивки многие устройства (например, мой Keenetic Giga III). Данный сервер почти не требует настройки, но есть некоторые тонкости, о которых следует знать.

Начиная с macOS Sierra, TFTP-сервер не запускается с plist-файлом сервиса по умолчанию. На форуме поддержки Apple я нашёл такое решение: в файл /System/Library/LaunchDaemon/tftpd.plist необходимо в секцию Listeners добавить пару ключей, дабы TFTP-сервер не пытался подняться на IPv6-интерфейсе. Итоговый файл выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>Label</key>
    <string>com.apple.tftpd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/libexec/tftpd</string>
        <string>-i</string>
        <string>/private/tftpboot</string>
    </array>
    <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <true/>
    </dict>
    <key>InitGroups</key>
    <true/>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
        <dict>
            <key>SockFamily</key> # <-- добавить это -->
            <string>IPv4</string> # <-- и вот это -->
            <key>SockServiceName</key>
            <string>tftp</string>
            <key>SockType</key>
            <string>dgram</string>
        </dict>
    </dict>
</dict>
</plist>

Дальше можно запустить TFTP-сервер командами

$ sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
$ sudo launchctl start com.apple.tftpd

Кроме того, есть GUI-утилита для запуска и отслеживания TFTP-сервера — TftpServer. Она позволяет перезапускать TFTP-сервер, видеть, что у него в корне за файлы расположены, и смотреть журнал сервера.

2017   macOS   Инструкции

Как добавлять ESX-инструменты в Лоджик

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

Из чего состоит ESX-инструмент:

  1. Сам .esx-файл, который содержит инструкцию для Logic Pro, как использовать этот инструмент;
  2. Файлы сэмплов. Обычно кучка wav-файлов или что-то в этом духе.

Итак, установка:

  • Идём в /Library/Application Support/Logic — проще всего это сделать из терминала командой
open /Library/Application\ Support/Logic
  • Копируем файл с расширением .esx в подпапку Sampler Instruments
  • Копируем папку со звуками в подпапку ESX Factory Samples
  • Запускаем Logic Pro X.
  • Создаём новый проект, в нём выбираем какой-нибудь ESX24-инструмент (например, Boesendorfer Grand Piano)
  • Заходим в настройки ESX24, и там выбираем наш свежезагруженный инструмент.
  • Играем звуками нового инструмента. Всё!
2017   Logic Pro X   macOS   Инструкции   Музыка

Netatalk 3 для Ubuntu 16.04 LTS

TL;DR: Для тех, кто создаёт свой домашний сервер на Ubuntu 16.04, и хочет на нём держать тайм-машину, я собрал пакет Netatalk третьей версии, которого для этой версии бубунты ещё просто никто до меня не собирал. Если желаете использовать — вот ссылка на PPA.

Установка:

# add-apt-repository ppa:causelove/crappysoftware
# apt-get update
# apt-get install netatalk

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

Как собрать netatalk самому, если вы параноик, читаем вот здесь.

2017   Netatalk   Ubuntu   Инструкции
Ранее Ctrl + ↓