次回のShizuoka.pyの懇親会はやきとり王将になりました

王将使うの多分初めてかな。懇親会は予約の締め切りがあるので参加される方はお早めに

昨日は久しぶりに#A君とあって一緒に黙々コーディングをしてたんだけど、A君重量級になってた…弱虫ペダルでいうと田所感が出てた(まじで運動しないと身体にくるぞw)

また@karky7@ando_ando_andoと鈴木屋でホルモンつつきながらプログラミング言語談義でもしたいなぁと思っていたけどなかなか難しいですね。

それから#A君にはgoに奪われた静岡市圏の勢力をPyhtonで奪還するというタスクが出来たので頑張ってください。たまにはコメヤスに酒を買いにいきたいし静岡で飲みたいなぁ。

で、もくもく会では2人でTDNetのクローラー動かないなー、おかしいなーと悩んでいたんだけど、selenium2.53.2とphantomjs2.1.1の組み合わせだとswitch_to_frameメソッドがきちんと動いてないっぽいですね。chromedriverだと動いたのでダウングレードして動く組み合わせを見つけるかバグフィックスされるの待たないといけませんな。

久々にもくもくしたけど楽しかった。ここ二三年一人でコーディングすることに慣れちゃったのと、技術を追いかけなくても余裕で生きていけるようなぬるま湯に浸かりきっていたので流石にまずいなーと感じたよ。

次回のShizuoka.pyでは

  • 不適切だが違法ではない♡クローラーを作ろう
  • はじめてならアコムをやめてジョブリブでキャッシングをしよう☆

という2つの発表をします。どちらもネタに走る予定なのであまり役に立たないかもしれないけどリハビリも兼ねているので大目に見てくださいw

HUNTER×HUNTER-モノクロ版-33

最新刊出てた。

そして後手番で石田流を目指す43飛戦法というのに興味があったので読んでる。

ProductName 振り飛車4→3戦法 (マイナビ将棋BOOKS)
戸辺 誠
マイナビ出版 / ?円 ( 2013-03-27 )


角交換四間飛車の出だしから気分で変更できるのが良さそう。ゴキ中は最初からゴキ中と戦型固定されるから気を使う。

ぬか漬けはじめた

ゴールデンウィーク前からぬか漬けを始めた。近所にぬか漬け売ってないから自分で作るしかないのだけど、朝晩かき混ぜるの面倒くさいなぁと思って敬遠してた。

でも実際やってみるとすごく楽しいw

まずぬか床のメンテナンスが、完全なPDCAサイクルなのでやりがいがあるし、ぬか漬けの野菜を色々考えて試すのも楽しい。

ズッキーニのぬか漬け美味しい。古漬け気味なほうが好きだな。

1465015539

アスパラのぬか漬けは茹で過ぎたせいか、色も悪いしフニャッと感がいまいちだった。二回目は上手く出来たけど。 こんにゃくはなんかぼやっとした味だったので個人的にはいまいちだった。

1465015540

他にエシャロットなんかも漬けると美味しかった。

Shizyoka.py #5を7/9@コミュニティFで開催します

一年半ぶりにShisuoka.pyをやります。沼津のプラサヴェルデを会場にしようと思っていたんだけど、別のイベントで使ってみたら、団体登録とか予約とかちょっとめんどくさかったので前回と同じコミュニティFでやることにします。

演題絶賛募集中です。僕は来週#A君(@ando_ando_ando)とSeleniumを使ってクローラー作る予定なのでその内容を発表しようかなーと考えています。

また、懇親会の場所が決まってないのでリクエスト等あれば。ビール電車もなかなか魅力的ではあるが…

pep8はもう古いのでpycodestyleを使おう

Pythonのコーディング規約をチェックするツールにpep8があるのだけど、pycodestyleっていう名前に変わったので今後はこちらをつかえということらしい。

つらつらと眺めていたらプロジェクトの統計を取るオプションが面白そうだったのでこのブログのCMSで実行してみた。

$ pycodestyle --statistics -qq .
1       E128 continuation line under-indented for visual indent
1       E203 whitespace before ':'
5       E231 missing whitespace after ','
2       E265 block comment should start with '# '
5       E271 multiple spaces after keyword
1       E302 expected 2 blank lines, found 1
11      E402 module level import not at top of file
29      E501 line too long (115 > 79 characters)
14      E711 comparison to None should be 'if cond is None:'
1       W291 trailing whitespace

一行のコードの文字数多すぎるんだよっていうエラーが一番多いけど、SQLAlchemyのクエリって長くなりがちだから しょうがないじゃん。 \で改行すると読みにくくなるから嫌いなんだよなぁ。

Emacs+flymakeでコード書いているのでpep8をpycodestyleに変更するだけでOK

Fastladder入れてる仮想環境のHDDの容量が足りなくなったので拡張した

もともと10GのHDDで仮想環境(KVM)作ったけど溢れてしまったので拡張した。

ほぼまるごと「KVMでVMにHDD追加」を参考にした

あとは色々調べるのはvgscan, lvscan, pvscanとscan系のコマンドを使えばいい。最近(4,5年前)のFedoraはデフォルトがLVMなので容量追加とか簡単で助かる。

PyData2016で Deep Learning for QSARという発表があった

slideもあったけど肝心な部分が抜けているので動画を見たほうが面白いです。

10分ぐらい

部分構造の高次表現としてpharmacophoreとして記述されるみたいな感じのスライドがあったけどpharmacophoreは特徴間の距離が非常に重要なのでBoW的な特徴ベクトルでは表現出来ないと思う。n-gram的な考え方を取り入れないと難しいと思っている。でもそれって5-10word離れている単語の関係を評価していくってことだからコスト高なんだよね

22分くらい

chemoinformaticsで目玉焼き


深いニューラルネットワークで特徴抽出っていうのが、chemoinformaticsの文脈だと「フラグメントからファーマコフフォア構築」というのはその通りだと思うんだけど、それがBoW的なECFP4みたいなフィンガープリントでいいのだろうか?pharmacophoreとかCoMFA,CoMSIAみたいな表現に向かうような記述子で出発しないといけないんじゃないかなーと思う。

あとタンパク質とリガンドの相互作用、特に電荷の移動という特徴を持たせられないのも今の記述子の問題ではあると思う。

画像認識と分子認識は色々違うからね。

Mishima.syk #8やりました

発表者のみなさん、参加者のみなさんお疲れ様でした。そして急遽幹事を引き受けてくださった@no85jさんありがとうございました。

今回は日程決定後に僕の都合が悪くなってしまったり、前日にハンズオンの発表者が入院したりとバタバタでしたがw 次回はハンズオンの続きをやる予定です。

懇親会はバルイベントに。もともとのサイトが失効して怪しいサイトになってたり、バルといいつつ、チケットで下着(74)とかサンダル(67)が買えたりと「パンツを肴に飲めっていう深いメッセージか?」みたいなごちゃごちゃ感のあるバルだったけど。かなり楽しめたので良しとしよう。

途中ご当地アイドルとそれに群がるファンみたいなのが居て、ほうこれがヲタ芸ってやつかと感心していたら、あれは動きが全然足らないからヲタ芸未満だと詳しいヒトがバッサリ切り捨てていた。ご当地ヲタ芸が認められるようにヲタの人達もっと頑張ってくださいと思った(余談)。

参加したお店

一軒目 とりう(69)

とり天とビール。美味しかった

1464481110

二軒目 Vanzo

なかなか洒落た店内。ワインと肉

1464481111 1464481113

三軒目 半蔵2

白隠ハイボールと海豚ベーコン。海豚は本当に癖のある匂いだった。これは好き嫌い激しいと思う。海豚刺しはもっと強烈に臭いらしい。二次会のネタになったので良しとしよう。もう一回食べるかと言われたら遠慮する。

みりん干しとかちゃんと匂い消しをしたものは美味しいらしいです。三島に住んでた頃はスーパーによく並んでたけど、富士の方ではみかけないなぁ。

1464481114

二次会はうさぎの木

一次会の感想戦とか色々楽しくおしゃべり出来て満足。

1464481115 1464481117

ここでも肉とかアヒージョを堪能した。

1464481118 1464481119

1464481120

肉の流れで反省会は鈴木屋に決定しましたw

TDnet? 強いよね…

TDnet? 強いよね…右クリック禁止,jsでHTML組み立て、iframeつかいまくり、button要素でクリック阻止とすきがないね。でも俺は負けないよ。どm、DOMたちが躍動する俺のseleniumを皆さんに見せたいね

というわけで 東証のサービスをスクレイピングしたい案件が発生したのだけど、あのサイトあれだった。一応個人でRSS化しているヒトはいたのだけど、今回は色々あって自分で頑張ってみた。

  • input要素ではなくbutton要素でクリックしてsubmitする感じになっていたのでsend_keys(Keys.RETURN)
  • iframeの内部には普通にはアクセス出来ないのでswitch_to_frameで移動する必要がある

コードを一部抜粋

def access(self, code):
    url = "https://www.release.tdnet.info/index.html"
    self.driver.get(url)
    iframe = self.driver.find_element_by_tag_name("iframe")
    self.driver.switch_to_frame(iframe)
    self.driver.find_element_by_name("q").send_keys("{}0".format(code))
    self.driver.find_element_by_name("q").send_keys(Keys.RETURN)
    time.sleep(2)
    results = []
    try:                                                                                                                                                          
        result_frame = self.driver.find_element_by_name("mainlist")
        self.driver.switch_to_frame(result_frame)
        main_table = self.driver.find_element_by_id("maintable")
        for tr in main_table.find_elements_by_tag_name("tr"):
            company_name = tr.find_element_by_class_name("companyname").text
            published = tr.find_element_by_class_name("time").text
            t = tr.find_element_by_class_name("title")
            title = t.find_element_by_tag_name("a").text
            url = t.find_element_by_tag_name("a").get_attribute("href")
            results.append({"company_name": company_name,
                            "published": published,
                            "title": title,
                            "url": url})
        return results
    except WebDriverException:
        logging.debug("{} not found".format(code))
        return results

相振りで大駒交換しまくるの気を使う

相手は2級

途中で交換するの嫌になってグダグダやってたら猛攻を食らった上に王手飛車とか… 

32手目の2三角打ちに同馬と取って、同銀に2一飛車とおろせばよいらしいんだけどなんか3二角と守られるのが嫌だったんだよね。

でもそれだと攻撃に角使えなくなるからこっちが有利になるのか。