2011年5月31日火曜日

[Mac] アプリの切り替えはWindowFlowが便利


Mac App Storeの無料アプリランキングに殿堂入りしているWindowFlowというアプリが便利です。起動しているアプリの切り替えを、スムーズにできるようになります。

[Option]+[TAB]で起動して、画面を確認しながら、[Option]キーを押したまま、[TAB]、[↑]、[↓]で切り替えられます。


インストールは、Mac App Storeからなので簡単にできます。

インストールしたら、起動してこの設定はしましょう。
・アプリアイコンの表示はメニューバーのみ
・ログイン時に自動的に起動する

 設定したら、WindowFlowを再起動してください。
 メニューバーのこのような感じにアイコンが表示されます。


試しに使ってみてください。

2011年5月23日月曜日

先日、購入したNASくんに満足してます

今、愛用しているNASは、以前紹介しましたがコレです。
BUFFALOから出てるLink Station(リンクステーション)LS-WSX1.0TL/R1
NASとは、ネットワークに接続できるハードディスクのことです。お家に無線LANのネットワークがあれば、ワイヤレスでハードディスクにもアクセスできちゃうので便利です。3ヶ月ほど使って満足してる点を紹介したいと思います。

1.ミラーリング対応
ミラーリング(RAID1)に対応してて、2台のハードディスク両方に同じ内容が書き込まれます。だから、万が一どちらかが壊れても、もう一方に同じデータが残ってるので安心です。

2.コンパクトで省エネ
2.5インチの小さめのハードディスクを採用しているので、手のひらサイズと大変コンパクトで邪魔になりません。また、ファンレスで、小型のハードディスクを採用してることで、消費電力が平均9Wです。一般的なものと比べて1/3くらいです。

3.Time Machine対応
Mac OSX標準搭載のTime Machineでバックアップデータの保管先に使えます。ワイヤレスでバックアップできるから、勝手に取られてる気分になります。この機能が一番気に入っています。

4.バックアップ機能
ミラーリングしてても不安な方へ。自分もその一人です。データを外部ハードディスクにバックアップする機能が付いてます。あと本体にUSB端子が付いてるので、USB接続のハードディスクも保管先に使えます。僕は毎週でUSBのハードディスクに書き出しています。

5.メール通知機能
ハードディスクの調子がおかしくなったときにメール通知してくれます。GMailなどのメールアカウントが必要になります。僕は携帯電話宛に通知されるようにしてます。

興味を持たれましたが、購入してはいかがでしょうか。
色は黒と白の2種類あります。
ハードディスクの容量は1TB(ミラリングだと500GB)、500GB(ミラリングだと250GB)


      

2011年5月22日日曜日

[iOS] Webサイトと通信してみる

前回、UINavigationControllerで階層的に画面を切り替える (2)

Webサイトと通信することで、ゲームのスコアやデータなどをやりとりすることができます。通信には非同期と同期の2種類がありますが、ここでは通信が終わるのを待たない非同期型の通信プログラムを作成します。

■最初に通信の流れ
1.Webサイトに送るデータを作成する
2.Webサイトにデータを送る
3.Webサイトからのデータを受け取る
4.データを文字列に変換する


■通信プログラムを作成する
1.Webサイトに送るデータを作成する
Webサイトと通信するには、NSURLConnectionクラスを利用しますが、先にWebサイトに送るデータを作成します。作成するには、NSMutableURLRequestクラスを使います。次のようにして、通信先とリクエストタイプを設定します。
NSMutableURLRequest *req =
    [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"通信先(http://.../)"]];
[req setHTTPMethod:@"リクエストタイプ(GETかPOST)"];


2.Webサイトにデータを送る
NSURLConnectionクラスに、作成したNSMutableURLRequestを渡します。
NSURLConnection *connection =
    [NSURLConnection connectionWithRequest:req delegate:<イベント通知先>];


2番目のdelegateに通信中に起きたイベント受け取るオブジェクトを指定する必要があります。このオブジェクトは、NSObjectを継承していて、受け取りたいイベントに関連するメソッドをオーバーライドしてください。少なくとも次のメソッドはよく使います。他にもメソッドはありますが、ここでは省略します。
●最初のレスポンス受信時に1度だけ呼ばれ、受信の初期化処理を行う
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
● 受信完了まで断片的にデータを受信する
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)receiveData;
● 受信完了時に1度だけ呼ばれます
- (void) connectionDidFinishLoading:(NSURLConnection *)connection;
● 通信エラー時に呼ばれます
- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
●最初のレスポンス受信時に1度だけ呼ばれ、受信の初期化処理を行う
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

3.Webサイトからのデータを受け取る
Webサイトからのデータは、データサイズや通信状況により、部分的に送られてきます。データの受信を格納するには、NSDataクラスを継承したNSMutableDataクラスを使います。NSMutableDataクラスは、データを格納するNSDataクラスとは違い、中身のデータを編集することができます。通信が始まる前に、NSMutableDataクラスを初期化しておき、次のメソッドが呼ばれた際に、NSMutableDataにどんどんデータを追加していきます。
● 受信完了まで断片的にデータを受信する
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)receiveData;
NSMutableDataクラスの末尾にデータを追加するには、次のようにメソッドを利用します。
- (void)appendData:(NSData *)other;
要するに、
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)receiveData{
    // 通信前に初期化すること、NSMutableData *_data = [[NSMutableData alloc] init];
    [_data appendData: receiveData]
}

となります。

4.データを文字列に変換する
NSMutableDataをNSStringに変換するには、NSStringのinitWithDataメソッドを使います。
※ここでは、データはUTF8のエンコードであることを想定しています。
// NSMutableData *_data = [[NSMutableData alloc] init];
NSString *output = [[NSString alloc] initWithData:_data encoding:NSUTF8StringEncoding];


■通信用のサンプルプログラムを作ってみた
ところどころに動作確認のために、コンソールにログをはき出すプログラムを入れています。
//  RunpetaConnection.h
//  runpeta
//
//  Created by くまころ on 11/5/22.
//  Copyright 2010 Runpeta. All rights reserved.
//
#import <Foundation/Foundation.h>

@interface RunpetaConnection : NSObject
{
@private
NSURLConnection *_connection;
    NSMutableData   *_data;

}
- (void) loadFromUrl: (NSString *)url method: (NSString *) method;

@end


//
//  RunpetaConnection.m
//  runpeta
//
//  Created by くまころ on 11/5/22.
//  Copyright 2010 Runpeta. All rights reserved.
//
#import "RunpetaConnection.h"

@implementation RunpetaConnection
// 最初のレスポンス受信時に1度だけ呼ばれ、受信の初期化処理を行う
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
   [_data setLength:0];
    NSLog(@"(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response");
}
// 受信完了まで断片的にデータを受信する
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)receiveData
{
    [_data appendData:receiveData];
    NSLog(@"(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)receiveData");
}

// 受信完了時に1度だけ呼ばれます
- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"(void) connectionDidFinishLoading:(NSURLConnection *)connection");
 
    // 受信した内容を文字列に変換し、コンソールに出力する
    NSString *output = [[NSString alloc] initWithData:_data encoding:NSUTF8StringEncoding];
    NSLog(@"Output: %@", output);
    [output release];
}
// 通信エラー時に呼ばれます
- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error");
}
//
- (void) loadFromUrl: (NSString *)url method: (NSString *) method
{
    NSMutableURLRequest *req =
      [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
   [req setHTTPMethod:method];
   _connection = [NSURLConnection connectionWithRequest:req delegate:self];
   _data = [[NSMutableData alloc] init];
}

- (void)dealloc {
    [_data release];
    [super dealloc];
}
@end


動作確認するために、実行される適当な場所にプログラムを追加しました。
RunpetaConnection *conn = [[RunpetaConnection alloc] init];
[conn loadFromUrl:@"http://runpeta.com/api/paneler" method:@"GET"];



・正常に動作した場合のコンソールログ
GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".sharedlibrary apply-load-rules all
Attaching to process 14827.
Pending breakpoint 1 - ""RunpetaConnection.m":29" resolved
Pending breakpoint 2 - ""RunpetaConnection.m":44" resolved
Pending breakpoint 3 - ""RunpetaConnection.m":39" resolved
Pending breakpoint 4 - ""RunpetaConnection.m":51" resolved
Current language: auto; currently objective-c
2011-05-22 15:08:59.276 runpeta[14827:207] (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
2011-05-22 15:08:59.282 runpeta[14827:207] (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)receiveData
2011-05-22 15:08:59.283 runpeta[14827:207] (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)receiveData
2011-05-22 15:09:07.319 runpeta[14827:207] (void) connectionDidFinishLoading:(NSURLConnection *)connection
2011-05-22 15:09:07.323 runpeta[14827:207] Output:  <?xml version="1.0" encoding="UTF-8"?><paneler>
  <configs>
    <background_color>a9da8f</background_color>
    <background_image>http://runpeta.com/images/paneler/pl_bg.png</background_image>
    <border_color>a9da8f</border_color>
    <border_width>1</border_width>
    <foreground_color>ffffff</foreground_color>
    <padding_bottom>8</padding_bottom>
    <padding_top>8</padding_top>
    <padding_left>8</padding_left>
    <padding_right>8</padding_right>
   <auto_change_panel_time>5</auto_change_panel_time>
...以下、省略



■試しに、インターネットへの回線を切断して実行すると
きちんと通信エラーのメソッドが呼ばれていることが確認できました。
GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".sharedlibrary apply-load-rules all
Attaching to process 15015.
2011-05-22 15:11:53.552 runpeta[15015:207] (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

[iOS] UINavigationControllerで階層的に画面を切り替える (2)

前回、UINavigationControllerで階層的に画面を切り替える

【開発環境】Xcode4、iOS4.3

ナビゲーションコントローラで新しくビューコントローラを開いてみます。ここでは、前回のテーブルビューコントローラの項目を選択したときに、再度テーブルビューコントローラを開くようにしてみます。

1.テーブルビューコントローラの項目を選択したときの処理を書く。[CourseListViewController.m]を開きます。CourseListViewController(テーブルビューコントローラ)のインスタンスを作成して、UINavigationControllerの[pushViewController]メソッドに渡すことで、新しくビューコントローラを開くことができます。
・ナビゲーションコントローラは、ビューコントローラの[navigationController]プロパティから参照できます。
・[animated]はアニメーションさせながら切り替えるかの属性です。
#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // (サンプル) 同じビューコントローラを新規に作成して開く
    CourseListViewController *viewCtrl = [[[CourseListViewController alloc] init] autorelease];
    [self.navigationController pushViewController:viewCtrl animated:YES];
}



2.あとナビゲーションバーに表示されるビューコントローラのタイトルを”Root View Controller"から変更する。[viewDidLoad]の中で、[title]プロパティに新しいタイトル名を代入します。
#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
 
    // ビューコントローラのタイトルを付ける
    self.title = @"Course List";
 
    // 配列に文字列一覧を格納する
    item_ = [[NSArray alloc] initWithObjects:
                    @"DATA 1", @"DATA 2", @"DATA 3",
                    @"DATA 4", @"DATA 5", nil];
 
}


3.それでは、シミュレータを起動してみる。次のことを確認してみてください。
・タイトルが変わっていること
・項目を選択したときに、アニメーションして画面が変わること
・新しい画面のナビゲーションバーにあるボタンをクリックすると画面が戻ること




[iOS] UINavigationControllerで階層的に画面を切り替える


【開発環境】Xcode4、iOS4.3

UITabBarControllerの他に画面を切り替えるコントローラとして、UINavigationController(ナビゲーションコントローラ)があります。タブバーコントローラは、画面を並列的に切り替えるのに対して、ナビゲーションコントローラは画面を階層的に切り替えることができます。要するに、ユーザーの操作に応じて、新しく画面を開くことができ、また直前の画面に戻ることができます。


よく一覧表示の画面に使われています。画面上部にナビゲーションバーが表示され、直前の画面に戻るボタン現在の画面タイトルが表示されます。


ナビゲーションコントローラとタブバーコントローラは組み合わせて使うこともできます。ただ、タブバーコントローラの中にナビゲーションコントローラに使います。こんな感じになります。画面上部にナビゲーションバー、画面下部にタブバーコントローラが表示されています。

それでは、ナビゲーションコントローラを利用する手順について説明します。ここでは、前回までに作成したタブバーコントローラに追加する例を挙げます。

1.[MainWindow.xib]を開きます。左下の[→]のボタンをクリックして、画面に配置したオブジェクト一覧を表示させます。


2.↓のように画面内のオブジェクト一覧が表示されます。例えば、[Tab Bar Controller]の中に[UIViewController]が複数入っていることが分かります。


3.前回までは、[UIViewController]をタブバーところにドラッグして追加しましたが、今回は画面内のオブジェクト一覧から追加します。オブジェクトライブラリから[Navigation Controller]をドラッグします。


4.追加したナビゲーションコントローラを選択すると、画面内にナビゲーションバーが表示されていることが分かります。あと、左側の画面内のオブジェクト一覧を展開すると、[View Controller]を比べて、[Navigation Bar]と[View Controller]の2つが多いことが分かります。ここの[View Controller]を変更することで、最初に表示するビューコントローラを設定できます。


5.[View Controller]をカスタムビューコントローラに変更します。以前作成したカスタムテーブルビューコントローラに変えてみます。
①画面内のオブジェクト一覧から[View Controller]を選択します。
②アイデンティティインスペクターを開きます。
③[Class]でカスタムコントローラのクラスを選択します。
(ここでは”CourseListViewController”を選択します)


6.ついでにタブバーコントローラのアイコンも変えます。

①画面内のオブジェクト一覧から[Tab Bar Item]を選択します。
②アトリビュートインスペクターを開きます。
③[Title](ラベル)と[Image](画像)を変更します。




6.ここまででシミュレータを起動してみる。


次回、ナビゲーションコントローラで新しい画面を開く

2011年5月18日水曜日

[Apple] SuperDriveを買いました

Mac Book Airを買ったのはいいけど、DVDドライブが付いてなくて映画が見えない。
ネットで対応してるドライブを調べてたけど、相性がいまいちなんだね、対応してるって書かれていないと認識するかは運みたいだね。

それなら、少し高いけどApple純正のスーパーマルチドライブ買っちゃいました。
これMac Book Air専用みたいだね・・・Mac miniで動くのかな?持っていないので試せない。

箱を開封してみる。

念入りにクッション材に囲まれた段ボールを空けて、やっと箱のお出まし。

ドライブがすっぽり入ってますね。

アルミふんだんに使ってるせいか若干重い。シンプルすぎるわりに、アルミボディが美しい。

Mac Book AirにUSB接続でつないだらすぐに使えた。なんにも設定がいらなくて簡単!

ドライブ本体に[ディスク取り出し]ボタンがないと思ったら・・・

Mac Book Airのキーボードにあったんですね。

電源のおとなり。

DVD映画を見るために使います。ブルーレイにも対応してくれればいいのになぁ。

[Apple] Apple TV2を買いました

今更ながらって感じがありますが、Apple TV2を買いました。
Apple TV2で、テレビでiTunes Storeからレンタルした映画など見れる画期的なデバイスです。他に、Youtubeなどの動画サイトやホームシェアリングしているコンテンツ(音楽、写真)も大画面のテレビで見ることができ、大勢で見るときに便利です。

<<届いたサイコロを開封してから、テレビに映すまでを写真に納めました>>

箱は、ホントに10cm四方のサイコロです(およそ)

包装のビニールをはがし、横にスライドする・・・Apple TVの外観が現れました。

本体を取り出すと、こんな狭いところにApple Remote(リモコン)が埋まっていました。
こんな狭いところに器用に入れ込んだなぁっと関心しちゃった。

リモコンの底には蛇が!違った、電源ケーブルがグルグル巻きに入ってます。
ケーブルだけってことは、ACアダプタは本体に内蔵なんですか・・・それにしてはコンパクトな本体だなぁ

とりあえず、全て出してみた。マニュアルの中にお馴染みのアップルシールが入ってた。
HDMIケーブルとLANケーブルなどは付属してないんですね。

無線LAN対応してるからLANケーブルはいらないな。
テレビにHDMIで接続し て、初期設定をしました。

ホーム画面的なところはこんな感じ。

ホームシェアリングで自分のライブラリを見てみる。

リモコンでの操作感はサクサク動いて快適です。ただ機能的な部分が少ないという印象です。ホームシェアリングしないと、音楽や写真が見えないのが残念です。自宅のファイルサーバ内のコンテンツも再生できると便利だな。

あと、試したことが、iPhoneにRemoteというアプリをインストールすると、iPhone内の音楽や写真をAppleTVで再生させることができました。

もう少し使い方を模索してみます。

2011年5月16日月曜日

[iOS] カスタムUITableViewControllerをつくる (3)

前回、カスタムUITableViewControllerをつくる (2)

テーブルビューのセルが選択されたときの処理を書く。セルが選択されたときには、
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPathが呼ばれるため、オーバーライドして処理内容を書く。


例えば、セルを選択したときに、セル内容をアラートに表示するサンプルを作成してみる。

1.[CourseListViewController.m]を開き、次のコードを追加する。
アラートを表示させるには、[UIAlertView]クラスを使います。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // セルが選択された時の処理を書く
    NSString* message = [item_ objectAtIndex:indexPath.row];
 
    UIAlertView* alert = [[[UIAlertView alloc] init] autorelease];// インスタンスの作成
    alert.message = message;// 表示メッセージの設定
    [alert addButtonWithTitle:@"OK"];// [OK]ボタンの追加
    [alert show];// アラートを表示する
}


2.シミュレータを実行してみると、きちんとアラートが表示されました。

実際はアラートより画面の切り替えなどを行うアプリの方が多い。
画面の切り替えについては、今度考えてみる。

次回、UINavigationControllerで階層的に画面を切り替える

[iOS] カスタムUITableViewControllerをつくる (2)

前回、カスタムUITableViewControllerをつくる

最初に簡単な例として、配列に入っている文字列を一覧でテーブルビューに表示してみる。

1.[CourseListViewController.h]に、文字列一覧を格納する[NSArray]を宣言する。
@interface CourseListViewController : UITableViewController {
@private
    NSArray* item_; // テーブルに表示する要素を保持するための配列
    
}


2.[CourseListViewController.m]を開き、[viewDidLoad]の中で、配列に文字列一覧を格納する。ビューコントローラがインスタンス化された時に呼ばれ、ここに初期化処理を書きます。
※もしソース内にメソッドが記載されていない場合は追加してください。
#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
    
    // 配列に文字列一覧を格納する
    item_ = [[NSArray alloc] initWithObjects:
                    @"DATA 1", @"DATA 2", @"DATA 3",
                    @"DATA 4", @"DATA 5", nil];
    
}


3.データの準備ができたのでテーブルに表示する処理を書きます。テーブルにデータを表示させるには、テーブルからプロトコル(呼び出し、イベントみたいなもの)に対してデータを返してあげる必要があります。例えば、テーブルからデータは何件ありますか?やここのデータはなんですか?といった呼び出しがされます。それぞれに適切な値を返してあげることでテーブルにデータが表示されます。
[CourseListViewController.m]を開き、以下のコードを追加します。
※もしソース内にメソッドが記載されていない場合は追加してください。

ここでは以下の内容を返している
・セクション数(データのグループ数)
・セクション内のデータ数
・あるセクションの何番目のセルの内容

#pragma mark - Table view data source

// テーブル内のセクション数を返す
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

// テーブル内のセクション毎のデータ数を返す
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    // 配列に格納されいる文字列数を返してあげる
    return [item_ count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // Configure the cell...
    // セルのラベルに文字列を代入する
    cell.textLabel.text = [item_ objectAtIndex:indexPath.row];
    
    return cell;
}


4.起動してみると、5件と少ないですがデータが表示されました。



次回、カスタムUITableViewControllerをつくる (3)

2011年5月15日日曜日

[iOS] カスタムUITableViewControllerをつくる


【開発環境】Xcode4、iOS4.3

今度は、↓のテーブルビューコントローラをカスタムしてみます。
どちらもテーブルビューで、2種類のスタイルがあります。


プロジェクトに、”カスタムUIViewControllerをつくる”を参考に、テーブルビューコントローラ(UITableViewController)のサブクラスを追加します。サブクラス指定の画面で、UITableViewControllerを選択してください。クラス名には任意の名前をつけてください。ここでは、CourseListViewControllerと呼びます。


カスタムUIViewControllerをつくる”と同様に、[MainWindow.xib]を開き、タブバーコントローラに新しく作成したテーブルビューコントローラ(UITableViewController)のサブクラスを追加します。


[CourseListViewController.xib]を開き、[Aributes Inspector]を選択します。[Bottom Bar]の値を[Tab Bar]に変更します。実際はタブバーコントローラの高さ分画面が狭くなるので、仮にタブバーコントローラを表示させておきます。


ここまででシミュレータを起動してみる。当然、テーブルビューに何もデータを入れていないので空っぽですね。



次回、カスタムUITableViewControllerをつくる (2)

[CentOS] SSHログイン時にメール通知する設定

外部公開しているサーバのログイン履歴をチェックするのは毎回面倒なので、SSHにてログインした際にメール通知する設定をしましたのでメモを残します。

不正アクセスに早期に気づくためにも必要だと思います。
まず、公開鍵認証を使っている時点で、不正アクセスは困難かと思いますが念のため。

SSHログインユーザのディレクトリの.ssh/rcに以下の内容でファイルを作成します。
ただし、/usr/bin/Mailがsendmailにリンクしている必要があります。
#!/bin/sh

echo "You logged in from: "$SSH_CLIENT|\
/usr/bin/Mail -s "ssh: `/bin/date +\%m/\%d/\%Y/\%H:\%M:\%S`" \
<通知先メールアドレス>

※環境変数[SSH_CLIENT]にSSHのアクセス元IPが記録されています。

2011年5月11日水曜日

[Chrome] タブをピンにできるんですね


Firefoxは4になって、タブをアイコンだけのピンにできる機能がつきました。Google Chromeにも同じ機能があることに気づきました。

どのバージョンから付いたのか分かりませんが、タブの右クリックメニューから[タブを固定]でアイコンのみにできます。



よく使うサイトは[タブを固定]しておけば、タブをたくさん開いても邪魔になりません。

[Mac] クリップボードの履歴からペースト!


SimpleClipboardという、クリップボードの履歴からコピーした内容をペーストできるアプリが便利です。

基本的にコピーできるのは、文字だけっぽいですが十分です。

■インストールの仕方
Mac App Storeからダウンロードしてください。

■まずは設定をしよう
1.起動すると、メニューバーにアイコンが表示されるのでクリックします。



2.ポップアップメニューが表示されるので、[Preferences...](設定)をクリックします。


 3.[General](基本)から設定していきます。
[Open At Login]にチェックを入れて、Macにログイン時に自動的にSimpleClipboardが起動します。
 4.クリップボードの履歴一覧の呼び出しに利用するホットキー(ショートカットキー)を設定します。キー名が書かれているところをクリックして、割り当てるキーを押します。
※ぼくは[Option]+[Space]キーに割り当てました。
■それでは使ってみよう
なんでもいいので適当に、何個かテキストをコピー([Command]+[C])してください。

設定したホットキーを押してみましょう。

画面中央に、コピーした内容が表示されます。
 

ペーストしたい場合は[Enter]キーを押します。
一つ前にコピーした内容に変える場合は、[Space]キーを押します。
クリップボードの画面を閉じるには、[ESC]キーを押します。

ここで[Enter]キーを押せば、一つ前にコピーした内容をペーストできます。
操作が簡単で使いやすいです。

2011年5月10日火曜日

[Mac] StartupSound.prefPaneでMacの起動音を消す



MacにStartupSound.prefPaneを入れよう。

Macを起動させたときに、「じゃーん」という音を消すことができます。
ちなみに、再起動時は鳴りません。

ダウンロード

■設定の仕方
1.インストールをしたら、システム環境設定を開きます。

2.起動音の音量バーを一番左までスライドします。
※変更ロックがかかっている場合は解除してください

試しに、シャットダウンしてから、電源ONしてみてください。

[wimax] IO-DATAからモバイルWiMAXルーターの新モデル


IO-DATAさんから、モバイルWiMAXルーターの新モデルが発表されていました。
なんと標準で有線LANに接続できるクレードルがついています。
http://www.iodata.jp/product/mobile/wimax/wmx-gwmr/feature.htm

前に、NECさんからも出ていたのですが、クレードルがオプションだったのが残念でした。

クレードル使えば、有線LANをつなげるので、ネットワーク接続型のハードディスク(NAS)も使えるわけですね。

5月中旬出荷予定ということですが、
自宅の光インターネット解約して、こちらに変えようかな。

あまり自宅でインターネット使わないし、WiMAXの方が月額安くて、外出先でも使えるのがいいですね。

一つ気になるのが、クレードルに接続して充電できるのですが、同時にインターネットも使えるのかな?
探しても書かれていないから気になる