"The = 0 tells C++ that these member functions are pure virtual functions. That is, they can never be called directly. Any class containing one or more pure virtual functions is called an abstract class."
— Practical C++ Programming, Second Edition, by Steve Oualline. Copyright 2003, 1995 O’Reilly Media, Inc., 0-596-00419-2.
"An activity is the process being modeled, such as washing a car. An action is a step in the overall activity, such as Lather, Rinse, and Dry."
— Learning UML 2.0, by Russ Miles and Kim Hamilton. Copyright 2006 O’Reilly Media, Inc., 0-596-00982-8.

RVMを再インストールしたので、とりあえずメモ。

何も急いでXcodeをアップデートする必要もなかったのだが、してしまっているものはしょうがない。わざわざダウングレードする気にもなれず、代替手段としてosx-gcc-installerをインストールする方法もあったが、1.8の資産らしきものもなく、はじめから1.9を使うつもりだったので、以下の方法で十分だった。

tatsuMac:~ tatsu$ rvm requirements

  Notes for Mac OS X 10.7.2, Xcode 4.2.

For MacRuby: Install LLVM first.

For JRuby:  Install the JDK. See http://developer.apple.com/java/download/  # Current Java version "1.6.0_26"
For IronRuby: Install Mono >= 2.6
For Ruby 1.9.3: Install libksba # If using Homebrew, 'brew install libksba'

You can use & download osx-gcc-installer: https://github.com/kennethreitz/osx-gcc-installer
** NOTE: Currently, Node.js is having issues building with osx-gcc-installer. The only fix is to install Xcode over osx-gcc-installer.

To use an RVM installed Ruby as default, instead of the system ruby:

    rvm install 1.8.7 # installs patch 357: closest supported version
    rvm system ; rvm gemset export system.gems ; rvm 1.8.7 ; rvm gemset import system.gems # migrate your gems
    rvm alias create default 1.8.7

And reopen your terminal windows.

Xcode 4.2:
 * is only supported by ruby 1.9.3+ using command line flag: --with-gcc=clang
 * it breaks gems with native extensions, especially DB drivers.

Xcode 4.2 users - please be warned - 
in case of any compilation issues 
 * downgrade to Xcode 4.1
 * or install osx-gcc-installer
and reinstall your rubies.

まずはlibksbaをインストール。Homebrewを使っているなら

$ brew install libksba

とある。

実はMacportsからHomebrewに切り替えたときに、何かportに依存していたらしくRVMの環境がおかしくなったのが、再インストールすることになった理由。自分はしょっちゅう環境をクリーン&リビルドしたりするたちなので、いまのところMacportsのほうが簡単でよいかな、ということで結局戻すことに。

tatsuMac:~ tatsu$ sudo port install libksba

あとはインストール時に—with-gcc=clangフラグを使えとあるのでその通りに。

tatsuMac:~ tatsu$ rvm install --with-gcc=clang 1.9.3

使い方は何でもありかと。あんちょこは自分のものに限るので、物覚えが悪くなってきたと思ったら簡単なので作ってみて下さい。使ってないとすぐに忘れるEmacsも作成中。

  1. Camera: SONY DSLR-A850
  2. Aperture: f/2.8
  3. Exposure: 1/500th
  4. Focal Length: 70mm

意外と細かいところでひっかかったので忘れないように貼っておきます。Ubuntuは10.04です。

まずはパッケージをインストール。

$ sudo apt-get install git-core gitosis

まあgit-coreはサーバーにする以前に入ってると思いますが。

gitosisをインストールすると、/srv/gitosisをホームディレクトリとするユーザgitosisが追加されます。ユーザ名をgitにしたい、既にあるリポジトリ格納ディレクトリを公開したい、などこだわりがあるようでしたら最初からマニュアルで行うか(Pro Gitご参照)、初期化前に設定し直す必要があります。

続いて、管理者としてgitosis-adminリポジトリにアクセスするユーザのsshキーを指定して初期化を行います。まずはサーバーローカルなユーザを登録しましょう。

$ sudo -H -u gitosis gitosis-init < initialKeyFileName

ここでinitialKeyFileNameにはsshキー生成によってできた*.pubファイルを指定します。sshキーの生成方法についてはGitHubに詳しい説明があります。

なので実際には、

$ cd ~
$ ssh-keygen -t rsa -C "your_email@youremail.com"
$ sudo -H -u gitosis gitosis-init < ~/.ssh/id_rsa.pub

といった流れになります。

ここで指定したsshキーはgitosis-adminリポジトリのkeydirディレクトリにファイルとして格納されます。このとき格納されるファイル名は、初期化コマンド実行時にリダイレクトで渡したファイル名では当然なく、-Cで指定したコメント+”.pub”(e.g.,your_email@youremail.com.pub )となります。

細かいことですが、その後追加していくユーザのsshキーファイルは、恐らくユーザ名.pubみたいなファイル名になると思いますので、もし揃えたければ命名規則に沿ったコメントを指定してsshキーを生成するのがよいかも知れません。(もしくは、後からgit mvでリネームしてgitosis.confを更新するか。)

これでsshキーを登録したサーバーのローカルユーザがgitosisを管理するためのgitosis-adminリポジトリをcloneして読み書きできるようになりました。

$ git clone gitosis@yourserver.com:gitosis-admin.git

続いてリモートユーザを登録しましょう。サーバー側の登録ユーザにsshファイルを送って登録してもらいます(します)。以下はgitadminuserのhomeディレクトリ直下にcloneしているものとします。

another@remote $ scp ~/.ssh/id_rsa.pub gitadminuser@yourserver:~/gitosis-admin/keydir/another.pub
gitadminuser@yourserver: ~/gitosis-admin $ vi gitosis.conf

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = your_email@youremail.com another

編集後commit&pushすれば、リモートユーザも同様にgitosis-adminリポジトリにアクセスできるようになります。

その後は、グループやリポジトリを追加していくことになります。ググるとリポジトリごとにグループを追加した簡単な例しか見当たりませんが、そうしなければいけないということはなく、実際には以下のようにグループごとに複数のリポジトリを設定可能です。


[gitosis]

[group superior]
writable = gitosis-admin product1 product2
members = superioruser

[group gitosis-admin]
writable = gitosis-admin
members = superioruser gitadminuser

[group develop]
writable = product1 product2
members = devuser1 devuser2 devuser3

(Source: help.ubuntu.com)

このWYSIWYGエディタはこれでよいのだろうか?うーむ、単に使い慣れていないだけなのか。もっと体裁整えたかったけど。やたらとdivを吐き出しているのも気になる。しばらく試行錯誤が続きそう。

Eclipseでレイアウト編集中にImageViewで以下の警告がでていた。

[Accessibility] Missing contentDescription attribute on image

ググってみたところ、アクセシビリティ向上のためにcontentDescription属性を追加しろということらしい。ADT 16から統合されているlintが警告しているということで、コマンドを叩いてみたら同じように出ていた。

http://stackoverflow.com/questions/8500544/android-lint-contentdescription-warning

以下の方法でQuick Fixできる。

  • その1 lintビューから電球アイコンをクリックする。
  • その2 レイアウトの場合、レイアウトエディタで “Show Lint Warnings for this Layout”アイコンをクリックし、Fixボタンをクリックする。
  • その3 XMLファイルの場合、エディタでCtrl-1(Command-1)を押下する。

結果として以下のような対応となります。

main.xml:
 
<ImageView
   …
   android:contentDescription="@string/string_name"/>
strings.xml:

<string name="string_name">something descriptive</string>

http://tools.android.com/tips/lint

またいつまで続くかわかりませんが、ぼちぼちと。宜しくお願いします。