✖
デスク裏の整理
こんな感じで壁に背を向けて座る感じでデスクを設置したので、普通に部屋に入ってくるとき、デスクの裏側が見えるようになってる。
ケーブル自体はデスク裏に貼り付けることで殆ど気にならないようになったけど、ディスプレイアームのクランプ部分がちょっとみっともないって感じだったので工夫して隠した。
クランプ部分は机の厚さによって3段階に調整できるようになっている関係で、1段2穴、3段分 (うち1段は本体の固定用に使用) のネジ穴があるので、余っている穴をうまく利用して隠す板を取り付けようと思った。
ディスプレイアーム自体はデスクに対して取り付け位置が可変なので、完全に固定するような取り付けをするとあとで困るかなと思い、大きな一枚板をそのまま貼り付けるわけではなく、小さな板をまず一枚取り付けて、その上に軽い素材の板 (プラスチックダンボール) を机の幅分、両面テープで貼り付けるという形にした。
最終的に、
- クランプ金具 (デスクに固定済み)
- ワッシャーx3 (ゲタ)
- 木製の15cm四方程度の板
- 同じサイズのプラスチックダンボール (ネジ山埋める用)
- M6のネジ (クランプ金具のネジ穴まで貫通)
- 机の幅分の板
の順になる感じに。
クランプ金具にはM6のネジが切ってあった。金具の中央にちょっと盛り上がりがあって、そのまま板をつけると板がしなってしまうので、ワッシャーでオフセットした。あとネジの頭が隠れるように小さめのプラスチックダンボールを挟んで、ネジ頭をそれにめり込ませるようにした (木にあさりをつけるのは大変なので…)。
机の幅分の化粧板についてはプラスチックダンボールを140cm x 15cmぐらいで切り出して、木目シートを貼ってそれっぽくしてある。本物の木を使ったほうが綺麗にいくと思うけど、このサイズの木だとそこそこ重量があって不安だし、加工するのが面倒なのでこうしてある。ただやっぱりプラスチックダンボールだとしなってしまうので、硬い針金を通すとか、もうちょっと工夫がいりそう。
木目シートは以下のをホームセンターで見てから買った。あんまり置いてなかったけど、これは質感がよくてよかった。あんまり安くはないけど、もっと安いやつは変な光沢があって、あからさまに塩ビって感じがしてひどかったので、これぐらいは仕方ないっぽい。突板を貼るっていうのも考えたけど、突板のほうが圧倒的に高いのでやめた。
Twitter Card が承認された
申請して承認されないと表示されないという仕様なので、大量のユーザーがいるASPサービス向けなんだろうなー と思いつつ、一応申請をしたら、忘れたころに承認メールがきた。
だいたい3週間ぐらいかかったようだ。「Twitter Cards - Your submission has been approved!」というメールがくる。
リクエストオブジェクトへ、型を明示するメソッドの追加
ウェブアプリケーションを書くとき、最近はだいたい Plack::Request なりなんなりを継承して、そのプロジェクト専用のリクエスト/レスポンスオブジェクトを作ることにしている。
特にリクエストオブジェクトは、リクエストのパラメータを適切に変換して返すようなメソッドを生やすことが多い。例えば以下の例:
sub number_param {
my ($self, $key, $limit) = @_;
$limit ||= 'inf';
my $val = $self->param($key) // "";
if ($val =~ /^\d+(.\d+)?$/) {
my $ret = $val + 0;
if ($ret <= $limit) {
$ret;
} else {
$limit;
}
} else {
undef;
}
}
この number_param() メソッドは、$key と $limit という引数をとって、$key という名前のパラメータを数値にして返す。もし数値として評価できないもの、あるいは指定されていなければ、undef を返す。$limit が指定されている場合、$limit を上限とした数値を返す。
同じように、
sub string_param {
my ($self, $key, $limit) = @_;
$limit ||= 'inf';
my $val = decode_utf8 $self->param($key) // "";
length $val > $limit ? substr($val, 0, $limit) : $val;
}
と、string_param というメソッドを定義したりしている。これも $key と $limit を引数にとり、$key という名前のパラメータを文字列にして返す。$limit が指定されている場合、$limit 長で制限される。
このようなメソッドをリクエストオブジェクトに生やす利点は、
- 型を明示することで予期せぬバグを防げる
- パラメータ値のような信頼できない値を事前にチェックできる
- 全体で統一した型変換アルゴリズムを設定できる
- コントローラなどでコードの可読性が向上する
あたりがあると思っている。
文字列化まわりは、フラグまわりでハマったりするので、明確に「これは文字列である」というのをコード上でわかりやすくしたほうがバグが出難いと思う。
数値変換も、ページャを素朴に実装すると、巨大な数字を指定されてほぼテーブルフルスキャンかかっちゃいました、みたいなことが起きたりするので、数値に制限をかけたりするのが簡単にできると捗ると思う。
param() を直接使うのはできるだけ避けるべきだと思う。
人感センサー付き LED ライト
アイリスオーヤマ LED電球 口金直径26mm 50W形相当 電球色 下方向タイプ 人感センサー エコハイルクス LDA8LHS1 cho45
これを、玄関と廊下用に2つ買った。650lm は結構明るいなあという印象。
消灯までの時間が5分で、ちょっと長く感じる。廊下につけると、つけっぱなしだと思って無意識に消してしまうことがあるようだ。玄関では全く問題ないけど、あんまり人感センサー付きは用途がないかもしれない。とりあえず廊下ではなく洗面所につけなおした。
結局、洗面所もやめて、トイレにつけた。
このエントリを参照するエントリ
✖
Mac で mp3 を再生するソフトウェア
Mac でファイルとして実体のある mp3 オーディオファイルを再生しようと思うと、普通 iTunes だろうと思う。別にこだわりもないし、まともに使えるならiTunes でいいんだけど、まともに使うことができない。
代替のものを探している。ただ mp3 ファイルを再生したいというだけなのに、ちょうどいいものが不思議とない…… 理想としては foobar2000 なんだけどなあ。
iTunes
上記の通りだけど全然使えない。DAAP を使うなら問題なかったんだけど……
- mp3 ファイルのタグをちゃんと読んでくれない
- 再生するためにライブラリに追加しないといけない
- しかも追加するプロセスがブロッキングかつクソ遅く、途中で止まる……
VLC
よく知られたメディアプレイヤーだけど、mp3 ファイルを再生すると、確率的に出力にクリッピングノイズのようなものが乗る。まじでただのバグにしか思えないけど、設定をいろいろ変えても回避できない……
Songbird
Mozilla が昔つくってたやつ。iTunes コピーみたいな感じ。全く使えなかった。
- 再生するためにライブラリに追加しないといけない
- 外付けHDDを勝手にスキャンするうえにディスクアクセスでブロックして応答なしになる
Google Chrome
最近のブラウザは audio 要素対応とかの関係でプレイヤー機能がついている。普通にブラウザにドラッグ・ドロップしたらその曲が普通に再生できる。
- 1曲ずつしか再生できない
- 他のタブで負荷をかけると音が止まることがある
連続再生するやつは適当にでっちあげればできる。ほんとにキューに入れて再生するだけなら簡単に書けるので書いた。実際使うかっていうと、ちゃんと作りこまないとだめだなあという感じ……
Play Mac OS
Play あとで試す。同じ作者がDecibelというのを売ってるが、これの前身になるようなプロジェクトのようだ。4年ぐらい更新されていないしインターフェイスは微妙……
✖
miss