Category Archives: Windows

Microsoft Security Essentialsをバッチで使おう

Pocket

Microsoft Security Essentials(以下, MSE)はご存知Microsoftが作った アンチウイルスソフトウェアである。

普通はGUIで使うものだが、実はコマンドラインからも使える。
コマンドラインから使えると、バッチ処理ができる。
あらいいですね。

バッチ処理できると何が便利か。

たとえばフォルダA、B、C配下すべてのファイルをスキャンしたい。
しかも定期的に。
これをGUIでやろうとすると、その都度、いちいちフォルダをマウスやキーボードで選ばないといけない。
ノーグッドである。
ランチャーに登録したバッチファイルを実行するほうがはるかにビウティフルである。
以下に方法を示す。
なおMSEは4.4.304.0、Windows 7での内容である。

コマンドライン版MSEのありか

Microsoftのサイトからインストール済みなら、以下の場所にある。

フォルダを開きたいならWindowsキー+Rで開いたウインドウに以下を貼り付けて実行せよ。

使うべきMSEのオプション

定義ファイルのアップデート
-SignatureUpdate
スキャン
-Scan -ScanType 3 -File <ファイル、あるいはフォルダのパス>

なおScanTypeには0〜3がある。
一見、選択肢がありそうだが、ファイル/フォルダを指定したい場合には3の一択である。
以下は参考。

 

バッチファイルの例

下記の通り、-Fileに続けてスキャン対象フォルダを並べるだけ。
フォルダはリモートフォルダでもよい。
となると、使い勝手は格段によくなりますな。

またこの例では、結果を目視確認したいので、最後にpauseを入れてスキャン終了後もコマンドプロンプトを開いたままにしている。
それが嫌ならpauseを消して、最初に@echo offをつければよろしい。
でもその場合、結果はどうやったらわかるのか。

結果はどこに出るの?

C:\WINDOWS\Temp\MpCmdRun.log にスキャン結果が記録されるので、ゆっくりご覧になればよい。

以下はログの例
「MpScan() has detected 0 threats.」とのこと。

 

応用例

以下のようなバッチファイルを例えばvscan.batという名前で保存する。
保存先はパスの通った場所にする。
こうしておけば、Windows + Rでウインドウを開き、vscan <スキャンしたいフォルダ> と叩けば素早くスキャンできる。
ビウティフル。

 

[メモ] MS製Office 2007以降ドキュメントビューア

Pocket

備忘のためOffice 2007以降のドキュメントを開くMS製Viewerをまとめておく。

Excel Viewer
http://www.microsoft.com/ja-jp/download/details.aspx?id=10
http://download.microsoft.com/download/4/6/C/46C73A03-F72F-419F-A76E-6C0D9F583E2E/ExcelViewer.exe

Word Viewer
http://www.microsoft.com/ja-jp/download/details.aspx?id=4
http://download.microsoft.com/download/1/0/1/1016da1b-6a19-432a-ad6b-0b3f6e60bb28/wordview_ja-jp.exe

PowerPoint Viewer
http://www.microsoft.com/ja-jp/download/details.aspx?id=13
http://download.microsoft.com/download/9/2/A/92AEA2B8-CBD9-494D-B60B-F1E6D8EE1771/PowerPointViewer.exe

Word/Excel/PowerPoint 用 Microsoft Office 互換機能パック
http://download.microsoft.com/download/8/B/9/8B97798B-00F8-4523-8CA6-8C0C5867883F/FileFormatConverters.exe

Windowsのクリップボード操作系ツール

Pocket

クリップボードに移したデータに対し、何らかの操作を行うWindowsのツールをまとめる。

 

任意の文章を引用貼り付け

Thunderbirdでは、任意の文章であっても「引用文として貼り付け(Ctrl+Shift+O)」で引用貼り付けができる。
Outlookには同等の機能がない。
以下、二つのツールは、実行するとクリップボードの文字列先頭に引用記号”>”を付けてくれるもの。

ひと手間増えるのは悔しいが、ランチャーに本ツールを登録しておき、貼り付け前に実行するとよい

クリップボードの文字列に引用記号を付加するツール

Plus引用符
http://www.vector.co.jp/soft/dl/winnt/writing/se341366.html

引用くん
http://www.fukapon.com/showcase/softwares/inyokun.html

デフォルトでは引用記号は”>”。
実行すると以下のようにになる。

気に入らない。
“>”のあとにスペースがあってほしい。

この場合、「引用くん」のほうがいいだろう。
オプションで引用記号を自由に変えられるから。
方法は同梱のドキュメントを参照のこと。

 

Excelの表をメールやテキストファイルに貼りつける

Excel文字罫線変換
http://www.ne.jp/asahi/soft/miday/Excel_Moji/Excel_Moji.html

文字通り。
Excelの表をコピーしクリップボードに送った状態で起動すると、文字罫線に変換してくれる。
変換後の例は以下の通り。

以上

Windowsでcurlを使おう。あるいはMicrosoft Security Essentialの定義ファイルをcurlでダウンロード。

Pocket

Windowsでもバッチファイルでファイルのダウンロードをしたい事がある。
そうすると、たとえばIEにURLを渡して起動するといったような事が考えられるが、いちいち保存を選ばないといけないとか、何かの操作が必要になってしまう。
これではバッチファイルの意味がない。
無人で行う方法にはいくつかあるだろうが、ここではcurlを使ってみる。

curlとは

curlとは、URLを使った、データ送受信コマンドである。
UNIX/Linux系では有名なコマンドだけれども、実はWindows向けバイナリも配布されている。

公式サイト
http://curl.haxx.se/
Wikipedia
http://ja.wikipedia.org/wiki/CURL

インストール

上記サイトのダウンロードページから取得。
http://curl.haxx.se/download.html

Windows向けには32bit版, 64bit版のほか、Generic版, MSVC版がある。
さらにMSIとzipが選べる。

Genericの方が最新なのでこちらを使った。2014/1/7現在のバージョンは7.34.0。
Windows7だけど2000/XPのもので問題なし。

インストーラは使いたくないのであれば、MSIではなくzipの方でどうぞ。
ただしzipの場合は、PATHを通すなどの作業は自分でしないといけないよう。

curlの使い方

curlはオプションが多くてウンザリする。
以下のサイトが適切な量にまとまっていると思う。

http://d.hatena.ne.jp/hogem/20091122/1258863440

curlの使い方例

proxy越しにMicrosoft Security Essential定義ファイルのダウンロードをする例。

curlは、そのままだとダウンロードした内容を標準出力に表示する。
-Oを付けると、ダウンロード先のファイル名で保存する。
この場合だとmpam-fe.exeとして保存する。

proxyサーバは、-xあるいは–proxyで指定する。
書式は<[protocol://][user:password@]proxyhost[:port]>

プロトコル指定がなければHTTP proxyとして扱われる。
ポート番号については、指定がなければ1080として扱われる。

例ではproxyサーバとしてthis.is.sample.proxyserver.com:8080を指定。
定義ファイルのダイレクトリンクとして http://download.microsoft.com/download/DefinitionUpdates/mpam-fe.exe を指定している(いつまで使えるかは分からない)

追記: リトライ数、リトライ感覚の指定

サーバの反応が悪く、ダウンロード途中で失敗してしまうことがある。
そういう場合には、–retry <num> –retry-delay <sec>を指定しておこう。

 

curlのman抜粋

以下、-xと-Oのマニュアルを抜粋。

Windows7でsambaのファイルがうまく開けない件について(oplocks死すべし)

Pocket

昨年あたりからWindows XPのサポート終了にともない、Windows 7へクライアントOSを移す企業が多い。
私の仕事PCも過日、ついに7に変更された。
さすがに色んなところが改善されていて使いやすくなっているのだが、なぜかSambaに置いてあるファイルが壊れたり、誰も開いていないはずなのに読み取り専用でしか開けない事象が頻発した。
特に共有設定したOfficeドキュメントで顕著。

しばらく悩んでいたのだが、Sambaのログにoplocks failedという記録を見つけて(おそらく)対処方法が分かった。
以下に示す。
Sambaのバージョンは3.6.22である。

結論

smb.confのglobalセクションに以下を書け。

 

ネタ元

ネットを渉猟したところ、やはりOplocksの評判はあまりよくない。

以下のホワイトペーパーが分かりやすかった。
Oplocksとread cachingが原因と断定している。

Opportunistic Locking and Read Caching on Microsoft Windows Networks
http://www.dataaccess.com/whitepapers/opportunlockingreadcaching.html

先に進む前にプロトコルとしてのSMBでいくつか確認を。

 

SMB(プロトコル)のバージョンについて

Windowsファイル共有で使われるプロトコルSMBは、Vistaでバージョン2, 7でバージョン2.1になった。
Oplocksとread cachingもバージョン2以降で追加、あるいは強化されている。
詳細は以下。

SMB の新機能
http://technet.microsoft.com/ja-jp/library/ff625695.aspx
SMB1⇒2⇒2.1への変化と新機能
http://blog.goo.ne.jp/mito_and_tanu/e/10c47629fbb7e7d3d73cbd54a1a9f28d


Oplocksとは

ネットワークの効率化を狙う、Windows固有の機能。
複数のプロセスが同じファイルをロックでき、なおかつクライアントがデータをキャッシュできる。

Chapter 17. File and Record Locking
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/locking.html
http://www.samba.gr.jp/project/translation/Samba3-HOWTO/locking.html

Read Cachingとは

Oplocksの一機能。クライアント側でのデータキャッシュ。
クライアントがローカルでデータをキャッシュする目的は、ネットワーク越しの書き込み回数を減らすこと、ひいてはネットワークの効率化のため。
ファイルの同じ部分(the same region)に対する書き込みをまとめて、一回で済ませる。

Oplocksの危険性

Oplocksが狙い通りに動けば、目的通りネットワークの効率化が図られる。
問題なのはネットワークに何か問題が起こり、キャッシュが適切にフラッシュされない場合。ともするとファイルの破壊を引き起こす。
とくにデータベースが危険。
以下のリンクに詳細が。
本記事の末尾に私訳を付す。

Locks and Oplocks
http://www.samba.org/samba/docs/using_samba/ch08.html

対策:Oplocksを無効にしろ

ここまで分かれば、対策は簡単。
Oplocksを無効にすればよい。
無効にする方法には、サーバ側での方法、クライアント側での方法がある。
クライアントと言っても、たいていはWindowsであろうが、Windowsで対処しようとするとレジストリの変更が必要になる。
さすがにそれは面倒だ。
そこでサーバ側、Sambaの設定でOplocksを無効にする。

smb.confでOplocksを無効にする

oplocks = noとすればよい。
デフォルト無効にしたければ[global]セクションに、共有ごとに無効にしたければ共有のところに書けばよい。
smb.confのmanは一見、共有ごとにしか指定できないように見えるかもしれないが[global]にも使える。
また、oplocksはbooleanなのでnoでもfalseでも、はたまた0でも理解してもらえる。

なお、ファイルごとに有効無効を指定したければveto oplock filesで指定できる。

smb.confのmanより抜粋

smb.confのmanよりPARAMETERS抜粋

 

blocking locks

Sambaはロックの方法を指定できる。
blocking locksというものである。
これは、ファイルをロックするときに、特定部分だけをロック(range lock)するか、ファイル全体をロックするか、というものである。
デフォルトで有効。
WindowsのRead Cachingに対応してそうな機能である。
加えてmanを見ると、「range lockに失敗すると、タイムアウトするまで何回かrange lockを再試行する」などと書いてある。
これも無効にしよう。

 

設定例

以上を踏まえて、以下のように設定
しょぼい英文は勘弁しておくれ。

 

再起動しておしまい。

 

(参考)Locks and Oplocks 私訳

http://www.samba.org/samba/docs/using_samba/ch08.html
Locks and Oplocks

oplocksの使用によって得られるパフォーマンス増は、大変に望ましいことがほとんどだ。
しかしながら、クライアントやネットワークのハードウェアの信頼性が怪しいような状況では、クライアントにデータをキャッシュさせることは大きなリスクになり得る。
クライアントが書き込みのためにファイルを開き、oplockを行う場合を考えてみよう。
そして他のクライアントが同じファイルを開こうとしたとき、”oplock break”要求が最初のクライアントに送られる。
もしこの要求が何らかの理由により失敗し、二番目のクライアントがファイルの書き込みをしたとする。
二つのプロセスが同時に書き込みをするわけだから、ファイルは簡単に壊れてしまうだろう。
残念なことに上記のケースは現実に起こりうる。
SMBネットワークにおける複数のWindowsクライアント環境では、このようなおかしな動きは頻繁にみられる。
たくさんのクライアントが同時に書き込みを行うデータベースファイルは特に影響を受けてしまう。

oplocksの失敗するもっと具体的な例を挙げると、それはデータベースファイルが大変に大きい場合である。
クライアントがこのようなファイルを開き、oplockを許可されると、非常に大きな遅延が発生する。
その一部を修正するためだけであっても、クライアントがファイル全部をキャッシュするからである。
このファイルを別のクライアントが開こうとしたとき、状況はさらに悪くなる。
二番目のクライアントがファイルを開くためには、最初のクライアントがキャッシュをすべてサーバに書き戻す必要があるからだ。
このために、また別の遅延が発生する(しかも双方のクライアントで)。
結果として、タイムアウトにより二番目のクライアントがファイルオープンに失敗し、たぶんデータが壊れた旨のWarning messageも併せて表示されるだろう。

In most cases, the extra performance resulting from the use of oplocks is highly desirable. However, allowing the client to cache data can be a big risk if either the client or network hardware are unreliable. Suppose a client opens a file for writing, creating an oplock on it. When another client also tries to open the file, an oplock break request is sent to the first client. If this request goes unfulfilled for any reason and the second client starts writing to the file, the file can be easily corrupted as a result of the two processes writing to it concurrently. Unfortunately, this scenario is very real. Uncoordinated behavior such as this has been observed many times among Windows clients in SMB networks (with files served by Windows NT/2000 or Samba). Typically, the affected files are database files, which multiple clients open concurrently for writing.

A more concrete example of oplock failure occurs when database files are very large. If a client is allowed to oplock this kind of file, there can be a huge delay while the client copies the entire file from the server to cache it, even though it might need to update only one record. The situation goes from bad to worse when another client tries to open the oplocked file. The first client might need to write the entire file back to the server before the second client’s file open request can succeed. This results in another huge delay (for both clients), which in practice often results in a failed open due to a timeout on the second client, perhaps along with a message warning of possible database corruption!

Pythonアプリに引数を渡そう

Pocket

PythonでWindowsアプリケーションを作ったとする。
たとえばファイルを引数に取り、整形するものだとする。
せっかくWindowsアプリケーション、というかGUI上のプログラムなんだから、アプリケーションにドラッグ&ドロップしたいじゃないか。
どうしたらできるか。
…まあ普通にargvで受け取ればいいんですがね。
以下、Pythonにおけるargvの使い方メモ。

sys.argv

sys.argvは、コマンドラインで渡される引数が入ったリスト。
sys.argv[0]にはスクリプト自身が入る。
len(sys.argv)で引数の数をカウントできる。
できるが、スクリプト自身も含めての数であることに注意。sys.argv[0]に自分が入っているからね。

サンプルスクリプト

サンプルスクリプトである。

この実行結果は、たとえば以下のようになる。

sys.argvはリストなのでforなどで中身を一つ一つ参照できるが、自分自身からまず始まるのは美しくない。

引数一つ目から扱うには

以下のようにする。

端的に言えば、一枚レイヤを入れる。
一番下のif文部分でsys.argvを受けたら、リストの一つ目以降、つまりスクリプト自身を除いた残りをmain()に渡すというわけ。
出力は例えば以下のようになる。

ベリーナイス。

シャレオツな使い方(引数の数を担保したい)

さて。もうちょっと頭のいいことをやってみたい。
具体的には、引数を一つだけ取るようにしたい。
さてサンプル。

出力例

 

シャレオツな使い方(引数の内容を担保したい)

さらに。
ファイルを引数に取るとして(さあ冒頭の話につながってまいりました!)、そのファイルの有無を確認したい。
サンプル。

出力例

以上でござる

PythonでWindowsアプリケーションを作ってみよう

Pocket

Pythonには、pythonスクリプトを手軽にWindowsアプリケーション化できるツールが揃っている。
有名なのはPy2exeとPyInstallerである。
違いをまとめたうえで、PyInstallerでのWindowsアプリ化をまとめる。

Py2exeとPyInstallerの違い

サイト
http://www.pyinstaller.org/
http://www.py2exe.org/

  • インストールの容易さ
    →PyInstallerが有利
  • 対応Pythonバージョン
    →Py2exe: 2.4~3.1
    →PyInstaller: 2.4~2.7
  • 単独exeファイル作成の容易さ
    →PyInstallerがやや有利
  • 「manifest」ファイル埋め込みの容易さ
    →Py2exeが有利

手軽さの点でPyInstallerを選んだ。

PyInstallerの制限(日本語パスはダメ)

※2014/5/29追記
PyInstallerで生成したアプリには制限がある。
そのアプリを、日本語、要するにNon-ASCII文字列の含まれるパスに置くと起動に失敗する。
Python2なせいだと思うが、じゃあPython3で作ったらどうよ?と考えるも、そもそもPyInstallerはPython3に対応してないし…。
運用回避するしかないです。
作ったアプリを人に配って初めて気づいたよ。

PyInstallerのインストール

pyinstallerのインストールを参照。
ダウンロードして展開するだけ。
インストールっぽいことは不要。
追加でUPXがあれば準備するとよい。後述。

http://www.pyinstaller.org/ からダウンロード。
2013/12/6現在、最新版は2.1。

UPXのインストール

UPXとは、実行ファイルを、実行できる形式のまま圧縮してくれるツールである。
メリットはストレージの占有スペースを少なく出来ること。デメリットは実行時の展開処理。
UPXは実行時の展開処理がすごく速いうえにメモリ消費量も少ないとのこと。
大規模なプログラムだったら使ってもよいかな。

http://upx.sourceforge.net/‎
http://ja.wikipedia.org/wiki/UPX

インストールはごく簡単。
公式サイトからアーカイブをダウンロード。
Win32/i386版。
展開したらupx.exeが出てくるので、それをパスの通ったところに置くだけ。
Pythonのインストールされているディレクトリ(例: C:\Python27)の下に置くのがよいでしょう。
あるいは別ディレクトリに置いてそこにパスを通す。

PyInstallerの使い方

python pyinstaller.py targetscript.py とするだけである。

以下、詳細。
サンプルpythonスクリプトを一つ用意。
コマンドプロンプトを開いて展開したPyInstallerのディレクトリに移る。
cdで移るのが面倒なら、SHIFT+右クリックで開く。
pyicmdprmpt

pythonにパスが通っていることを確認。

対象スクリプトをpyinstallerのディレクトリに置くか、パスを取得する。
パスの取得は、対象ファイルをSHIFT+右クリックで出来る。

pyipthcp

 

Windowsプログラムのできあがり

PyInstallerのフォルダに、スクリプト名でフォルダが出来ているはず。
pyiblddn

その下に、さらにbuildとdistという、二つのフォルダがある。
他人にプログラムを配る場合には、distフォルダの下にある方を配ること。
実行に必要なDLL(pythonのDLL, MSVCRのDLL)もセットになっているので。

pyidist

その他のオプション説明

以下参照。
http://pythonhosted.org/PyInstaller/

以下にピックアップ。

-w, –windowed
実行時にコマンドプロンプトを開かないようになる。
GUIプログラムのときに便利。

-F, –onefile
プログラムを一つにまとめてくれる。
なかなか魅力的なオプションだが、プログラム実行時にけっこう時間がかかってしまう。
(試してみると分かるが、イライラするレベル)
おすすめしない。

-i <アイコンファイル>, –icon=<アイコンファイル>
プログラムのアイコンを設定できる。アイコンは拡張子.icoのファイル。

-y
–clean
-yは既存の実行ファイルを問答無用で上書きする。
修正しては何回も実行ファイルを作るときには便利。
–cleanはログファイルや作業ファイルを消してから実行ファイル作成を始める。

–noupx
UPXを使いたくないときに指定。

Graphvizでカックいいグラフを描こう

Pocket

Graphvizとは、AT&T研究所の作ったグラフ描画ソフトである。
ここでのグラフとは棒グラフのグラフではなく、ソーシャルグラフとかのグラフである。
点(ノード)と線(エッジ)で表されるもので、例えば、何らかの状態遷移や、路線図や、ネットワークなどの「関係」の表現に使われる。

もともとオイラーの一筆書きのような経路探索の分野があって、それを視覚的に表現するためのツールとしてこういったソフトがある(たぶん)。
そんな分野はとても手に負えない。
しかし、グラフ描画に注目するだけでも、とても面白いんである。

例えば、ふだん利用する路線の、各駅の関係と乗降数をグラフに書いてみるだけでも、表で見たときは比べ物にならないくらいのインパクトがある。

keikyu
これは、京浜急行の駅の繋がりと乗降者数をグラフにしてみたもの。
隣り合う駅は繋ぐし、特急などで途中の駅をすっ飛ばす場合も繋ぐ。
乗降者数に応じて駅の大きさを変えてみた。
(何気なく作ったら一辺が10,000ピクセルを超える巨大画像になったので泣く泣く縮小した。)

そういったわけで、この記事では(Python経由で)graphvizのグラフ描画についてまとめた。

以下、特に指定のないかぎり、グラフと記載があれば、それは上記の意味でのグラフである。

Graphvizについて

手っ取り早くどんなグラフが描けるのかを知りたければこちらのサンプルグラフなどを。

関連のwebsiteは以下のとおり。

Graphviz(公式) http://www.graphviz.org/
Graphviz(wiki) http://ja.wikipedia.org/wiki/Graphviz

Graphvizでは、DOTという形式でグラフを描画する。
しかしDOT形式をそのまま扱うのはちょっと難しい。
そこで他の言語を通して使う。
具体的にはpygraphviz。
PyGraphvizはGraphvizのpythonインタフェースである。

PyGraphvizのインストール

FreeBSD, OS Xでのインストールは確認済みである。
しかし意外や意外、WindowsのActivePythonではPyGraphvizをインストールできない。PyPMにないのである。
素のPythonなら出来るのかもしれないが。

しかし、Graphviz単体ならインストールできる。DOT形式のファイル(以降、DOTファイル)を別マシンからもらえば、WIndows上でもグラフ描画は可能。

FreeBSDでのインストール

portsでもpkgでも、pygraphvizで探せば出てくるのでそれをインストールすればよい。
以下はpkgでの例。
gccを連れてきてダウロードサイズが100MBを超えた。驚いた。
ついでnumpyも入れた。

 

OS Xでのインストール

graphvizをインストールし、そのあとPython上でpygraphvizをインストールすればよろし。
以下の例ではbrewでgraphvizを、そのあとpipでpygraphvizをインストールしている。

 

Windowsでのインストール(graphvizだけ)

WindowsのActivePythonではpygraphvizが使えない。
素のgraphvizをインストールする。
以下あたりからダウンロードする。

http://www.graphviz.org/Download_windows.php

インストーラがよければmsiを、レジストリを汚したくないならzipをダウンロード。
zipは展開するとreleaseというフォルダが出来る。
リネームしてどこにでも置けばよい。
実行ファイルはbinの下にある。
必要ならパスを通しておく。

実際に使う実行ファイルはdot、circo、neatoあたりでしょう。

pygraphvizインストールの確認

pygraphvizをimportしてみてエラーの出ないことを確認しておこう。
たとえばIDLEで。

 

PyGraphvizを使ってみよう。

基本はここのチュートリアルに沿えばよい。
http://networkx.lanl.gov/pygraphviz/tutorial.html

pygraphvizをimportし、AGraphクラスを作る。

ノードの追加

エッジの追加

そして描画。
layoutを指示すると各ノード、エッジの配置がなされ、drawで画像に書き込める。

dotファイルを書き出すには。

 

サンプルスクリプト

以下、サンプルスクリプトとその結果つくられるグラフを列挙する。
先述の通りWindowsではpygraphvizが使えない。
Windowsでグラフを描こうとするなら、MacやFreeBSD他、pygraphvizで生成しておいたdotをWindows上のgraphvizで読みこむしかない。
その方法は最後に触れる。

サンプル1

sample01

サンプル2

ノードの追加は、リストでまとめてできる。

sample02

サンプル3

同じエッジを二回追加しても変わらない。

sample03

サンプル4

しかし、最初のクラス作成時にstrict=Falseと指定すれば。

sample04
二本になる。

サンプル5

さらにdirectを指定すれば。

sample05
矢印になる。

サンプル6

ここまでは殺風景であったが、色だって形だって変更できる。

sample06

 

参考

ここから先は、以下を参考にして各自素敵なグラフを作ってくれたまえ。
https://github.com/pygraphviz/pygraphviz/blob/master/examples/miles.py

pygraphviz attrの一覧
http://www.graphviz.org/doc/info/attrs.html

Windowsでdotからグラフを描画する。

インストールしたdot, circo, neatoのいずれかに、-Tで出力形式を、-oで出力ファイル名を指定したうえで、dotファイルを与えればよい。

 

 

No tags for this post.

ActivePythonでPythonパッケージを扱うにはPyPM

Pocket

 

PyPMはActivePythonのPythonパッケージマネージメントシステムである。
パッケージの提供はActiveState

ただ、すべてのパッケージが揃っているわけではなく、ものによってはコンパイルに失敗し、結果としてPyPMでは入手できないものもある。

たとえば2013/11/14現在、pygraphvizは入手できない。
http://code.activestate.com/pypm/pygraphviz/

pygraphviz is unavailable in PyPM, because there aren’t any builds for it in the package repositories.

前後したが、PyPMで揃えられるパッケージは以下のサイトで確認できる。
http://code.activestate.com/pypm/
また、PyPMにもパッケージ検索機能が備わっている。

PyPMの起動

ActivePythonをインストールすると、Python Package Manager(PyPM)というプログラムがスタートメニューにできているはず。
これがPyPM。
startmenu

プログラムとは言っても、実体はcmd.exeに引数を与えて実行するショートカットである。

実行すると、コマンドプロンプトが開く。
pypm

 

PyPMの使い方

以下を参照

http://docs.activestate.com/activepython/3.3/pypm.html

 

実行例

matplotlibを検索、インストールしてみる。

検索

インストール

インストール済みのパッケージ一覧

 

プロキシの設定

もしインターネット接続がproxy越しの場合には、環境変数の設定が必要だ。
以下に記載のあるとおり。
http://docs.activestate.com/activepython/3.3/pypm.html#proxies-and-firewalls

PyPMを実行したあと、以下のように設定してから進めればよい。

 

なお、activestateのサイト通りだとうまくいかなくて、経験的な結果として:

  •  ダブルクオーテーションで囲ったらダメ。
  •  (おそらく)URLの最後はスラッシュで終わらないとダメ。

使用例

以上

No tags for this post.

MicrosoftもWindiff.exeを作ってた件について

Pocket

 

Windowsでファイルのdiffを取りたければ、けっこうな数の選択肢がある。
実際のところ、私もDF.exeなどを使っている。
ただ改めて調べてみたところ、Windows向けにMicrosoft自らdiffツール作ってたらしい。
その名もWindiff.exe。(Vectorあたりにあるツールと名前かぶってるような)
使ってみたので顛末を示す。

とはいえ。
結論としては、Microsoft製に価値を見出さないならサードパーティのdiffツールの方がいいかな。

Windiff.exeにはxp用と7用がある・・・ようだ。

xp用Windiff.exe

xp用Windiff.exeは、microsoft.comに以下の記載が。

Windiff.exe ユーティリティの使用方法
http://support.microsoft.com/kb/159214/ja

Windiff.exe は、Microsoft Windows 2000 以降のオリジナルの CD-ROM の Support\Tools フォルダーに収められています。サポート ツールをインストールするには、Support\Tools フォルダーの Setup.exe を実行します。Windiff.exe は、Support.cab ファイルにも収められています。Support.cab は、各 Service Pack に含まれています。

ただ、上記のページをWindows 7で開くと、「この技術情報は、お客様がご利用の Windows とは異なるバージョン向けの情報です」とのこと。

Windows 7向けのWindiff.exe

technetで以下を発見。2003用のものを流用すればよさそう。

Windiff for Windows 7
http://social.technet.microsoft.com/Forums/exchange/en-US/0d51abcd-3b76-495b-84a4-45e188f6d9f6/windiff-for-windows-7

Windows 7(32bit)でのインストールのしかた

※おそらくMicrosoftは公式には認めない方法です。
自己責任でどうぞ。

さっそく以下のページからWindowsServer2003-KB892777-SupportTools-x86-ENU.exe をダウンロード。

Windows Server 2003 Service Pack 1 32-bit Support Tools
http://www.microsoft.com/en-us/download/details.aspx?id=7911

コマンドラインから実行する。
オプションを二つ指定する。
/Cで「展開のみインストールせず」、 /Tで展開先をフルパスで指定する。

以上の例だとc:\download\supporttoolに内容物が展開される。
そのうちのsupport.cabをダブルクリックすると、中にwindiff.exeがあるのでそれを取り出す。
あとはパスの通ったところに置くとか、ランチャーに登録すればよい。

初期設定

そのままだと日本語を表示できないので、Edit → Set Font でフォントを変える。
メイリオとかにしとけ。

使い方

個別ファイルの差分を調べる場合には、File → Compare Files でファイルを二つ選んでOKをクリック。
ディレクトリごと差分を調べる場合には、File → Compare Directoriesで出てきた画面に二つのディレクトリパスを貼りつけてOKをクリックする。

調べたファイルが一覧で表示される。
差分のあるファイルが赤く表示されるので、選択してExpandでファイルの中身を見られる。
Outlineでファイル一覧に戻る。

F7, F8で差分のある個所を順番に選んで行ける。
Pictureは左端に差分箇所を表してくれる。

制限

シフトJISのファイルは読めるけど、UTF-8の日本語は読めないようだ。

感想

使ってみたら分かるけど、ちょっと使いにくいかな…。

No tags for this post.