четверг, 18 октября 2012 г.

AutoClicker на AppleScript

Понадобилось мне тут сделать автокликер. Удобно для это использовать AppleScript.
repeat 500 times
 try
  delay 3
  tell application "System Events"
   tell application process "Safari"
    click (click at {245, 193})
   end tell
   delay 5
   tell application process "Safari"
    click (click at {951, 438})
   end tell
  end tell
  delay 5
 end try
end repeat

среда, 12 сентября 2012 г.

Примеры кода в Xcode: переход между окнами

Осуществить переход между окнами в вашем iOS приложении можно следующим образом.

Пример 1(когда нужно конкретное окно)
NSArray *controllers = self.navigationController.viewControllers;
[self.navigationController popToViewController:[controllers objectAtIndex:1] animated:YES];
Пример 2(когда нужно вернуться на главное окно)
[self.navigationController popToRootViewControllerAnimated:YES];

вторник, 11 сентября 2012 г.

Примеры кода в XCode: Выводим дату и время


// Get current date time
NSDate *currentDateTime = [NSDate date];

// Instantiate a NSDateFormatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

// Format to show day of the week Sat,11-12-2011 23:27:09
[dateFormatter setDateFormat:@"EEE,MM-dd-yyyy HH:mm:ss"];

// Get the date time in NSString
NSString *dateInStringFormated = [dateFormatter stringFromDate:currentDateTime];

NSLog(@"%@", dateInStringFormated);

Аудио конвертер для Mac OS X

Недавно мне понадобилось сконвертировать аудио файлы из .aiff в .mp3. Для этого я использую бесплатную программу Switch Sound Converter for Mac OS X. Все очень просто - выбираем каталог или файлы для конвертирования. Далее выбираем формат и жмем Convert


понедельник, 10 сентября 2012 г.

Примеры кода в XCode: Удаление из списка tableView

Чтобы реализовать удаление из списка tableView нужно бросить на форму кнопку и дать ей идетификатор "Edit".

Далее раскомментируйте/добавьте в коде следующую функцию:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [lists removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
    }   
}

воскресенье, 9 сентября 2012 г.

Twitter feed

Создал twitter аккаунт для блога. Подписаться можно по ссылке.

четверг, 6 сентября 2012 г.

Примеры кода в XCode: как программно вызвать клавиатуру

[myTextField becomeFirstResponder];

Примеры кода в XCode: Как узнать разрешение экрана в iPhone/iPad

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size; 
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;

Примеры кода Xcode: Программное создание кнопки

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIButton *submitbutton = [UIButton buttonWithType:UIButtonTypeCustom];
    submitbutton.frame = CGRectMake(165, 20, 149, 39);
    [submitbutton setTitle:@"Submit Booking" forState:UIControlStateNormal];
    UIImage * btnImage1 = [UIImage imageNamed:@"KeyUpBackground.png"];
    [submitbutton setImage:btnImage1 forState:UIControlStateNormal];
    UIImage * btnImage2 = [UIImage imageNamed:@"KeyDownBackground.png"];
    [submitbutton setImage:btnImage2 forState:UIControlStateHighlighted];
     [submitbutton addTarget:self action:@selector(submitBookingButtonPressed) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:submitbutton];
}

-(void)submitBookingButtonPressed
{
   NSLog(@"pressed");
}

четверг, 30 августа 2012 г.

Отключаем ARC в некоторых файлах в XCode

ARC (Automatic Reference Count) был реализован в XCode 4.2.  Это означает что вам больше не придется использовать конструкции вида release, autorelease, или retain в вашем коде. Это намного упрощаем жизнь программистам, но в тоже время усложняет при копировании кода , написанного для более ранних версий Xcode. И как раз тут и возникают ошибки типа 'release' is unavailable: not available in automatic reference counting mode или ARC forbids explicit message send of 'release' или  ARC forbids explicit message send of 'autorelease'. Здесь я предлагаю решение данной проблемы.

1. Выберите свой проект в Project Navigator и далее на Target


2. Во вкладке "Build Phases" разверните "Compile Sources"
3. Далее щелкните 2 раза по нужному файлу напишите в открывшемся поле " -fno-objc-arc" без кавычек.

вторник, 28 августа 2012 г.

Пример кода Xcode: объединение строк

NSString *hello = @"hello";
NSString *world = @" world";
NSString *phrase = [hello stringByAppendingString:world];

Примеры кода Xcode: Int to String

int myInt = 10;
NSString *stringWithInteger = [NSString stringWithFormat: @"%d", myInt];

Примеры кода Xcode: простой класс

Приведу пример простого класса автомобиля со свойствами и методом Файл класса "car.h":
//
//  car.h
//  simple
//
//  Created by Nikita Rukavkov on 28.08.12.
//  Copyright (c) 2012 Nikita Rukavkov. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface SimpleCar : NSObject {  
    NSString* make;  
    NSString* model;  
    NSNumber* vin;  
}  
@property(readwrite, retain) NSString* make;  
@property(readwrite, retain) NSString* model;  
@property(readwrite, retain) NSNumber* vin;  
// convenience method  
- (void) setMake: (NSString*)newMake   
        andModel: (NSString*)newModel;  
@end  
Файл класса "car.m"
//
//  car.m
//  simple
//
//  Created by Nikita Rukavkov on 28.08.12.
//  Copyright (c) 2012 Nikita Rukavkov. All rights reserved.
//

#import "car.h" 
  
@implementation SimpleCar  
  
@synthesize make, model, vin;  
  
- (void) setMake: (NSString*)newMake   
        andModel: (NSString*)newModel {  
      
    [self setMake:newMake];  
    [self setModel:newModel];  
  
}  
  
@end  
Пример вызова:
    car *myCar = [[car alloc] init];
    [myCar setMake:vendor andModel:model];
    NSLog(@"The car is: %@ %@", [myCar make], [myCar model]);

Примеры кода Xcode: NSString to Integet

У класса NSString есть замечательный метод, который возвращает значение строки в типе NSNumber. Пример:
NSString *vin_m = [[NSString alloc] init];
vin_m = @"1234567890";
NSNumber *newVin = [NSNumber numberWithInt:[vin_m intValue]];

Примеры кода Xcode: объявляем тип integer (класс NSNumber)

NSNumber *newVin = [NSNumber numberWithInt:123];

Примеры кода Xcode: объявляем строку в Objective C

Пример 1:
NSString *testString;
testString = [[NSString alloc] init]; 
testString = @"Here's a test string in testString!"; 
NSLog(@"testString: %@", testString); 
Пример 2:
NSString* make=[[NSString alloc] initWithString:@"Test string"];

суббота, 11 августа 2012 г.

Клавиша insert в Mac OS X или как выделить файлы в mc

Работая удаленно через ssh с Linux-серваками в файловом менеджере midnight commander(mc) часто возникает необходимость выделить некоторые файлы. Но тут возникает проблема - в беспроводной клаве Apple нет такой клавиши. Чтобы обойти это достаточно использовать комбинацию Ctrl+T.

среда, 1 августа 2012 г.

Изменение пути сохранения скриншотов в Mac OS

По роду своей деятельности, я часто делаю скриншоты с экрана своего iMac. И меня просто бесит что они располагаются автоматом на рабочем столе. Для исправления данной ситуации в Terminal достаточно ввести следующую команду:

defaults write com.apple.screencapture location -string "path/to/location"

Где path/to/location нужно заменить на тот путь, куда будут сохранятся вновь созданные скриншоты.

пятница, 27 июля 2012 г.

Как создать alias с помощью ifconfig в MacOS

Иногда возникает необходимость создать alias сетевого интерфейса в Mac. Для этого можно использовать следующую команду:

sudo ifconfig en0 alias 192.168.0.101 255.255.255.0

Чтобы удалить alias:

sudo ifconfig en0 -alias 192.168.0.101

среда, 23 мая 2012 г.

Как использовать Color Splash Photo

Наткнулся тут в appstore на интересную прогу Color Splash Photo для дизайнеров и простых сметрных =) Программа позволяет, не имея каких-то определенных навыков, добиться интересного эффекта. Например, вот  что получилось у меня:

Как убрать предупреждение Finder при изменении расширения файла

Часто бывает необходимость изменить расширение файла. Проделывая эту операцию Finder предупреждает нас сообщением типа:
Чтобы избавить нас от назойливости Finder'a можно использовать следующий трюк. Открываем терминал и пишем

defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false; killall Finder

Вернуть все назад можно следующей командой в том же терминале

defaults write com.apple.finder FXEnableExtensionChangeWarning -bool true; killall Finder

среда, 2 мая 2012 г.

Определение позиции курсора мыши в Mac

Иногда нужно узнать позицию курсора мыши на вашем мониторе. В этом вам поможет меленькая тулза, которая входит в пакет программ, устанавливаемых с XCode. Ее название pixie. Особенность этой программы в том, что она в левом углу показывает координаты курсора, а в правом - цветовой RGB код!

пятница, 6 апреля 2012 г.

Улучшаем Mission Control


Mission Control группирует окна одного приложения в «стопки». Для того, чтобы рассмотреть нужную стопку, можно навести на неё мышку и промотать вверх и стопка приблизится.
Если выполнить в терминале следующую команду, то окна приложения будут увеличиваться сильнее, что гораздо удобнее:
    defaults write com.apple.dock expose-cluster-scale -float 0.5 && killall Dock
Если же вы вдруг захотите вернуть всё назад, то в терминале необходимо набрать:
    defaults delete com.apple.dock expose-cluster-scale && killall Dock
Также, любое окно в Mission Control можно приблизить если нажать клавишу «пробел».

Просмотр man-страниц в терминале

В терминале Mac OS Lion появилась возможность удобно просматривать man-страницы. Для этого напишите команду, инструкцию на которую вы хотите прочитать и кликните на ней правой кнопкой мыши. В появившемся меню выберите пункт Open man Page.






Страница откроется в таком виде:


Убираем спецэффекты для вызова LaunchPad


Для того, чтобы LaunchPad появлялся на экране моментально, без каких-либо спецэффектов, достаточно трёх команд в терминале:
    defaults write com.apple.dock springboard-show-duration -int 0
    defaults write com.apple.dock springboard-hide-duration -int 0
    killall Dock
Для того, чтобы вернуть эффект:
    defaults delete com.apple.dock springboard-show-duration
    defaults delete com.apple.dock springboard-hide-duration
    killall Dock

Как временно запретить приложению восстанавливать своё состояние

Для того, чтобы запретить приложению восстанавливать своё состояние, при запуске просто запустите его зажав клавишу Shift.

Ускоряем анимацию Mission Control


Для того, чтобы повысить скорость анимации при вызове Mission Control, следует использовать такую команду в терминале:
defaults write com.apple.dock expose-animation-duration -float 0.15;killall Dock
Значение 0.15 — это именно то, что отвечает за скорость. Чем больше значение, тем меньше скорость. Если выставить его в ноль, то окна программ будут разлетаться в стороны мгновенно. Значение 1 наоборот замедлит анимацию.
Для того, чтобы вернуть всё обратно:
defaults delete com.apple.dock expose-animation-duration; killall Dock

четверг, 5 апреля 2012 г.

Обмен ссылками

С удовольствием обменяюсь ссылками на ваш ресурс. Пишите на admin[at]go2see.ru.

Как перевернуть пароль с русской раскладки на английскую

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

И вот тут начинается самое веселое: нужно вспомнить какая русская клавиша, на клавиатуре, соответствет английской. На помощь придет виджет "Переворачиватель паролей", который висит вверу-справа. Открываете мой блог в браузере мобильного девайса и вводите, например, "МойПароль", получите "VjqGfhjkm". Далее, просто выделяете и копируйте в буфер и вставляете, предварительно переключившись в нужное приложение.

И да, забыл добавить, пароли нигде не хранятся (чистый javascript).

среда, 4 апреля 2012 г.

Вышло обновление Mac OS X


Вышло обновление для Mac OS X: Java.

Java для OS X 2012-001 обеспечивает повышение совместимости, безопасности и надежности путем обновления Java SE 6 до версии 1.6.0_31.

Подробные данные об этом обновлении можно найти на веб-странице http://support.apple.com/kb/HT5055?viewlocale=ru_RU.
Подробную информацию о системе безопасности этого обновления можно найти на веб-странице http://support.apple.com/kb/HT1222?viewlocale=ru_RU.

пятница, 30 марта 2012 г.

Охлаждаем iMac


Играя в одну замечаельную игру, которая называется Mafia II, заметил, что через некоторое время игра начинает тормозить. Сразу стало понятно что дело в охлаждении. Но разбирать iMac и делать дополнительное охлаждение нет никакого желания и сил. Первый же запрос в Гугль дал отличный результат: утилита smcFanControl. В ней можно задавать профили, менять значения rpm на ODD, HDD, CPU. В принципе, более чем достаточно. Выставив значения на максимум - температура процессора снизилась с 54 градусов до 45, что не может не радовать!

четверг, 22 марта 2012 г.

Проброс порта через ssh туннель в Mac OS X

Создать ssh-туннель в Mac OS X можно следующей командой
sudo ssh root@Vneshniy-Server.com -L 443:Vnutrenny-Server.net:443

Теперь подключиться к Vnutrenny-Server.net по 443 порту можно обратившись к хосту localhost:443.

вторник, 20 марта 2012 г.

Установка обновлений Mac OS X через Терминал

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

Итак, открываем терминал и пишем:
sudo softwareupdate -i -v -a

Рассмотрим более детально опции:
-i - установить обновления
-a - установить все обновления(используется совместно с -i)
-v - отображать процесс

Посмотреть список доступных обновлений можно так:
sudo softwareupdate -l

Ну и если хотите еще разобраться более детально, то можно почитать man:
man softwareupdate

Отмена задания на печать из терминала

В Mac OS X есть такая замечательная утилита cancel. Она позволяет отменить задание, отправленное на принтер.

Отмена всех заданий:
cancel -a

Если принтер подключен по сети, то отменить можно так:
cancel -a -h 192.186.0.1:[port]

Или отменить все задания которые послал на принтер Vasya
cancel -a -U "Vasya"

Как расшарить картинку по нажатию правой кнопки мыши

Хочу поделиться небольшим трюком для быстрого шаринга изображений. Есть такой сервис http://imgur.com/ . Он как и множество других позволяет расшарить картинку и поделиться ссылкой с друзьями. Для ускорения процесса добрые люди написали на AppleScript небольшое расширение, которое надо скачать и запустить. После этого система спросит запрос на установку.

Если все прошло успешно, можно нажать на любой картинке, которую вы хотите выложить в доступ,  правой кнопкой мыши. В выпадающем списке появится пунктик: Upload to imgur. После чего картинка отправиться на сайт, который автоматом откроется у вас.

понедельник, 19 марта 2012 г.

Заставляем iTunes выводить информацию о проигрываемом треке

В Mac OS X Lion в iTunes убрали "по-умолчанию" информацию о проигрываемом треке. Решим данную незадачу =)

Запускаем терминал и пишем команду:
defaults write com.apple.dock itunes-notifications -bool YES;killall Dock

Команда пропишет необходимые параметры и перезапустит Dock панель. После этого, когда будет начинаться слеудующий трек вы будете видеть что играет iTunes. Смотрим пикчу:


четверг, 15 марта 2012 г.

Консольный менеджер ssh сессий

Когда количество серверов начинает зашкаливать, возникает необходимость их организовать. Каждый раз забивать ip адрес нет никакого желания, особенно если делаешь это по 50 раз за день. К сожалению функции стандартного Терминал-а мне не подошли, так как времени на открытие новой сессии через стандартное меню уйдет даже больше, чем если набирать "ssh root@192.168.0.1 -p3322". За насколько минут я написал небольшой скрипт, который выводит список серверов с возможностью выбора к какому нужно подключиться. Выглядит это примерно так:

Сам скрипт, который вы можете доработать по своему желанию такой(В данном примере если сервер выбран из подсети 192.173.0. - подключение будет по порту 3322):

#!/bin/sh
ARRAY=('192.168.0.100' '192.173.0.1' '192.173.0.163' '192.173.0.166' '192.173.0.167' '192.173.0.168' '192.173.0.169')
SERVERS=${#ARRAY[@]}
echo "Выбери сервер:"
for (( i=0;i<$SERVERS;i++)); do
    echo $i\) ${ARRAY[${i}]}
done 

read choice

echo "Соединяемся с ${ARRAY[${choice}]}"
net=$(echo ${ARRAY[${choice}]} | awk 'BEGIN {FS="."} {print $1"."$2"."$3"."}')
if [ $net == "192.173.0." ]; then
ssh root@${ARRAY[${choice}]} -p3322
else
ssh root@${ARRAY[${choice}]}
fi
done

Разделитель в Dock Mac OS X

Разбить Dock можно с помощью невидимых разделителей. Например, у меня так:
 Очень удобно сгуппировать значки по типу. Например: "Интернет", "Разработка" и т.д. Решить задачку поможет Терминал. Запускаем его (у вас еще не открыт?).

В терминале пишем 
defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}';killall Dock
и выполняем ее нажав Enter

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

Если вам нужно добавить еще разделителей - то нужно просто повторить операцию необходимое количество раз.

Переназначаем клавиши на клавиатуре в Mac OS


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

В стандартной клавиатуре Windows на ее месте расположена клавиша Ё в русской раскладке, и ` - в анлийской. Если вы программист - то без "обратной тильды" в Linux тяжело работать. В решении данной проблемы вам поможет приложение keyremap4macbook.

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

В моем случае переназначенная настройка выглядит так:
Данным приложением можно переназначить очень много клавишь на mac-клавиатуре. Вплоть до смены Ctrl и Alt местами. =)

UDP Видимо придется написать небольшое дополнение в связи с последними комментами. Итак, если вы хотите назначить Caps Lock как Enter выполняем следующую вещь. 

Для начала у вас должен быть уже установлен keyremap4macbook. Далее мы устанавливаем к нему дополнение pckeyboardhack. После установки необходимо перезагрузиться. Далее открываем системные настройки и внизу находитм PCKeyboardHack. Открываем его и меняем keycode для Caps Lock на 36. Вот и все теперь при нажатии Caps Lock будет эмулироваться нажатие клавиши Enter.

Скрин прилогаю



вторник, 13 марта 2012 г.

Как включить поддержку записи NTFS в Mac OS X 10.7 Lion стандартными средствами.

Источник

После установки Mac OS X 10.7 Lion Golden Master начал присматриваться к будущему рабочему окружению: что и как работает, что убрали, что добавили, что переместили. Это же практически то, что нас ожидает вот-вот-вот! Решил опробовать как обстоят дела с чтением/записью NTFS в Lion. Чтение, конечно же, и так работает, как говорят «из коробки», а я решил пошаманить с включением записи на NTFS разделы подручными средствами операционной системы «Лев». На ум пришёл уже известный способ, которым пользовался в Mac OS X Snow Leopard. Но не смотря на резвость работы этого Golden Master’а я был огорчён. Как вы уже догадались, не работает этот способ в Mac OS X Lion GM. Но в этот раз я уже не обращался к гуглу. Смысла в этом нет, рано. Сейчас все кругом да около пишут обзоры и сплетни, а не колупаются в глубинах ОС. Решил этим делом заняться сам, и это дало положительный результат.
Методом научного тыка (народные методы не расписываются в мелочах) определил, что c бинариком mount_ntfs в папке /sbin всё впорядке, скрипт, который мы создаём, тоже работает как нужно. Оказалось, что всё дело крылось в самом драйвере (кексте)ntfs.kext, который находится в /System/Library/Extensions/. Немного поколупавшись в NTFS драйверах от Mac OS X 10.6.8 и от Mac OS X 10.7 GM обнаружил, что драйвера отличаются минимально, можно сказать только сборкой, но вот Lion’овскую лешили встроенной поддержки записи на NTFS разделы. Попробовал подсунуть бинарик кекста ntfs.kext из Snow Leopard в Lion, полечил права, перезагрузился… И всё заработало! Короче, инструкция:
Скачиваем этот архив, в котором находится бинарик от ntfs.kext из Mac OS X 10.6.8 Snow Leopard и скрипт. Распаковываем этот архив на Рабочий стол. У вас должна появиться папкаNTFS_Enabler в которой находятся два файла: mount_ntfs и ntfs. Запускаем Терминал(Terminal.app) и выполняем:
1) Чтоб не писать лишних sudo сразу говорим, что мы будем работать от лица администратора (root’а):sudo -sи жмём Enter. На запрос пароля вводим пароль суперпользователя и снова жмём Enter.
2) Создаём резервную копию бинарика из ntfs.kext:mv /System/Library/Extensions/ntfs.kext/Contents/MacOS/ntfs \
/System/Library/Extensions/ntfs.kext/Contents/MacOS/ntfs_orig
3) Копируем бинарик драйвера ntfs.kext, вытянутый из Mac OS X 10.6.8 Snow Leopard, на место оригинального бинарика:cp ~/Desktop/NTFS_Enabler/ntfs \
/System/Library/Extensions/ntfs.kext/Contents/MacOS/ntfs
4) Назначаем ему правильные права и атрибуты:chown root:wheel /System/Library/Extensions/ntfs.kext/Contents/MacOS/ntfs;\
chmod 644 /System/Library/Extensions/ntfs.kext/Contents/MacOS/ntfs
5) Создаём резервную копию оригинального демона mount_ntfs:mv /sbin/mount_ntfs /sbin/mount_ntfs_orig
6) Теперь на место оригинального демона mount_ntfs помещаем скрипт-враппер, который будет «перехватывать» системные комманды и активировать ntfs.kext на чтение и запись:cp ~/Desktop/NTFS_Enabler/mount_ntfs /sbin/mount_ntfs
7) Скопированному скрипту назначаем правильные права и атрибуты:chown root:wheel /sbin/mount_ntfs; chmod 755 /sbin/mount_ntfs
8) Запускаем драйвер:kextload /System/Library/Extensions/ntfs.kextПри удачном запуске не должно быть ошибок.
9) Запускаем Дисковую утилиту и перемонтируем диски с файловой системой NTFS. Перезагружаться не нужно.
В архиве так же находится текстовый документ с командами построчно, так как движок блога мог поколбасить некоторые из них. После выполнения вышеперечисленных 9-ти шагов диски и разделы с файловой системой NTFS будут монтироваться на чтение и запись сразу, без каких-либо «прописок» в fstab и перезагрузок! Отключить запись на NTFS и вернуть всё обратно можно при помощи двух консольных команд (потребуется пароль администратора):
sudo mv /sbin/mount_ntfs_orig /sbin/mount_ntfsпотомsudo mv /System/Library/Extensions/ntfs.kext/Contents/MacOS/ntfs_orig \
/System/Library/Extensions/ntfs.kext/Contents/MacOS/ntfs
Читатель блога по имени Сергей Васильев провёл исследование этого метода и выделил следующие «плюсы» и «мниусы»:
Плюсы:
  • Большая скорость записи, около 30 МБ/сек.
  • При удалении файлов помещает их в корзину, а не удаляет перманентно.
Минусы:
  • Если том «некорректно» отмонтирован из винды, то ругается в лог и монтирует read-only.
  • Disk Utility не может создавать раздел типа NTFS.
  • Ну, это всё-таки хак ;-)
Поэтому читателям такая рекомендация: по дефолту пользоваться нативным драйвером согласно этому методу. Но Держать NTFS-3G установленным, но выключенным (кнопка Disable/Enable в System Preferences) на случай если нужно примонтировать проблемный раздел или разметить диск. Так же от себя напомню, что всё опробовалось и работает начиная с Mac OS X Lion 10.7 Golden Master, до Mac OS X Lion 10.7.2 включительно.
Не используйте NTFS для хранения важных файлов при работе в Mac OS X; и наоборот, не используйте HFS+ для хранения важных файлов при работе в Windows. Не полагайтесь на сторонние решения, такие как Tuxera NTFS, Paragon NTFS или NTFS-3G. Используйте функцию записи на NTFS только для обмена файлами, потеря которых не критична, или если имеется их резервная копия.
Внимание! Из-за многочисленных нестыковок я создал небольшой пакет под названием NTFS Tools, который проделает всё вышеописанное автоматом (ссылка на обзор).

суббота, 10 марта 2012 г.

Выводим IP-адрес в строке приглашения bash

Открываем для редактирования .profile в корневом кталоге пользователя:
vim ~/.profile

Далее добавим строку
export PS1=`/sbin/ifconfig en0 | /usr/bin/perl -ne 'if ( m/^\s*inet (?:addr:)?([\d.]+).*?cast/ ) { print qq($1\n); exit 0; }'`:$PS1


После этого получим что то типа этого

пятница, 9 марта 2012 г.

Сброс кэша DNS или используем dscacheutil

Для сброса кеша dns в Mac OS используется системная утилита dscacheutil.

Команда: sudo dscacheutil -flushcache

Бессонница у "Льва" или Mac OS X Lion не засыпает

Обнаружилось что Lion не может или не хочет "полноценно" засыпать. Как оказалось,- все дело в том что Mac OS X Lion мешает уснуть какая то служба. Чтобы обнаружить ее придется проделать кое-какие манипуляции. Итак, открываем терминал:
Набираем команду:
sudo pmset -g assertions
После чего вводим собственный пароль. И видим примерно следующую картину:
Командой kill убъем "мешающий" процесс:
sudo kill 19143


После этого Лев уснет сном младенца. Единственное что подчеркну: что это всего лишь временное решение.

среда, 22 февраля 2012 г.

Статические маршруты в macos при поднятии VPN

По-умолчанию, при поднятии VPN соединения, Mac OS X пропишет только один статический маршрут, соответствующий создаваемому туннелю. Но бывают ситуации когда необходимо прописать несколько маршрутов для подсетей или хостов. Решить данный вопрос в GUI Mac OS X невозможно. Но возможно через консоль(терминал).

Итак, открываем терминал. Для решения данной задачи создадим файл /etc/ppp/ip-up, и сделаем его исполняемым: 

sudo touch /etc/ppp/ip-up
sudo chmod a+x /etc/ppp/ip-up

Открываем созданный файл для редактирования

sudo vim /etc/ppp/ip-up

и пропишем в нем:
#!/bin/sh
ifname=$1        # the interface name used by pppd (e.g. ppp3)
ttyname=$2       # the tty device name
speed=$3         # the tty device speed
localip=$4       # the local IP address for the interface
remoteip=$5      # the remote IP address
ipparam=$6       # the current IP address before connecting to the VPN
 
case "$remoteip" in
    172.24.38.116)
        /sbin/route add -net 192.0.2.0/24 -interface $ifname
        /sbin/route add -host 192.168.12.54 -interface $ifname
        ;;
esac
 
exit 0;
В данном примере 172.24.38.116 это ip-адрес сервера VPN. 192.0.2.0/24 и 192.168.12.54 подсеть  и хост, которые пойдут через VPN туннель. IP-адрес сервера можно посмотреть после установления VPN соединения командой ifconfig и найти интерфейс ppp0.
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1448
 inet 192.168.20.57 --> 172.24.48.116 netmask 0xffffff00 
Аналогично можно сделать скрипт для удаления маршрутов /etc/ppp/ip-down, который  будет вызываться при остановке VPN туннеля:
/sbin/route delete -net 192.0.2.0/24 -interface $ifname
/sbin/route delete -host 192.168.12.54 -interface $ifname
Если есть вопросы - задавайте!