2012年10月15日月曜日

gettextインストールするのにこんなに時間かかるはずがない for MacPorts - その後cmakeも

久しぶりにosxにMacPortsでphpをインストールしようとしたら、
なぜかgettextがインストールできないすてきな罠に出会いましたのでメモを残します。

環境
OSX 10.8 (Mountain Lion)
MacPorts 2.1.2

お急ぎの方に先に結論を申し上げると、次の2行でインストールできました。

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework
port install gettext

ログなど


sudo port install gettext
途中省略
---> Fetching archive for gettext
---> Attempting to fetch gettext-0.18.1.1_2.darwin_12.x86_64.tbz2 from http://packages.macports.org/gettext
---> Attempting to fetch gettext-0.18.1.1_2.darwin_12.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/gettext
---> Attempting to fetch gettext-0.18.1.1_2.darwin_12.x86_64.tbz2 from http://lil.fr.packages.macports.org/gettext
---> Fetching distfiles for gettext
---> Attempting to fetch gettext-0.18.1.1.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/gettext
---> Verifying checksum(s) for gettext
---> Extracting gettext
---> Applying patches to gettext
---> Configuring gettext

このまま数時間放置していたのに状況変わらず・・・
CPU利用率を見ても動いている気配がない・・・
ターミナルのメニューにjavacの文字が見えているので少し調べると

https://trac.macports.org/ticket/34221
どうもJAVA_HOME設定するとよいらしい。

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework
port install gettext
---> Computing dependencies for gettext
---> Configuring gettext
---> Building gettext
---> Staging gettext into destroot
---> Installing gettext @0.18.1.1_2
---> Activating gettext @0.18.1.1_2
---> Cleaning gettext
---> Updating database of binaries: 100.0%
---> Scanning binaries for linking errors: 100.0%
---> No broken files found.

インストールできましたよ。

参考まで

ちなみにMac Developer Libraryを参考にした下記のパスでは動作しませんでした。


export JAVA_HOME=`/usr/libexec/java_home`

java_homeコマンドで設定されたパス
echo $JAVA_HOME
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

その後cmakeもインストールできなかった・・・

次のようにmysql5.5をインストールしようとしたが、cmakeのビルドで止まり同様に動かない様子。

sudo port install mysql55-server

こちらもJAVA_HOMEと関係しているか不明のままですが、
次の手順でいったんcmakeを削除してから再度インストールできました。

参考
http://stackoverflow.com/questions/5576785/problem-installing-cmake-with-macports


sudo port clean cmake
sudo port install cmake

2012年10月1日月曜日

そろそろ通信回線について言っておくか



iPhone5の到来によりコスト配分が変わったので、
通信回線について言っておきます。

通信回線
以下、最近使っていた通信回線ですが、iPhone5が加わったのでこれを整理したいと思います。




































通信回線電波状況通信速度コストコメント
docomo 3Gバランスが良い。
いろんな場所で使える安心のドコモ。
IIJmio×月額945円でdocomo回線なのが最大の魅力。
通信速度が128kbpsなのでメールとtwitterだけなど
使うものを限定するかWifiと併用すればコスト面で最強。
オプションでLTEも使える。
WiMAXテザリングで通信データ量の上限がないのはこれだけ。
PCを使う場合はとくに制限がないのは安心です。
建物に囲まれた場所や地下などで
使えないことが多い。
au LTE◎(3Gも含む)iPhone5を購入しなければ使うことはないと思いますが、
LTEでテザリングできるのは魅力です。
まだLTEが普及していないので来年以降に期待。


docomo 3G


とにかくバランスがいいけど、これと言う売りがないのがドコモです。
あえて言うなら地方へ行った時の安心感ですね。
LTE(Xi)への移行はコスト面でデメリットが大きいので、もう少しがんばってほしい。
今後は、できるだけ安く運用できるようにプランやオプションの見直しを行い、
電話、メールなどはすべてiPhone5に転送するように設定。
塩漬け状態ですね。

IIJmio


私の場合は、ウェルカムパック for イオンを購入しました。
通信速度が128kbspなので用途が限られます。
追加料金でLTEも使えるのですが、コストを下げるがの目的であれば使わないと思います。
自宅、職場、駅、カフェなどでWifiが使えればこれでも十分ですね。
テザリングはWifiルータによっては使えるらしいですが、
128kなのであまり期待しないほうがよいかと思います。
Wifiと併用してAndroid開発端末用かな。

WiMAX


通信制限なくテザリングできるのはこれだけですね。
コスト面でもLTEと比べると安いので1年くらいお世話になりました。
ビルで囲まれた場所や地下で使えなかったことが残念です。
今後はLTEに設備投資していくと思われるので、どう差別化していくのかが心配です。
iPhone5を購入したため手放すことにしましたが、今後は容量を気にする必要があるのでそれが気がかりです。

au LTE


auに限らずLTEの料金は高いですね。これはどのキャリアでも言えるのですが、
LTEで通信できる場所はまだ限られているので割高感は否めません。
良くも悪くもiPhone5のおかげでLTEの競争が激しくなるので、
来年はLTEがどこでも使えるようになって安くなることを祈ります。
二年縛りですが、メインのdocomoは塩漬けで残しているので、
より良いサービスがあればすぐに解約します。

iOS6の地図で騒がれているAppleですが、LTEだけ見てもiPhoneの影響は大きいですね。
NFCもつけてほしかったな・・・。

最後にこれが言いたかった。
docomoさん、応援してます!
ユーザーの声をもっと聞いてほしいな。

2012年8月27日月曜日

MacPortsインストール・アンインストール for OSX 10.8 (Mountain Lion)

たまにしかやらないのでメモ

MacPorts参考


  • MacPorts
  • MacPorts Guide

  • 事前準備


  • Xcode をApp Storeでインストールする
  • Command Line Tools (OSX Mountain Lion) for Xcodeをインストールする

  • MacPortsをソースコードからインストールする


  • ファイルの置き場所
  • curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.1.3.tar.bz2
    tar jxvf MacPorts-2.1.3.tar.bz2
    cd MacPorts-2.1.3
    ./configure && make && sudo make install
    cd ../
    rm -rf MacPorts-2.1.3
    export PATH=/opt/local/bin:/opt/local/sbin:$PATH
    sudo port -v selfupdate
    

    MacPortsアンインストール

    sudo port -fp uninstall installed
    sudo rm -rf \
    /opt/local \
    /Applications/DarwinPorts \
    /Applications/MacPorts \
    /Library/LaunchDaemons/org.macports.* \
    /Library/Receipts/DarwinPorts*.pkg \
    /Library/Receipts/MacPorts*.pkg \
    /Library/StartupItems/DarwinPortsStartup \
    /Library/Tcl/darwinports1.0 \
    /Library/Tcl/macports1.0 \
    ~/.macports
    

    上記のコマンドをワンライナーで実行する いずれも管理者権限で実行します。
    インストール
    curl https://raw.github.com/rx93/install/master/bin/macports.sh | env VER=2.1.3 sh
    
    アンインストール
    curl https://raw.github.com/rx93/install/master/bin/macports_uninstall.sh | sh
    

    残暑お見舞い申し上げます

    残暑お見舞い申し上げます。

    少しずつ秋が近づいているような気がすると思えば、
    連日の猛暑でそんなことも吹き飛んでいますね。
    たぶん毎年思うのですが、残暑って年々厳しくなっているような気がします。

    もうすぐ9月ですが、iPhoneやらKindleやらいろいろあるのと、
    個人的にも忙しくなりそうな予感ですので、体には気をつけたいものです。

    最近、何をしているかよく聞かれるのですが、
    先月までドラゴンズドグマで今月からドラクエ10・・・ではなくて・・・、
    やっと近々お話ができるところまできましたので、
    来月あたりご挨拶に伺おうと思っております。

    仕事面では、これまではサーバサイドの開発を極めようと精進してきましたが、
    直近は主にクライアントサイドの技術を勉強しています。
    クライアントサイドの技術と言っても広範囲に及ぶのですが、
    まずは本業のプログラミングからで、地味にJavaScript、Obejctive-Cの勉強などをしています。
    また、サーバサイドですが、Rubyも始めました。
    今後も少しでも誰かの手助けになれるような技術を身につけようと思います。

    業界によっては夏期に夏期休暇を取れない方もいらっしゃると思いますが、
    夏の疲れには、充分にご注意ください。

    今後ともよろしくお願い申し上げます。

    2012年7月30日月曜日

    激戦価格帯のSSD プレクスター製「M5S」を試す

    プレクスター製のSSD「M5S」の256GB版が期間限定で値下がりして、
    激戦価格帯である1万5000円台に突入しました。

    プレクスター「M5S」256GBが値下がり、激戦の1万5千円台に3日までの期間限定

    256GBのSSDもついに普及価格帯になりましたね。
    Crucial m4は、以前から他にくらべると安いのですが、
    ついにというか、Intelが値下げをしたので他も一気に下げてきましたね。
    厳しい戦いになりそうですが、Intel以外もがんばって良い製品を作って生き残ってほしいものです。
    ちなみに、iMac購入時に1TBのHDDを256GBのSSDに変更すると+46,725円なので、
    残念ですが、この価格差が反映されるのはもう少し先になりそうです。

    それでは、激戦に参戦したプレクスターを応援すべく「M5S」を試してみます。
    [caption id="attachment_88" align="alignnone" width="300"] Plextor M5S 256GB[/caption]

    まずは、初期化したSSDにMountain Lion 10.8をインストールしてXbenchで評価してみます。

    ベンチマーク


    [caption id="attachment_107" align="aligncenter" width="486"]PLEXTOR M5S PLEXTOR M5S[/caption]

    世代が違いますが、m4に比べてもいい結果ではないでしょうか。
    m4は、しばらく使ってますが、特に問題なく満足度の高い製品です。
    数値だけ見ると、それを超えるかもしれません。今後の安定動作に期待したいと思います。

    今回は、デスクトップのOSX用に購入したのですが、
    他のPCのHDDも交換したくなりますね・・・もう1台買おうかな・・・期間限定という言葉に弱い。

    比較のために、Crucial m4 128GBと、WDの3TBのHDDも計測しましたが、
    計測条件が統一されていないので、結果は参考程度にお考えください。
    詳細は、下記をご覧ください。

    PLEXTOR PX-256M5S



    Results 417.27
    System Info
    Xbench Version 1.3
    System Version 10.8 (12A269)
    Physical RAM 6144 MB
    Model MacPro4,1
    Drive Type PLEXTOR PX-256M5S
    Disk Test 417.27
    Sequential 262.49
    Uncached Write 392.72 241.12 MB/sec [4K blocks]
    Uncached Write 315.17 178.32 MB/sec [256K blocks]
    Uncached Read 143.87 42.10 MB/sec [4K blocks]
    Uncached Read 389.26 195.64 MB/sec [256K blocks]
    Random 1016.91
    Uncached Write 1691.40 179.05 MB/sec [4K blocks]
    Uncached Write 578.04 185.05 MB/sec [256K blocks]
    Uncached Read 2996.43 21.23 MB/sec [4K blocks]
    Uncached Read 782.13 145.13 MB/sec [256K blocks]

    M4-CT128M4SSD2



    Results 290.77
    System Info
    Xbench Version 1.3
    System Version 10.8 (12A269)
    Physical RAM 4096 MB
    Model MacBookPro7,1
    Drive Type M4-CT128M4SSD2
    Disk Test 290.77
    175.58
    Uncached Write 316.59 194.38 MB/sec [4K blocks]
    Uncached Write 258.90 146.49 MB/sec [256K blocks]
    Uncached Read 75.67 22.15 MB/sec [4K blocks]
    Uncached Read 392.79 197.41 MB/sec [256K blocks]
    Random 845.48
    Uncached Write 1082.18 114.56 MB/sec [4K blocks]
    Uncached Write 481.27 154.07 MB/sec [256K blocks]
    Uncached Read 1424.69 10.10 MB/sec [4K blocks]
    Uncached Read 973.49 180.64 MB/sec [256K blocks]

    WDC WD30EZRX-00MMMB0



    Results 82.31
    System Info
    Xbench Version 1.3
    System Version 10.7.4 (11E53)
    Physical RAM 6144 MB
    Model MacPro4,1
    Drive Type WDC WD30EZRX-00MMMB0
    Disk Test 82.31
    Sequential 136.91
    Uncached Write 149.58 91.84 MB/sec [4K blocks]
    Uncached Write 130.17 73.65 MB/sec [256K blocks]
    Uncached Read 115.04 33.67 MB/sec [4K blocks]
    Uncached Read 162.47 81.66 MB/sec [256K blocks]
    Random 58.84
    Uncached Write 20.42 2.16 MB/sec [4K blocks]
    Uncached Write 308.69 98.82 MB/sec [256K blocks]
    Uncached Read 102.23 0.72 MB/sec [4K blocks]
    Uncached Read 167.42 31.07 MB/sec [256K blocks]

    2012年7月21日土曜日

    充電できません - MacBook Pro 13-inch, Mid 2010の場合

    毎日酷使しているわりには調子のよいMacBookProなんですが、
    ただ・・・、バッテリーだけはご機嫌斜めのようで充電できなくなりました。



    さすが、Apple製品。
    はっきりとした物言いです。Mac好きにはたまりません。

    Genius Barを予約してバッテリー交換かと思いましたが、念のためちょっと調べてみました。
    Appleサポート


    ふむふむ、SMCリセットはまだ試してないので、試してみる。

    こちらの手順で、SMCリセットしたところ充電できるようになりました。
    なるほど、とりあえずまだ使えるってことでいいのかな。

    今後のために、バッテリー交換に関するリンクも付けておきます。
    MacBookバッテリー交換

    2012年6月28日木曜日

    「git-flowによるブランチ管理」を試してみる

    git を使いこなすのが難しいと感じる今日このごろ。
    皆様いかがお過ごしでしょうか。
    gitを使っていると作業中のブランチどうするのとかいろいろ気になりますね。
    でも、ブランチの管理って複雑なんだよなーとか・・・思っていたらオライリーのサイトで「git-flowによるブランチ管理」という目からうろこのような記事がありました。
    ブランチ管理が共通化できて便利そうなので試してみること・・・。

    ちなみにgit-daliyというGREEのインフラの方(sotarokさん)が作成したものもあるようです。
    こちらは、PHPで作られているようですね。

    参考

    git-flow によるブランチの管理
    A successful Git branching model(日本語訳)
    gitflow

    コマンドが出力するメッセージも合わせて記述しているので、多少見にくいかもしれません。
    内容的にあまり変わりないと思うので、試したい場合は、上記参考サイトの「git-flowによるブランチ管理」をおすすめいたします。

    試した環境

    CentOS 6.2
    Git version 1.7.11.1 (2012/6/28現在のリリースバージョン)

    1. git-flowをインストールする

    いきなり少し違いますが、この環境では、gitを/usr/local/gitにインストールしたので、コマンドにINSTALL_PREFIXオプションつけています。
    sudo su -
    cd /usr/local/src
    wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | env INSTALL_PREFIX=/usr/local/git/bin bash
    chmod -R 755 /usr/local/git/bin
    

    2. 空のリポジトリを作成する

    git init --bare --shared=group foobar.git
    cp foobar.git/hooks/post-update.sample foobar.git/hooks/post-update
    

    3. 作業用のディレクトリに移動して空のリポジトリをcloneする

    git clone /var/git/foobar.git
    

    4. git-flowを導入する

    cd foobar
    git flow init
    
    デフォルトのままEnterキーを押し続けます。
    次の内容を聞かれますので必要があれば適宜で変更してください。
    No branches exist yet. Base branches must be created now.
    Branch name for production releases: [master]
    Branch name for "next release" development: [develop]
    How to name your supporting branch prefixes?
    Feature branches? [feature/]
    Release branches? [release/]
    Hotfix branches? [hotfix/]
    Support branches? [support/]
    Version tag prefix? []
    
    これなら既存のプロジェクトにも導入できますね。

    5. 機能(helloworld)を追加する

    git flow feature start helloworld
    Switched to a new branch 'feature/helloworld'
    Summary of actions:
    - A new branch 'feature/helloworld' was created, based on 'develop'
    - You are now on branch 'feature/helloworld'
    
    Now, start committing on your feature. When done, use:
    
    git flow feature finish helloworld
    

    6. ブランチを確認する

    git branch
    develop
    * feature/helloworld
    master
    

    7. 機能を追加する

    vi helloworld.pl
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    print "Hello World\n";
    

    8. リポジトリに追加する

    git add helloworld.pl
    git commit -m "HelloWorld"
    
    [feature/helloworld 0fabb48] HelloWorld
     1 file changed, 7 insertions(+)
     create mode 100755 helloworld.pl
    
    コミットしました。

    9. 開発用ブランチ(develop)にマージする

    git flow feature finish helloworld
    
    Switched to branch 'develop'
    Updating e69c50f..0fabb48
    Fast-forward
     helloworld.pl | 7 +++++++
     1 file changed, 7 insertions(+)
     create mode 100755 helloworld.pl
     Deleted branch feature/helloworld (was 0fabb48).
     
     Summary of actions:
     - The feature branch 'feature/helloworld' was merged into 'develop'
     - Feature branch 'feature/helloworld' has been removed
     - You are now on branch 'develop'
    
    上記のメッセージのとおり、
    ・feature/helloworldブランチがdevelopブランチにマージします。
    ・feature/helloworldブランチは削除されます。
    ・developブランチに切り替わります。

    10. ブランチを確認する

    git branch
    * develop
      master
    
    確かにそのとおりです。

    11. developブランチをpushする

    git push origin develop
    
    Counting objects: 5, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (5/5), 438 bytes, done.
    Total 5 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (5/5), done.
    To /var/git/foobar.git
     * [new branch]      develop -> develop
    

    12. ver1.0.0としてリリースブランチを作成する

    git flow release start 1.0.0
    
    Switched to a new branch 'release/1.0.0'
    Summary of actions:
    - A new branch 'release/1.0.0' was created, based on 'develop'
    - You are now on branch 'release/1.0.0'
    
    Follow-up actions:- Bump the version number now!
    - Start committing last-minute fixes in preparing your release
    - When done, run:
    
      git flow release finish '1.0.0'
    

    13. ブランチを確認

    git branch
      develop
      master
      * release/1.0.0
    

    14. READMEを作成する

    vi README
    README
    ====================================
    
    - 1.0.0: print "Hello World"
    

    14. リリースする

    git add README
    git commit -m 'update readme for release 1.0.0'
    
    [release/1.0.0 e331ab0] update readme for release 1.0.0
     1 file changed, 4 insertions(+)
     create mode 100644 README
     
     git flow release finish 1.0.0
     
     # エディタが開きマージの内容やtagの入力など求められるので入力して保存する
     
     Switched to branch 'master'
     Merge made by the 'recursive' strategy.
     README        | 4 ++++
     helloworld.pl | 7 +++++++<
     2 files changed, 11 insertions(+)
     create mode 100644 README
     create mode 100755 helloworld.pl
     Switched to branch 'develop'
     Merge made by the 'recursive' strategy.
     README | 4 ++++
     1 file changed, 4 insertions(+)
     create mode 100644 README
     Deleted branch release/1.0.0 (was e331ab0).
     
     Summary of actions:
     - Latest objects have been fetched from 'origin'
     - Release branch has been merged into 'master'
     - The release was tagged '1.0.0'
     - Release branch has been back-merged into 'develop'
     - Release branch 'release/1.0.0' has been deleted
    

    15. ブランチを確認する

    git branch
    * develop
    master
    

    16. タグを確認する

    git tag
    1.0.0
    

    17. pushする

    git push
    
    Counting objects: 5, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (4/4), 442 bytes, done.
    Total 4 (delta 1), reused 0 (delta 0)
    Unpacking objects: 100% (4/4), done.
    To /var/git/foobar.git
      0fabb48..e006137  develop -> develop
    

    18. タグをpushする

    git push origin 1.0.0
    
    Counting objects: 2, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (2/2), 342 bytes, done.
    Total 2 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (2/2), done.
    To /var/git/foobar.git
    * [new tag]         1.0.0 -> 1.0.0
    

    19. 修正用のブランチを作成する

    git flow hotfix start 1.0.1-bugfix
    
    Switched to a new branch 'hotfix/1.0.1-bugfix'
    
    Summary of actions:
    - A new branch 'hotfix/1.0.1-bugfix' was created, based on 'master'
    - You are now on branch 'hotfix/1.0.1-bugfix'
    
    Follow-up actions:
    - Bump the version number now!
    - Start committing your hot fixes
    - When done, run:
    
      git flow hotfix finish '1.0.1-bugfix'
    

    20. ファイルを修正する

    次のようにhelloworld.plに1行追加しました。
    git diff
    diff --git a/helloworld.pl b/helloworld.pl
    index 2382e77..6fa1737 100755
    --- a/helloworld.pl
    +++ b/helloworld.pl
    @@ -4,4 +4,5 @@ use strict;
     use warnings;
     
     print "Hello World\n";
     +print "BugFix\n";
    

    21. 修正版をコミットする

    git commit helloworld.pl -m "Bugfix."
    
    [hotfix/1.0.1-bugfix be609ab] Bugfix.
     1 file changed, 1 insertion(+)
    

    22. 修正版を適用する

    git flow hotfix finish 1.0.1-bugfix
    
    # マージする内容の確認やタグの入力など求められるので入力して保存する
    
    Switched to branch 'master'
    Merge made by the 'recursive' strategy.
     helloworld.pl | 1 +
     1 file changed, 1 insertion(+)
    Switched to branch 'develop'
    Merge made by the 'recursive' strategy.
     helloworld.pl | 1 +
     1 file changed, 1 insertion(+)
    Deleted branch hotfix/1.0.1-bugfix (was be609ab).
    
    Summary of actions:
    - Latest objects have been fetched from 'origin'
    - Hotfix branch has been merged into 'master'
    - The hotfix was tagged '1.0.1-bugfix'
    - Hotfix branch has been back-merged into 'develop'
    - Hotfix branch 'hotfix/1.0.1-bugfix' has been deleted
    

    23. タグの確認

    git tag
    1.0.0
    1.0.1-bugfix
    

    24. pushする

    git push
    
    Counting objects: 6, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (4/4), 501 bytes, done.
    Total 4 (delta 1), reused 0 (delta 0)
    Unpacking objects: 100% (4/4), done.
    To /var/git/foobar.git
       e006137..da2ab95  develop -> develop
    
    git push origin 1.0.1-bugfix
    
    Counting objects: 2, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (2/2), 355 bytes, done.
    Total 2 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (2/2), done.
    To /var/git/foobar.git
     * [new tag]         1.0.1-bugfix -> 1.0.1-bugfix
    
    git flowすばらしいです。
    私のようなブランチ管理が苦手な人でも使えそうです。

    1点気になったのは、リリースのバージョン情報ですね。
    細かい修正が多い場合は数値がどんどん追加されてカオスになりそうですね。
    そのあたりの運用ポリシーをどうするかが問題になりそうです。