studio Odyssey



スタジオ日誌

日誌的なもの

2010.05.17

ちょこ@ DCC Send

Written by
しゃちょ
Category
C#
TRPG
プログラム

ChocoatDCC.gifCHOCOAは、古いアプリケーションなので、今時代の環境だと、ファイルが送信出来なかったりするわけです。

とはいえ、CHOCOAにはNAT機能が存在するので、ファイヤーウォールに適切にポートマッピングを追加してあげて、設定すれば、送れます。

でもね、コンピューターわかんない人には、わかんない訳ですよ。

なので、ちょこ@の拡張機能の一つとして、UPnPを使ってポートマッピングを追加して、CHOCOAのNAT変換を設定してくれるアプリを作りました。

これで、今までCHOCOAでファイル転送出来なかった人も出来るようになります。メッセンジャーでファイル送れないーって人には、これでも無理なんだけど、今時のファイヤーウォールなら行けるんじゃないかなぁ。

バイナリ(exe)はここ。 Chocoat.DccSupport.zip

詳しい使い方は、

続きを読む <ちょこ@ DCC Send>

2010.05.13

ちょこ@

Written by
しゃちょ
Category
C#
プログラム

 ちょこあはシンプルなインターフェイスで、ずっと使ってるんだけど、FWの内側にいると、IRCのファイル転送がきかないんだよね。当然、ポートマップをしてあげれば、ちょこあはNATに対応しているので、出来るんだけど、そうそう滅多に使わない機能のために穴を開けるのもねって思ってたんだけど、そういえば、UPnPを使えば開けられるじゃんと気づいて、ちょこ@は中身C#なんだし、やりたい放題じゃね?NATもCCAPIで設定出来るみたいだし。

 と思って、ちょこ@に機能追加。テストはうまくいったけど、最後のちょこあ側のIPアドレス登録部分。ドキュメントだと、INTって書いてある...

 これは、なんかそんな計算式があった気がする...それなのか...それだろうなぁ...

2010.05.10

ちょこ@DX3rd

Written by
しゃちょ
Category
C#
TRPG
プログラム
Tags

 ちょこあっとに、DX3rd用のサンプル実装をつけました。

 インターフェイスはまだ変えると思う。これ、ロール作る時に間違う。

 セーブとかないです。作ると思うけど。

 エフェクト系の管理もないし...まぁ、自分が欲しいものだけを追加するので、実際に運用に耐えるかどうかはしらない。「ゆにだいす」は、使っているダイスボットなので、ダイスボットの部分は、必要に応じてコードを変えてください。オデのダイスボットではないです。これはconfigに出すかも。

2010.05.07

DX3のセッションをやって

Written by
しゃちょ
Category
C#
TRPG
プログラム
Tags

 ダブルクロス3rdのセッションをしたんですよ。

 もうね、アレですよ、ダイスの数とかね、数えられない。無理。

 もうね、プログラムでサポートつけないとだめよ。オンラインだからさ、その気になれば何でも出来ちゃうんだけどさ、今までは、やらないようにしていたのね。というのも、そういう面倒くさい事も含めて、TRPGって楽しいじゃん。

 でも、DX3は、アレだ。ダイスの数が数えられない。ただでさえ、計算アレなのに。

 もうね、禁を破りますよ。楽しくプレイするためになら、ある程度はコンピューターにサポートしてもらってもいいんじゃないかなって。

続きを読む <DX3のセッションをやって>

2009.11.15

ファイルのコピー

Written by
しゃちょ
Category
C#

 やりたいこと。

 「開発をしていたんだが、ソース管理されていないコードをちょろっと直したので、フォルダ構成とか、そのままで、指定された日付以降に変更したファイルだけ抜き出して、フォルダ構成もそのままで、ファイル保存したい」

 で、そんな簡単なこと、なんかツールでもねぇかなと思って、IRCでプロベンのみんなに聞いてみて、ソフトも教えてもらったんだけど、あんまりにも使いにくそうだったので、さくっとコードを書いた。

 Windowsの検索は、フォルダ構成をそのままにコピーっていうのができないんだよねぇ。めどい。

 と言うわけで、そのようなコードが以下。コードは.net3.5で、Linqを使っています。Linqなら簡単。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace FileCopy
{
    class Program
    {
        static void Main(string[] args)
        {
            string startFolder = @"C:\Windows\Temp";
            
            //指定されたフォルダ以下のファイルの列挙を取得するためのデリゲート。
            //別に、メソッドにしてもいいんだけどね
            Func<IEnumerable<FileInfo>> getFileInfoList = new Func<IEnumerable<FileInfo>>(delegate()
                {
                    List<FileInfo> result = new List<FileInfo>();

                    if (!Directory.Exists(startFolder))
                    {
                        throw new DirectoryNotFoundException();
                    }

                    foreach (string fileName in Directory.GetFiles(startFolder, "*.*", System.IO.SearchOption.AllDirectories))
                    {
                        result.Add(new FileInfo(fileName));
                    }

                    return result;
                });

            //Linqを使って、列挙する
            //今回は指定された日付以上の変更されたファイルを取ってるけど、Linqの作り方でなんでもできる
            IEnumerable<FileInfo> fileQuery = from file in getFileInfoList()
                                             where file.LastWriteTime >= new DateTime(2009, 11, 15, 16, 40, 0)
                                             orderby file.Name
                                             select file;

            //テストで表示
            foreach (System.IO.FileInfo fi in fileQuery)
            {
                Console.WriteLine(fi.FullName);
            }

#if DEBUG
            Console.Read();
#endif
        }
    }
}

 これで、対象のファイルは列挙されるので、あとはFileNameからdestのファイルを作って、File.Copyで。ディレクトリの存在は、別のFileInfoでも作れば、Createも簡単でしょ。

2009.09.28

 さて、そんな訳で、時間ができたので、VisualBasic PowerPacksに入っている、DataRepeaterコントロールのお話をしよう。
 別に興味ない人は読み飛ばし推奨。

 さて、このコントロール、まぁ、検索でここにたどり着いた人たちは言うまでもない訳で、そういうコントロールです。どういうだよ。っていうか、説明が面倒くせぇよ、説明なしな!

 で、このコントロール、結構、癖があって使いにくいです。
 データバインドされたコンボボックスのデータを表示すると、他の行のコントロールと連動して表示がかわっちゃうとか、DataTableバインドしていて、Not Nullなカラムがあると、次の行に行ったときに、DataErrorが起こるとか、制御がすげぇ面倒くさい。

 とりあえず、使う上で、いくつかのポイントをあげておきます。

  • リストに対してバインドされたコンボボックスは、手動でやるしかない。
  • はっつけたコントロールの、DataBindingsプロパティの要素の一部はコピーされない。
  • ItemTemplateのValidatingは、複数回呼ばれることがあるので、気をつけないとだめ。
  • 追加のためのメソッドであるAddNewは、結構、使いづらい。
  • データバインド後に、ResetBindingsを呼ばないと、いろいろ変なことになったりする。

 みたいなー。

 さて、そんなわけで、簡単なコードをおいつつ、見ていきましょう。

続きを読む <DataRepeaterコントロールのコード>

 複数人でメンテしようぜという話ですが、基本的に、このblogは我が道を行き続けるので、俺は仕事の話も書くし、プログラムの話も書くのです。
 つーか、忘れないようにメモなんですけど。

 新規開発プロジェクトのアーキタイプを作っていて、帳票系のDataSetを作っていたのですが、速度的なパフォーマンスはあとでチューニングすればいいとして、どうすれば簡単にできるかなあと考えていたんですけど、よくよく考えてみれば、DataColumnのExpressionでなんとかならないのかねと。
 帳票ツールはActiveReportsなので、ちゃんとリレーションされた更新用のDataSetがそこにあるんだから(TableAdapterManagerつかってる)、これを再利用できんもんかと。

 MSDNを見ると、Expressionはちゃんと、リレーションの親子を、ParentとChildで見られるのね。
 ちゅーわけで、サンプルコード。

 キーワードは、DataSet DataColumn Expression リレーションあたりか。
 あれ、これ、blogのキーワードにいれると、どうなるんだろう。

続きを読む <このblogは、相変わらず我が道をいくのです>

前の10件 1  2