技術をあえて狭める年になりそうです。
やること
- ブログを独自ドメインに移行する
- Sphinx と S3 ベースで動かすつもりです、さよならはてなぶろぐの予定
- Raspberry Pi を使って何かする
- 小さな PC に手を出してみる
- 技術書以外を読む
- もう少しいろいろな本を読むようにる
年の初めはこの辺を想定してたみたいです。
英語はまぁ色々な場面で使いました。英語のメールとか人生で一番書いた気がします。
話す機会も増えました。へったくそですがとりあえず勢いで話してます。ただヒアリングが辛いですね。
今後はこの辺か。
結局 XenServer 以上の事はやりませんでした。あまりにもコストが大きすぎて手を付ける余裕が無かったです。
自分は全然やりませんでしたが、やらせることには成功した歳だったなと。
「やること」と「やらせること」を分けるべきだなと。あとはやっぱり新しい言語を学ぶ場合は「仕事」をベースに考えないと難しい事が明確になってきました。
これをもとに来年の目標を立てたいと思います。来年はまぁ色々やることがわかってるので大丈夫かな。
Gist に良く色々書いてるのでそれをまとめるサイトを作ってみました。
ブログだと細かい変更が面倒なので Gist に書いてみました。
Gist の方がレンダリングされて見やすいのでオススメです https://gist.github.com/4243786
[crypto][erlang]AES の CTR モードのストリームタイプ
暗号データにランダムアクセスが可能になる (IVec が固定) ため、並列処理が可能となる AES の Counter Mode を試してみました。
ストリーム暗号なので、パディングがいらないのがいいですね。
まずは基本的なところで
Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [kernel-poll:false] [dtrace] Eshell V5.9.2 (abort with ^G) 1> Key = crypto:strong_rand_bytes(32). <<195,208,93,158,92,153,199,116,175,237,136,222,99,112, 132,235,113,181,239,230,36,227,75,166,220,44,94,0,152, ...>> 2> IV = crypto:strong_rand_bytes(16). <<103,24,128,108,59,235,30,41,208,236,122,47,44,216,200,2>> 3> Cipher = crypto:aes_ctr_encrypt(Key, IV, <<"spam">>). <<145,208,153,142>> 4> crypto:aes_ctr_decrypt(Key, IV, Cipher). <<"spam">>
Erlang の crypto には aes_ctr_stream_init/2 があるのでそれを使ってみます
Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [kernel-poll:false] [dtrace] Eshell V5.9.2 (abort with ^G) 1> Key = crypto:strong_rand_bytes(32). <<91,111,86,156,1,12,23,244,91,25,153,159,25,139,115,205, 228,100,158,61,9,64,165,14,185,43,243,39,33,...>> 2> IV = crypto:strong_rand_bytes(16). <<154,49,236,153,246,155,109,146,212,65,155,56,184,226, 142,215>> 3> State = crypto:aes_ctr_stream_init(Key, IV). {<<91,111,86,156,1,12,23,244,91,25,153,159,25,139,115,205, 228,100,158,61,9,64,165,14,185,43,243,39,...>>, <<154,49,236,153,246,155,109,146,212,65,155,56,184,226, 142,215>>, <<0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>>, 0} 4> {NewState, Cipher} = crypto:aes_ctr_stream_encrypt(State, <<"spam">>). {{<<91,111,86,156,1,12,23,244,91,25,153,159,25,139,115, 205,228,100,158,61,9,64,165,14,185,43,243,...>>, <<154,49,236,153,246,155,109,146,212,65,155,56,184,226, 142,216>>, <<255,161,127,123,51,205,69,22,77,219,85,251,253,52,200, 200>>, 4}, <<140,209,30,22>>} 5> crypto:aes_ctr_stream_decrypt(State, Cipher). {{<<91,111,86,156,1,12,23,244,91,25,153,159,25,139,115, 205,228,100,158,61,9,64,165,14,185,43,243,...>>, <<154,49,236,153,246,155,109,146,212,65,155,56,184,226, 142,216>>, <<255,161,127,123,51,205,69,22,77,219,85,251,253,52,200, 200>>, 4}, <<"spam">>}
PyQt をちまちまと試していたのですが @nobonobo から PySide も Python3.3 に対応したのが MacPorts にあるよという事を教えて頂いたので試してみました。
そもそも PyQt や PySide はインストールが色々めんどくさいというイメージがあり、手を付けるのがめんどくさいなぁと思っていました。
とりあえず試すだけ試してみました。
sudo port install py33-pyside
特にはまることも無くインストールが完了し、あとはサンプルコードを書いて実行したところ問題なく動作しました。
# encoding=utf8
import sys
from PySide import QtGui
class MainForm(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)
hello_button = QtGui.QPushButton("はろーぱいさいど")
self.setCentralWidget(hello_button)
def main():
app = QtGui.QApplication(sys.argv)
form = MainForm()
form.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
インストールコストがとても低くなっていることにびっくりしました。
難しい事は全然知らないのでまだ PyQt と PySide の違いにぶつかっておりません。 とりあえずは PyQt ではなく PySide で勉強を続ける予定です。
とにかくちまちま手を動かすことから始めるしかないですね。