レコーダーに B-CAS カード認識させた
こいつに B-CAS カード差して適当な USB ポートに差しておく。チップ付いてるほうが上。
pcsc-tools + 依存パッケージ入れて起動してみる。
$ sudo aptitude -y install pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools $ pcsc_scan PC/SC device scanner V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr> Compiled with PC/SC lite version: 1.7.4 Using reader plug'n play mechanism Scanning present readers...
なんか上記で止まってしまう。どうやら起動ファイルの修正が必要っぽい。
$ sudo vi /etc/init.d/pcscd - # DO NOT start the daemon on startup - # comment the line to have the same behavior as in version < 1.6.0 - exit 0 + # DO NOT start the daemon on startup + # comment the line to have the same behavior as in version < 1.6.0 + #exit 0
再起動すると認識されますよ。やりましたね。
$ sudo /etc/init.d/pcscd restart $ pcsc_scan PC/SC device scanner V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr> Compiled with PC/SC lite version: 1.7.4 Using reader plug'n play mechanism Scanning present readers... 0: SCM SCR 3310 NTTCom [Vendor Interface] 00 00 Tue Jun 18 23:49:32 2013 Reader 0: SCM SCR 3310 NTTCom [Vendor Interface] 00 00 Card state: Card inserted, ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99 ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99 + TS = 3B --> Direct Convention + T0 = F0, Y(1): 1111, K: 0 (historical bytes) TA(1) = 12 --> Fi=372, Di=2, 186 cycles/ETU 21505 bits/s at 4 MHz, fMax for Fi = 5 MHz => 26881 bits/s TB(1) = 00 --> VPP is not electrically connected TC(1) = FF --> Extra guard time: 255 (special value) TD(1) = 91 --> Y(i+1) = 1001, Protocol T = 1 ----- TA(2) = 81 --> Protocol to be used in spec mode: T=1 - Unable to change - defined by interface bytes TD(2) = B1 --> Y(i+1) = 1011, Protocol T = 1 ----- TA(3) = 7C --> IFSC: 124 TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5 TD(3) = 1F --> Y(i+1) = 0001, Protocol T = 15 - Global interface bytes following ----- TA(4) = 03 --> Clock stop: not supported - Class accepted by the card: (3G) A 5V B 3V + Historical bytes: + TCK = 99 (correct checksum) Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99 Japanese Chijou Digital B-CAS Card (pay TV)
レコーダーに PT3 つけた
OS は Ubuntu Server 12.04.1 LTS いれた。
このレコーダー、PT3 を PCI x1 スロットに差そうとするとチップセット用のヒートシンクにぶつかる。悲しみを乗り越えて x4 スロットに差さないといけない。
差し込めたらドライバ入れる。最初 /etc/modprobe.d/blacklist.conf に追記するの忘れてて認識されなかった。
$ sudo echo "blacklist earth-pt1" >> /etc/modprobe.d/blacklist.conf $ sudo aptitude -y install gcc build-essential git $ mkdir ~/src $ cd ~/src $ git clone https://github.com/m-tsudo/pt3.git $ cd pt3 $ make $ sudo make install
これで再起動すれば認識される。
$ sudo reboot $ ls -la /dev/pt* | grep video crw-rw-rw- 1 root video 251, 0 7月 1 23:25 /dev/pt3video0 crw-rw-rw- 1 root video 251, 1 7月 1 23:25 /dev/pt3video1 crw-rw-rw- 1 root video 251, 2 7月 1 23:25 /dev/pt3video2 crw-rw-rw- 1 root video 251, 3 7月 1 23:25 /dev/pt3video3
アニメ録画する用のサーバー買った
3ヶ月くらい前に。
だけどだるくて最近やっと構築はじめたのでメモしておきます。
FUJITSU PRIMERGY MX130 S2 OSレス アレイタイプ-250GB×1 PYM132ZD2X
これが当時 12,000 とかだったのでスペックつらそうだけど買った。
メモリ
2 GB [DDR3 1333 U-DIMM] * 1
最大は 4GB * 4 で 16 GB
内蔵ストレージ
SATA HDD 250 GB * 1
最大は 2TB * 4 で 8 TB
PCIスロット
PCI-Express 2.0 (x16 レーン) * 1
PCI-Express 2.0 (x4 レーン) * 1
PCI-Express 2.0 (x1 レーン) * 1
PCI(32bit/33MHz) * 1
CPU もメモリもストレージも少ないけど、録画するだけならストレージ以外は大丈夫そう。同じもの買った人のレビュー読んでたら買って即 CPU 変えたりとかしてたけど、ハードウェアあまりわかんないので保留した。
エンコードとかするのはまた考えます。
あと一緒に PT3 と B-CAS カードのリーダーも買った。NTTCom のが鉄板っぽい。
Django で HttpResponse を返すようなビューの context をテストする
Django で render_to_response 使って返ってくるレスポンスからは template_name とか context とか取れない。
# -*- coding: utf-8 -*- from django.shortcuts import render_to_response from django.template.context import RequestContext def spam(request): response = render_to_response( template_name='spam.html', dictionary={'ham': 'HAM'}, context_instance=RequestContext(request), ) # response.template_name とかない # response.content にレンダリングしたあとの HTML が入ってる return response
TemplateResponse あたりを返せや、という話なんだけど Django の用意した便利クラス(FormPreview とか)がこういう返し方してたりするのでつらい。Django の便利クラスを信用すると死ぬ。
だけど実は template_name はテストできる方法があって、django.test.TestCase の assertTemplateUsed というのをコンテキストマネージャーとして使う。
def test_get(self): request = self._makeRequest('GET') with self.assertTemplateUsed('spam.html'): response = self._callFUT(request)
この中では django.test.signals.template_rendered というのを使っていて、テンプレートがレンダリングされたタイミングでフックさせて assert してるっぽい。
ただ、これの context バージョンがなかったので assertTemplateUsed の実装を真似して書いた。
以下、ギストで失礼します。
Django の便利クラスを信用すると死ぬ。
以上です。よろしくお願いします。
Go で Twitter API 叩くの書いた
id:ymotongpoo の ymotongpoo/go-twitter 使った。
最初は kurrik/twittergo 使ってたけど api の URL 自分で書くみたいになったのでやめた。
わりと手探りで書いたけど動いた。Go 的におかしな書き方とかあったら教えてください。json から consumerKey とか取得したりもしてる。
Go でライブラリ書くとき設定ファイルは yaml とかがいいのかなと思って調べたら yaml なんで複雑なのやめて json にしろ、みたいなのが見つかって json にした記憶がある。
Go でグリッチするの書いた
みんな大好き Go 言語でみんな大好きグリッチ画像を作れるの書いた。
https://github.com/drillbits/golitch
こんな感じで使えると思う。
$ git clone git@github.com:drillbits/golitch.git $ go run main.go -f chimpui.jpg -o chimpui_glitched.jpg -n 10
オプションはこんなの。
-f: 犠牲になるファイルパス -o: 出力するファイルパス -n: グリッチの処理する回数
Before
After
n を 5 とかにするともうちょっと原型とどめた感じになる。
最初ルビーでやるやつを Go で書こうと思ったけど、ascii-8bit とかいうのがよくわからなかったので、容姿端麗で高い技術を備えた id:moriyoshi のJSのやつをパクリました。
これも普段いっさい触ることのないビット演算とか使っててまったく意味がわからなかったけど、とりあえず動いた。おだぎりのおじちゃん曰く、こうそくふーりえへんかんとかいうのらしい。ぼくはファイナルファンタジータクティクスで有名なあれかーと思いました。
おしまい。
Django Form の ImageField をテストするやつ
FileField は StringIO みたいなファイルライクなオブジェクトが使えるんだけど、ImageField はちゃんと画像っぽいやつじゃないと form.is_valid() == False になってしまうのでアレする。
TEST_IMAGE はお好きな画像を open して read して encode('base64') してあげればできあがりです。