SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
おまえらこのライブラリ使ってないの?	
  m9	
ふるかわとおる	
  
@torufurukawa	
  
お前だれよ?	
•  ふるかわとおる	
  
•  @torufurukawa	
  
•  #bucho	
  
•  株式会社バスキュール	
  
– TV連動サービス作ってますした	
  
アンケート結果より...	
•  仮想環境	
  
•  シェル拡張	
  
•  コーディングスタイル	
  
•  テスト	
  
•  追加は	
  #pyfes	
  #m9	
  で、ツイートしてください。	
  
h8ps://twi8er.com/search?q=%23pyfes%20AND%20%23m9&src=typd	
  
仮想環境でインストールし放題	
•  複数のプロジェクト	
  
•  ライブラリの競合を避けたい
virtualenv	
$	
  virtualenv	
  .	
  
$	
  ls	
  
bin	
  	
  	
  	
  	
  include	
  lib	
  
$	
  source	
  bin/activate	
  
インストールし放題!
venv	
  (3.x)	
$	
  python3.3	
  -­‐m	
  venv	
  .	
  
$	
  source	
  bin/activate	
  
インストールし放題!
virtualenvwrapper	
$	
  mkvirtualenv	
  myenv	
  
$	
  workon	
  myenv	
  
インストールし放題!
対話シェル拡張	
•  対話シェルだけでは...	
  
•  Python	
  の対話シェルでもっといろいろやる
ipython	
$	
  ipython	
  
Python	
  2.7	
  (r27:82500,	
  Nov	
  	
  7	
  2010,	
  14:17:28)	
  	
  
Type	
  "copyright",	
  "credits"	
  or	
  "license"	
  for	
  more	
  informaXon.	
  
	
  
IPython	
  0.13.2	
  -­‐-­‐	
  An	
  enhanced	
  InteracXve	
  Python.	
  
?	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐>	
  IntroducXon	
  and	
  overview	
  of	
  IPython's	
  features.	
  
%quickref	
  -­‐>	
  Quick	
  reference.	
  
help	
  	
  	
  	
  	
  	
  -­‐>	
  Python's	
  own	
  help	
  system.	
  
object?	
  	
  	
  -­‐>	
  Details	
  about	
  'object',	
  use	
  'object??'	
  for	
  extra	
  
details.	
  
	
  
In	
  [1]:	
  
In	
  [1]:	
  import	
  random	
  
	
  
In	
  [2]:	
  random.choice?	
  
Type:	
  	
  	
  	
  	
  	
  	
  instancemethod	
  
String	
  Form:<bound	
  method	
  Random.choice	
  of	
  
<random.Random	
  object	
  at	
  0x10183f820>>	
  
File:	
  	
  	
  	
  	
  	
  	
  /usr/local/Cellar/python/2.7/
lib/python2.7/random.py	
  
Definition:	
  random.choice(self,	
  seq)	
  
Docstring:	
  	
  Choose	
  a	
  random	
  element	
  from	
  a	
  
non-­‐empty	
  sequence.
In	
  [3]:	
  random.choice??	
  
Type:	
  	
  	
  	
  	
  	
  	
  instancemethod	
  
String	
  Form:<bound	
  method	
  Random.choice	
  of	
  
<random.Random	
  object	
  at	
  0x10183f820>>	
  
File:	
  	
  	
  	
  	
  	
  	
  /usr/local/Cellar/python/2.7/
lib/python2.7/random.py	
  
Definition:	
  random.choice(self,	
  seq)	
  
Source:	
  
	
  	
  	
  	
  def	
  choice(self,	
  seq):	
  
	
  	
  	
  	
  	
  	
  	
  	
  """Choose	
  a	
  random	
  element	
  from	
  a	
  
non-­‐empty	
  sequence."""	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  seq[int(self.random()	
  *	
  
len(seq))]	
  	
  #	
  raises...	
  
ls	
  とか	
  cd	
  とか	
In	
  [4]:	
  ls	
  
bin/ 	
   	
  lib/ 	
   	
  share/	
  
include/	
  man/	
   	
  src/	
  
	
  
In	
  [5]:	
  cd	
  src	
  
/Users/torufurukawa/works/pyfes201307/src
コマンド実行	
In	
  [6]:	
  !ps	
  	
  
	
  	
  PID	
  TTY	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  TIME	
  CMD	
  
	
  2739	
  8ys000	
  	
  	
  	
  0:00.84	
  -­‐zsh	
  
	
  6059	
  8ys000	
  	
  	
  	
  0:01.13	
  /Users/torufurukawa/
works/pyfes201307/bin/python2.7	
  /Us....	
  
In	
  [7]:	
  !redis-­‐server	
  
[6080]	
  27	
  Jul	
  12:59:29	
  #	
  Warning:	
  no	
  config	
  file	
  
specified,	
  using	
  the	
  default	
  config.	
  In	
  order	
  to	
  
specify	
  a	
  config	
  file	
  use	
  'redis-­‐server	
  /path/to/
redis.conf'	
  
[6080]	
  27	
  Jul	
  12:59:29	
  *	
  Server	
  started,	
  Redis	
  
version	
  2.4.10	
  
[6080]	
  27	
  Jul	
  12:59:29	
  *	
  The	
  server	
  is	
  now	
  ready	
  
to	
  accept	
  connecXons	
  on	
  port	
  6379	
  
bpython	
誰か書いて
コーディングスタイル	
•  汚いコードを見つけてくれる	
  
•  自分でチェックしなくていい!
from	
  urllib	
  import	
  urlopen	
  	
  #	
  使ってない	
  
def	
  add(a,	
  b	
  ):	
  	
  #	
  カッコのまわりに不要スペース	
  
	
  	
  	
  	
  addressess	
  =	
  None	
  	
  #	
  スペルミス	
  
	
  	
  	
  	
  return	
  a	
  +	
  b	
  
pep8	
$	
  pep8	
  spam.py	
  
spam.py:2:1:	
  E302	
  expected	
  2	
  blank	
  lines,	
  found	
  0	
  
spam.py:2:13:	
  E202	
  whitespace	
  before	
  ')'	
  
pyflakes	
$	
  pyflakes	
  spam.py	
  
spam.py:1:	
  'urlopen'	
  imported	
  but	
  unused	
  
spam.py:3:	
  local	
  variable	
  'addressess'	
  is	
  assigned	
  
to	
  but	
  never	
  used
flake8	
$	
  flake8	
  spam.py	
  
spam.py:1:1:	
  F401	
  'urlopen'	
  imported	
  but	
  
unused	
  
spam.py:2:1:	
  E302	
  expected	
  2	
  blank	
  lines,	
  found	
  
0	
  
spam.py:2:13:	
  E202	
  whitespace	
  before	
  ')'	
  
spam.py:3:1:	
  F841	
  local	
  variable	
  'addressess'	
  is	
  
assigned	
  to	
  but	
  never	
  used
misspellings	
$	
  misspellings	
  spam.py	
  
spam.py:3:	
  addressess	
  -­‐>	
  "addresses"
HTTP	
  リクエスト	
•  urllib	
  だけだとちょっと...	
  
•  リクエストを簡単に書きたい	
  
•  レスポンスを簡単に取得したい
requests	
>>>	
  import	
  requests	
  
>>>	
  r	
  =	
  requests.get('h8p://wozozo.jp/')	
  
>>>	
  r.status_code	
  
200	
  
>>>	
  r.content	
  
'n<!DOCTYPE	
  html>n<!-­‐-­‐[if	
  IEMobile	
  7	
  ]><html	
  
class="no-­‐js	
  iem7"><![endif]-­‐-­‐>n<!-­‐-­‐[if	
  lt	
  IE	
  
9]><html	
  class="no-­‐js	
  lte-­‐ie8"><![endif]-­‐-­‐>n<!-­‐-­‐[if	
  
(gt	
  IE	
  8)|(gt	
  IEMobile	
  7)|!(IEMobile)|!(IE)]><!-­‐-­‐
><html	
  class="no-­‐js"	
  lang="en"><!-­‐-­‐<![endif]
>>>	
  r.json()	
  	
  #	
  辞書を返す	
  
{'spam':	
  'ham',	
  'foo':	
  [1,2,3]}	
  
	
  
requests.post(	
  
	
  'h8p://wozozo.jp/',	
  
	
  	
  	
  	
  	
  data={'name':	
  'xaxtsuxo'},	
  	
  #	
  パラメータ	
  
	
  	
  	
  	
  	
  auth=('user',	
  'pass')	
  	
  #	
  Basic	
  Auth	
  
)
テスト	
•  テストを手早く書きたい	
  
•  失敗したテスト結果は分かりやすくならん?
py.test	
•  テストランナー	
  +	
  ディスカバラー	
  
•  エラーをきれいに見せてくれる	
  
•  確認しやすい
import	
  uni8est	
  
	
  
class	
  MyTest(uni8est.TestCase):	
  
	
  	
  	
  	
  def	
  test(self):	
  
	
  	
  	
  	
  	
  	
  	
  	
  self.assertEqual(True,	
  True)	
  
	
  
def	
  test2():	
  
	
  	
  	
  	
  x	
  =	
  {'foo':	
  'bar',	
  'hoge':	
  'fuga'}	
  
	
  	
  	
  	
  y	
  =	
  {'foo':	
  'bar',	
  'hoge':	
  'wozozo'}	
  
	
  	
  	
  	
  assert	
  x	
  ==	
  y	
  
$	
  py.test	
  mytest.py	
  
=============================	
  test	
  session	
  
starts	
  ==============================	
  
pla{orm	
  darwin	
  -­‐-­‐	
  Python	
  2.7.0	
  -­‐-­‐	
  pytest-­‐2.3.5	
  
collected	
  3	
  items	
  	
  
	
  
mytest.py	
  .F	
  
...	
  
...	
  
	
  
	
  	
  	
  	
  def	
  test2():	
  
	
  	
  	
  	
  	
  	
  	
  	
  x	
  =	
  {'foo':	
  'bar',	
  'hoge':	
  'fuga'}	
  
	
  	
  	
  	
  	
  	
  	
  	
  y	
  =	
  {'foo':	
  'bar',	
  'hoge':	
  'wozozo'}	
  
>	
  	
  	
  	
  	
  	
  	
  assert	
  x	
  ==	
  y	
  
E	
  	
  	
  	
  	
  	
  	
  assert	
  {'foo':	
  'bar',	
  'hoge':	
  'fuga'}	
  ==	
  {'foo':	
  'bar',...ge':	
  'wozozo'}	
  
E	
  	
  	
  	
  	
  	
  	
  	
  	
  Hiding	
  1	
  idenXcal	
  items,	
  use	
  -­‐v	
  to	
  show	
  
E	
  	
  	
  	
  	
  	
  	
  	
  	
  Differing	
  items:	
  
E	
  	
  	
  	
  	
  	
  	
  	
  	
  {'hoge':	
  'fuga'}	
  !=	
  {'hoge':	
  'wozozo'}	
  
	
  
watchdog	
•  ファイル変更を監視して、コマンド実行	
•  継続的テスト	
  
watchdog	
$	
  watchmedo	
  	
  
	
  	
  	
  	
  shell-­‐command	
  	
  
	
  	
  	
  	
  -­‐-­‐pa8erns="*.py"	
  	
  
	
  	
  	
  	
  -­‐-­‐command="py.test	
  	
  
	
  	
  	
  	
  mytest.py"	
  

Weitere ähnliche Inhalte

Was ist angesagt?

認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーションMasashi Shinbara
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいKazuhiro Oinuma
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecYukihiko SAWANOBORI
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Masashi Shinbara
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようmax747
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacTakeshi Komiya
 
Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門辰徳 斎藤
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例Koichi Shimozono
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugTakeshi Komiya
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみるairtoxin Ishii
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudyTakeshi Komiya
 
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅- Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅- Daisuke Ikeda
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Yoshinori Nakanishi
 
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016Kohei Hoshi
 
Cakephp tokyo5
Cakephp tokyo5Cakephp tokyo5
Cakephp tokyo5ichikaway
 

Was ist angesagt? (20)

Ansible入門
Ansible入門Ansible入門
Ansible入門
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたい
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
 
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
 
Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
 
2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅- Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
Puppetのススメ
PuppetのススメPuppetのススメ
Puppetのススメ
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
 
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
 
Cakephp tokyo5
Cakephp tokyo5Cakephp tokyo5
Cakephp tokyo5
 
130412 kayac-cinnamon
130412 kayac-cinnamon130412 kayac-cinnamon
130412 kayac-cinnamon
 

Ähnlich wie おまえらこのライブラリ使ってないの? m9 (2013-07)

「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すAromaBlack
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも- Yusaku Watanabe
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChefMasahiro NAKAYAMA
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitAtsuhiro Kubo
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話Hisateru Tanaka
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器Yukitaka Uchikoshi
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築Saito5656
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
Openstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationOpenstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationyukihiro kawada
 

Ähnlich wie おまえらこのライブラリ使ってないの? m9 (2013-07) (20)

「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも-
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnit
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Openstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationOpenstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verification
 

Mehr von Toru Furukawa

Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
 Twitter 広告と API を組み合わせたインタラクティブなキャンペーン Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
Twitter 広告と API を組み合わせたインタラクティブなキャンペーンToru Furukawa
 
My client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with GoMy client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with GoToru Furukawa
 
Introduction to Python 3.4 as of beta 1
Introduction to Python 3.4 as of beta 1Introduction to Python 3.4 as of beta 1
Introduction to Python 3.4 as of beta 1Toru Furukawa
 
Test Failed, Then...
Test Failed, Then...Test Failed, Then...
Test Failed, Then...Toru Furukawa
 
Trying Continuous Delivery - pyconjp 2012
Trying Continuous Delivery - pyconjp 2012Trying Continuous Delivery - pyconjp 2012
Trying Continuous Delivery - pyconjp 2012Toru Furukawa
 
Python 3.3 チラ見
Python 3.3 チラ見Python 3.3 チラ見
Python 3.3 チラ見Toru Furukawa
 
Python32 pyhackathon-201011
Python32 pyhackathon-201011Python32 pyhackathon-201011
Python32 pyhackathon-201011Toru Furukawa
 

Mehr von Toru Furukawa (11)

Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
 Twitter 広告と API を組み合わせたインタラクティブなキャンペーン Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
Twitter 広告と API を組み合わせたインタラクティブなキャンペーン
 
My client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with GoMy client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with Go
 
Introduction to Python 3.4 as of beta 1
Introduction to Python 3.4 as of beta 1Introduction to Python 3.4 as of beta 1
Introduction to Python 3.4 as of beta 1
 
Test Failed, Then...
Test Failed, Then...Test Failed, Then...
Test Failed, Then...
 
Mock and patch
Mock and patchMock and patch
Mock and patch
 
Trying Continuous Delivery - pyconjp 2012
Trying Continuous Delivery - pyconjp 2012Trying Continuous Delivery - pyconjp 2012
Trying Continuous Delivery - pyconjp 2012
 
Python 3.3 チラ見
Python 3.3 チラ見Python 3.3 チラ見
Python 3.3 チラ見
 
Python32 pyhackathon-201011
Python32 pyhackathon-201011Python32 pyhackathon-201011
Python32 pyhackathon-201011
 
Django
Django Django
Django
 
Python 2.7
Python 2.7Python 2.7
Python 2.7
 
BPStudy#34 導入
BPStudy#34 導入BPStudy#34 導入
BPStudy#34 導入
 

Kürzlich hochgeladen

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Kürzlich hochgeladen (10)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

おまえらこのライブラリ使ってないの? m9 (2013-07)

  • 2. お前だれよ? •  ふるかわとおる   •  @torufurukawa   •  #bucho   •  株式会社バスキュール   – TV連動サービス作ってますした  
  • 3. アンケート結果より... •  仮想環境   •  シェル拡張   •  コーディングスタイル   •  テスト   •  追加は  #pyfes  #m9  で、ツイートしてください。   h8ps://twi8er.com/search?q=%23pyfes%20AND%20%23m9&src=typd  
  • 5. virtualenv $  virtualenv  .   $  ls   bin          include  lib   $  source  bin/activate   インストールし放題!
  • 6. venv  (3.x) $  python3.3  -­‐m  venv  .   $  source  bin/activate   インストールし放題!
  • 7. virtualenvwrapper $  mkvirtualenv  myenv   $  workon  myenv   インストールし放題!
  • 8. 対話シェル拡張 •  対話シェルだけでは...   •  Python  の対話シェルでもっといろいろやる
  • 9. ipython $  ipython   Python  2.7  (r27:82500,  Nov    7  2010,  14:17:28)     Type  "copyright",  "credits"  or  "license"  for  more  informaXon.     IPython  0.13.2  -­‐-­‐  An  enhanced  InteracXve  Python.   ?                  -­‐>  IntroducXon  and  overview  of  IPython's  features.   %quickref  -­‐>  Quick  reference.   help            -­‐>  Python's  own  help  system.   object?      -­‐>  Details  about  'object',  use  'object??'  for  extra   details.     In  [1]:  
  • 10. In  [1]:  import  random     In  [2]:  random.choice?   Type:              instancemethod   String  Form:<bound  method  Random.choice  of   <random.Random  object  at  0x10183f820>>   File:              /usr/local/Cellar/python/2.7/ lib/python2.7/random.py   Definition:  random.choice(self,  seq)   Docstring:    Choose  a  random  element  from  a   non-­‐empty  sequence.
  • 11. In  [3]:  random.choice??   Type:              instancemethod   String  Form:<bound  method  Random.choice  of   <random.Random  object  at  0x10183f820>>   File:              /usr/local/Cellar/python/2.7/ lib/python2.7/random.py   Definition:  random.choice(self,  seq)   Source:          def  choice(self,  seq):                  """Choose  a  random  element  from  a   non-­‐empty  sequence."""                  return  seq[int(self.random()  *   len(seq))]    #  raises...  
  • 12. ls  とか  cd  とか In  [4]:  ls   bin/    lib/    share/   include/  man/    src/     In  [5]:  cd  src   /Users/torufurukawa/works/pyfes201307/src
  • 13. コマンド実行 In  [6]:  !ps        PID  TTY                      TIME  CMD    2739  8ys000        0:00.84  -­‐zsh    6059  8ys000        0:01.13  /Users/torufurukawa/ works/pyfes201307/bin/python2.7  /Us....  
  • 14. In  [7]:  !redis-­‐server   [6080]  27  Jul  12:59:29  #  Warning:  no  config  file   specified,  using  the  default  config.  In  order  to   specify  a  config  file  use  'redis-­‐server  /path/to/ redis.conf'   [6080]  27  Jul  12:59:29  *  Server  started,  Redis   version  2.4.10   [6080]  27  Jul  12:59:29  *  The  server  is  now  ready   to  accept  connecXons  on  port  6379  
  • 17. from  urllib  import  urlopen    #  使ってない   def  add(a,  b  ):    #  カッコのまわりに不要スペース          addressess  =  None    #  スペルミス          return  a  +  b  
  • 18. pep8 $  pep8  spam.py   spam.py:2:1:  E302  expected  2  blank  lines,  found  0   spam.py:2:13:  E202  whitespace  before  ')'  
  • 19. pyflakes $  pyflakes  spam.py   spam.py:1:  'urlopen'  imported  but  unused   spam.py:3:  local  variable  'addressess'  is  assigned   to  but  never  used
  • 20. flake8 $  flake8  spam.py   spam.py:1:1:  F401  'urlopen'  imported  but   unused   spam.py:2:1:  E302  expected  2  blank  lines,  found   0   spam.py:2:13:  E202  whitespace  before  ')'   spam.py:3:1:  F841  local  variable  'addressess'  is   assigned  to  but  never  used
  • 21. misspellings $  misspellings  spam.py   spam.py:3:  addressess  -­‐>  "addresses"
  • 22. HTTP  リクエスト •  urllib  だけだとちょっと...   •  リクエストを簡単に書きたい   •  レスポンスを簡単に取得したい
  • 23. requests >>>  import  requests   >>>  r  =  requests.get('h8p://wozozo.jp/')   >>>  r.status_code   200   >>>  r.content   'n<!DOCTYPE  html>n<!-­‐-­‐[if  IEMobile  7  ]><html   class="no-­‐js  iem7"><![endif]-­‐-­‐>n<!-­‐-­‐[if  lt  IE   9]><html  class="no-­‐js  lte-­‐ie8"><![endif]-­‐-­‐>n<!-­‐-­‐[if   (gt  IE  8)|(gt  IEMobile  7)|!(IEMobile)|!(IE)]><!-­‐-­‐ ><html  class="no-­‐js"  lang="en"><!-­‐-­‐<![endif]
  • 24. >>>  r.json()    #  辞書を返す   {'spam':  'ham',  'foo':  [1,2,3]}    
  • 25. requests.post(    'h8p://wozozo.jp/',            data={'name':  'xaxtsuxo'},    #  パラメータ            auth=('user',  'pass')    #  Basic  Auth   )
  • 26. テスト •  テストを手早く書きたい   •  失敗したテスト結果は分かりやすくならん?
  • 27. py.test •  テストランナー  +  ディスカバラー   •  エラーをきれいに見せてくれる   •  確認しやすい
  • 28. import  uni8est     class  MyTest(uni8est.TestCase):          def  test(self):                  self.assertEqual(True,  True)     def  test2():          x  =  {'foo':  'bar',  'hoge':  'fuga'}          y  =  {'foo':  'bar',  'hoge':  'wozozo'}          assert  x  ==  y  
  • 29. $  py.test  mytest.py   =============================  test  session   starts  ==============================   pla{orm  darwin  -­‐-­‐  Python  2.7.0  -­‐-­‐  pytest-­‐2.3.5   collected  3  items       mytest.py  .F   ...  
  • 30. ...            def  test2():                  x  =  {'foo':  'bar',  'hoge':  'fuga'}                  y  =  {'foo':  'bar',  'hoge':  'wozozo'}   >              assert  x  ==  y   E              assert  {'foo':  'bar',  'hoge':  'fuga'}  ==  {'foo':  'bar',...ge':  'wozozo'}   E                  Hiding  1  idenXcal  items,  use  -­‐v  to  show   E                  Differing  items:   E                  {'hoge':  'fuga'}  !=  {'hoge':  'wozozo'}    
  • 32. watchdog $  watchmedo            shell-­‐command            -­‐-­‐pa8erns="*.py"            -­‐-­‐command="py.test            mytest.py"