<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Apple Geek &#187; system</title>
	<atom:link href="http://theapplegeek.ru/archives/tag/system/feed" rel="self" type="application/rss+xml" />
	<link>http://theapplegeek.ru</link>
	<description>Чему ты научился сегодня?</description>
	<lastBuildDate>Fri, 30 Jul 2010 13:48:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Spinning Beachball of Death</title>
		<link>http://theapplegeek.ru/archives/4078</link>
		<comments>http://theapplegeek.ru/archives/4078#comments</comments>
		<pubDate>Tue, 29 Jun 2010 08:18:21 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=4078</guid>
		<description><![CDATA[С Mac OS X я работаю сравнительно недолго &#8211; начал с 10.4. И знакомство было очень практическое, без какой-либо теоретической подготовки вроде прочтения книги Девида Пога. Конечно же, я тщательно штудировал всю информацию, которая мне попадалась, и, учитывая мой большой опыт работы с разнообразными Unix&#8217;ами от IRIX до Linux, я вполне ориентируюсь в Mac OS [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2010/06/01_sbbod-thumb1.png" height="152" align="right" width="160" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>С Mac OS X я работаю сравнительно недолго &#8211; начал с 10.4. И знакомство было очень практическое, без какой-либо теоретической подготовки вроде прочтения книги <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://my.safaribooksonline.com/9781449377243" >Девида Пога</a></noindex>. Конечно же, я тщательно штудировал всю информацию, которая мне попадалась, и, учитывая мой большой опыт работы с разнообразными Unix&#8217;ами от IRIX до Linux, я вполне ориентируюсь в Mac OS X.</p>
<p>Но некоторые базовые вещи остались вне зоны моего внимания. В этом как раз и недостаток несистемного обучения. Например, оказалось, что я не знаю, как называется круглая радужная иконка, появляющаяся, когда приложение перестаёт взаимодействовать с системой и отвечать на сообщения.</p>
<p>Конечно же, я нашёл <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.macworld.com/article/151583/2010/05/spinningbeachballofdeath.html?lsrc=rss_main" >нужную информацию</a></noindex> и теперь поделюсь ею (скорее всего очень очевидной) с вами. Есть несколько названий.</p>
<p><span id="more-4078"></span></p>
<h3>Официальное название</h3>
<p>Согласно <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/UserExperience/Conceptual/AppleHIGuidelines/" >Apple Human Interface Guidelines</a></noindex> указатель называется &#8220;Spinning Wait Cursor&#8221;. Он отображается автоматически WindowServer&#8217;ом когда приложение не может обработать все получаемые сообщения более 2-4 секунд.</p>
<h3>Общепринятые название</h3>
<p>В англоязычном Интернет есть достаточно <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Spinning_wait_cursor" >много названий</a></noindex>:</p>
<ol>
<li>spinning wheel of death (вращающееся колесо смерти)</li>
<li>beach ball of death (пляжный мяч смерти)</li>
<li>hypnowheel (гипноколесо)</li>
<li>spinning pizza (вращающаяся пицца)</li>
<li>spinning pinwheel (близко к юла)</li>
<li>pinwheel of death (юла смерти)</li>
<li>rainbow wheel of death (радужное колесо смерти)</li>
<li>rainbow ball of doom (радужный мяч судьбы)</li>
<li>the beach ball of hell (адский пляжный мяч)</li>
<li>spinning beach ball of death (вращающийся мяч смерти)</li>
<li>marble of doom (хммм&#8230; мрамор обречёности?)</li>
</ol>
<p>Часть &#8220;death&#8221; пошла от Windows BSOD (Blue Screen of Death) &#8211; индикатор в Mac OS X говорит о предсмертном состоянии конкретной программы, но не системы в целом. Более точным аналогом Windows BSOD является <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://support.apple.com/kb/HT1392" >Kernel Panic</a></noindex>.</p>
<p>Больше всего распространены названия &#8220;Spinning Beach Ball of Death&#8221; (SBBOD) или &#8220;Marble of Doom&#8221;.</p>
<p>Что делать, если SBBOD зачастил? Выполнить рекомендации, припедённые в <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://reviews.cnet.com/8301-13727_7-10334440-263.html?tag=mfiredir" >Mini-Tutorial: The dreaded spinning pinwheel; Avoiding unresponsiveness/slow-downs in Mac OS X</a></noindex>.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/4078/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>О пользе Console.app</title>
		<link>http://theapplegeek.ru/archives/3812</link>
		<comments>http://theapplegeek.ru/archives/3812#comments</comments>
		<pubDate>Tue, 18 May 2010 08:25:01 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3812</guid>
		<description><![CDATA[Недавно ставил какой-то странный софт (уже не припомню, какой именно), и в процессе установки пришлось установить агент Akamai (кто не знает &#8211; это Content Delivery Network). Потом заметил, что система начала слегка тормозить, но я не связал эти два факта. Но вот по какой-то необходимости зашёл посмотреть системные логи в Console.app и увидел огромное количество [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно ставил какой-то странный софт (уже не припомню, какой именно), и в процессе установки пришлось установить агент Akamai (кто не знает &#8211; это Content Delivery Network).<br />
Потом заметил, что система начала слегка тормозить, но я не связал эти два факта. Но вот по какой-то необходимости зашёл посмотреть системные логи в Console.app и увидел огромное количество записей вида:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/05/02_akamai-full.png"  class="image-link" rel="lightbox[3812]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/05/02_akamai-thumb.png" height="394" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-3812"></span></p>
<p>Ошибка возникала при запуске сервиса launchd:</p>
<pre>
<small>com.apple.launchd.peruser.501[148]	(com.akamai.client.plist[40962]) posix_spawn("/Applications/Akamai/loader.pl", ...): No such file or directory</small>
</pre>
<p>&#8220;peruser&#8221; с id 501 (мой uid) закономерно направил меня в ~/Library/LaunchAgents и обратил внимание на com.akamai.client.plist:</p>
<pre>
$ ls ~/Library/LaunchAgents
<small>au.id.Tyson.AutoRate.LaunchAgent.plist
com.apple.FolderActions.enabled.plist
com.apple.MobileMeSyncClientAgent.plist
com.google.GoogleContactSyncAgent.plist
de.metaquark.appfresh.plist
<b>com.akamai.client.plist</b>
com.apple.FolderActions.folders.plist
com.apple.SafariBookmarksSyncer.plist
com.google.keystone.agent.plist
ws.agile.1PasswordAgent.plist</small>
</pre>
<p>Удаление файла com.akamai.client.plist не приведёт к немедленному прекращению попыток его запустить. А перезагрузка системы &#8211; не наш путь. Нужно просто удалить сервис через launchctl.</p>
<p>Посмотрим информацию по сервису (да, это он, ведь в логах была ошибка о недоступности loader.pl):</p>
<pre>
$ launchctl list com.akamai.client.plist
<small>{
	"Label" = "com.akamai.client.plist";
	"LimitLoadToSessionType" = "Aqua";
	"OnDemand" = false;
	"LastExitStatus" = 256;
	"TimeOut" = 30;
	"ProgramArguments" = (
		"/Applications/Akamai/loader.pl";
	);
};</small>
</pre>
<p>Удаляем сервис:</p>
<pre>
$ launchctl remove com.akamai.client.plist
</pre>
<p>После этого наслаждаемся отсутствием мусора в Console.app. Как ни странно, но торможение прекратилось.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3812/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Нахождение процесса, заблокировавшего файл (lsof)</title>
		<link>http://theapplegeek.ru/archives/3779</link>
		<comments>http://theapplegeek.ru/archives/3779#comments</comments>
		<pubDate>Wed, 21 Apr 2010 09:08:53 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3779</guid>
		<description><![CDATA[Сегодня я покажу простой приём поиска процесса, который блокирует файлы, из-за чего их невозможно удалить. Ситуация &#8211; я начал конвертировать видео для iPad, но процесс занял больше времени, чем я предполагал и мне пришлось его отменить. Остался файл с результатом, но он незавершён и, конечно же, я решил его удалить. Но попытка не удалась: Что [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня я покажу простой приём поиска процесса, который блокирует файлы, из-за чего их невозможно удалить.</p>
<p>Ситуация &#8211; я начал конвертировать видео для iPad, но процесс занял больше времени, чем я предполагал и мне пришлось его отменить. Остался файл с результатом, но он незавершён и, конечно же, я решил его удалить. Но попытка не удалась:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/04/01_use-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/04/01_use-thumb.png" height="200" width="479" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Что делать? Всё просто &#8211; я зашёл в Terminal.app и с помощью команды lsof нашёл процесс, который заблокировал файл:</p>
<pre>
$ lsof Downloads/File-HQ-ViDEO.m4v
<small>COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
ffmpeg  <b>84670</b> ctrld    4w   REG   14,2 32324969 13127063 Downloads/File-HQ-ViDEO.m4v</small>
</pre>
<p><span id="more-3779"></span></p>
<p>Конвертер видео при прерывании конвертации не убил процесс ffmpeg (идентификатор процесса или же PID указан во второй колонке). Я это сделал вручную:</p>
<pre>
$ kill 84670
</pre>
<p>После чего файл m4v нормально удалился.</p>
<p>Вы можете посмотреть другие примеры использования lsof в моих статьях &#8220;<a href="http://theapplegeek.ru/archives/790" >Находим открытые файлы в каталоге</a>&#8221; и &#8220;<a href="http://theapplegeek.ru/archives/765" >Идентификация через Terminal.app сетевых сервисов (lsof)</a>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3779/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Решение проблемы &#8220;MDS Error: unable to create user DBs&#8221;</title>
		<link>http://theapplegeek.ru/archives/3686</link>
		<comments>http://theapplegeek.ru/archives/3686#comments</comments>
		<pubDate>Thu, 08 Apr 2010 13:21:46 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3686</guid>
		<description><![CDATA[Что делать, если у вас система стала странно себя вести? Можно запустить Onyx и сделать принудительную профилактику, это обычно помогает. Но можно поступить обдуманнее и для начала изучить сообщения в системных логах, запустив программу Console (/Application/Utilities): И, немного подумав, провести обслуживание системы вручную. Приведённый выше лог я показал только для иллюстрации &#8211; в моих логах [...]]]></description>
			<content:encoded><![CDATA[<p>Что делать, если у вас система стала странно себя вести?</p>
<p>Можно запустить <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.apple.com/downloads/macosx/system_disk_utilities/onyx.html" >Onyx</a></noindex> и сделать принудительную профилактику, это обычно помогает.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/04/01_mdserr-full.png"  class="image-link" rel="lightbox[3686]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/04/01_mdserr-thumb.png" height="422" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-3686"></span></p>
<p>Но можно поступить обдуманнее и для начала изучить сообщения в системных логах, запустив программу Console (/Application/Utilities):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/04/02_mdserr-full.png"  class="image-link" rel="lightbox[3686]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/04/02_mdserr-thumb.png" height="310" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>И, немного подумав, провести обслуживание системы вручную.</p>
<p>Приведённый выше лог я показал только для иллюстрации &#8211; в моих логах было много ошибок &#8220;MDS Error: unable to create user DBs&#8221;:</p>
<pre>
<small>03.04.2010 13:03:56	/Applications/Mail.app/Contents/MacOS/Mail[413]	MDS Error: unable to create user DBs in /var/folders/oB/oBZBhgqIHRi30skYtk6xT++++TI/-Caches-//mds
03.04.2010 13:03:23	/System/Library/Frameworks/PubSub.framework/Versions/A/Resources/PubSubAgent.app/Contents/MacOS/PubSubAgent[395]	MDS Error: unable to create user DBs in /var/folders/oB/oBZBhgqIHRi30skYtk6xT++++TI/-Caches-//mds
03.04.2010 13:00:14	/Applications/Blogo.app/Contents/MacOS/Blogo[368]	MDS Error: unable to create user DBs in /var/folders/oB/oBZBhgqIHRi30skYtk6xT++++TI/-Caches-//mds</small>
</pre>
<p>Такая проблема встречается <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://discussions.apple.com/thread.jspa?threadID=2206733&#038;start=15&#038;tstart=120" >не только у меня</a></noindex>, и в обсуждении я нашёл показательный метод решения, порекомендованный Alexander Henket&#8217;ом:</p>
<ol>
<li>Restart in Single User Mode (CMD+Option+S)</li>
<li>Repair filesystem as indicated on screen using fsck (took three runs)</li>
<li>Mount filesystem as indicated on screen using mount</li>
<li>Go to /Library/Caches and do rm -rf *</li>
<li>Go to my home folder /Users/&#8230;/Library/Caches and do rm -rf *</li>
<li>Remove Spotlight folder using rm -rf /.Spotlight-V100</li>
<li>Go to /var/folders and do rm -rf *</li>
<li>Reboot normally using exit or reboot command as indicated on screen</li>
</ol>
<p>После выполнения рекомендаций ошибки, долго донимающие меня, исчезли. Вероятно Onyx тоже починил проблему, но я не уверен в том, что он удаляет каталоги из /var/folders. Поэтому немного посмотреть логи и поискать рекомендации никогда не помешает.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3686/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Как найти нужный параметр defaults</title>
		<link>http://theapplegeek.ru/archives/3678</link>
		<comments>http://theapplegeek.ru/archives/3678#comments</comments>
		<pubDate>Tue, 06 Apr 2010 11:56:57 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[system preferences]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3678</guid>
		<description><![CDATA[Не правда ли, когда вам попадался совет, в котором нужно было изменять какую-либо переменную defaults, вы испытывали интерес &#8211; а как эта переменная была найдена? Например, &#8220;defaults read -globalDomain com.apple.mouse.scaling&#8220;? О поиске недокументированных параметров я говорить не буду, если их нет в соответствующих файлах plist, то нужно копаться в коде программ и размышлять. Я хочу [...]]]></description>
			<content:encoded><![CDATA[<p>Не правда ли, когда вам попадался совет, в котором нужно было изменять какую-либо переменную <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/defaults.1.html" >defaults</a></noindex>, вы испытывали интерес &#8211; а как эта переменная была найдена?</p>
<p>Например, &#8220;defaults read -globalDomain <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.papasha.kiev.ua/2010/03/blog-post_26.html" >com.apple.mouse.scaling</a></noindex>&#8220;?</p>
<p>О поиске недокументированных параметров я говорить не буду, если их нет в соответствующих файлах plist, то нужно копаться в коде программ и размышлять.</p>
<p>Я хочу показать, как можно сопоставить параметр в настройках системы (или программы) значению, доступному через механизм defaults.</p>
<p><span id="more-3678"></span></p>
<p>Получить полное содержимое всех доменов defaults можно командой:</p>
<pre>
$ defaults read
</pre>
<p>Если вы знаете, что ищете, то можно поискать параметр через grep или же открыв результат в текстовом редакторе, и там сделать поиск.</p>
<pre>
$ defaults read | grep mouse | more
"com.apple.mouse.scaling" = 2;
</pre>
<p>Если же вы не имеете понятия, что именно искать, но знаете, где меняется параметр в настройках, то вам пригодится мой метод.</p>
<p>Пару дней назад Арсений задал мне вопрос о скорости автоповтора при нажатии клавиши на клавиатуре. Эти параметры находятся в System Preferences/Keyboard:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/04/02_def-full.png"  class="image-link" rel="lightbox[3678]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/04/02_def-thumb.png" height="452" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Я захотел найти, как их можно поменять через defaults.</p>
<p><i>Много лет назад я активно расправлялся с играми под MS DOS, находя счётчики жизни резидентным дебагером (уже не помню его название). Суть сводилась к снятию дампа памяти до изменения счётчика, потом после его изменения и сравнение. Если данных получалось слишком много, то я повторял процедуру. Всё просто.</i></p>
<p>Здесь применим тот же подход. Снимаю дамп всех параметров:</p>
<pre>
$ defaults read > dump1.txt
</pre>
<p>Сдвигаю нужные мне ползунки в настройках. Жду (данные сбрасываются на диск не в ту же секунду, я для гарантии жду секунд 10-20). Снова снимаю дамп:</p>
<pre>
$ defaults read > dump2.txt
</pre>
<p>Сравниваем файлы diff&#8217;ом и находим нужные нам данные:</p>
<pre>
$ diff -u dump1.txt dump2.txt
-        InitialKeyRepeat = 15;
-        KeyRepeat = 2;
+        InitialKeyRepeat = 94;
+        KeyRepeat = 60;
</pre>
<p>Теперь нужно найти домен, к которому относится параметр, для чего открываем dump1.txt в редакторе и ищем, куда относится InitialKeyRepeat. Я сделал это через grep:</p>
<pre>
$ cat dump1.txt | grep -250 InitialKeyRepeat | more
"Apple Global Domain" =     {
...
</pre>
<p>Домен найден, параметр известен, проверяем:</p>
<pre>
$ defaults read "Apple Global Domain" KeyRepeat
2
$ defaults read "Apple Global Domain" InitialKeyRepeat
15
</pre>
<p>Поменять параметр можно так (я не экспериментировал и значение привожу &#8220;с потолка&#8221;):</p>
<pre>
$ defaults write "Apple Global Domain" KeyRepeat 3
</pre>
<p>Вуаля!</p>
<p>Если вас заинтересовала тема defaults, вы можете почитать другие мои статьи на эту тему:</p>
<ul>
<li><a href="http://theapplegeek.ru/archives/1026" >Работа с пользовательскими настройками из консоли (defaults)</a></li>
<li><a href="http://theapplegeek.ru/archives/1411" >База данных скрытых настроек (defaults)</a></li>
<li><a href="http://theapplegeek.ru/archives/2342" >Немного о Login Items</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3678/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Установка Midnight Commander с использованием Homebrew</title>
		<link>http://theapplegeek.ru/archives/3579</link>
		<comments>http://theapplegeek.ru/archives/3579#comments</comments>
		<pubDate>Tue, 16 Mar 2010 16:03:33 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3579</guid>
		<description><![CDATA[Продолжу увлекательную эпопею установки Midnight Commander под Mac OS X. На этот раз с применением системы Homebrew, которую мы поставили в прошлый раз. Штатный Midnight Commander в Homebrew достаточно старый &#8211; версия 4.6.1 против 4.7.1. Обновление не помогло: $ brew update ... Initialized empty Git repository in /usr/local/.git/ From git://github.com/mxcl/homebrew * branch master -> FETCH_HEAD [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжу увлекательную эпопею <a href="http://theapplegeek.ru/archives/1180" >установки Midnight Commander под Mac OS X</a>. На этот раз с применением системы Homebrew, которую <a href="http://theapplegeek.ru/archives/3570" >мы поставили в прошлый раз</a>.</p>
<p>Штатный Midnight Commander в Homebrew достаточно старый &#8211; версия 4.6.1 против 4.7.1. Обновление не помогло:</p>
<pre>
$ brew update
...
Initialized empty Git repository in /usr/local/.git/
From git://github.com/mxcl/homebrew
 * branch            master     -> FETCH_HEAD
Updated Homebrew from TAIL to 87869622.
<b>No formulae were updated.</b>
</pre>
<p><span id="more-3579"></span></p>
<p>Решаю сделать свой пакет (формулу установки). Для этого воспользовался документацией &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://wiki.github.com/mxcl/homebrew/formula-cookbook" >Formula Cookbook</a></noindex>&#8220;.</p>
<p>Иду на сайт Midnight Commander в раздел <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.midnight-commander.org/downloads/" >Downloads</a></noindex>. Ищем последнюю версию в формате tar.bz2:</p>
<pre>
34 <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.midnight-commander.org/downloads/34" >mc-4.7.1.tar.bz2</a></noindex> Midnight Commander v4.7.1 (latest)
</pre>
<p>Создаю формулу, она откроется в TextMate:</p>
<pre>
$ brew create http://www.midnight-commander.org/downloads/34
Formula name [34]: mc
Warning: Formula midnight-commander is aliased to mc.
Please check if you are creating a duplicate.
</pre>
<p>md5-сумму я получил командой md5, предварительно списав исходники:</p>
<pre>
$ md5 ~/Downloads/mc-4.7.1.tar.bz2
<small>MD5 (/Users/ctrld/Downloads/mc-4.7.1.tar.bz2) = 5bd69a47b4a0bd6904623a50863b1eeb</small>
</pre>
<p>Сначала я экспериментировал с mc.rb, а потом его удалил и заменил файл /usr/local/Library/Formula/midnight-commander.rb, чтобы не было дублей (кстати, для вставки кода я решил попробовать сервис <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://gist.github.com/gists" >gist.github</a></noindex>):</p>
<p><script src="http://gist.github.com/334136.js"></script></p>
<p>Попробовал поставить с включенными опциями отладки:</p>
<pre>
$ brew install -vd mc
</pre>
<p>Поставилось:</p>
<pre>
$ mc -V
<small>GNU Midnight Commander 4.7.1
Virtual File System: tarfs, extfs, cpiofs, ftpfs, fish
With builtin Editor
Using the ncurses library
With subshell support as default
With support for background operations
With mouse support on xterm
With internationalization support
With multiple codepages support
Data types: char 8 int 32 long 64 void * 64 off_t 64 ecs_char 8</small>
</pre>
<p>С русскими буквами проблем нет:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/03/01-mchomebrew-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/03/01-mchomebrew-thumb.png" height="382" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Если нужно пакет удалить, то это делается просто и быстро:</p>
<pre>
$ brew uninstall mc
<small>Uninstalling /usr/local/Cellar/mc/4.7.1...</small>
</pre>
<p>В общем на примере установки Midnight Commander я для себя понял, что если нравится копаться с ./configure и не ставить всяческий хлам, то Homebrew очень даже неплохой пакет. К сожалению, готовых формул для установки приложений пока по сравнению с MacPorts и Fink маловато &#8211; например, того же php нет.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3579/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Менеджер пакетов Homebrew</title>
		<link>http://theapplegeek.ru/archives/3570</link>
		<comments>http://theapplegeek.ru/archives/3570#comments</comments>
		<pubDate>Sun, 14 Mar 2010 16:36:29 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3570</guid>
		<description><![CDATA[Мир технологий подвержен влиянию трендов. Как для web-сервисов сейчас трендом является NoSQL, так для любителей Unix под Mac &#8211; Homebrew. Homebrew &#8211; это новый и многообещающий менеджер пакетов. MacPorts мне уже давно не нравится тем, что он начинает тащить слишком много всего, что и так есть штатно в системе (например, perl). Продемонстрирую красноречивый пример: $ [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2010/03/01_homebrew1-thumb1.png" height="150" align="right" width="111" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Мир технологий подвержен влиянию трендов. Как для web-сервисов сейчас трендом является NoSQL, так для любителей Unix под Mac &#8211; Homebrew.</p>
<p>Homebrew &#8211; это новый и многообещающий менеджер пакетов. MacPorts мне уже давно не нравится тем, что он начинает тащить слишком много всего, что и так есть штатно в системе (например, perl).</p>
<p>Продемонстрирую <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://news.ycombinator.com/item?id=1189274" >красноречивый пример</a></noindex>:</p>
<pre>
$ port deps git-core
    Full Name: git-core @1.7.0.2+doc
    Runtime Dependencies: rsync, perl5, p5-error
    Library Dependencies: curl, zlib, openssl, expat, libiconv
</pre>
<p>При установке пакета поставятся rsync, который <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.shortcut.ru/2010/02/17/rsync-misbehavior/" >не копирует Resource Forks</a></noindex>, perl5.8.x (при том, что штатно стоят 5.8.9 и 5.10.0), curl, в котором отсутствуют несколько протоколов по сравнению со штатным, и дубли zlib, openssl, expat и libiconv. И при этом отказаться от установки зависимостей простым образом не удастся.</p>
<p>Пока я не могу проанализировать достоинства и недостатки новой системы, это придёт в процессе работы. Пока я не уверен насчёт оперативности обновлений пакетов, но растущее community на github позволяет надеяться на лучшее.</p>
<p>Поэтому расскажу как поставить Homebrew и начать использовать. Мне система понравилась &#8211; такой локальный идеал для помеси Unix-администратора и программиста (git &#038; Ruby).</p>
<p>Страница проекта: &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://mxcl.github.com/homebrew/" >Homebrew. The missing package manager for OS X</a></noindex>&#8220;. Проект размещён <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://github.com/mxcl/homebrew" >на GitHub</a></noindex>. Установка описана <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://wiki.github.com/mxcl/homebrew/installation" >в официальном Wiki</a></noindex>.</a></p>
<p><span id="more-3570"></span></p>
<h2>XCode</h2>
<p><a href="http://theapplegeek.ru/archives/992" >Нужен XCode</a>. Если не понятно зачем, то можно спокойно перестать читать эту статью.</p>
<h2>Желательно удалить каталоги /usr/local/lib и /usr/local/include</h2>
<p>У меня там было почти пусто, разве что стояли библиотеки для cli Handbrake, поэтому спокойно удалил lib и include. Но в вашем случае нужно взвешивать &#8211; например, если вы сами ставили mc, то он перестанет работать. С другой стороны вы потом сможете переставить все пакеты сами. Но это решение целиком за вами, я не буду ничего рекомендовать.</p>
<h2>Удаление MacPorts (необязательно)</h2>
<p>MacPorts я давно не использую, поэтому решил полностью удалить его вместе со всеми пакетами. Как это сделать, вы можете посмотреть детальнее <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://guide.macports.org/chunked/installing.macports.uninstalling.html" >в документации</a></noindex>.</p>
<p>Напомню &#8211; если вам для работы нужны какие-либо пакеты, установленные в MacPorts, или вы используете MySQL, Apache и т.п., то я не рекомендую удалять MacPorts. Вы рискуете остаться без своих инструментов в момент, когда они вам очень будут нужны. Также если вы решили всё-таки переустанавливать всё с нуля, то лучше подождать со сносом до окончания установки новых пакетов в Homebrew &#8211; вы можете столкнуться с тем, что какой-то пакет был скомпилирован с особенной опцией.</p>
<p>Повторяю, я на ноутбуке уже давно не пользовался пакетами MacPorts, поэтому спокойно могу их снести. Для начала я составил список того, что будет нужно переустановить в новой системе:</p>
<pre>
$ port installed
<small>...
corkscrew @2.0_0+darwin_i386 (active)
lftp @4.0.2_0 (active)
lynx @2.8.6rel.5_1+ssl (active)
mtr @0.75_0+darwin_10 (active)
...</small>
</pre>
<p>Удаляю все установленные пакеты:</p>
<pre>
$ sudo port -f uninstall installed
</pre>
<p>Удаляю все следы MacPorts, включая /opt/local:</p>
<pre>
$ sudo rm -rf \
    /opt/local \
    /Applications/DarwinPorts \
    /Applications/MacPorts \
    /Library/LaunchDaemons/org.macports.* \
    /Library/Receipts/DarwinPorts*.pkg \
    /Library/Receipts/MacPorts*.pkg \
    /Library/StartupItems/DarwinPortsStartup \
    /Library/Tcl/darwinports1.0 \
    /Library/Tcl/macports1.0 \
    ~/.macports
</pre>
<p>Готово. Если в этот момент вы вспомнили о важном файле, который вы только что удалили, то вспоминайте, как пользоваться Time Machine. Ведь вы же делаете регулярные бекапы, не так ли?</p>
<h2>Путь в переменных окружения</h2>
<p>Путь к /usr/local/bin должен быть в переменной окружения $PATH. Я помещаю её в ~/.profile:</p>
<pre>
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/bin:/usr/local/sbin:/usr/local/git/bin"
export PATH
</pre>
<p>В определённых случаях может понадобиться модифицировать файл ~/.MacOSX/environment.plist, добавив туда переменную окружения PATH:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/03/02_homebrew-full.png"  class="image-link" rel="lightbox[3570]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/03/02_homebrew-thumb1.png" height="249" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Вы заметили путь к GIT &#8211; я его описывал в статье <a href="http://theapplegeek.ru/archives/3464" >Установка Git под Mac OS X</a>. В установочном пакете есть скрипт, который автоматически правит ~/.MacOSX/environment.plist.</p>
<h2>Установочный скрипт</h2>
<p>Идём на github ruby-скрипт <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://gist.github.com/323731" >install_homebrew.rb</a></noindex>. Он расположен на сервисе gist.github &#8211; это очень интересный сервис для обмена фрагментами кода.</p>
<p>Можно его списывать в браузере (будет сформирован и списан архив tar.gz, его нужно будет развернуть):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/03/03_homebrew-full.png"  class="image-link" rel="lightbox[3570]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/03/03_homebrew-thumb1.png" height="258" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Или же в консоли:</p>
<pre>
$ curl http://gist.github.com/gists/323731/download -o install_homebrew.tar.gz
$ tar xvfz install_homebrew.tar.gz
x gist323731-3535cf3d066ed38db4e99d3f1f4a409fc07eda54/
x gist323731-3535cf3d066ed38db4e99d3f1f4a409fc07eda54/install_homebrew.rb
$ cd gist323731*
$ chmod +x install_homebrew.rb
</pre>
<h2>Установка Homebrew</h2>
<p>Запускаем скрипт под пользователем без всяческого sudo:</p>
<pre>
$ ./install_homebrew.rb
</pre>
<p>С первого раза установить скорее всего не получится, и нужно будет проделать некоторые манипуляции.</p>
<p>Каталог /usr/local мог быть раньше создан с разнообразными неправильными правами, поэтому по результату выполнения скрипта нужно их подправить. Например, если права были 777, то будет сообщение:</p>
<pre>
Press enter to continue
./install_homebrew.rb:44: warning: Insecure world writable dir /usr/local in PATH, mode 040777
</pre>
<p>Нужно прервать скрипт и выполнить команду:</p>
<pre>
$ sudo chmod 755 /usr/local
</pre>
<p>Ещё очень важно поменять группу для /usr/local с wheel на staff:</p>
<pre>
$ sudo chgrp -R staff /usr/local
$ sudo chmod 775 /usr/local/
</pre>
<p>После очередной итерации Homebrew поставился:</p>
<pre>
<small>==> This script will install:
/usr/local/bin/brew
/usr/local/Library/Formula/...
/usr/local/Library/Homebrew/...

Press enter to continue
==> Downloading and Installing Homebrew...
==> Installation successful!
Yay! Now learn to brew:

    brew help</small>
</pre>
<h2>Использование Homebrew</h2>
<p>Поиск:</p>
<pre>
$ brew search git
</pre>
<p>Информация по пакету</p>
<pre>
$ brew info git
</pre>
<p>Установка пакета:</p>
<pre>
$ brew install git
</pre>
<p>Обновление Homebrew (нужен git)</p>
<pre>
$ brew update
</pre>
<p>Список установленных пакетов:</p>
<pre>
$ brew list
</pre>
<p>Удаление пакета:</p>
<pre>
$ brew uninstall mc
</pre>
<p>Список пакетов, для которых есть обновления:</p>
<pre>
$ brew outdated
</pre>
<h2>Мои любимые пакеты</h2>
<p>Восстанавливаю пакеты, которые я использовал в MacPorts.</p>
<pre>
$ brew install mtr
$ brew install corkscrew
$ brew install lftp
$ brew install lynx
</pre>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3570/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Изменение программы &#8220;по умолчанию&#8221; на открытие файлов</title>
		<link>http://theapplegeek.ru/archives/3493</link>
		<comments>http://theapplegeek.ru/archives/3493#comments</comments>
		<pubDate>Tue, 09 Mar 2010 10:55:29 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3493</guid>
		<description><![CDATA[Каждый тип файлов могут открывать несколько программ, установленных на вашем компьютере. Например, у меня пять программ заявили, что могут открывать видео в формате mkv: Конечно же &#8220;по умолчанию&#8221; выбралась самая неудачная программа. Да и остальные три тоже не блещут. Только VLC адекватно справляется с проигрыванием mkv. Поменять &#8220;программу по умолчанию&#8221; просто. Выбираем в Finder файл [...]]]></description>
			<content:encoded><![CDATA[<p>Каждый тип файлов могут открывать несколько программ, установленных на вашем компьютере. Например, у меня пять программ заявили, что могут открывать видео в <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.matroska.org/" >формате mkv</a></noindex>:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/02_defp-full.png"  class="image-link" rel="lightbox[3493]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/02_defp-thumb.png" height="177" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Конечно же &#8220;по умолчанию&#8221; выбралась самая неудачная программа. Да и остальные три тоже не блещут. Только <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.videolan.org/vlc/" >VLC</a></noindex> адекватно справляется с проигрыванием mkv.</p>
<p><span id="more-3493"></span></p>
<p>Поменять &#8220;программу по умолчанию&#8221; просто. Выбираем в Finder файл нужного типа, жмём  ⌘+I:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/03_defp-full.png"  class="image-link" rel="lightbox[3493]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/03_defp-thumb.png" height="539" width="308" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>В секции &#8220;Open with&#8221; выбираем нужную программу:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/04_defp-full.png"  class="image-link" rel="lightbox[3493]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/04_defp-thumb.png" height="167" width="262" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Затем &#8220;Change all&#8230;&#8221;:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/05_defp-full.png"  class="image-link" rel="lightbox[3493]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/05_defp-thumb.png" height="104" width="282" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Соглашаемся в появившемся окне предупреждения и забываем о запуске iSubtitle как о кошмарном сне:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/06_defp-full.png"  class="image-link" rel="lightbox[3493]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/06_defp-thumb.png" height="256" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Где хранится привязка типов файлов к приложениям? В ~/Library/Preferences/com.apple.LaunchServices.plist:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/07_defp-full.png"  class="image-link" rel="lightbox[3493]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/07_defp-thumb.png" height="431" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Как я это узнал? Хотите деталей &#8211; их есть у меня. Для исследования нужна программа <a href="http://theapplegeek.ru/archives/520" >fseventer</a>.</p>
<p>Запускаем программу, включаем слежение за файловой активностью, меняем программу &#8220;по умолчанию&#8221;, выключаем слежение. Видим такую картину:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/08_defp-full.png"  class="image-link" rel="lightbox[3493]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/08_defp-thumb.png" height="362" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Бросаем взгляд на изменившиеся файлы и понимаем, какой именно нам нужен.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3493/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вход в консоль на Mac (&gt;console)</title>
		<link>http://theapplegeek.ru/archives/3315</link>
		<comments>http://theapplegeek.ru/archives/3315#comments</comments>
		<pubDate>Tue, 09 Feb 2010 18:18:52 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3315</guid>
		<description><![CDATA[Бывают вещи, к которым практически нереально прийти самостоятельно, не зная каких-либо предпосылок или истории. Я хочу рассказать об одной такой возможности, которая вероятно раньше была в Mac OS 9 или раньше, но с усовершенствованием графического интерфейса тем не менее осталась. Это даже не рудимент, я бы даже назвал эту возможность &#8220;пасхальным яйцом&#8221;, но она в [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2010/02/01_console-thumb1.png" height="129" align="right" width="160" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Бывают вещи, к которым практически нереально прийти самостоятельно, не зная каких-либо предпосылок или истории. Я хочу рассказать об одной такой возможности, которая вероятно раньше была в Mac OS 9 или раньше, но с усовершенствованием графического интерфейса тем не менее осталась. Это даже не рудимент, я бы даже назвал эту возможность &#8220;пасхальным яйцом&#8221;, но она в некоторых случаях может быть полезной. О полезности позже, а пока я хочу представить уникальную функцию &#8211; в Mac OS X можно войти в ностальгически завораживающий текстовый интерфейс с полным отсутствием графического интерфейса. Да, это классический консольный вход. А узнал я об этой возможности в статье Кирилла Воронина &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.shortcut.ru/2010/02/03/sends-other-unixes-to-devnull/" >Советы пользователям Unix</a></noindex>&#8220;.</p>
<p>Оказалось, что если при входе в систему указать имя пользователя &#8220;>console&#8221; без пароля, то графический интерфейс выгружается и появляется текстовая консоль.</p>
<p>Юниксоидам достаточно этой информации, но если вы не знаете, как этого добиться, скажу, что именно нужно сделать.</p>
<p><span id="more-3315"></span></p>
<p>По умолчанию окно входа в систему показывает список пользователей (либо отсутствует, если включена автозагрузка). Переводим окно входа со списка на форму ручного ввода логина/пароля в System Preferences&#8230;/Accounts/Login Options (не забудьте сделать unlock, нажав изображение замка &#8211; но вы должны иметь права администратора):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/02_console-full.png"  class="image-link" rel="lightbox[3315]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/02_console-thumb.png" height="408" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Также запомните свой username, ведь теперь придётся вводить его вручную, а не выбирать из списка.</p>
<p>После чего нужно сделать Logout из системы и в поле Username ввести &#8220;>console&#8221;:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/03_console-full.png"  class="image-link" rel="lightbox[3315]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/03_console-thumb.png" height="384" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Вуаля:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/02/04_console-full.png"  class="image-link" rel="lightbox[3315]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/02/04_console-thumb.png" height="324" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Для выхода из консоли и возврата в графический интерфейс достаточно выйти из shell, например, набрав &#8220;exit&#8221;.</p>
<p>Теперь о потенциальной полезности. У меня сайт запущен на ноутбуке и ему графический интерфейс не нужен в принципе. Поэтому заходя в консоль можно сэкономить немного памяти. Польза иллюзорна, но тем не менее возможна. А другие примеры можно придумать исходя из необходимости.</p>
<p>Когда я зашёл в консоль, я испытал странную смесь замешательства и восторга, и минут десять развлекался в текстовом консоли. На меня накатила ностальгия по первому Linux, который нам с товарищем ставил Сергей Романенко из Lucky Net. Я не вспомню версию, но похоже, что это был RedHat 2.1. Вспомнил поход за золотыми болванками в какой-то странный институт, где нам за бешенные деньги вручили CD с FreeBSD 2.0-RELEASE, который я установил сам и довёл до уровня хорошо настроенной системы (по заявлению ребят из Viaduk Telecom) за месяц, до этого Unix не видя. Вспомнил восстановление Irix на рабочей станции Indy Silicon Graphics в одном рекламном агенстве &#8211; это было закрепление моего впечатления об универсальности Unix, так как я за несколько часов поднял Irix, до этого его в глаза не видев&#8230; Долгое время я был ярым приверженцем FreeBSD, и лишь пару лет назад по работе переключился на Fedora Core, Ubuntu и Debian. Но импринтинг был настолько силён, что когда я увидел Mac OS X, я понял, что это именно та идеальная операционная система, которую я так давно искал.</p>
<p>Да&#8230; И всё это промелькнуло, когда я зашёл в консоль. Попробуйте, может и у вас пробудятся какие-то давно забытые воспоминания :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3315/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Откуда берутся пункты в контекстном меню Finder</title>
		<link>http://theapplegeek.ru/archives/3071</link>
		<comments>http://theapplegeek.ru/archives/3071#comments</comments>
		<pubDate>Mon, 25 Jan 2010 19:24:29 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3071</guid>
		<description><![CDATA[Когда я не понимаю, откуда в системе берутся какие-либо вещи, мне становится неуютно, и я начинаю разбираться. Например, меня заинтересовало, почему при нажатии Secondary Click в Finder на файле появляются какие-либо нестандартные действия, например, &#8220;Send File To Rapidshare&#8221;: Начинаю искать. Все подобные вещи обычно находятся в иерархии каталогов Library, либо в пользовательской (~/Library), либо общесистемной [...]]]></description>
			<content:encoded><![CDATA[<p>Когда я не понимаю, откуда в системе берутся какие-либо вещи, мне становится неуютно, и я начинаю разбираться. Например, меня заинтересовало, почему при нажатии Secondary Click в Finder на файле появляются какие-либо нестандартные действия, например, &#8220;Send File To Rapidshare&#8221;:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/01-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/01-thumb.png" height="396" width="350" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-3071"></span></p>
<p>Начинаю искать. Все подобные вещи обычно находятся в иерархии каталогов Library, либо в пользовательской (~/Library), либо общесистемной (/Library). Магических вещей в Mac OS X не бывает, и всё описано где-то в каталогах, обрабатываемых системой. Просматриваю сначала пользовательские каталоги.</p>
<p>Конечно же, за меню отвечают плагины, располагающиеся в ~/Library/Contextual Menu Items и /Library/Contextual Menu Items. В пользовательском есть только плагин Dropbox:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/02-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/02-thumb.png" height="298" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Теперь системный:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/03-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/03-thumb.png" height="257" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Да, Speed Download Contextual Menu.plugin подходит под Rapidshare, смотрим его (Secondary Click и Show Package Context):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/04-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/04-thumb.png" height="337" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Cmd+I (Get Info) на файле &#8220;Speed Download Contextual Menu&#8221; в Contents/MacOS показывает полный путь к нему и тип (бинарник):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/05-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/05-thumb.png" height="559" width="345" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Бинарным файлом нас не испугать. Заходим в Terminal.app, переходим в каталог, где находится нужный файл (путь содержит пробелы, поэтому берём его в кавычки):</p>
<pre>
$ cd "/Library/Contextual Menu Items/Speed Download Contextual Menu.plugin/Contents/MacOS"
</pre>
<p>Для того, чтобы убедиться, что это действительно бинарный файл, смотрим его тип:</p>
<pre>
$ file Speed\ Download\ Contextual\ Menu
<small>Speed Download Contextual Menu: Mach-O universal binary with 2 architectures
Speed Download Contextual Menu (for architecture i386):	Mach-O bundle i386
Speed Download Contextual Menu (for architecture ppc):	Mach-O bundle ppc</small>
</pre>
<p>Извлекаем строки:</p>
<pre>
$ strings Speed\ Download\ Contextual\ Menu
<small>com.yazsoft.SpeedDownload
com.yazsoft.speeddownload.contextprefschange
contextshowuploadmenu
advanced_mode
com.yazsoft.speeddownload.contextualmenu</small>
<b>kUploadNamedToRapidShare
kUploadMultipleToRapidShare</b>
<small>/Applications/Speed Download 5/Speed Download.app
/Applications/Speed Download/Speed Download.app
/Applications/Speed Download Lite/Speed Download Lite.app
/Applications/Speed Download 4/Speed Download.app
/Applications/Speed Download.app
last location</small>
</pre>
<p>Жирным я выделил то, что очень похоже на пункты меню. Программы Mac OS X используют файл ресурсов для локализации строковых значений:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/06-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/06-thumb.png" height="274" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<pre>
$ cd "/Library/Contextual Menu Items/Speed Download Contextual Menu.plugin/Contents/Resources/English.lproj"
</pre>
<p>Можно открыть ресурс в XCode (если он установлен):</p>
<pre>
$ open Localizable.strings
</pre>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/07-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/07-thumb.png" height="296" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Но это обычный файл, поэтому можно просмотреть обычным cat:</p>
<pre>
$ cat Localizable.strings
<small>/*
   Localizable.strings
   XSpeedDownload Mach-O

   Created by Frederick Cheung on 08/11/2008.
   Copyright 2008 Frederick Cheung. All rights reserved.
 */

kUploadNamedToRapidShare = "Send \"%@\" to RapidShare";
kUploadMultipleToRapidShare = "Send %ld items to RapidShare";</small>
</pre>
<p>Вот мы и нашли, откуда взялась строка &#8220;Send File to RapidShare&#8221;.</p>
<p>Для пробы я решил удалить плагин и найти, где он ещё описан. При очередном запуске Speed Downloader сказал, что нужно восстановить кое-какие компоненты, имея в виду удалённый мною плагин. <a href="http://theapplegeek.ru/archives/520" >fseventer</a> &#8211; очень полезная программа:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/08-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/08-thumb.png" height="307" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Он натолкнул меня на файл с кешем сервисов ~/Library/Caches/com.apple.nsservicescache.plist:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/01/09-full.png"  class="image-link" rel="lightbox[3071]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/01/09-thumb.png" height="271" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Теперь понятно, откуда берётся строка меню и где находится кеш сервисов.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3071/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached (user agent is rejected)
Page Caching using memcached (user agent is rejected)
Database Caching 14/57 queries in 0.042 seconds using memcached
Object Caching 760/816 objects using memcached

Served from: theapplegeek.ru @ 2010-07-31 02:59:12 -->