タグ

ブックマーク / codezine.jp (10)

  • 文字列はNULL終端させる ――C/C++セキュアコーディング入門(3)

    攻撃対象として狙われやすい文字列処理 文字列は、プログラムとユーザ、プログラムとプログラム間のインタフェースとして利用されるのをはじめ、XMLなどテキスト形式で表現された情報を処理する際にも利用されます。データのみならず、プログラムの挙動に直接影響する動作パラメタや設定情報など様々な情報がテキスト形式で表現されるにつれ、文字列を処理する機会が増加すると共に、文字列を処理すること自体の重要性が高まっています。 攻撃者にしてみれば、プログラムの挙動を操作しうる文字列処理の不備を突く機会も多く存在することになるため、文字列操作エラーを作り込まないことが求められます。文字列操作に関するプログラミングエラーはいくつかありますが、今回は基的であるが間違いを犯しやすい文字列のNULL終端エラーについて解説します。 NULL終端エラー 文字列型を持たないC言語において、文字列は文字型の配列で表現されます

    文字列はNULL終端させる ――C/C++セキュアコーディング入門(3)
  • テンプレートから学ぶ 受注する開発者のためのテスト仕様書

    1. はじめに ソフトウェア開発プロジェクトにおいてテストは極めてストレスに満ちています。「テストとは作った成果物に誤りがあるかどうかを見つける作業だ」という質的に不愉快な活動であることに加えて、プロジェクトの終わりにさしかかって時間も逼迫しているのに仕様変更を受けて再テストなどという、体力的にも精神的にもきつい作業であるからです。 稿では、さまざまなストレスを受ける立場の開発者が少しでも楽に「きちんとテストしました」と言うために、テスト仕様書のテンプレートを紹介します。このテンプレートは発注者に報告するための文書だけでなく、さまざまなテスト技法の紹介も含まれていて、いつどういうテストをすればよいのかという手引きにもなっています。 さて、はじめに、ソフトウェア開発プロジェクトと品質・生産性・納期の関係を見てみましょう(図1)。 お客様(発注者)はプロジェクトを起案する際、何を作るかを「

    テンプレートから学ぶ 受注する開発者のためのテスト仕様書
  • 原文をスラスラ読みたい! 「MSDNライブラリによく出る英単語 100選」(1/2):CodeZine

    はじめに MSDNライブラリには、マイクロソフトの技術情報が大量に掲載されていますが、英語版に比べ、日語版の内容は中途半端なのが実状です。 たとえば、スレッドの優先順位を設定する「SetThreadPriority」関数の説明を見ると、英語版には「Windows Server 2008およびWindows Vistaでは、スタートアップやレジストリのRUNから自動実行されたプログラムに対するスレッドの優先順位指定が、システム開始から60秒程度効かない」との注意書きがありますが、日語版にはありません。 また、仮想ディスクの情報を設定する「SetVirtualDiskInformation」関数を検索すると、英語版には説明がありますが、日語版には項目自体がありません。 そこで記事では、MSDNライブラリの英語版がスラスラ読めるように、とはいきませんが、英単語で引っかかることが少なくなる

    原文をスラスラ読みたい! 「MSDNライブラリによく出る英単語 100選」(1/2):CodeZine
  • 要件定義の勘どころ

    はじめに 役に立つシステムを構築するための要件定義書とは、いったいどういうものなのでしょうか。 「何でこの機能が必要なんですか?」「理由は分からないけどXXX機能があるのでこの機能が必要なんです。これがないとつじつまが合わなくなるんです」もしくは「要件定義書にこの機能が載っているので必要なんです」など、要件定義書の役割を理解しないまま、システムの開発に着手していることなどがないでしょうか。 稿では、要件定義書の役割や重視すべき点、要件定義書に盛り込むべき情報について解説します。 何をやるのか、そしてなぜそうするのか 要件定義書はジグソーパズル? システム開発を受託した会社にコンサルテーションしたときのことです。機能とデータがある程度記述された要件定義書を受け取ったその会社では、要件定義書を読み解き、システムの全体像を掴むためにおのおのの機能の関係を整理し、その役割を把握しようとしていまし

    要件定義の勘どころ
  • Object型をツリー構造で管理するTreeElementクラス

    概要図の通り、TreeElementクラスは子要素を管理するコレクションを持っており、これらの関連が集まることでツリー構造を表現しています。 またValueプロパティで値となるObject型を管理し、Nameプロパティで名前を設定することができます。 Nameプロパティを設定しない場合はValueプロパティに設定されているObjectのToStringメソッドで返される文字列を利用します。 TreeElementの種類 Windowsのディレクトリ構造を思い出していただくと分かると思いますが、ツリー構造には子要素を持つ要素と、持たない要素、特定の要素へのショートカットを表すリンクが存在します。 これらを表現するためにTreeElementクラスはKindプロパティでTreeElementKind列挙型を保持しています。 TreeElementKindの各値の概要は次のとおりです。 Comp

    Object型をツリー構造で管理するTreeElementクラス
  • jQuery入門(その1)(1/7):CodeZine

    はじめに 実を言うと、私はずっとJavaScriptを嫌っていました。JavaScriptのコードを書くのが嫌でしたし、いろいろなブラウザに対応するために大量のスクリプトコードを使わなければならないのも嫌でした。そうした点は今でも変わらないのですが、最近になってJavaScriptへの理解が深まったことと、jQueryという小さなJavaScriptクライアントライブラリのおかげで、クライアント中心のAJAXスクリプトコードを書かなければならないときでも恐怖を抱かなくなりました。それどころか、今では喜んで引き受けるほどになっています。クライアントロジックがもっと複雑になり、ブラウザの機能や実装の多様化がさらに進んだとしても、jQueryをはじめとするクライアントライブラリが、JavaScriptHTML DOMを扱う際に必要な正規化を提供してくれます。 私はJavaScriptの初心者と

    jQuery入門(その1)(1/7):CodeZine
  • サロゲートペア入門:CodeZine

    はじめに Windows VistaのJIS2004対応により、WindowsのUnicode環境で使用できる日語漢字の数が増えました。従来、12238字(Windows XP)だったのが13145字(Windows Vista)になり、907字追加されることになりました。これによって、JIS第3水準、JIS第4水準の漢字がすべてサポートされることになったのです(Windows XPまでは一部サポート)。 またWindows XPでも、パッチさえ当てれば、Windows Vistaと同じように追加907字を加えた13145字の漢字が使用できるようになりました。 ところが、この追加された907字の中には「サロゲートペア」という特殊な文字が304字あり、これらは今までのUnicodeの文字とは扱いが少し違います。この点について解説していきたいと思います。 対象読者 Unicode

  • CodeZine:C++ 開発者のためのRubyガイド(XML, 言語比較)

    Scaffoldで生成したアプリケーションは出発点にすぎず、自立した完成品のアプリケーションではありません。このため、開発者がプロジェクトに適した形になるように手を加える必要があります。しかし、毎回似たような修正を行うのであれば、生成した時点でその修正が反映されている方が、より生産性も向上します。そこで稿では、Scaffoldをカスタマイズする方法を紹介します。

  • Firefox拡張機能の基礎を実例で学ぶ:CodeZine

    はじめに Internet Explorer(以下、IE)が主流のブラウザ市場の中で、Firefoxはシェアを伸ばしています。Firefoxがシェアを拡大している理由の一つに、拡張機能の存在があるでしょう。非常に多くの拡張機能が世界中の人々によって開発されています。これらの拡張機能を組み合わせることによって、Firefoxを自分の好みのブラウザにカスタマイズできるのです。 とはいえ、他人が作った拡張機能がぴったり自分に合っているとは限りません。幸いなことにFirefoxの拡張機能は、XML言語の一種でUI部分を規定するXUL、動作を規定するJavaScript、そしていくつかの設定ファイルから構成されています。これらはいずれもごくありふれた開発言語であり、特別な知識は必要ありません。しかも、エディタとFirefoxがあれば高価な開発環境をそろえる必要もありません。他人の作った拡張機能を自分

    nopi
    nopi 2006/11/09
  • JavaScriptの関数とメソッド:CodeZine

    はじめに JavaScriptはオブジェクト指向言語です。しかし利便性のために、C言語などと同じようにグローバルな関数を定義し、構造化的な手法でプログラミングすることも可能です。 この記事では、JavaScriptにおける関数の基的な性質を見ていくと共に、関数の正体、および関数の使用方法について解説していきたいと思います。 なお、この記事はJavaScriptの解説ですが、その内容は、標準仕様のECMAScriptで扱われる範囲に基づいています。従って、同じくECMAScriptを元にしている言語(JScript、ActionScript)でも通じる内容になっています。 対象読者 プログラミングの基的な知識、ならびにオブジェクトやメソッドと言った基礎的な概念については、ここでは解説しません。最低限、オブジェクト指向プログラミングについて理解をしている人を対象としています。

    nopi
    nopi 2005/12/02
    業務用
  • 1