SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Secure Code for Python 
Interactive Programming 
PyCon JP 2014 OpenSpace 
2014/9/14 
@hagino3000
前提 
ここではデータ分析環境DB 
等の巨大なデータソースに直 
にアクセスできる共用 
IPython Notebookサーバー 
を想定しています。
Interactive Programming 
• Pros 
• Powerful, Fun, Quick 
• Cons 
• Some dangerous (Probability of breaking 
production environment)
IPython Notebook 
からの……
突然の死 
• 大量のデータをロードしてしまいスワップアウト 
• DB、ネットワークに負荷をかける 
• 重い処理を放置 
• CPUに負荷をかけてしまい監視にひっかかる 
• なにげなくファイルに保存したらDisk Full
回避したい 
• インフラの人におこられる 
• データ回収の遅延 
• データロスト & 再送処理の手間
運用と設計でなんとかしよう 
• インタラクティブ環境向けのショートカットメ 
ソッド(データロード) 
• 省メモリな実装 
• 人間の怠惰さ、ミスを想定した設計 
• 共用IPython Notebookサーバの運用
省メモリ 
• とにかくgeneratorを返す 
• DBフルスキャンする様なコードを実行していた 
としても、generatorが帰ってきた時点ではセー 
フ 
• 正しく扱えばよい
generatorのチェーン例 
def invoke(file_name, db_name):! 
db = MongoClient(‘localhost’)! 
db.events.insert(convert(parse(readline(file_name))))! 
! 
def readline(file_name):! 
with gzip.open(file_name) as input:! 
for line in input:! 
yield line! 
! 
def parse(lines):! 
for line in lines:! 
yield json.loads(line)! 
! 
def convert(rows):! 
for row in rows:! 
yield {…(略)…}
メモリ使用量のチェック 
$ pip install memory-profiler 
$ pip install psutil 
からの 
@profile! 
def readline(file_name):! 
with gzip.open(file_name) as input:! 
for line in input:! 
yield line 
指定したメソッドの行ごとに使用量が出せる
大量のオブジェクトの扱い 
• __slots__ 使っておく 
• 属性の少ないクラスを扱う場合は有効
人間は怠惰 
• とりあえずパラメータ無しで実行とかしがち 
• 絞り込み条件無しで実行すると全データフェッ 
チするような設計だと死ぬ 
• 例えば生ログを取ってくる様なメソッドの場合 
は期間を必須にする 
• 期間の最初だけ指定されたら??
人間は怠惰 
• docコメント書いておく 
• mymodule.load_data? でいつでも参照できる
Notebook Serverの運用 
• 1日一回再起動 
• CPU、メモリ使用量は不定期に暴れる 
• 起動ユーザーは権限小さめが良い 
• インフラの人には大丈夫だと言おう
Enjoy Interactive 
Programming

Weitere ähnliche Inhalte

Was ist angesagt? (6)

Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習
 
Vacuumとzheap
VacuumとzheapVacuumとzheap
Vacuumとzheap
 
Vector
VectorVector
Vector
 
これからのデータセンターが目指す技術(公開用)
これからのデータセンターが目指す技術(公開用) これからのデータセンターが目指す技術(公開用)
これからのデータセンターが目指す技術(公開用)
 
Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015
 
Cloud storage services
Cloud storage servicesCloud storage services
Cloud storage services
 

Andere mochten auch

ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
hagino 3000
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰
hagino 3000
 

Andere mochten auch (14)

Google App Engine で初めるServerSide JavaScript
Google App Engine で初めるServerSide JavaScriptGoogle App Engine で初めるServerSide JavaScript
Google App Engine で初めるServerSide JavaScript
 
Introduction of Leap Motion
Introduction of Leap MotionIntroduction of Leap Motion
Introduction of Leap Motion
 
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
JavaScriptとSalesforceとTwitterマーケティングな話をした時の資料
 
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
 
逃亡の勧め
逃亡の勧め逃亡の勧め
逃亡の勧め
 
はじめてのChaos Proxy Viewer
はじめてのChaos Proxy ViewerはじめてのChaos Proxy Viewer
はじめてのChaos Proxy Viewer
 
iOS WebView App
iOS WebView AppiOS WebView App
iOS WebView App
 
PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現PRML 6.1章 カーネル法と双対表現
PRML 6.1章 カーネル法と双対表現
 
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
ノンタッチUI時代とフロントエンドエンジニア (Using emotiv)
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰
 
Cloud DatalabとBigQueryを使ったアドホックデータ解析
Cloud DatalabとBigQueryを使ったアドホックデータ解析Cloud DatalabとBigQueryを使ったアドホックデータ解析
Cloud DatalabとBigQueryを使ったアドホックデータ解析
 
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
 
スパース性に基づく機械学習 2章 データからの学習
スパース性に基づく機械学習 2章 データからの学習スパース性に基づく機械学習 2章 データからの学習
スパース性に基づく機械学習 2章 データからの学習
 
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術
 

Ähnlich wie Secure Code for Interactive Programming

[C14] 超高速データベースエンジンを用いたTPC-Hベンチマーク100TBクラス世界初登録への挑戦 by Shinji Fujiwara
[C14] 超高速データベースエンジンを用いたTPC-Hベンチマーク100TBクラス世界初登録への挑戦 by Shinji Fujiwara[C14] 超高速データベースエンジンを用いたTPC-Hベンチマーク100TBクラス世界初登録への挑戦 by Shinji Fujiwara
[C14] 超高速データベースエンジンを用いたTPC-Hベンチマーク100TBクラス世界初登録への挑戦 by Shinji Fujiwara
Insight Technology, Inc.
 
たのしいNode.js
たのしいNode.jsたのしいNode.js
たのしいNode.js
ishiki-takai
 
デスクトップの仮想化とフレキシブルワークスタイル
デスクトップの仮想化とフレキシブルワークスタイルデスクトップの仮想化とフレキシブルワークスタイル
デスクトップの仮想化とフレキシブルワークスタイル
junichi anno
 
Open design computer project(boost)
Open design computer project(boost)Open design computer project(boost)
Open design computer project(boost)
Ito Takahiro
 

Ähnlich wie Secure Code for Interactive Programming (20)

私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
[C14] 超高速データベースエンジンを用いたTPC-Hベンチマーク100TBクラス世界初登録への挑戦 by Shinji Fujiwara
[C14] 超高速データベースエンジンを用いたTPC-Hベンチマーク100TBクラス世界初登録への挑戦 by Shinji Fujiwara[C14] 超高速データベースエンジンを用いたTPC-Hベンチマーク100TBクラス世界初登録への挑戦 by Shinji Fujiwara
[C14] 超高速データベースエンジンを用いたTPC-Hベンチマーク100TBクラス世界初登録への挑戦 by Shinji Fujiwara
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
ミニ四駆でPython on Windows Azure
ミニ四駆でPython on Windows Azureミニ四駆でPython on Windows Azure
ミニ四駆でPython on Windows Azure
 
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
 
たのしいNode.js
たのしいNode.jsたのしいNode.js
たのしいNode.js
 
Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
 
デスクトップの仮想化とフレキシブルワークスタイル
デスクトップの仮想化とフレキシブルワークスタイルデスクトップの仮想化とフレキシブルワークスタイル
デスクトップの仮想化とフレキシブルワークスタイル
 
仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜仮想化環境の設計手法 〜プロのテクニック教えます〜
仮想化環境の設計手法 〜プロのテクニック教えます〜
 
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
 
Open design computer project(boost)
Open design computer project(boost)Open design computer project(boost)
Open design computer project(boost)
 
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説
乗り遅れるな!IBMが本気で取り組む新世代クラウドサービスを徹底解説
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
 
DeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャDeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャ
 
Rancher/k8sを利用した運用改善の取り組み
Rancher/k8sを利用した運用改善の取り組みRancher/k8sを利用した運用改善の取り組み
Rancher/k8sを利用した運用改善の取り組み
 
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
[de:code 2017] 並列分散処理の考え方とオープンソース分散処理系の動向
 

Mehr von hagino 3000 (6)

Where does my money go チーム発表
Where does my money go チーム発表Where does my money go チーム発表
Where does my money go チーム発表
 
NUIとKinect
NUIとKinectNUIとKinect
NUIとKinect
 
今日からはじめるKinect Hack
今日からはじめるKinect Hack今日からはじめるKinect Hack
今日からはじめるKinect Hack
 
Introduction of Kinect Hacks
Introduction of Kinect HacksIntroduction of Kinect Hacks
Introduction of Kinect Hacks
 
HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化
 
Extjs + Gears
Extjs + GearsExtjs + Gears
Extjs + Gears
 

Secure Code for Interactive Programming