コミケ告知

サークル活動の詳細は circle タグの記事へ。
2013年10月26日土曜日

FiddlerCoreのライセンス

艦これの通信内容を覗き見るのに便利なFiddlerですが…



基礎となる部分はFiddlerCoreとして切り出されて公開されています。

ライセンスを確認したところ、個人が無料のソフトウェアとして公開する分には、使用しても問題なさそうです。

条文はインストール時のダイアログにも出ますが、Windows文化の常として(?)、これは絶望的に読みづらいですね。なんだか順序が逆ですが、インストール後に、License.txtで確認できます。Fiddlerのライセンスとは違って、Coreの方はなかなかの長文。
以下は 1.5 Non-commercial License 項目内の一文です。

1.5.2 Restricted Scope of Use.  If You download the free Non-commercial License, the Software (i) may be used for development purposes by no more than five Licensed Developers and (ii) may only be embedded within Integrated Products that do not generate profit. 
generate profit に、donate me!スタイルは入るのでしょうかね~

ライセンスの変化?

Fiddlerについては、作者本人による解説書籍がリリースされています。

英語版は10USDと非常に安いので、使うかどうかわからんのに買ってしまいました。日本語版は2.5倍くらいの値段がします。
この本は2012年頃の発行で、その時点では、とても緩いライセンスが設定されていたようです。書籍中より引用。

Fortunately, FiddlerCore has a simple license. You may freely redistribute the FiddlerCore assembly with your application, without payment of any royalties, subject to the terms in the License.txt file included in the package.
The license terms are quite liberal, and amount to a statement that the library is provided with no warranty and you may not use it for any illegal purpose.
 作者本人の2011年のTweetも見つかりました。



これらの情報と現在のライセンス条文が同じとは思えず不思議に思い検索してみると、2013年6月の本人の投稿が見つかりました。
FiddlerCore was recently updated and bears a new EULA,
ライセンス形態は、ある時期を境に変わっているようですね。個人で、お金を取らないソフトウェアを開発する分には問題なさそうですが。
オライリーの邦訳版は2013年5月の発行で、ライセンスの説明がどうなっているのか気になります。


余談

個人的に気になったのはもちろん、自分が趣味のソフトウェア開発に用いる場合でしたが、このライセンス文には面白い文言がありました。

Content Management System and/or .NET component vendors are not allowed to use the Software (as defined below) without the express permission of Telerik.

業務内容によってライセンス取得が制限される模様。
2013年9月7日土曜日

Windowsのプログラムの標準出力とリダイレクトと

 Windowsでもコンソールアプリから…

Z;\>hoge.exe > log.txt

 このようにすると、標準出力がファイルにリダイレクトできます。
 ところが微妙に複雑な仕様があるらしく、若干うまくいかなかったのでメモ。


状況


 普通に実行すると、標準出力にテキストを色々吐くプログラムがあり…
Z;\>hoge.exe
I love beef!
I love pork!
 ファイルにリダイレクトすると、出力されないものがある。どういうこっちゃ。
Z;\>hoge.exe > log.txt
Z;\>type log.txt
I love beef! 
 

解明

テスト用のソースコードは以下。

リダイレクトしなかった場合の出力: (実際には微妙な色で装飾される)
GetConsoleScreenBufferInfo: OK
SetConsoleTextAttribute: OK
I love beef!
WriteConsole: OK
I love pork!
WriteFile: OK

リダイレクトした場合にファイルに書かれる内容:
I love pork!
GetConsoleScreenBufferInfo: NG
SetConsoleTextAttribute: NG
WriteConsole: NG
WriteFile: OK
  • ファイルにリダイレクトされた場合、Console関係の関数は失敗する
    • WriteConsole
    • GetConsoleScreenBufferInfo
    • SetConsoleTextAttribute
  • WriteFileはリダイレクトの有無にかかわらず成功する
  • (w)printfはリダイレクトの有無にかかわらず成功する
 リダイレクトによって挙動が変わるなんて思っていなかったので、ログ全体をうまくファイルに書き出せずに焦りました。WriteConsoleした分は引き続き画面に出る…というわけではなく、単純に消滅します。
 そういう挙動が嫌なら、WriteConsoleは使わずにWriteFileを使うのがよさそうです。着色のために呼ぶConsole関係の関数が失敗しても、気にせずWriteFile。
2013年8月13日火曜日

C84 お疲れ様でした

参加者の皆様、お疲れ様でした。
おかげさまで、ネットワーク本が12時すぎには完売しました。部数を迷ったのですが、想定よりかなり早いペースで出たため、結果としては読み違いでした。今まではEthernetのレイヤーの話を書いていたことが多かったのですが、やはりTCPの方が興味のある方が多いのでしょうね。
次回があれば、オフセット版を出したいと思います。また、そぎ落とした話題が多いので、続編も作れれば、などと。やる事が明確なときに限って、落ちるんですけどね…
2013年8月11日日曜日

C84 活動内容

C84 3日目 (8/12 月曜) 東地区“プ”ブロック-57a サークル 浜風もっこす
なんとか新刊も出そうです。

  • C84新刊 「Network Maniacs 2013」 20p
ネットワーク関係のマニアックなネタを解説する本です。
色々詰め込むつもりでしたが、内容にまとまりがなくなってしまったので、最終的に2テーマに絞りました。「TCPの高速化手法」と「ネットワーク上のバッファリング」です。
サンプル貼っておきます。編集画面のキャプチャなので多少表示が違いますが。
(クリックで拡大するはず)

 20130811222137

  • 既刊 「無職生活からのIT業界転職活動」 20p
C83で出したものです。
無職生活&転職活動の記録と傾向、それから雇用保険(失業保険)について説明したものです。
こんな本が役に立たない社会になってくれた方がよいのですが!

2013年8月1日木曜日

C84用リンク集

コミックマーケット84 (C84)で頒布した本の中に記載したリンクをまとめた記事です。

・ネットワークマニアックス2013

2013年6月29日土曜日

W7100Aの起動に挫折

Wiznetという韓国のメーカーがハードウェア処理TCP/IPのチップをいくつか出しています。PHYのついているW5x00のシリーズ、特にSPI接続のできるW5100は、接続が手抜きできるという理由で地味に使われていた印象があります。
Network機能だけを持ったコアなので、お好きなマイコンで外部から制御しておくんなまし、というチップですが、汎用CPUコアが 一緒に封入されたW7x00シリーズというものもあります。旧式、Intel8051が乗っているのがW7100で、ARMが乗ってるのがW7200。以前なぜか購入して放置していたW7100を、ふと思い出して動かそうとしました。

動きませんでした\(^o^)/
本当ならここがスタートで、色々と解析を始めるのですが、あまりにも情報が少なすぎて大変そうなのでもういいかなと。データシート見て配線確認する以外に、出来ることがない…。WIZnetの提供する読み書きソフトウェアを使って、シリアル経由で接続を試みますが、「read flash operation mode timeout」と出るのみ。最低限読み書きができたら、色々頑張ろうと思ったんですが。こりゃ手も足も出ない。電圧はしかるべき値がしかるべき場所に突っ込まれているんだけど。


Googleで検索すると、同じ症状の人が見かけられますが、結局解決されていないようです。
公式で放置されているとはw


トラブルの回避方法どころか、このW7100を使った事例を探しても、ほとんど見当たりません。W7100の評価ボードを使った例は無くはないようなのですが。2010年公開のデータシートやサンプルのダウンロード数が3000台なので、どれだけ売れてないんだか。2011年公開のW5100最新データシートで16000くらい。

現在はこのチップ、Serial to Ethernetのファームが既に書き込まれた製品としても売られているようです。

http://www.wiznet.co.kr/Sub_Modules/en/technical/Download_View.asp?PK_Num=587

汎用のはずが、なぜか固定機能を書き込んで売ってる。しかもよく見たら、W7100の方はGPIOは潰されてるしuser passwordくらいしかConfigurableになっていない。とても怪しい。まともに動くのかなあ、このチップ。

64kBのメモリが組み込まれていてスペック上は魅力的ですが、動作するのが明らかなW5100・W5300あたりと、使い慣れたマイコンと、必要なら外付けメモリ…という感じで、単品を組み合わせた方が良さそうです。本家とサポート契約して本格的に開発するつもりでもなければ。
2013年4月30日火曜日

findで特定条件の最新ファイルを探す

find 検索条件 | xargs ls -t | head -1
lsのオプションにhead -1相当のものがあるのではないかと確認しましたが、見つからず。
UNIXの思想からして、専用のツールをパイプで繋げるのは正しいのだろうけど、若干打つのがめんどくさいですね。

使用目的

実行ファイルが落ちたときに、最新のダンプファイルをgdbに食わせたかったけども、探すのが意外とめんどくさい!というのが元々のモチベーションでした。
gdb ./a.out `find -name "*.core"  | xargs ls -t | head -1`
他には、適当な名前のログファイルや一時ファイルから最新を探したい場面も、たまにあったような気がします。

シェル関数化

定型処理がめんどくさいので、latestで呼び出せるように。
### .zshrc等
latest() {
    find -name $1 | xargs ls -t | head -1
}
% latest "*.core"
./hoge1.core

-regexにした方がいいかなあと一瞬思ったけども、特定の拡張子を探すという主目的において、".*\.core"と打つのが嫌なので、-nameにしました。
$@にすれば他にもfindのオプションが指定できるのではないかとか、xargs ls -t | head -1だけまとめるのが美しいのではないかとか、そんなことも同様に一瞬考えて没案に。