買太郎'sキャッシュメモリFab

キャッシュ生産中。。。

目次

日記カテゴリ

書庫

Blog 利用状況

2008年6月12日 #

ただいま。。。

1年以上お休みしてましたが、そろそろ再開しますね!

6/28 大阪には参加で!

あれれ、、、登録できないですぅ~

posted @ 23:29 | Feedback (4)

2007年2月20日 #

検索コンパニオンでの半角スペースの謎

先週から、ファイル検索ツールを作っているんだけど。
ファイル名をワイルドカード検索対応しよう!っと思ったので
ワイルドカードぽい動きを正規表現(System.Text.RegularExpressions.Regex)で実装(C#)。


実装したワイルドカードは、
[*]:0文字以上の文字列
[?]:1文字の文字列
ってのが仕様です。

ある程度出来たので、Windowsのエクスプローラの検索コンパニオンと比較テスト
(検索コンパニオンの犬は、ローバー犬のロッキー君らしいです)

そこで、わかった事が!
ロッキー君は、検索キーワードに半角スペースを入れると、想定外の結果を返す。
(私の思い込みの想定外ですが)

***********以下 ロッキー君でのファイル検索テスト結果************

<検索対象フォルダに格納されているファイル一覧>
データダウンロード.xls
データダウン[半角スペース]ロード.xls
データダウン[半角スペース][半角スペース]ロード.xls
データダウン[全角スペース]ロード.xls
データダウン@ロード.xls
データダウン@@ロード.xls
データダウン@ロード.xls
関係ない.xls

【検証1】
検索文字:
  ダウンロード
ヒットファイル:
  ダウンロード.xls


【検証2】
検索文字:
  ダウン[半角スペース]ロード
ヒットファイル:
  データダウンロード.xls
  データダウン[半角スペース]ロード.xls
  データダウン[半角スペース][半角スペース]ロード.xls
  データダウン[全角スペース]ロード.xls
  データダウン@ロード.xls
  データダウン@@ロード.xls
  データダウン@ロード.xls


【検証2】
検索文字:
  ダウン[半角スペース][半角スペース]ロード
ヒットファイル:
  データダウンロード.xls
  データダウン[半角スペース]ロード.xls
  データダウン[半角スペース][半角スペース]ロード.xls
  データダウン[全角スペース]ロード.xls
  データダウン@ロード.xls
  データダウン@@ロード.xls
  データダウン@ロード.xls


【検証3】
検索文字:
  ダウン[全角スペース]ロード
ヒットファイル:
  データダウン[全角スペース]ロード.xls


【検証4】
検索文字:
  ダウン[半角スペース]@[半角スペース]ロード
ヒットファイル:
  データダウン@ロード.xls
  データダウン@@ロード.xls


【検証5】
検索文字:
  ダウン[半角スペース]@@[半角スペース]ロード
ヒットファイル:
  データダウン@@ロード.xls


【検証6】
検索文字:
  ダウン*ロード
ヒットファイル:
  なし


【検証7】
検索文字:
  *ダウン*ロード*
ヒットファイル:
  データダウンロード.xls
  データダウン[半角スペース]ロード.xls
  データダウン[半角スペース][半角スペース]ロード.xls
  データダウン[全角スペース]ロード.xls
  データダウン@ロード.xls
  データダウン@@ロード.xls
  データダウン@ロード.xls


【検証8】
検索文字:
  *ダウン[半角スペース]ロード*
ヒットファイル:
  なし


【検証9】
検索文字:
  ???ダウン?ロード????
ヒットファイル:
  データダウン[半角スペース]ロード.xls
  データダウン[全角スペース]ロード.xls
  データダウン@ロード.xls
  データダウン@ロード.xls


【検証10】
検索文字:
  ???ダウン[半角スペース]ロード????
ヒットファイル:
  なし


【検証11】
検索文字:
  [半角スペース]
ヒットファイル:
  データダウンロード.xls
  データダウン[半角スペース]ロード.xls
  データダウン[半角スペース][半角スペース]ロード.xls
  データダウン[全角スペース]ロード.xls
  データダウン@ロード.xls
  データダウン@@ロード.xls
  データダウン@ロード.xls
  関係ない.xls


【以下推測】
どうやら、*、?の一般的なワイルドカードを使わない検索の場合に使う半角スペースは、
*と同様に、0文字以上の文字列に相当する。

ただし、キーワードに *、? があると。。。その機能は変わる。
【検証8】で、
データダウン[半角スペース]ロード.xls
が、ヒットしないのは謎
どのようになるかは、不明
(誰か知ってる人は教えてください。)

全角スペースは、文字として認識されワイルドカードのような機能は無いようだ。


まあ、そんな感じなので、俺俺ワイルドカードメソッドは、
*と?のみの対応にしよう。。。



検証環境 WinXp Pro Sp2

posted @ 13:09 | Feedback (2)

2007年2月15日 #

これで、レベル2.05

今日は、直接仕事とは関係なかったが、

非同期処理(delegateデリゲート)を使って処理をキャンセル出来る実装を試してみた。
今までは、局所的に非同期呼び出しを行った事はあったけど、キャンセル出来るようにしたのは、初めてだ。

非同期で処理する、重たい可能性のあるメソッドの内容は、
指定したパス(サブフォルダ)に含まれるSystem.IO.FileInfoをリスト化するっていう仕様


うむ、出来た!
とりあえず動いた!

まだ、フラグ判定とか、甘いかもだけど、とりあえず動いた!
もうちょっと、テストして、これで良いんでないの?
って段階になったらBlogにするので、突っ込みお願いします。


いや、ほんと簡単に出来るもんだYo!
こういうのって、案件によっては使わない技術だよな。
逆に言うと、案件によっては必須の技術でもある。

この前の勉強会のパネルディスカッションで話にでてた、
2:8の法則の2には、入らないような気がするな。

とりあえず、これで一歩実力が3に近づいたなw

posted @ 20:19 | Feedback (0)

2007年2月13日 #

無線LANルータの初期値

昨日、うちのおかん(還暦越え)の家にインターネットの設定に行って来た。
無知なおかんにネットを提供するのは、いささか怖い感じもするのだが。。。
もう、60超えて、そんなにアクティブに動けないので、
想像以上にネットしたいと意欲的なので、しょうがなく色々と面倒見てあげて昨日モデムが着たので、設定に行きました。

モデムを設置して有線LANでネット接続確認。
「やっぱり、わたしも無線が良い」
というので、近所のコジマ⇒ミドリ⇒コジマとまわり、一番格安な無線LANルータを買ってきて設置。
3時間ほどで、ローカルPCの環境等全てできました。

その中で、気になったのは、
モデムやルータのデフォルトセキュリティ

モデムへのログインは、ADMIN,ADMIN
ルータのほうは、root,パス無し。。。

モデムの方は、有線だし、たぶんWAN側からはログイン出来ないんだろう(試してないけど)から、まあしょうがないとしても
無線のルータのデフォルトが、それじゃあまずくない?
おまけに、無線にセキュリティをかけたけど、取扱説明書の記述が。。。
用件定義書レベルで、詳細設計書は、どこですか?ってぐらいだし。
こんなんじゃ、設定したことの無い、一般の方じゃきっと無理だろうなんて思いながら。。。
なんとか、
SSIDの隠蔽
MACアドレスでのフィルタリング
WEP(WAPじゃないのは手抜き)の設定
程度だけしておきました。

ちなみに、おかんの家の周りには、セキュリティのかかってない(かけてない?)YBBの無線が、3つほど見えてたのも。。。

posted @ 12:26 | Feedback (2)

2007年1月16日 #

高速なコンピュータみたい

おめでとうございます。

今年から、新しい業務について、ますます微妙な感じですが、心機一転、初心に戻って。。。
がんばってみましょう。


new System.Random()を使用して、ランダムな文字列を2回連続して生成してると、2回とも同じ値になってハマッテしまったので、メモ

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemrandomclassctortopic2.asp

どうやらMyPcは、上記リンク先の解説に記述される、高速なコンピュータに該当するらしく、同じ乱数が取れるようです。

MSDNのサンプルだと、2回は行けるけど、3回.....と違う乱数を発生させれる方法は?
んと、ちと考えよ

posted @ 2:12 | Feedback (5)

2006年12月7日 #

DLLの配置の勘違い

.NET Framework アプリケーションでは、system32やパスを通したフォルダにDLLを集めても駄目なのね。
知らなかったっす。。。

<codeBase>や<probing>は、知ってたし使ってた事あったんだけどね。
だけど、今回のは。。。参照する側のexeも多いし、参照される側のdllも多いし。。。(謎w)
かといって、○○○個もGACに入れる事も(汗

まあ、フラットで配置するしかないのかなー
明日、もうちょっと勉強がてら調べてみようと

(とりあえず開始URL)

ランタイムがアセンブリを検索する方法
http://msdn2.microsoft.com/ja-jp/library/yx7xezcf(VS.80).aspx
コードベースまたはプローブによるアセンブリの検索
http://msdn2.microsoft.com/ja-jp/library/15hyw9x3(VS.80).aspx
@it 第3回 アセンブリのロード
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_01.html

 

posted @ 0:23 | Feedback (1)

いまさら?Joel On Software

かなり話題には、乗り遅れた感は、あるがやっとJoel On Softwareを先週買って今日読み終えた。

オリジナルを日本語に翻訳したサイトは、何度か見たことあったんだけど。
購入の、きっかけは、Kazzzさんの
http://d.hatena.ne.jp/Kazzz/20061121/p2
を見て、その日に紀伊国屋に買いに行きました。

以下、感想
Joelは、実利的な考え方を大事にし、非常にバランスの取れた考えの出来る、人だなってのが全体的な感想。
色々、共感できる事があったが、
特に、
「日常使うことの90%は、1週間で学習できるが、残りの10%を学習するのには、2,3年かかるかもしれない」
フムフム。。。

そうなんだよね~

残りの10%が時間かかるんだよね~
ほんと、本質まで理解してる人には、頭がさがる。

どちらかと言うと90%までは、得意なんだけど。。。
残り10%は苦手。。。
いや、それが難しいだよな~

でも、まあほんと、いい本でした。
色々と下がりがちな、モチベーションを回復させてくれました。
とりあえず、営業に回してよんで貰おうっと。

そろそろ、来年に向けて、考えていかないとな~

posted @ 0:10 | Feedback (5)

2006年11月17日 #

カラムに設定してるコメントをカラム順に取得

たまに、必要になると忘れてるのでメモメモ

ORACLE内の任意テーブルのカラムに、設定してるコメントをカラム順に取得

↓↓↓↓↓こうやって作ったコメントね↓↓↓↓↓
COMMENT ON TABLE HOGE.テーブル名 IS 'カラム名とかね'


SELECT USER_COL_COMMENTS.COMMENTS
FROM USER_TAB_COLUMNS
JOIN
USER_COL_COMMENTS
ON USER_TAB_COLUMNS.TABLE_NAME = USER_COL_COMMENTS.TABLE_NAME
AND USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
WHERE USER_TAB_COLUMNS.TABLE_NAME = 'テーブル名'
ORDER BY COLUMN_ID

posted @ 11:06 | Feedback (0)

2006年9月16日 #

備忘録 9/16

あいかわらず、
昼はVS2005(C#)でWinApplication
夜は、エディタでレガシーASPを開発中。。。
もう、疲れてくると構文がごっちゃ混ぜで、ビルドエラーの発生。。。

最近、書こうかと思ってかけてないネタを忘れそうなので、後の為に備忘録としてこ
こに。。。

・Visual Studio 2005 で、レガシーASP(.Netではない)をデバック&修正
こちょこちょと、設定を変えてやると出来た。
それにしても、VBScript&JavaScriptは疲れる。

・NetUserEnum(API)をラップして使ってみた。
ただ、やりたかっただけ。忙しさのあまりやけになって

・リフレクション初体験
少しつまったけど、出来た。
分かってはいたが、
こんな事できるんやと、ちょっと感動
ちょうど文字列から、オブジェクト生成しないといけない作業が発生したため。

以上詳しくは、忙しい&家に愛用のNotePcが無いので書けませぬ。

posted @ 12:53 | Feedback (0)

2006年9月1日 #

DataGridViewのセルを編集時に別フォーマットにする

<概要>
DataGridViewのあるカラムに、カンマ付き数値を表示。
編集のタイミングでカンマを取って編集したい。

<例>
private void dgvList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 8)
    {
      //編集中じゃなきゃ、カンマ付きにフォーマット
      if (dgvList[e.ColumnIndex, e.RowIndex].IsInEditMode == false)
      {
        //e.Valueのチェックとかいるかもね
        e.Value = e.Value.ToString("###,##0");
        }
      else
      {
        //処理無し
      }
    }
}

private void dgvList_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if (e.ColumnIndex == 8)
{
//フォーマットの仕方は、ご自由に
dgvList[e.ColumnIndex, e.RowIndex].Value = dgvList[e.ColumnIndex, e.RowIndex].Value.ToString().Replace(",", string.Empty);
}
}


<例 補足>
e.ColumnIndex == 8の列には、数値系型のデータがバインドされてる。
実装時には、DataGridViewTextBoxColumn等のカラムオブジェクト.Indexがスマートかな?


<ポイント>
・CellFormattingイベント内で、IsInEditModeによって、編集中かどうかを判断。(カンマをつける)
・CellBeginEditで、イベント内で編集用フォーマットに切り替える。(カンマを取る)
・CellBeginEditでカンマ取っても、Valueにセットする行為で、CellFormattingイベントが発生するのでIsInEditModeでの判断を入れないと無駄(取った瞬間、カンマ付きになるので永遠にカンマ付き)

<まとめ>
表示フォーマットと編集フォーマットが違う場合には、上記でいけそうだ。
注意するのは、「単純に表示時にカンマつけてよ!」って仕様書に書いてる時は、CellFormattingでしちゃだめです。
理由は、重いから。昨日のエントリ見て下さい。
http://blogs.wankuma.com/koutarou/archive/2006/08/31/37323.aspx#37324


<今日の感想>
DataGridViewは、イベント多すぎで手ごわいな。。。
ヘルプとかだけじゃ掴みきれないし、Google様もあまり教えてくれない。

posted @ 16:36 | Feedback (0)