パスワードを忘れた? アカウント作成

tuneoさんのトモダチの日記みんなの日記も見てね。 スラドのTwitterでストーリをフォローしよう。

13602304 journal
日記

tuneoの日記: Pythonのcontextlibでハマる 5

日記 by tuneo

ロックファイルを使ったスクリプトの排他制御をやろうと思ってcontextlibに手を出してみた。

つまり

with lockfile("/var/lock/test.lock"):
  排他的な何か
 
排他的じゃない何か

みたいな感じで書けると便利だな、と思ったわけである。
お気楽にこの手の処理を実現するためにcontextlibモジュールというモノがあり、そしてそこにはジェネレータでコンテキストマネージャをお気楽に実装するためのデコレータがcontextlib.contextmanagerがある、というところまでは理解した。

import contextmanager from contextlib as cm
import os
import errno
 
class Locked(Exception):
  pass
 
@cm
def lockfile(filename):
  try:
    fd = os.open(filename, os.O_CREAT | os.O_EXCL)
    yield fd
  except OSError as e:
    if e.errno == errno.EEXIST:
      raise Locked
    else:
      raise
  else:
    os.close(fd)
    os.remove(filename)

これでイケると思ったんだがいまいち芳しくない。

withブロックの中でsys.exit()とかraise SystemExitしたりKeyboardInterrupt例外が発生すると、コンテキストマネージャお構いなしでプロセスが終了するのか?だとするとあんまりご利益無いなー。

13601434 journal
日記

tuneoの日記: 学ばない野郎だったか…… 1

日記 by tuneo

営業「ワークステーションに高いグラボを挿して、ラックマウントキットを取り付けてラックに収め、KVMドロワーから操作するんです!」

俺「え?そのKVMドロワーってアナログVGAじゃないの?きょうびのお高いグラボは直にはつながらないよ?」

営業「変換するから大丈夫です!」

俺(以前にもグラボがつながらないモニタを発注して懲りてるだろうから大丈夫かな?)

俺「よくよく発注書見たら、あの野郎DP→DVIとDVI→VGAで2段変換する魂胆かよ!製品付属のDP→DVI変換アダプタはDVI-Dに変換するアダプタだからDVI-I→VGAの変換は刺さらないぞ?しかもKVMドロワーに繋げるってことは、DVIオス→D-SUBメスに変換しなきゃいかん。だいたい俺、前回のヘマの時に"コンピュータでおまんま食ってる会社が客に収めるシステムで多段変換はあり得ん、付属品を使って極力安く上げようなんてせこい下心を出しちゃダメ"ってメール書いたのに!!(怒)」

13600420 journal
日記

tuneoの日記: その1秒が明暗を分ける

日記 by tuneo

pyudevを使って「ディスクをドライブに挿入するとメディアを検出して適宜吸い出してくれるプログラム」を作ったのだが、ディスク挿入が検出されたら喜び勇んで即吸い出しプログラムを起動!とかやるとうまくいかなかった(データディスクの吸い出しが途中で終了してしまう)。

あれこれ頭を抱えたのだが、ふと気まぐれを起こして吸い出しを始める前に約1秒ウェイトを入れるとうまくいった。

とりあえず骨子は出来上がったので、データディスクのみならず音楽のディスクにも手を広げていきたいところだ。

MusicBrainzなりfreedbなりに接続してメタデータを拾ってこれるCDリッパーで具合がイイのを探さないと。

13593582 journal
日記

tuneoの日記: 中身の希薄な会議は拷問に等しいな 4

日記 by tuneo

ここのところ気温が低くて調子が悪いところに心身に拷問をくわえられてダウンしてしまった。

とりあえず、10秒間に5回くらい「要するに」「まぁその」とか言うのやめてくれません?あと、質問とか要望に対して逐一食い気味に反論するのも。

13590492 journal
日記

tuneoの日記: ぬがーudevめんどくせー!! 3

日記 by tuneo

組みあがらないサーバと片付かない段ボールと調子が悪いデスクトップPCから逃避して、ディスクを光学ドライブに突っ込むと挿入を検出して、メディア種別に応じてデータディスクなら適宜ddでイメージファイルこさえたり、オーディオCDならCDリッパーで音楽取り込んだりしてくれるツールを開発中。もちろん、どこぞのCDDEとかいうツールとは違ってちゃんと挿入を待つヤツをだ。

udevやpyudevのドキュメントはあるのだが、CDをインサートするとudevでどういうイベントが発生してどのプロパティにどんな値がセットされる、とかそういう詳細を書いてあるドキュメントが全然見当たらないときた。

しかたがないのでudevadm monitor -p -uとかやってディスクを出したり入れたりして挙動を調査。なんとか動く代物には仕上がりつつあるんだが、いかんせんヒューリスティックな判定条件なのでこれで万全に動くのかわかんない。うーあー面倒くさいー。

できれば外部コマンド(ddとかcdparanoiaとか)の実行部分をマルチスレッド化して、複数のドライブを接続した場合は並列に処理できると尚可なのだが……。

13590371 journal
日記

tuneoの日記: ProBookさん

日記 by tuneo

先日、セコハンのモバイルワークステーションを買いそびれた傷心を癒すためにアウトレットのHP Probook 645 G2を買った。メモリを最大(16GB)まで増設したのでなかなか使い勝手はよい。

熱設計がわりとちゃんとしているらしく全力叩き込んでもそんなに熱くないし、AMD A8プロセッサ搭載だからネイティブQuadCoreだし、曲がりなりにもRadeon Graphics搭載なので、3DMarkでもコンスタントに10fps出るんだぜぇwww
# なお、去年支給された会社のThinkpad(Intel Core i5)では10fpsも出ませんでしたw

「キーボードが安っぽい」「ストレージがM.2の256GB SSDなんだけどSATA接続」「OSがWindows 7Pro」というあたりが不満なのだが、キーボードはどうしようもないので残り二つをどうにかしたい。

どうせSATA SSDならM.2じゃなくてコスパのよい2.5インチので500GBとか1TB積んでもいいわけだし(ただしその場合、現在使用中のM.2 SSDは取り外すっぽい)。あとはWindowsを10にアップグレードするタイミングだなー。

13589853 journal
日記

tuneoの日記: よつばと!14巻

日記 by tuneo

・ヨガスタジオの妙齢の女性たちに爆弾ぶっこむよつば強い
・あさぎ何気に小技が利く
・トラ子の事実が容赦なし
・よつばの夢はでかすぎる
・雑踏を行く群集に爆弾ぶっこむよつばマジ強い
・満員電車でも爆弾ぶっこむよつば強すぎだろ
・変形機構をざっくり片付けるとーちゃん強い
・つか小春子さん太っ腹すぎね?

13589792 journal
日記

tuneoの日記: やべぇ、いよいよ末期的

日記 by tuneo

拙宅のデスクトップPCだが、勝手に電源が落ちる現象が頻発する上に、運よくリモートデスクトップ接続でログオンできても応答性が極端に悪くてまともに操作ができない。CPU負荷はほぼゼロだしイベントビューアにdiskのエラーもないからSSDのエラーでもない模様。おそらくNICとかマザーボード界隈だ……。かといって馬鹿高いメモリを買ってまでDDR4に移行する気もないし。

とりあえず、腐れカーネルを掴まされて踊らされて交換した無実のマザーボードがあるので、そいつに換装してみるかしらん。

……ちなみに職場のSandyBridgeなCore i7のPCもマザーボードが盛大に腐っている模様orz。こちらは週明けにAMD A10オンボードのマザーボード(BIOSTAR A68N5600)に載せ換えて使う予定。Core i7-2600は売却かな。

13589376 journal
日記

tuneoの日記: 自分用メディアライブラリへの第一歩 1

日記 by tuneo

やりたいのは「光学ドライブにメディアが挿入されたことを検出し、必要に応じて各種プログラムを起動して処理する」ということだ。

オーディオCDならcdparanoia、ISO-9660やudfならdd if=/dev/cdrom of=ほにゃらら.isoを起動してイメージファイルを作る、という感じ。

Ubuntu/Debianにはこれをこなすcddeというツールのパッケージがあったので使ってみた。……起動するとメディアの挿入を待って処理してまた待って、みたいな動作をすると書いてあったんだが、そんな動作はまったくしないですぐに終了してしまう。てんでダメダメだ。pyudev使って自分で作った方が早いか?

なお、低価格エロゲーの中にはボリュームラベルのつけ方が雑なものがある、という心底どうでもよい学びがあった。何だよ2012_03_04だの"マイディスク"って(呆れ)。

13589237 journal
日記

tuneoの日記: サーバを構築しつつスクリプトを書こうとして開発環境で悩む

日記 by tuneo

運用のためにPythonスクリプトを書こうと思ったんだけど、きょうびエディタは何を使うべきなんだろうか。

普段はEmacsのPython-modeを使っていて「モダンな開発環境も使わないと」とアレコレ試しては見てるんだが全然定着しない。
# 以前Eclipseの動作検証をやって以来、職場ではEclipse+PyDevは使っているんだが、アレはガチな機械で使わないとやたら重いしな。

Emacs+Python-modeにあって他のエディタにはなかなか同等の機能がない(ゆえに離れられない)ものが「自動デデント」だ(「スマートインデント」というのが正しい呼称なのかな)。

if condition:
    # do something when condition is True←この行をインデントするエディタはたくさんある
else:
    raise NotImplementedError #ここで例外を送出したら次の行は実行されない
    # Never reached line. ←にもかかわらず凡百のエディタはこの行のインデントレベルが前行と同じ
# EmacsのPython-modeはraise/break/continue/returnでブロックが終わることを認識してデデントするのでカーソルが即ここに来る。賢い。

一行空行を打つとデデントしてくれるエディタもあるんだけど、どうもしっくりこない。

typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...