昨日楽天テクノロジーカンファレンスでrails関係の発表をしてきました。楽天が本社ビルで500人規模(!)で外部のエンジニアを集めて無料開催したイベントです。

小規模な所で慣れたら大舞台で、というコースを取らずにいきなり150人定員なイベントで発表するという無謀な挑戦してみました(笑

 

LTの発表資料「仕事に使えるグラフプラグイン「html5jp_graphs」

下記に資料や写真などアップしてありますのでご覧下さい。 頑張れば注目エントリに乗れそうですのではてなブックマークしていただきたくご協力よろしくお願いします。   
 
開催概要

http://d.hatena.ne.jp/onering/20081128/1227866859

基調講演がまつもとさんとRBCの最首さん。

まつもとさんが地域との絡みで三鷹を、また最首さんがrailsとの絡みで 図書館パッケージに触れてくれていました。三鷹への注目が高まっていますので次回からは島根、九州だけでなく三鷹からも人が行ってアピールしたい所です。なおカンファレンス全体のレポートはこちらが良くまとまっています。

http://d.hatena.ne.jp/zegenvs/20081129/p1

 

posted by Face ysakaki on Sun 30 Nov 2008 at 22:39

日中の仕事をやめて、iPhone app開発者になった方がいいなというコメントをdeliciousで見かけました。

http://blogs.oreilly.com/iphone/2008/11/turning-ideas-into-application.html

The going rate for iPhone developers, at least the developers I know and trust, is $125/hour and up. I have some friends who are booked out at $200/hour for the next few months, although $125/hour seems to be the going rate in my network. At that rate, a full-time contract iPhone developer costs $5,000/week and it may take four to six weeks for an application to be developed.

私の知っていて信頼できるiPhoneの開発者は$125/h〜だ。他にも$200/hで数ヶ月先まで予定が決まっている友達が何人かいる。ただ$125/hというのが私のネットワークでの相場となっているようだ。その相場だとiPhone app開発者のフルタイムの契約は$5000/wかかることになり、大体6週間開発にかかるという感じだろうか。

posted by Png satoko on Sat 29 Nov 2008 at 07:13 with 2 comments

Gitでは、SVNなどと違ってリビジョン番号のような順序付きの数字ではなく、 ハッシュのような識別子でコミットが管理されています。 なので、時系列にそってコミットIDを列挙したい場合は、 以下のように git rev-list コマンドを使えば良いようです。

   1  % git rev-list 2dfb3...(snip)...cf210

これで、指定したコミットより過去(指定したコミットを含む)のハッシュが時系列にそって得られます。 先頭は一番新しいもので、末尾が一番古いものです。

   1  % git rev-list HEAD

とすると、全てのコミットのハッシュを時系列にそって取得出来ます。

posted by Png genki on Fri 28 Nov 2008 at 19:57

友人のisanoくんが「Rubyわかんねー」と言いながら頑張って解いたみたいなので、僕もRubyで書いてみる。

問題内容を引用。

1~512の数の書かれたカードが1枚ずつ、左から小さい順に、「1,2,3,4,・・・,511,512」と並んでいます。いま、次のような作業を行うことにします。

ア. 前から奇数番目のカードをすべて取り除く

イ. 前から偶数番目のカードをすべて取り除く

 まず、この作業を、ア→イ→ア→イ→・・・の順に、カードが残り1枚になるまで繰り返して行うことにします。

 このとき、最後に残るカードに書かれた数字を答えてください。

isanoくんが後で見てもわかるように、丁寧にコメントまでつけちゃうぜ。

以下、僕の書いたコード

   1  #/usr/bin/env ruby
   2  
   3  # Integerクラスを拡張する
   4  class Integer
   5   
   6    # 値が偶数かどうかを調べる
   7    # 偶数 -> true
   8    # 奇数 -> false
   9    def even?
  10      return (self % 2).zero?
  11    end
  12  
  13  end
  14  
  15  numbers = (1..512).to_a  
  16  
  17  # 以下, 指定された通りにカードを取り除いていくコード
  18  # (ア) 奇数番目のカードを抜く = 添え字が偶数のカードを抜く
  19  # (イ) 偶数番目のカードを抜く = 添え字が奇数のカードを抜く
  20  
  21  flag = true    # (ア)のときtrue, (イ)のときfalse. 最初は(ア)
  22  
  23  # カードが1枚になるまで続ける
  24  while numbers.size > 1 do
  25  
  26    # Arrayで何かを取り除く操作をするのは、rejectが簡単
  27    # ここではrejectの破壊的メソッドreject!を使う
  28    numbers.reject!{|i| numbers.index(i).even? == flag }
  29  
  30    flag = !flag # (ア)/(イ)の入れ替え
  31  
  32  end
  33  
  34  puts numbers
  35  #=> 342

こんなもんでどうや!!

追記 (2008/12/02 16:35) 気づけばいろんな人がやってた。

Ritsなはてなーばっかで困る。

posted by Png y_tsuda on Fri 28 Nov 2008 at 17:51

今までのネットワーク接続はeth0でTAP-WIN32のアダプタに接続し、ホストマチン(Windows)のインターネット共有している。この方法で簡単にゲストのLinuxから外部(インターネットなど)に接続することはできるけど、外部(社内ネットワーク)からはゲストので動いているサーバへアクセスできない。社内ネットワークではcoLinuxのインスタンスに勝手にIPアドレスを与えることはできない場合サーバを公開したいならホストからゲストへポートをフォーワードするしかない。

以下の設定はetho0にTAP-WIN32の設定が既にあることを前提としている。

  1. ホスト(Windows)側のcoLinuxの設定ファイルにslirpのインタフェースを追加する:

       1  eth1=slirp,,tcp:22:22/tcp:80:80/tcp:443:443
    

  2. ゲスト(Linux)側の/etc/network/interfacesにeth1を追加:

       1  # secondary network for external network access
       2  iface eth1 inet static
       3     address 10.0.2.15
       4     network 10.0.2.0
       5     broadcast 10.0.2.255
       6     netmask 255.255.255.0
       7     gateway 10.0.2.2
    
    10.0.2.15は適当なアドレスだけど、gatewayの10.0.2.2は特別で、slirpデーモンのデフォルトアドレスだ。

この記事ではcolinux0.7.3のUbuntuで行なったけど、DebianやFedoraでも設定が同じだろう。ちなみに、XAMPPやandLinuxのようなパッケージを使えばこの設定は不要らしい。

注意点

  • windows側のfirewall設定
  • 複数default gatewayのルーティング問題。解決策が二つ:
    1. SLiRPのgatewayのみにする。要するにeth0/tapにgatewayを定義せず、インターネットの通信をslirpに通す。このやりかたがわりと簡単だけど、SLiRPが若干遅いことと10.0.2.2(slirpデーモン)以外のところにpingできない
    2. 複数default gatewayのルーティングの設定をする (iproute2でpolicy routing)
  • SLiRPはIPv6に対応していないため、ゲスト側で効果したいサービスがIPv6のアドレスにバインドしてしまうとうまくいかない。netstat -n --inet6 --listeningなどで確認んできる。たとえば、sshの場合は:
       1      Proto Recv-Q Send-Q Local Address    Foreign Address    State      
       2      tcp6        0      :::22             :::*               LISTEN 
    
    この問題を解決するにはIPv6を無効化にするか、各種サービスを明示的にIPv4のアドレスに設定する。

参考

posted by Face lchin on Thu 27 Nov 2008 at 15:58

先日、lchinさんがブログで紹介していたシェル fish をCentOSにインストールしてみます。

「fish」(Friendly Interactive SHell)を使ってみる - レオメモ - s21g

yumのレポジトリの追加

fishをインストールするには、dagレポジトリを追加する必要があります。

fishをインストール

レポジトリの追加が完了すると、普通にyumでインストールできます。

   1  # yum install fish

fishを使ってみる

fishを使用している様子は、Ichinさんの記事公式のスクリーンショットを参考に。

10分くらい触った感想を箇条書きで...

  • ものすごくカラフル
  • 補完機能が便利(manのあととか、サブコマンドとか、オプションとか軽い説明つきで候補が表示される)
  • いちいちカラフル

これからしばらくfishを使ってみようと思います。

以上、fishの速攻レビューでした。

参考になりそうなページ

fishが紹介されているページを適当に探してみたので、あとで参考にしよう。

posted by Png y_tsuda on Thu 27 Nov 2008 at 11:22

.elファイルをバイトコンパイルして、.elcファイルを作成してやると、かなり起動が早くなった気がする。

以下、バイトコンパイル方法のメモ。

M-x byte-compile-fileで開いてるファイルをバイトコンパイル

バイトコンパイルしたいファイルを開き、

   1  M-x byte-compile-file
とする。

これで、開いている.elファイルの中間コード、.elcファイルが作成される。

diredでまとめてバイトコンパイル

  1. diredを起動 (C-x d)
  2. バイトコンパイルしたいファイルに m でチェックを入れていく
  3. すべてチェックしたら、 B でバイトコンパイルを実行

この記事は2007年3月11日に書いた僕の以前のブログの記事です

posted by Png y_tsuda on Tue 25 Nov 2008 at 23:38

autoinsertというものを使えば、コードを書くさいにテンプレートを用いることができる。

.emacsに以下のコードを記述するだけでOK。

   1  (require 'autoinsert)
   2  (setq auto-insert-directory "~/.code_template/")
   3  (setq auto-insert-alist
   4        (nconc '( ("\\.c$" . "template.c")
   5                  ("\\.cpp$" . "template.cpp")
   6                  ("\\.js$" . "template.js")
   7                  ("\\.html$" . "template.html")
   8                  ("\\.css$" . "template.css")
   9                  ("\\.rb$" . "template.rb")
  10                  ) auto-insert-alist))
  11  
  12  (add-hook 'find-file-not-found-hooks 'auto-insert)

簡単に説明すると、拡張子が .c のものを新規で作成すると ~/.code_template/template.c というファイルを読み込むという感じ。

あとは.code_template/(別に名前は何でもいいけども)以下にテンプレートを入れていくだけ。

「これは絶対に書く!」ってものをテンプレートに書いておくと、ちょっとはコード書くのが楽になったりするかな。

みんなでテンプレートを公開しあうのもおもしろいかもー。

この記事は2007年3月26日に書いた僕の以前のブログの記事です

posted by Png y_tsuda on Tue 25 Nov 2008 at 23:31 with 2 comments

先日に参加したRailsイベントfishというものを紹介してもらった。zshbashのようにUnixで使うコマンドシェルですが、fishのフルネーム(Friendly Interactive SHell)からもわかるように、使いやすさと対話的な利用を目的としている。以下の特徴があるらしい:

  • 基本的に色付けをする
    • シンタクスハイライト
    • コマンドやオプションのスペルチェック
  • htmlヘルプ (help打ったらブラウザが起動する)
  • 説付きTAB補完
  • サブシェルがない
  • ミニマルかつシンプルな文法

Mac OS Xでインストールするには:

   1  % sudo port install fish

Mac OS Xでfishchshしたければ、/etc/shellsfishを追加しなければならない。

   1  # List of acceptable shells for chpass(1).
   2  # Ftpd will not allow users to connect who are not using
   3  # one of these shells.
   4  
   5  /bin/bash
   6  /bin/csh
   7  /bin/ksh
   8  /bin/sh
   9  /bin/tcsh
  10  /bin/zsh
  11  /opt/local/bin/fish

使ってみるとこんな感じ:

  • 書きかけのコマンドが赤色 fish01.jpg
  • 存在しているコマンドが緑色 fish02.jpg
  • helpw3mが起動する fish03.jpg
  • funcedでビルトインの実装をみる(インデント、シンタクスハイライトあり) fish04.jpg
  • manもスマートに補完されている fish05.jpg

今までは正直zshbashのほとんどの機能を使っていませんし、しばらくはfishchshしてメインシェルとして使ってみることにする。

posted by Face lchin on Tue 25 Nov 2008 at 19:38

I made a SIMBL plugin for Terminal.app which enable us to copy on selection. Here is the plugin named TerminalCopyOnSelect.

TerminalCopyOnSelect.bundle.zip

INSTALLATION

  1. At first, you should install SIMBL.
  2. Download the zipped plugin file I mentioned above and expand it.
  3. Copy the extracted file "TerminalCopyOnSelect.bundle" to the plugin directory which is located at ~/Library/Application Support/SIMBL/Plugins/
  4. Terminate all processes of Terminal.app and restart it.

You're done! Now you can get copied selected text from the terminal when you released mouse button on it.

You are also able to disable this feature by turning off the following menu "Copy On Select".

ss01

Finally, I opened the source of this plugin on the GitHub under the MIT license.

Enjoy!

posted by Png takiuchi on Tue 25 Nov 2008 at 19:11 with 8 comments
Contents
楽天テクノロジーカンファレンスでLTデビューしました
iPhone app開発者の時給 $125/h〜$200/h!
Gitでコミットオブジェクトを時系列にそって列挙する方法
算数にチャレンジ!! 第624回問題 をRubyで解く
SLiRPによって社内ネットワークにcoLinux上のサーバを公開する方法
CentOS 5.2 に fish (Friendly Interactive Shell) をインストール
elファイルをバイトコンパイルして、起動速度UP!
テンプレートを使って、コードを書くのを楽しよう!
「fish」(Friendly Interactive SHell)を使ってみる
TerminalCopyOnSelect: The SIMBL plugin for Terminal.app enabling us to copy on selection
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
KingofSmack: Here also good reads for this mobile applicatio... '14-5
Spencer: You don't have to re-compile it, this version w... '14-4
staiano: Any chance we can get a recompile for 10.9? '14-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ