2012.5

ファイルブラウザ&FTPクライアントの「ForkLift」について。

2012.05.15 / Notes

Finderに換わるファイルブラウザ&FTPクライアントの「ForkLift」ですが、先ごろバージョンが2.5にアップして、さらに便利な機能が数多く追加されました。
バージョン1.xのころにはFTPクライアントとしての特色が強かったですが、FTPクライアントとしての枠にとどまらない、ユーティリティなソフトに進化しています。
ユーザーインターフェイスもOSX 10.7 Lionにマッチして、より美しくなっています。
ForkLift
基本構成は2ペインで、それぞれにタブ表示が可能になっています。サイドバーのエリアにも自由に項目を追加できるので、作業効率が上がります。
自分が使っている中で、特に便利だと思う機能をいくつか挙げます。

 

Stacks

ファイルの仮置き場です。
あちこちのディレクトリに散在しているファイルへ頻繁にアクセスする際に、「Stacks」という特殊なスペースに入れることで、素早くアクセスができます。
「Stacks」に置かれたファイルはエイリアスなので、実ファイルは元の位置から変わりません。
ForkLift

Delete App

アプリケーション削除のアシスト機能です。
ForkLift内でアプリケーションを削除(コマンド+デリート)をすると、そのアプリケーションに関連する設定ファイルなどを見つけ出し、ダイアログで表示してくれます。
同様の機能は単体アプリでもいくつか存在していますので、これをForkLift内で行えるのはとても便利です。
ForkLift

Multi-rename

複数のファイル名書き換え機能です。
複数のファイルを選択した状態でリターンキーを押すと、ウィンドウが表示され、まとめてファイル名をバッチ処理で書き換えることができます。
正規表現によるファイル名の書き換えも可能です。
ForkLift
ForkLift

Disklets

接続したサーバのディレクトリを、ディクスとしてマウントする機能です。
FTPやWebDAVなどForkLiftから接続したサーバを、外部ストレージの様にマウントすることができます。
これによってFinderや他のアプリからも直接サーバにアクセスできるので、サーバの使い道も広がりそうです。

 

もちろんFTPクライアントとしても機能も充実していて、様々なサーバへのアクセスが可能です。転送速度も体感的にかなり速い様に思います。(Transmit 4よりも速いかな・・・)
Macでファイルブラウザ、FTPクライアントを検討中の方には、ぜひお勧めしたいソフトです。

 

BinaryNights (ForkLift)

DropboxでMAMP環境を同期。

2012.05.14 / Labs

Dropboxで複数のMacにMAMP環境を同期する方法です。
今回はMAMP通常版ではなく、PRO版を利用しています。(通常版とは管理画面と、MySQLのデータ格納先が変わります)
MAMP環境で同期を行いたいディレクトリは、ApatcheのドキュメントディレクトリとMySQLのデータを格納しているディレクトリの2点です。

 

Apatcheのドキュメントを格納している「htdocs」ディレクトリをDropboxで同期させるには、MAMPの管理画面からディレクトリを変更することができます。
MAMP
MySQLのデータを格納しているディレクトリは、PRO版ではルートのライブラリフォルダ内に保存されています。

この「mysql」ディレクトリをDropbox内に移動して、代わりに(Dropboxに移動したディレクトリの)シンボリックリンクをこちらに配置します。シンボリックリンクの作成には「MacDropAny」が便利です。

 

以上にて、Dropboxで複数のMacにMAMP環境を同期することが可能です。

 

Dropboxで同期する上で1点気をつけたいのは、MySQLがデータベース管理のために「ibdata1」というファイルを上記の「mysql」ディレクトリに作成するのですが、これはデータベースを作成するごとにファイルサイズが大きくなり、後にデータベースを削除してもファイルサイズは小さくなることはありません。
ですので、しばらく使っているうちに、すぐに数百メガにまで大きくなり、これをファイルの更新のたびにDropboxで同期するには、やや問題があります。

 

その対策として、「ibdata1」ファイルにはデータベースごとのデータを追加せず個別にファイルを作成するために、MySQLの環境設定ファイルで次の1行を追加します。

MySQLの設定ファイルはMAMP PROではメニューの「File > Edit Template > MySQL my.cnf」より編集が可能です。
これで、作成するデータベースごとにディレクトリが作成されて、さらに各テーブルごとのファイルとして保存してくれるので、必要最小限の容量のみをDropboxで快適に同期が行えます。

PHPで祝日/イベント対応のカレンダーを作成。

2012.05.12 / Labs

PHPではPEARなどのライブラリを利用すると簡単にカレンダーを作成できますが、CakePHPなどフレームワークをベースに開発している場合、あまり他のライブラリを利用したくないこともあります。
また祝日情報を含むイベント情報を簡単に組み込めるカレンダーとして、シンプルなカレンダーを作成してみました。
サンプルはこちら

 

機能としては指定月のカレンダーを生成し、イベント情報を配列として渡すことで、該当日にイベント内容を表示することができます。
祝日情報の取得の関数「getHolidays()」については、「Googleカレンダーから祝日情報を取得。」をご覧ください。

CakePHPで利用する場合には、コンポーネントとして登録しておくと使い勝手が良いかもしれません。

Googleカレンダーから祝日情報を取得。

2012.05.12 / Notes

PHPを使ってGoogleカレンダーが提供している祝日の情報を、配列として取得する方法です。

上記のコードで取得した祝日は、次の様に日にちをキーに格納されます。

ただしGoogleカレンダーの祝日は正確ではない部分もあるので、利用の際には注意が必要です。

CakePHPで作るシンプルなアップロードフォーム。

2012.05.08 / Labs

CakePHPでファイルをアップロードするための基本機能のみフォームのサンプルです。使用しているCakePHPのバージョンは2.1.2です。

 

データベースには「uploads」というテーブルを作り、ファイル名を保存するために「file_name」のカラムを設けています。

コントローラーの「UploadsController.php」には、アップロードされたファイル名の一覧のための「index」と、ファイルをアップロードするための「add」アクションを作ります。
(bakeで焼いたものをもとに、手を加えて作成してあります)

ファイルのアップロード処理自体はCakePHP特有のものではなく、通常のPHPの処理になります。途中の「WWW_ROOT」「DS」はCakePHPで用意されている定数で、詳しくはドキュメントページで確認できます。
ここではアップロードされたファイル名のみ、データベースに登録するようにしています。

 

ファイル名一覧のためのビュー「index.php」です。これもbakeで書き出されたものを、さらに簡略化しています。

ファイルをアップロードするためのビュー「add.php」では、フォームのタイプをファイル対応にして、アップロードのためのフォームパーツを出力しています。

モデルの「Upload.php」では、今回は特に処理を行っていません。

上記以外では、「AppController.php」の中で、「Html」と「Form」ヘルパーを読み込んできます。

以上、シンプルなファイルのアップロードフォームの作り方でした。