PyCon mini Shizuokaでオンライン登壇しなかった

PyCon mini Shizuokaお疲れさまでした。特にスタッフの方は急遽オンラインに切り替えたりして相当バタバタしたことと思いますので、本当にお疲れさまでしたとお気持ちを表明したい。

Blogに書くまでがカンファレンスだそうなので、なんか書いておきます。

さて私は表記の通りオンラインになったタイミングで発表を取り下げました。理由は単純でブロードキャストしたくないスライドがいくつかあったからですね。次回あればもちろんまた応募します(今度はネタ全開にしようかな)。

当日はyoutubeでオンラインでちょっと観戦しつつ、締切の迫っているPythonの洋書を翻訳していた。

そんな感じです。

Pycon MYに行ってきたとか静岡アドベントカレンダーでも触れたんだけど、ローカルコミュニティは貴重なのでこれからも頑張って欲しいです。ただ、初心者の人とかの対応とか結構消耗していて、運営から離れちゃってる人を何人も見ているので、そのあたりもうまくやれたらいいですねーとは思います。

おまけ(駄文なので何も求めていない)

私は初めて「PyCon2019はいいやー」ってスキップした(それまでは海外出張がぶつかったのを除いて参加してる)。結局あの規模だとまぁそうならざるを得ないよねーくらいの感想で、レベルが低いというよりは参加者の満足度を優先したのだろうと考えていますし、それはそれで問題ないよねーと思う。レベルの高いトークももちろんあるし、パッケージ関連の話は毎回聞いていて勉強になっている。

ただ、私は今年もアジア圏のPyCon行くのを優先してもし都合が合えばJP行くかなーって感じ。でもローカルコミュニティとしてPyConJPに参加するのは面白いよなーとは思っている。2018のPyConJPで一番面白かったのはポスターだったしね。

PyConJPだって規模を小さくしてガチのヒトを濃縮すればトークのレベルは必然的に上がるけどPyConJPはそういう方向目指しているわけじゃないんじゃないかなーと思っているし、それでいいんじゃないかなーというのが私の見解。

画像をリサイズしてサーバーにアップロードするプログラム

macosをcatalinaに上げたらperlで書いていた画像をリサイズしてサーバーにアップロードするプログラムが動かなくなって困ったのでpythonで書き直した。

それにしてもこれいつ書いたんだろう?

#!/usr/bin/env perl

use strict;
use warnings;
use DateTime::Format::Epoch::Unix;
use DateTime;
use Image::Imlib2;
use Net::OpenSSH;

my $tp = $ARGV[0] || "";

my @files = do{
  opendir my $dh, '.' or return;
  my @f = grep /\.(JPG|jpg|jpeg|PNG|png)$/, grep !/^\./, readdir($dh);
  closedir $dh;
  @f;
};

my $ssh = Net::OpenSSH->new('XXXXXXX');
$ssh->error and die "SSH connection failed: " . $ssh->error;

for my $infile (@files) {
  my $now =  DateTime::Format::Epoch::Unix->format_datetime(DateTime->now);
  my $outfile = "/Users/kzfm/images/blog/" . $now . ".jpg";
  my $image = Image::Imlib2->load($infile);
  unless ($infile =~  /^DSCN/ ) {
      unless ($tp) {
          if ($image->width > $image->height) { $image->image_orientate(1); }}}
  my $image2 = $image->create_scaled_image(320,0);
  $image2->set_quality(95);
  $image2->save($outfile);
  $ssh->scp_put($outfile, "/usr/local/html/images/blog/" . $now . ".jpg")
    or die "scp failed: " . $ssh->error;
  printf "![%s](http://www.kzfmix.com/images/blog/%s.jpg)\n",$now,$now;
  sleep(1);
}

これをpythonで書き直した。

#!/usr/bin/env python

from PIL import Image
import time
from datetime import datetime
from glob import glob
import paramiko
import scp
import os

width = 400
img_dir = "/Users/kzfm/images/blog"
remote_dir = "/usr/local/html/images/blog/"

def get_epoc_name():
    return str(int(time.mktime(datetime.now().timetuple())))

def save_resize_image(filename):
    en = get_epoc_name()
    resize_file_name = "{}.jpg".format(en)
    f = os.path.join(img_dir, resize_file_name)
    img = Image.open(filename)
    height = round(img.height * width / img.width)
    img = img.resize((width, height), Image.LANCZOS)
    img = img.rotate(-90, expand=True)
    img.save(f)
    return (f, en)

if __name__ == "__main__":
    with paramiko.SSHClient() as sshc:
        sshc.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        sshc.connect(hostname='0.0.0.0', port=0000, username='XXX')
        with scp.SCPClient(sshc.get_transport()) as scpc:
            for f in glob("*.jpeg"):
                fname, en = save_resize_image(f)
                scpc.put(fname, remote_dir)
                print("![{0}](http://www.kzfmix.com/images/blog/{0}.jpg)".format(en))
                time.sleep(1)

Pycon MYに行ってきた

今年はPyCon APAC(PH)に行きたかったんだけど、仕事が忙しくてキャンセルしたので、どうしようかなーと思っていたら、ちょうど夏休みとしてPyConMYに行けたので行ってみた。

さて、今までどのくらいPyConに行っているかというと、2015,2017以外は参加していた。海外のPyConに参加するのは今回初めてです。

最近はちょっとデータサイエンス寄りというか、創薬というニッチな領域に特化したPythonコードばっかり書いていて、PyCon向きじゃないかなーと思って距離を置いていたけど、quantum physicsの演題とかあって、僕もLTでもいいから発表すればよかったなーと後悔した。何もなくてもエレベーターピッチよろしくLTネタは用意して貯めておこうっと。

Keynote Speech by @WillingCarol

今回はjupyterの開発者が基調講演するってことで参加を決めたけど、これが大変刺さった。

I was really moved by her presentation!

実用的な科学のためにはPython, Jupyter, KnowledgeそしてCommunityが必要であるとのこと。これに関してはそうだと思うし、コミュニティ形成の難しさもわかる。 Mishima.sykっていうライフサイエンス系のコミュニティがうまく回っているし、初心者≠教えて君対応のような無駄に疲れるようなことするのも面倒くさいなーっていう気持ちがあったので、最近地域コミュニテイに出るのは避けてたけど、PyconMYにでてみてやっぱある程度の頻度でそういうコミュニティーに参加する必要あるかなと思った。

静岡だと最近Python駿河ってのができて@hrs_sano645が顔を出しているようだけど、僕もそのうち参加しようかなと思った。

Air asiaのスポンサードセッション

スライドとかアップされてないみたいだけど、これもマジよかった。スタートアップっぽさと勢いがあって、 そっかーそうだよなーと一人で妙に納得してしまった。

自分の業界も more than pharmaみたいな感じでデジタルヘルスケアを目指す向きが強いけど、規制が厳しすぎるのとそもそもITに対する理解が乏しいから難しいよねー、どうしたもんかなーもうちょい真面目に考えないといけないよね みたいな感想を持った。

Automate the Boring Stuff with Slackbot by Takanori Suzuki

Slackbotを作る話。ITSとの連携の話が参考になった。製薬向けのITS早く作んなきゃと思った。あとGiteaにプッシュされたらSlackに通知するようにしよっと。

Capturing Modern Streaming Media by Neo Zora.

Requestsでストリーミング処理してて、おー!となった。

Will AutoML take over data scientist's job? By Fatin Fatihah Zahari.

MSのスポンサードセッション。Auto MLではデータサイエンティストは駆逐できんよという話でした。

ま、ドメイン知識が一番大切なんだろうなとは思う。

Visualise the black box - An introduction to interoperable machine learning by Rahul Bhatia.

機械学習のモデルを解釈するためのライブラリの紹介。4つ挙げてたけど、最後の一つは忘れた。スライドアップされないかな

このあたりの話を今度のMishima.sykで話そうと思っているが、単にマレーシアの食について熱く語るだけかもしれない。

KL4日目(PyConMY2日目)

今日で4日目。朝はララヌードルでも食べようとフードコートに向かったが、目当てのあさりヌードルの屋台は開いてなかった。

1566731168

開いてる店で牛肉麵を注文。麺は黄色い玉子麺でラーメンを食べてる感じに近かった。ちなみに台北のはほぼウドンであった。それからコピを頼んだらミルクの入ってない甘苦いコーヒーがきて予想外。次回は気をつけて注文しないと。

1566731163 1566731166

夜は近所に美味しそうなインドレストランを見つけたので行ってみた。が、注文システムが全くわからん、、、しかも出口側から入ったらしくメニューも見当たらなかった。

1566731174

皿にご飯を盛っている兄さんと目があったのでそれをくれと言ったら、トレーにライスを盛って渡してくれた。あとはブフェスタイルで適当に取れということらしい。といってもわからないので、それっぽいものを盛り付けていって席に座ったら、皿を眺めて紙に11RMって書き込まれたから載せたおかずの量で判断しているらしい。ついでに飲み物を聞かれたのでココナッツを注文したら5RMだった。しかも量が多すぎて最後に残した。

1566731177 1566731172

カレーは美味しい。ブフェスタイルで食べたいものを乗せられるんだから明日はマトン多めの辛いカレーをかけまくりたいところだが、朝6時からやっているとしてもその時間には料理が揃ってないから、何が食べられるからわからんよね。明日も行くかお粥で健康的な朝を迎えるか悩む。

PyConMY2019 2日目

プログラムが画像だからタイトルと演者を書くのがめんどくさくなった。というわけで別にブログにまとめておかなくてもいいやーって気分になってしまったので、来月のMishima.sykをチェックするか、Twitterで代用のこと。

良かった演題

1566733314 1566733311

1566733308

良かった演題2

1566733320 1566733317

良かった演題3

1566733325 1566733328

PyConは楽しいですな。またどこかに行こうっと。

KL3日目(PyConMY1日目)

今日からPyConMYだ、イェイイェイ

書いていたらほぼ全て食絡みの話になっているので、PyCon my 2019の話は最後にちょっとだけ書きました。

朝は定番の漢記で鶏粥+揚げパンとアイスコーヒーを頼んでみた。

揚げパンさっと来た。

1566646013 1566646001

続いて粥、最後にアイスコーヒー(甘い)が到着

1566646024 1566646003

揚げパンを乗せていただく。

1566646019

この後ちょっとお腹の調子が悪くなったのはコーヒーの氷のせいかなと疑った。 PyCon始まるまで辛かった。

行きは緑色の路線のMRTでTTDI駅まで行ったら歩いて10分弱が会場だった。

1566646006 1566646016

なんでAir Asiaがスポンサーなの?って疑問だったけど、スポンサーセッション聞いてたらなるほど!と思った。 ウェブサイトもアプリも使いまくったから大変勉強になった。

1566646011

お昼ごはんも出た。テーブルで隣に座った方が、ローカルの方でRoR何年かやっていたらしい。 とか、他愛もない話をしていた。テーブルの向こうではデータサイエンスを仕事にするならマレーシアよりシンガポールのほうが賃金いいから移っちゃうよなーみたいな話もしていた気がする。

1566646027

昼休みにコータスの影が出てたので外に出たらすぐ遭遇。天然物ゲット。

1566646029

帰り道でニャンコ。

1566646037

夕飯はオールドチャイナカフェでニョニャラクサ。

1566645993

注文の際、「飲み物はどうすんだ?ビールは?ビールはのまんのか?オイ!」って聞かれたので、「ええ、まぁ」と。

1566645998 1566646008

ニョニャラクサはココナッツカレーヌードルで、ビーフンと黄麺が半分ずつ入ってた。 具材にかまぼこと油揚げが入っていて、中華とマレーの融合ですなとか偉そうなことを考えながら食べてた。

これはこれで美味しいが、もう少しナシレマを攻めたほうがよいのではないかという結論に達した。

食事も終了間際に、バチッと音がなってカウンターの付近だけ停電した。カウンターのレジ端末(WindowsXP?)は動いていたが、レシートの印刷やクレジットカード処理用のカードリーダーが使えなくなっていたので、海外のクレジットで払いたい勢は相当苛ついていた。私も15分近く待たされた。結局ビールとニョニャラクサで31RMだったのでビールはコンビニで買うのとそんなに変わらない値段であった。

1566646034 1566646032

帰り道にヒンズー教の寺院を見つけた

1566645995

ホテルに戻ってきてから作業をしていて、ふと昨日の牛肉麺のところは明日は休みだから、汁あり食べておこうかなーと のこのこでかけたら既に店じまいしていた。

ぶらぶら戻りながら、歩道橋があったので登って撮ってみた。ちなみにみなさん普通に横断するので、歩道橋を渡るという無駄なことをするやつなどいないw

1566653474

帰りに、Kim Soya Beanで豆花(温)を持ち帰った。2RM(60円弱)なのでコスパは超良いが、豆腐屋の豆腐しか食べない私としてはこれをスーパー美味しいと表現することには抵抗がある。

1566653471

夜食として毎日食べたいとは思う。

PyconMY 2019

PyconJPのように人が溢れているわけではないので、聞きたいセッションは確実に聞けるのは良かった。あとは全編英語なのも個人的には良かった。尚、参加者の中で日本人は私と今回演者として参加されたTakanori Suzukiだけであった模様。来年はどこかでなんか発表しようかなと思った(特にエアアジアのスポンサードセッションを聞いていて)。あとはLTようの小ネタくらい常に持ち運んだほうがいいだろうという。

Automate the Boring Stuff with Slackbot / Takanori Suzuki

Slackのボットを作る話。うちはSlackオルタネーティブを使っていて、創薬プロジェクト用のITSを作っているところなので、JIRAとボットの連携の話は大変参考になった。うちのボットは「疲れた」とか「死にたい」とかつぶやくと、「トキがストロングゼロを勧める」ボットしかまともに動いていないので、意味のあるボットを動かしたいところ。

Visualize the Black Box – An introduction to Interpretable Machine Learning / Rahul Bhatia

ブラックボックスになりがちな機械学習の解釈性を高めるためのライブラリを紹介していた。5つくらい紹介していたので、全部理解してうまく使いこなせるようにしたい。スライドアップされたら追記。

Air Asia 3.0

Air AsiaのITのほうのスポンサードセッション。

といっていて、非常に感銘を受けた。製薬インダストリーがヘルスケアカンパニーとかモバイルヘルスケアとかいいつつ、IT側を丸投げとか自社でどうにかするっていう発想がなく、製薬ペイ楽しみですねみたいな状況になっているのと全然違うなーと。

うちも、こういうのちゃんとやってITもまともな体制にして、プログラマーが楽しく仕事できるような会社になればいいなーと思った。

PyConJp 2018に参加しました

去年は参加できなかったので今年は参加しました。

pythonの型の話が面白かったです。Are Python types Pythonic? それからjupyterの話も面白かった。

  • Build text classification models 突然キャンセルになって他の聞きたいセッションも満席になってた
  • 英語トラックなのに突然日本語にスイッチしてあれーってなった。準備不足だったのかな?

メルカリの人が多かった気がする。何年か前はソシャゲの会社が多かったけど。データサイエンス系のセッションは あまり多くなかった気がするのか興味のあるセッションが少なかっただけなのかはわからなかった。

ところで来年のPyCon APACはフィリピンだそうなので参加できたらいいなと思っている(Food.py)。

それからなんか発表したいけど、最近は創薬ネタしかないんだよなー。もっと家でコード書かないと駄目ですね。

蒲田の鳥万

1540099113 1540099116

1540099118 1540099120

近所のビートル

1540099123 1540099125

1540099127

PyCon会場近くのにこまる三代目

1540099130 1540099132

Shizuoka.py #7やりました

久しぶりに吉原のコミュニティFでShizuoka.pyをやりました。

今回人が4人しか集まらなくて時間を持て余すのではないかと危惧したけれど全員濃いネタを持ち寄ってきて大変楽しい時間を過ごせました。

今回の演題は

今回おやつに杉山フルーツの生ゼリーを買ってみました。食べたくなったら次回来れば良いと思います。

1538294288

pythonでdroneを飛ばす動画。DQNで訓練させて、絶対に捕まらないドローンとかできんのかな?w

懇親会は予約していなかったので、流れで会場の向かいの居酒屋入ろうとしたらオープンしてなかったので、近所のインド人の経営しているカレー屋さんにお邪魔しました。飲み放題とディナーのセットで3Kだったんだけど、生ビールがすぐに切れたらしくビール頼むと店員さんが近所の酒屋にダッシュしに行くらしく、申し訳ないので後半はワインを飲みましたw料理はすごく美味しいのでもっと流行るべきお店だと思いました。

写真は生ビールのグラスに瓶ビールを注ぐ図(Figure. 1)。 右図はシーカバブで大変美味しかった。

1538294290 1538294293

ティッカかなんかとサラダ。奥のは左とは違う料理。

1538294296 1538294298

カレーは二種類来てチキンとマトン。マトンのほうが辛いし、スパイスも効いていて好み。ナンはこのあと更に二枚来た。

1538294301 1538294304

サービスで更に一皿頂いて満足

1538294306

Shizuoka.pyも始めて5年位経つけど継続的に集まれるのが良いですね。今後もゆるく楽しくやっていきたいですね。

Psikit as a Electronic-Structure Informatics library

Now pen and I are planning to develop a library for a Electronic-Structure Informatics named Psikit (Psi4 + RDKit).

Which coding style do you like?

The repository is here.

psikit as a wrapper library?

import psikit
import numpy as np
from rdkit import Chem

psikit.core.set_output_file("out.dat", True)
psikit.set_memory('4 GB')
psikit.set_num_threads(4)

mol = Chem.MolFromSmiles("c1ccccc1")
benz = psikit.geometry(mol)
scf_e, scf_wfn = psikit.energy("B3LYP/cc-pVDZ", return_wfn=True)
HOMO = psikit.get_homo(scf_wfn)
LUMO = psikit.get_lumo(scf_wfn)
print(HOMO, LUMO, scf_e)

or psikit as a set of util functions library?

import psi4
from psikit import mol2xyz, get_homo, get_lumo
import numpy as np
from rdkit import Chem
psi4.core.set_output_file("out.dat", True)
mol = Chem.MolFromSmiles("c1ccccc1")
xyz, mol = mol2xyz(mol)
psi4.set_memory('4 GB')
psi4.set_num_threads(4)
benz = psi4.geometry(xyz)
scf_e, scf_wfn = psi4.energy("B3LYP/cc-pVDZ", return_wfn=True)
HOMO = get_homo(scf_wfn)
LUMO = get_lumo(scf_wfn)
print(HOMO, LUMO, scf_e)

Shizuoka.py #7やります

前回からかなり時間が経ってしまいましたが、Shizuoka.py #7やります

皆さまの参加をお待ちしています( ・`ω・´)

パーフェクトPythonを読んだ

5年くらい前に

ProductName パーフェクトPython (PERFECT SERIES 5)
Pythonサポーターズ
技術評論社 / 3360円 ( 2013-03-05 )


なかなか良い本だったと思う