H/Wの話。
Majestouch MINILAの赤軸を購入しましたが、カチャカチャ音が気になったので静音化を。
結論から言うと、
・静音化出来た→キーの底打ちするときの音が解消
・しかし、ゴムの感触でメカニカル感が台無し→メンブレンキーボードの感触
という、キータッチを犠牲にしても静音したい方向け。
Cherry MX軸向けの静音化リング等あるようですが、今回使用したのはコレ。
オモチャの輪ゴム。off houseで50円という。
キートップの軸受け部分に
輪ゴムをねじってこんな感じに引っ掛ければ完了。
軸の部分は細工なし。
この単純作業を全てのキートップに対してやるのみ。。。
EnterとかSpaceキーはスタビライザー(軸以外のジョイント部分)があるので部品を無くさないように要注意!
オレ的開発メモ
ソフトウェア開発に関する技術情報を書いていきます
2016年11月21日月曜日
2016年4月12日火曜日
ClosedXml その1
久々に投稿。
最近頻繁に使用することになったので、ClosedXMLについてのメモ。
使い方はググればすぐ出てくるので要点だけ。
最近頻繁に使用することになったので、ClosedXMLについてのメモ。
使い方はググればすぐ出てくるので要点だけ。
ClosedXML
概要
- http://closedxml.codeplex.com/
- C#でExcelファイルを操作するライブラリ。
- Excelファイルは2007以降(.xlsx)の形式に限る(.xlsmも使えたはず)
- Excel(Office)のインストール不要。内部ではOpenXMLがExcelを操作している。
- MITライセンス
- 開発スピードはちょーゆっくり。フォーラムに質問投げても返信無し。。。
使い方
ググると色々出るから調べてね(はぁと
見つからない場合は公式ドキュメント
を見てみましょう。
使い方の注意点
これが本題。
メモリリークを起こすことがある
クラス:XLWorkbook, XLWorksheet, XLRangeのDisposeを忘れるとメモリリークすることあります。必ずusingしましょう。
上記以外にも該当するクラスがあるはずなので、何かしらクラスを使う際はIDisposableを継承しているかどうか確認しましょう。
セル結合すると隠れた値が保持される
結合されるセル(左上以外のセル)に値があると、値を保持したままセル結合されます。
ClosedXMLのCell.GetValue()で値が読めるけれども、Excel上で結合セルを見ても何も表示していない状態になります。
そしてExcel上でセル結合を解除すると隠された値が現れます。
また、セル結合内の罫線についても同様の動作をします。
そしてExcel上でセル結合を解除すると隠された値が現れます。
また、セル結合内の罫線についても同様の動作をします。
各セルの値・罫線を空にしてから結合しましょう。
この問題、フォーラムに投げても返答なし。。。
まだなんかあったはず。。。見つけ次第随時追加します。
2014年1月26日日曜日
Trac(kanon)のインストール@CentOS6
CentOS6.5にインストール。
mercurialが入っていなければ
準備1:CentOS6のインストール
詳細はググってください。。。
また、インストール後は必ずアップデートを行って下さい。でないとTrac(Kanon)のインストールに失敗します。
また、インストール後は必ずアップデートを行って下さい。でないとTrac(Kanon)のインストールに失敗します。
準備2:ファイル取得
hg cloneしてインストーラ一式を入手します。mercurialが入っていなければ
# yum install mercurialで、ファイル取得
# mkdir /opt/setup
# cd /opt/setup
# hg clone http://kanon.ultimania.org/hg/KanonConductor/
インストール
以下、コマンドの先頭にsudoをつけるか、管理者権限があるユーザーで実行すること。
取得先に移動
# cd KanonConductor
上記フォルダ内にあるkanon-setupを編集します。kanon-setup内にリンク切れURLがあるので
- ./kanon-setup を実行→実行中にDLに失敗する→kanon-setup内の失敗したURLを編集する
- kanon-setup内のURLがリンク切れでないかを確認する→リンク切れなら修正する
という泥臭い作業を行います。
その後
途中、y/nの入力を促されますが、そこは必要に応じて。
しばらくしてから「インストール完了しました。」が出てコマンドプロンプトに戻ればインストール成功。
kanon-create-project コマンドでプロジェクトを作成しましょう。
##
しかし何でインストール確認の文言(しかも先頭2〜3行だけ)がこういう口調なんだろうか。
その後
#./kanon-setupでインストール。
途中、y/nの入力を促されますが、そこは必要に応じて。
しばらくしてから「インストール完了しました。」が出てコマンドプロンプトに戻ればインストール成功。
kanon-create-project コマンドでプロジェクトを作成しましょう。
##
しかし何でインストール確認の文言(しかも先頭2〜3行だけ)がこういう口調なんだろうか。
このコマンドはKanonをインストールするよ。
既にkanonインストールされている場合は、上書きされて消えちゃうの。
補足情報
インストール後、メニューで 管理 > GanttCalender - 休日の設定 を選択し、休日を追加しようとすると、以下のようなエラーが出ます。
[エラーメッセージ]TypeError: cannot concatenate 'str' and 'NoneType' objects
どうやらデータベースに問題がある模様なのでtrac.dbを修正して直します。
SQL使うのめんどかったので、SQLite Database Browserで直接編集。
こんな感じでレコードを一通り追加していけばOKです。
(trac.db修正内容の参考元 - http://blue21.ddo.jp/web/osgyo/trac/trac5.html)
SQL使うのめんどかったので、SQLite Database Browserで直接編集。
- テーブルを追加
- インデックスを追加
- レコードを追加
こんな感じでレコードを一通り追加していけばOKです。
(trac.db修正内容の参考元 - http://blue21.ddo.jp/web/osgyo/trac/trac5.html)
2013年12月7日土曜日
Kanon(Trac Lightning)のプロジェクト移行手順
ちょっと試してみたのでメモ。
サーバーのPCを変更する等で、Kanon(Trac Lightning)のプロジェクトを他のPCのKanonに移行する手順です。
KanonとかTrac Lightningについての詳細はググって調べてみてください。
以下、Linux(CentOS6)上で動作させています。
※以下の手順は一例です。やり方は色々あるはず。
※Kanonのインストールについてはまた別途。。。
以下のように、trac-adminとsvnadminのhotcopyまたはdumpを実行します。
これを各プロジェクト名について実行します。
Tracの更新(Tracのバージョンが最新であれば実行不要と思います)。
サーバーのPCを変更する等で、Kanon(Trac Lightning)のプロジェクトを他のPCのKanonに移行する手順です。
KanonとかTrac Lightningについての詳細はググって調べてみてください。
以下、Linux(CentOS6)上で動作させています。
※以下の手順は一例です。やり方は色々あるはず。
※Kanonのインストールについてはまた別途。。。
移行データの準備
以下、移行元PCで実行します。
各プロジェクトの移行データ
各プロジェクトのTrac,SVNのデータを移行用ファイルに出力します。以下のように、trac-adminとsvnadminのhotcopyまたはdumpを実行します。
これを各プロジェクト名について実行します。
trac-admin /var/opt/kanon/trac/(プロジェクト名) hotcopy (プロジェクト名)_trac
svnadmin dump /var/opt/kanon/svn/(プロジェクト名) > (プロジェクト名)_svn.dmp#trac-adminはパスが通ってなかったので/usr/bin/trac-adminとして実行したはず。。。
ユーザー情報
Kanonが管理しているユーザー情報は上記のファイルには存在しません。
/etc/opt/kanonのkanon_users.htdigestとsvnauthzが必要になりますので、どこかにコピーしておきます。
移行データを反映
以下、移行先PCで実行します。
各プロジェクト
まずSVN側を。
svnadmin create /var/opt/kanon/svn/(プロジェクト名)
svnadmin load /var/opt/kanon/svn/(プロジェクト名) < (プロジェクト名)_svn.dmp次にTrac側を。
cp -Rf (プロジェクト名)_trac /var/opt/kanon/trac/(プロジェクト名)コピー後、/var/opt/kanon/trac/(プロジェクト名)/conf/trac.iniの中身を確認し、移行前のIPアドレスや存在しないパスがあれば修正します。
Tracの更新(Tracのバージョンが最新であれば実行不要と思います)。
trac-admin /var/opt/kanon/trac/(プロジェクト名) upgrade
trac-admin /var/opt/kanon/trac/(プロジェクト名) wiki upgradeSVNと同期。ちなみに「trac-admin /var/opt/kanon/trac/(プロジェクト名) resync」ではエラーが出て実行できません。
trac-admin /var/opt/kanon/trac/(プロジェクト名) repository resync ""
ユーザー情報
コピーした移行前のkanon_users.htdigestとsvnauthzを/etc/opt/kanon配下にコピー。
移行データのアクセス権設定
以下の通り実行。
chwon -R apache:apache /var/opt/kanon/trac/(プロジェクト名)
chwon -R apache:apache /var/opt/kanon/svn/(プロジェクト名)
反映完了
apache再起動。/etc/init.d/httpd restart
2013年12月2日月曜日
TinyPG(a Tiny Parser Generator) その2
ちょっと間が空きました。TinyPGの続きを。
構文解析ツールの中でもTinyPGが良いと思うところは、定義した構文解析の処理をC#またはVBのソースコードで生成してくれることです。アプリ開発で構文解析機能を作る場合、専用のライブラリを用意する必要は無く、TinyPGで生成したソースコードを組み込めば実現できるわけです。
前回で構文解析したときに(メニューでBuildを実行したら)、実はソースコードが生成されています。
構文解析定義の@TinyPGの行に定義してある設定に従い生成されています。
Languageには"C#"か、"VB"が指定できます。生成するソースコードの言語の種別です。
OutputPathにはソースコードの生成パスを指定します。ちなみに、末尾に¥を付加しないと最後の¥から末尾までをファイル名として生成します。つまり上記の画像の設定ではC:¥配下にwork***.csのようなファイルを生成します。
さて、OutputPathで指定したパスにソースコードが4ファイル生成されているはずです。
それぞれ以下の機能を持ちます(LanguageがC#の場合)。
Parser.cs、Scanner.cs、ParseTree.cs
解析対象の文字列を読み込み・解析・分解・生成(コンパイル)します。
TextHighlighter.cs
解析対象の文字列を解析し、構文解析定義に定義した配色設定に従った情報を生成します。TinyPGで構文解析すると、Expression Evaluatiorにある文字列が構文解析定義の記述に従い配色されますが、その仕組みをC#ソースにしたものです。
RichTextBoxで使用可能な配色情報を用意します。
上記のソースコードをC#プロジェクトに組み込んだ後、以下の記述を実行したい箇所に記述します(以降、必要なusingは省略しています)。
TextHighlighter.csについては以下のような記述を行います。
構文解析ツールの中でもTinyPGが良いと思うところは、定義した構文解析の処理をC#またはVBのソースコードで生成してくれることです。アプリ開発で構文解析機能を作る場合、専用のライブラリを用意する必要は無く、TinyPGで生成したソースコードを組み込めば実現できるわけです。
ソースコードの生成
前回の続きになります。前回で構文解析したときに(メニューでBuildを実行したら)、実はソースコードが生成されています。
構文解析定義の@TinyPGの行に定義してある設定に従い生成されています。
Languageには"C#"か、"VB"が指定できます。生成するソースコードの言語の種別です。
OutputPathにはソースコードの生成パスを指定します。ちなみに、末尾に¥を付加しないと最後の¥から末尾までをファイル名として生成します。つまり上記の画像の設定ではC:¥配下にwork***.csのようなファイルを生成します。
さて、OutputPathで指定したパスにソースコードが4ファイル生成されているはずです。
それぞれ以下の機能を持ちます(LanguageがC#の場合)。
Parser.cs、Scanner.cs、ParseTree.cs
解析対象の文字列を読み込み・解析・分解・生成(コンパイル)します。
TextHighlighter.cs
解析対象の文字列を解析し、構文解析定義に定義した配色設定に従った情報を生成します。TinyPGで構文解析すると、Expression Evaluatiorにある文字列が構文解析定義の記述に従い配色されますが、その仕組みをC#ソースにしたものです。
RichTextBoxで使用可能な配色情報を用意します。
アプリケーションへの組み込み
実際にアプリケーションに組み込みます。上記のソースコードをC#プロジェクトに組み込んだ後、以下の記述を実行したい箇所に記述します(以降、必要なusingは省略しています)。
// 解析したい文字列これで任意の文字列を解析できます。
string input = "... your expression here ...";
// 解析
// 結果はParseTreeに格納される
Parser parser = new Parser(new Scanner());
ParseTree tree = parser.Parse(input);
TextHighlighter.csについては以下のような記述を行います。
// 解析したい文字列解析したい文字列への配色が不要ならば、上記は記述しなくとも解析自体は可能です。
string input = "... your expression here ...";
// 解析処理のインスタンス生成
Scanner scanner = new Scanner();
Parser parser = new Parser(scanner);
// 表示させたいrichTextbox、各インスタンスを指定する
TextHighlighter highlighter = new TextHighlighter(richTextbox, scanner, parser);
解析結果
解析結果はParseTreeクラスに設定されます。PaeseTreeクラスは木構造に従い再帰的に子を持ちます。TinyPGのOutputにあるParse Tree表示と同様のデータ構造です。
詳しくはまた次回。。。
詳しくはまた次回。。。
ソレデハ。
2013年11月2日土曜日
TinyPG(a Tiny Parser Generator)
やっと一発目。TinyPGを。
TinyPG(a Tiny Parser Generator)とは、Herre Kuijpers氏が作成したC#(またはVB)パーサージェネレーターです。
LL(1)に基づく構文解析を行うソースを生成します。
※LL(1)とか構文解析とかの意味は各自ググってください。
tinyPGの公開サイトからファイルをダウンロードします。
とりあえず動かすだけならサイトの「Download TinyPG v1.3 binaries - 88.9 KB」をクリックしてダウンロード&任意のフォルダに解凍しましょう。
※ダウンロードするにはCODEPROJECTのアカウントが必要です。
解凍したフォルダの中のTinyPG.exeを実行します。
TinyPG(a Tiny Parser Generator)とは、Herre Kuijpers氏が作成したC#(またはVB)パーサージェネレーターです。
LL(1)に基づく構文解析を行うソースを生成します。
※LL(1)とか構文解析とかの意味は各自ググってください。
実行ファイル入手
tinyPGの公開サイトからファイルをダウンロードします。
とりあえず動かすだけならサイトの「Download TinyPG v1.3 binaries - 88.9 KB」をクリックしてダウンロード&任意のフォルダに解凍しましょう。
※ダウンロードするにはCODEPROJECTのアカウントが必要です。
実行
解凍したフォルダの中のTinyPG.exeを実行します。
画面が表示されるので、メニューのView - Outputを選択します。同様に、View - Expression evaluatorを選択します。
画面が三分割されます。それぞれ、
左上 :構文解析定義
左下 :解析したい構文
右半分:解析結果
を表示します。
構文解析してみる
実際に構文解析してみます。手っ取り早くサンプルを使ってみます。
メニューのHelp - Examplesを選択すると構文解析定義のサンプルがいくつかあります。今回はSimple Expression calculator(簡単な計算式の構文解析)を選択します。
選択すると構文解析定義がメモ帳(とか)で表示されるので、TinyPGの画面左上にコピペします。
ついでに、画面左下に
(1-2)+(3*4)
と入力しておきます。
ここまでできたらF5キーを押下するか、メニューのBuild - Generate & Runを選択します。途中、構文解析定義を保存するためのダイアログが表示されますが、適当なパスに保存して問題なしです。
構文解析結果
上記を行うとOutputに解析結果が出力されます。
一番下の行に
Evaluating...と表示されますが、これが(1-2)+(3*4)の構文解析した結果になります。
Result: 11
また、Parse Treeには字句をどうやって分解したか、構文木を表示します。
構文解析定義をどうやって記述するかとかは後ほど。。。
ソレデハ。
2013年10月26日土曜日
登録:
投稿 (Atom)