yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2017/11 の記事
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
パスワードを使う
2005/04/05(Tue)17:03:48
 JavaやPerlで地獄を見るのもなんですから、今回は少々趣向を変えて、.htaccessでパスワード認証を作成してみました。領域はSSIなどではなく、BASICです。
 とはいえ、このサーバーではTELNETを用いることができませんし、使えても私はこの技術を習得していません。そこで、いわゆる「.htpasswd」は手書きで記述することになります。パスワードはDES暗号(符号)化によって不可逆暗号化されたものを使用しなければなりません(パスワードをそのまま記述するのは不可)。
 では、どうやって暗号化後のパスワードを取得すればいいのか。普通はTELNET上でサーバーにやってもらうもののようですが、使えないのではどうしようもありません。そこで少々探してみたところ、どうやらサーバーのユーザー専用ページに「暗号生成フォーム」が存在しました。これを使えばパスワードを暗号化できるようです。
 ところが、このDES暗号化、実はPerlやPHPで非常にポピュラーなものでした。掲示板など作ったことのある人なら、誰でも知っています。PHPではこれだけで暗号化パスを表示することができます。
print crypt("Password");
 2つ目の引数(SALT)は省略可能なのですが、「暗号化のシード値」としては重要です。通常は英数字と一部記号の中から2文字を組み合わせたものが用いられますが、さらにこれを増やしてセキュリティを高めたものもあるようです。不可逆ですから、暗号化後のデータから元のワードを復元することはできません。
暗号化の例
crypt("guest" , "AA"); = AAVx.yNgFTD8g
crypt("guest" , "10"); = 10/sE59wAhjPU
crypt("magenta" , "10"); = 10NQson.77BgY;
 ただ、同じパスワードとSALTを用いれば、必ず同じ文字列が戻ってくるようになっています。つまり、パスワード「guest」を「AA」のSALTで暗号化すれば、絶対に「AAVx.yNgFTD8g」が返ってくることになります。
 ここまでがDES暗号の基本です。そこで、サーバーが用意したユーザー専用ページに頼らずとも暗号化ができるよう、PHPでさらっと暗号化スクリプトを書いておきました。これほど簡単なものはありません。
 なお、PHPでSALT値を省略してパスワードを変換させた場合、安全性の高いタイプで暗号化されてしまうようです。普通に使っている分には問題ありませんし、.htpasswdに記述しても正しく動作するのですが、Perlでも使用するなら気をつけた方がいいでしょう。「guest」を暗号化すると「$1$bFNUHUog$5eEx6sOfAmnBOMXkwlu8n/」のようになります。
 で、今回の心臓部はここからなのですが、ユーザー名は「REMOTE_USER」環境変数に格納されるようになっています。PHPでは「getenv(String)」関数によって環境変数が取得できますから、getenv("REMOTE_USER") としてやることでユーザー名が分かります。
 今回のサンプルはこちら、ユーザー名には「魔法戦争解放師団」3名(全属性魔道士・全武器騎士・子ども銃士)の中からお好きなキャラの名前(全角カタカナ)、パスワードには「guest」と入力すればログインできます。ログインしても何もないのではありますが、サンプルですから。
 ついでにこの前のシミュレーションシミュレータも微妙に作り変えておきました。キャラが歩く際、今まではカクカク移動であったのが、スムーズ移動になっただけですが。

 お次はData Revolution BBSについて。データを転送できるタイプの掲示板として、少し前より稼動させているこのBBSですが、作成時には散々ビットを扱わされ、閉口したものでした。純粋に最高の技術力を必要とするCGIでした。
 それはともかく、例のエイプリルフールに用いた頂き物の画像をポストしてみたところ、バグの類ではないながらも微妙な現象が発生しました。あの掲示板は画像のファイルサイズ規制機構・カンバスサイズ規制機構と同時に、表示サイズ調整(幅もしくは高さが規定値を超えた場合に、比率はそのままで表示サイズを変更する)も備えているのですが、最大高さ設定が480にもかかわらず、479として調整されています。
 決してバグと呼べる代物ではありませんが、これがバグの素では困るため、簡単に調べてみました。比率を守って縮小しますから、そこには当然「拡大率」と呼ばれる概念が入ってきます。100x100の画像を50x50で表示すれば拡大率は50%ですし、200x100を100x50で表示しても同じく50%です。しかし、100x100を100x50で表示するのは等倍ではありません。
 で、この掲示板での拡大率の求め方ですが、まず幅と高さのどちらの方がより制限にオーバーしているのかを調べます。幅が基準値の2倍、高さが4倍であるなら、間違っても拡大率50%で縮小してはいけません。高さを基準値にあわせるため、25%にする必要があります。
 その際に、より基準値をオーバーしている側を基準値にあわせるために必要な比率を調べ、その比率がそのまま幅及び高さの係数になるわけですが、このプロセスが問題(と定義するほどでもありませんが)でした。
 ここでは利便性のために最大幅を30として考えてみます。で、幅が35とするなら、35 / 30 = 1.1666... の拡大率(というより縮小率)が求められ、後は35からこれを除算すれば、基準値の30に収まるというわけです。30 / 35 = 0.857142... を求めた後、35にこれを乗算する方法もありますが、どちらも理屈は同じです。単に私がC/C++育ちで、小数点単位の掛け算をあまり用いない癖があるため、前者を用いているだけです。
 つまり、今回の計算は以下のようになると定義できますが、

X = 35 / 30 = 1.1666...
Width = 35 / X

 さてここで問題です。無限小数点演算はどのように行われるのでしょうか。本来なら「1.1666...」が無限に続くと解釈すべきですが、いかに倍精度小数点のdouble変数とはいえ無限に続くものを格納することはできません。そこで、どこかキリのいいところで「1.1666...」を終わらせなければいけません。
 そうして出された演算結果は1.1666...の近似値ですが、そのものではありません。無限循環の6が途中で切り落とされているなら、Xは1.1666...より少し小さくなりますし、末尾が四捨五入で繰り上げられているなら、Xは1.1666...より少し大きくなります。というわけで、後者の方法で35をXで割ってみると、29.9??...(30の近似値)が返ってきます。まあ考えるまでもありません。
 ところが、HTMLのimgタグでwidthやheightを指定する場合、小数点を用いることはありませんし、指定しても無視されます。そもそも画面構成要素の最小単位であるピクセルに小数点を代入されても、「0.5ピクセルを画面上に表示する」といったことは現実として不可能です。
 そこで、Perl側で int(var) を使って数値の小数点を切り詰めているわけですが、ここで29.9...の小数点部分は切り落とされ、結果として「29」が代入されます。これこそが、480のはずの幅が479にされていた理由です。
 四捨五入にすれば解決はできるのですが、そこまでするメリットもないのでこのままにしておくとしましょうか。大きい画像(1280x1024など)がそのまま表示され、レイアウトがぐちゃぐちゃになることを防止するための措置ですから。

 開発ばかりでは頭が痛くなりますので、ここで少しだけ社会問題風味のものを。しかもかのライブドア問題についてです。
 毎日新聞に「キレの良いのが珠にキズ」なるコラムがありますが、2回に渡ってライブドアを批判しています。言いたいことは分かりますし、私も堀江社長は個人的に嫌いですから、賛同はしたいところなのですが、あれでは一方的な批判です。どうもああいう論理抜き、感情論だけの批判は好きではありません。
 しかし、「成金鈴久の栄華は3年」の部分には同意します。あのライブドアや堀江社長の態度では、数年後は分かりません。さらにはっきり言わせていただけば、今の態度のままでは確実に落ちぶれると考えています。あんなものが日本にはびこってもらっても困りますし、それ自体は歓迎すべきことなのですが。
 態度を改めれば長持ちする可能性はあるとはいえ、今のままではそれがオチです。その時になったら、当時の発言や本を持ち出して、大いに笑って差し上げたいところです。人心はカネでも軍事力でも買えないからこそ、どの国でも国民には不満が渦巻いていますし、Typing Windでも支持率の概念があるのです。人や民をまとめるほど難しいものはありません。たかが堀江社長が、それをできるわけがありません。
 その点、Typing Windはかなり現実的といいますか、民の目は厳しいです。10回のうち1回でも間違った行いをすれば、支持率はゼロになります。20回に1回の水準でようやく半分から支持され、9割から支持されるには100回のうち1度しか失敗は許されません。
 それでも奮闘するイリアスさん、この人の信念はゆくゆくエピソードで語られることに・・・なればいいのですが。ただ、堀江社長のようにあつかましい理念の押し売りはせず、単に自由・自己満足の上、やりたいようにやっただけと本人は語っています。
 ライブドアが長くはないと考えるのにも根拠がありまして、球団の時は9割は支持されていたであろうライブドア、例の「カネで買えないものはない」で人望を失い始め、今回のニッポン放送買収劇で5割です。これから行動を起こすたび、敵を増やすばかりでしょう。
 なお、かくいう私も「管理者の戦記」や「コラム」で考えをぶちまけるにあたって、敵が増えることは覚悟しております。あらゆる人が100%満足する意見などない以上、理性的な人にのみ支持される程度で私にはちょうどいいでしょう。ライブドアはこれとは逆で、理性的な人からの支持を最初に失った形です。支持者として残るは、理念や行いでなく世代間対立に彼の意義を見出そうとする、理性を捨てた人々だけです。
 このサイトも理性のある皆様にご支持いただければ幸いでございます。私にそれがないだけに
カテゴリ [開発魔法] [トラックバック ][コメント 1]
<- 前の記事を参照 次の記事を参照 ->

Comments(1)
名無し - 2012/02/27(Mon)10:31:49

- Blog by yamicha.com -