2013-07-26

Lynx による操作ログと再現

CUIウェブブラウザ Lynx を使うと, キー操作を記録・再現することができる.
lynx -cmd_log=log.lynx http://www.example.com
lynx -cmd_script=log.lynx http://www.example.com
-cmd_log-cmd_script を両方指定すると, log で指定した方には, log の内容も追加されるようだ.

2013-07-25

Facebook からのメール

Facebook の「XXさんがあなたの写真にコメントしました。」というメール, どうも MX レコードではなく A レコードで送られることがあるようだ. メールサーバに届く場合とウェブサーバに届く場合とがあってなぜだろうと思っていたけれど, きっとそうなっているのだろう. Facebook が送信するメールサーバは, Received ヘッダをみると, ecelerity というものらしいが, どんなサーバなんだろうか...
Received: from outmail***.prn*.facebook.com (HELO mx-out.facebook.com) (66.220.***.***)
  by **** with SMTP; ** *** 2013 **:03:53 +0900
Received: from [10.80.**.**] ([10.80.**.**:*****])
 by smout***.**.prn*.facebook.com (envelope-from )
 (ecelerity 3.6.0.37104 r(/root/Platform:develop)) with ECSTREAM
 id **/**-*****-********; ***, ** *** 2013 **:28:51 -0700

2013-07-24

ICCompiler オブジェクトの外枠を取得

ICC にて セルやマクロの外枠座標を取得するプロシージャを紹介する.
proc get_bbox {name {offset 0}} {
    set bbox [get_attribute ${name} bbox]
    set x1 [lindex [lindex $bbox 0] 0]
    set y1 [lindex [lindex $bbox 0] 1]
    set x2 [lindex [lindex $bbox 1] 0]
    set y2 [lindex [lindex $bbox 1] 1]
    return [list [list [expr $x1-$offset] [expr $y1-$offset]] [list [expr $x2+$offset] [expr $y2+$offset]]]
}
上記の定義にて, マクロの外枠を取得でき, offset を指定すれば, そのオフセット分だけ外に広げて return する. マクロ周囲にブロッケージを生成する場合などに便利である. 使用例を示す.
icc_shell> get_bbox I0 
{456.0 921.6} {1651.6 1645.2}
icc_shell> get_bbox I0 16
{440.0 905.6} {1667.6 1661.2}

2013-07-21

mpg123 ogg123 出力ディバイスの指定

CUIの音楽プレーヤ, mpg123 ogg123 などで, 出力ディバイスを指定する方法は, ややこしい. ALSA を使用する場合, 以下のコマンドにて, 出力ディバイスの番号を指定できる. 番号は, alsamixer を実行し F6 を押すなどで調べることができる.
mpg123 -o alsa -a hw:1
ogg123 -d alsa -o dev:hw:1

2013-07-18

cURL によるウェブサーバのレスポンス表示

cURL を使うと, ウェブサーバの時刻を確認することができる. これを使うと, サーバの時刻があっているかどうかなどを確認することができる.
$ curl -D - -o /dev/null -s http://example.iana.org/
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: text/html; charset=UTF-8
Date: Thu, 18 Jul 2013 02:46:01 GMT
ETag: "780602-4f6-4db31b2978ec0"
Last-Modified: Thu, 25 Apr 2013 16:13:23 GMT
Server: ECS (mia/1791)
X-Cache: HIT
Content-Length: 1270

2013-07-17

Git のログを可視化

GitStats というソフトを使うと, Git のコミットを可視化することができる. 可視化されるのは, 以下の項目:
  • Weekly Activity; 最近32週のコミット数.
  • Hour of Day; 時刻別のコミット数.
  • Day of Week; 曜日別のコミット数.
  • Hour of Week; 曜日・時刻別のコミット数.
  • Month of Year; 月別のコミット数. 数年にわたって, どの月が忙しいかがわかる.
  • Commits by year/month; 年月別のコミット数.
  • Commits by Year; 年別のコミット数.

2013-07-16

VerilogHDL における VCD 出力

VerilogHDL のシミュレータには様々なものがあるが, VCD と呼ばれる標準フォーマットで出力することで, シミュレータには依存しない波形ビュワーを使用することが出来る. VCD を表示できるビュワーには, 例えば GTKWave と呼ばれるフリーのソフトがある. これを使用すれば, ノートPCなどで波形を見ることもできるので, 出張中であってもシミュレーションができる. Synopsys の CustomExplorer でも表示できる. HSPICE によるトランジスタレベルのシミュレーションと並べて結果を表示できるので, Mixed-signal 回路設計に便利そうだ.

VCD を出力するには, VerilogHDL のテスト環境に, 以下のような記述を入れる.

initial begin
    $dumpfile("myresult.vcd");
    $dumpvars(0, tb);
end
myresult.vcd, tb はそれぞれ出力ファイル, トップ階層のモジュール名 (テスト環境のモジュール名) である.

なお, VCD のフォーマットは, プリンタブルな文字列で圧縮されているので, スクリプト処理には向かない. 何らかのスクリプト処理を行うならば, $print や, $monitor を使う方が良いだろう.

2013-07-12

locationhistory の 旅程

Google Location History のダッシュボードに出てくる旅程, 1週間経たないと出ないようだ. 旅程に載る条件は, 自宅からの距離, 滞在時間などが含まれていると思われる. サンプルから検討してみる.
距離時間結果
54km1時間不掲載
165km?掲載
370km2時間掲載

2013-07-11

ICCでストラップを削除する方法

ICCで引いた電源ストラップを削除するには, 以下のコマンドを使えば良い.
icc_shell> remove_objects [get_net_shapes -filter {route_type=="P/G Strap"}]
icc_shell> remove_objects [get_vias -filter {route_type=="P/G Strap"}]
つまり, route_typeP/G Strap のネットとビアを削除する. なお, 直前に引いたストラップだけを削除する場合は,
create_power_straps -undo