Screaming Loud

日々是精進

python

PythonでCFBを使って暗号化したものがGoで復号できない

Goには標準パッケージにcipherがあり、それを用いると暗号化復号化を行うことができる 例えば暗号化、復号化は以下のように定義することで実行できます。 import ( "crypto/cipher" "crypto/des" ) func TripleDesEncrypt(data, key, iv []byte) ([]byte, er…

slickのcase classをつくるのがめんどくさかったので、スクリプトで作った

slickのcase classをつくるのがめんどかったので、SQLを投げればcase classとTableを生成するスクリプト作りました。 (すでにslick-code-generatorとかある。車輪の再発明。。) Schema code generation — Slick 2.0.0-RC1 documentation 作った経緯として…

PyConJp2014に参加してきた

この季節は、カンファレンスてんこ盛りですね。今日は、PyConJpに参加してきました。 基調講演 HerokuのKenneth Reitz氏でした。 普通にPython3をdisってましたねw DeepLearning for Image Recognition in Python DeepLeaning自体の難しいことは話さず、ラ…

もうそろそろ規約変更になってしまうが・・・。

そういえば、昔書いてずっと使ってたDynamicDNS自動更新スクリプトがあったので、晒す。 #coding:utf-8 import subprocess import re import time from optparse import OptionParser CRT_IPF = '/usr/ddns/CRT_IP.dat' NEW_IPF = '/usr/ddns/NEW_IP.dat' LO…

BloomFilterをjavaとpythonで書いてみた。

Javaほんとに面倒くさい。 慣れていないからなのか?BloomFilterを両方で書いてみた。 python # -*- coding:utf-8 -*- from bitarray import bitarray import hashlib import sys class BloomFilter(object): def __init__(self,bitLength): self.bitarr = b…

Suffix ArrayをPythonとJavaで比較

Javaの勉強を始めたので、JavaでSuffix Arrayの実装をやってみた。 一応今日中にやるという目標を立てていたので、達成できてよかった。Python # coding:utf-8 ''' 1,文字列を分解する関数 2,ソートする関数 3,配列に格納する関数 ''' def suffix_arra…

frozenset型のイテレーション速度

以前,set型とlist型のイテレーション速度 - Screaming Loudを比較したが,frozenset型に関してはどうなのだろうか?と疑問を持ち.比較してみた.実験の仕方は同じだが,以下のようになった. set 12.19 list 11.01 frozenset 22.92frozensetのイテレーショ…

Pythonで実装する類似度計算

A = {"みかん":5,"りんご":8,"ぶどう":2} B = {"みかん":5,"なし":8,"ぶどう":2,"もも":1} 辞書の要素は{単語:その出現頻度}という構成です.この2つのベクトルの類似度を計算する尺度を紹介する. PMIなど共起についての尺度は使わず,単純なベクトルの比較…

set型とlist型のイテレーション速度

set型とlist型のイテレーションによるスピードの違いを調べてみた. setiter = set(range(100000000)) listiter = list(setiter) test = "" import time #set型のかかった時間 start = time.clock() for a in setiter: test = a print time.clock() - start …

pythonでoptionを関数へ

pythonでコードを書く時,メインモジュールを使っていると思う. 自分はいつもそのメインモジュールの中にoption系を全部書いていた. option系って勝手に言ってるけど,要はコマンドラインでoptionをつけるモジュール. →15.4. argparse — コマンドラインオ…

ビタビアルゴリズムをpythonで実装してみた

ビタビアルゴリズムを理解も兼ねて実装してみました. # -*- coding:utf-8 -*- states = ("rainy","sunny") observations = ("walk","shop","clean","shop","walk") start_prob = {"rainy":0.6,"sunny":0.4} transit_prob = {"rainy":{"rainy":0.7,"sunny":0…

extbodyにおける文字化けの対処

extbody -- Blog&News本文領域抽出ツール手軽な本文抽出ツールなのですが,Unicodeにしっかり直しているのに文字化けしてしまう問題について.ソースを少し直すと大体直ります.ダウンロードしたソースのディレクトリに入り emacs ./extbody/extbody/PageInf…

リスト内の最大値を見つける

最大の値を見つけるのは簡単だが,そのindexを取るのはそういえばどうやるんだっけ? と思い,少し調べて速度比較してみた. from itertools import count from operator import itemgetter from time import clock import random def func1(x): return x.in…

K-means

今回は"k-means"(k-平均法)を実装してみました. k-meansに関してはネット上でたくさん説明されています. 簡単に説明すると, 前提:クラスタ数は与えられている 1,適当に各データ点をクラスに割り振る. 2,各クラスタの重心を求める 3,各データ点を…

辞書型におけるsetdefaultのTips

通常の辞書 dict.setdefault()は単純に値を返すだけかと思っていたら, 辞書の辞書みたいな使い方もできるんですねー. >>> dict = {} >>> dict.setdefault('a',{}).setdefault('b',3) 3 >>> dict {'a': {'b': 3}} 辞書の中にリスト,タプルなども可能です.…

msgpack-pythonのインストール

jsonよりも速いmsgpackのインストールでのメモ. msgpack-python0.1.12のインストールでのエラー msgpack-python0.1.12のインストールで以下のようなエラーが出てました. gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-protot…

コメントのススメ

プログラミングをするときにコメントアウトしてコードの可読性を上げるのは常識ですね. Pythonのコメントは「#」ですが,実は"""hogehoge"""で書いたほうが良いことを知りました. 今まで知らなかったことが,恥ずかしい話なのですが・・・.ではどうして""…

twitterとPython (tweepy)

pythonからtwitterに投稿するためのモジュールは2つある. python-twitterとtweepyだ. python-twitterが主流だが,使い始めた当時python-twitterのOAuth認証のドキュメントがなくてtweepyを利用していた. そこでtweepyの紹介をする. TLから取得 まずは簡…

多重配列における評価(min,max)

多重配列のソートはみんな色々やっている. 例えば sorted(x,key=lambda x:x[0]) #もしくは sorted(x,key=lambda x:x[0],reverse=True) と書けば配列の一つ目でソートが出来る.これはソートだけに限るものではなかった. >>x = [(50,taro),(43,jiro),(85,ha…

パーセプトロンをPythonでかいてみた.

機械学習の初歩ということでパーセプトロンを実装してみました. パーセプトロンとは2値識別器です.クラスは1イテレーションを表しています. 2次元以上でも計算できるようにしました. import sys from optparse import OptionParser import matplotlib …

subprocessとコマンドラインとリダイレクト

コマンドをPythonから入力するやり方. 基本 ls -lこんなコマンドは以下の二通り. import subprocess subprocess.call("ls -l",shell=True) とても単純.シェルを介してコマンドを実行している. もう一つはシェルを介さない場合. import subprocess subpr…

理解するということ

まぁこれから書くことは一般に勉強している人なら大体知っている話なんではないかと思ったんだけど自分の言葉で書いてみました.物事を考えるとき木を見て森を見ずになりやすい。特に難しいものになればなるほど。 例えば,新しい分野の話を聞いたとき,出て…

ファイル入力での早さ

最近重いコードばかり書いていたので,もっと早く書かなければと思った. 実際どれくらいスピードが違うのか少し測ってみた.まずは開くとき. test1.py while(i<100): for line in open(filename): pass i += 1 test2.py while(i<100): f = open(filename) …

fileinputの罠

標準入力を読み込んで操作をする時にモジュールのfileinputを使うのは常套手段なはず. 一応参考までに使い方を. #print.py import fileinput for line in fileinput.input(): print line このコードで標準入力をそのまま標準出力する.このようにfileinput…

HTMLタグを正規表現で取り除く

HTMLのタグはParserで取り除けるが,うまくいかない時がある. そんな時に正規表現で取ってるようになっておけば楽. コードは以下の感じ. import re url = <a id="logo" title="Google ホームへ" href="http://www.google.co.jp/webhp?hl=ja">Google<img height="288" width="167" alt="" src="/images/srpr/nav_logo73.png"></a> print re.sub("<.*?>","",url) #Google 正規表現のキモは以下. 4.2.1…

Pythonにおける空要素を含むリストについて

リストにおいて空要素を削除したいなーと思って少しいじったのでメモ. seq = ["hatena",""] seq.remove("") print seq #["hatena"] になる. ただ seq.remove() seq.remove(None) は動かない. 引数がおかしいから. seq = ["hatena","",""] seq.remove("")…

beautifulsoupをクラスにしてみた.

モジュール:wrap.py を作ってみた. # -*- coding:utf-8 -*- import BeautifulSoup import re import urllib2 import sys from html5lib import HTMLParser,treebuilders #urlを開く関数 def open_url(html): opener = urllib2.build_opener()#クライアント…

日本語の正規表現

正規表現を利用全角も含めた記号があるかを判定する import re query = u"「明けましておめでとう。」" # 記号に関しては思いつくものを適当に上げました. # \マークは書かないと正規表現の一部として認識されてしまう. symbols = u"[.!?$%&_\-\[\]!?(…