githubでdotfilesを管理することにした

一箇所でdotfilesを管理する必要に迫られたので、管理することにした。
以下、手順。

githubにプロジェクト『dotfiles』を作成

rdera · GitHubの『Dashboard』→『Create A Repository』

リポジトリの作成

$ cd ~
$ git init
$ vi .gitignore
*  #全てのファイルを除外
*. #全ての隠しファイルを除外
!.bashrc # .bashrcを除外しない

ポイントは.gitignoreファイル。

$ git add .
$ git commit -m "first commit."
$ git remote add origin git@github.com:rdera/dotfiles.git
$ git push origin master


これで、.bashrcがgithubで管理されるようになった。

さくらVPS512に契約し、ScientificLinuxをインストールして色々

さくらVPS512プランに契約し、ScientificLinuxをインストールし、
設定をした。
以下、メモです。

ScientificLinuxのインストール

以下を参考に、というかそのまま実行。
http://www.glidenote.com/archives/1135
自分がちょっとハマったのは、VNCの接続で、
『View Only』のチェックボックスにチェックを入れていて、
画面操作ができなかったという、間抜けな…

不要なデーモンを止める

不要なデーモンを止めて、現状では以下のデーモンが
OS起動時に起動する設定になっている。

$ chkconfig --list | grep :on
acpid          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
cpuspeed       	0:off	1:on	2:on	3:on	4:on	5:on	6:off
microcode_ctl  	0:off	1:off	2:on	3:on	4:on	5:on	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rsyslog        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sshd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sysstat        	0:off	1:on	2:off	3:off	4:off	5:off	6:off

リモートアクセスユーザの作成

リモートアクセス用ユーザhogehogehogeを作成し、
パスワードを設定し、グループをwheelにする。

# useradd hogehogehoge
# passwd hogehogehoge
# usermod -G wheel hogehogehoge

sudoを使用の設定

2007-10-11
以下コマンドにて、sudoを使用できるユーザを設定する。

# visudo

コメントアウトされている以下の箇所を有効にする。

 %wheel ALL=(ALL)       ALL

これで、グループwheelに属するrootとhogehogehogeがsudoを
利用できるようにて設定された。

sshの設定

まず、アクセス元のクライアント側で公開鍵を作成し、
アクセス先のサーバ側にコピーする。

$ ssh-keygen -t rsa
$ scp .ssh/id_rsa.pub hogehogehoge@hostname:./

サーバ側での処理は以下の通り。

$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/*


sshの設定ファイルを以下の通り、設定
/etc/ssh/sshd_config


アクセス可能なユーザを指定する。

AllowUsers hogehogehoge


標準のポート番号は危ないので、変更。

Port 1234567890


ルートでのログインを禁止する。

PermitRootLogin no


公開認証でログインを可能にする。

PubkeyAuthentication yes


パスワードログインを禁止する。

PasswordAuthentication no

selinuxを無効にする

$ sudo vi /etc/selinux/config
SELINUX=disabled

LAMY2000 L401 リフィル まとめ

LAMY ラミー 4色 ボールペン 油性 2000 L401 正規輸入品

LAMY ラミー 4色 ボールペン 油性 2000 L401 正規輸入品


純正のでも書き味が悪いというわけではないのだが、
書き始めが、かすれる。そして、なによりリフィルが高い。

ジェットストリームのリフィルをLAMY2000で使えれば、
最強だと思うんんだけど、対応していないようだ。

ということで、LAMY2000に使用できるリフィルを調べてみた。
まぁ、ググっただけです。

PILOT BRF-8EF 油性 0.5mm 84円
PILOT BRF-8F 油性 0.7mm 黒・赤・青・緑 84円
PILOT BRF-8M 油性 1.0mm 84円
PILOT LHRF-20C3 ゲルインキ 0.3mm 黒赤青 210円
PILOT LHRF-20C4 ゲルインキ 0.3mm 黒赤青 210円
ZEBRA LHRF-20C4 ゲルインキ 0.3mm 黒赤青 210円
ZEBRA 4C-0.4芯 油性 0.4mm 105円
ZEBRA 4C-0.5芯 油性 0.5mm 84円
ZEBRA 4C-0.7芯 油性 0.5mm 黒青赤緑 84円
ZEBRA 4C-0.7芯-N 油性 0.7mm いろいろ 168円
ZEBRA 4C-1.0芯-N 油性 1.0mm 黒青赤緑 84円
ZEBRA 4C-1.0芯-N 油性 1.0mm いろいろ 168円
ZEBRA JSB-0.4芯 ゲルインキ 0.4mm いろいろ 168円
ZEBRA JSB-0.5芯 ゲルインキ 0.5mm いろいろ 168円

BRF-8Fか、4C-0.7をまず、試してみようと思う。


PILOT | ご指定のページが見つかりません
ゲルインキボールペン替芯(LHRF-20) | 筆記具 | ボールペン | 替芯 | ゲルインキボールペン替芯 | 製品情報 | PILOT
ZEBRA | ゼブラ株式会社 | 油性ボールペン替芯
ZEBRA | ゼブラ株式会社 | ジェルボールペン替芯

Kwartzの学習メモページ

Kwartz - kuwata-lab.com
るびま
るびま

学習したことをメモがてら、載せていく。

ex

プレゼンテーションデータファイルex.html

<table>

  <tr id="list">
    <td id="mark:item">Foo</td>
  </tr>

  <tr id="dummy:d1">
    <td>Bar</td>
  </tr>

</table>

プレゼンテーションロジックファイルex.plogic

#list {
  logic: {
    for member in @members
      _stag
      _cont
      _etag
    end
  } 
} 

#item {
  value: @x;
}


プレゼンテーションデータファイルとプレゼンテーションロジックファイルから、
テンプレートファイルex.rbhtmlを生成する。

$ kwartz -l rbtenjin -p ex.plogic ex.html > ex.rbhtml


テンプレートファイルex.rbhtml

<table>

<?rb     for member in @members ?>
  <tr id="list">
    <td>#{@x}</td>
  </tr>
<?rb     end ?>


</table>


メインプログラムファイル

#!/home/rdera/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -Ku

require 'tenjin'

engine = Tenjin::Engine.new()

context = { 
  :members => ['A','B','C'],
  :x       => 'abcdefg',
}

s = engine.render('ex.rbhtml',context)
print s


出力は以下の通り。

<table>

  <tr id="list">
    <td>abcdefg</td>
  </tr>
  <tr id="list">
    <td>abcdefg</td>
  </tr>
  <tr id="list">
    <td>abcdefg</td>
  </tr>


</table>


Kwartz-Ruby Users' Guide - kuwata-lab.com
沿って、学習を進める。

まず、『1−4Complex Example』

1-4

プレゼンテーションファイルexample2.html

<table>

 <tr bgcolor="#CCCCFF" id="mark:list">
  <td id="mark:name">foo</td>
  <td>
   <a href="mailto:foo@mail.com" id="mark:email">foo@mail.com</a>
  </td>
 </tr>


</table>

プレゼンテーションロジックexample2.plogic

/*
 * an element which is marked by 'id="mark:list"'
 *  - print value of a variable 'color' as bgcolor attribute value.
 */
#list {
  attrs:  "bgcolor" color;
  logic: {
    @members.each_with_index do |member, i|
      color = i % 2 == 0 ? '#FFCCCC' : '#CCCCFF';
      _stag    # start tag
      _cont    # content
      _etag    # end tag
    end
  }
}

/*
 * an element which is marked by 'id="mark:name"':
 *  - print value of member[:name] as content of the element.
 */
#name {
  value: member[:name];
}

/*
 * an element marked by 'id="mark:email"':
 *  - print value of member[:email] as contentn of the element. 
 *  - print "mailto:" and member[:email] as href attribute value.
 */
#email {
  value: member[:email];
  attrs: "href" "mailto:#{member[:email]}";
}

テンプレートファイルを生成する。

$ kwartz -l rbtenjin -p example2.plogic example2.html > example2.rbhtml


テンプレートファイルexample2.rbhtmlは以下の通り。

<table>
 
<?rb     @members.each_with_index do |member, i| ?>
<?rb       color = i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'; ?>
 <tr bgcolor="#{color}">
  <td>#{member[:name]}</td>
  <td>
   <a href="#{"mailto:#{member[:email]}"}">#{member[:email]}</a>
  </td>
 </tr>
<?rb     end ?>
      
    
</table>


メインプログラム

#!/home/rdera/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -Ku

require 'tenjin'

engine = Tenjin::Engine.new()

context = { 
  :members => ['x','y'],
  :name    => 'name',
  :email   => 'email',
  :x       => { 'name' => 'xxx', 'email' => 'em'},
  :y       => { 'name' => 'yyy', 'email' => 'em'}
}

s = engine.render('example2.rbhtml',context)
print s


実行してみたが、うまくいかない。
以下、実行時のメッセージ。

example2.rbhtml:6:in `[]': can't convert Symbol into Integer (TypeError)
        from example2.rbhtml:6:in `block (2 levels) in _render'
        from example2.rbhtml:3:in `each'
        from example2.rbhtml:3:in `each_with_index'
        from example2.rbhtml:3:in `block in _render'
        from /home/rdera/.rvm/gems/ruby-1.9.2-p180/gems/tenjin-0.6.1/lib/tenjin.rb:625:in `instance_eval'
        from /home/rdera/.rvm/gems/ruby-1.9.2-p180/gems/tenjin-0.6.1/lib/tenjin.rb:625:in `render'
        from /home/rdera/.rvm/gems/ruby-1.9.2-p180/gems/tenjin-0.6.1/lib/tenjin.rb:940:in `render'
        from ./tenjin2.rb:15:in `<main>'

よく分からず、ハマっている。。。
とりあえず、飛ばして、学習を進める。

1-5

どのようなプレゼンテーションロジックを書けば、
どのようなテンプレートファイルが生成されるのか。

プレゼンテーションデータファイルは引き続き、以下の通り。

<table>

 <tr bgcolor="#CCCCFF" id="mark:list">
  <td id="mark:name">foo</td>
  <td>
   <a href="mailto:foo@mail.com" id="mark:email">foo@mail.com</a>
  </td>
 </tr>

</table>

プレゼンテーションロジックファイル

#list {
  logic: {
    for member in @members
      _stag
      _cont
      _etag
    end 
  }
}

テンプレート

<table>

<?rb     for member in @members ?>
 <tr bgcolor="#CCCCFF">
  <td>foo</td>
  <td>
   <a href="mailto:foo@mail.com">foo@mail.com</a>
  </td>
 </tr>
<?rb     end ?>

</table>

2

プレゼンテーションロジックファイル

#list {
  logic: {
    for member in @members
      _elem
    end 
  }
}

テンプレートは1と同様。

3

プレゼンテーションロジックファイル

#list {
  logic: {
    _stag
    for member in @members
      _cont
    end 
    _etag
  }
}

テンプレート

<table>

 <tr bgcolor="#CCCCFF">
<?rb     for member in @members ?>
  <td>foo</td>
  <td>
   <a href="mailto:foo@mail.com">foo@mail.com</a>
  </td>
<?rb     end ?>
 </tr>

</table>

4

プレゼンテーションロジックファイル

#list {
  logic: {
    _stag
    print expr
    _etag
  }
}

テンプレート

<table>

 <tr bgcolor="#CCCCFF">
#{expr} </tr>

</table>

5

プレゼンテーションロジックファイル

#list {
    value: expr;
}

テンプレートは4と同様。

6

プレゼンテーションロジックファイル

#list {
  logic: {
    print expr
  }
}

テンプレート

<table>

#{expr}
</table>

7

プレゼンテーションロジックファイル

#list {
  elem: expr;
}

テンプレートは6と同様。

8

>プレゼンテーションロジックファイル

#list {
  logic: {
    _cont
  }
}

テンプレート

<table>

  <td>foo</td>
  <td>
   <a href="mailto:foo@mail.com">foo@mail.com</a>
  </td>

</table>

9

プレゼンテーションロジックファイル

#list {
  logic: {
  }
}

テンプレート

<table>


</table>

10

プレゼンテーションロジックファイル

#list {
  logic: {
    _element(foo)  # expand other element marked with name 'foo'
  }
} 

テンプレート
.....
いまいち、良く分からず。
保留。

11

プレゼンテーションロジックファイル

#list {
  logic: {
    _content(foo)  # expand content of other element
  }
}

テンプレート
.....
いまいち、良く分からず。
保留。

12

プレゼンテーションロジックファイル

#list {
  logic: {
    i = 0
    for member in @members
      i += 1
      if i % 2 == 0
        color = '#FFCCCC'
      else
        color = '#CCCCFF'
      end
      _elem    # '_elem' is equivarent to _stag + _cont + _etag
    end
  }
}

テンプレート

<table>

<?rb     i = 0 ?>
<?rb     for member in @members ?>
<?rb       i += 1 ?>
<?rb       if i % 2 == 0 ?>
<?rb         color = '#FFCCCC' ?>
<?rb       else ?>
<?rb         color = '#CCCCFF' ?>
<?rb       end ?>
 <tr bgcolor="#CCCCFF">
  <td>foo</td>
  <td>
   <a href="mailto:foo@mail.com">foo@mail.com</a>
  </td>
 </tr>
<?rb     end ?>

</table>

kwartzでtenjinを使う方法

Makoto Kuwataさんに教えて頂きました。
早すぎる最適化オジサン on Twitter: "@rdera とりいそぎ、kwartz 3.2.0用のパッチを作成しました。http://gist.github.com/646778 これを例えばpatch.diffで保存し、kwartz.rbがあるディレクトリでpatch -p1 < patch.diffを実行して下さい"
patch to support RbTenjin · GitHub
kuwata-lab.com

patchをダウンロード

$ git clone git://gist.github.com/646778.git

ダウンロードしたpatchファイル名を変更しとく

$ mv 'patch to support RbTenjin' patch.diff

kwartz.rbのあるディレクトリでpatch適用

$ patch -p1 < patch.diff

で、使えるようになる

$ kwartz -l rbtenjin -p ex.plogic ex.html > ex.rbhtml

jqueryで追加した要素のjavascriptを実行できない

題記の件で、ハマっている。

index.htmlが以下の通り。

<html>


<head>
<link rel="stylesheet" type="text/css" href="./css/common.css">
<meta http-equiv="Content-Script-Type" content="text/javascript"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>                                             
<script type="text/javascript" src="./js/hoge.js"></script>                                             
</head>

<body>
  <a href="javascript:void(0);" class="hoge">aiueo</a>
</body>


</html>


./css/common.cssは以下の通り。

.hoge {
  color: red;
}

./js/hoge.jsは以下の通り。

$(function() {

  $('.hoge').click(function(event){
    $(this).after("<br><a href=\"javascript:void(0);\" class=\"hoge\">aiueo</a>");
  }); 


});

で、index.htmlに表示される『aiueo』リンクをクリックすると、
その下に新たにリンク『aiueo』が追加される。


だが、そのリンク『aiueo』をクリックしても、
何の変化もない。つまり、javascriptが実行されない。


なぜなのか、どうすれば良いのか。


cssは適用されているのになぁ〜。