Twitter用クライアント TLBar (表示専用、.NET Framework 4使用、oAuth認証)

概要

TLBarはTwitterの投稿を電光掲示板の流れる文字のように表示するクライアントです。
現在、暫定版を公開中です。

ダウンロード

動作環境

.NET Framework 4以降が導入されている必要があります。
下記サイトなどからインストールして下さい。
Download Microsoft .NET Framework 4 (Web インストーラー) from Official Microsoft Download Center

インストール方法

インストーラは付属しておりません。
ダウンロードした圧縮ファイルを適当なフォルダに展開してご利用ください。

使い方

最初にTLBarを起動すると、認証画面が開きます。ここで認証を行わないと使用できません。
認証されると画面の下の方に半透明の黒いウィンドウが表示されます。
ここに最新20件のタイムラインがスクロールされながら表示されます。

終了する場合は、ウィンドウ上で右クリック→終了(Q)を選ぶと、終了します。
認証に失敗していた場合は、ウィンドウ上で右クリック→認証設定(S)を選ぶと、もう一度認証画面が開くので、認証を行って下さい。

認証方法

認証画面のURLをクリック

許可するをクリック

暗証番号が表示されるので、認証画面に入力して、OKをクリック

更新履歴

Ver.0.0.0.1(2010/10/16)
  • 暫定版公開

コーディング規約(C#用メモ)

仕事でプログラムをする場合や、オープンソースなどのコミュニティに参加する場合は、そこで提示されているコーディング規約なり命名規則を厳守すれば良いのですが、個人で作るプログラムの場合は何でも自由なので、この辺りを曖昧にしておくと、後で理解しづらいソースになることがあります。
そこで、自分用にコーディング規約をまとめようとしたのですが、まとめられたものがあったので、リンクを張っておきます。*1

C#コーディング標準

*1:他にもコーディング規約をまとめたものがありますが、どれを採用するかは個人の好みになると思います

一定周期のループを安定させる方法(C#用メモ)

一定周期の処理を行いたいとき、タイマーを使えば良いのですが、より精度の高い周期で処理を行いたい場合は、次のような方法が考えられます。
これはゲームなどで、1フレーム(1回の画面の更新)の長さを1/60秒に保つために、良く用いられる方法です。

// 次に処理するフレームの時刻(初回は即処理するので初期値は現在時刻をセット)
double nextFrame = (double)System.Environment.TickCount;
// フレームを処理する周期(1/60秒)
float period = 1000f / 60f;

// メインループ
while ( true )
{
    // 現在の時刻を取得
    double tickCount = (double)System.Environment.TickCount;

    // 次に処理するフレームの時刻まで間がある場合は、処理をスキップする
    if (tickCount < nextFrame)
    {
        // 1ms以上の間があるか?
        if (nextFrame - tickCount > 1)
        {
            // Sleepする
            System.Threading.Thread.Sleep( (int)(nextFrame - tickCount) );
        }
        // Windowsメッセージを処理させる
        Application.DoEvents();
        // 残りの処理をスキップする
        continue;
    }

    // 
    // ここで描画以外の計算処理を行う。
    // 

    // この時点で現在の時刻が次のフレームの時刻より後ならば、
    // このフレームを描画している暇はないので、描画しないでスキップする
    if ((double)System.Environment.TickCount >= nextFrame + period)
    {
        nextFrame += period;
        continue;
    }

    // 
    // ここで描画処理を行う。
    // 

    // 次のフレームの時刻を計算する
    nextFrame += period;
}

構造体のリストの値を変更する方法(C#用メモ)

構造体のリストの値を変更するとき、forループの中で構造体のメンバを直接さわることが出来ないので、次のような方法で変更します。

// 構造体の定義
struct SampleData
{
    public bool Status;
}

// 構造体のリストの定義
private List<SampleData> sampleData = new List<SampleData>();

// forループで値を変更する
for (int i = 0; i < sampleData.Count(); i++)
{
    // 本当は下記のようにしたいが、これだとエラーになる
    //sampleData[i].Status = true;

    // 下記のようにすることで、変更できる
    SampleData tmpData = sampleData[i];
    tmpData.Status = true;
    sampleData[i] = tmpData;
}

フォームのスタイル(C#用メモ)

(自分用メモ)

C#で良く使いそうなフォームのスタイル変更方法のメモ。

// フォームの不透明度を変更する
this.Opacity = 0.75; // 75%

// 常に手前に表示
this.TopMost = true;

// 最大化ボタン非表示
this.MaximizeBox = false;

// 最小化ボタン非表示
this.MinimizeBox = false;

// コントロールボックス(タイトルバー、最小化、最大化ボタンなど)非表示
this.ControlBox = false;

// タスクバーにフォームを表示しない
this.ShowInTaskbar = false;

// フォームの境界線を無しにする
this.FormBorderStyle = FormBorderStyle.None;

// フォームの背景色を変更する
this.BackColor = System.Drawing.Color.Black; // 黒

// フォームの横幅を変更する
this.Width = 48;

// フォームの縦幅を変更する
this.Height = 48;

// フォームの位置を変更する
this.Left = 100;
this.Top = 100;

はてなDiaryはじめました。

とりあえずは、作ったアプリの公開場所にするつもりです。
ついでに、プログラム(C++C#)のTipsとかを、自分用のメモ程度に公開する予定です。

ほとんど更新は無いと思いますが、よろしくお願いします。