umountが終わらなくても焦っちゃだめよという話
※この記事は、Linux系サーバエンジニアにとってはごく当たり前の内容かと思われます。あくまで自分用メモということで。
外付けハードディスクに対して、容量少ないファイルを大量に作成後、umountしたら30分ぐらい経っても終わらないよ…Ctrl+Cしてもキャンセルしてないし……これ引っこ抜いてもいい……?という状況に陥りました。が、結論としては待ってれば終わります。
デフォルトでマウントするとasync(非同期)モードでマウントするため、とりあえずメモリバッファに書き込むんですね。
で、umount時にsyncコマンドが実行されるわけですが、今回のケースでは1件あたりの容量が少なかったため、メモリバッファに収まってしまったにもかかわらず、ファイル数が多かったため非常に時間がかかってしまったと、そういうことでした。
もし知らなかった人いたら気をつけてね!!
というお話でした。
Swiftでライトやバイブレーションを使う
ちょいちょいObjective-Cの場合と違いますね。
ライトを付ける
前提として、XCodeの[Targets] -> [プロジェクト名] -> [General] -> [Linked Frameworks and Libraries] から、AVFoundation.frameworkを追加しておく必要があります。
まず、Objective-Cの場合
#import <AVFoundation/AVFoundation.h> : AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; [device lockForConfiguration:NULL]; device.torchMode = AVCaptureTorchModeOn; //On //device.torchMode = AVCaptureTorchModeOff; //Off [device unlockForConfiguration];
Swiftの場合
import AVFoundation : let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) device.lockForConfiguration(nil) device.torchMode = AVCaptureTorchMode.Off //On //device.torchMode = AVCaptureTorchMode.On //Off device.unlockForConfiguration()
バイブレーションさせる
Objective-Cの場合
#import <AudioToolbox/AudioServices.h> : AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
Swiftの場合
import AudioToolbox : AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
こんな風にキャストする必要があります。