Hatena::ブログ(Diary)

tamakiii@hatena このページをアンテナに追加 RSSフィード

 

2010-08-19

Macでicnsファイルをpngファイルなどに変換する方法

07:50 | Macでicnsファイルをpngファイルなどに変換する方法を含むブックマーク Macでicnsファイルをpngファイルなどに変換する方法のブックマークコメント

f:id:tamakiii:20100819075032p:image

アプリケーションアイコンをPowerdotで使おうと思ったときに,その方法を調べたので記事を書いておきます.

1. 変換したいicnsファイルを "/Developer/Application/Utilities/Icon Composer.app" で開く

2. メニューの "Edit > Copy" を選択する

3. Preview.app を開く

4. メニューの "ファイル > クリップボードから新規作成(⌘N)"を選択する

5. メニューの "ファイル > 保存(⌘S)" を選択する

あとは保存したい形式を選択すれば変換して保存してくれます.

変換できる形式は僕の手元の環境では,GIF,ICNS,JPEGJPEG-2000,Microsoft BMPMicrosoft アイコン,OpenEXR,PDFPhotoshopPNG,TGA,TIFF でした.


上記は直接icnsファイルを変換したい場合(アプリケーションアイコンなど)の手順ですが,フォルダに設定されたアイコンを変換したい場合は,上記の1.と2.の手順を,

1. 変換したいアイコンが設定されたフォルダを選択してメニューの "ファイル > 情報を見る(⌘I)" を選択する

2. 表示されたウィンドゥの左上に表示されているアイコンをクリックして選択してから,メニューの "編集 > コピー(⌘C)" を選択する

で置き替えればできるはずです.

では.

2010-08-10

MacPortsでphp5-mysqlがインストールできない問題の解決方法

| 03:24 | MacPortsでphp5-mysqlがインストールできない問題の解決方法を含むブックマーク MacPortsでphp5-mysqlがインストールできない問題の解決方法のブックマークコメント

HDDの容量がのこり僅かとなってしまっていたので,最近クリーンインストールをしました.MacPorts経由でインストールした開発環境はバックアップが取れなかったので,開発環境を構築しようとコマンドを叩いていると,PHPMySQL Extensionをインストールするphp5-mysql packageがインストールできなかったため,その解決方法を探しました.


参考:

#26000 (php5-mysql 5.3.2 doesn’t build with php5 5.3.3) – MacPorts

howto/InstallingOlderPort – MacPorts


この問題はMacPorts上のPHPのバージョンが@5.3.2から@5.3.3に上ったことで生じたようです.そのため,@5.3.2のPHPインストールすることで解決することができました.


解決方法の概略は以下の通りです.

1. 過去のリビジョンからPHP5 @5.3.2のデータをcheckoutしてきます

2. ports directoryのバックアップを取ります

3. checkoutしたデータでports directoryを上書きします

4. PHP5をインストールします

5. php5-mysqlインストールします


注意:

既にPHPやApache2をインストールしている場合は,一度uninstallした方がよいでしょう.

既にインストールされているpackageを探すには

$ port installed

特定のpackageが既にインストールされているか確認するには

$ port installed php5

uninstallを行うには,

$ sudo port uninstall php5

関連するpackageも同時にuninstallするには

$ sudo port uninstall -f php5

ついでにcleanしておくとより安全かと思われます.

$ sudo port clean php5


1. 過去のリビジョンからPHP5 @5.3.2のデータをcheckoutしてきます

直接ports directoryにインストールするのは危険なので,どこか別のところでcheckoutします.

$ cd ~/Desktop
$ mkdir ports
$ cd ports

MacPortsリポジトリhttp://svn.macports.org/repository/macports/trunk/dports,リビジョン番号は70350のようです(参考).

ですので,以下のようにしてcheckoutします.checkoutにはしばらく時間がかかります.

$ svn co -r70350  http://svn.macports.org/repository/macports/trunk/dports


2. ports directoryのバックアップを取ります

もともとあるports directoryのバックアップを取ります.ports directoryの場所は "/opt/local/var/macports/sources/rsync.macports.org/release/ports" のはずです.私はお手軽にFinderデスクトップにコピーしてしまいました.


3. checkoutしたデータでports directoryを上書きします

checkoutしたデータを,先にバックアップを取った "/opt/local/var/macports/sources/rsync.macports.org/release/ports" に移動させます.checkoutしたデータは "dports" という名前になっているので,その中身を移動させる必要があります.ここもお手軽にFinderで行いました.ファイルの数が多いので,しばらく時間がかかります.

次に,上書きしたことをMacPortsに知らせるコマンドを叩きます.

$ cd /opt/local/var/macports/sources/rsync.macports.org/release/ports
$ sudo portindex

sudoを付けないと権限が足りずに失敗します.これもしばらく時間がかかります.

これで過去のリビジョンを対象にMacPortsインストールを行ってくれるようになりました.


4. PHP5をインストールします

ここから先は一般的なインストールです.インストールしたいものが他にあれば,オプションを追加して構いません.

$ sudo port install php5 @5.3.2 +apache2

5. php5-mysqlインストールします

手順4.と同様に,オプションを追加しても構いません.

$ sudo port install php5-mysql


以上です.

では.

2010-05-04

Mac OS X でScala入門ログ(+SWT入門)

| 04:22 | Mac OS X でScala入門ログ(+SWT入門)を含むブックマーク Mac OS X でScala入門ログ(+SWT入門)のブックマークコメント

はてな界隈で賑わっていたので、気になっている方も多いのでは?

Ruby からScalaに乗り換えた15くらいの理由 - ヽ( ・∀・)ノくまくまー

Mac OS XScalaに入門してみたので、その軌跡を簡単に書いてログを残しておきます。


※ 僕はJava関数型言語も特に使える訳ではないので、一部情報が間違っているかもしれません

※ あくまでも入門ログなので、プログラムの解説は得にありません

※ 環境は以下の通りです

OSMac OS X 10.6.3

シェルzsh 4.3.9 (i386-apple-darwin10.0)

MacPorts1.8.1

Java

1.6.0_17

Java(TM) SE Runtime Environment (build 1.6.0_17-*b04-248-10M3025)

Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode)


1. インストール

Scalaウェブサイトからダウンロードすることも出来ますが、僕はMacPortsからインストールしました。お手軽です。

まだMacPortsを導入していない方はこちらをどうぞ

GUI世代のためのCUI入門以前 ー MacPorts導入方法


インストールはコマンド一発です。あとはrehashするだけ。

> sudo port install scala
> rehash

※ エラーが出た方もいるみたいです。こちらが参考になるかと思います。

Scalaのインストール - でぶろぐ



2. コマンドラインから遊ぶ

Scalaでも他の言語と同じように、コマンドラインで対話できます。

> scala
Welcome to Scala version 2.7.5.final (Java HotSpot(TM) Client VM, Java 1.6.0_17).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 1 + 1
res0: Int = 2


3. ファイルにプログラムを書いて遊ぶ

もちろん、普段はファイルにプログラムを書くことになると思います。ファイルの拡張子は ".scala" が一般的なようです。

手順は、

1) プログラムを書く ⇒ scalaコマンドで直接実行する
2) プログラムを書く ⇒ scalacコマンドでコンパイルする(classファイルを生成する) ⇒ scalaコマンドで実行する

の2手順があります(他にもあるかも)。

それぞれの手順に合せてプログラムの内容もちょこっと変えなきゃいけないので、基本的には2の方法を取るといいと思います。

ちなみに "scala" コマンドの実態は実はシェルスクリプトで、"java" コマンドを呼んだり前処理をしていたりしていました(場所は "/opt/local/bin/scala" のはず)。


> touch HelloWorld.scala
> vim HelloWorld.scala
(なにか書く)
> scalac HelloWorld.scala
> scala HelloWorld
> Hello World

// HelloWorld.scala
object HelloWorld extends Application
{
    println("Hello! World")
}

生成されるclassファイルの名前はobjectの名前です。

ちなみにscalacコマンドを通さない場合、単に

println("Hello! World")

と書くこともできます。


4. swingを使った例

そもそもScalaを始めたのは、「CUIGUIウェブもこなせる!マルチプラットフォーム!しかもScalaって超クール!」という言語入門オタク的発想だったので、とりあえずswingを使って簡単なGUIアプリケーションを作ってみました。プログラム自体は下のブログを完全に参考にさせていただいて、解析などをしていました。

Swingのサンプル - etc9

※ 一応プログラムコードを載せさせていただきますが、内容は参考ブログ記事と同様です


import scala.swing._
import scala.swing.event._
import javax.swing.UIManager

object SimpleGUIApplicationHello extends SimpleGUIApplication
{
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())

    def top = new MainFrame 
    {
        title = "Swing with scala";
        contents = new BorderPanel {
            import BorderPanel.Position._
            add(label, Center)
            add(button, South)
        }
    }

    val button = new Button("Click")
    object label extends Label("Count:-") 
    {
        var count = 0;
        listenTo(button)
        reactions += {
            case ButtonClicked(button) => 
                count += 1
                text = "Count:" + count
        }
    }
}

5. SWTを使った例

SWT(The Standard Widget Toolkit)はJava標準の一環として提供するJavaGUIツールキット(Standard Widget Toolkit - Wikipedia)だそうです。

簡単に言えばSwingよりきれいにウィジェット(ボタン、チェックボックス、ラベル のようなもの)を使うことができて、抽象度が高くて使い易いんだとか。

また、SWTを通してOSAPIを叩くこともできる、なんてこともあるので、僕はなるべくならSWTを使おうと思っているところです。


長くなりましたが、SWTを使うためにはSWTを入手する必要があります。


SWT: The Standard Widget Toolkit


ここのページ中程にある "Releases > Development" の "Mac OS X" のリンクからダウンロードしました。

ダウンロードしたzipファイルを解凍して、中にある "swt-debug.jar" と "swt.jar" を、"/opt/local/share/scala/bin" に設置すると、プログラムコード内でimportしたときに自動的に読み込んでくれます。

上記のパスはMacPortsインストールした場合なので、他の場合は異るはずです。


あと一点だけ。

64bit版のJava VMが動いている場合、標準の32bit版SWTJava VMがロード出来ないようでエラーが発生します。

これを解決するために、JAVA_OPTSを以下のように設定します。

> export JAVA_OPTS="-XstartOnFirstThread -d32"

重要なのは "-d32" というオプションで、32bit版のJava VMを指定するのだそうです。

ちなみに"-XstartOnFirstThread" はMac固有の不具合を避けるためのおまじないだそうです。直接関係はありません。たぶん。



あとは素人臭いソースコードを晒して終わりです。お付き合いありがとうございました。お役にたつことがあれば嬉しいです。では。


//
// SWTCounter.scala
// 
// 64bit版Macでは
// | export JAVA_OPTS="-XstartOnFirstThread -d32"
// 

import org.eclipse.swt.widgets._
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData
import org.eclipse.swt.layout.GridLayout

object SWTCounter extends Application
{
    var display = new Display
    var shell = new Shell(display)
    shell.setSize(200, 120)

    var glayout = new GridLayout(1, false)
    glayout.horizontalSpacing = 0
    glayout.verticalSpacing = 0
    shell.setLayout(glayout)

    var count = 0

    var label = new Label(shell, SWT.PUSH | SWT.CENTER)
    label.setText("Count:-")
    label.setLayoutData(new GridData(GridData.FILL_BOTH))

    var button = new Button(shell, SWT.PUSH)
    button.setText("click")
    button.setLayoutData(new GridData(GridData.FILL_BOTH))
    button.addListener(SWT.Selection, new Listener() {
        def handleEvent(e: Event)
        {
            count += 1
            label.setText("Count:" + count)
        }
    })


    // main loop
    shell.open

    while (!shell.isDisposed) {
        if (!display.readAndDispatch) {
            display.sleep
        }
    }

    display.dispose
    // end main loop
}

yuichi_katahirayuichi_katahira 2010/08/11 19:20 トラバ先を間違えてしまいました。すみません・・

2010-03-03

Zend Frameworkのクラス一覧

| 00:37 | Zend Frameworkのクラス一覧を含むブックマーク Zend Frameworkのクラス一覧のブックマークコメント

ctagsを使ったりOmni補完を使ったりするのもよいけど、動作が遅くなってしまっては元も子もないので(いや、面倒臭いので)、当面は標準の、dictionaryを使った補完でクラス名を補完することにした。

しばらくの間、サンプルコード以外のプログラムを書いていなかったので、練習も兼ねてZend Frameworkのクラス名を調べるプログラムを書いてみた。プログラムは文末にあるので、興味のある方はどうぞ。

使い方は、

~/.vim/dict/zendfw.dict

などとして配置して、

~/.vimrc

などで

autocmd Filetype php setlocal dictionary+=~/.vim/dict/zendfw.dict

などとします。

続きを読む

2010-02-14

Zend Frameworkでデータベース設定をどう記述するか

| 00:22 | Zend Frameworkでデータベース設定をどう記述するかを含むブックマーク Zend Frameworkでデータベース設定をどう記述するかのブックマークコメント

Zend Frameworkを使っていて困るのはその自由度。PHPで自作Framework(笑)を作っていた身としては嬉しいのですけど、カスタマイズし放題ではZend Frameworkを使う意味はあまりないですし、なるべくなら正しい方法を取りたいものです。

設定も自由に書けます。いちおう気にして書いていたつもりでしたが、もっといい方法を発見したので共有。

http://framework.zend.com/manual/en/zend.application.available-resources.html#zend.application.available-resources.db

Example #2 Sample DB adapter resource configuration

Below is an example INI configuration that can be used to initialize the DB resource.

[production]
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.username = "webuser"
resources.db.params.password = "XXXXXXX"
resources.db.params.dbname = "test"
resources.db.isDefaultTableAdapter = true

として、"Bootstrap.php" で

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initDb()
    {
        $resource = $this->getPluginResource('db');

        $db = Zend_Db::factory($resource->getAdapter(),
                               $resource->getParams());
        Zend_Registry::set('database', $db);
        Zend_Db_Table::setDefaultAdapter($db);
    }
}


と書いて、Bootstrap::getPluginResource() を使ってresourceを取る。

The following configuration keys are recognized:
    *adapter: Zend_Db adapter type.
    *params: associative array of configuration parameters to use when retrieving the adapter instance.
    *isDefaultTableAdapter: whether or not to establish this adapter as the default table adapter.

なんて書かれているので、これからはこの方式でやっていこうかとオモッテますよ。

結構きれいですね。