fc2ブログ

システム開発における情報セキュリティ9

 この記事は、システム開発における情報セキュリティ8の続きです。前回は、情報資産のアクセス方法とセキュリティについて解説しました。今回は認証とセキュリティについて解説します。
 アクセス方法を定めた後は、認証について考える必要があります。情報資産は適切な人物以外に、不適切な操作させてはなりません。例えば、不適切な人物に顧客情報を見せるのは危険ですし、不適切な人物が重要な情報資源を改善したら大変な事になります。そうした事から、情報資源を操作する人物を認証するシステムをよく考えなくてはならないのです。
 システムをクラッキングする方法は星の数ほどありますが、その中で大きな比重を占めているのが、権限がある人物になります行為です。情報システムに侵入する事に成功したクラッカーやウイルスは、権限を昇格するのが基本です。権限の昇格とは、システムの不備をついて、自信が持つ権限を強くする行為の事を指しています。また、ソーシャルエンジニアリングの技法を使い、より強い権限を取得する行為もあり得ます。
 こうしたクラッキングの脅威に対処するためには、認証システムを情報技術と組織体制の両方の観点から考えます。情報技術側の対処としては、パスワードが基本ですが、アイリスや指紋などを使った生体認証もあります。組織的対策は、電話の主や訪問者をよく確かめる手順の決定と訓練をするのが基本です。
 この様に色々な対策方法があり、基本的な物でもそれなりの効果があるのですが、基本とはいえ実施は大変です。具体的には、パスワードの管理方法をどうするのか、パスワードを変更はどうするのか、掃除婦やアルバイトの人まで訓練するにはどうすればいいのか・・・など色々な課題が生じます。
 しかしながら、現代は情報資源が重視される時代ですので、認証方法を考えなくてはなりません。認証方法をおろそかにすると、他のセキュリティ対策を実施しても無駄になってしまいます。大変ですが避けては通れないのです。
スポンサーサイト



テーマ : ソフトウェア開発
ジャンル : コンピュータ

初心者のためのC#プログラミング本格入門45 - プロパティかメソッドかそれが問題だ

 この記事は、初心者のためのC#プログラミング本格入門44の続きです。前回は、メソッドを定義するべきクラスの指針について解説しました。今回は、プロパティとメソッドの使い分けについて解説します。
 「プロパティとメソッドどちらを使えばいいのか?」という質問をよく聞きます。今回はその疑問について書きます。その疑問について考えるにあたって、プロパティとメソッドについておさらいする必要があります。
 メソッドとは、オブジェクトの振る舞いを表すものです。一方プロパティは、オブジェクトの状態を示す情報です。恐らく初心者の方は、現時点でははっきりと分からないと思いますが、気にする必要はありません。イメージだけ掴めばOKです。
 概念を完璧に理解してから前に進もうとしても、C#プログラミングは際限なく深く、実地訓練をしないと習得できません。何故ならば、プログラミングは実学であり、教科書を暗記するのと同じ要領では知識を活かせず、その結果結局C#プログラミングの技法を習得できないからです。「手を動かしつつ学ぶ」それがC#プログラミング上達の近道です。
 文章だけでは分かり難いので教材に使っているサンプルを使って解説を進めます。プロパティを使えば、プログラムの量が減ります。

//プロパティ使用前
if ( analyzer.Success == false | analyzer.Count <= 1 )
{
    string error = "計算式が間違っています。";
    end = "Error";
    System.Console.WriteLine( error );
    continue;
}

//プロパティ使用後
if ( analyzer.Success == false )
{
    string error = "計算式が間違っています。";
    end = "Error";
    System.Console.WriteLine( error );
    continue;
}

プロパティ使用前のサンプルプログラムは、変数を使用した時の名残です。Successプロパティは、AnalyzeExpressionメソッド内で「this.success = this.count != 0 & signInfo.Item1 == true;」と算出されているので改めて個数(Count)を調べる必要はありません。この例から分かるように、プロパティを使用するとプログラムが分かりやすくなります。
 では、同様の考えでCalculationメソッドを見た場合、代わりにResultプロパティを定義すればいいと考える人もいる事でしょう。そうすれば・・・

//メソッドの場合は読みやすくするため変数が必要
int resultValue = analyzer.Calculation();
ShowResult( inputValue, resultValue );

//こっちの方が読みやすい
ShowResult( inputValue, analyzer.Result );

と素直に記述できます。一応メソッドでも一行で記述(ShowResult( inputValue, analyzer.Calculation() );)できますが、どちらかといえばプロパティの方が自然に見えるでしょう。ですが、この事例の場合プロパティよりもメソッドを使う方が一般的です。何故ならば、結果は計算という振る舞いの結果生まれるものだからです。
 感覚論だと受け取る人がいるかもしれませんが、これには理論的な根拠があります。計算には各種の情報が必要になります。その情報は解析をするたびに変化します。従って、結果を取得するには毎回計算処理をしなくてはなりません。もし、以前計算した結果を返すようにすれば、それはバグを生む元凶になりえます。
 毎回計算するという事は、そのプロパティにアクセスした際に予想以上に時間がかかり、そのオブジェクトを使用するプログラマを戸惑わせてしまいます。ですから、プロパティは単純なものにするのが原則です。
 他にも原則がありますが、ひとまず今回解説した事を覚えておけば、メソッドとプロパティで悩む時間が減るでしょう。C#プログラミングを習得するという事は、ただ文法を覚えるのではなく、こういった使い分けする力を身につける事も含まれています。

テーマ : プログラミング
ジャンル : コンピュータ

実践的オブジェクト指向分析入門39

 この記事は、実践的オブジェクト指向分析入門38の続きです。前回から引き続き、機能モデルの構築で行う作業について具体的に書きます。
 オブジェクト間の制約が識別したあとは、機能モデルの構築の最終段階である最適化基準の指定を行います。最適化基準の指定では、システムの機能要件の基準値を決定します。システムには、1時間で処理できるトランザクションの数、セキュリティの強固さ、レスポンスの早さなど色々な機能要件があります。従って、これらの機能要件をはっきりさせるために、基準値を定める事は非常に重要です。
 しかしながら、機能要件の基準値を決定は困難です。そこで、機能モデルの構築作業で現状のシステムを分析し、新システムのために具体的な値を測定します。そして、測定結果を元に、ユーザーが求める基準値を割り出します。ただし、数値化できない人間の感覚的なものは依然として残りますし、システムの後工程で変更される可能性が高いのを忘れてはなりません。
 何でも数値化する事を目標とするのではなく、柔軟な態度でユーザーの要望を引き出し、開発作業の基準を割り出すために最適化基準の指定を行います。

テーマ : ソフトウェア開発
ジャンル : コンピュータ

初心者のためのC#プログラミング本格入門44 - メソッドを保有するクラスを決定する方法

 この記事は、初心者のためのC#プログラミング本格入門43の続きです。前回は、プロパティに値を追加する方法について解説しました。今回は、メソッドを定義するべきクラスの指針について解説します。
 今回までの記事を読めば、メソッドの有用性が分かると思います。しかしながら初心者の人は、どのメソッドをどのクラスで定義するべきなのかが分からず困ると思います。何故ならば、オブジェクト指向プログラミングが分からない人に話しを聞いてみると、この疑問でつまずいているからです。そこで今回は、どのメソッドをどのクラスに定義するべきなのかについて一つの指針を書く事にしました。
 結論から書くと、メソッドとクラスの関係はオブジェクト指向設計で決定します。しかし、初心者の方はオブジェクト指向設計ができないのが普通です。そこで、簡単な方法を書きます。
 最初はひとまず静的メソッドを定義します。次に、細かい単位の静的メソッドをまとめた静的メソッドを定義します。文章だと難しく感じるかもしれませんが、サンプルプログラムのAnalyzeExpressionメソッドを思い返せば簡単な事だとわかると思います。
 大きな単位のメソッドを定義した後は、新しいクラスを定義します。そして、そのメソッドを新しいクラスへ移動します。そうすると、その移動するメソッドが必要とする変数と返す値が判明しますので、それらの変数をメソッドと同じクラスのフィールドとして定義します。
 ここまでの手順で、細かい単位の処理をするメソッド数個、細かい処理を纏めるメソッド1個、フィールド数を持つクラスが出来上がります。後は、そのクラスのプロパティを参照しているメソッドを移動します。サンプルプログラムではCalculationメソッドがこれに該当します。

class Analyzer
{
    //※Calculation以外は省略しています
    public int Calculation()
    {
        int result = 0;
        switch ( this.sign )
        {
            case '+':
                for ( int i = 0; i < this.count; i++ )
                {
                    result += this.values[ i ];
                }
                break;
            case '-':
                result = this.values[ 0 ];
                for ( int i = 1; i < this.count; i++ )
                {
                    result -= this.values[ i ];
                }
                break;
            case '*':
                result = 1;
                for ( int i = 0; i < this.count; i++ )
                {
                    result *= this.values[ i ];
                }
                break;
            case '/':
                result = this.values[ 0 ];
                for ( int i = 1; i < this.count; i++ )
                {
                    int value = this.values[ i ];
                    if ( value == 0 )
                    {
                        return 0;
                    }
                    result /= value;
                }
                break;
            case '%':
                result = this.values[ 0 ];
                for ( int i = 1; i < this.count; i++ )
                {
                    result %= this.values[ i ];
                }
                break;
        }
        return result;
    }
}

この様にすれば、プログラムが簡潔で読みやすくなります。

static void Main()
{
    string end = "";
    do
    {
        //計算式を入力
        string message = "計算式を入力して下さい";
        string inputValue = InputValue( message );

        //計算式を解析して値と符号を得る
        Analyzer analyzer = new Analyzer();
        analyzer.AnalyzeExpression( inputValue );
        if ( analyzer.Success == false | analyzer.Count <= 1 )
        {
            string error = "計算式が間違っています。";
            end = "Error";
            System.Console.WriteLine( error );
            continue;
        }

        //計算して結果を表示
        int resultValue = analyzer.Calculation();
        ShowResult( inputValue, resultValue );
        System.Console.WriteLine( "" );
        end = GetEnd();
    } while ( end != "" );
}

以前のサンプルプログラム

int resultValue = Calculation( 
    analyzer.Values, analyzer.Sign, analyzer.Count );

と比べると簡潔で読みやすくなっています。
 以上の様に、フィールドとメソッドの関係からクラスを導くのがオブジェクト指向プログラミングの基本です。また、オブジェクト指向プログラミングは人間のためのものなので、読みやすさと理解しやすさを基準に置きます。この2つの原則を覚えておけば、難しいオブジェクト指向プログラミングが分かりやすくなります。

テーマ : プログラミング
ジャンル : コンピュータ

書籍をつつく147-ゲームプログラマのためのC++。良書のにおいがする本。

美味しそうな本を発見したピヨ♪



監修者からのコメントの「C++に関する基本的な知識の上に立脚する本書は最初に継承、多態性、参照、キャストなど言語的基礎をもう一度メモリレベルの内部実装まで掘り下げて解説します。」に非常に引きつけられたピヨ。この部分だけでも買いだと思う。

テーマ : プログラミング
ジャンル : コンピュータ

初心者のためのC#プログラミング本格入門43 - プロパティに値を追加できるようにしよう

 この記事は、初心者のためのC#プログラミング本格入門42の続きです。前回は、「プロパティ」、「メソッド」、「コンストラクタ」を組み合わせて使う方法を解説しました。今回は、プロパティに値を追加する方法について解説します。
 41回目にて触れましたが、現在作っているAnalyzerクラスのvaluesフィールドに値を追加できません。これでは不便なので、Analyzerクラスにプログラムを追加して、valuesフィールドに値を追加できるようにします。
 「フィールドに値を追加する」と言っても新しい文法は必要ありません。メソッドを新しく追加するだけです。値を追加するAddValuesメソッドを定義します。

public void AnalyzeExpression( string inputValue )
{
    //数値を取り出す
    string tmp = inputValue;
    AddValues( tmp );

    //符号を取り出す
    System.Tuple<bool, char, string> signInfo = GetSign( tmp );
    this.sign = signInfo.Item2;

    //処理が成功しているか否かを記録
    this.success = this.count != 0 & signInfo.Item1 == true;
}

public void AddValues( string inputValues )
{
    bool loopFlag = true;
    string tmp = inputValues;
    do
    {
        System.Tuple<bool, int, string> value = TryValue( tmp );
        loopFlag = value.Item1;
        if ( loopFlag == true )
        {
            ++this.count;
            int index = this.count - 1;
            this.values[ index ] = value.Item2;
            tmp = value.Item3;
        }
    } while ( loopFlag == true );
}

AddValuesメソッドは簡単です。AnalyzeExpressionメソッドから一部のコードを取り出して作りました。このクラスの使い方も簡単です。

class Program
{
    static void Main()
    {
        Analyzer obj = new Analyzer();
        obj.AnalyzeExpression("+ 1 2 3");
        obj.AddValues( " 4 5 6 " );
        for ( int i = 0; i < obj.Count; i++ )
        {
            System.Console.Write( obj.Values[ i ] + " " );
        }
        System.Console.WriteLine();
    }
}

お手軽にvaluesフィールドに値を追加できる事が分かると思います。
 この様な事が可能なのは、オブジェクト指向プログラミングだからです。オブジェクト指向プログラミングでなければインスタンスが作れず、各種変数を注意して操作しなくてはなりません。クラスが各種変数をフィールドとして持っているので、細かいプログラムが減るのです。
 もちろん、オブジェクト指向プログラミングの恩恵は、これだけにはとどまりません。続く...

テーマ : プログラミング
ジャンル : コンピュータ

初心者のためのC#プログラミング本格入門42 - オブジェクト指向プログラミングをしよう

 この記事は、初心者のためのC#プログラミング本格入門41の続きです。前回は、コンストラクタを解説しました。今回は今まで解説してきた、「プロパティ」、「メソッド」、「コンストラクタ」を組み合わせて使う方法を解説します。
 数回にわたって、「プロパティ」、「メソッド」、「コンストラクタ」の三つの文法について学びました。しかし、個々に学んでも身につきません。そこで、この3つの文法の使用し、今まで作成してきた「自由に計算式を指定して計算するプログラム」を改良します。
 先ずは、オブジェクト指向プログラミングをする前のMainメソッドを見てみましょう。

static void Main()
{
    string end = "";
    do
    {
        //計算式を入力
        string message = "計算式を入力して下さい";
        string inputValue = InputValue( message );

        //計算式を解析して値と符号を得る
        System.Tuple<bool, char, int[], int>
            result = AnalyzeExpression( inputValue );
        int count = result.Item4;
        if ( result.Item1 == false | count <= 1 )
        {
            string error = "計算式が間違っています。";
            end = "Error";
            System.Console.WriteLine( error );
            continue;
        }
        char sign = result.Item2;
        int[] values = result.Item3;

        //計算して結果を表示
        int resultValue = Calculation( values, sign, count );
        ShowResult( inputValue, resultValue );
        System.Console.WriteLine( "" );
        end = GetEnd();
    } while ( end != "" );
}

このサンプルプログラムは、Item4などといった作成者にしかわからないものが使用されていて非常に分かり辛いです。この手のプログラムは、作成者すらも時間がたてば、一目で理解できなくなってしまいます。
 オブジェクト指向プログラミングをすると、理解しやすいプログラムになります。

static void Main()
{
    string end = "";
    do
    {
        //計算式を入力
        string message = "計算式を入力して下さい";
        string inputValue = InputValue( message );

        //計算式を解析して値と符号を得る
        Analyzer analyzer = new Analyzer();
        analyzer.AnalyzeExpression( inputValue );
        int count = analyzer.Count;
        if ( analyzer.Success == false | count <= 1 )
        {
            string error = "計算式が間違っています。";
            end = "Error";
            System.Console.WriteLine( error );
            continue;
        }
        char sign = analyzer.Sign;
        int[] values = analyzer.Values;

        //計算して結果を表示
        int resultValue = Calculation( values, sign, count );
        ShowResult( inputValue, resultValue );
        System.Console.WriteLine( "" );
        end = GetEnd();
    } while ( end != "" );
}

このプログラムは、Analyzerクラスに各種プロパティを定義し、Item4といったプロパティを置き変えただけです。これだけでも随分と読みやすくなります。さらに、読みやすくするために用意した変数が不要になり、より簡潔に記述できます。

static void Main()
{
    string end = "";
    do
    {
        //計算式を入力
        string message = "計算式を入力して下さい";
        string inputValue = InputValue( message );

        //計算式を解析して値と符号を得る
        Analyzer analyzer = new Analyzer();
        analyzer.AnalyzeExpression( inputValue );
        if ( analyzer.Success == false | analyzer.Count <= 1 )
        {
            string error = "計算式が間違っています。";
            end = "Error";
            System.Console.WriteLine( error );
            continue;
        }

        //計算して結果を表示
        int resultValue = Calculation( 
            analyzer.Values, analyzer.Sign, analyzer.Count );
        ShowResult( inputValue, resultValue );
        System.Console.WriteLine( "" );
        end = GetEnd();
    } while ( end != "" );
}

以上の様に、オブジェクト指向プログラミングを行うと、人間が読みやすいプログラムを記述できます。
 もちろん、オブジェクト指向プログラミングの効用はこれだけではありません。さらに便利な構文をどんどん紹介していきます。お楽しみに♪
 

テーマ : プログラミング
ジャンル : コンピュータ

初心者のためのC#プログラミング本格入門41 - コンストラクタでフィールドの値を初期化しよう

 この記事は、初心者のためのC#プログラミング本格入門40の続きです。前回は、プロパティについて解説しました。今回は、コンストラクタについて解説します。
 突然ですが、今まで作成してきたAnalyzerクラスのAnalyzeExpressionメソッドには問題があります。それは、メソッドを実行する度にフィールドの値が初期化されてしまう問題です。メソッドを実行するたびにフィールドの値が初期化されてしまうと、新しい値が追加できるように出来ません。今のところ、式が追加できるプログラムを想定していませんが、値が追加できると大変便利です。そこで、AnalyzeExpressionメソッドに値が追加できるよう徐々に改良します。
 メソッドを実行する度にフィールドの値が初期化されてしまう問題は、インスタンス生成時にフィールドの値を初期化するようにすれば解決できます。それを実現するには、C#のコンストラクタという文法を使用します。
 コンストラクタの書き方は簡単です。早速、サンプルプログラムにコンストラクタを追加してみよう。

//戻り値がないクラス名と同じメソッドを用意するだけ
public Analyzer()
{
    this.success = false;
    this.sign = ' ';
    this.values = new int[ 100 ];
    this.count = 0;
}

コンストラクタの文法は非常に簡単です。「戻り値の型を定義せず、型名と同じメソッドを用意する」と覚えれば、直ぐにコンストラクタの文法を覚えられます。コンストラクタの意味は少し難しいので、ひとまず書き方だけ覚えましょう。
 コンストラクタの意味は、他のオブジェクト指向プログラミングに関する文法と同じく、他の文法を理解してはじめて見えてきます。焦らずじっくり学びましょう。

テーマ : プログラミング
ジャンル : コンピュータ

システム開発における情報セキュリティ8

 この記事は、システム開発における情報セキュリティ7の続きです。前回は、情報資産の位置とセキュリティについて解説しました。今回は、情報資産のアクセス方法とセキュリティについて解説します。
 情報資産の位置が決まったら後は、その位置にある情報資産にどうやってアクセスするのかを考えます。位置を考慮しアクセス方法を大別すると、グローバルとローカルに分けられます。さらにローカルを分類すると、個人のPCとローカルエリアネットに分けられます。
 個人のPCなどに保存される情報資産は、一時的なものか個人的なものです。そういった情報資産については、適切な人だけをアクセスする方法と、紛失時の対応について考える必要があります。
 例えば、業務で作成した一時的な情報資産を保存したノート型PCを紛失した場合、そのノート型PCを拾った人がその情報資産を取得する事が可能となってしまいます。また、席を離れた隙に他人がそのPCを使用する可能性もあります。そういった可能性を考え、個人認証システムと情報資産の暗号化を検討します。それに加え、「作業が終わったら一時情報を必ず消す」、「個人情報は保存しない」などの業務規則も必要となります。
 ローカルエリアネットワークに保存されている情報資産は、業務上の機密情報が多いため、個人的な情報よりも慎重にアクセス方法と運用管理方法について考えなくてはなりません。基本的に権限がない人は全て拒否する方針で考えます。また、物理的なセキュリティも考えなくてはなりません。物理的なセキュリティとは、サーバーが置いてある部屋への入室を制限する、業務が停止している間はデータベースサーバーの電源を入れないなどといった事を指します。そういった物理面のセキュリティは忘れやすいので注意しましょう。
 最後にグローバルな情報資源について書きます。グローバルな情報資源は非常に危険だと考えて下さい。クラッキング方法はいくらでもありますので、ローカルな情報資源よりも細かい単位で、アクセス方法とセキュリティについてを考えなくてはなりません。具体的には、使用するプロトコル、業務規則、管理方法、運営方法を細かく分析します。
 TCP/IPはセキュリティ意識が低い時に設計されたものであり、プロトコルそのものに弱点が存在します。そういった根本的な弱点がありますので、プロトコルの仕様を踏まえてセキュリティ対策を考えなくてはならないのです。システムを設計する人は、クラッカーになったつもりで不正にアクセスする手段を考え、その不正アクセス方法を防ぐ方法を検討します。
 しかし、技術だけを考えてセキュリティ対策をしても不十分です。ソーシャルエンジニアリングによるクラッキングが考えられますので、プロトコルといった情報技術だけではなく、情報資源を扱う人間を対象にしたセキュリティも考えなくてはなりません。ですから、業務規則、管理方法、運用方式まで詳細に分析し、クラッカーがどのように不正アクセスするのかを考え、それを元にセキュリティ対策の実施/実現方法を考えます。続く...

テーマ : ソフトウェア開発
ジャンル : コンピュータ

ネタつつき114 - 誤情報を素早く見分ける方法

 情報量増加に伴い、誤情報が大量に出回っています。そこで今回は、誤情報を素早く見分ける方法を書く事にしました。
 誤情報を素早く見分けるには、先ず誤情報とは何かという事を定義する必要があります。この記事では誤情報を、誹謗中傷・嘘・名誉棄損目的のもの・勘違い・情報操作などの「倫理的に問題のある情報および事実ではない情報」だと定義します。これらの情報は、発信者のモラルの欠如・思考能力の欠如・知識不足・の3つの要因から発生します。
 定義と発生要因さえわかれば誤情報を見分けるのは簡単です。「モラルに反する言葉を書いている文章」、「情報源が書いていない文章」、「理由もなく何かを否定している文章」は無視します。誤情報の90%はこれらの文章もしくは言葉なので、それらを無視すれば大丈夫です。
 「理由もなく何かを否定している文章」については説明がいると思いますので書きます。何かを理由もなく否定するという事は、発信者が論理的に考えていない可能性が高く、誤情報である可能性が極めて高いからです。何故ならば、発信者が熟慮していないか、悪意を持って発信しているとみなせるからです。そういった情報は誤り以外のなにものでもありません。
 あとの10%以下の情報については、正しい情報の見分け方をすれば極めて正しい情報を得られます。極めて正しいというところがポイントです。この世の中には永遠に絶対的な正しさを保てる情報は存在しません。情報には必ず、成立する条件と人間の主観が入ります。道徳心と知識を持ち、常に論理的に考える姿勢が大事です。そうすれば、誰かに操られたり、誤情報に惑わされたりする事がなくなります。

テーマ : 情報処理技術
ジャンル : コンピュータ

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター