Два жёстких диска в ноутбуке. Optibay

]]>

28 декабря, 2010

]]>

Забыл сказать — собираюсь в ближайшее время порадовать любителей железа обзором установки и анализом времени непрерывной работы MacBook Pro с двумя жёсткими дисками. На складе в USA ждёт отправки MCE OptiBay, с помощью которого я установлю штатный диск 500 GB 5400 rpm вдобавок к основному SSD Intel X25-M G2.

Через неделю последовала запись в Twitter: “Хочешь насмешить богов – поделись своими планами”. Золотые слова. Я не учёл, что приятная добавка к посылке в виде пачки чая “Золотой Юннань” приведёт к возврату всего комплекта отправителю. Оказалось, что есть два вида правил DHL – общие и частные. Я смотрел перед заказом общие, а запрет на чай был в частных.

Но наконец-то OptiBay пришёл в Киев:

Я уже установил второй диск в ноутбук и теперь у меня SSD Intel X25-M G2 на 160 GB и бывший штатный HDD на 500 GB 5400 rpm для больших файлов, фотографий, видео, медиатеки iTunes и всего прочего.

Вчера я сделал замер времени автономной работы ноутбука с одним SSD, после полного заряда батареи проведу два теста для оценки, как повлияла установка второго диска.

По поводу OptiBay могу сказать одно – идея хорошая, но это настолько явный Китай, что даже слегка противно. Держатель для диска с корпусом для DVD OBSXGB-UNB стоит $99. Корпус отстойный, пришлось его оставить полураскрытым, иначе оптический диск зажимался и тёрся. Подключение привода DVD двумя кабелями USB – мда, слов нет. Отвёртка, входящая в комплект немного не того размера, проскальзывает при закручивании, и к тому же без магнитного эффекта. Пожалели кронштейн для крепежа привода, но это так, к слову. Одним словом – жёсткий Китай и красная цена комплекту – 20$. У меня сложилось впечатление, что деньги берутся только за счёт идеи.

Своё основное дело OptiBay делает – второй диск работает. Но если вы раздумываете купить OptiBay, то лучше поищите альтернативу. И если вам нужен привод DVD, то купите нормальный внешний привод.

Несмотря на лёгкий негатив я очень доволен – установка второго диска вполне окупает портраченные деньги.


Анализ системных вызовов процессов в Mac OS X с помощью dtruss

]]>

22 декабря, 2010

]]>

Помните, я рассказывал о пользе strace под Linux для исследования системы и поиска проблем?

Для Mac OS X есть аналогичная утилита на базе DTrace – dtruss.

Сегодня при помощи двух команд “sudo dtruss -n xftpd -f” и “sudo tcpdump -i lo0 port 53″ я разобрался в мистической проблеме длительных задержек при заходе на Mac OS X Server по FTP.

Примеры использования dtruss

Показать системные вызовы всех xftpd (-n xftpd) с отслеживанием дочерних процессов (-f):

$ sudo dtruss -n xftpd -fPID/THRD  SYSCALL(args)  = return24804/0x76294:  getpid(0x0, 0x0, 0x0) = 24804 024804/0x76294:  open_nocancel("/dev/urandom\0", 0x0, 0x0) = 3 024804/0x76294:  read_nocancel(0x3, "\2315\336\347\3546\355K\230\326r\2534qn\177\377\250;\0353\367\2769=a\363\350\255\032\361\017z\022\367\257;\315\363\vSg\021\"\252\211KSM\0", 0x74) = 116 024804/0x76294:  close_nocancel(0x3) = 0 024804/0x76294:  __sysctl(0xBFFFDC4C, 0x3, 0xBFFFDC5C) = 0 024804/0x76294:  issetugid(0xBFFFDC4C, 0x3, 0xBFFFDC5C) = 0 024804/0x76294:  geteuid(0xBFFFDC4C, 0x3, 0xBFFFDC5C) = 0 024804/0x76294:  __sysctl(0xBFFFDC14, 0x2, 0xBFFFDBDC) = 0 024804/0x76294:  __sysctl(0xBFFFDBDC, 0x2, 0xBFFFDC5C) = 0 024804/0x76294:  shared_region_check_np(0xBFFFDE30, 0x2, 0xBFFFDC5C) = 0 024804/0x76294:  stat64("/usr/lib/libobjc.A.dylib\0", 0xBFFFCF6C, 0xBFFFDC5C) = 0 024804/0x76294:  stat64("/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation\0", 0xBFFFCF6C, 0xBFFFDC5C) = 0 024804/0x76294:  stat64("/System/Library/Frameworks/Security.framework/Versions/A/Security\0", 0xBFFFCF6C, 0xBFFFDC5C) = 0 024804/0x76294:  stat64("/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices\0", 0xBFFFCF6C, 0xBFFFDC5C) = 0 024804/0x76294:  stat64("/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos\0", 0xBFFFCF6C, 0xBFFFDC5C) = 0 0…

Проанализировать вызовы при запуске программы “df -k”:

$ sudo dtruss df -k

По процессу с нужным pid:

$ sudo dtruss -p 1637


Каникулы

]]>

20 декабря, 2010

]]>

Ð?Ð°Ñ‡Ð¸Ð½Ð°ÑŽÑ‚Ñ Ñ? Ñ€Ð¾Ð¶Ð´ÐµÑ Ñ‚Ð²ÐµÐ½Ñ ÐºÐ¸Ðµ каникулы, новогодние праздники и прочие развлечениÑ?. Я решил ÑƒÑ Ñ‚Ñ€Ð¾Ð¸Ñ‚ÑŒ Ñ ÐµÐ±Ðµ каникулы немного раньше, чтобы получить больше ÑƒÐ´Ð¾Ð²Ð¾Ð»ÑŒÑ Ñ‚Ð²Ð¸Ñ? от отдыха.

Желаю, чтобы вы Ð·Ð°Ð½Ð¸Ð¼Ð°Ð»Ð¸Ñ ÑŒ любимым делом и чтобы Ñ€Ñ?дом Ñ Ð²Ð°Ð¼Ð¸ были любимые люди и хорошие друзьÑ?.

До Ñ ÐºÐ¾Ñ€Ð¾Ð³Ð¾, через Ð½ÐµÑ ÐºÐ¾Ð»ÑŒÐºÐ¾ недель Ñ? Ñ Ð½Ð¾Ð²Ð° Ð¿Ñ€Ð¸Ñ Ñ‚ÑƒÐ¿Ð»ÑŽ к работе.

UPD 3.02.2011 Каникулы продлены.


Режим Field Test Mode на iPhone 4 с iOS 4.2.1

]]>

20 декабря, 2010

]]>

Внимание! Шкала уровня сигнала после запуска этого режима начинает отображаться в dBm. В некоторых случаях вернуться к традиционному индикатору нельзя, нужно или восстановить iPhone из резервной копии, или сделать jailbreak и установить SBShowGSMRSSI = 0 в com.apple.springboard.plist. Я опишу второй способ в отдельной статье.

Если вам от мобильной сети нужна больше, чем использование привычных услуг, то не мне вам объяснять, что такое “Field Test Mode” или же “Network Monitor”.

На iPhone 4 с iOS 4.2.1 (jailbreak не нужен) активировать этот режим можно, набрав “*3001#12345#*”:

Доступные разделы:

В PDP Context List, например, можно посмотреть свой IP-адрес:

iPhone далеко до Nokia NetMon, но это лучше, чем ничего.


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

]]>

16 декабря, 2010

]]>

Вспомнился живой классик: “Папа, а шо лучше – пулемет или танк?”.

Решил посмотреть, за сколько времени Handbrake перекодирует эпизод сериала на MacBook Pro Core 2 Duo T9600 2.8 GHz и за сколько – на сервере с 2 x Xeon X5260 3.33 GHz.

Mac:

real45m15.453suser77m57.843ssys1m2.710s

Server:

real    21m13.481suser    65m56.651ssys     0m30.630s

Вывод: танк для этой задачи лучше.


Успешное внесение второго iPhone в белый список IMEI

]]>

13 декабря, 2010

]]>

Наконец-то моя эпопея с внесением моих iPhone в белый список IMEI завершилась. Завершилась успешно.

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

  1. macstore.org.ua и невыполненное обещание о «белом» списке IMEI
  2. Практика внесения iPhone в белый список централизованной базы IMEI Украины
  3. Ответы на заявления о внесении IMEI iPhone в белый список

На первый запрос о внесении iPhone 3Gs в белый список IMEI я получил ответ, что iPhone уже был зарегистрирован в сети одного из мобильных операторов Украины до момента, который я указал как время ввоза устройства из-за рубежа по отметкам в загранпаспорте (да, я купил его в MacStore, который клялся внести телефон в белый список, но не сделал этого на протяжении года, поэтому пришлось всё делать самому).

Я вспомнил, что после появления iPhone 3Gs в продаже я ездил в Киргизию, и это было отражено в загранпаспорте. Киргизия — страна далеко не продвинутая технологически, там нет представительств Apple, но попытка — не пытка и я отправил второе заявление. Несколько недель — и мой IMEI в белом списке.


Apple TV

]]>

9 декабря, 2010

]]>

Надоело мне каждый раз подключать кабель от телевизора к ноутбуку. Захотелось ощутить прелести (и недостатки AirPlay):

Спасибо компании EDAM (Киев) и лично @symphonius за Apple TV.

Да, я знаю, что новая модель ориентирована на стриминг. Если вам нужно более автономное устройство, почитайте статью Павла Цибулина “Яблочко на экранчике“, в ней отлично описано, почему стоит остановить свой выбор на Apple TV предыдущего поколения.


Мой новый проект, посвящённый IPv6

]]>

8 декабря, 2010

]]>

Адреса IPv4 заканчиваются. По состоянию на 30 ноября в мире их осталось 2.73% и это количество закончится через 3 месяца. Пора готовиться к переходу на IPv6.

Тема IPv6 выходит далеко за Mac OS X и Apple, но рассмотреть её в деталях мне хочется. Поэтому я решил создать отдельный проект под названием “Let’s IPv6“:

Вы можете прочитать мои мысли по IPv6 в статье «IPv6: что год грядущий нам готовит».

Также я представляю вашему вниманию статью “Настройка IPv6 на Mac OS X для доступа к ресурсам IPv6 в Интернет“.

Блог пока в стадии настройки и наполнения, дизайн аналогичен The Apple Geek, что разрешено разработчиком коммерческой темы.

Если вас тоже интересует IPv6, то заходите, подписывайтесь по RSS. Я буду описывать много вопросов – начиная от базовых понятий заканчивая детальными инструкциями по настройке различного сетевого оборудования, операционных систем, а также приводить новости из мира IPv6.


Казусы автокоррекции в iPhone

]]>

7 декабря, 2010

]]>

Автокоррекция в iPhone может быть смешной, а может и доставить неудобства, особенно, если вкралась в серьёзный диалог. Вот, например, какую замену iPhone предлагает на слово “фичам”, например, в фразе “Новым фичам нужно уделить особое внимание”. Это, конечно, жаргонное слово, но оно часто употребляется в IT-среде.

Есть англоязычный сайт, который собирает подобные курьёзы “DYAC“, или же “Damn you, AutoCorrect!”. Интересно почитать.

Будьте бдительны.


О бизнесе ремонта и тюнинга iPhone и iPad. Взгляд изнутри

]]>

6 декабря, 2010

]]>
Предисловие

Сегодня я хочу представить вам моё первое интервью с Яном, основателем фирмы ЭтоСервис, рекламу которой вы видите в правой части сайта. Но к рекламе интервью имеет далёкое отношение — мы с Яном славно пообщались по email и IM, и у меня возникла идея поговорить о бизнесе ремонта техники Apple.

Журналистика — интересное занятие, и попробовать свои силы меня побудила книга Матвея Ганапольского «Кисло-сладкая журналистика». Насколько получилось — судить вам.

Жирным шрифтом я отмечаю свои вопросы, обычным — ответы Яна.

Интервью

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

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

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

Мы работаем в московском регионе, количества заказов у нас нас хватает чтобы делать какие-либо выводы о том, насколько качественны «железки» Apple.

Наиболее частный наш клиент — это iPhone. Причины поломок настолько обширные, что проще их поделить на 2 группы: по вине Apple и пользователя.

Мне часто задают вопрос: «А бывает ли у Apple заводской брак?» — конечно же, исключать это нельзя, но вероятность его настолько мала, что я практически не верю в это. Куда чаще люди сами выводят из строя свои девайсы.

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

Ещё раз хочу сказать, что первостепенная причина выхода их строя iPhone, iPad или iPod является небрежное обращение, заводские браки очень редки.

Недавно я сам чинил свой iPad. Починил, но сломал клипсы. В процессе вспомнил анекдот:

Звонок в магазин по продаже и обслуживанию компьютеров и комплектующих:

Клиент(К): Здравствуйте, у меня принтер печатает с дефектами, а гарантия кончилась. Сколько стоит его починить?

Менеджер(М): Починить стоит 30$, но вы можете самостоятельно попробовать извлечь оттуда картридж, потрясти его, прочистить, заправить новыми чернилами. Так будет гораздо дешевле!

К: Спасибо большое, я так и поступлю. А ваш директор знает, что вы даёте такие советы? Фирма ведь без денег останется…

М: конечно, это же его инициатива. Дело в том, что после того, как вы самостоятельно попробуете починить принтер, то заплатите нам за ремонт гораздо больше!

Можешь вспомнить случаи, когда устройства попадали тебе в руки после таких ремонтов?

Да, могу вспомнить. Часто попадаются iPhone, корпус которых хотели подковырнуть для открытия, и когда хозяин iPhone видел, что для разбора того же 3G или 3GS нужна обычная присоска, то был удивлен. Олег, не расстраивайся, когда-то и мы жертвовали несколькими устройствами, чтобы научится все делать без ущерба технике. Тебе повезло, что ты не порвал шлейф на своем iPad. Не рекомендую делать это самостоятельно.

Какие модели iPhone самые надёжные?

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

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

В моём iPad дважды была одна и та же проблема — он переставал заряжаться и iTunes его не видел. Проблема была в «iPad Wi-Fi/Bluetooth/Dock Daughterboard», но, к счастью, разборка/передёргивание/сборка мне помогла. Много ли обращений по подобному поводу? И в чём реально проблема? Ведь «пнуть по шинам» — это далеко не инженерный ответ на вопрос о том, в чём причина.

На моем памяти 4 таких случая, причины везде были разные:

  • попадание влаги (iPad использовали в ванной);
  • микротрещины в SKU17527 (твоя деталь) или в других частях платы, но сами по себе трещины не появляются, а бывают в случаях падения, деформации или заводского брака;
  • не соблюдение рабочих температур;
  • черт знает что, как в твоем случае. Причиной может стать даже самая обычная пылинка, замкнувшая цепь, но, к сожалению, реальную причину можно диагностировать только в сервисном центре, рассмотрев плату под микроскопом;

Какие ещё частые поломки iPad?

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

Что сейчас с доставкой запасных частей для ремонта? Надолго ли они оседают на таможне?

Возможно не все знают, а другие сервисные центры будут на меня злиться, но оригинальных запчастей на iPhone, iPad или iPod не бывает. Apple и организации-помощники не выпускают никакой другой продукции, кроме готовых устройств. Те запасные части, которые в настоящее время устанавливаются взамен вышедших из строя, довольного неплохого качества и скорее поломается что-то другое, нежели замененная запасная часть. В настоящий момент проблем с доставкой запчастей не наблюдается, все хотят работать, в т.ч. и сотрудники Федеральной таможенной службы.

Можешь рассказать о самых интересных случаях? Вроде того, как iPhone спас жизнь владельцу из-за того, что пуля отрикошетила от него?

Да, однажды мой iPhone спас нам всем жизнь. Было и смешно и слёзно.

Одна известная личность из телепроекта «Дом 2» отдала нам свой телефон на обтяжку его шкурой белой кобры.

Разобрав телефон, мы уже заканчивали работу по коже и решились позвонить и сообщить, что телефон уже почти готов и можно его забирать, в ответ она нам сообщила, что очень спешит, будет примерно через час проездом и попросила чуть зарядить телефон. Мы как добрые, заботящиеся люди так и сделали. Подключили батарею iPhone к так называемой «лягушке», это своего рода блок питания, с возможность регулирования напряжения.

Все было выставлено как нужно, но кто-то (до сих пор так никто и не признался) выставил 11,5V. Через время мы услышали громкий хлопок, долго не могли понять что же это было и даже забыли через время. Как только мы полностью закончили работу с кожей и начали собирать телефон, мы поняли одно — это стрельнула батарея того самого iPhone, а в наличии просто не было такой же батареи.

В этот момент открывается дверь и заходит мадам с «Дом 2», цвет нашего лица изменился на такой, что описать просто нельзя. Она была злой на вид и говорила, что торопится, я глотнул, сделал шаг вперед, сформулировал мысли о том, как скажу все это, как кто-то схватил сзади и затянул обратно в мастерскую, это был мастер Денис. Он сказал: «Ты пока разбирай свой iPhone и меняй батарею, а я её буду развлекать.»

В тот момент это было просто гениальной идеей. Я разобрал свой iPhone и поменял батарею минуты, наверно, за 4. Вот таким образом мой iPhone спас нам всем жизнь и мы не облажались.

Я слыхал, что батареи в iPhone 3G достаточно недолговечны. Так ли это, или всё зависит от профиля использования? Как бы ты посоветовал заряжать iPhone?

Наверное все, кто интересовался iPhone с самого начала, помнят историю о том, что батарея первого iPhone должна была жить всего 6 месяцев. Опять хочу напомнить, что мой первый iPhone ещё работает и весьма не плохо, не говоря уже про 3G.

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

А iPad?

Если батарея iPad будет работать вся, т.е. по полному циклу, то она прослужит года 3 минимум. Не верьте сервисным центрам, устанавливающим батареи повышенной емкости и так далее, никогда такие батареи не будут лучше той, что уже стоит. Батарея меняется только в крайнем случае, во всех остальных достаточно «погонять» её на всю.

Что ты можешь посоветовать для длительного сохранения в форме iPhone?

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

Пользуешься ли ты чехлами для iPhone? Почему пользуешься/не пользуешься? Я лично предпочитаю носить железку в кармане без всяческих плёнок/чехлов — iPhone и так красив, а царапины (в разумных пределах) только украшают.

Олег, после покупки iPhone 4 я пользуюсь чехлом, но исключительно в эстетических целях. У меня красивый чехол из жженой крокодиловой шкуры. Носить или не носить чехол — личное дело каждого, тут нельзя упрекнуть человека в чем-либо, ведь чехол защищает, а не вредит. О красоте царапин наши мнения расходятся.

Идентификация при помощи тюнинга, наверное, последнее о чем думает заказчик. Я думаю, что человеку просто хочется что-то необычное, красивое или он хочет сделать необычный подарок. Например, сегодня мы получили заказ на сложную гравировку семейной фотографии с тыльной стороны iPhone 4, который окажется подарком супруге на новый год.

Просматривая сайт, я увидел одну картинку, которую и сам бы выгравировал на своём iPhone 4. Насколько популярен тюнинг?

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

А насколько долговечны выгравированные изображения?

К примеру, гравировка iPhone 4 довольно уникальная технология и состоит из 2-х этапов. В первом этапе лазер на внутренней поверхности стеклянной панели (напомню, что изнутри панель покрыта черной краской) выгравировывает заданный рисунок, тем самым снимает эту черную краску и стекло становится прозрачным в области рисунка. Затем вручную кистью мы наносим эмаль на прозрачную зону, эмаль может быть любого цвета, мы делали даже многоцветные рисунки. Затем все аккуратно собираем и получаем красивую вещь, рисунок остается под стеклом, думаю говорить о его долговечности нет смысла. Что касается пластиковых панелей iPhone 3G, 3GS, то сообщу, что лазер выбивает слой пластмассы в несколько микрон, что тоже является долговечным.

Не отпадают ли стразы? У меня лично подобные украшения вызывают сомнения в их долговечности.

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

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

Да, могу порекомендовать несколько: Vector4free, Vecteezy или воспользоваться google images с поиском черно-белых рисунков (например, вот поиск по фразе «знак зодика»).

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

Ян, большое спасибо за интересную информацию, мне было приятно с тобой пообщаться. Думаю, читателям тоже будет полезно и интересно почитать о твоём опыте.

Олег, и тебе спасибо за вопросы.


htop – консольный интерактивный просмотрщик процессов

]]>

3 декабря, 2010

]]>

По совету Антона Егорова поставил консольный htop – продвинутый и интерактивный вариант top:

Установка через Homebrew:

$ brew install htop

Запуск:

$ sudo htop

Если запускать без sudo, то не показываются параметры запуска процессов. Для простоты можно выставить биты set-user-ID-on-execution+set-group-ID-on-execution (но я предпочитаю запускать через sudo):

$ cd /usr/local/Cellar/htop/HEAD/bin$ chmod 6555 htop$ sudo chown root htop


Зависание iBank 4.1 из-за нового типа отчёта и выход из этой ситуации

]]>

2 декабря, 2010

]]>

Вчера вышел iBank 4.1. Из полезных для меня изменений в программу добавили новые типы отчётов. Я радостно добавил отчёт Expense Timeline, успел один раз восхититься, перешёл на другой отчёт, вернулся, и тут iBank завис. Намертво. До «Force Quit».

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

Можно было восстановиться из бекапа за прошлый день, но сегодня я сводил баланс и сделал достаточно много изменений. Повторять это с самого начала — нет уж. Я попал в тупик.

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

Для тестирования создал новую базу probe1, там сделал один счёт и один отчёт. Выбрал отчёт, вышел из iBank. Скопировал базу в probe2. Открыл probe2, выбрал счёт, вышел. Получил две идентичные базы, различающиеся только выбранным объектом, в probe2 выбран счёт, а в probe1 — отчёт.

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

$ defaults read com.iggsoftware.iBank4 NSNavLastCurrentDirectory~/Documents/Personal/Finances

Перехожу в ~/Documents/Personal/Finances, сравниваю базы:

$ diff -r probe1.ibank probe2.ibankBinary files probe1.ibank/settings.data and probe2.ibank/settings.data differ

Какой формат у файла? Apple binary property list:

$ file probe1.ibank/settings.dataprobe1.ibank/settings.data: Apple binary property list

Для поиска различий конвертирую в xml:

$ plutil -convert xml1 -o - probe1.ibank/settings.data > probe1.plist$ plutil -convert xml1 -o - probe2.ibank/settings.data > probe2.plist

Сравниваю. Различий много, меня заинтересовало это:

$ diff -u probe1.plist probe2.plist@@ -52,7 +52,7 @@ <key>sourceListSelectedItemId</key> <dict> <key>CF$UID</key>-<integer>9</integer>+<integer>0</integer> </dict>

Предполагаю, что если в probe1 поменять sourceListSelectedItemId c 9 на 0, то вместо report выберется account.

Делаю резервную копию (!).

$ cd probe1$ cp settings.data settings.data.dist

Можно использовать Property List Editor, добавив суффикс .plist, но я предпочитаю править xml вручную.

Конвертирую binary plist в xml

$ plutil -convert xml1 -o - settings.data > settings.data.plist

Открываю в редакторе, нахожу sourceListSelectedItemId и правлю значение 9 на 0:

$ vim settings.data.plist

Возвращаю в бинарный формат:

$ plutil -convert binary1 -o - settings.data.plist > settings.data

Запустил iBank, нужный счёт не выбрался, но эффект достигнут — злополучный отчёт уже не открывается при старте. Проблема не решена — отчёт я использовать не могу, однако могу продолжить работу с iBank и дождаться устранения.

Будьте осторожны с iBank и перед испытанием новых функций лучше сделайте резервную копию базы.


Результаты работы за ноябрь 2010

]]>

1 декабря, 2010

]]>

Первый день декабря, на улице в Киеве хорошо — холодно, настоящая зима, даже есть немного снега. Время подводить итоги за месяц.

В ноябре я плотно поработал и вышел на плановый уровень «статья в день, а на выходных — отдых». Сказать что-то о преобладающей тематике тяжело, я писал о том, что мне было интересно. Две темы я буду продолжать развивать — учёт персональных финансов и использование dtrace для исследования работы системы.

Я перенёс сайт на более мощный VPS. Раньше был Linode 512, теперь — Linode 1024, т.е. в два раза увеличилось количество RAM и увеличился включённый трафик. Для ускорения сайта я перешёл на nginx в качестве frontend, а Apache как backend по-прежнему генерирует страницы. Задействовал кеширование nginx cache, и за счёт этого в бенчмарке сайт стал обрабатывать 6000 запросов в секунду на одну страницу. Впечатляюще, не правда ли? Я расскажу об этом отдельно, сейчас поблагодарю Juev и Snupt за идеи и статьи, благодаря которым я провёл эту оптимизацию.

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

Если вы не обратили внимание, то в правой части сайта есть два ключевых элемента.

Первый — рекламный баннер московской компании «ЭтоСервис», которая занимается тюнингом iPhone и ремонтом iPhone и iPad. Большое спасибо за поддержку.

Также я хочу продать место в верхней части сайта — баннер 960×80 за 60$. Если вы заинтересованы, то обращайтесь, в течение недели я опишу возможности блога для рекламодателя и помещу описание в отдельный раздел.

Второй — виджет «Apple Feed on Facebook». Проект задуман, как оперативная доставка интересных новостей из мира Apple с комментариями и ссылками на оригинальные источники (в основном англоязычные). За неделю с момента запуска проекта на него подписались в Facebook 148 человек, что тоже достойный показатель. Присоединяйтесь.

Статьи за ноябрь 2010
  1. Учёт персональных финансов во время путешествий (Travel Pocket)
  2. Как сделать Micro SIM из USIM-карты Утел 3G
  3. Клавиатурное сокращение для «Don’t Save»
  4. Учёт персональных финансов. Начало выбора программы под Mac OS X
  5. Выгрузка файла на FTP-сервер с помощью curl
  6. Как избавиться на iPhone от сообщения «Call Forwarding Active» в сети Киевстар без jailbreak
  7. Как избавиться на iPhone от сообщения «Call Forwarding Active», универсальный способ с jailbreak
  8. Ответы на заявления о внесении IMEI iPhone в белый список
  9. Решение проблемы с кодировкой писем в Google Mail Exchange
  10. Отладка работы процессов в Linux с помощью strace
  11. Bonjour Browser
  12. Выборочная синхронизация в Dropbox 0.8.x beta
  13. Как очистить ленту Twitter в Tweetie/Mac от спама 4sq, YouTube и других служб
  14. Как прочитать архив SMS из резервной копии iPhone в iTunes
  15. Alterplay: разыскивается iOS разработчик
  16. Включение фильтра по ключевым словам в Tweetie для Mac через панель настроек
  17. Учёт персональных финансов. iFinance/Mac OS X
  18. Учёт персональных финансов. Jumsoft Money
  19. Модификация URL при проксировании в Apache
  20. Тестирование производительности NAS WD ShareSpace 8 TB
  21. Идентификация дисков, из которых состоит программный RAID в Mac OS X
  22. Получение списка доступных прошивок iOS 4.x
  23. Ремонт iPad своими руками
  24. Перевод нескольких глав книги об Aperture
  25. Новости об Apple в формате Facebook: Apple Feed
  26. Использование iPhone в качестве модема через Bluetooth
  27. Коты и Маки — 5
  28. Использование iPhone в качестве модема через USB-кабель
  29. Применение dtrace для поиска файлов, к которым идут активные обращения
  30. Список процессов в консоли с сортировкой по использованию CPU
Популярные статьи:
  1. Установка SSD Intel X25-M G2 в MacBook Pro Unibody
  2. Мой набор программ для Mac OS X
  3. Установка Mac OS X с внешнего USB-диска
  4. Книги для начинающих программистов под iOS
  5. Практика внесения iPhone в белый список централизованной базы IMEI Украины
  6. Обзор методов клонирования загрузочного диска Mac OS X
  7. Программы на моём iPhone
  8. Коты и Маки — 5
  9. Учёт персональных финансов. Начало выбора программы под Mac OS X
  10. Как очистить ленту Twitter в Tweetie/Mac от спама 4sq, YouTube и других служб

Забыл сказать — собираюсь в ближайшее время порадовать любителей железа обзором установки и анализом времени непрерывной работы MacBook Pro с двумя жёсткими дисками. На складе в USA ждёт отправки MCE OptiBay, с помощью которого я установлю штатный диск 500 GB 5400 rpm вдобавок к основному SSD Intel X25-M G2.

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

Изображение взято из IconArchive.


Список процессов в консоли с сортировкой по использованию CPU

]]>

30 ноября, 2010

]]>

Есть GUI и Activity Monitor, в котором можно нажать на колонку “%CPU”, а есть консоль и ps.

Для выдачи списка процессов, которые больше всех используют CPU, можно использовать команду ps с ключом “r”:

$ ps axur | head -3USER       PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMANDctrld    68092   6.5  2.9   607484 121872   ??  S    11:54AM   1:51.83 /Applications/iTunes.app/Contents/MacOS/iTunes -psn_0_3601263ctrld    68220   6.1  2.2   546748  93632   ??  S    12:05PM   1:00.10 /Applications/Blogo.app/Contents/MacOS/Blogo -psn_0_3629942

Здесь в лидерах – iTunes, игрывающий радиостанцию со Sky.FM на AirPort Express, и Blogo, который занимается непонятно чем и его нужно убить.


Применение dtrace для поиска файлов, к которым идут активные обращения

]]>

30 ноября, 2010

]]>

Dtrace – мощная подсистема ядра, позволяющая исследовать работу операционной системы и приложений. Я давно к ней не возвращался в статьях, рекомендую почитать “Отладка файловой активности процессов с помощью DTrace, или как написать деинсталлятор” и “Поиск метода установки Mac OS X под VMWare Fusion“. В первой статье есть ссылки для дальнейшего чтения.

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

Скрипт:

$ cat 02_openfiles.d#!/usr/sbin/dtrace -s io:::start{        @[args[2]->fi_pathname] = count();}tick-10s{        trunc(@, 10);        printa(@);        trunc(@, 0);}

Выставить права на запуск:

$ chmod +x 02_openfiles.d

Запуск:

$ sudo ./02_openfiles.d

Второй вариант запуска – в одну строку:

$ sudo dtrace -n 'io:::start {@[args[2]->fi_pathname] = count();} tick-10s {trunc(@, 10); printa(@); trunc(@, 0);}'

Пример работы:

0 129269                        :tick-10s??/Logs/FileSyncAgent.log                                         1??/Russian.lproj/Dictionary.dat                                   1??/DiagnosticMessages/StoreData                                   3??/DiagnosticMessages/2010.11.30.asl                              6??/com.apple.Safari/Cache.db-journal                              8??/com.apple.Safari/Cache.db                                     510 129269                        :tick-10s??/bands/114                                                      1??/bands/ef                                                       2??/Cookies/Cookies.plist_tmp_67927_0.dat                          3??/bands/115                                                      3??/bands/a0                                                       3??/bands/0                                                        4??/bands/59                                                       5??/com.apple.Safari/Cache.db-journal                              6??/com.apple.Safari/Cache.db                                     12??/unknown (NULL v_parent)/unknown (NULL v_name)                 16

По этим примерам можно сказать, что Safari активно пишет в кеш, и система синхронизирует iDisk.

Почему iDisk? /bands/114 указывает на Sparse Bundle Image, Time Machine вне подозрения (TimeCapsule далеко), а поиск find’ом показал каталог ctrld_iDisk.sparsebundle:

$ sudo find / -name 114/Users/ctrld/Library/FileSync/0025bcdcddae/ctrld_iDisk.sparsebundle/bands/114

Указанный пример очень прост, есть гораздо более впечатляющие примеры. Хотите узнать больше? Смотрите OpenSolaris Community Group dtrace.


Использование iPhone в качестве модема через USB-кабель

]]>

29 ноября, 2010

]]>

Настройку Tethering для использования iPhone как модема через Bluetooth я описал. Способ слегка непростой — слишком много шагов.

Можно кардинально упростить себе жизнь, если всё-таки носить с собой шнурок для подключения iPhone к компьютеру. Это неудобство компенсируется меньшим разрядом батареи iPhone и его подзарядкой от ноутбука, а также полноценной скоростью — через Bluetooth 2.x+EDR можно получить максимум 3 Mbps, а в HSDPA Category 8 — до 7.2 Mbps, и пропускной способности Bluetooth не хватит.

На iPhone заходим в Settings/General/Network/Cellurar Data Network и прописываем APN для доступа в Интернет.

  • Для Утел — unlim.utel.ua (также возможен 3g.utel.ua, что писать нужно уточнять у оператора), имя и пароль не нужны.
  • Для Киевстар (лучше не подключайтесь без активированного тарифа Интернет или Смартфон) — www.kyivstar.net, Username: igprs, Password: kyivstar.

Возвращаемся на уровень выше, заходим в Internet Tethering и включаем его:

В ответ на тип соединения указываем USB Only:

Подключаем iPhone USB-кабелем к Mac’у, на iPhone появляется верхняя полоска «Internet Tethering»:

Всё, можно работать. Когда Интернет не нужен, то можно отключить кабель USB или же отключить Tethering в настройках iPhone.

Просто, не правда ли?

Стоит иметь в виду, что Internet Tethering работает не у всех операторов, а некоторые требуют денег за его активацию. Если у вас раздел Internet Tethering выглядит не так:

а, например, написано «Setup Internet Tethering»:

и при попытке активации выдаётся ошибка, отсылающая к оператору:

то перепроверьте настройки Internet Tethering в Settings/General/Network/Cellurar Data Network, включите/выключите Airplane Mode для перерегистрации в сети, и повторите попытку. А если и после этого выдаётся «Setup Internet Tethering», то обращайтесь к вашему оператору.

Активировать Tethering можно в сети оператора, который запрещает это, однако нужно делать jailbreak. У меня оператор не блокирует Tethering, так что эта тема останется нераскрытой. Решений хватает, нужно только немного поискать.

При первом подключении может выдаться предложение сконфигурировать сетевой интерфейс:

Он будет виден в сетевых настройках, но подключить/отключить вручную его нельзя


Коты и Маки — 5

]]>

26 ноября, 2010

]]>

После долгого перерыва сделал очередную подборку Котов и Маков. Предыдущие вы можете посмотреть здесь:

Итак, Коты невероятной Макоты:

Достойнейшие существа, не правда ли?

Фотографии Чучи (спасибо Амиру)

Фотография Алисы, присланная Константином


Использование iPhone в качестве модема через Bluetooth

]]>

25 ноября, 2010

]]>

Странно, но за два года использования iPhone я так и не удосужился настроить Tethering для того, чтобы использовать iPhone как модем для ноутбука.

Это вполне объяснимо, так как я использовал Киевстар, и скорость 2G EDGE меня устраивала на телефоне, но не воодушевляла для комфортной работы на MacBook Pro. Недавно я взял контрактное подключение к Утел 3G и решил попробовать настроить доступ в Интернет.

Интернет Утел я пользовался давно, можно сказать с самого его появления. Я использовал разные модемы Huawei, они работали нормально, но настроить Huawei 3G на Mac OS X — это была «пестня». Затем у меня появился USB-модем Novatel MC930D. Он хорош — цельный, качественная сборка, приятный на вид, нативно поддерживается Mac OS X без необходимости установки драйверов. Одно но — он достаточно большой и при включении закрывает второй порт USB. Можно таскать шнурок, но я предпочитаю при необходимости носить только ноутбук в неопреновом чехле, и не зависеть от кучи шнурочков.

А вот iPhone у меня всегда с собой. И он поддерживает Tethering. Для Bluetooth шнурки не нужны. Эта три факта соединились и родилось решение — я приступил к настройке Tethering. Предупреждение — не у всех мобильных операторов Tethering можно включить, или его нужно дополнительно заказывать. У меня такая возможность есть.

На iPhone заходим в Settings/General/Network/Cellurar Data Network и прописываем APN для доступа в Интернет. У меня это unlim.utel.ua:

Возвращаемся на уровень выше заходим в Internet Tethering и включаем его:

По умолчанию Bluetooth выключен и здесь же появится предложение его включить. Также можно это сделать через Settings/General/Bluetooth:

Переходим к Mac. System Preferences/Bluetooth, добавить устройство:

Выбираем iPhone:

Появляется код:

Такой же код появляется на iPhone, жмём Pair:

Устройства спарились, процесс добавления закончен:

Если Bluetooth PAN не был раньше настроен, то выдастся сообщение:

Идём в Network Preferences или нажав на кнопку, или же через System Configuration/Network Preferences, выбираем Bluetooth PAN:

Если его нет, то жмём на «+» и добавляем.

Жмём Connect:

У меня в первый раз выдалось сообщение о неизвестном статусе:

Я нажал Disconnect/Connect и сразу же выдался IP-адрес.

На iPhone появляется синяя надпись «Internet Tethering».

Подключиться и отключиться от Интернет можно через значок Bluetooth в menubar’е:

Можно пользоваться, Интернет подано.

Но без шнурка, к сожалению, не обойтись — iPhone в режиме Tethering потребляет больше энергии и есть шанс быстро его разрядить. Поэтому стоит иметь возможность его подзарядить от ноутбука или подключать Tethering через USB. Разница — в том, что вместо Bluetooth PAN нужно выбрать в Network устройство iPhone.

Также рекомендую после окончания использования Интернет отключать Bluetooth — так iPhone дольше проработает от батареи, да и неконтролируемо перерасходовать трафик будет тяжелее.


Новости об Apple в формате Facebook: Apple Feed

]]>

24 ноября, 2010

]]>

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

И есть отличный компромисс — читателям будет интересно получать краткое описание новости на русском языке со ссылкой на первоисточник, но, что самое главное, новости должны быть избранные. Есть фактор субъективности отбора, но так даже интереснее.

Именно эта идея родилась у Димы Храпонов aka Snupt. Мысли о проекте описаны в статье Димы «Новости + Facebook = Apple Feed». Идея мне очень понравилась и я с удовольствием подключился к проекту.

Итак, представляем вашему вниманию новостной проект в формате Facebook «Apple Feed»:

Кроме Facebook вы можете читать новости через RSS проекта.

Мы делаем упор на новости и интересные статьи из англоязычных источников, но не забываем про русскоязычные. Замечу, что Apple Feed — это «не центр мирового кросспостинга» (© Хабрахабр), и наши статьи появятся там только если они будут заслуживать это.

В правой части блога вы можете увидеть виджет с лентой новостей из Apple Feed. Если вы хотите разместить такой же виджет у себя, то воспользуйтесь кодом, приведённым в статье Snupt’а.

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


Перевод нескольких глав книги об Aperture

]]>

23 ноября, 2010

]]>

Если вас интересует информация об Aperture на русском, взгляните на переводы Александра Горбатова, профессионального фотографа и большого любителя Apple.


Ремонт iPad своими руками

]]>

23 ноября, 2010

]]>

Вчера вышел iOS 4.2.1 под iPad. Но радость была бы неполной без шоколадных конфет «Россия»…

Захватил сегодня утром iPad на работу, чтобы обновиться, радостно подключил в свободную минуту к ноутбуку и…

Дежа-вю — устройство не хочет заряжаться и не определяется в iTunes. Грустно — iPad я использую достаточно активно, покупать новый не хочется. По слухам iPad 2 выйдет в апреле 2011, и хочется дотянуть до этого момента с iPad 1, не выбрасывая дополнительные деньги.

Делать нечего — нужно или нести снова в сервисный центр, или попытаться решить проблему самому, понадеявшись на проблему с разъёмами, так как ремонт микротрещин — это далеко не мой профиль.

В прошлый раз я посмотрел видео с описанием, как правильно вскрыть iPad. Поленившись его пересмотреть, я достал привычный набор инструментов — офисный нож для разрезания бумаги и три пластиковых карты:

Извините за применение Hipstamatic для этих фотографий — я не думал, что удастся починить iPad, и эти фотографии отображали мою грусть. В следующие разы я буду применять нормальную зеркалку с внешним светом, потому как и iPhone не совсем подходит для фиксации процесса.

Предупреждаю — я знал, на что иду, а вы лучше воспользуйтесь специальным шпателем. Также понадобится отвёртка Torx T5.

Хирургически выверенные рывки, хруст, и iPad разобран:

Обломки высыпаны на стол в качестве урока будущим разбиральщакам:

Это держатели из тонкой стали, которые нужно было поддевать шпателем. Называются iPad Clips Replacement Set, их можно приобрести в специализированных магазинах, на eBay и т.п. В ближайшем продуктовом магазине, к сожалению, они не продаются. Упущение.

Аккуратно отсоединил разъёмы, демонтировал рукав, идущий от разъёма к материнской плате:

Есть подозрение, что виноват был пережатый провод, идущий от батареи, но эта мысль нелогична.

Осталось достаточно много неповреждённых клипс, две я переставил так, чтобы было равномерное распределение крепления.

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

После сборки нажал по периметру iPad до характерных щелчков, которые показали, что всё стало на место. Включил:

Ура, iPad восстановлен. Тянется свежий iOS, рядом стоит чашка с кофе. Идиллия. Надеюсь, что следующий раз наступит нескоро.


Получение списка доступных прошивок iOS 4.x

]]>

22 ноября, 2010

]]>

Строка для получения списка доступных на сайте Apple прошивок iOS версии 4.x:

$ curl -s -L http://phobos.apple.com/version | grep -i restore | \   grep -v -e SBML -e _4A102_ | grep '_4.'

P.S. Первая версия команды вставилась неправильно.


Идентификация дисков, из которых состоит программный RAID в Mac OS X

]]>

22 ноября, 2010

]]>

Предположим, что выдался очень плохой день, потому что в логах на Mac’е появилось сообщение о выходе из строя одного из дисков RAID:

22.11.10 13:13:13kernelAppleRAID::recover() member 46351C9C-8F55-474F-8FA9-0E72FEB27F10 from set "Flash RAID Set" (23E9F3B6-A492-4318-A058-7437C63BFF1D) has been marked offline.22.11.10 13:13:13kernelAppleRAID::restartSet - restarting set "Flash RAID Set" (23E9F3B6-A492-4318-A058-7437C63BFF1D).

Грустно, но ведь бекапы у вас, конечно же, есть. Если нет, а RAID был 0-го уровня (страйпинг, когда данные разбиваются на части и пишутся без резервирования на разные диски), то срочно нужно брать внешний диск и списывать всё, что удастся списать. Есть шансы, что большая часть данных (в худшем случае все) будет потеряна.

Рекомендую перечитать мои статьи “О пользе offsite-бекапов” и “Клонирование диска как часть стратегии резервного копирования (SuperDuper!)“.

Ещё соображение. Никогда не ставьте RAID0, если не осознаёте, что делаете. Это вполне допустимо для очень быстрого промежуточного хранилища, но сохранять важные данные категорически недопустимо. Лучше RAID5 – можно пережить выход из строя одного диска. Но скорость записи не очень. Если нужна большая скорость и большая надёжность, то идеален RAID10 (зеркалирование + страйпинг), но нужно в два раза больше дисков. А если дисков мало, и нужна надёжность, то – RAID1 (зеркалирование).

Вопрос в том, как определить, какой именно диск вышел из строя для его замены (вопрос восстановления RAID после сбоя я не рассматриваю, программные RAID я не восстанваливал, но хочу провести такие эксперименты).

В логе говорится, что “member 46351C9C-8F55-474F-8FA9-0E72FEB27F10 … has been marked offline”. Этот идентификатор является UUID диска.

Я хочу показать где можно найти данные по диску. Не факт, что при вышедшем из строя диске хоть что-то удастся посмотреть, но попытаться стоит. А лучше сохранить нужную информацию заранее, сразу же после создания RAID.

Для теста я создал RAID1 из двух USB-флеш.

Начинаем поиск с mount и diskutil. В mount увидим, какое устройство смонтировано как RAID Set.

$ mount/dev/disk4 on /Volumes/Flash RAID Set (hfs, local, nodev, nosuid, journaled, noowners)

А в diskutil выясним, какие разделы задействованы:

$ diskutil list/dev/disk2   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme                        *2.1 GB     disk2   1:                 Apple_RAID                         2.0 GB     disk2s1   2:                 Apple_Boot Boot OSX                134.2 MB   disk2s2/dev/disk3   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:      GUID_partition_scheme NO NAME                *2.1 GB     disk3   1:                 Apple_RAID                         1.9 GB     disk3s1   2:                 Apple_Boot Boot OSX                134.2 MB   disk3s2/dev/disk4   #:                       TYPE NAME                    SIZE       IDENTIFIER   0:                  Apple_HFS Flash RAID Set         *1.9 GB     disk4

Смотрим информацию по RAID Set (disk4):

$ diskutil info /dev/disk4   Device Identifier:        disk4   Device Node:              /dev/disk4   Part Of Whole:            disk4   Device / Media Name:      Flash RAID Set   Mount Point:              /Volumes/Flash RAID Set   Escaped with Unicode:     /Volumes/Flash%FF%FE%20%00RAID%FF%FE%20%00Set   File System:              Journaled HFS+   Type:                     hfs   Name:                     Mac OS Extended (Journaled)   Partition Type:           Apple_HFS   Media Type:               Generic   Volume UUID:              ECCE6D2D-F7A5-353D-81E7-5A896449A1E8   This disk is a RAID Set.  RAID Set Information:      Set Name:          Flash RAID Set      RAID Set UUID:     23E9F3B6-A492-4318-A058-7437C63BFF1D      Level Type:        Mirror      Status:            Online      Chunk Count:       58878

Поле “RAID Set UUID” – это тот UUID, который виден в сообщении “restarting set ‘Flash RAID Set’ (23E9F3B6-A492-4318-A058-7437C63BFF1D)”.

Смотрим информацию по разделам, из которых состоит RAID Set (в нашем случае – RAID Slice’ы, так как используется RAID1):

$ diskutil info /dev/disk2s1   Device Identifier:        disk2s1   Device Node:              /dev/disk2s1   Part Of Whole:            disk2   Device / Media Name:      Raid Partition 3   Partition Type:           Apple_RAID   This disk is a RAID Slice.  RAID Slice Information:      Parent Set Name:          Flash RAID Set      Parent RAID Set UUID:     23E9F3B6-A492-4318-A058-7437C63BFF1D      RAID Slice UUID:          46351C9C-8F55-474F-8FA9-0E72FEB27F10      Level Type:               Mirror      Status:                   Online      Slice:                    1/2      Sequence:                 1      Chunk Count:              58878$ diskutil info /dev/disk3s1   Device Identifier:        disk3s1   Device Node:              /dev/disk3s1   Part Of Whole:            disk3   Device / Media Name:      Raid Partition 4   Partition Type:           Apple_RAID   This disk is a RAID Slice.  RAID Slice Information:      Parent Set Name:          Flash RAID Set      Parent RAID Set UUID:     23E9F3B6-A492-4318-A058-7437C63BFF1D      RAID Slice UUID:          C6283D59-7DC9-420D-8139-695204CBEA51      Level Type:               Mirror      Status:                   Online      Slice:                    2/2      Sequence:                 1      Chunk Count:              58878

Здесь можно чётко отнести RAID Slice к конкретному RAID Set (на случай, если Set’ов много) и получить UUID Slice’а. “Member 46351C9C-8F55-474F-8FA9-0E72FEB27F10″ относится к /dev/disk2, именно его я отключил в горячем режиме.

Диски определены, можно их менять. Как идентифицировать конкретный физический диск – ещё отдельный вопрос. Один из вариантов – открыть Profiler и там посмотреть модель и/или серийный номер, а дальше идентифицировать физически.


Тестирование производительности NAS WD ShareSpace 8 TB

]]>

19 ноября, 2010

]]>

Попался мне в руки на короткое время сетевой дисковый массив (NAS) WD ShareSpace 8 TB, предназначенный для небольшого офиса или домашней сети.

Меня как раз утомило передёргивать кабеля между набором из четырёх карманов (два с дисками 3.5″ SATA и два – с 2.5″), и я задумался об организации нормального дискового массива.

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

Меня всегда настораживали NAS, и я не особо верю в их производительность, поэтому решил проверить сам пакетом QuickBench.

Кстати, одно предостережение. Если вы думаете, что покупая NAS, автоматически получите подключение по хотя бы по USB, то перечитайте предварительно документацию. Порты USB, которые видны на передней и задней панелях по крайней мере в NAS WD ShareSpace предназначены отнюдь не для того, о чём вы думаете. Они не для подключения массива по USB к компьютеру на случай, если Ethernet вам не будет нужен. Они предназначены для подключению к NAS дополнительных дисков с интерфейсом USB для того, чтобы их представить, как отдельные тома.

Скорость меня далеко не восхитила. На тестах списывания больших файлов по FTP я получил 10 MBps (80 Mbps), причём NAS был включён гигабитным портом напрямую в гигабитный порт компьютера и скорость порта была именно 1 Gbps. Плюс в том, что эта скорость стабильная – на списывании 800 GB данных она оставалась постоянной.

Для сравнения привожу графики для диска 500 GB 2.5″ 5400 rpm, подключенного по USB (сравните с мощью в виде RAID5 из 4-х дисков по 2 TB):

Я убедился, что противопоставление 1 Gbps NAS обычному подключению по USB – это маркетинговая уловка. Согласен, что у NAS много преимуществ, но для моих задач достаточно DAS (Direct-attached storage) с интерфейсом FW800, например, Promise DS4600, и к нему я буду постепенно двигаться.


Модификация URL при проксировании в Apache

]]>

19 ноября, 2010

]]>

Я периодически использую в Apache модуль mod_proxy_http для проксирования трафика с одного frontend’а на различные backend’ы. Конфигурация, которая перебрасывает запросы с http://company.com/news/ на внутренний сервер http://internal.company.com/ такая:

ProxyPass        /news/  http://internal.company.com/ProxyPassReverse /news/  http://internal.company.com/

Всё работает хорошо, до тех пор, пока на внутреннем сервере вместо относительных URL вида “/css/style.css” не появляются абсолютные URL “http://internal.company.com/css/style.css”. В этом случае html возвращается внешнему клиенту, он пытается взять css/js или перейти по внутреннему адресу http://internal.company.com, который недоступен из Интернет, и на этом всё заканчивается. Страницы не отображаются, ссылки не работают.

Приходилось выкручиваться с прописыванием внешних URL на внутренних серверах, это рождало проблемы доступа из внутренней сети. Они лечились Split DNS (внутренним и внешним клиентам отдавались на один запрос разные имена). Всё это рождало дополнительные сложности, в итоге с трудом поддерживалось и диагностировалось.

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

Теперь конфигурация выглядит примерно так:

ProxyPass        /news/  http://internal.company.com/ProxyPassReverse /news/  http://internal.company.com/AddOutputFilterByType SUBSTITUTE text/htmlSubstitute "s|http://internal.company.com/|http://company.com/news/|in"

Замечу – нагрузка на сервер минимальна, нужно переписывать только text/html. Для других случаев понадобится более расширенная конфигурация. Но направление решения вопроса я показал, от чего-то уже можно оттолкнуться.


Учёт персональных финансов. Jumsoft Money

]]>

18 ноября, 2010

]]>

На очереди второй кандидат из списка – это Jumsoft Money, $39.

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

Внешний вид нормальный, нет ничего, что бы мозолило глаза. Добротный интерфейс в стиле Mac OS X с выполнением требований Apple Human Interface Guidelines.

Через меню можно выполнить необходимые операции, например, создать счёт. Есть клавиатурные сокращения. После iFinance, которая нарушила всё, что можно нарушить в интерфейсе, просто душа радуется.

Создание счетов не нагружает всяческими SWIFT’ами и IBAN’ами:

В настройках программы можно оставить только нужные валюты, а также списать текущий курс обмена или выставить его вручную:

Для начала создаю три счёта: наличные в UAH (50.00), две карты – одну в UAH (366.91), вторую в USD (96.61). Money посчитала общий баланс, базируясь на текущем курсе, а не из соображений 1 UAH + 1 USD + 1 EUR = 3 UAH.

Операции с валютами

Переведу-ка я 40 UAH с наличных UAH на карту USD. “Transfer” доступен из выбора вида транзакции. Всё логично:

Результат правильный, снялась и добавилась правильная сумма на основании текущего курса:

Но вот первая проблема. Я не могу откорректировать курс для конкретной тразакции.

И первая ошибка. Я убрал из списка валют в настройках GBP, которая была первой. Потом попытался исправить текущий курс вручную, но при открытии EUR открылось окно GBP. Типичная ошибка в коде.

Перезапустил Money – сбилось отображение валюты в настройках, вместо Ukrainian Hryvnia выставилась Ugandan Shilling:

Исправил, перезагрузился в третий раз – всё нормализовалось.

Возвращаюсь к установке курса. Текущий курс – 7.9475. Перевод 40 UAH = 5.03 USD. Допустим, курс конкретного обменного пункта был другим, например (гипотетически), 11.00. Корректирую, выбираю “не конвертировать автоматически” (а это уже первая непонятность).

Делаю следующий перевод, ничего не поменялось, получилось 5.03.

Ставлю курс 15, говорю уже “конвертировать автоматически”, делаю следующую транзакцию, сумма 2.67, старые транзакции не поменялись, что нормально.

Перезапускаю программу, курс обновился автоматически (впрочем, это отключаемо), и новая транзакция будет с курсом 7.9475.

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

Способы решения:

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

Ввод транзакций очень прост, гораздо проще, чем в привычном мне iBank3.

Reconcile в два приёма (отметить для просмотра и затем завершить) – хорошая идея.

Мне неудобно то, что рядом с каждым счётом не отображается количество денег:

Но есть общее состояние всех счетов в нижней части программы, и этого вполне достаточно:

Они есть, и меня устраивают:

Категории можно настраивать по своему вкусу. Мне нравится то, что можно одну и ту же отнести и на доход, и на расход – это удобно, например, при сведении баланса (есть погрешности и в ту, и в другую сторону, и учитывать их отдельно мне не хочется):

Они есть:

И есть конструктор:

Мне не хватает набора предустановленных отчётов “на любой случай”. Хочется не создавать всё самому, а в пару кликов увидеть понятные данные. Но это так, мысль вслух, а не претензия.

Есть бесплатная универсальная версия Jumsoft Money под iPhone и iPad, синхронизация доступна и для триальной версии (снова пинок в сторону iFinance).

Графика за счёт попыток “украсивить” стандартный интерфейс мне лично не нравится. Минус.

Usability так себе. Неудобно. Ещё один минус.

Проблема – программа поддерживает только одну единственную валюту (её можно выбрать из списка, но многовалютности это не добавит).

Теперь, уже предполагая, что будет, делаю валютный трансфер:

И получаю “10 EUR + 10 UAH + 10 USD = 30 UAH”:

Очень плохо.

Было интересно увидеть комментарий@aerofreeze в августе 2009 года с запросом поддержки многовалютности:

Money for iPhone is not working with multi-currency accounts? All my accounts in Money for iPhone are in the same currency, though in desktop client they are different =(

And please add ability to hide accounts (I dont’ use all of them frequently).

And usability needs to be polished.

Waiting for the very next version!

Now I’m choosing between iBank and Money.

Ответ был таков:

What about multi-currencies support – it requires more work and will not be in the nearest update.

Прошёл год. Ничего не изменилось.

Плюсы:

  • Добротная программа с хорошим интерфейсом под Mac OS X

Минусы:

  • Невозможно откорректировать курс обмена для конкретной транзакции
  • Валютные трансферы практически провести тяжело.
  • Не поддерживается многовалютность в версии под iPhone/iPad

Jumsoft Money3 вполне можно рекомендовать тем, кому нужна только десктопная версия. Версию под iPhone/iPad может использовать только тот, у кого только одна валюта.

Я лично буду искать дальше.


Учёт персональных финансов. iFinance/Mac OS X

]]>

17 ноября, 2010

]]>

Я обещал показать мой процесс выбора программы для учёта персональных финансов. С придирками и объяснением, что и почему мне нравится и не нравится. Сегодня покажу iFinance ($29). Предупреждаю – это моё личное и очень субъективное мнение. Есть люди, которым каждая конкретная программа идеально подходит. Но я ищу ту программу, которая подойдёт именно мне.

Описание конспективно – я делаю заметки в процессе работы с программой.

Запуск. Обилие стрелочек обозначает неинтуитивность программы.

Я несколько минут не мог понять, что от меня хотят, и почему я не могу перейти к работе с транзакциями. Если для работы с тривиальной задачей учёта личных денег, а не управления атомной станцией, требуется внимательно вчитываться в указания, то это признак плохой Usability/User expirience.

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

Ну кто мне объяснит, зачем показывать все эти стрелки, показывающие пользователю, что разработчики считают его имбецилом? Показали один раз в окне типа “Начинаем работу”, добавили в меню помощи возможность повторного вызова демонстрации и всё. Но нет. Каждый раз, заходя в iFinance, наблюдаешь это уродство.

Для начала я удалил все account’ы. Привычно открыл меню, чтобы создать новые. Такой возможности не оказалось. Мда. Пришлось смотреть на элементы управления, увидел “+” внизу сайдбара. Секций много (средства, графики, бюджеты, устройства), а к чему относится “+”? Неинтуитивно. Только когда нажал на этот “+”, появилось меню, спрашиваещее, что именно создать.

Зачем при создании счёта с наличными запрашивается SWIFT? Какой IBAN? Бред.

Для пробы создал Наличные в гравнах и Карточку в USD. Неужели система понимает, что 100 UAH + 100 USD != 200 USD? Вау. Мои поздравления:

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

Но валютный трансфер прошёл:

Усложняю задачу – предполагаю, что я обменял деньги отнюдь не по курсу Нацбанка, а мне посчастливилось сдать $10 барыге по 10 UAH за доллар и не лишиться этих денег. Исправляю вручную сумму – сработало. Теперь предполагаю, что следующие 10$ я поменял в обменном пункте по 7 за доллар. Неплохо, за базовую сумму был взят официальный курс, а не последняя транзакция.

В общем с валютами iFinance работает нормально.

Категории находятся в неочевидном месте:

Набор категорий бедненький, но это некритично, добавить свои всегда можно:

При выходе из iFinance я получил приятное сообщение: “In order to save your data you have to buy a serial number. Do you still want to quit iFinance now?”.

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

Мои данные потеряны, интерфейс на “троечку”, пользователя держат за идиота. Программа сносится и выбывает из списка претендентов. Вердикт – iFinance не рекомендую к использованию.

  • Отвратительный usability
  • Непродуманный интерфейс
  • За неотключаемые стрелки с указанием, что “здесь – бюджет” жирный минус.
  • Графика так себе.
  • Нормальная работа с валютами
  • Не рекомендую


Включение фильтра по ключевым словам в Tweetie для Mac через панель настроек

]]>

16 ноября, 2010

]]>

Я уже было собрался написать заметку о тюнинге параметров модуля e1000 в Linux для обработки гигабитного трафика (что было бы злостным отклонением от тематики), когда увидел заметку на Mac Stories.

Вы уже знаете, как убрать автоматический спам в Tweetie/Mac через консоль. Теперь появилась панель настроек TweetiePrefs, с помощью которой можно сделать то же самое через графический интерфейс:

Если вы добавляли фильтры через консоль и теперь хотите использовать TweetiePrefs, рекомендую сначала удалить filterTerms, так как программа не подхватывает уже созданные фильтры. Команда:

$ defaults delete com.atebits.tweetie-mac filterTerms

Offtopic. А если вас всё-таки интересует, как сделать тюнинг модуля e1000, то вот эти команды :-)

# rmmod e1000# modprobe e1000 InterruptThrottleRate=100# ethtool -K eth0 tx off

За счёт этих команд от 39K interrupts я пришёл к 220. Было:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 1  0      0 3680984  48968  35420    0    0     0     7 39964   35  0  1 99  0 0  0      0 3680984  48968  35420    0    0     0     0 39954   33  0  1 99  0

Стало:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 0  0      0 3668768  49288  38696    0    0     0     0  220   35  0  0 100  0 0  0      0 3668768  49288  38696    0    0     0     0  224   41  0  0 100  0


Alterplay: разыскивается iOS разработчик

]]>

15 ноября, 2010

]]>

Публикую объявление по просьбе Славы Буштрука, главы команды разработчиков Alterplay. Хорошая компания, присоединяйтесь :)

Любишь iPhone? Есть опыт в создании iOS приложений и желание работать в команде? Тогда ты только что нашел идеальную возможность.

Alterplay продолжает строить потрясающую команду. Сейчас мы ищем сильного разработчика, который будет получать удовольствие от создания высококачественных приложений для миллионов пользователей. Да, среди сделанных нами продуктов есть такие, чьи бренды можно увидеть по MTV/VH1 и в первых рядах App Store.

Требования:

  1. От 3х лет опыта программирования
  2. Уверенное владение языками C/C++/Objective–C
  3. От года работы с iOS SDK: базовые UI, клиент-сервер
  4. Ответственность, коммуникабельность, хороший английский
  5. Ощущение хорошего продукта и понимание экосистемы AppStore/iOS

Alterplay – распределенная команда с опытом 25 проектов самой разной направленности: от простой RSS читалки до навороченного менеджера рецептов для iPad. Ежедневно мы используем Basecamp, Skype, Google Apps, Dropbox, SVN, Xcode, Photoshop.

  • Мы ищем новый талант в семью, а не сотрудника с 9 до 18
  • В качестве материальной компенсации предлагаем $1700+ в соответствии с опытом и эффективностью работы по результатам испытательного проекта
  • Обязательно – обмен опытом, совместный профессиональный рост и посещение конференций
  • Кроме этого – участие и доля во внутренних проектах

Пожалуйста, присылайте нам:

  1. Краткое резюме и примеры проектов
  2. Мотивационное письмо и свои ожидания от работы

Слава Буштрук, Alterplay

team@alterplay.com


Как прочитать архив SMS из резервной копии iPhone в iTunes

]]>

15 ноября, 2010

]]>

Случайно наткнулся на статью “How to Access and Read the iPhone SMS Text Message Backup Files“, рассказывающую, как прочитать архив SMS с iPhone из резервной копии, которую делает iTunes.

Сразу же замечу, что если вы параноидальны и не хотите, чтобы ваши SMS прочитали, то криптуйте свои бекапы (панель опций на закладке Summary вашего iPhone):

Бекапы iOS-устройств находятся в каталоге ~/Library/Application Support/MobileSync/Backup. Меня интересует список, отсортированный в порядке проведения бекапов, для этого использую “ls -lt”:

$ cd "~/Library/Application Support/MobileSync/Backup"$ ls -ltdrwxr-xr-x  6026 ctrld  staff  204884 Nov 12 16:34 09213b6660a22d13977258d480ced2a880ff8390drwxr-xr-x  5633 ctrld  staff  191522 Oct 19 23:07 09213b6660a22d13977258d480ced2a880ff8390-20101019-230647

Имя состоит из UDID устройства и времени формирования предыдущих копий.

Метод, приведённый в указанной выше статье не работает – файлы с расширением .mddata и .mdbackup в моём бекапе отсутствуют. Поэтому ищу почти наугад.

Первый способ – поиск по известному фрагменту текста

Я знаю, что мне приходил SMS из банка о снятии денег за программу из iTunes в пользу “ITUNES-USD”. Нахожу grep’ом файл, убеждаюсь, что это SQLite:

$ cd "~/Library/Application Support/MobileSync/Backup/"$ cd 09213b6660a22d13977258d480ced2a880ff8390$ grep ITUNES-USD *Binary file 3d0d7e5fb2ce288813306e4d4636395e047a3d28 matches$ file 3d0d7e5fb2ce288813306e4d4636395e047a3d283d0d7e5fb2ce288813306e4d4636395e047a3d28: SQLite 3.x database
Второй способ – поиск по структуре базы

Сделал скрипт 1.sh, который снимает схемы всех баз SQLite (в него нужно вставить ваши данные):

#!/bin/bashUDID=09213b6660a22d13977258d480ced2a880ff8390dir=~/Library/Application\ Support/MobileSync/Backup/$UDIDif [ -e "$dir" ]; thenecho "Time: $(date)"elseecho "Directory $dir does not exists"exitficd "${dir}"lst=$(file * | grep SQLite | awk -F : '{print $1}')for l in ${lst}; doecho ${l}echo ".schema" | sqlite3 ${l}doneecho "Time: $(date)"

Запускаю скрипт, записываю вывод в файл:

$ ./1.sh > 1.out

Ищу в результатах строку “CREATE TABLE message” – именно так определяется таблица с SMS. Нахожу нужный файл, у меня это 3d0d7e5fb2ce288813306e4d4636395e047a3d28.

Вывод данных

Копирую найденный файл в рабочий каталог

$ cp "~/Library/Application Support/MobileSync/Backup/09213b6660a22d13977258d480ced2a880ff8390/3d0d7e5fb2ce288813306e4d4636395e047a3d28" ~/sms.sqlite

Открываю, смотрю схему (несколько приёмов работы с SQLite я приводил в статье по Mail.app):

$ sqlite3 sms.sqlitesqlite> .schemaCREATE TABLE _SqliteDatabaseProperties (key TEXT, value TEXT, UNIQUE(key));CREATE TABLE group_member (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, group_id INTEGER, address TEXT, country TEXT);CREATE TABLE message (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, address TEXT, date INTEGER, text TEXT, flags INTEGER, replace INTEGER, svc_center TEXT, group_id INTEGER, association_id INTEGER, height INTEGER, UIFlags INTEGER, version INTEGER, subject TEXT, country TEXT, headers BLOB, recipients BLOB, read INTEGER);CREATE TABLE msg_group (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, type INTEGER, newest_message INTEGER, unread_count INTEGER, hash INTEGER);CREATE TABLE msg_pieces (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, message_id INTEGER, data BLOB, part_id INTEGER, preview_part INTEGER, content_type TEXT, height INTEGER, version INTEGER, flags INTEGER, content_id TEXT, content_loc TEXT, headers BLOB);…

Делаю выборку из messages:

sqlite> select * from message;…2925|10060|1289398514|Parol: 11111111 www.privat24.ua -- Modem naprokat za 0 grn. v mesyats. Zakagi na privat24.ua i plati za Internet 60 ili 80 grn.|2|0||481|0|0|0|0||ua|||0…

Данные видны, а уже с ними можно работать.

Если вы ищете клиент под Mac OS X, то не смотрите на RazorSQL – такого кроссплатформенного уродца (да ещё и небесплатного) я давненько не встречал. Посмотрите обсуждение на StackOverflow и сравнительную таблицу клиентов. Посоветовать ничего не могу, я их не смотрел, мне достаточно консоли.



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

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

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


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

 
]]>
]]>