|
検索
カテゴリ
メモ帳
以前の記事
最新のコメント
記事ランキング
ブログジャンル
画像一覧
|
2012年 12月 31日
地味にハマったのでメモ。
やりたいことは、C#で辞書型の最初の値を取得したい。 Who's on Dictionary<>.First()? http://stackoverflow.com/questions/436954/whos-on-dictionary-first C#: get first key from Dictionary<string, string> http://stackoverflow.com/questions/1820506/c-get-first-key-from-dictionarystring-string ここらへんをみると、Firstが使えるって書いてあるので、こんなコードを書いてみる。 using System; using System.Collections.Generic; public class Sample { public static void Main(string[] args) { Dictionary<string, string> dic = new Dictionary<string, string>(); dic["テスト1"] = "テスト1の値"; dic["テスト2"] = "テスト2の値"; dic["テスト3"] = "テスト3の値"; KeyValuePair<string, string> pair = dic.First(); Console.WriteLine("First key: {0}, value {1}", pair.Key, pair.Value); } } コンパイル時にこんなエラーが発生。 sample.cs(14,29): error CS1061: 'System.Collections.Generic.Dictionary<string,string>.KeyCollection' に 'First' の定義が含まれておらず、型 'System.Collections.Generic.Dictionary<string,string>.KeyCollection' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 ヒントはここ。 RSRP-179567 error CS1061: 'object' does not contain a definition for 'Foo' and no extension method 'Foo' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?) http://youtrack.jetbrains.com/issue/RSRP-179567?query=p using System.Linq;が必要でした。 using System; using System.Collections.Generic; using System.Linq; public class Sample { public static void Main(string[] args) { Dictionary<string, string> dic = new Dictionary<string, string>(); dic["テスト1"] = "テスト1の値"; dic["テスト2"] = "テスト2の値"; dic["テスト3"] = "テスト3の値"; KeyValuePair<string, string> pair = dic.First(); Console.WriteLine("First key: {0}, value {1}", pair.Key, pair.Value); } } これでコンパイルが通りました。 テキストエディタでコードを書いてる人特有で、普通は自動補完されるのだと思いますが、メモ書きとして。 ■
[PR] 2011年 12月 28日
Pythonで辞書型から値を取得するとき、キーが存在しない場合は
KeyErrorが発生します。
実行してみると、見事エラーになります。
これまでは、こんなかんじでキーの存在チェックをしてました。
でも、getを使えばお手軽に同様の処理が行えます。
実行してみると狙い通り。
知らなくて、今まで損してた気分です。 これは便利。 ■
[PR] 2011年 12月 06日
Pythonのモジュールをインストールするためのツールに
easy_installがあります。 いままで、 http://peak.telecommunity.com/dist/ez_setup.py ここのファイルをダウンロードして python ez_setup.py を実行していたのですが、Ubuntuだと sudo apt-get install python-setuptools これでOK。 easy_installが使えるようになります。 ■
[PR] 2011年 11月 30日
とあるプログラムが出力したログファイルを解析して、各関数の処理時間を計算するスクリプトをPythonで書いているときはまったのでメモ。
ログファイルの出力はこんな感じ。
'20:14:14.873' - '20:23:53.822'を実行して関数Aの実行時間を求めたい。 時間を計算する部分の抜粋。
http://docs.python.org/library/datetime.html datetime.datetimeの引数は year, month, day, hour, minute, second, microsecond, tzinfo year, month, dayは適当に同じ日付を入れておきます。 hour, minute, second, microsecond この最後の引数がmicrosecondとは思わずmillisecondと思っていてはまりました。 ■
[PR] 2011年 05月 07日
リストにappendしながらデータを作り、タブルに変換して値をリターン
ってしたかったんですが、変換方法がわからんかったのでメモ タプルからリストは、listを使います。 >>> tuple_value = (1,2,3,4,5) 逆にリストからタプルにするときはtupleを使います。 >>> list_value = list(tuple_value) いままでlistってよく変数名に使用していたような・・・ 知らない間に関数を上書いていたとは。 ■
[PR] 2011年 03月 13日
ヤシマ作戦
「アニメに出てくる作戦名で盛り上がっててうぜーwww」 ・・・っていう意見もあるようですが、個人的には こういうノリ嫌いじゃないです。 私も節電に協力したいのですが、普段からTVもエアコンもつけない (というか持っていない)サボテンのような生活を送っているので、 削るものが・・・ と思っていたのですが、どうやら電気炊飯器って結構電力を 消費するようです。 普段、電気炊飯器でお米を炊いているので、これを使用せず ガスで炊飯してみました。 ※火を使うので、火災に注意! 参考にしたサイトはこちら。 文化鍋でメシを炊く 今回、2合のお米を炊いてみました。 お米は、電気炊飯器の内釜を使用して磨ぎます。 水加減も内釜に引いてあるラインを参考に。 要するに、ここまでは普段電気炊飯器でお米を炊くのと 同じ手順です。 ![]() 内釜から鍋に磨いだお米と水を移します。 ![]() 炊飯前に1時間程度水につけておくとおいしく炊き上がるそうですが、 普段はそんなことしないので、いきなり炊飯に入ります。 蓋を閉めて強火で沸騰するまで加熱。 2,3分で沸騰すると思います。 蓋が軽い場合は、茶碗などを重石としておいておくとよいかと。 ![]() 沸騰したら、中火程度に火力を落とします。 この状態のまま、湯気があまりでなくなるまで放置。 大体5~10分程度かと思います。 ![]() 中火にしている時の鍋の中の様子。 ![]() 湯気があまり出てこなくなったら、弱火にします。 この状態で5分程度放置。 ![]() 弱火のときの中の様子。 ![]() 最後に10秒ほど強火にして、火を切ります。 5~10分程度蒸らすため、そのまま放置。 ![]() 30分かからずお米が炊けました。 お味ですが、スイッチ一つで炊き上がるより、火加減を調節 したりと手間をかけたのでという精神的な面もあるのでしょうが、 普段よりおいしく感じました。 ■
[PR] 2010年 12月 13日
Windows端末でタスクスケジュールを使用し、定期的にとあるデータを作成しています。
作成したデータをLinuxのWebサーバーに自動的にアップロードしたい。 Linux側でftpサーバーを起動していれば、ftpコマンドでアップロード できるのですが、面倒なのでsshしかサービスを起動してません・・・ sftpを使えばよさそうなのですが、Windows標準コマンドでは用意されていない(多分) WinSCPを使えばGUIで簡単にファイルをアップロードできるのですが、 http://www.tab2.jp/~winscp/ ※普段お世話になってます。 今回は、自動処理したいのでバッチファイルにアップロードの処理を仕込みたい。 WinSCPをコマンドで操作する方法はどうやらなさそう。 いろいろ調べた結果、Puttyに含まれているexeが使えそうです。 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html こちらから、「psftp.exe」をダウンロード。 コマンドの簡単な使い方はこんな感じ。 psftp [ログインユーザー]@[サーバー名] -pw [パスワード] -b [実行したいコマンドを書いたテキスト] 実際に使っている内容 バッチファイル psftp root@192.168.1.1 -pw password -b upload.txt upload.txtの内容 cd /var/www/public これでWindowsのタスクに登録したバッチでデータの作成から サーバーへのアップロードまで一括で行なえるようになりました。 ■
[PR] 2010年 07月 21日
久しぶりにJDBCでMySQLに接続しようとしたときはまったのでメモ 構成は・・・ 開発端末(WinXP) MySQLサーバー(Debian) まず、MySQLの外部接続許可 以前調べていたけど、片言過ぎて意味わからず。 MySQL 外部接続許可 まずは開発端末から接続できるようにMySQLを構成。 ※開発用なので、とりあえず動けばいい(セキュリティ完全無視)で設定しています。 1.bind-addressの編集 # vi /etc/mysql/my.cnf bind-addressをコメント #bind-address = 127.0.0.1 2.mysqlユーザー(root)に外部接続許可の権限付与 # mysql -uroot -pPassword これで、外部からMySQLに(とりあえず)接続できるようになるはずです。 MySQL用のJDBCドライバ http://www.mysql.com/downloads/connector/j/ ここから、mysql-connector-java-5.1.13.zipをダウンロード。 解凍すると、mysql-connector-java-5.1.13-bin.jarが入っているので、 開発環境のビルドパスに含めます。 コネクション獲得のサンプル。 try { ■
[PR] 2010年 06月 14日
mantis1.2系にバージョンアップしたら、メインページに表示していたニュースが非表示に・・・
ニュース編集のタブも消えてしまいました。 どうやら、1.2系からはニュースの表示・非表示がオプションで指定できるようになり、 かつデフォルト非表示になった模様。 設定ファイルのconfig_inc.phpに
この設定を追加すれば、従来どおりニュースの表示と編集が行なえるようになります。 機能自体削除されたのかと一瞬あせりました。 ■
[PR] 2010年 04月 26日
「テストコードは大切だよね」という話は良くしますが・・・
恥ずかしながら、テストコードの書き方を知らないので、基礎から調べてみます。 参考にしたのはここ。 http://www.python.jp/doc/2.5/lib/module-unittest.html 1.まず、unittestをimportして、unittest.TestCaseを継承したクラスを作成します。 2.テストを行う前に、オブジェクトの作成などの事前処理を行いたい場合は、 「setUp」というメソッドを宣言します。 3.テストメソッドを作成します。 4.unittest.main()を呼び出すと、テストクラスの実行が開始されます。 ・・・といっても良くわからないので、ただ関数名を表示するだけの テストケースを作成して動かしてみます。
実行してみると、こんな結果になります。
「setUp」は、テスト開始前に一回のみ実行されると思っていたのですが、 テストケース実行前に必ず実行されることが保証されているようです。 完全に勘違いしてました。試してみてよかった~ 次に、わざとエラーが発生するメソッドを実行してみます。
実行してみると、以下の結果が得られました。
途中にエラーとなるメソッドがあっても、最期までテストは実行されます。 また、最初に表示される「E..」ですが、どうやら 「E」エラー発生 「.」正常終了 という意味のようです。 実際のテストでは、エラー検知ではなく値のチェックを行う ケースが多いと思います。 こんなサンプルを作成して、実行してみました。
実行してみると、以下の結果が得られます。
なんとなく、わかってきました。 ■
[PR]
|