• Установка USB HSDPA-модема Option iCON 431 T-Mobile под Snow Leopard

    Ранее я рассмотрел настройку модемов Huawei E220 и E219 под Snow Leopard. Теперь же я взял USB модем Option iCON 431. Одно уточнение - для экономии я купил модем, брендированный под T-Mobile, он на 50$ дешевле.

    Это третья версия статьи, я её модифицировал, пройдя с самого начала процесс установки на "чистом" MacBook.

    Read on →

  • Focus follows mouse

    При работе с несколькими мониторами в Mac OS достаточно неудобно при переходе на другой монитор каждый раз кликать на окно для перемещения фокуса (Click to focus). Вероятно, люди, привыкшие к Mac OS X или Windows не задумывались о такой проблеме, но выходцы из классических Unix задаются этим вопросом. Рекомендую почитать интересную дискуссию "Settling the OS X focus-follows-mouse debate".

    Read on →

  • Утилиты для наблюдения за аккумулятором ноутбука

    Батареи в ноутбуках с первого же включения начинают стареть и их параметры медленно, но неустанно ухудшаются. Это закономерный процесс, и обращать внимание на то, что за месяц ёмкость батареи упала на несколько процентов, особо не стоит. Однако и запускать этот процесс не лучший выход - периодически (желательно раз в месяц) нужно делать полный цикл разряда/заряда по инструкции "Apple Portables: Calibrating your computer's battery for best performance", и ни в коем случае не допускать ситуации, когда ноутбук постоянно работает от сети (в этом случае за год батарея умрёт). Рекомендую также посмотреть раздел на сайте Apple "Apple Notebooks" - в том числе на странице есть подписке на календарь iCal, напоминающий о необходимости сделать цикл тренировки батареи.

    Read on →

  • Находим открытые файлы в каталоге

    По shell сделаю перерыв после этой заметки.

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

    На помощь приходит штатная утилита lsof.

    Допустим, не отключается диск "Time Machine Home". Смотрим, куда он подмонтирован:

    ole-mac:~ ctrld$ mount
    /dev/disk0s2 on / (hfs, local, journaled)
    devfs on /dev (devfs, local, nobrowse)
    map -hosts on /net (autofs, nosuid, automounted, nobrowse)
    map auto_home on /home (autofs, automounted, nobrowse)
    /dev/disk1s2 on /Volumes/ctrld (hfs, local, nodev, nosuid, journaled, noowners, mounted by ctrld)
    /dev/disk2s2 on /Volumes/Time Machine Home (hfs, local, journaled) 

    Определяем, какие файлы используются в этом каталоге, и какими именно процессами:

    ole-mac:~ ctrld$ lsof "/Volumes/Time Machine Home"
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
    bash    2877 ctrld  cwd    DIR   14,8      442       2 /Volumes/Time Machine Home
    vim     2950 ctrld  cwd    DIR   14,8      442       2 /Volumes/Time Machine Home
    vim     2950 ctrld    3u   REG   14,8    12288 3305869 /Volumes/Time Machine Home/.1.txt.swp
    vim     2955 ctrld    3u   REG   14,8    12288 3305872 /Volumes/Time Machine Home/.Trashes/.3.txt.swp 

    Видим, что в интересующий нас каталог перешли ('cwd' - current working directory) два процесса (bash/2877 и vim/2950), и два vim редактируют файлы 1.txt и .Trashes/3.txt. Дальше можно либо выйти из процессов, либо их убить. В итоге внешний диск можно нормально размонтировать.


  • Берём управление сетевой активностью приложений в свои руки (Little Snitch)

    Как определить, какая программа открыла слушающий порт, я рассмотрел в статье "Идентификация через Terminal.app сетевых сервисов (lsof)". Но, как я уже сказал, следить за исходящими соединениями проблематично - например, при захвате трафика с помощью Wireshark не видно, какой именно процесс установил соединение. Штатных способов отслеживания, какая именно программа и куда устанавливает соединение в режиме реального времени я не смог найти.

    Однако есть специализированная программа, которая берёт на себя слежение за сетевым трафиком - это "Little Snitch" ($29.95). При любой попытке любого приложения сделать входящее или исходящее соединение она выдаёт окно с предложением решить, что делать - разрешить или заблокировать на выбор (все соединения программы, обращения на порт, обращения на хост, или же обращения на пару хост-порт). Также можно выбрать, это действие будет действовать однократно, либо до выхода из программы, либо всегда.

    На основании сделанного выбора создаются правила, доступные через "Little Snitch Rules":

    LS даёт запросы на установление соединение всеми программами. Особенно это чувствительно для работы в Terminal.app. Здесь выдаётся запрос для dig, nslookup, lynx, curl и т.д. - разрешить просто всё для Terminal.app нельзя. Но, с другой стороны, это очень правильно, ведь и в shell может быть rootkit, работающий под видом безобидной программы вроде ls.

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

    Полезная возможность программы - это "Network Monitor", показывающий активность программ:

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

    Little Snitch получила 4.5 звезды на MacUpdate. Есть положительные отзывы, есть и отрицательные, но положительных гораздо больше. У меня проблем не было, но каждый решает сам - использовать такую систему или нет. В любом случае, если есть опасения по поводу сетевой активности, то стоит использовать Little Snitch, хуже не будет. А когда отпадёт необходимость, то можно его удалить.


  • Идентификация через Terminal.app сетевых сервисов (lsof)

    Несколько дней назад @akaDimiG задал интересный вопрос:

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

    Read on →

  • Работа с образами дисков в Terminal.app (hdiutil)

    Под Mac OS X пишут очень много людей, и всегда можно найти удобную и красивую программу, выполняющего одну или несколько полезных функций. Однако те же функции могут быть уже реализованы в стандартных утилитах операционной системы. Например, я показал, как записать iso-образ на DVD/CD из Terminal.app, не прибегая к программам вроде Disco или бесплатного Burn.

    hdiutil - это мощная консольная утилита, работающая с образами дисков. Информация о ней доступна в привычном для Unix'оидов man'е - можно либо в Terminal.app набрать "man hdiutil".

    Создание iso-образа для обмена с Windows/Unix/etc

    Записываем каталог "~/Documents" в iso-образ cdimage.iso:

    hdiutil makehybrid -o cdimage ~/Documents
    

    В iso-образе одновременно создаются несколько файловых систем, это определяется ключами: стандартная для Mac OS X HFS+ (-hfs), Joliet (-joliet), ISO9660 (-iso) и UDF (-udf). Если не указать явно, то создаются все четыре файловых системы одновременно.

    Спасибо @tsybulin за подсказку, как создать iso-образ. Он использовал три из четырёх файловых систем (ключи -joliet -iso -hfs).

    Создание dmg-образа

    Записываем в notes.dmg содержимое каталога ~/Documents/Notes:

    hdiutil create -srcfolder ~/Documents/Notes notes
    

    Подключение образа диска

    Смонтировать диск можно, открыв образ в Finder, либо запустив команду:

    hdiutil attach image.iso
    

    Создание зашифрованного расширяемого образа

    Бывает необходимость хранить некоторые данные в зашифрованном виде. Для этого можно создать отдельный зашифрованный образ, с возможностью автоматического увеличения его размера:

    hdiutil create ~/Documents/TopSecret -type SPARSEBUNDLE \
      -size 100m -fs HFS+J -volname TopSecret -encryption
    

    При создании будет запрошен пароль. Создастся файл с именем TopSecret.sparsebundle. Затем при каждом его монтировании будет спрашиваться пароль. Однако нужно не забывать отмонтировать образ, когда в нём нет необходимости. Прикладное применение можно посмотреть в статье "Encrypt Mail, Address Book, and iCal data".

    Снятие образа диска с CD/DVD

    Для установки виртуальной машины VMWare (Win XP, например) мне удобнее использовать не CD/DVD, а готовый образ. С помощью следующих команд я снял загрузочную копию с моего лицензионного "Win XP Home" (создаётся файл winxphome.dmg).

    Вставить диск и посмотреть, на какое устройство подмонтировался диск:

    $ mount
    ...
    /dev/disk4s0 on /Volumes/VRMHFPP_RU (cd9660, local, nodev, nosuid, read-only, noowners)
    

    Снять копию:

    hdiutil convert /dev/disk4s0 -format UFBI -o winxphome
    

    Преобразование форматов

    Преобразование образа "только для чтения" image-ro.dmg в образ с возможностью модификации image-rw.dmg:

    hdiutil convert -format UDRW -o image-rw.dmg image-ro.dmg
    

    Обратное преобразование (RW->RO)

    hdiutil convert image-rw.dmg -format UFBI -o image-ro.dmg
    

    Преобразование dmg в iso

    hdiutil convert source.dmg -format UDTO -o destination.iso
    

    Завершение

    Я рассмотрел только часть возможностей hdiutil. Целиком они описаны в "man hdiutil". Не скажу, что описано понятно для неподготовленного человека, но man - это "наше всё" для людей, желающих разобраться в Unix.

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


  • Запись iso-образов из Terminal.app

    Рассмотрим запись iso в shell на примере дистрибутива Debian. Списываем iso, лучше с torrent.

    Проверяем контрольную сумму (хотя бы md5):

    $ curl http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-dvd/MD5SUMS | \
        grep debian-503-i386-DVD-1.iso
    7ea66fee666fa444f0256ab3c1ec6ba4  debian-503-i386-DVD-1.iso
    $ md5 debian-503-i386-DVD-1.iso
    MD5 (debian-503-i386-DVD-1.iso) = 7ea66fee666fa444f0256ab3c1ec6ba4
    

    Контрольные суммы совпадают, образ нормальный, можем его записывать стандартной утилитой hdiutil:

    $ hdiutil burn debian-503-i386-DVD-1.iso
    
  • Поиск метода установки Mac OS X под VMWare Fusion

    Если вы пытались установить под VMWare Fusion или Parallels Mac OS X, то сталкивались с отказом - есть возможность установить только Mac OS X Server. Это связано с лицензионным ограничением Apple, и, конечно же, ни VMWare, ни Parallels не хотят подвергать себя риску быть обвинёнными в нарушении Software License Agreement.

    Read on →

  • Ответ разработчиков Hazel по поводу влияния программы на время автономной работы

    В комментарии к предыдущей статье по Hazel @stanislavskiy сообщил о своём негативном опыте - на его наборе правил Hazel ноутбук MacBook Pro расходовал батарею всего лишь за час, хотя нормальное время работы с выключенным Hazel было не меньше трёх часов.

    Hazel классная штука, но с запущеным резидентом жрет батарею MB Pro за час. А для стационарных машин - самое то. Я полгода назад его пытался активно юзать и даже паниковал, что батарея навернулась. Вырубил резидента - все наладилось. Экспериментировал трижды - все сходилось, потом вырубил резидента и просто раз в сутки запускал правила на выполнение.

    При работе Hazel с одним правилом, описанным в статье, я не заметил снижения времени автономной работы, поэтому решил задать вопрос непосредственно разработчикам:

    Hi,

    I like your program and I’m planning to buy it. But I‘ve received interesting feedback from my friend:

    "Hazel is a brilliant, but running in background it eats MacBook Pro battery. Battery life is near one hour instead of four hours. For desktop machines it works fine. I tried Hazel six months ago and was in panic - the battery was broken. I tried three times - results was the same."

    Personally I think you are using the same file system event notification mechanism as the Spotlight metadata server, and Hazel doesn't drain the battery.

    Please clarify - do you have any reports about short battery time when using Hazel?

    Я люблю работать с зарубежными разработчиками - практически всегда оперативный и качественный ответ приходит в очень короткие сроки. Разработчики Hazel - не исключение, на следующий день ответ был получен:

    Hazel actually has to poll since it's using an older filesystem notification mechanism (this was for Tiger compatibility). Hazel 3.0 will have a re-written engine which will use the newer system used by Leopard and later. Actually, it's very likely that version 3 will leapfrog Leopard and require Snow Leopard instead.

    That said, I haven't noticed much battery drainage (I run it on an old PowerBook). It does depend on how you use it though. If you have it recursively scanning a large folder tree then that could potentially be draining. I suggest testing it out for yourself as these things are hard to predict. If you (or your friend) do notice drainage, then let me know as I'm always curious about these types of things. It might be helpful to send me a copy of the rules.

    If you have anymore questions, just let me know.

    Вкратце передам смысл. Текущая версия Hazel использует старый механизм получения нотификаций об изменениях файловой системы, это сделано для совместимости с 10.4. При сканировании каталогов с большим количеством данных существует возможность усиленного расходования батареи ноутбука. Если такое проявляется, то нужно написать разработчикам. Сейчас ведётся работа над версией 3, которая будет использовать усовершенствованные механизмы нотификаций Leopard и Snow Leopard, и влияние на время автономной работы будет минимально.