Enter passphrase for /.ssh/id_rsa:

На днях, после перезагрузки iMac, при выполнении команд git’а на pull или push стало появляться сообщение о необходимости ввода пароля для секретного ssh-ключа:

$ git push origin dev
Enter passphrase for key '/Users/user/.ssh/id_rsa':

Чтобы каждый раз не вводить пароль, нужно выполнить следующие команды:

eval $(ssh-agent)
ssh-add

Просмотр истории команд в Bash

Чтобы просмотреть список ранее введенных команд в терминал, необходимо скомандовать:

history

Чтобы найти нужную команду в истории, можно воспользоваться grep:

history | grep <что ищем>

Чтобы выполнить команду из истории, нужно написать восклицательный знак и номер команды из списка истории. Пример:

!10

Более подробная статья о командах истории в Bash: ссылка

Рекурсивное удаление файлов .DS_Store

Файлы .DS_Store создаются автоматически в операционной системе Mac OS и служат для хранения пользовательских параметров директории. По умолчанию файлы, начинающиеся на «точку», не отображаются в проводнике, поэтому они  могут быть незаметно для пользователя скопированы в другие места (к примеру, при копировании на удаленный сервер, где им там точно не место).

Чтобы рекурсивно подчистить директории от файлов .DS_Store, нужно выполнить следующую команду:

find . "-name" ".DS_Store" -exec rm {} \;

Выполнение команд от имени другого пользователя

Если имеется доступ к sudo, то можно выполнять команды от имени другого пользователя через опцию -u.

Пример выполнения команды от имени www-data:

sudo -u www-data echo "hello world!"

Удаление истории команд в Bash

Чтобы полностью удалить историю выполнения команд в терминале, достаточно выполнить:

history -cw

[Apache] Разрешить доступ по User-Agent

Чтобы разрешить доступ на сервер только для устройств с определенным User-Agent, можно создать соответствующее правило в файле .htaccess.

Пример ниже разрешает доступ только для LG Smart TV, которые в строке User-Agent имеют слова LGE, NetCast или LG Browser:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !(LG\%20Browser|LGE|NetCast) [NC]
RewriteRule ^ - [F,L]

Для всех остальных устройств будет отображена ошибка «403 Forbidden».

[Решение] To open “Android Studio” you need to install the legacy Java SE 6 runtime

Если в Mac OS вы установили более новую версию Java (скажем, 1.7), чем стоит по умолчанию (1.6), то возможно, что при запуске Android Studio появится следующее сообщение:

To open “Android Studio” you need to install the legacy Java SE 6 runtime.
Click “More Info…” to visit the legacy Java SE 6 download website.

Решение:

В директории /Applications/Android Studio/Contents открываем файл Info.plist, находим строчку <key>JVMVersion</key> и меняем версию <string>1.6*</string> на <string>1.7*</string>.

To open Android Studio you need to install the legacy Java SE 6 runtime

Данный трюк подходит для всех продуктов JetBrains, основанных на IntelliJ IDEA.

[macOS] Как очистить DNS-кэш

Для Mac OS X 10.6 (Snow Leopard) и выше необходимо выполнить в терминале следующую команду:

sudo dscacheutil -flushcache

Зачем нужно сбрасывать локальный DNS-кэш?

OS X поддерживает локальный кэш DNS запросов в течение времени, определенного DNS-сервером, но иногда бывает необходимо вручную сбросить кэш и заново запросить данные у DNS-сервера. Например, это может пригодиться в тех случаях, если изменилась или добавилась новая запись на сервере.

OS X 10.9 (Mavericks) -> 10.10 (Yosemite)

В этот четверг, во время очередной презентации Apple, было объявлено о том, что версия OS X 10.10 (Yosemite) стала доступна для загрузки всем желающим.

Не став долго ждать, решил обновить свой iMac (late 2012) до Yosemite уже прямо сейчас. Весь процесс установки занял чуть более 40 минут и прошел без каких-либо нештатных ситуаций.

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

OS X 10.10 (Yosemite)

К счастью, все используемые мною приложения продолжили корректно работать и в Yosemite, хотя поначалу на этот счет и были опасения.

Единственное, что отказалось работать, так это MacPorts:

Error: Current platform "darwin 14" does not match expected platform "darwin 13"
Error: If you upgraded your OS, please follow the migration instructions: https://trac.macports.org/wiki/Migration
OS platform mismatch
while executing
"mportinit ui_options global_options global_variations"
Error: /opt/local/bin/port: Failed to initialize MacPorts, OS platform mismatch

Однако на официальном сайте уже лежит последняя, адаптированная под OS X 10.10 версия, и после ее установки, конечно, все заработало.

[macOS] А так ли нужен App Store?

Как и в случае с мобильными платформами, App Store для Mac OS нужен для того, чтобы предоставлять пользователям удобный доступ к поиску и загрузки приложений.

Однако, в случае iOS, где App Store является единственным официальным способом загрузки приложений, для Mac’ов положение дел во многом противоположное — основная масса приложений доступна для скачивания с сайтов-разработчиков. Небольшая часть из этих приложений дублируется и в App Store, однако зачастую магазин приложений содержит устаревшие, не обновленные версии, в противовес сайту разработчиков.

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

В отличии от мобильного App Store, разработчики для ПК не особо стремятся попасть в магазин приложений для Mac OS, от сюда и небольшое количество доступных программ. Тем не менее App Store все равно есть и будет хорошим источником трафика для разработчика, особенно если приложение выбрано редакцией или просто находится на лидирующих позициях в своей категории.

В свою очередь я изредка использую App Store в качестве дайджеста «Что новенького?», и в большей мере просто как инструмент обновления системы.