Debian wheezy の webkit のバグ?
ちなみにPyGIから使用している。 まだちゃんと検証はしてないので嘘かも。
system # cd /usr/lib/systemd/system system # diff zabbix-agentd.service zabbix-agentd.service.orig 9c9 < ExecStart=/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --- > ExecStart=/usr/sbin/zabbix_agentd
import wnck, gtk screen = wnck.screen_get_default() screen.force_update() windows = screen.get_windows()これでウィンドウリスト (WnckWindowのリスト) が得られる。これに対して、
w = windows[0] w.get_name() # Window Name w.get_application().get_name() # Application Name w.get.get_class_group().get_name() # Class Nameこんな感じで情報を取得し、
w.set_geometry(wnck.WINDOW_GRAVITY_CURRENT, wnck.WINDOW_CHANGE_X | wnck.WINDOW_CHANGE_Y, 100,100,0,0) w.set_title("新しいタイトル") gdk_w = gtk.gdk.window_foreign_new(w.get_xid()) gdk_w.set_decorations(0) # デコレーションの削除 # 反映させる gtk.gdk.window_process_all_updates() gtk.gdk.flush()こんな感じにウィンドウが操作できる。
172.29.4.50 - - [12/Mar/2014:22:59:39] "GET /info HTTP/1.1" 200 4 "" "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0" [pid: 15271|app: 0|req: 6/6] *.*.*.* () {32 vars in 508 bytes} [Wed Mar 12 22:59:39 2014] GET /set_center/info => generated 4 bytes in 6 msecs (HTTP/1.1 200) 4 headers in 138 bytes (1 switches on core 0) Wed Mar 12 22:59:41 2014 - !!! uWSGI process 15270 got Segmentation Fault !!! Wed Mar 12 22:59:41 2014 - *** backtrace of 15270 *** Wed Mar 12 22:59:41 2014 - uwsgi(uwsgi_backtrace+0x25) [0x431ea5] Wed Mar 12 22:59:41 2014 - uwsgi(uwsgi_segfault+0x21) [0x431f81] Wed Mar 12 22:59:41 2014 - /lib/x86_64-linux-gnu/libc.so.6(+0x324f0) [0x7fa477a794f0] Wed Mar 12 22:59:41 2014 - /usr/lib/libstartup-notification-1.so.0(sn_xcb_display_new+0x109) [0x7fa47201fa89] Wed Mar 12 22:59:41 2014 - /usr/lib/libstartup-notification-1.so.0(sn_display_new+0x2d) [0x7fa47201fb3d] Wed Mar 12 22:59:41 2014 - /usr/lib/libwnck-1.so.22(wnck_screen_get+0x117) [0x7fa474660617] Wed Mar 12 22:59:41 2014 - /usr/lib/python2.7/dist-packages/gtk-2.0/wnck.so(+0xa809) [0x7fa4748ac809] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x56fd) [0x7fa47521d04d] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5b7b) [0x7fa47521d4cb] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x848) [0x7fa47521e2e8] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0xa6917) [0x7fa475274917] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0x184810) [0x7fa475352810] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x47) [0x7fa475304647] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyInstance_New+0x7b) [0x7fa4752ec58b] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x2a57) [0x7fa47521a3a7] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5b7b) [0x7fa47521d4cb] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x848) [0x7fa47521e2e8] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0xa6917) [0x7fa475274917] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x2a57) [0x7fa47521a3a7] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x848) [0x7fa47521e2e8] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0xa6917) [0x7fa475274917] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0x184810) [0x7fa475352810] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0x11c1ac) [0x7fa4752ea1ac] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x2a57) [0x7fa47521a3a7] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x848) [0x7fa47521e2e8] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0xa6806) [0x7fa475274806] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0x184810) [0x7fa475352810] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(+0xcbdf6) [0x7fa475299df6] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x4e) [0x7fa475303d3e] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x27dd) [0x7fa47521a12d] Wed Mar 12 22:59:41 2014 - /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5b7b) [0x7fa47521d4cb] Wed Mar 12 22:59:41 2014 - *** end of backtrace *** Wed Mar 12 22:59:41 2014 - DAMN ! worker 2 (pid: 15270) died :( trying respawn ... Wed Mar 12 22:59:41 2014 - Respawned uWSGI worker 2 (new pid: 15296)最初はなんかcherrypyかuWSGIのスレッドが有効になっちゃってて変な事がおこっているかと思ったけど、どうやらPython初期化後にforkしてからGTKとかX11のAPI使っているから発生しているよう。(断定的に調べていないので違うかも。) uWSGIのlazyオプションを指定するとfork後の初期化になるようなので、それで改善した。
大地震からも日が経ち、節電という言葉もだんだん聞かなくなりつつあるなか皆様いかがお過ごしでしょうか。
なんて偉そうな事言いつつ今回のはあまりそれとは関係ないんですが、前々から会社のいろいろな機材 (サーバーとか) で使ってる消費電力のモニタとかやりたいなぁと思っていたりして、ワットモニターUSBとか、スマートコンセントとか電力計の類をいろいろ調べてたんだけど、先週とある電気量販店でF-PLUGなるよさげなものを発見した。
とまぁこんな感じです。これを使って、いろいろとデータをとってLinuxサーバーでモニタすればなにかいいことが起きるに違いないということでこれを購入。ソフトウェアは公式にはどうやらWindows用しかないようだったけど、とりあえずBluetooth (RFCOMM) ならLinuxでも比較的簡単に何とかなるだろうという目算。
とりあえず/dev/rfcomm0を使えるようにするまでの接続はググって出てきたところ (→Rasperry PiにF-PLUGを2個繋いでみた 等) を参考に。まぁ普通のRFCOMM機器の接続手順です。
あとどうやらOBDNマガジンなるものにはfplug_for_linuxなるソフトウェアが掲載されているようで、とりあえずそれを使えば現在値の取得 (電力値[W]と温度・湿度・照度) まではできた。
リアルタイムでのいろいろな値をモニタするものやりたかった事だけど、一番やりたかったのは積算の消費電力量 [Wh] を出すこと。上記のものではそこまでの機能は提供されていない。
まぁ一秒ごとに電力値を計測して足していけば積算電力もだせるだろという話もあるけど、なんか無駄な感じするし、そもそも二秒おきぐらいにしか計測できないので誤差がけっこう出る気がして気持ちが悪い。
ということで作る。上記は簡単な小物作りには面倒なC言語で作られていたので、結局全部Pythonで書き直すことにした。
幸いなことに、(というかなぜか?) データの仕様がまるっと公式ページ (F-PLUGメッセージ一覧) に掲載されていた。正直かなり見づらい上に若干不正確 (というか舌足らず?) だったりもするけど、こういうものがあるだけでかなり助かる。なんかもともと業務用のなんかの製品だったりするのかな。
まぁということでひたすらこのコードを打ち込む。
とりあえず制御用ソフトウェアをせっかく作ったので、現段階までにできたものを公開しときます。
まだUIはありません。作ってません。pyfplugモジュールにある FPlugDevice クラスでF-PLUGの操作ができます。ほとんど全ての機能が使えると思います。
ちなみにDebian 7とGentoo Linux (ともに64bit) で動作確認してます。
それは分かりません。かなりざっと不真面目にしか確認してないです。
これじゃ (精度計測としては) 参考にもならないですね。ただまぁこの感じからすると大きく外れた値はないので、とりあえずつくったプログラムはある程度正しく動いてるんでしょう。
他の所の報告ではそもそも個体差がけっこうたったりして、それなりの誤差があるようです。
(Cover Image: Original Update by BTC Keychain)
世界中でなんとなくもてはやされつつあるようなないような、BitCoin。
ということでBitCoinに関する、Satoshi Nakamoto の論文 ( http://bitcoin.org/bitcoin.pdf ) を読んだ。
【注意】社会的側面については一切触れません。純粋に仕組みだけ見てます。
仕組みとしては面白いと思うし、自分が考えていたものと問題意識からして違うので、そういう意味では面白かった。あと難しい問題が特定Hash値の計算だったりするところが「そんなんでいいんだ」という印象。
ただ、「美しい仕組みだ」とか言う人もいる [参考 2, 3] ので、なにか数学的な美しさがあるのかと思ってたけど、特段そうは思えた所は無い。いわゆる”愚直な実装”だと思う。 (社会的な意味で”美しい”と言っているのかもしれない。だとしたら分からない。後は愚直が美しいという観点もあるのだろうか)
そしてたぶん間違えてるので、もし気づいたら教えてやってください。
たぶんnonceあたりのこまかいとことか。
いぜん「ビットコインが入ってた (記録されてた) HDDを捨てちゃって大変だ!」みたいな話 [参考4] があったけど、それがそもそも理由で一番上の「困難な問題の解に対して価値を持たせたもの」みたいなことを個人的に勝手に妄想していた。要するに「その解をHDDにいれといたから大変になった」と思っていた。
が、それは違ったとしたら一体何がHDDに入っていたのか・・・?
なんかこれは「取るに足らない問題」の部分の話のよう。コインの受け渡しのトランザクションは上で書いたとおり「受け渡し元の秘密鍵で、受け渡し先の公開鍵に署名したもの」という形で記録されるんだけど、その「受け渡し先の秘密鍵」は「毎回違ったものが生成されるべき」と論文にも書いてある。つまりHDDに入っていたものはその秘密鍵の集まりだったに違いない。きっとそうだ。たぶん。
それはそうとして、そういう毀損したビットコインが今後増えていったらどうなるんだろうか・・・?確かコイン数は発行上限があったはず。
そのあたり、なんか数百年で見たときの持続可能性と、所々にアドホックな制約 (問題の解く時間の調整とか、発行コイン数とか) があったりするので、そのあたりの解消が今後の課題なんですかね。あるいはなんかの実装で既に解消されている問題なんでしょうか。そのへん論文だけでは分かりませんです。
やっぱHDDだとだめな体になったしまった。
これでうちに有るマシンは全てSSD入り。このあたり参考にした。
ちなみに換装するまうにトルクスドライバーと外付けの2.5″HDDケース買った。後者が有るとデータ移行したいばあい便利。
交換作業自体は不器用なこともあってかなり苦労したけど、データ移行はかなりあっさり終わった。
# cat /var/log/Xorg.0.log ・・・ [ 184.547] (II) NOUVEAU(0): [XvMC] Extension initialized. [ 184.547] (==) NOUVEAU(0): DPMS enabled [ 184.547] (II) NOUVEAU(0): RandR 1.2 enabled, ignore the following RandR disabled message. [ 184.547] (--) RandR disabled [ 184.550] (EE) AIGLX error: dlopen of /usr/lib64/dri/nouveau_dri.so failed (libLLVM-3.1.so: cannot open shared object file: No such file or directory) [ 184.550] (EE) AIGLX: reverting to software rendering [ 184.550] (II) AIGLX: Screen 0 is not DRI capable [ 184.550] (EE) AIGLX error: dlopen of /usr/lib64/dri/swrast_dri.so failed (libLLVM-3.1.so: cannot open shared object file: No such file or directory) [ 184.550] (EE) GLX: could not load software renderer [ 184.550] (II) GLX: no usable GL providers found for screen 0 [ 184.553] (II) NOUVEAU(0): NVEnterVT is called. [ 184.580] (II) NOUVEAU(0): Setting screen physical size to 677 x 381 [ 184.580] resize called 2560 1440 ・・・どうやらlibLLVM-3.1.soの読み込みに失敗している模様。まずそれが存在しているか、またldconfigで検索できるか確認する。
# locate libLLVM-3.1.so /usr/lib32/llvm/libLLVM-3.1.so /usr/lib64/llvm/libLLVM-3.1.so # ldconfig -p | grep libLLVM-3.1 (※なし) #存在はしているようだけど、ldconfigで検索できていないっぽい。
# cat /etc/ld.so.conf.d/05llvm.conf /usr/lib32/llvm /usr/lib64/llvm # ldconfigこれでgdmをリスタートしたら直った。
# systemctl restart gdmめでたし。 これはパッケージか何かのバグだろうか。
Vaio Pro 11 を Linux Kernel 3.12.0-rc1で使っているが、未だにSDがうまく使えない。
とりあえず参考リンクをメモ。
なんか正常に動いてるって書いてあるんだけどなぁ。。。
もう一ヶ月ぐらい前だけど。
Gentoo Linuxを入れてとりあえず仕事に使えるようにまでするのが結構大変だった。主に以下の点
まぁこんな具合か。
とりあえず軽い上にスペック的にはいいんだけど、タッチパットだけはどうもだめだ。synapticsの調整でなんとかなるんだろうか。。
size = *** img.open(hoge) img.thumbnail((size, size)) img.save(fuga)これでなぜかサムネイルがfugaに保存されるはずが、そのまま変換前の画像が保存される。 エラーも何も出ず。 いろいろ探っていたらsizeが文字列型なのが問題だった。エラーぐらい出てほしかった・・・。
古いガラケーが爆死したので、とうとう新しいガラケー買いました。
買ったのはN-01Eってやつです。なんだかんだ言ってケータイ関係はほとんど全部NECのやつ買ってる気がする。
「キーからカラフルに光るよっ」っての一つの売りにしてて、「いらねーwww」とか思ってたけど、まぁこれはこれで悪くない。
バッテリの持ちとかは分からんけど、Bluetoothとか使えるのは感動。(いままでどんだけ化石ケータイ使ってたんだよって話もあるが)
以下メモ:
まぁなんか、Androidとかなんとかフォンとかって何だかんだいってどいつもこいつも似通った感じでつまんないんだけど、結構ガラケーはそれぞれ色があるのでいろいろとおもしろい。
昨日のエントリと似たようなことが「ウェブアプリ」にも起っている気がする。
「前者⊃後者」だからいいのかなぁ思ってはいたが、ただWebじゃあなくてもHTML使ってればそういう風に呼称しているようなので、前者と後者は相容れない部分がある。
これも結局言葉の問題なのでどうでもいいんだけど、たまに前者と後者を比較的ちゃんと区別しないと伝わらないようなシーンもあって、昨日のCMSより若干困るといえば困る。
まぁ、バズワードの宿命か。