Акция Appiny и MacPaw: бандл CleanMyMac + MacHider + Ensoul. И конкурс

]]>

6 декабря, 2011

]]>

Сегодня Appiny совместно с MacPaw запустили акцию по продаже бандла, состоящего из CleanMyMac, MacHider и Ensoul. Первой программой я пользуюсь достаточно давно, поэтому смело могу её рекомендовать.

Мне предоставили два редима, равные стоимости бандла (599 рублей). Чтобы получить шанс на получение, напишите короткую хокку (или танку) с использованием хештегов #Appiny и #MacPaw или в twitter (а сюда бросьте ссылку), или сразу в комментариях.

Например, вот образчик моего графоманства:

Зима, лыжи по асфальту скребут

но для моего Mac’а #MacPaw и #Appiny

Приготовили бандл.

Завтра утром ребята из Appiny выберут двоих победителей и я вышлю коды.

А вот информация по акции (если вы не знаете, что такое “вендекапец”, то смотрите статью на Луркморье):


Appiny – скидки для гиков!

]]>

25 ноября, 2011

]]>

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

Открытие началось с акции по 40%-й скидке на почтовый клиент Sparrow.

Больше деталей можно узнать, прочитав статью на Хабре. И воспользоваться этим предложением.


Как подключиться к PostgreSQL в Lion Server

]]>

26 октября, 2011

]]>

Кратко – под пользователем _postgres. Пароль не нужен:

$ sudo psql --username=_postgres device_managementpsql (9.0.4)Type "help" for help.device_management=#

Сервер слушает только сокет, если хочется использовать сторонний софт, например, pgAdmin, то нужно настроить слушать хотя бы на 127.0.0.1:

$ sudo vim /System/Library/LaunchDaemons/org.postgresql.postgres.plist

Строку

      <string>listen_addresses=</string>

заменить на

      <string>listen_addresses=127.0.0.1</string>

Рестартовать PostgreSQL:

$ sudo serveradmin stop postgrespostgres:state = "STOPPED"$ sudo serveradmin start postgrespostgres:state = "RUNNING"

И настроить соединение в нужном приложении:

Почитать об использовании PostgreSQL можно, конечно, в документации или, если хочется краткой подборки основных команд, то в статьях “15 Practical PostgreSQL Database Administration Commands” и “15 Advanced PostgreSQL Commands with Examples“.


Список файлов в установочном пакете pkg

]]>

25 октября, 2011

]]>

Хотели ли вы когда-нибудь узнать, что именно устанавливается из установочного пакета с расширением pkg? А знаете ли вы, что книги читать полезно?

Вот и я узнал этот простой метод, читая книгу “Apple Pro Training Series: OS X Lion Support Essentials: Supporting and Troubleshooting OS X Lion“.

Делай раз:

Делай два:

В консоли то же самое можно посмотреть так (спасибо @d_bud):

$ pkgutil --payload-files /path/to/package.pkg

Начальная установка OS X Lion Server с раздела Recovery HD

]]>

20 октября, 2011

]]>

В статье “Получение Recovery HD для OS X Lion Server или длинно об установке чистого OS X Lion Server” я описал, как сделать флешку для дальнейшей установки OS X Lion Server. Там же я показал, что здравый смысл не всегда работает.

Поэтому сегодня подтвержу очевидное – то, что с созданного на флешке раздела Recovery HD можно установить OS X Server. К сожалению, и здесь есть 5% того, что сервер не установится – ведь я буду ставить систему не на чистый диск, а во второй раздел рядом с живым OS X Lion Server. Но надеюсь, что и с чистым диском пройдёт всё так же, по крайней мере на Mac mini Server. А на других системах можно поставить десктопный Lion и доставить Server.app.

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

Флешка с Recovery HD вставлена в Mac mini, загружаюсь с зажатой клавишей Command. Если используется клавиатура Bluetooth, то может понадобиться несколько попыток. Выдаётся список разделов для загрузки:

На Vertex2 и Recovery HD на жёстком диске не обращайте внимание – это результаты другого эксперимента, я их удалю после загрузки с Recovery HD на флешке.

Устанавливаю сервер “с чистого листа”, поэтому иду в Disk Utility для переразбивки диска

Удаляю раздел Vertex2, и создаю новый с тем же именем, на который буду ставить OS X Server:

Выхожу из Disk Utility, выбираю Reinstall Mac OS X:

Bla-bla-bla, это понятно:

Для установки выбираю свежесозданный раздел Vertex2. Если бы раздел был всего один, то запроса на выбор не было бы

Установка началась. Списываются нужные компоненты с серверов Apple

Система называется OS X Lion, а не OS X Lion Server. Это меня заставило напрячься, но всё закончилось благополучно.

Пошла настройка. Регион я выбрал свой, Ридну Украину, ведь домен в зоне RU (баян):

Отвлекусь. Почему я выбрал домен для блога в зоне .ru? Потому что изначально аудитория была процентов на 80 из России. Но если бы я выбирал зону сейчас, то брал бы org, net, com или подобную – необходимость отсылки сканов паспорта регистратору и чуть ли не нотариально заверенное заявление на смену паспортных данных я считаю издержками Кровавой ГэБни.

Раскладка клавиатуры. Я выбираю US, не хочу дать минимальный повод сделать интерфейс системы на русском:

Устанавливаю сервер “с нуля” без ассистента миграции:

Проверяется мой Apple ID:

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

Регистрирую:

Создаю администратора. Важный момент – это будет системный пользователь, а свою обычную учётную запись я создаю в Open Directory. Поэтому здесь указывваю “admin”, а не привычного “ctrld”.

Организация и email администратора:

Таймзона

Следующий важный момент – сетевые настройки. Сервер у меня находится за Time Capsule. У него приватный адрес из сети 192.168.x.x. Но я хочу, чтобы к серверу был доступ из Интернет по VPN, возможно по https, на нём будет почтовый сервер. Поэтому я выбираю третий вариант настроек “Host name for Internet”:

Имя и адрес очень важны. Менять их можно, но лучше выбрать их раз и навсегда, меньше будет путаницы и хлопот с сертификатами, именами, DNS и т.д.

Очень давно мой коллега по группе поддержки абонентов говорил: “Имя мы даём, пользуясь целесообразностью, а не благозвучностью”. Так-то оно так, но политику именования каждый администратор выбирает сам. Кто по названиям восьмитысячников, кто по именам богов, кто не глядя стучит по клавиатуре. Лишь бы было единообразие.

Если сервер работает в одно сети с AirPort Express/Extreme/Time Capsule, то предлагается управлять точкой доступа с сервера. Это даёт серверу возможность прописывать правила port mapping’а, адрес DNS, управлять авторизацией через RADIUS. В данном случае я не использую эту функцию

Напоследок выдаётся список функций OS X Lion Server

Установщик производит настройку сервисов:

Сюда включён и запрос сертификатов для PUSH, которые автоматически генерируются Apple, о чём приходит письмо на указанный ранее email администратора:

Всем спасибо, сервер готов:

Перезагрузка, ввод имени и пароля администратора (не правда ли, красиво получился мой силуэт на фоне окна и жёлтых жалюзей):

Проверка IQ – сможет ли администратор догадаться, как нужно скроллировать в Lion (нужно иметь IQ не меньше 10):

Voilà, OS X Lion Server 10.7.2 к вашим услугам:

Надеюсь, to be continued…


Получение Recovery HD для OS X Lion Server или длинно об установке чистого OS X Lion Server

]]>

20 октября, 2011

]]>

Я не знаю способа полноценной установки OS X Lion Server за одну операцию.

Обычный OS X Lion можно поставить или из-под работающего Lion на другой диск (списав предварительно Lion из App Store способом, описанным в “Re-Download Mac OS X Lion from the App Store“), или купив загрузочную флешку “OS X Lion USB Thumb Drive“.

С Lion Server такое не пройдёт. Вы можете сказать, что никакой проблемы нет – поставил сначала OS X Lion, потом Server.app, и вот есть полноценный OS X Lion Server. Да, но не совсем. Поясню.

Когда я купил Mac mini Lion Server, то меня не устраивала дисковая производительность – к SSD быстро привыкаешь и диск на 7200 rpm кажется ужасно медлительным. Поэтому я переставил Lion Server на RAID0 из двух штатных дисков. И не обратил внимание на предупреждение о том, что раздел Recovery HD для такой конфигурации не поддерживается и неплохо было бы создать флешку с его копией с помощью Lion Recovery Disk Assistant.

А когда я взял SSD и избавился от RAID1, то остался без Recovery HD, и, как следствие, без возможности переустановить Lion Server.

И тут вы можете возразить, что не стоит делать из мухи слона и можно воспользоваться Recovery HD, сделанным для десктопного OS X Lion. Но и тут я скажу, что теория теорией и здравый смысл – великая сила, но от реальности они далеки. В подтверждение привожу текст:

/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *240.1 GB   disk0   1:                        EFI                         209.7 MB   disk0s1   2:                  Apple_HFS Vertex                  120.5 GB   disk0s2   3:                  Apple_HFS Vertex 2                98.7 GB    disk0s3   4:                 Apple_Boot Recovery HD             650.0 MB   disk0s4

и скриншот:

Recovery HD, сделанный из десктопного Lion (раздел Vertex 2), не подходит для серверного Lion (Vertex).

Поэтому задача восстановления серверного Recovery HD состоит из нескольких шагов. Учитывая то, что для экспериментов мне нужен свежеустановленный Lion Server, то этот труд не пропадёт.

Я устанавливаю систему в виртуальную машину VMWare Fusion 4. Parallels Desktop 7 тоже подходит. Почему в виртуальную машину, ведь можно поставить систему сразу на Mac, да к тому же не понадобится софт виртуализации? И тут опыт берёт верх над здравым смыслом – 10.6 не поддерживает Macmini5.3, “Unsupported CPU”:

Также предупреждаю, что мой метод может не подходить для вас – у меня есть подписка на Apple Developer Program, в рамках которой я получил бесплатно OS X Lion, OS X Lion Server и Mac OS X Snow Leopard Server с ключом.

Установка Mac OS X Server 10.6.0

OS X Server 10.7 можно официально поставить как Update к 10.6. Поэтому начинаю с установки Snow Leopard Server build 10A433 (не перепутайте с 10A403, иначе потеряете зря время). Беру образ и ключ из секции Downloads for Apple Developers. Если у вас нет подписки, то вы можете поставить систему с диска OS X Snow Leopard Server (не забудьте про ключ, система без него не установится).

Установка ничем не примечательна, разве что нужно ввести ключ.

Хинт. При создании пользователя под Mac OS X Server я указываю admin, а свой логин завожу потом в OpenDirectory.

По привычке сразу прибиваю в DHCP выдачу постоянного адреса для сервера:

Ставлю навскидку имя. В Lion Server смена IP-адреса не так критична, как в предыдущих версиях, но лучше и адрес, и имя запланировать раз и навсегда.

Сервисы не запускаю:

Проверяю параметры

Через короткое время система установлена

Перезагрузка и у меня есть Mac OS X Server 10.6:

Обновление Mac OS X Server до 10.6.8

Software Update:

Перезагрузка, и у меня уже версия 10.6.8:

Делаю снепшот в VMWare, он никогда не помешает:

Захожу в App Store, выбираю страну

Вхожу под своим логином.

Если поставить сразу OS X Lion Server, то он не запустится в Snow Leopard, так как это программа под OS X Lion (это меня привело в первый раз в замешательство). Поэтому сначала ставлю OS X Lion:

А вот теперь слегка неочевидная операция. После того, как Lion спишется, он запустится и скажет, что списать OS X Lion Server:

Иду в App Store, устанавливаю OS X Lion Server:

Если программа не списывается, то посмотрите все фоновые окна – запрос пароля у меня попал за все приложения и я не мог понять, почему загрузка не стартует.

Установка OS X Lion Server

Как только Server.app спишется, инсталлятор сможет начать свою работу:

Несмотря на неоптимистичный прогноз установка заняла в сумме минут 40:

Процесс завершился

Перезагрузка. Welcome screen

Указываю название организации и email. “Home, sweet home” достаточно, но я хочу поставить The Apple Geek:

Идёт миграция и обновление сервисов. Мне это не очень нравится, ну да ладно, с “чистого листа” я смогу поставить систему уже с Recovery HD:

И эта стадия завершена:

Перезагрузка, ввод пароля админа

И у меня готов OS X Server 10.7.2:

Традиционно делаю снепшот

Получение Recovery HD

Сервер доступен по ssh, захожу и проверяю, есть ли Recovery HD:

$ ssh admin@192.168.98.4$ diskutil list/dev/disk0   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *42.9 GB    disk0   1:                        EFI                         209.7 MB   disk0s1   2:                  Apple_HFS Macintosh HD            42.1 GB    disk0s2   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

Да, всё в порядке.

Вставляю флешку, в VMWare Fusion 4 в Virtual Machine/USB and Bluetooth/USB and Bluetooth Settings указываю подключить эту флешку к виртуальной машине:

Устанавливаю в VM Lion Recovery Disk Assistant и записываю Recovery HD на флеш:

Флешка с Recovery HD создана и теперь я её буду хранить очень бережно…

Не забываю указать в настройках VMWare, что флешку нужно теперь подключать к Mac.

Перезагружаю Mac mini, при старте зажимаю клавишу Command. Recovery HD есть на флешке:

И, что приятно, в отличие от Recovery HD от десктопного Lion, Mac mini Lion Server грузится с этого раздела:

Всё, задача выполнена – у меня есть Recovery HD на внешнем носителе. Отдельно попробую забросить этот раздел на диск сервера.

А знаете, в чём ирония? Разница между Recovery HD для десктопного Lion и серверного в том, что в последнем есть файл BaseSystem.chunklist, а разницы между размерами файлов нет…

Эх, хотел бы я выразить особую благодарность Эльфу-Торговцу, но он, к сожалению, не интересуется Маками, и я вот уже два года пишу из любви к исскуству :-)


Технический блог Михаила “XIII” Нерадкова

]]>

19 октября, 2011

]]>

Несмотря на обилие “яблочных” блогов, оригинальных достаточно мало. Когда я запустил свой проект, мне один человек сказал: “Ну сколько можно? Каждый, кто купил iPhone или Mac, делает очередной Apple-блог…”

Но, к сожалению, блогов о продуктах Apple с узкотехнической направленностью достаточно мало. Я с удовольствием читаю редкие статьи на англоязычных блогах AFP548 и Krypted, но, к сожалению, в русскоязычном сегменте таких мало.

Навскидку скажу о shortcut.ru, snupt.com, MacTrick, juev.ru (но про Apple там пока мало) или devmac.ru. Если про кого-то забыл, напишите в комментариях – это не из злого умысла – я приводил ссылки именно на специализированные технические блоги, а не на универсальные.

Вчера мне написал Михаил “XIII” Нерадков, и дал ссылку на свой блог. Пролистав заметки, я понял, что приводимые рецепты мне нравятся и я читаю их с удовольствием. С дизайном, правда, у блога не очень, да и размещён он в поддомене Blogspot, но это мелочи, ведь главное – это содержимое.

Рекомендую посмотреть самим и если сайт понравится, то подписаться на его RSS.


Переустановка Profile Manager в OS X Lion Server

]]>

18 октября, 2011

]]>

Вот не могу я понять – это я такой неуч, у которого Mac OS X Server работает неправильно, или же всё-таки что-то не в порядке в консерватории?

Настроил я Profile Manager, настройки нормально передавались, но вот push не проходил

В логах заметил сообщения вида:

xscertd-helper(851) deny file-read-metadata /private/var/folders

Навесил костыль в /usr/share/sandbox/com.apple.xscertd-helper.sb:

(allow file-read-metadata      (regex #"^/private/var/rpc/ncacn_np/*")

Помогло, но вышла другая ошибка:

13.10.11 19:32:45,000 sandboxd: ([3236]) xscertd(3236) deny job-creation

Костыль в /usr/share/sandbox/com.apple.xscertd.sb:

(allow job-creation    (regex #"^/*"))

Снова не получилось отправить push. В логе ошибка:

$ tail -f /Library/Server/ProfileManager/Logs/profilemanager.logruby[3627] <Info>: Pruning certificate chain to 18446744073709551615ruby[3627] <Debug>: Trying to add a bogus certificateruby[3627] <Debug>: An error occured while inserting an untrusted certificate into the chain

Копание в “sudo dtruss -n ruby -f” не дало идей.

От отсутствия мыслей купил сертификат TurboSSL у GoDaddy за $12 в год (сейчас не нашёл это предложение). Это несмотря на то, что сертификаты под push генерируются в Apple. Подключил сертификат повсюду, снова не помогло.

Плюнул и решил полностью переустановить Profile Manager:

$ cd /usr/share/devicemgr/backend$ sudo serveradmin stop devicemgr$ sudo serveradmin start postgres$ export PATH="/usr/bin:/bin:/usr/sbin:/sbin"$ sudo rake db:drop RAILS_ENV="production"$ sudo rake db:create RAILS_ENV="production"$ sudo rake db:migrate RAILS_ENV="production";$ sudo serveradmin start devicemgr

Настроил устройства по-новому – всё заработало, push стал проходить.

Но это ещё не всё – после очередного рестарта сервера Apache перестал выдавать Wiki, Profile Manager и другие сервисы. Хорошо, что кроме Time Machine я все изменения в /etc сохраняю в репозитории git. Коммит показателен:

Восстановил /etc/apache2 из рабочего коммита, завелось. Но надолго ли?

Да, поиск проблем в OS X Server весел. Хуже того, нельзя надеяться на то, что сервисы подымутся после банальной перезагрузки. А если бы у меня был работающий сервер и пару сотен устройств?

Возможно у меня кривые руки, но за два года работы с OS X Server я навскидку могу назвать больше пяти случаев, когда система переставала работать. То OpenDirectory, то VPN, то Apache, то почта, то вот Profile Manager. Странно, ведь система должна просто работать…


Краткое сравнение производительности WordPress при различных конфигурациях софта

]]>

8 октября, 2011

]]>

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

Не уверен, что выложу её – она требует повторных экспериментов, поэтому приведу выдержки, не подкрепляя их фрагментами конфигурации.

Итак, имеется сервер с Ubuntu Server 10.10. Сервер мощный – 2 x Xeon X5260@3.33GHz, 8 GB RAM, RAID 1 из двух дисков SAS 15K rpm на аппаратном RAID.

Дисковая производительность слабая по состоянию на текущий момент – всего 100 MBps:

$ sudo hdparm -t /dev/cciss/c0d0/dev/cciss/c0d0: Timing buffered disk reads:  294 MB in  3.03 seconds =  96.98 MB/sec

Задача – максимизировать производительность WordPress на этом сервере.

Тесты проводил на сайте с 300 статей, запрашивая домашнюю страницу со 100 конкурентными запросами:

$ ab -n 20000 -c 100 http://benchmark.ctrld.me/

Результаты:

КонфигурацияRequests per secondLoad average Apache, InnoDB, без APC 25.83 110.29 Apache, MYISAM, с APC 120.47 103.54 Apache, INNODB, с APC 118.50 100.43 Apache, InnoDB, APC, W3 Cache (file) 893.14 2.06 Apache, InnoDB, APC, W3 Cache (apc) 907.26 1.04 Apache, InnoDB, APC, W3 Cache (memcached) 893.21 1.09 Nginx + Apache + APC + плагин кеширования 868.17 0.52 Nginx + Apache + APC + плагин кеширования + Nginx Cache 6984.47 0.01

P.S. На данный момент я отказался от Apache, оставил nginx fastcgi_cache, но не использую никаких плагинов кеширования. На повторных обращениях к одной странице выигрыш потрясающий, однако генерация новой страницы занимает сравнительно длительное время. Я решу этот вопрос и сделаю финальную статью. Текущие результаты не привожу, так как мощность тестового сервера и VPS очень разные.


Техническая эволюция блога – от 2 до 5000 запросов в секунду. Лирика

]]>

8 октября, 2011

]]>

Update от 10.12.2011: 512 MB для комфортной работы сайта мало, периодически в кеш попадают пустые страницы. Поэтому отключил nginx cache.

Опыт системного и сетевого администрирования у меня достаточно большой. Ещё в 1994-м году я познакомился с Linux и FreeBSD, примерно в это же время починил считавшийся безнадёжно испорченным Silicon Graphics одного пафосного рекламного агентства, что придало мне сил и уверенности в нужности знания Unix. Занимался запуском и администрированием одного национального ISP, потом датацентра, занимаясь и серверным, и сетевым оборудованием.

Через два года у меня закономерно появился Macbook Pro и на волне восторга ко мне пришла идея сделать нишевый блог, в котором я смогу на базе своего опыта в Unix рассказывать о Mac OS X.

20 августа 2009 года, когда MBP лежал, завёрнутый в подарочную упаковку, я поднял сайт и разместил первую статью “WWDC-2009″, которая раньше лежала вроде бы на Tumbler’е.

Сайт работал на выделенном сервере моих друзей, находящемся в Германии. В качестве CMS я привычно выбрал WordPress, так как давно его использовал на проекте “Traverse Team“. Движок работал на Apache практически “из коробки”, никакого тюнинга, кеширования, оптимизации я не делал. Конечно, скорость генерации страниц была низка, но меня это почти устраивало – сайт по скорости (вернее сказать “медленности”) не выделялся из множества других. Операционная система была FreeBSD, под сайт я сделал jail.

Сервер был не очень мощным, к тому же через пару месяцев он стал себя странно вести – из-за Kernel Panic он напрочь вис, помогала только перезагрузка по питанию. Можно было бы для начала обновить операционную систему, но там вертелись сервисы, завязанные на определённые версии PHP/MySQL, и обновиться было практически невозможно. Но скорее всего была проблема с модулем памяти.

Как раз в это время у меня появился второй Macbook. К тому же в моём доме кроме единственного ADSL-провайдера появился второй провайдер, предлагающий подключение по Ethernet, да ещё со статическим IP. Само собой, я воспользовался появившимися возможностями, и сделал из ноутбука сервер под Mac OS X для моего сайта (часть 1, часть 2, часть 3).

Сайт проработал на этом ноутбуке, перемещавшемся с кухонного шкафа на холодильник и обратно, три месяца с января по март 2010 года. Всё было бы хорошо, но вечерами люди в локальной сети занимались скачиванием, что ухудшало откликаемость сайта, а потом две недели подряд у провайдера были проблемы с маршрутизацией сети апстримам, что приводило к пропаданию анонсов на стыке Telia – Level3. Недоступность сайта по часу в день для блога некритична, но не реагировать было по крайней мере невежливо по отношению к читателям.

После анализа предложений я остановился на Linode и перенёс сайт на VPS. Полтора года пользуюсь сервисом и очень доволен. Взял VPS Linode 512 с 512 MB RAM (хочется больше, но денег жаль).

В процессе настройки я остановился на комбинации Nginx (фронтэнд) + Apache (бэкэнд) + привычный плагин кеширования W3 Total Cache. В процессе настройки обращался к сайтам Juev и Snupt (конкретные статьи искать лень, почитайте сайты сами, не пожалеете).

Скорость генерации была нормальная, но хотелось большего. Через некоторое время стал использовать в nginx кеширование проксированных ответов от Apache с патчем выборочного очистки кеша и плагином под WordPress. Сайт стал носиться. От 2 запросов в секунду на голом Apache я пришёл к 5000 запросов. Неплохо.

Всё было бы хорошо, но 512 MB RAM маловато для того, чтобы держать два web-сервера, MySQL, да ещё и memcached для W3 Total Cache. На днях я “попал”. Из-за нехватки памяти я потерял все настройки темы (а их было много, включая кастомный CSS). Хорошо, что старые страницы были в кеше и я смог восстановить данные (бекап, конечно, есть, я делаю дамп MySQL раз в сутки и файлы раз в 4 часа, но восстанавливаться с нуля не хотел).

Поэтому сделал “ход конём”. Убрал memcached, W3 Total Cache, Apache. Оставил только nginx, php запустил в fastcgi и настроил nginx fastcgi_proxy. При concurrency level 100 при тестах с самого сервера получаю под 5000 запросов в секунду. К тому же избавился от нескольких лишних компонентов. Памяти хватает.

Статья была “лирикой”. Если хотите деталей, как всё сконфигурировано, пишите в комментариях – если будут желающие, то я напишу отдельную статью.


Steve Jobs, the world changer: 1955-2011

]]>

6 октября, 2011

]]>

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

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

Слова памяти:


Donations

]]>

4 октября, 2011

]]>

Друзья, очень грустно работать над сайтом, когда доход составляет $9 в месяц, а только расходы на хостинг – $19.95.

Если вам интересен мой блог, и хотите видеть и дальше новые статьи, то можете перечислить средства на один из моих кошельков:

  • Webmoney WMZ: Z560774936580
  • Webmoney WMR: R302496526520
  • Webmoney WMU: U384081906186
  • Yandex.Money: 41001124861661

Как узнать версию OS X из командной строки

]]>

4 октября, 2011

]]>

Ночь, улица, фонарь, аптека… То бишь ssh, удалённый сервер и непонятно какая версия OS X. Что делать? Набирать команду:

$ sw_versProductName:   Mac OS X ServerProductVersion:   10.7.1BuildVersion:  11B2118

Или, если хочется большего:

$ system_profiler SPSoftwareDataTypeSoftware:    System Software Overview:      System Version: Mac OS X Server 10.7.1 (11B2118)      Server Configuration: Advanced      Kernel Version: Darwin 11.0.1      Boot Volume: Vertex      Boot Mode: Normal      Computer Name: Computer Name      User Name: Oleg Serdyukov (ctrld)      Secure Virtual Memory: Enabled      64-bit Kernel and Extensions: Yes      Time since boot: 3 days 2:06

И ещё:

$ defaults read loginwindow SystemVersionStampAsString10.7.1

Для “ортодоксальных”:

$ cat /System/Library/CoreServices/SystemVersion.plist<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>   <key>ProductBuildVersion</key>   <string>11B2118</string>   <key>ProductCopyright</key>   <string>1983-2011 Apple Inc.</string>   <key>ProductName</key>   <string>Mac OS X</string>   <key>ProductUserVisibleVersion</key>   <string>10.7.1</string>   <key>ProductVersion</key>   <string>10.7.1</string></dict></plist>

Вариант @Rost_n_Roll:

$ defaults read /System/Library/CoreServices/SystemVersion{    ProductBuildVersion = 11B2118;    ProductCopyright = "1983-2011 Apple Inc.";    ProductName = "Mac OS X";    ProductUserVisibleVersion = "10.7.1";    ProductVersion = "10.7.1";}

В нагрузку – тип процессора:

$ sysctl machdep.cpu.brand_stringmachdep.cpu.brand_string: Intel(R) Core(TM) i7-2635QM CPU @ 2.00GHz

История одного взлома

]]>

28 сентября, 2011

]]>

Поучительная история Наиля о взломе macpages.me:

Интересно почитать комментарии.

Рекомендую уделить внимание таким вопросам:

  1. не использовать простые пароли
  2. не ставить предугадываемые ответы на вопросы восстановления забытого пароля
  3. использовать почту GMail с двухфакторной авторизацией
  4. перед принятием любого предложения о сотрудничестве изучать доступную информацию через поисковые системы и социальные сети

Клонирование диска в Linux с помощью команды dd

]]>

22 сентября, 2011

]]>

Если есть два диска одинакового размера и под Linux (не под Mac) нужно один полностью скопировать на другой, то можно использовать dd:

$ sudo dd bs=4k if=/dev/sdX of=/dev/sdY conv=noerror,sync

Программа dd молчаливая, статистику показывает только в конце. Но если хочется наблюдать за процессом, то можно посылать процессу сигнал SIGUSR1.

Сначала нужно определить pid – интересует именно dd, а не “sudo dd”:

$ ps ax | grep dd3428 pts/0    S+     0:00 sudo dd bs=4k if=/dev/sdc of=/dev/sdb conv=noerror,sync3429 pts/0    R+     2:10 dd bs=4k if=/dev/sdc of=/dev/sdb conv=noerror,sync

Затем в другой сессии запустить:

$ sudo -s# while true; do kill -USR1 3429; sleep 60; done

В сессии с выполняющейся dd раз в минуту будет выдаваться такая информация:

9729620+0 records in9729620+0 records out39852523520 bytes (40 GB) copied, 391.974 s, 102 MB/s

А для Mac вы можете воспользоваться одним из способов, приведённых в статье “Обзор методов клонирования загрузочного диска Mac OS X“.


Работа в shell с именами файлов с пробелами и другими сложными для обработки символами

]]>

14 сентября, 2011

]]>

Понадобилось мне восстановить из бекапа Time Machine небольшой скрипт. Ситуация осложнялась тем, что я его несколько раз менял, потом написал с нуля, потом стёр, в итоге в архиве Time Machine было множество вариантов. Нужный скрипт был с характерными первыми строками. В репозиторий git я скрипт не вносил, что не облегчало мою задачу.

Итак, к делу. Запуск терминала, подключение диска Time Machine, переход в нужный каталог:

$ cd /Volumes/Time\ Machine\ Backups/Backups.backupdb/ComputerName

Ищу варианты:

$ ls -al */*/Users/ctrld/bin/apps.shrwxr-xr-x@ 2 ctrld  staff   918 Mar  3  2011 2011-04-08-195358/Macintosh HD/Users/ctrld/bin/apps.sh-rwxr-xr-x@ 2 ctrld  staff   971 Apr 30 17:52 2011-06-06-124551/Macintosh HD/Users/ctrld/bin/apps.sh-rwxr-xr-x@ 2 ctrld  staff  1024 Jun 10 20:14 2011-06-14-111524/Macintosh HD/Users/ctrld/bin/apps.sh

Первая мысль – скормить файлы в команду head:

$ ls */*/Users/ctrld/bin/apps.sh | xargs head -5

Конечно же, эта конструкция неправильная, так как в именах есть пробелы:

head: 2011-02-19-180439/Macintosh: No such file or directoryhead: HD/Users/ctrld/bin/apps.sh: No such file or directory==> 2011-08-31-111236/Lion/Users/ctrld/bin/apps.sh <==#!/bin/shAPPDIR="/Volumes/Data/iTunes/iTunes Music/Mobile Applications/"find "${APPDIR}" -name \*.ipa |while read linedo

Как же заставить xargs считать путь с пробелом, как единый параметр? Эврика, вспоминаю о замечательной статье “Fixing Unix/Linux/POSIX Filenames: Control Characters (such as Newline), Leading Dashes, and Other Problems“. На выходе получаю команду:

$ find */*/Users/ctrld/bin -name apps.sh -type f -print0 | xargs -0 head -3==> 2011-02-19-180439/Macintosh HD/Users/ctrld/bin/apps.sh <==#!/bin/shAPPDIR="/Users/$USER/Music/iTunes/iTunes Music/Mobile Applications"find "${APPDIR}" -name \*.ipa | ==> 2011-03-03-210012/Macintosh HD/Users/ctrld/bin/apps.sh <==#!/bin/sh#APPDIR="/Users/$USER/Music/iTunes/iTunes Music/Mobile Applications"APPDIR=$(find `defaults read com.apple.iTunes NSNavLastCurrentDirectory:ChooseObject:0` -name "Mobile Applications")

Нужный вариант найден и восстановлен. Для чего этот скрипт? Для “получения информации по приложениям iPhone в iTunes из shell“.

Всем, кто работает с shell категорически рекомендую изучить статью “Fixing Unix/Linux/POSIX Filenames: Control Characters (such as Newline), Leading Dashes, and Other Problems” – она убережёт вас от ошибок при обработке параметров.


Анонс – диск SSD OCZ Vertex 3 240 GB в Mac mini server 2011

]]>

9 сентября, 2011

]]>


Мы хотим украинский AppStore!

]]>

7 сентября, 2011

]]>

Украинские пользователи продуктов Apple, подпишитесь, пожалуйста, под обращением “Мы хотим украинский AppStore!“.

Напомню по этому поводу письмо на сайте alexmak’а “Правильный вопрос про Apple в Украине“.

Конечно, Apple закрыл глаза и молча принимает в iTunes Russia карты, эмитированные украинскими банками, но это нарушает условия пользования сервисом и чревато закрытием учётной записи в любой момент.

Поэтому я и хочу официальный iTunes Ukraine.


Lingon 3. Бесполезная утилита после перехода в Mac App Store

]]>

7 сентября, 2011

]]>

Я раньше привычно рекомендовал Lingon для создания задания, запускающегося при старте системы из LaunchDaemons под root’ом.

Но дань моде и похвальное желание заработать на своём труде заставили разработчика портировать утилиту в Mac App Store. Lingon 3 доступен за $2.99.

Оказывается, что в LaunchDaemons задание записать невозможно из-за ограничений на приложения Mac App Store. Выдаётся ошибка:

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

В конце страницы есть ссылка на FAQ, где текст сильно радует:

Can I run a job as root?

No, there is no way to run it as root by using Lingon to comply with the Mac App Store rules. But what you can do is create a new but before you save it you choose “Copy Plist to Clipboard” in the Job menu and the press Cancel.

Then open Terminal and make sure that you are an administrator. Write:

sudo pico /Library/LaunchDaemons/<your chosen name>.plist

and then enter and then paste the contents from Lingon. Then press ctrl-x and choose to save it. Then you need to load it manually with this command:

sudo launchctl load /Library/LaunchDaemons/<your chosen name>.plist

Подумать только – утилита предназначена исключительно для людей, не желающих работать с терминалом, но она же мелким шрифтом рекомендует устранить свои ограничения, запустив терминал. Порадовал разработчик, ничего не скажешь.

Вердикт: ни в коем случае не покупайте Lingon 3.

Если же вы программу купили, то расскажу, как всё-таки сделать нужный скрипт через неё. Рассматривайте дальнейший текст, как стёб – утилита бесполезна. Не стирать же готовую заметку…

Запускаю:

New Job, записываю файл в предлагаемый каталог LaunchAgents (внимание – задание будет запущено только при входе пользователя в системы). me.ctrld.noatime = имя моего домена ctrld.me в обратной нотации и название задания.

Ввожу команду “/sbin/mount -vuwo noatime /” для перемонтирования с noatime. В “When” ничего не выбираю.

Save. Выхожу. Захожу в Terminal.app… Ввожу команду:

$ sudo cp Library/LaunchAgents/me.ctrld.noatime.plist /Library/LaunchDaemons/

Редактирую файл и добавляю две строки, выделенные жирным (бинго! не правда ли, Lingon заменил все ужасы работы в консоли на ужасы работы в консоли?):

$ sudo vim /Library/LaunchDaemons/me.ctrld.noatime.plist<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>        <key>Label</key>        <string>me.ctrld.noatime</string>        <key>ProgramArguments</key>        <array>                <string>/sbin/mount</string>                <string>-vuwo</string>                <string>noatime</string>                <string>/</string>        </array>        <key>RunAtLoad</key>        <true/></dict></plist>

Перезагружаю систему. Проверяю:

$ mount | grep " / "/dev/disk0s2 on / (hfs, local, journaled, noatime)

Радуюсь “отличной” утилите Lingon, которая несмотря на GUI даёт поработать с консолью.

Но если вам нужны задания, выполняемые после входа в систему, то может Lingon вам и пригодится.


Добавление статического маршрута при запуске системы через StartupItems

]]>

6 сентября, 2011

]]>

Понадобилось мне при запуске OS X добавить статический маршрут. И всё бы хорошо, но сколько не бился – всё без толку, испытываю очередной вариант, перезапускаю сервер, проверяю – маршрута нет.

Уже начал думать, что в Lion поменялись механизмы работы с StartupItems. Но тут в Console.app заметил сообщение “add net 10.0.0.0: gateway 192.168.98.9: Network is unreachable” и всё стало на свои места.

Всё дело в том, что сетевые интерфейсы подымаются не сразу (что при DHCP, что при ручной установке адреса), а для добавления статического маршрута шлюз должен быть доступен. Добавил в скрипт задержку 10 секунд перед выполнением команды route – и всё получилось.

При прописывании StartupItems я отталкивался от статьи “Disabling file access time updates using noatime in OS X” – она первая мне попалась под руку.

StartupItems

Создаю каталог для нового StartupItem

$ sudo mkdir /Library/StartupItems/ctrld_boot

Делаю описание скрипта (без него работать не будет)

$ sudo vim  /Library/StartupItems/ctrld_boot/StartupParameters.plist{Description = "Ctrld Boot Script";Provides = ("ctrld_boot");OrderPreference = "None";Messages ={start = "Starting ctrld Boot Script";stop = "Stoping ctrld Boot Script";restart = "Restarting ctrld Boot Script";};}

Пишу скрипт (обратите внимание на sleep 10 – не будет работать, замените 10 секунд, например, на 20):

$ sudo vim /Library/StartupItems/ctrld_boot/ctrld_boot#!/bin/sh. /etc/rc.commoncase "$1" instart)ConsoleMessage "Starting ctrld Boot: adding static route"sleep 10route add -net 10.0.0.0 -netmask 255.0.0.0 192.168.98.9;;esacexit 0

Делаю скрипт исполняемым:

$ sudo chmod 755 /Library/StartupItems/ctrld_boot/ctrld_boot

Перезапускаюсь – работает.

LaunchDaemons

Если бы не задержка с активацией интерфейсов, то можно было бы сделать запуск и через механизм LaunchDaemons.

$ cd /Library/LaunchDaemons

Создаю plist:

$ sudo vim me.ctrld.route.plist<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0">    <dict>        <key>Label</key>        <string>me.ctrld.route</string>        <key>ProgramArguments</key>        <array>            <string>route</string>            <string>add</string><string>-net</string><string>10.0.0.0</string><string>-netmask</string><string>255.0.0.0</string><string>192.168.98.9</string>        </array>        <key>RunAtLoad</key>        <true/>    </dict></plist>

Выставляю права (они и так нормальные):

$ sudo chmod 644 me.ctrld.route.plist

Этот способ я продемонстрировал для полноты, как можно выполнить нужную операцию при старте системы.


Нажатие Ctrl-Alt-Del в Screen Sharing

]]>

5 сентября, 2011

]]>

Если вам нужно получить доступ по VNC к Windows (предварительно нужно туда поставить VNC-сервер, это отдельный вопрос), и вы видите в Screen Sharing Login Window с предложением нажать Ctrl-Alt-Del, то правильная комбинация клавиш под Mac – это Ctrl-Option-Cmd-Fn-Backspace (можно ещё попробовать вариант без Fn).


Решение проблемы отсутствия настроек APN в iOS 5 beta 7 с помощью iPhone Configuration Utility

]]>

2 сентября, 2011

]]>

UPD. Есть простой вариант решения вопроса – зайти на сайт www.unlockit.co.nz с iPhone. Там не было Utel, по моему запросу его добавили. Craig, спасибо за оперативность.

Если вы, ваши коллеги или друзья являются разработчиками под iOS с активной подпиской на iOS Developer Program, и при этом по работе должны откатывать программы под iOS 5 или просто достаточно любопытны, то скорее всего вы поставили вышедшую вчера версию iOS 5 beta 7.

Несмотря на рекомендацию Apple устанавливать бета-версии только на выделенные для разработки устройства, это не всегда выполняется и многие их ставят на “боевые” iPhone и iPad, тем более, что это не beta 1 или 2, и шансы нормальной работы свежего iOS достаточно велики.

Всё было бы хорошо, но вот эти два экрана после установки меня не порадовали:

В свежей версии убрали возможность ручной настройки APN, а для “неофициальных” операторов это смерти подобно. Нет настройки APN – невозможно прописать настройки, специфичные для оператора – нет возможности установить PDP Context – Интернет доступен только по WiFi, точка.

Я проверял двух украинских операторов (Киевстар и Утел) – для обоих сервисы Интернет не работают.

Кстати, ошибок в этой версии хватает, например, перестали проигрываться музыка и подкасты. Я делал обновление через OverTheAir, и как раз в этом была проблема. По информации с Apple iOS Dev Forum (Adam Heeley) нужно переставить iOS через iTunes: “It would appear that most people having this issue have updated via OTA Delta. If you have this issue the correct fix is to backup your device and restore using the download IPSW. This will fix your issue. Please understand that Delta updates are VERY new to these devices so recoding can show unpredictable results when applied via OTA. The IPSW restore will in most cases rectify the problems by using a complete compiled version of the code rather than the Delta method (changing only parts of the OS)”.

Решить вопрос с APN можно, имея “правильную” SIM-карту официального оператора, например, Vodafone. Но сомневаюсь, что такая карта есть под рукой.

Есть более универсальный метод, подсказанный мне @perlik81 – iPhone Configuration Utility.

Иду на сайт Apple в раздел Enterprise, выбираю интересующую меня версию “iPhone Configuration Utility 3.3 for Mac OS X“. Ставлю, запускаю (/Appliations/Utilities/iPhone Configuration Utility).

Configuration Profile, New. В General даю имя, идентификатор (мой домен ctrld.me, профайл назову apnfix, значит идентификатор me.ctrld.apnfix), описание.

Advanced, прописываю нужный APN, имя пользователя и пароль. Настройки, конечно же, зависят от оператора и тарифного плана. Например, для Utel используются APN unlim.utel.ua или 3g.utel.ua (смотрите договор), для пакетных тарифов Киевстар – www.kyivstar.net. Внимание, уточняйте настройки в договорах или у оператора, прописывание неправильного APN может привести в лучшем случае к отсутствию сервиса, а в худшем – к огромным счетам за Интернет, прецеденты были.

Share, Security: None, отсылаю настройки по email (да, у вас должен быть WiFi):

По идее можно установить профайл напрямую на устройство через эту же утилиту, но у меня почему-то не получилось.

Перехожу к iPhone, проверяю почту:

Устанавливаю:

Для гарантии включаю/выключаю Airplane Mode, запускаю браузер, доступ в Интернет заработал:

Удалить профиль можно в Preferences/General/Profiles.

Я не нашёл, как настроить MMS. Лично мне достаточно email, WhatsApp и iMessage, а MMS, впрочем, как и Duke Nukem, должен умереть.

Если вы не хотите возиться с iPhone Configuration Utility, то можете списать и переслать по почте готовые профили:


Очень простая установка OS X Lion в виртуальной машине или же выход Parallels Desktop 7

]]>

1 сентября, 2011

]]>

Сегодня вышел долгожданный Parallels Desktop 7. Для владельцев предыдущей версии обновление доступно уже сейчас по цене $49.99, а новые покупатели смогут купить продукт по цене $79.99 с 6 сентября.

Я несколько лет использую VMWare Fusion (понятно, что я использую лицензионный продукт, другим не промышляю). Задачи достаточно тривиальны:

  • запустить Windows 7, проверить приход денег по WebMoney и сделать несколько платежей за мобильную связь, Интернет и кабельное TV
  • проверить работу OS X Server перед важными операциями по установке обновлений, запуску новых сервисов, имитация сбоев и восстановление после них
  • посмотреть свежую версию дистрибутива Linux или FreeBSD
  • запустить виртуальную машину для анализа уязвимостей сети.

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

VMWare хорош, но нет ощущения полёта. Захотелось лучшего, учитывая очень хорошие отзывы о Parallels Desktop и долгое отсутствие обновлений VMWare.

В комментариях к статье по VMWare произошёл такой диалог с Z][ANSWER:

ctrld: А вот какие твои ощущение по поводу Parallels vs VMWare? Что работает лучше/быстрее/удобнее (хотя бы субъективно)?

Z][ANSWER: Субъективно Parallels быстрее и фичастее, по крайней мере в моих задачах. VMWare мне больше нравиться в плане дизайна, он какой-то более Mac Way, нежели Parallels. Задачи я с помощью них решаю вполне обычные, виртуализирую Windows, для работы и Дальнобойщиков 3. Разные Linux дистрибутивы, для работы, Mac OS X Server 10.6…. Из того, что мне показалось более быстрым в Parallels – это работа с 3D и дисковые операции. Хотя тут должен сказать, что Parallels 6 кроме отведённых 2 гигабайт, например Windows 7 HP, съедает ещё до 1 гигабайта под какие-то свои нужды. Что меня несколько заботит, пытаюсь выяснить под что, но пока не нашёл ответа. В VMWare мне не хватало раньше опции запрета бекапа через Time Machine, но сейчас бекаплю виртуалки тоже через неё на Time Capsule, поэтому этот минус отпал. По моим тестам, Parallels 6 быстрее чем VMWare 3, текущий, если выйдет новая версия, то попробую снова, если будет быстрее последний, перейду на него.

Желание перейти на Parallels было, но оно было далеко не первоочерёдным.

И вот сегодня благодаря @ru_Parallels мне удалось посмотреть новую версию Parallels Desktop 7. Спасибо!

Есть ещё шероховатости. Виртуальная машина Windows 7 из VMWare нормально мигрировала под Parallels, но установка пакета драйверов Parallels Tools завершилась неудачно и сеть не работает. При переключении в Lion Full Screen в Win 7 (наверное из-за сбоя установки) автоматом не переключается разрешение и происходит масштабирование (это лечится ручной установкой правильного разрешения). Но в основном всё работает!

Со всяческими экспериментами у меня не всё как у людей. Recovery HD на поднятой из бекапа TimeMachine системе не появилось, на Mac mini поставил RAID0, и там тоже Recovery HD нет, и на флешку с помощью Lion Recovery Disk Assistant записать его нельзя. Но клянусь, если вставлена флешка с Recovery HD (или есть раздел Recovery HD на диске), то в обчёркнутом месте появится опция установки с этого Recovery HD (для чистоты эксперимента я переформатировал флешку с Recovery HD, а создать новую не смог – именно поэтому я утверждаю о наличии возможности):

Пришлось идти кривой дорожкой на известный трекер и стягивать установочный диск Lion. Подсунул образ установщику и через некоторое время у меня стоял десктопный OS X Lion:

Пакет Parallels Tools поставился идеально и с виртуальной машиной стало возможным нормально работать.

От режима Lion Full Screen я в полном восторге. OS X Lion живёт на отдельном виртуальном экране и переключение производится стандартным жестом смахивания. Очень эффектно.

Ресурсов виртуальная машина потребляет в самый раз, на ноутбуке можно параллельно работать. Больше сказать пока нечего.

Описание новых функций Parallels Desktop 7 здесь приводить не буду – если захотите, то вы с ними сможете ознакомиться при запуске инсталлятора или же посмотреть текстовый файл с моего Dropbox.

Ещё хочу сказать о полезной возможности – к виртуальным машинам и хостовой системе можно получить доступ на iPhone/iPad через программу Parallels Mobile (на время акции $4.99, а потом – $19.99). Если у вас уже установлена бесплатная предыдущая версия, то и обновление будет бесплатным.

Такой вот аналог LogMeIn. Ничего не могу сказать об удобстве, я с программой работал мало, но экран виртуальной машины она показывает и какие-то действия производить с этим экраном можно:

Напоследок хочу сказать о лицензировании. Если у вас два компьютера и на двух нужно запускать Parallels Desktop, то нужно иметь две лицензии:

You may use one copy of the Software activated by a license key on a single instance (virtual or physical) owned, leased, or otherwise controlled by you, at a single time.

Мне непонятна фраза “at a single time”. Может запускать “по очереди” вполне допускается? Но это так, к слову.

Пока я рассказал о первом впечатлении от Parallels Desktop 7. И это впечатление хорошее.


Блогу исполнилось два года

]]>

1 сентября, 2011

]]>

20 августа блогу исполнилось два года. За это время написано 370 статей. С конца прошлого года был длительный перерыв, но я снова приступил к активной работе.

-->-->

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

До скорого!

-->-->

Настройка syslog-сервера на OS X для приёма сообщений TimeCapsule

]]>

31 августа, 2011

]]>

Дано: OS X – одна штука, Time Capsule – одна штука.

Нужно: писать сообщения syslog от TimeCapsule в syslog сервера.

На TimeCapsule (впрочем, как и на AirPort Express/Extreme) настройка элементарна:

Но в syslog “из коробки” эти сообщения не попадают.

Что делать?

Рецепты нашёл на SuperUser и на Shortcut.

Нужно отредактировать конфигурацию launchd для запуска syslogd.

Преобразую plist в приспособленный для редактирования вид xml:

$ sudo plutil -convert xml1 \/System/Library/LaunchDaemons/com.apple.syslogd.plist

Добавляю фрагмент в конце файла, выделенный жирным текстом:

$ sudo vim \/System/Library/LaunchDaemons/com.apple.syslogd.plist    <dict>        <key>SockPathMode</key>        <integer>438</integer>        <key>SockPathName</key>        <string>/var/run/syslog</string>        <key>SockType</key>        <string>dgram</string>    </dict>    <key>NetworkListener</key>    <dict>        <key>SockServiceName</key>        <string>syslog</string>        <key>SockType</key>        <string>dgram</string>    </dict></dict>

Преобразую plist к предыдущему формату binary1:

$ sudo plutil -convert binary1 \/System/Library/LaunchDaemons/com.apple.syslogd.plist

Правлю конфигурацию syslog для отправки сообщений в файл AirPort.log:

$ sudo vim /etc/syslog.conf#local0.*                       /var/log/appfirewall.loglocal0.*                        /var/log/AirPort.log

Не забываю создать лог-файл:

-->-->
$ sudo touch /var/log/AirPort.log

Перезапускаю syslog:

$ sudo launchctl unload \/System/Library/LaunchDaemons/com.apple.syslogd.plist$ sudo launchctl load \/System/Library/LaunchDaemons/com.apple.syslogd.plist

Проверяю, что syslog стал слушать по сети:

$ sudo lsof -i:514COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAMElaunchd    1 root   55u  IPv4 0xffffff800cb05d60      0t0  UDP *:sysloglaunchd    1 root   74u  IPv6 0xffffff800bb94920      0t0  UDP *:syslogsyslogd 2348 root    5u  IPv4 0xffffff800cb05d60      0t0  UDP *:syslogsyslogd 2348 root    6u  IPv6 0xffffff800bb94920      0t0  UDP *:syslog

Проверяю поступление сообщений, переподключив iPhone по WiFi:

$ tail -f  /var/log/AirPort.logAug 31 17:20:43… 80211: Disassociated with station 7c:c5:37:70:d3:9fAug 31 17:20:44… 80211: Rotated TKIP group key.Aug 31 17:20:53… 80211: Associated with station 7c:c5:37:70:d3:9fAug 31 17:20:53… 80211: Authenticating station 7c:c5:37:70:d3:9f to RADIUS.Aug 31 17:20:53… 80211: Installed unicast CCMP key for supplicant 7c:c5:37:70:d3:9f

Для “контрольного в голову” захожу в Console.app и выбираю нужный лог:

Работает. Замечательно.

Я всё это делал с OS X Lion Server, но должно работать и на обычном OS X.

-->-->

Решение проблемы синхронизации OmniFocus по WebDAV с OS X Lion Server

]]>

29 августа, 2011

]]>

Mac – замечательная вещь. Отличное железо, отличная операционная система. Просто работаешь, не задумываясь ни о чём. Но как только нужно сделать шаг в сторону или копнуть на хоть на пару сантиметров вглубь, как начинается такие сложности, что уже и не рад красотам и тоскливо вспоминаешь о Linux.

Итак, дана простейшая задача – нужно синхронизировать базу OmniFocus по WebDAV с OS X Lion Server, установленным на Mac mini Server.

С первого взгляда ничего особенного. В сервере заявлена поддержка WebDAV, копаясь в настройках общего доступа к каталогам я видел галочку включения WebDAV. Что ещё нужно? Ткнул в пару кнопок, всё заработало, ты счастлив и имеешь ещё один повод посмотреть свысока на бедных пользователей Unix – им-то приходится повозиться.

Но нет. Тыканья-тыканьями, а вот какой URL вводить в Omnifocus для доступа к WebDAV? Пока не зашёл в консоль и не заглянул в файл /etc/apache2/httpd_webdavsharing.conf, я не мог догадаться до “очевиднейшего” URL https://server.domain.com/webdav/.

Следующий этап заключался в поисках полного URL к нужной мне папке. Тоже не составило особого труда – Finder/Go/Connect to Server, ввод URL, взгляд на расшаренные папки.

Создание отдельного каталога для синхронизации, ввод URL в настройках OmniFocus – всё очевидно:

Нажатие кнопки Sync провозглашает начало тёмных веков: “Unable to synchronize database with server”…

Попытка переименования каталога приводит к ошибке:

Не думайте, я не первый год за консолью. chmod 777 на родительский каталог был выставлен после первой неудачной попытки, но ничего не изменилось.

Чтение логов Apache (tail -f /var/log/apache2/*log) показало любопытные строки (а именно код 502 Bad gateway):

"MOVE /webdav/ctrld/Sync/untitled%20folder/ HTTP/1.1" 502 256 "-" "WebDAVFS/1.9.0 (01908000) Darwin/11.2.0 (x86_64)""PROPFIND /webdav/ctrld/Sync/._untitled%20folder HTTP/1.1" 404 233 "-" "WebDAVFS/1.9.0 (01908000) Darwin/11.2.0 (x86_64)"

Увеличение LogLevel до debug:

$ sudo vim /etc/apache2/httpd.conf#LogLevel warnLogLevel debug$ sudo apachectl restart

Повтор попытки – логи не говорят ни о чём.

Задумчивость, попытки найти варианты решения в Google. Сообщение в форуме Omnigroup “Lion Server for WebDav” порадовало: “Its a no go for now. It looks like some sort of permissions issue but they are aware of it and are working on it.”

-->-->

Приступ ностальгии по Linux. Достал рабочую конфигурацию WebDAV со своего Ubuntu Server. Модифицировал и вставил её в конец httpd_webdavsharing.conf (да, именно этот файл включается в sites/0000_any_443_.conf, что даёт шансы на доступ к WebDAV по https). Само собой, вы должны использовать свои данные, а не копировать мои:

$ sudo vim /etc/apache2/httpd_webdavsharing.confDavLockDB /var/tmp/DavLockAlias /secretplace /Users/ctrld/Sync<Directory /Users/ctrld/Sync>DAV OnAuthType DigestAuthName "UserWebDAV Gateway"Require valid-user</Directory>

Здесь тоже было сказано много лестных слов об Apache для Mac (было убито минут 15 на попытки понять, почему сервер не стартует), но эту часть я опущу.

Не забыл поставить разрешение, дающее право записи для Apache (правильные права несколько другие, но ради простоты я сделал именно так):

$ chmod 777 ~/Sync

Рестарт Apache

$ sudo apachectl restart

Настройка нового URL в OmniFocus:

Нажатие на Sync, и всё заработало (конечно же, производится аутентификация пользователя, это само собой разумеется):

"PUT /secretplace/OmniFocus.ofocus/…client-write-in-progress-… HTTP/1.1" 201 311 "-" "OmniFocus/77.75.9 Darwin/10.7.2""MOVE /secretplace/OmniFocus.ofocus/…client-write-in-progress-… HTTP/1.1" 201 289 "-" "OmniFocus/77.75.9 Darwin/10.7.2"

OmniFocus на Mac работает, настроил iPhone – и здесь всё в порядке.

Задача решена. Но помните – ручные правки конфигов не приветствуются в OS X Server. Любое обновление Server.app может привести к потере ручных изменений. Поэтому сохраняйте копию конфига и будьте готовы восстановить его, если синхронизация перестанет работать.

Как временное решение данный рецепт вполне подходит. Посмотрим, будет ли исправлена ошибка в очередном обновлении Server.app. Кстати, подскажите, как открыть Bug Report в Apple?

-->-->

Включение субпиксельного сглаживания шрифтов на OS X Lion для сторонних LCD-мониторов

]]>

26 августа, 2011

]]>

Подключил к Mac mini два привычных монитора LCD HP 19″ (да, согласен, использовать такие мониторы в 2011-м году – позор, но других нет). Антиалиасинг был страшен.

Поделился этой проблемой в Twitter и получил отличный совет от @502119:

В статье “Включаем субпиксельное сглаживание шрифтов в Snow Leopard для мониторов производства не Apple” описана теория и практика правильного антиалиасинга. На OS X Lion рецепт работает (для гарантии после добавления параметра я перезагрузился):

$ defaults -currentHost write -globalDomain AppleFontSmoothing -int 2

Сравните скриншоты. Terminal.app до включения хака:

и после:

Safari до включения:

-->-->

и после (на маленькой картинке слабо видно, но эффект отличный):

iTerm до включения:

и после:

На мой вкус шрифты стали пригодными для комфортной работы. Что и требовалось получить.

-->-->

Сбой FileVault 2 и восстановление системы из бекапа Time Capsule

]]>

25 августа, 2011

]]>

После перезагрузки Macbook Pro перестал загружаться. Грустная картинка с перечёркнутым кругом на стадии загрузки ядра.

Танцы с бубном, загрузка с Recovery HD (для FileVault2 нужно держать нажатым Cmd+R всё время до появления интерфейса восстановления).

Загрузка в Verbose Mode показала безрадостную картину с chksum error:

Physical volume status Failed:

Ситуация усугубилась переходом на FileVault2 с CoreStorage. Всё было бы ничего, но инструментов для восстановления LVM нет. Функция Restore Disk в Disk Utility закончилась с ошибками, восстановление невозможно:

Почему произошёл сбой, я не могу сказать. Последний рестарт системы был плановым, завершился нормально. Последнюю неделю я много экспериментировал с созданием/удалением томов CoreStorage на других дисках, но системный диск я не трогал, да и примонтированный том изменить было бы нельзя. Можно грешить на OS X beta 10.7.2, но и здесь доказательств нет. Зашифрованный том CoreStorage на втором диске работают без замечаний, сбой произошёл только на системном.

При поиске в Google я нашёл и других таких же “счастливчиков”. Не буду обобщать, технологии CoreStorage и FileVault2 многообещающи, но перед их включением рекомендую как следует подумать и делать бекапы Time Machine (как минимум) и регулярные клоны в SuperDuper! (как максимум).

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

Хочу порекомендовать заранее продумать Disaster Recovery Plan. Нужно знать, что потеряешь при подобной ситуации и эти потери минимизировать. Например, даже этот единственный потерянный документ остался бы, если бы я держал его в Dropbox.

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

Приход в офис, первостепенные рабочие вопросы решены, появилась возможность уделить время восстановлению.

Ноутбук подключен кабелем в LAN-порт Time Capsule (не надейтесь на WiFi, восстановление займёт намного больше времени). Приступим.

Включил ноутбук, нажал при старте Cmd+R для загрузки с Recovery HD. Через несколько секунд отпустил. Появилось окно ввода пароля. Не то. Мало жал на Cmd+R. Выключение, включение. На этот раз Cmd+R держал от момента появления серого экрана, продолжал при появлении яблочка, отпустил при появлении интерфейса Recovery HD.

-->-->

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

Конфигурация Time Capsule, перевод File Sharing от индивидуальных учётных записей к общему диску. Перезагрузка Time Capsule. Попытка выбора для восстановления сетевого диска TC, тишина.

Запуск терминала. На общем диске есть каталоги пользователей, мой бекап находится в моём каталоге. Логично. Но программа восстановления такое не понимает. Ладно. В терминале перенёс каталог sparse bundle image с бекапом в корень общего диска. Повторил выбор диска для восстановления. Наконец-то, увиделись бекапы.

Лёгкая прострация, последний бекап был в июле:

Потом вспомнил, что я переименовывал раздел с Macintosh HD на Lion. Выбрал нужный раздел в выпадающем списке, последние бекапы есть. Начал восстановление – но куда восстанавливать? Раздел на системном диске отсутствует.

Запустил Disk Utility. Выбрал мой диск. Удалить и создать новый раздел система даёт, но при попытке применения изменений говорит о невозможности отмонтировать диск.

Короткое размышление. Логично – система загружена с Recovery HD на этом же диске, а переразбивка подразумевает удаление всех разделов.

Вспоминаю о “Lion Recovery Disk Assistant“, нахожу в завалах хлама флешку (2 GB хватило), устанавливаю на неё Recovery HD (на другом Lion! Если бы его не было, то пришлось бы поиграть в “Ханойскую башню”).

Пока не знаю, буду ли я включать FileVault 2. Подожду, подумаю, может что придумаю.

-->-->

Mac mini with Lion Server

]]>

23 августа, 2011

]]>

Давно мечтал, почти два года.

Большое спасибо Эдуарду из киевской компании “Edam. The art of Apple” за отличную железку:

-->-->-->-->

Влияние шифрования AES-XTS на производительность файловых операций для диска 5400 rpm

]]>

22 августа, 2011

]]>

В моём ноутбуке стоит два жёстких диска. Первый – SSD-диск Intel X25-M G2 c операционной системой, уже зашифрован с помощью FileVault 2. Пришло время второго диска с данными, 500 GB 5400 rpm, который изначально был установлен в моём Macbook Pro 2.8 GHz.

Disk Utility пока не может работать с CoreStorage, поэтому приходится использовать командно-строковую утилиту diskutil.

Нахожу, какой раздел мне нужно перекодировать (Data):

$ diskutil list/dev/disk2   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *500.1 GB   disk2   1:                        EFI                         209.7 MB   disk2s1   2:                  Apple_HFS Legacy                  50.0 GB    disk2s2   3:                  Apple_HFS Data                    449.6 GB   disk2s3

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

$ diskutil corestorage convert /dev/disk2s3 -stdinpassphraseNew passphrase for converted volume: **********…Finished CoreStorage operation on disk2s3 DataEncryption in progress; use `diskutil coreStorage list` for status

С разделом можно работать сразу же, его шифрование производится в фоновом режиме. Процесс достаточно длительный. Я даже перевёл ноутбук в Sleep, не дождавшись окончания, но после просыпания шифрование продолжилось. Статус шифрования можно посмотреть командой (прогресс не виден, только статус Converting/Complete):

$ diskutil coreStorage list…        Logical Volume Family 3E0D6C21-4178-4597-9F79-91E13A02E6FA        ----------------------------------------------------------        Sequence:               6        Encryption Status:      Unlocked        Encryption Type:        AES-XTS        Encryption Context:     Present        Conversion Status:      Converting        Has Encrypted Extents:  Yes        Conversion Direction:   forward

Когда шифрование завершится, “Conversion Status:” станет “Complete”.

Сделал замеры производительности до и после шифрования, результаты приведены ниже.

Последовательное и случайное чтение/запись небольших файлов

Без шифрования

С шифрованием

-->-->

Скорость операций случайного чтения/записи почти не изменилась. Последовательных – изменилось незначительно. Интересно приведение скорости записи после шифрованию к нормальному виду (на первом графике скорость записи выше скорости чтения). Возможно шифрование привело к дефрагментации диска.

Чтение/запись больших файлов размером от 1 до 10 MB

Без шифрования

С шифрованием

Скорость изменилась незначительно, на глаз до 4-7%. Всплеск скорости записи после шифрования вероятно вызвано эффектом кеширования, добавляемым подсистемой шифрования.

Чтение/запись больших файлов размером от 10 до 100 MB

Без шифрования

С шифрованием

Кривые чтения и записи стали отличаться, на мой взгляд из-за большей ресурсоёмкости шифрования записи. Скорость записи ухудшилась на 15%, чтения – на 5%.

Чтение/запись файла 200 MB

Без шифрования

С шифрованием

Скорость записи ухудшилась на 8%, чтения – на 2%.

Вывод

При включении шифрования AES-XTS на жёстком диске 5400 rpm в ноутбуке с процессором Core 2 Duo без поддержки команд AES-NI наблюдается ухудшение скорости записи до 15%, а скорости чтения – до 8%. Что вполне приемлемо как плата за безопасность данных.

-->-->


iPhone 4S — привозим первыми и не наглеем
Техника Apple в магазине на Facebook

© 2007—2012 Макдак. Россия.

© Все права на новости принадлежат соответствующим источникам.


 Андрей Шипилов — идея, дизайн, вёрстка, программирование и поддержка.

 
]]>
]]>