プログラミング: 2013年1月アーカイブ

例の、OpenGL(C言語)の課題を教えてくれと言ってきた学生さんですが、その後の話……ていうかついさっきの話です。

課題の〆切が過ぎたようなので、参考にこちらのソースコードを送ってあげたのですが、
「最後にお願いがあります。
プログラムの
・プログラムの概略
・プログラムの操作説明書
・プログラムの実行過程に関するできるだけ詳細な解説書
を書いてください。何度もすみません。」

どうやら、自力では課題をクリアできずに、期限延長で提出しないといけないようで、私のプログラムをそのまま提出しようとしているようです(しかも、提出用のドキュメントまで私に作らせようという……)。

おまい、俺が言った説教を忘れたのか、と。
あれだけ自力でやるのが大事だと言ったのに、何を言っているのか、と。
そんな不正を平気でする子に育てた覚えは無いっ!(違

ちょっと、真面目に叱ろうと思います。

ホント、どこの大学か割り出して担当の先生に通報してやろうかしら……?(笑)

前回の書き込みしかり、最近、メールで知人や知らない人からプログラムの質問を受けることがよくあります。

ちょっと面白かったのが、Web開発初心者の方で、「ネットに公開しているWebアプリなんですが、プログラムミスにより、パスワードのハッシュが外部から見れる状態になってしまっていました。」
「でも、ハッシュだから、パスワードそのものでないし、大丈夫ですよね?」

思わずのけぞってしまいました。まぁ、初心者さんだとセキュリティの勉強まであまり手が回らないのかもしれませんが。

当然のことながら、パスワードハッシュが漏れるのは、かなり危険です。

ハッシュ化につかった関数が何かバレてしまえば、パスワードの総当たり式で次々にハッシュを作成して、漏れたハッシュと一致するものが見つかれば、それがユーザーが使っているパスワードということになります。

また、総当たり式にしなくても、レインボーテーブルと呼ばれるものを利用することで、もっと高速にパスワードを特定することも可能です。

まぁようするに、ハッシュを見た人間が悪意をもっていて多少の知識があれば、簡単にパスワードがバレてしまうのです。

ということで、その人にはパスワードを再設定するよう、伝えておきました。

実は、かくいう私も、
セキュリティの勉強、まだまだ不十分です。
大々的に宣伝をしていないとはいえ、私もあるWebノベルツールをはじめとしたWebサービスを開発・運用しているので、こうしたことに関しては常に勉強を続けなければなりません。

まー、あまりやってて楽しい分野ではないんですけどねw

なんか、mixiで知らない学生さんからこんな頼み事をされた。
「OpenGL(C言語)の課題を出されたんですけど、わかりません! 教えてください!」
しかも、「今週の水曜日までにお願いします!」という期限付きw

普通の人なら怒るか無視するけど、私はお人好しなのでちょっとアドバイスしてあげた。
ちなみに、その課題とは以下のようなもの。
・適当に直方体の領域を作る
・その内部で適当に跳ねまわる球体を複数個配置する
・初期位置は領域内、初速は適当に設定してよい。重力方向、重力加速度も適当でいい。
・球体と外壁、球体間の接触判定を行い、適切に跳ねかえるようなプログラムを作成する。
・球体の数を動的に増やせるようにする。同時接触が起こった時の挙動がちゃんと動くプログラムであること。

なんというか、OpenGLというより高校物理の問題ですなこれは。
運動量保存則と反発係数の式を使えば楽勝です。(ただ、ちょっと面倒なのはめり込んだボールを引き離す処理ですね)

で、ちょっと面白そうだったのでちゃちゃっと作ってキャプチャしてみました。
http://screencast.com/t/VLewd0EpM0i
(キャプチャソフトの仕様でカクカクしてますが、実際はもっとなめらかです)

この課題、学生用に球体に限定しているので簡単なんですが、これが一般形状だったら、本格的な剛体物理シミュレーションが必要になってきますね。

作ったソースコード、今すぐその学生さんにあげちゃうと勉強にならないので、課題の締め切りが過ぎた後に見せてあげる予定です。


まぁ、こういう学生さん、非常識ではあるけど、こういう無鉄砲さというか、なりふり構わず、という姿勢は実は嫌いじゃないです。
スティーブ・ジョブズとか、こういうなりふり構わず、身もふたもない行動で成功をつかみ取っていますからね。まぁ、周りにすごい迷惑はかけますけどw

プログラミングコーナー「Web Programming」にて、
heroku postgresのDBにローカルPCから遠隔アクセスする」を公開しました。

HerokuというPaaS(クラウドサービス)は、Web開発者の間ではかなり人気の開発プラットフォームなんですが、そのHerokuでメインで使われているDBはPostgreSQLです。
このHerokuサーバー上のPostgreSQLのDBに遠隔アクセスする方法を記事にしてみました。

以前は、この方法が分からずにDBデータをいったんローカルにダウンロードして、ローカルで編集して、サーバーにアップロードする。というやり方でしかメンテナンスできないでいました。
今回のこの方法で、ようやくHerokuサーバーのDBを直接メンテナンスできるようになり、いやー気分がスッキリしましたw

やっぱり、GUIのDBクライアントを使ってメンテナンスできるのは便利だよね。

って、はい。今回もほとんどの人にとっては意味不明な記事でしたねw

気にしないでください……orz

プログラミングコーナー「Algorism & Computing」にて、
GCD(Grand Central Dispatch)をWindows、Mac、Linuxで利用する」を公開しました。

マルチスレッドプログラミングはスレッド管理や排他制御など、かなり面倒なプログラミングを強いられるのですが、GCDを使うことにより、
これをかなりの部分、低減することができます。
面倒くさい部分はOS、ライブラリが面倒をみてくれます。

このGCD、今まではMacでしか使えなかったのですが、Appleがオープンソース化した甲斐あって、
最近になってWindowsとLinuxに移植されました。
XDispatchというライブラリです。ちなみにApacheライセンス。

これで、Windows、Mac、Linuxで同一ソースでGCDが使えるようになります。

一度GCDを使うと、もうやみつきになりますよー。


って、はい。誰も見ないよねww

このアーカイブについて

このページには、2013年1月以降に書かれたブログ記事のうちプログラミングカテゴリに属しているものが含まれています。

前のアーカイブはプログラミング: 2012年12月です。

次のアーカイブはプログラミング: 2013年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。