2012年1月17日火曜日

redmineからのー、saltと入れ子集合モデルー♪~(´ε` )

redmineを導入しようとして...
軽く始めたことが、自分の習慣も変えるようになることってありますよねー?
( ・`д・´)<あるあるー

 このまえ職場でプロジェクト管理をちゃんとやろうと思い立って、
redmineをいじりはじめましたヽ(´ー`)ノ

オフィシャルっぽいブログもあって、
導入するのにそんなに苦労はしませんでしたが、
これがちょっとした自分のモットーを変えることになったのです。
ちょっとのぞいてみたテーブル
redmine、職業柄どんな風につくられてんだろうって気になったのですが、
Rubyわかんないので、とりあえずテーブル眺めることに。 

まず見たのが『users』テーブル。
作成日付とかって『created_on』って名付けるんだへー(´・∀・`)
と感心していると最後のカラムに気になる名前が

『salt』

 むむ( ・`д・´)
ユーザのテーブルにあるし、
 やはりパスワードを暗号化するときに付加するアレかと。 

つぎにプロジェクト管理ってこともあって、
『projects』テーブルを。

『is_public』ってカラムがありました。
あー僕なら『public_flg』とかってやっちゃうよなーなんて思ってると、
またまた気になるカラムがっ( ・`ω・´)!!!

『lft』と『fgt』 

さすがにこれだけでは断定できませんが、
型がint(11)だってことと、
プロジェクトが親子関係を持ちうるってことを考えると、
やはり、入れ子集合モデルのヤツだなと。
saltと入れ子集合モデルヽ(´ー`)?
saltとは、パスワードとかを暗号化するとき一緒に暗号化することで、
解読されにくくする方法。

入れ子集合モデルとは、
部材表とかみたく再帰的に自分をみていく構造のテーブルを、
もっと早くアクセスするために考案された方法で、
 lftとrgtの間にlftとrgtが収まっている部品は自分を構成する部品だとするやり方です。
ちゃんと説明できてないので、細かいことは次回にゆずるとして...
少人数では、
たしかに職場の環境ではイラネって感じのカラムですが、
大きなプロジェクトで使うとかになると、
セキュリティーやパフォーマンスを確保するために必要になります。
で、それがどうした?
これだけ眺めるのに10分もかかりませんでした。

でも、たとえば自分が学校出たてのエンジニア1年目で、
ふとしたことで、今回と同じようなことをして、
この技術を学んでいたと想定して、 

webサービス作るときに、パスワードにsaltとか付加してセキュリティを高めようとか、
そもそもパスワードの平文保存はダメとか、
部材表作成するときに、検索の時間がかかるようなら入れ子集合モデル使おうとか、 
そのまえに再帰的な部材表の作り方はやっかいだとか、

そういうことが提案できるってことなんですよね。
知っていたから、とかじゃなく
( ̄д ̄)「前もって知ってた技術だから、簡単に名前から辿りつけたのでは??」 

たしかに簡単に辿りつけたのはそうかもしれませんが、
時間かければ、行き着くことは可能だと思うんです。

今回のsaltやlft、rgtにしても、不可解な単語で、
この技術に至らなければ、なんとも納得できない存在なのですから。
やらなくても、出会うことくらいは...
いくつかオープンソースは読んだことありますし、
書籍買ったり、ブログ読んだりもしてますが、
知らない言語だから、使わないOSだからって距離をとらずに、
今回みたいに気になったら、
わかるとこだけでもちょっと出会ってみる、
ってことをすれば、多く学べるんだなと思いました( ー`дー´)キリッ 

ってことで、人生で初めて、Mac Book Pro買いましたっ( ー`дー´)キリッ

0 件のコメント:

コメントを投稿