個人メモ

SVN/SSHに関して

鍵の生成

  • sourcforgeのSVNのプロトコルはsvn+ssh
  • なので、SVNを使うにはSSHの公開鍵/秘密鍵の生成が必要。Windowsだと多分puttyとかwinscpとかあたりで生成するんだろうけど、MacはLinux同様ssh-keygenがついているのでそれで生成。
  • sourceforgeではSSH1を使用してるみたいなので、以下のコマンドでRSA1の鍵を生成。
    • ほんとはSSH2のDSAが一番安全なんだけどそれは言わない。
       $ ssh-keygen -t rsa1
      
  • ~/.ssh/identity.pubに公開鍵ができるので、以下のページから登録
  • 以下の場所に、SSHクライアントの設定ファイルがある。
    • /etc/ssh_config
  • fink経由でSSHをインストールした場合は、以下の場所にあったりする。
    • /sw/etc/ssh/ssh_config
  • その中に、以下のようなコメントがある。
     #   Protocol 2,1
    
  • それを以下のように修正し、SSH1を優先的に使用するように変更。
         Protocol 1,2
    

ssh-agentについて

  • sshにおいて、パスフレーズを省略してログインするためのデーモン。
  • まずは以下のようにデーモンを起動。
     $ eval `ssh-agent`
    
  • 以下のコマンドで秘密鍵をssh-agentに登録。この際にパスフレーズを聞かれる。
     $ ssh-add ~/.ssh/identity
    
  • 以下のコマンドでパスフレーズを聞かれることなしにチェックアウトできれば成功。
     $ svn checkout svn+ssh://chiba_mk2@svn.sourceforge.jp/svnroot/hitman/EMERY
    
  • ssh-agentを終了するときは以下のコマンド。
     $ eval `ssh-agent -k`
    

IDEからの利用

  • Aptana/Eclipseをベースに考える。
  • 以下のサイトによると、Windowsだとputtyのssh-agent機能を利用してSubClipseからチェックイン/チェックアウトできるらしい。
  • Macだとやり方が分からん。
  • 上のssh-agentを使ってがんばってみたがうまくいかん。
  • そんな訳で、以下の方法で無理矢理対応
    • Aptana上で空のプロジェクトを作る。プロジェクト名は「EMERY」
    • コマンドラインから(別にコマンドラインじゃなくてもいいけど).projectとか既存ファイルを削除
    • EMERYディレクトリの親ディレクトリで、SVNからEMERYプロジェクトをチェックアウト。
       $ ll
       total 0
       drwxr-xr-x    5 chiba_mk2  chiba_mk2   170  7  3 22:27 .
       drwxr-xr-x   52 chiba_mk2  chiba_mk2  1768  7  3 00:26 ..
       drwxr-xr-x    6 chiba_mk2  chiba_mk2   204  5 30 23:27 .metadata
       drwxr-xr-x   19 chiba_mk2  chiba_mk2   646  7  3 22:29 EMERY
       $ svn checkout svn+ssh://chiba_mk2@svn.sourceforge.jp/svnroot/hitman/EMERY
      
    • 無事チェックアウトが成功した暁に、Aptana上でEMERYプロジェクトを更新するとちゃんとRailsプロジェクトと認識されて開発が可能。
    • SVNとのやりとりはコマンドラインから頑張る。
  • もっといい方法はないものか。。。

コマンドメモ

SVN

  • SVNプロパティの設定
    • $Id$のバージョン番号への置換を有効化
       $ svn propset svn:keywords "Id" config/database.yml
      
    • チェックアウトしたOSの改行コードに自動的に変更
       $ svn propset svn:eol-style "native" config/database.yml
      

MySQL

  • 起動
     $ su -
     # mysqld_safe
    
  • 停止
     $ su -
     # mysqladmin -u root -p shutdown
    
  • Ruby On Rails用のDB作成
    • emeryを例に取る。作成するDBの内容はconfig/database.ymlの内容にあわせる。
       $ mysql -u root -p
       mysql> create database emery_test;
       mysql> create database emery_production;
       mysql> create database emery_development;
       mysql> grant all on emery_test.* to emery@localhost;
       mysql> grant all on emery_production.* to emery@localhost;
       mysql> grant all on emery_development.* to emery@localhost;
       mysql> set password for emery@localhost = password('emery');
       mysql> flush privileges;
       mysql> quit;
      
  • ちなみに、DBの文字コードはここで設定
     $ cat /etc/my.cnf 
     [mysqld]
     default-character-set=utf8
     [mysql]
     default-character-set=utf8
     [mysqldump]
     default-character-set=utf8
    

Wiki機能の検討

参考資料

基本機能の検討

こんなとこか?

  • Wikiドキュメントを新規作成する
  • 既存のWikiドキュメントを編集する(テキストマークアップ言語によるコンテンツの書式設定を可能にする)
    • テキストの装飾はもちろん、他のwikiドキュメントや通常のWebページ、ブログ本体の日記へのリンクも可能。
    • まーWikiなら当たり前か。
  • 既存のWikiドキュメントを表示する(開く)
  • 既存のWikiドキュメントを印刷する
  • 既存のWikiドキュメントを削除する
  • 既に作成されたWikiドキュメントをすべてリストする(表示または削除目的)
  • Wikiドキュメントに対するコメントやトラックバック機能
  • wikiドキュメントの差分確認
  • wikiドキュメントの編集の凍結
  • wikiドキュメントの単語検索
    • googleあたりを使う?全文検索的プラグインでも探す?
    • どうせならこの機能は本体のブログと横断的に検索できる方が理想か。
    • Ferretというプラグインがあるらしい。
  • 最近更新されたwikiドキュメントトップ○○
  • ちょっと欲張り過ぎか・・・

モデル

7月3日

まずはモデルから検討。項目的には何が必要だろう。ってかpukiwikiみたいに現在時刻を出すあれは無いのか。

  • ID
  • 本文/コメントを示す区分
  • タイトル
    • コメントの場合はタイトルは空
  • 本文
  • 親ドキュメントID
    • 本文の場合は値どうしよ
  • 最終更新日

IDと最終更新日は確かRailsがよしなにやってくれるんだっけ。

  • 後何がいるだろ。
  • これじゃ少なすぎなようなこれでもいいような。。。
  • 一旦これで生成してみるか。
  • モデル名は何にしようか。

7月4日

  • とりあえずWiki本文とコメントは別のモデルにして1対多でつないでみるか。
  • 本文は「WikiDocument」、コメントは「WikiComment」というモデル名でいこう。
    • 起動に乗ればWikiTrackbackなんかも考えてみる。
    • ってかWikiでトラックバックってあんま無いか
  • 項目はこんなもんかな
    • WikiDocument
      • ID
      • タイトル
      • 本文
      • 作成日
      • 最終更新日
    • WikiComment
      • ID
      • 本文のID
      • 投稿者
      • 本文
      • 作成日
      • 最終更新日