FlaskでリアルタイムWebアプリが作れるようになって素晴らしい

Flask-Socketsを入れればWebSocketが使えるようになって素敵です☆

早速echoサーバーを作ってみた。

Flask-Sockets

テスト環境構築

mkvirtualenv flask_sockets
mkdir echo_server
cd echo_server/
pip install Flask
pip install Flask-Sockets
pip install gunicorn

コードはこんな感じ

.
├── app.py
└── templates
    └── hello.html

app.py

from flask import Flask, render_template
from flask_sockets import Sockets

app = Flask(__name__)
sockets = Sockets(app)

@sockets.route('/echo')
def echo_socket(ws):
    while True:
        message = ws.receive()
        ws.send(message)

@app.route('/')
def hello():
    return render_template('hello.html')

if __name__ == '__main__':
    app.run()

templates/hello.html

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <h1>Flaskでechoサーバー☆</h1>
  <input type="text" id="msg" value="_(:3 」∠)_"/>
  <button id="sendBtn">send</button>
  <ul id="rcv"></ul>
</body>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
  $(function(){
  var host = "ws://localhost:8000/echo";
  var socket = new WebSocket(host);

  socket.onmessage = function(message){
    $("#rcv").append("<li>" + message.data + "</li>")
    console.log(message.data);
  }

  $("#sendBtn").on("click",function(){
    message = $("#msg").val()
    socket.send(message);
  });
  })
</script>
</html>

動かすのはgunicornを使う

gunicorn -k flask_sockets.worker app:app

でlocalhost:8000にアクセスすればok

日本酒の日には日本酒を飲む

1001は日本酒の日なので、日本酒を飲んでおります☆(まぁいつもですけど)

週末にヨコゼキさんにお邪魔しようとしたのですが、あいにくの休日だったので近所の高砂酒造に行ってみました(実は初めて)

杉玉

1380626313

蔵の中に売店があります。富士宮は用水というかあちこち水が流れていてとてもいい雰囲気ですきな感じの街並みですね。

1380626314

山廃のひやおろしを買ったので、それを飲んでいる。

最近飲んだ日本酒

三井の寿のひやおろし。あっさりしていた。香りはいいけどね、あっさりし過ぎていたので燗をつけたら膨らむのか試したくなった(やってない)

1380626222

ゆきの美人のひやおろし。美味かった。秋田とか山形の酒質は基本的に好み。

1380626224

山本のスパークリング日本酒。美味すぎて速攻空いた。スパークリングはくいくいいけるので危険!

前回に実証済みで気をつけていたのだけど今回もやってしまった

1380626225

@ando_ando_ando日本酒飲み比べしたいみたいだけど、場所さえ確保できればつまみ持ち寄りで飲み比べというのがコスパ高いと思う。

Business Model Generation Workbook

ビジネスモデル・ジェネレーションを噛み砕いた本(ちょうど一年前に読んだのか…)

最初の方の漫画の説明が全体を網羅していてわかりやすい。BMGは右側から埋めていく。

既存の枠組みをキャンバスに書いてから、オズボーンのチェックリスト的に枠組みを壊してみて新たな価値が提案できるか考えるスキームは勉強になった。

ProductName 図解ビジネスモデル・ジェネレーション ワークブック
今津 美樹
翔泳社 / 1554円 ( 2013-04-09 )


  • 価値提案が全てをつなぐ要
  • キャリアデザインにも使えるので、転職の際に自分の価値を再確認できる

sake garden 2013に行ってきた

NEXT5とSAGAN5のイベントに行ってきた。

1380447709 1380447710

佐賀のお酒を色々飲めたのが良かった。七田美味い。野菜のブースは超並んでいたので並ぶ気がおきず、ひたすら飲んでいた。

気に入ったお酒(括弧は飲んだことがある)

  • 茜孔雀 / 新政
  • (ゆきの美人)
  • (一白水成)
  • (白瀑)
  • (鍋島)
  • 七田
  • 東一

それから、マイウォーターを持参するのが勝ち組であった。静岡のイベントは仕込水が十分に用意されているので油断していた。

Hybrid MindsにはじまりHybrid Mindsに終わる

そんな気分の日もある☆

Im Through / Hybrid Minds
Diffused (Original) / The Upbeats
Back To Basics (Hospitality Summer Drum & Bass 2013) / John Rolodex
Arkline / Vegas & Cabbie
Ignition (TR Tactics Remix) / Optiv & BTK feat Ryme Tyme
Two Tone / Gridlok & Origin
Pacman (Upbeats Remix) / Ed Rush & Optical
Chic / Futurebound Vs Camo & Krooked
Play Tonight / Tantrum Desire
Iodine / Kove
Dribble / Muffler
Link To The Past / Loadstar
Habitation / The Prototypes
Sabotage / Futurebound Vs Metrik
Bomber / Loadstar
Play Your Own Way / Tantrum Desire
Thorn / BTK
Throw Down / Prolix
Signalz / Mefjus
One Chance (Emperor Remix) / Enei
Creature Comforts / Audio
Soulmagnet / Audio
Beyond Our Dreams / J Majik & Wickaman
Doctrine / Fourward & Mefjus
Pure Gold (feat. Kemo) / Calyx & TeeBee
Only Way Out / State Of Mind
Kisses & Lies / Blokhe4d
Cretin (Prolix Remix) / Blokhe4d
Behind Time / Alix Perez
Last Chance Saloon / Vicious Circle & Nocturnal
Nothing Can Replace / Seba
Crackdown (Shockone Remix) / Brookes Brothers
Find My Way / Fred V & Grafix
Halcyon / Hybrid Minds

ProductName Hybrid Minds

Audioporn / 600円 ( 2012-03-12 )


Redmineのハンズオンは来週の土曜日です

プロジェクトの成功というのは個人のスキルの継続的な向上に加えて、チームのコミュニケーションを如何に円滑にするかにかかっているかと思う。

まぁ、それは創薬プロジェクトでも一緒なわけで。でコミュニケーションを円滑にするためにそれ用のツールに頼るのがいいかと。

  • レポート、ガントチャートが自動で作成される
  • 適切なワークフロー管理
  • トレーサビリティの向上
  • 他のツールとの連携(例えば化合物管理システムとかELNとか)

なんかができるのがいいかなと思っている。特に化合物管理システムについては5Wの最後のWHYを記録できないのが問題で、これを記録するような簡単な仕組みがないとコミュニケーションの円滑化につながらないような気がする。

  • WHO: OK
  • WHEN:OK
  • WHAT:OK
  • WHERE,HOW: OK(ELN)
  • WHY:NO

週に一度会議をするとかは一見良い案に見えるけど、現状把握だけで時間を取られるし、そのためのレポート作成時間もバカにならないし、結構コスト高なのではないかなと。

こういうあたりはredmineのようなITSで管理すれば、割りとうまく回りやすいのかなと思っている。というより一人で使っているけど、調子いい。

脱Excel! Redmineでアジャイル開発を楽々管理のフローは創薬のサイクルでも大体同じ流れですね。

flow

  • 合成案をだして
  • 担当者決めて合成
  • アッセイ結果をフィードバック

まぁPDCAサイクルまわすようなのは大体こんな感じかと。

バックログとしての合成案

AZは基本的にはこの考え方だと思います。

アジャイルな創薬ということを考えたらフィードバック結果で合成計画を柔軟に変更できないといけないから、バックログを持っていたほうがいいんだろうなと思う。今の日本だと、合成案考えたヒトが合成するみたいな風潮になっていて、間にレビューもおかないし、柔軟性が足りないし、ケミストの能力がそのままストレートに反映されるのでそれっていいのかなーと思ったりもする。あとは、合成案の批判=ケミストの人格批判みたいに受け取るヒトが多いというのも、案は案として客観的に評価できてない証拠だよねーと。

というわけで、こういったあたりに興味があれば参加してくださると嬉しいです。

(2013.09.27 追記) Redmineの操作に関してはプログラミングのスキルは必要ありませんのでお気軽に(Q&Aに追記しておきました)。

ちなみに懇親会は三島バルという飲み歩きイベントに便乗しまして、二次会どこかに集合してまったりやりたいなと考えています。

参考書籍

ProductName チケット駆動開発
小川 明彦
翔泳社 / 3444円 ( 2012-08-24 )


つくって壊せるRedmine

(2013.09.26 修正) redmineのバージョンをあげました。

実機にインストールしたいヒトは対応するOSのインストーラーをダウンロードして実行すればいいだけなので簡単です(インストーラーのダウンロードと実行に30分程度かかります)。

実機にインストールしてもいいけど、仮想サーバーでやりたいひと(僕とか)もいるだろうということでVagrant+BitnamiRedmineの環境構築のメモ。VirtualboxVagrantはあらかじめインストールしておきます。尚、MBAで試しました。

仮想サーバーの構築

mkdir vredmine
cd vredmine
vagrant init precise32 http://files.vagrantup.com/precise32.box

Vagrantfileの以下の行のコメントを外して

 # config.vm.network :private_network, ip: "192.168.33.10"

仮想サーバーを起動します

vagrant up

bitnami redmineのインストール

vagrant ssh
wget http://bitnami.com/redirect/to/24965/bitnami-redmine-2.3.3-1-linux-installer.run
chmod 755 bitnami-redmine-2.3.3-1-linux-installer.run
sudo ./bitnami-redmine-2.3.3-1-linux-installer.run

対話形式のインストーラの質問に答えればインストールされてRedmineが起動する。

基本的にデフォルトでOK

Please select the installation language
Please choose an option [1] : 1 # インストーラーの言語は英語のまま
PhpMyAdmin [Y/n] :
Is the selection above correct? [Y/n]:
Select a folder [/opt/redmine-2.3.3-1]: 
Login [user]: admin #管理者の情報を入力
Password :[password]
Please confirm your password :[password]
Your real name [User Name]: [realname]
Email Address [user@example.com]: [your@mail.address]
Select your language for default data configuration:
Please choose an option [4] : 9 #Redmineのデフォルトの言語は日本語
Do you want to configure mail support? [y/N]:  #今回はメールは使わないのでサポートはOff(デフォルト)
Do you want to continue? [Y/n]: Y
----------------------------------------------------------------------------
Please wait while Setup installs BitNami Redmine Stack on your computer.

 Installing
 0% ______________ 50% ______________ 100%
 #########################################
(10分程待たされる)
----------------------------------------------------------------------------
Launch Redmine application. [Y/n]: Y

仮想サーバーのRedmineにアクセス

http://192.168.33.10/redmine/

にアクセスする。

あとはRedmineの本でも読みながら頑張ればよろしい。

ProductName 入門Redmine 第3版
前田 剛
秀和システム / 2310円 ( 2012-08 )


ProductName Redmineによるタスクマネジメント実践技法
小川 明彦
翔泳社 / 3444円 ( 2010-10-13 )


PyCon APAC 2013で発表した結果

YAPCのスピーカーすごいす!、PyConのスピーカーすごいす!と参加者側でずっと過ごしてたけど、今回初めて発表するので、少しは皆さんの心に残るようなお話が出来たらいいなぁと思っています。PyCon APAC 2013で発表することになった

slideshareも10000views超えたし、はてブもそこそこ付いたし、ブログのフィードバックもいただけたし、少しはお役にたったのかなと安堵している。

改めてPyCon APAC 2013のスタッフと参加者の皆様、楽しい時間を有難うございました。

椅子ネタは思い浮かばなかった…

seleniumのphantomjsでuser-agent を変更する

googleにchromeとして認識して欲しかったので調べた

dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["phantomjs.page.settings.userAgent"] = (
        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
    )
driver = webdriver.PhantomJS(desired_capabilities=dcap)

XPathの書き方も慣れてきた☆

沼津日本酒フェス2013にいってきた

せりざわ酒店さんのイベントにおじゃましてきた。もやしもんのバッグ背負っているヒトがいた。

1379887222

  • 陸奥八仙美味しいのを再確認
  • こんな夜には好みかも
  • どぶろく美味しかった
  • 梅乃宿のみかんと林檎はみかんのほうが好み

沢山試飲できて満足。ツマミもちょこちょこつまめたし、白隠正宗の仕込水飲みながらまわったので、あまり酔いもまわらず気持よく過ごせた。

行ってよかった。