祢占堂

はい

レコーダーに B-CAS カード認識させた

こいつに B-CAS カード差して適当な USB ポートに差しておく。チップ付いてるほうが上。

NTT-ME SCR3310-NTTCom
NTT-ME SCR3310-NTTCom
posted with amazlet at 13.07.01
NTT-ME (2007-07-24)
売り上げランキング: 220

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

PT3 Rev.A
PT3 Rev.A
posted with amazlet at 13.07.01
アースソフト
売り上げランキング: 798

アニメ録画する用のサーバー買った

3ヶ月くらい前に。

だけどだるくて最近やっと構築はじめたのでメモしておきます。

FUJITSU PRIMERGY MX130 S2 OSレス アレイタイプ-250GB×1 PYM132ZD2X

これが当時 12,000 とかだったのでスペックつらそうだけど買った。

CPU

1 コア [ AMD Sempron プロセッサ 145 (2.8GHz) ] * 1

メモリ

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 のが鉄板っぽい。

PT3 Rev.A
PT3 Rev.A
posted with amazlet at 13.07.01
アースソフト
売り上げランキング: 798

NTT-ME SCR3310-NTTCom
NTT-ME SCR3310-NTTCom
posted with amazlet at 13.07.01
NTT-ME (2007-07-24)
売り上げランキング: 220

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:ymotongpooymotongpoo/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
f:id:drillbits:20130607175949j:plain,w200

After
f:id:drillbits:20130607180108j:plain,w200

n を 5 とかにするともうちょっと原型とどめた感じになる。
f:id:drillbits:20130607180001j:plain,w200

最初ルビーでやるやつを Go で書こうと思ったけど、ascii-8bit とかいうのがよくわからなかったので、容姿端麗で高い技術を備えた id:moriyoshiJSのやつをパクリました。

これも普段いっさい触ることのないビット演算とか使っててまったく意味がわからなかったけど、とりあえず動いた。おだぎりのおじちゃん曰く、こうそくふーりえへんかんとかいうのらしい。ぼくはファイナルファンタジータクティクスで有名なあれかーと思いました。

おしまい。


Django Form の ImageField をテストするやつ

FileField は StringIO みたいなファイルライクなオブジェクトが使えるんだけど、ImageField はちゃんと画像っぽいやつじゃないと form.is_valid() == False になってしまうのでアレする。

TEST_IMAGE はお好きな画像を open して read して encode('base64') してあげればできあがりです。