タグ

ブックマーク / www.02.246.ne.jp/~torutk (7)

  • エンジニアの技能レベル~ドレイファスモデル~

    エンジニアの技能レベル ~ドレイファスモデル~ 書籍「リファクタリング・ウェットウェア」から 1970年代のドレイファス兄弟による人間の技能の習得・極める過程についての研究結果 研究対象は、民間航空会社のパイロット、チェスの名人などのある分野の技術にきわめて高いレベルの習熟度を示した人々 技能ごとに評価するので、個人の生来持つ特性・才能ではない 5段階でモデル化

    yuiseki
    yuiseki 2012/11/26
  • シリアル通信(POSIX編)

    [ C++で開発 ] シリアル通信プログラム(POSIX編) UNIX系OSでは、POSIX規格によりおおよそシリアル通信のシステムコール等が標準化されています。(POSIX.1-2001らしい) シリアル通信の設定に関するメモ シリアル通信(RS-232C)での設定について、最低限前提となる知識を整理します。 調歩同期式(無手順) スタートビッド、ストップビット キャラクタ(1文字)の前後に、文字を識別できるように必ず付けるのがスタートビットおよびストップビットです。スタートビットは1ビットですが、ストップビットは1ビット・1.5ビット・2ビットがあります。 パリティビット EVEN(偶数)、ODD(奇数)、なし、の3つから選択します。EVENまたはODDのときは、データビットとパリティビットの中でビットが1となる数をEVENまたはODDになるよう調整します。 ビットレート RTS Re

  • UDP通信

    UDP通信のプログラミング 概要 UDPとは UDPはUser Datagram Protocolの頭字語です。ソケットという用語を使っていますが、コネクションレスのプロトコルです。TCPに比べてオーバーヘッドが少なく効率のよい通信ですが、送信できるサイズに制約があり、トラフィック状況に合わせた送信調整や順序化、再送といった制御がありません。 JavaでUDPを扱うAPI Javaでは、UDP特有のAPIとしてjava.netパッケージで提供されるもの、java.nioパッケージで提供されるものと大きく2種類があります。 基は、Javaの当初のバージョンから提供されているjava.netパッケージです。世の中の大半のソケット・プログラミングの解説もこちらのパッケージについてがほとんどです。 java.netパッケージでは、以下のクラスが提供されています。 java.net.Datagra

  • Timerを使う。周期的に実行したり、一定時間後に実行したり

    javax.swing.Timer Swingのクラスライブラリの1つとして提供されている。一定時間後にイベントを実行することができる。これは、Swingのイベントスレッドで実行されるので、描画に関わる処理を記述していてもSwingスレッドと干渉しないで済むのがメリット。実行はSwingのイベントキューに載せられるため、正確性には欠ける。 java.util.Timer 汎用のタイマとして提供されている。処理を周期的に実行したり、一定時間経過後に実行したり、指定した日時に実行したりと多彩な機能を持つ。Swingとは無関係なので、ヘッドレス(GUIが無い環境)でも使用できる。Timer専用スレッドで管理され、正確性もjavax.swing.Timerよりは高い。しかし、java.util.Timerの実装上欠点がいくつかある。まず、スケジューリングにシステムクロックを使用するので、システムク

    yuiseki
    yuiseki 2010/07/02
    まず、Timerのcancelメソッドを起動すると、2度とそのTimerオブジェクトは使用できません。新たにTimerオブジェクトを生成しなくてはなりません。しかも、Timerをcancelした時にTimerに設定されていたTimerTaskオブジェクトも再度利
  • Boostコマンドライン引数

    [ C++で開発 ] [ Boostを使うメモ ] コマンドライン引数の解析 コマンドラインから実行するプログラムでは、コマンドライン引数に指定した内容を取り込む処理を記述することが多いです。引数の数が数個と少ない場合は、大抵その場限りのコーディングでお茶を濁しますが、ちょっと複雑なコマンドラインとなると、やはりライブラリの出番となります。 昔はCの非標準ライブラリ getopt の出番だったのですが、最近ではBoostに含まれる program_options を使用します。 boost::program_options 簡単なサンプルを示します。 コマンドラインで、以下3つのオプションを指定可能なプログラム mcast_send があったとします。 アドレスを表す文字列。プログラム中で取り込む型はstd::string。指定は必須。 ポート番号を表す文字列。プログラム中で取り込む型はi

    yuiseki
    yuiseki 2009/07/30
  • Mercurialでバージョン管理

    [ Topページへ戻る ] Mercurialでバージョン管理 概要 「分散リポジトリ方式」なる言葉によって興味をひかれたバージョン管理ツールがこのMercurialです。 今までのバージョン管理ツールへの不満 オフラインでもバージョン管理したい いままで、職場や自宅において、CVSやSubversionを使うときは、1台のマシン上にリポジトリを置き、そのリポジトリに対してチェックアウトやコミットといった変更の払い出し・登録を行っています。 したがって、リポジトリのあるマシンと作業マシンがネットワークで接続できないときは、チェックアウトした作業ディレクトリの変更をコミットできませんし、過去の変更履歴も調べられません。ネットワークに接続できない期間が短時間ならいいのですが、長期間になるとこれはバージョン管理ができないに等しい状態です。 気軽なリポジトリ作成ができたらいい ちょっと作ったプログ

    yuiseki
    yuiseki 2009/06/08
  • C++ Coding Standards 101のサマリのサマリの日本語訳

    [ C++で開発 ] 書籍「C++ Coding Standards: 101 Rules, Guidelines, And Best Practices」 のサマリのサマリの日語訳 Herb Sutter、Andrei Alexandrescu両氏によるコーディング標準のルール名を列挙します。 ルール名 組織およびポリシー関連 0. ささいなことを気にかけるな(標準化すべきではないものを知れ) 1. コンパイラの警告を最大レベルにして、すべての警告を取り除け 2. ビルドを自動化せよ 3. バージョン管理システムを使え 4. コードレビュー投資せよ 設計様式 5. ひとつの要素にはひとつの責務 6. 正確性、簡潔性、明りょう性がまず最初 7. いつどのようにコードにスケーラビリティを持たせるかを知れ 8. 時期尚早に最適化しない 9. 最初から悲観的にならない 10. 大域データ、

    yuiseki
    yuiseki 2009/01/20
  • 1