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
Здесь вы найдете ответы на нестандартные вопросы по платформам MacOS X и iOS, включая программирование на XCODE.
четверг, 18 октября 2012 г.
AutoClicker на AppleScript
Понадобилось мне тут сделать автокликер. Удобно для это использовать AppleScript.
среда, 12 сентября 2012 г.
Примеры кода в Xcode: переход между окнами
Осуществить переход между окнами в вашем iOS приложении можно следующим образом.
Пример 1(когда нужно конкретное окно)
Пример 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 г.
четверг, 6 сентября 2012 г.
Примеры кода в 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" без кавычек.
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
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
Чтобы избавить нас от назойливости Finder'a можно использовать следующий трюк. Открываем терминал и пишем
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false; killall Finder
Вернуть все назад можно следующей командой в том же терминале
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool true; killall Finder
среда, 2 мая 2012 г.
пятница, 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 можно приблизить если нажать клавишу «пробел».
Убираем спецэффекты для вызова 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 г.
Как перевернуть пароль с русской раскладки на английскую
У администраторов, да и у пользователей тоже, периодически возникает проблема с тем, что пароль на русском языке, но в английской раскладке. Набивать пароль используя полноценную клавиатуру не возникает проблем. Но возникает проблема когда у нас под рукой устройство с iOS на борту:
И вот тут начинается самое веселое: нужно вспомнить какая русская клавиша, на клавиатуре, соответствет английской. На помощь придет виджет "Переворачиватель паролей", который висит вверу-справа. Открываете мой блог в браузере мобильного девайса и вводите, например, "МойПароль", получите "VjqGfhjkm". Далее, просто выделяете и копируйте в буфер и вставляете, предварительно переключившись в нужное приложение.
И да, забыл добавить, пароли нигде не хранятся (чистый javascript).
И вот тут начинается самое веселое: нужно вспомнить какая русская клавиша, на клавиатуре, соответствет английской. На помощь придет виджет "Переворачиватель паролей", который висит вверу-справа. Открываете мой блог в браузере мобильного девайса и вводите, например, "МойПароль", получите "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.
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
Итак, открываем терминал и пишем:
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"
Отмена всех заданий:
cancel -a
Если принтер подключен по сети, то отменить можно так:
cancel -a -h 192.186.0.1:[port]
Или отменить все задания которые послал на принтер Vasya
cancel -a -U "Vasya"
Как расшарить картинку по нажатию правой кнопки мыши
Хочу поделиться небольшим трюком для быстрого шаринга изображений. Есть такой сервис http://imgur.com/ . Он как и множество других позволяет расшарить картинку и поделиться ссылкой с друзьями. Для ускорения процесса добрые люди написали на AppleScript небольшое расширение, которое надо скачать и запустить. После этого система спросит запрос на установку.
Если все прошло успешно, можно нажать на любой картинке, которую вы хотите выложить в доступ, правой кнопкой мыши. В выпадающем списке появится пунктик: Upload to imgur. После чего картинка отправиться на сайт, который автоматом откроется у вас.
Если все прошло успешно, можно нажать на любой картинке, которую вы хотите выложить в доступ, правой кнопкой мыши. В выпадающем списке появится пунктик: 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
В стандартной клавиатуре 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. Но в этот раз я уже не обращался к гуглу. Смысла в этом нет, рано. Сейчас все кругом да около пишут обзоры и сплетни, а не колупаются в глубинах ОС. Решил этим делом заняться сам, и это дало положительный результат.
После установки 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 г.
пятница, 9 марта 2012 г.
Сброс кэша DNS или используем dscacheutil
Для сброса кеша dns в Mac OS используется системная утилита dscacheutil.
Команда: sudo dscacheutil -flushcache
Команда: sudo dscacheutil -flushcache
Бессонница у "Льва" или Mac OS X Lion не засыпает
Обнаружилось что Lion не может или не хочет "полноценно" засыпать. Как оказалось,- все дело в том что Mac OS X Lion мешает уснуть какая то служба. Чтобы обнаружить ее придется проделать кое-какие манипуляции. Итак, открываем терминал:
Набираем команду:
sudo pmset -g assertions
После чего вводим собственный пароль. И видим примерно следующую картину:
Командой kill убъем "мешающий" процесс:
sudo kill 19143
После этого Лев уснет сном младенца. Единственное что подчеркну: что это всего лишь временное решение.
Набираем команду:
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
и пропишем в нем:
Итак, открываем терминал. Для решения данной задачи создадим файл /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
Если есть вопросы - задавайте!
Подписаться на:
Сообщения (Atom)