Macの開発環境にEC2 ami toolsを入れる手順のメモ。 今回はmacportsのrpmを使ってインストールしました。

   1  % wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
   2  % sudo rpm -i ec2-ami-tools.noarch.rpm --nodeps --ignoreos

これだけです。

あとは、.zshrcなどで、RUBYLIB環境変数に/usr/lib/site_rubyを加えておきます。

See Also

posted by Png genki on Mon 9 Mar 2009 at 14:48

portを使っていて以下のようなエラーが出たので、対策を調べてみました。

   1  Unable to execute port: can't read "frameworks_dir": no such variable

Mac OS Xで(も)tamarinのabcdump.asからabcdump.exeを作る

これはports自身を更新することで、解消ができました。

ということで、以下のコマンドでportを更新。

   1  % sudo port -v selfupdate
   2  % sudo port -d sync

これでエラーが出なくなりました。

posted by Png genki on Mon 9 Mar 2009 at 13:38

会場にお越し下さった皆様、ありがとうございます。

posted by Png genki on Sun 8 Mar 2009 at 21:35

最近C++やVBAしか書いていなかったので、たまにはRubyを書いて気分転換しようと思いました。

お題は、本を読んでいると良さそうなものが出てきたので、それを実装しようと思います。

お題は、以下のような感じ

和が n となる2数の組合せを求める。

ただし, 和 n と 求める2数は0以上の整数

例) 0 = [0, 0], 1 = [[0, 1], [1, 0]], 2 = [[0, 2], [1, 1], [2, 0]]

以下、書いたコード。

   1  def f(n)
   2    m = 0
   3    combination = []
   4    while n >= 0
   5      combination.push([m, n])
   6      m += 1; n -= 1
   7    end
   8    return combination
   9  end

素直に書いた感じです。

プログラミング初心者のための練習問題には良いかもしれないですね。

2009/03/08追記

僕の知らないところで、周りの人たちがこの話題で盛り上がってました。

はこべのおかげで、mapの存在を思い出すことができました。

   1  def f(n)
   2    (0..n).map{|i| [i, n-i] }
   3  end

なんでこんなことも思いつかなかったのか・・・。

勉強不足ですね・・・。

はこべは一般化してたみたいなので、プログラミング大好きな人はそちらを参考にしてください。

posted by Png y_tsuda on Sun 8 Mar 2009 at 03:02

弊社は、deployツールとしてcapistranoを使っています。 しかし、Capistranoのメンテナンスが終了するという話("Jamis Buck氏, CapistranoやSQLite/rubyの開発を終了"参照)を聞いても、 特に困らないという事に気がついて、あらためて驚きを感じました。

なぜだろうと考えてみると、それはGitとGitHubの存在による所が大きい。 GitHubにソースがある限り、メンテナが不在でも勝手にforkして 野良patchを書いたり、それを集めてきてちょっとした stable release的なものを作ったりする事ができてしまう。

もちろんそれは、今までだって頑張れば出来た事だけれど、 Git/GitHubは、それを全く違う次元で簡単にしてしまった。

かつてはメンテナやコミッタが専権的にソフトウェア開発の決定権を握っていた構造が、Git/GitHubの登場によって、気がつかないうちに崩れ去っている。 これはソフトウェア開発史上、非常に大きな出来事なんだろう。

See Also

posted by Png genki on Thu 5 Mar 2009 at 03:58

Xcodeで開発しているiPhoneアプリをgitで管理する場合には、 以下のような .gitignore ファイルを使っています。

   1  *.xcodeproj/*.mode1v3
   2  *.xcodeproj/*.pbxuser
   3  build
   4  .DS_Store

posted by Png genki on Wed 4 Mar 2009 at 18:36

ちょっと必要だったので作りました。

ss

CoreGraphicsを使って、指定したCGRectの中に、指定した太さの×印(Cross Sign)を描画するためのPathを生成します。

   1  void PDPathAddCrossSign(CGMutablePathRef path, CGRect rect, CGFloat thickness)
   2  {
   3    CGFloat diff = rect.size.width - rect.size.height;
   4    rect = CGRectDeflateRect(rect, MAX(0, diff/2), MAX(0, -diff/2));
   5    CGFloat radius = rect.size.width/2;
   6    CGFloat d = sqrt(2)*thickness/2;
   7    CGFloat cx = CGRectGetMidX(rect), cy = CGRectGetMidY(rect);
   8    CGAffineTransform transform = CGAffineTransformMakeTranslation(cx, cy);
   9    CGPathMoveToPoint(path, &transform, d, 0);
  10    for(int i = 0; i < 4; ++i){
  11      CGPathAddLineToPoint(path, &transform, radius, radius - d);
  12      CGPathAddLineToPoint(path, &transform, radius - d, radius);
  13      CGPathAddLineToPoint(path, &transform, 0, d);
  14      transform = CGAffineTransformRotate(transform, M_PI/2.0f);
  15    }
  16    CGPathCloseSubpath(path);
  17  }

中で呼び出してるCGRectDeflateRectは以下のようなものです。

   1  CGRect CGRectInflateRect(CGRect rect, CGFloat width, CGFloat height)
   2  {
   3    rect.origin.x -= width;
   4    rect.origin.y -= height;
   5    rect.size.width += width*2;
   6    rect.size.height += height*2;
   7    return rect;
   8  }
   9  
  10  CGRect CGRectDeflateRect(CGRect rect, CGFloat width, CGFloat height)
  11  {
  12    return CGRectInflateRect(rect, -width, -height);
  13  }

これを使う事で、任意の大きさ、太さ、色で×印を描画できます。

posted by Png genki on Wed 4 Mar 2009 at 00:12

次にリリース文を書く時のためのメモ。
PokéDiaのプレスリリースを参考にしてPDFを作成しましたが、自分で作業をやってみて思ったことがあるのでまとめておきたいと思います。

内容

  • 製品・サービスの1行紹介
  • いつリリースしたか
  • 他と違うウリなところ
  • 概要
  • 製品・サービスURL
  • 広報素材
  • ユーザの声
  • 会社に関する情報

ヘッダー

  • 宛先
  • どこの会社からの発信か

例:

各位
会社名 合同会社S21G (エスツーワンジー)
お問合せ info@s21g.com
(URL http://www.s21g.com/)

フッター:会社に関する情報

  • 会社名+よみがな
  • 連絡先
  • 会社URL
  • 製品URL

例:

<本リリースに関するお問い合わせ先>
合同会社S21G (エスツーワンジー)
E-mail: info@s21g.com
URL: http://www.s21g.com/
ezPhotoMail URL: http://www.s21g.com/ezPhotoMail.html

その他

  • 他のプレスリリース文を参考にしたり、
  • レビューサイトで書かれている紹介製品情報で書かれていることを参考にする。
  • 文中での注意
    URL、メールアドレスは青文字・下線の状態にして、リンクしておく
    参考:http://blog.s21g.com/articles/1328
  • リリース日
    配信する当日、実際にサービスが公開された日(申請が下りたとか、webに公開した)の日付でなくてもよい

Refs:書き方

Refs:送り先まとめ

posted by Png satoko on Sat 28 Feb 2009 at 08:42

細かい点ですが、メールアドレスの登録をアドレスブックから行えるようにしました。

絵文字キーボードの利用が出来なくなる可能性があるようなので("Apple issues App Store-wide Emoji take-down order")、 独自に絵文字の文字コードを入力するためのキーボードを用意する事を考えています。 次のアップグレードでは、祝日の詳細を表示する機能の実装を予定していましたが、緊急性から、絵文字キーボードの実装が完了した時点でアップデート申請を行うかもしれません。

posted by Png genki on Sat 28 Feb 2009 at 04:50

MerbでExpiresやCache-Controlを設定する場合、 アクションメソッドの中で、以下のようにすれば良いようです。

   1  headers['Cache-Control'] = 'public'
   2  headers['Expires'] = 3.days.from_now.utc.rfc2822

posted by Png genki on Thu 26 Feb 2009 at 18:41