妄想プログラミング道

プログラミングの理想と現実

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

amazon

 技術的な興味からAmazon アソシエイト・プログラムAmazon Web Servicesに参加してみる事にしました。
 とりあえずはテストという事で、私自身が現時点で興味を持っている分野の書籍へのリンクをいくつか作ってみます。
 もしよかったらどうぞ。


スポンサーサイト
  1. 2009/01/12(月) 11:41:29|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:2

Cは決して難しくない

 ちょっと気になったので思い切って反応してみました。

404 Blog Not Found:いきなりCの方がよっぽど難しい
むしろCをいきなり学ぶというのは、算数をすっとばして数論から入るようなものではないか。

 私の基本的な考えはちょっと前のエントリとかを参照いただくとして…
 まず最初に一言。
 Cってそんなに難しいですか?
(C++はここではCに含めません。)
 私もCが初心者向けとまでは思いませんが、JavaScriptも含め、むしろCよりも難しいのではないでしょうか。
 数学に例えるならCはせいぜい一次方程式。
 小学生には『1+?=3の?はなんですか』という問題を出すのに対し、中学生は『1+x=3のxを求めよ』になるだけという印象です。
(それが難しいんだと言われてしまえばそれまでなんですが…)
 小学生は色々な?を求めるために『なんとか算』を色々習ったと思うのですが、中学生になると方程式を解くという事を教えられてそれらが不要になり、さらに応用が広がります。
 スクリプト言語ってそんな『なんとか算』のように思うのです。
(一応それだけにはとどまらない面が色々あるのは抜きにして。)
 そして数論にあたるのはむしろ関数型言語ではないかと。
 それなのにどうしてCは難しいと思われてしまうのでしょうか?
 私は多分、皆さん誤解しているだけだと思います。
 Cは『面倒である』という事実を。
 変数に数値とアドレスしか保持できないCで文字列を処理するために必要な手続きの煩雑さ。
 関数も変数も使用する前に宣言しなければならず、初期値をきちんと設定しないと動作が不定となる危うさ。
 標準ライブラリが厳格ゆえに貧弱なため各種ライブラリを導入して使用する際の前処理の多さ。
 そして環境構築や実行ファイル生成という言語外の要因。
 これらのただ『面倒』な部分を『難しい』と言っているだけなのではないか?
 私にはそう思えて仕方ありません。
 もちろん、それらがCを扱う上で高いハードルである事は確かです。
 でもそれはC自体が難解な言語である事を意味するものではないと思います。
  1. 2008/12/18(木) 18:17:21|
  2. プログラミング論
  3. | トラックバック:1
  4. | コメント:0

続・ホワイトリストとブラックリスト

 早速、大垣さんと徳丸さんから前回のエントリに対するフォローをいただきました。

ホワイトリストとブラックリスト - Proactiveセキュリティ対策 vs. Reactiveセキュリティ対策
今こそXSS対策についてまとめよう

 お二人ともお忙しい中ありがとうございます。
 私の感じていた疑問については徳丸さんが冒頭ですっきりと解決して下さいました。
 ワイルドカードや正規表現を使用したブラック(ホワイト)リスト作成については別件で色々と考えている事があるので、それはまた別の機会に。
 それにしても、本当にセキュリティを意識したWebアプリケーションの作成は面倒ですね。
 『個人的に使っているものだから…』という理由で手を抜く事が許されないのがつくづく厄介です。
 どこにもURLをリンクしていなくても、アクセス制御してなければ公開状態のわけで、つまり攻撃対象になってしまう可能性があるのですから。
 まぁ、単にそれだけの用途ならBasic(Digest)認証しておけば十分という話かもしれませんけど。
 ただこれだけあちこちで被害が発生している状況を考えたら、最低限の必須事項としてセキュリティへの配慮はやらなければならない事に含まれていくのは仕方ないと思いますので、せめてそれが簡単にできるようにしたいものです。
 そのためにもプログラミング言語の標準機能(標準モジュール・標準ライブラリ)レベルでもっと楽な方法を提供して欲しいと思うのは贅沢でしょうか。
 そして妄想は膨らんでいく…
  1. 2008/08/26(火) 18:28:33|
  2. セキュアプログラミング
  3. | トラックバック:0
  4. | コメント:0

ホワイトリストとブラックリスト

 最近、自分専用Webアプリケーションをちょこちょこと作っているため、(近いうちにライブラリ的なものを公開できるレベルに達すればいいのですが…)Webアプリケーションセキュリティ問題は他人事ではなくなってしまいました。
 というわけで、時間のある時には多少関連したブログ等をチェックするようになったのですが、こんな議論を見つけました。

プログラミングではホワイトリスティングが基本ではない
プログラミングではホワイトリスティングが基本

 元々はホワイトリスト方式の優位は神話というエントリでホワイトリストはどう作る?を引用(批判)した事が発端の模様です。
 一見真っ向対決しているようなので興味深く読ませていただいたのですが、正直、両者の主張の違いがわかりません。
 どちらもXSSインジェクション系の対策としてはアプリケーションで入力値が正しい形式の範囲内かチェックし、出力時に必要なエスケープ処理を行う、という結論に思えるんですけど…
(その際にどの程度のチェックとエスケープをするか、追加としてWAFをどう活用するかについては多少差異があるようにも思えましたが、WAFは簡易的なものでいいという部分でも一致していますし。)
 ただ、表面的に文章を追っただけでは『何をホワイトリストと呼ぶのか』という部分がだいぶ違う印象を受けるので、それでお互いに誤解してるのかな、とも思いました。
 ちなみに『ホワイトリスト』という言葉の意味としては、私の感覚では徳丸さんの使い方が自然のような気がします。
 セキュリティの素人が専門家同士の対決に横槍を入れるのは大変恐縮なんですが、できれば大目に見ていただいて、私の解釈こそが間違ってないか指摘してもらえたら幸いです。
  1. 2008/08/21(木) 14:48:37|
  2. セキュアプログラミング
  3. | トラックバック:2
  4. | コメント:0

WASForum Conference 2008

 少し前の話になりますがWASForum Conference 2008に初参加。
 以前から高木さんの日記は時々読んでいたりはしたものの、セキュリティについては全くの素人が行って意味があるのか不安はありましたが、とりあえず興味本位という事で飛び込んでみました。
 1日目はCTO, CIO向けという事で企業の中で情報セキュリティをどう考えていくべきかというのがメインテーマだったように思います。
 リスクとコストをどう経営側に伝え、また実務としてはどう全社運用していくのか。
 その手法についてのとっかかりといった印象です。
 また被害の実例としてカカクコムとサウンドハウスの当事者の講演がありました。
 講演者の立場の違いもあると思いますが、その対応というか、態度が対照的なのが興味深いです。
 2日目は開発者向けという事でより技術的な内容に。
 最後のセッションで会場内アンケートをWebアプリケーションを使ってリアルタイムに実施したのは面白かったです。
 これは今後も活用すると非常に興味深い現場の生データが取れるような気がしますし、他にも色々と応用できそうに思います。
 また、これがどれだけセキュアに作られたものだったのかにも興味がありますね。(フリー入力時に早速エスケープ文字を試していた人がいたのはさすがという感じでした。)
 些細な事かもしれないですが気になった点としては、前日も参加してないとわからないネタがいくつかあった事。
 個人的には楽しめたのですが、対象を異にする二日間である以上、両日の参加者は別という認識でいて欲しかったです。
 実際、1日目は50人規模に対して2日目は200人以上集まっているわけで、明らかに大多数が知らない内容なのですから。
 でもまぁ、それだけサウンドハウスの中島社長の話はインパクトがあったとも言えますが…
 非常に勉強になったのでまた機会があれば参加してみたいですね。

 最後に、セキュリティ素人の私見なので反論があるのは承知の上で敢えて叫んでみようと思います。
『SQLインジェクション対策って正しく実装してたら本当に安全なんですか?』
 WASF関係者の方はなんだか技術さえしっかりしてれば問題はないというような論調に思えて、どうにも違和感を感じています。
 もちろんダメな実装は論外なのですが、私はごく一般的な三流以下の開発者として、完璧な実装などありえないと思っているのです。
 たとえば、あるバインド機構のバグでそれを利用したシステムでは特定の文字列を投入した場合にはうまくエスケープされないという事が後から判明したとしたら…
 それはちゃんと作ってなかったという事になってしまうのでしょうか?
 もしかすると、そういう部分も含めて最新の動向をきちんと追いかけてメンテナンスしていかないとセキュリティは保てないと言いたいのかもしれません。
 だとしたらその想いは届いていないように思います。
 やはり多くの人にとって一度動き始めたアプリケーションは『完成』したものであるという認識になってしまうからです。

参考
コンファレンス2008 - Web Application Security Forum - WASForum
高木浩光@自宅の日記 - WASForum Conference 2008、7月4日と5日に開催
「WASForum Conference 2008: サウンドハウス「Web攻撃の脅威に立ち向かうには」」@水無月ばけらのえび日記
WASForumとは - Web Application Security Forum - WASForum
  1. 2008/07/10(木) 14:01:52|
  2. セキュアプログラミング
  3. | トラックバック:0
  4. | コメント:0

言語を習得する順序

 よく、『Cから学ぶべき』とか、『いまさらCやC++なんか必要ない。Javaだけでいい』なんて議論を耳にしますが、実際はどうなのでしょうか?
 私自身、LISP系の言語を習得しているとは言えない状態なので、あまりたいそうな事を言うと各方面からツッコミが殺到しそうですが、敢えて断言してしまいます。
 Cが基本だと。
 というか、プログラミングができると言えるなら、Cがわからないはずがない、という方が正しいでしょうか。
 条件分岐、サブルーチン(関数)、演算子、配列、構造体…
 手続き型と呼ばれる系列の言語が提供する基本機能が全てCには実装されていますし、逆にそれ以外のものはほとんど含まれていません。
 正直、Cがわかってしまえば、その他の言語はリファレンスとサンプルを2~3日いじっていればだいたい使えるようになります。
 もちろん他の言語から始めていても、基本的な概念がちゃんと理解できていれば状況は変わりません。
 Cも2~3日で使えるようになるでしょう。
 ただ、歴史的にも多くの言語がCをベースに改良されたものであり、Cを中心にした放射状の進化図を書けるとも言える関係です。
 そうなると進化の過程で反対側に位置する言語を理解する上で、Cを間に挟んで考えればとてもスムーズな事は自明でしょう。
 一生、一つの言語しか使わないのであれば、何を習得してもいいと思います。
 でもそうはいかないのが普通だったりします。
 そんな時にCを知っている事が少しだけ有利に働くと、私は思います。
 Cは色々な意味でプリミティブなので、追加要素の積み上げがしやすいですから。
  1. 2008/02/07(木) 02:17:36|
  2. プログラミング論
  3. | トラックバック:1
  4. | コメント:0

全てはシンプルに

 私自身、煮詰まってきたりすると非常に忘れがちで後悔する事が多いのですが、やはりプログラムはシンプルであるべきです。
 シンプルとは短くてわかりやすいという事。
 短ければバグが潜む余地が少なくなり、わかりやすければ間違いを見つけやすくなります。
 短くするためには実現したい機能をよく理解し、必要な最小限の手順を探さなければなりません。
 これには多くの経験と知識が必須で、努力でどうにかなる部分も十分にありますが、最後はセンスが決め手になる場合も多いです。
 わかりやすくするためには、先人の様々な教訓から学んだ事を実践するのがいいでしょう。
 特定のルールに基づいてソースコードを記述する事はわかりやすさの基本です。
 しかし、わかりやすくする事は簡単ではありません。
 人によって何がわかりやすいかは異なるからです。
 コメント一つでも行頭にある方がわかりやすいという人と、行末にある方がわかりやすいという人がいます。
 なのでわかりやすさに絶対はないのですが、一つだけ確実に言える事があります。
 それは、『途中でルールを変えない』という事。
 それさえ守られていれば、余程理不尽なルールでない限り問題にはならないのですが、これから何回かに分けて私なりのわかりやすいプログラミングというものを提示してみたいと思います。
  1. 2007/11/14(水) 13:10:43|
  2. プログラミング論
  3. | トラックバック:0
  4. | コメント:0

はじめに

 こんにちは。
 沢 出水(さわ いずみ)です。
 あれこれ色々頭に描くだけでなかなか実行に移せない自分を追い詰めるためにこのブログを始めます。
 そんな私ですからたいしたプログラマーではありません。
 でもとりあえず風呂敷は広げておこうかと思います。
 まずは誰でも簡単に使える小さなライブラリ類を作成しながら、私なりのプログラミングに対する考え方とかを書いていきます。
 ある程度形になってきたら、ゲームに特化したプラットフォーム非依存のシステムを構築していきたいですね。
 Frameworkに近い一種のVirtual Machineでしょうか。
 シームレスな3DのアクションRPGを作れるものが目標です。
 もちろんSTGも視野に入れてます。
 そして最後はマルチユーザ、マルチタスク、マルチマシンのOS作成。
 さぁ、だいぶ妄想じみてきました。
 どこまで行けるか全くわかりませんし、きっと同じような事は他にもやっている人がたくさんいるとは思いますが、私なりのこだわりを形にできれば…
 どうぞよろしくお願いします。
  1. 2007/08/18(土) 00:14:13|
  2. ごあいさつ
  3. | トラックバック:0
  4. | コメント:0

FC2カウンター

プロフィール

Author:SAWA, Izumi

最近の記事

カテゴリー

ユーザータグ

Webアプリケーション プログラミング言語 セキュリティ WASForum XSS インジェクション amazon スクリプト言語 関数型言語 アフィリエイト 

月別アーカイブ

最近のコメント

最近のトラックバック

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。