Kenji のすべての投稿

FreeMind のファイル(.mm) を一括検索するツール


FreeMind の内部の文字を検索するツールを作りました。昔は ozFreeMindSearcher 0.9.0 RC3 というツールが公開されていたらしいのですが、今はダウンロードできないということで、作ってしまいました。職場で活用されています。

肝心のソースはgithubに上げております。

FreeMindSearcher

2012/05/06 時点での機能

指定されたディレクトリ以下にある、拡張子が”.mm”のファイルをすべて取得して、その中の単語を検索する→単語が見つかった場合、そのノードとファイル名、ディレクトリ名をDataGridView に出力する、といった単純なものです。

AND 検索 、OR 検索 はできません。

アプリケーションだけほしい人は、release フォルダの中の FreeMindSearcher.exe を持っていってください。 動かすには .Net Framework 2.0 が必要です。 32bit アプリケーション です。

やっていることの説明

FreeMind のファイルを見るとわかるのですが、形式は XML になっていて、それぞれのノードは node タグ になっています。そして、テキスト部分は TEXT 属性 なので、TEXT 属性 を検索するようにします。ただし、TEXT 属性の値は HTMLエンコード (漢字5文字ぐらいでなんか言い方があったはず) されていますので、検索前に検索文字列を HTMLエンコード しています。

Search ボタン をクリックすると、まず、検索する語句がHTMLエンコードされます。 次に、getMMFiles が指定ディレクトリ以下のマインドマップのファイルパスを再帰的に取得します。最後に searchFile がファイルの中を 検索して、ヒットしたものを DataGridView に出力します。searchFile は単一のファイルについての処理なので、一つ一つのファイルについて searchFile を実行しています。

処理部分のコード

Visual C++ 2005 で作りましたが、 Windows でしか使えないので少し後悔しています。

きれいじゃないのは本人が一番よく分かっています。

DataGridView に表示するところは、HTMLのデコードをしなくても表示されました。自動でデコードされるんでしょうか。 DataGridView の各種プロパティなどは結構手を抜いています。


000webhost 勝手にバックスラッシュが入る


無料サーバ 000webhost では、 フォームから入力したデータを DB に挿入するときに 自動で不要なバックスラッシュが入ってしまうことがあります。

これは PHP がセキュリティのためにバックスラッシュを入れて予期せぬ動作が発生しないようにする仕組みですが、 バックスラッシュを入れてほしくないところでバックスラッシュを入れられてしまうことが頻発していたので 設定を変えてバックスラッシュが入らないようにしました。 データのチェックは 別の部分でやっているので 特別問題はありませんでした。

その時の方法を紹介します。

方法

PHP の magic_quotes_gpc という機能が有効になっているので それをオフにします。

具体的には magic_quotes_gpc をオフにしたいディレクトリに、.htaccess という名前のファイルを作り、そこに下記のコードを追加します。

magic_quotes_gpc の値は メソッド get_magic_quotes_gpc で確認することができます。


.Net ラベルの AutoSize プロパティのデフォルトを固定


Visual BasicVisual C# などでフォームアプリケーションを作っているときの話。

ラベルのAutoSizeのデフォルトが False だったらいいなー と思ったことはないだろうか。 AutoSize = True で作ります!ってとこもあるだろうけど、私の会社では AutoSize = False。 しかし毎回ラベルを貼り付けるたびにプロパティを設定するのも面倒だ。そこで LabelAutoSize のデフォルト値(規定値)を False にしたラベルを作ってしまおうというのが今回のコード。 Visual Studio 2010, Visual Basic で確認済み。

Visual Studio Professional Edition の場合は、継承したコントロールを作ることができる。 Express Edition では、継承したコントロールは最初からはできなかったような気がする。その場合は、継承したクラスをまず作る。

継承するのは System.Windows.Forms.Label。 ここでありがちなのが、コントロールのデザイナ画面のプロパティウインドウで AutoSizeFalse にするやり方(デザイナ画面には何も表示されないが、プロパティウインドウは使える)。 Label の場合は厄介で、実際にフォームに貼り付けるときには AutoSize = True に戻ってしまう。 そこで、コードの表示をして、次のコードを追加する。

続きを読む .Net ラベルの AutoSize プロパティのデフォルトを固定

CrystalReports で数値を日付にする方法


CrypstalReports で日付の数値を年月日表記にする方法です。 日付のデータを年月日の8桁の数値として保存している場合に使えるコードです。

まず、式フィールドを作成します。 その中に、次のような式を書き込みます。 式の編集をするには 右クリックから式の編集を選択します。

これで、数値を日付にすることができました。DBColumn のところには、データベースのフィールド名を入れてください。

しかし、これではまだ 1986/01/06 という形で表示されます。 この日付のフォーマットを変えるには、この式フィールドのプロパティを設定します。

DateFirstSeparator, DateSecondSeparator, DateSuffixSeparator それぞれに、”年”、”月”、”日” を入力すると、 1986年01月06日 というように表示されます。