— boreal-kiss.com

Archive
Tag "Mac"

iPhone、iPad用にアイコンをリサイズするMacアプリケーションIconUtilityをver. 0.9.3にアップデート。画像縮小時の質感のコントロールできるようになりました。具体的にはCoreGraphicsが描画時に使用するinterpolationアルゴリズムを選択できるようにしています1。コアになっているのは以下の関数。

void CGContextSetInterpolationQuality (
   CGContextRef c,
   CGInterpolationQuality quality
);
 
enum CGInterpolationQuality {
   kCGInterpolationDefault = 0,
   kCGInterpolationNone = 1,
   kCGInterpolationLow = 2,
   kCGInterpolationMedium = 4,
   kCGInterpolationHigh = 3
};
typedef enum CGInterpolationQuality CGInterpolationQuality;

CGInterpolationQualityの具体的な使用例はResize a UIImage the right way — Trevor’s Bike Shedで紹介されているUIImage+Resize.h, UIImage+Resize.mが参考になります。

以下IconUtility ver.0.9.3で作成したアイコン例を挙げておきます。

– None (kCGInterpolationNone)を使用した場合のIcon@2x.png

– High (kCGInterpolationHigh)を使用した場合のIcon@2x.png

ソースとアプリケーション本体は以下に置いてあります。

Footnotes

  1. 以前のバージョンではkCGInterpolationDefaultのみを使用。 []
Read More

画像をドロップするとiPhone/iPad用のアイコン用にリサイズするMac用アプリケーションです。対応サイズと出力ファイル名は以下の通り1

  • Icon.png – 57×57ピクセルのiPhoneアイコン
  • Icon@2x.png – 114×114ピクセルのiPhone 4アイコン
  • Icon-72.png – 72×72ピクセルのiPadアイコン
  • Icon-Small.png – 29×29ピクセルのiPhoneセッティングアイコン
  • Icon-Small@2x.png – 58×58ピクセルのiPhone 4セッティングアイコン
  • Icon-Small-50.png – 50×50ピクセルのiPadセッティングアイコン

ソースとアプリケーション本体は以下に置いてあります。

Footnotes

  1. Updating for the iPhone 4 retinal display – Blog – Use Your Loaf []
Read More

ずいぶん前(忘れた)からStageクラスのstageWidthとstageHeightが取得できなくて困っている。» テストムービーにアクセスすると、stage.stageWidth: 550, stage.stageHeight: 400と表示されるところが何故か

stage.stageWidth: 0
stage.stageHeight: 0

と表示される。Stageクラスのその他のプロパティは正しく取得できる。Safariも問題なく取得できる。誰か原因わかる人教えて!

環境

  • Mac OSX 10.5.5 (Intel Core 2 Duo)
  • Firefox 3.0.4
  • Flash Player 10.0.0.591 (デバッグ機能付きのやつ)
  • Flex SDK 3.1

追記2008/12/11

色々メモ

  1. Constructor内でstage.StageWidth等が取得できていない。Constructor外では取得できている。
  2. Fkex SDK 3.2ではConstructor内でも取得できた!!!
  3. Firefox 3だと取得したステージサイズが微妙に小さい。(550, 400)のはずが(500, 364)
  4. 良い記事発見。

    Stage RESIZE and the stageWidth and stageHeight Bug | hubflanger.com

    この記事によると(僕が確認したものはその旨を末尾に表示)、

    • Mac/Firefoxの場合、Event.RESIZEが発動するまでははstage.stageWidth = 0, stage.stageHeight = 0である (確認済み)
    • Win/IEの場合、Event.RESIZEが発動するまでははstage.stageWidth = 0, stage.stageHeight = 0である (未確認)
    • Mac/SafariはEvent.RESIZEを発動しないし、最初からstage.stageWidth,stage.stageHeightに正しい値がセットされている (確認済み)
    • Win/FirefoxもEvent.RESIZEを発動しないし、最初からstage.stageWidth,stage.stageHeightに正しい値がセットされている (未確認)

    » Event.RESIZEテストムービー

Read More

ブログ右上About欄のちっさいMacドック風なやつがそれ。僕がちょくちょくやってるWebサービスのアイコンで埋めてみた。Leopardのドックはこんな動きのような。。。。pixivもいれてもよかったんだけど大きいアイコンが見当たらなかったので断念した。もう少しソースに汎用性がでてきたら公開するかブログパーツにするかなりしようと思う。

Read More

MacOSXのローカルサイト(http://localhost/~USERNAME/)でFlexアプリケーションからPHP経由でMySQLと通信するまでに必要な諸設定について。文章が長くなったので今回はFlexとの連携直前の下準備まで。

About my Mac

MacOSX 10.5.3 (Intel Core 2 Duo)

必要なもの

3と4は必須ではないけど有った方が断然便利。

  1. Apache(webサーバー)
  2. MySQL(データベース)
  3. phpMyAdmin(MySQLを操作するwebアプリケーション)
  4. PEARパッケージ(PHP用モジュール)
  5. Flexアプリケーションが動作する環境(Flex Builder, Flex SDK etc.)

1. Apache

最初からMac OSXにはインストールされているので、PHPが動作するように設定をするだけ。ただし設定ファイル(httpd.conf)の在処がOSX 10.5から変更されている(参考: Mac OS X 10.5 Leopard で PHP を動作させるには − kazumich.log)。

/etc/httpd/httpd.conf (OSX 10.4) -> /etc/apache2/httpd.conf (OSX 10.5) 

httpd.conf内の以下の行のコメントアウト#をはずす。

#LoadModule php5_module      libexec/apache2/libphp5.so

以下のコマンドでApacheを再起動しhttpd.confの設定を反映させる。(この後何回も行う重要なコマンド)

sudo apachectl restart

次にMacのシステム環境設定 > ネットワーク共有からWeb共有を有効にする。これで自分のローカルサイト(http://localhost/~USERNAME/)でPHP5が動作するようになる。試しに「~/Sites/」直下に以下を記述したファイルをindex.phpとして保存(Finderだと「書類 > サイト」)。

<?php echo 'Hello world'; ?>

ブラウザでhttp://localhost/~USERNAME/index.phpにアクセスして「Hello world」と表示されたらOK。

2. MySQL

MySQL :: MySQL Downloadsより本体をダウンロード。Mac OSX 10.5用には32bit環境用(x86)と64bit環境用(x86_64)が用意されているので必要な方を。僕はx86_64をダウンロードした。PowerPCの場合はPowerPC専用と明記されたものを使わないとダメかもしれません。

MySQL本体とStartupItemsの両方をインストール。ターミナルより以下を指定でMySQLサーバが起動。

sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

試しにコマンドラインで以下を指定してMySQLと通信できればOK。

mysql -u root

MySQLが起動していないとこういうエラーが出る。

Can't connect to local MySQL server through socket '/tmp/mysql.sock'

rootユーザーにパスワードを設定する場合はMySQLと通信した状態でターミナルより以下のように指定。

mysql> UPDATE user SET password = PASSWORD('********') WHERE user = 'root'; 

これで次回のMySQLログイン時にパスワード入力が必要になる。アクセスは「mysql -u root -p」。

3. phpMyAdmin

必須ではないけどGUIとしてスタンダードだしある方が断然便利。phpMyAdmin | MySQL Database Administration Tool | www.phpmyadmin.netより最新のパッケージをダウンロード。ただのPHPファイル群なのでMacがどうこうってものはない。解凍したフォルダ名を例えば「phpMyAdmin」にして例えば「~/Sites/」直下にフォルダごと移動(Finderだと「書類 > サイト」)。

フォルダ内のconfig.inc.phpファイル(またはそれに準じた名前のファイルを”config.inc.php”に修正)内に以下のような記述を加える。Authentication Typeはパスワード制にした(cockieを使う方法もある)。パスワードは先ほどrootユーザーに付与したもの。extentionの項はMySQL 4.1.2以上用のmysqli (improved MySQL)とした(mysqlでもok)。これでwebブラウザからhttp://localhost/~USERNAME/phpMyAdmin/にアクセスすると常時rootユーザーでMySQLと通信することになる。

$cfg['pmaAbsoluteUri'] = 'http://localhost/~USERNAME/phpMyAdmin/';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '******';
$cfg['Servers'][$i]['extension'] = 'mysqli';

毎回パスワードを要求させるのであれば上記の一部を以下のように記述。

$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';

次にPHPが参照するMySQLソケットパスを実際のMySQLソケットパスとに合わせてやる。この時点でhttp://localhost/~USERNAME/phpMyAdmin/にアクセスしてphpMyAdminが動作するのであれば通信が正しく行えている状態なので修正は必要ない。MySQLのソケットパスはMySQLと通信した状態でターミナルより確認できる。

mysql> status;

ソケットパスは僕の場合以下のようになっていた。

UNIX socket: /tmp/mysql.sock

次にPHPが参照しているMySQLソケットパスは、phpinfo()で確認できる。先ほど”Hello world”を書いたindex.phpに以下のように記述して実行すればok。

<?php phpinfo(); ?>

表示される情報の下の方にPHPが参照しているmysql(mysqli)ソケットパスが表示されているはず。僕の場合は以下のようになっていた。

MYSQL_SOCKET		/var/mysql/mysql.sock
mysql.default_socket	no value

MYSQLI_SOCKET		/var/mysql/mysql.sock
mysqli.default_socket	no value

これらを修正するためにphp.iniファイルを修正する。コマンドラインより

sudo pico /etc/php.ini

ファイル内部のMySQL (MySQLi)の項目にMySQLの実際のソケットパス(ここでは/tmp/mysql.sock)を記述。

mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

Apacheを再起動(sudo apachectl restart)してphpinfo()で確認する。先ほど”mysql.default_socket no value (mysqli.default_socket no value)”となっていた箇所が設定できていればOK。phpMyAdminにアクセスできるはず。

4. PEAR

これも絶対必須ではないけど、例えばDBモジュールだとデータベースのバージョン変化だったりに柔軟に対応できるので便利。まずインストーラーのダウンロード。ターミナルより

sudo curl http://pear.php.net/go-pear | php

どこにインストールするか聞かれるので番号を押しながら設定(参考: 素晴らしき哉、人生!: Mac OS 10.5にpearをインストール)。デフォルトだと「~/Documents」直下にインストールになる(参考: Mac OS Xで動かす軽量プログラミング言語 − @IT)。僕は前者に従って以下のように設定した。

1. Installation prefix ($prefix) : /usr/share/PEAR
2. Temporary files directory : $prefix/temp
3. Binaries directory : /usr/bin
4. PHP code directory ($php_dir) : $prefix
5. Documentation base directory : $php_dir/docs
6. Data base directory : $php_dir/data
7. Tests base directory : $php_dir/tests

上記の例の場合pearコマンドは「/usr/bin/」にインストールされるので、自分の環境設定ファイルにパスを通しておくと後々便利。

pico ~/.profile

ファイル内に以下のように記述。

export PATH="$PATH:/usr/bin"

PEARパッケージ内の情報は以下のコマンドで取得できる。

pear list

DBパッケージをインストール。上記の例の場合「/usr/share/PEAR/」配下にDB.phpがインストールされる。

sudo pear install -a DB

PEARパッケージをインストールした時点で「/etc/php.ini」の最後尾に以下のような記述が追加されているはず(なければ追加記述する)。

;***** Added by go-pear
include_path=".:/usr/share/PEAR"
;*****

php.iniファイルを反映させてから(sudo apachectl restart)、試しにDB.phpをインクルードしてみる。適当なphpファイルを作り以下のように記述してから実行。

<?php require_once('DB.php'); ?>

エラーが出なければパスが通っている証拠。これでFlex以外の環境は整いました。次回へつづく

Read More

livedocs.adobe.comリファレンスをオフラインで閲覧するためのデスクトップアプリケーションの作成手順。以下の例はFlex 3リファレンスガイドだけど別になんでもok。もちろんadobeじゃなくても応用可能。livedocsadobe.comのような階層化したhtml群をダウンロードするにはコマンドラインでwgetを用いればよいが(wgetでAdobe Flex3の日本語APIリファレンスを一括ダウンロードする方法 – アガテナ)、コマンドラインに苦手意識があるのでwgetしてくれるソフトウェアを用いた。

  1. wgetをGUI操作できるCocoaWgetをゲット(MacOSX10.4以降)
  2. CocoaWgetを起動 > URL欄に「http://livedocs.adobe.com/flex/3_jp/langref/」と入力。これでダウンロードターゲットが「flex/3_JP/langref/」配下のファイルになる
  3. 「リンクをたどる」にチェック。さらに「このホストのみ」を選んでダウンロードしたい階層を選択。ここでは10階層にした。追加ボタンを押したらダウンロード開始
  4. デフォルトだとデスクトップに「livedocs.adobe.com」というフォルダが作成されていてその中にファイル一式がダウンロードされる。フォルダの位置は適宜移動

ファイルダウンロードに関しては以上で終了で、この段階でも普通にブラウザで見れる。次にデスクトップアプリケーション化。

  1. ファイル一式をデスクトップアプリケーション化するソフトウェアFluidをゲット(MacOSX10.5以降)。Fluidは簡単に説明すると、特定のwebサイトを閲覧するための専用ブラウザ作成ソフトで、例えばtwitterクライアントなんかが簡単に作成できる。専用ブラウザなのでFirefoxやSafariが強制終了しても被害を被らず、リファレンスのような常時起動させておきたいものをブラウジングするのに非常に便利
  2. Fluidを起動 > URL欄に先ほどダウンロードしたリファレンスのトップページのロケーションを選択。不明な場合、リファレンスのトップページをFirefox等で開いてみて、ローカルURL(file:///Users/~~~~~/index.html)をそのままコピー&ペーストすればok
  3. アプリケーションの名前を設定。このアプリケーション用にアイコンを用いたい場合はその画像ファイルを指定。僕はFlickrで発見したAdobeのロゴをつかった
  4. Createボタンを押せばアプリケーションフォルダに専用ブラウザが作成されているはず

注意点としては、ローカルに保存したファイルの格納場所を変更させるとブラウジングできなくなる点。移動させる場合は再度専用ブラウザを作成する必要がある。アイコンを変えたい場合やアプリケーション名を変更したい場合も同様。まあ5秒ぐらいでできるけどね。

Read More

例えばFirefoxで複数のwebページを閲覧する時に、「その中の1ページが死ぬほど重い → Firefox全体が応答しなくなり強制終了 → Firefoxを立ち上げ直し」というのを繰り返すことがあって何かいい方法がないかなーと思ってた。Fluidは、そういう「巻き込み事故」を避けるためにブラウザーを複数のアプリケーションにしてしまうソフト。例えばTwitter専用のブラウザーを簡単に作成できる。

ところでFluidにはサムネイルプラグインというものが標準装備されている。閲覧中のwebページ内のリンク先のスクリーンショットをカバーフロー(iTunesのジャケットギャラリー表示のようなやつ)で表示してくれるものなんだけど、これ名前の通りサムネイルで一括表示するので、例えばはてなブックマークのホットエントリのリンク先をサムネイルで表示したところで文字が小さすぎて読めないためあまり実用的ではない(ホットエントリーのサムネイル表示方法は[N] 「Fluid」のサムネイルプラグインを試したを参照)。文字がでかくてサムネイル表示で十分なwebページ集というとMuxtapeってわけですよ!

Muxtapeはトップにユーザーのmixtapeがランダム表示されるのだけど、これがユーザー名のみの表示でmixtape中身を見るためには一々各ユーザーページを確認しないといけない。ところがMuxtapeのユーザーページは文字が大きくてシンプルな作りをしているのでFluidのサムネイルプラグインで一括表示・チェックするにはもってこいなわけ。僕は今までどんなジャンルのmixtapeかもわからないユーザーのリンク先をクリックしてまで中身を確認したことがなかったので、このFluidの使い方は画期的なんじゃないかなーと思ってる。具体的な設定方法はFluid x Muxtape = すばらしい » www.slack77.netに書いてある(動画付き。ただししゃべり方が鼻につく)。動画元のコメント欄も「Macが欲しい」という感じになってた。またFlickrにはFluidで作成したアプリケーション用のアイコンがたくさん配布されているのでMacユーザーはこの機会に是非Fluidを活用してみてはいかがでしょうか。

MuxtapeをFluidのサムネイルプラグインで表示

[関連リンク]
MOONGIFT: » 専用Webアプリケーションを手軽に「Fluid」:オープンソースを毎日紹介

Read More