SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
GMO Pepabo, Inc.
Kei IWASAKI
2015/10/10 PyConJP 2015 Lightning Talks
3分で
サーバオペレーションコマンドを作る技術
お前誰?
お前誰?
> Kei IWASAKI
> twitter: @laugh_k
> Github: laughk
> GMO Pepabo, Inc.
> 技術部インフラグループ
> System Administrator
> PyConJP 初参加!
3分で
サーバオペレーション
コマンドを作る技術
サーバオペレーションコマンド
is 何?
Web系インフラエンジニアが
日々のサーバオペレーションを
楽にするためのコマンドラインツール
とりわけ
SSHで1台ずつログインをして
複数サーバに同様のコマンドを叩く
たんぽぽワークを楽にする
コマンドラインツール
という前提で
お話させていただきます
紹介するライブラリ
fabric と Click
ライブラリとしての
fabric
ライブラリとしてのfabric
> fabric とは
> python製デプロイツールでお馴染み
> pythonでデプロイに必要なSSH越しのジョ
ブを定義できる
ライブラリとしてのfabric
> こんな感じで fabfile.py を用意して
from fabric.api import run
def ping():
run('uname -n')
ライブラリとしてのfabric
> fabコマンド経由でジョブを実行できる
$ fab -f fabfile.py ping -H hoge1.example.com,hoge2.example.com
[hoge1.example.com] Executing task 'ping'
[hoge1.example.com] run: uname -n
[hoge1.example.com] Login password for 'vagrant':
[hoge1.example.com] out: hoge1.example.com
[hoge1.example.com] out:
[hoge2.example.com] Executing task 'ping'
[hoge2.example.com] run: uname -n
[hoge2.example.com] out: hoge2.example.com
[hoge2.example.com] out:
Done.
Disconnecting from hoge1.example.com... done.
Disconnecting from hoge2.example.com... done.
ライブラリとしてのfabric
> 便利なAPI
> run ... シェルコマンド実行
> sudo ... sudo 付きでシェルコマンド実行
> put ... リモートホストにファイルを置く
> get ... リモートホストからファイルを取ってくる
> put, get には use_sudo オプションあり
> などなど
便利ですね!
ライブラリとして利用すると
作り込む時にすごく ります
ライブラリ
としての利用で使うもの
fabric.api.execute
ライブラリとしてのfabric
> executeを使うと何ができるか?
> ざっくり言うと
> python のコードから
> と同じことができるよ!
$ fab -f fabfile.py <jobname> -H <hostname>
ライブラリとしてのfabric
> こんな感じ
> sample.py
from fabric.api import run, execute
def ping():
run('uname -n’)
if __name__ == ‘__main__':
execute(ping, hosts=[ 'hoge1.example.com',
'hoeg2.example.com' ])
ライブラリとしてのfabric
> 実行
$ python sample.py
[hoge1.example.com] Executing task 'ping'
[hoge1.example.com] run: uname -n
[hoge1.example.com] Login password for 'vagrant':
[hoge1.example.com] out: hoge1.example.com
[hoge1.example.com] out:
[hoge2.example.com] Executing task 'ping'
[hoge2.example.com] run: uname -n
[hoge2.example.com] out: hoge2.example.com
[hoge2.example.com] out:
python スクリプトとして
完結させられる
ということは
fabコマンドを意識しない
自分の業務に特化した
スクリプトも作れる
ライブラリとしてのfabric
> 例えばこんな fabfile.py
from fabric.api import sudo
def show_httpd_log():
sudo('tail -10000 /var/log/httpd/access_log')
def show_db_slowlog_count():
sudo('tail -100000 /var/lib/mysql/slow.log > /tmp/fab-slow.log')
sudo('mysqldumpslow -c /tmp/fab-slow.log')
sudo('rm -fv /tmp/fab-slow.log')
ライブラリとしてのfabric
> 例えばこんな感じでスクリプト化
import argparse
from fabric.api import run, sudo, execute
def show_httpd_log():
sudo('tail -10000 /var/log/httpd/access_log’)
def show_db_slowlog_count():
sudo('tail -100000 /var/lib/mysql/slow.log > /tmp/fab-slow.log')
sudo('mysqldumpslow -c /tmp/fab-slow.log')
sudo('rm /tmp/fab-slow.log')
if __name__ == '__main__':
parser = argparse.ArgumentParser()
...
pythonで
コマンドラインツールを作るなら
argparse の出番!
ではあるけれど
なかなか扱いが大変
つらい
オプションが増えたり
サブコマンドを生やすと
コードの可読性を保つのがしんどい
Python mini hack-a-thon
にて
“–Thanks!! @shimizukawa
「ClickっていうCLIのフレームワークがあるよ」
Click
Click
> CLIツールを作るためのフレームワーク
> デコレータでオプションやパラメータと実際に処理を行う
関数をいい感じに紐付けられる
> いい感じにhelpメッセージを出してくれる
> bash-completion の自動生成が可能
> オプションやサブコマンドと関数の関係がわかりやすい
> などなど
Click
> 例. サブコマンド
import click
@click.group()
def main():
pass
@click.command()
@click.argument('name')
def sub1(name):
click.echo('sub1: Hello {0}'.format(name))
@click.command()
@click.option('-N','--name')
def sub2(name):
click.echo('sub2: Hello {0}'.format(name))
main.add_command(sub1)
main.add_command(sub2)
if __name__ == '__main__':
main()
Click
> 例. サブコマンド 実行結果
$ python cli.py sub1 laughk
sub1: Hello laughk
$ python cli.py sub2 -N laughk
sub2: Hello laughk
Click
> 例. サブコマンド 実行結果
$ python cli.py
Usage: cli.py [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
sub1
sub2
$ python cli.py sub1 --help
Usage: cli.py sub1 [OPTIONS] NAME
Options:
--help Show this message and exit.
$ python cli.py sub2 --help
Usage: cli.py sub2 [OPTIONS]
Options:
-N, --name TEXT
--help Show this message and exit.
便利ですね!!
fabric と Click を
組み合わせてみる
fabricとClick
> コードはこんな感じ (nginx.py として作成 )
import click
from fabric.api import sudo, execute, env
def _show_access_log():
sudo('tail -10 /var/log/nginx/munin-access.log')
@click.group()
def main():
pass
@click.command('access_log')
def show_access_log():
execute(_show_access_log)
main.add_command(show_access_log)
if __name__ == '__main__':
env.hosts = [
'hoge1.example.com',
'hoge2.example.com'
]
main()
fabricとClick
> 結果
$ python nginx.py access_log
[hoge1.example.com] Executing task '_show_access_log'
[hoge1.example.com] sudo: tail -10 /var/log/nginx/munin-access.log
[hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET / HTTP/1.1" 200 2006 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X
10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69"
[hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/style-new.css HTTP/1.1" 200 4049 "http://10.0.12.23/"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69"
[hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/logo-h.png HTTP/1.1" 200 1399 "http://10.0.12.23/static/style-
new.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/
32.0.1948.69"
[hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/favicon.ico HTTP/1.1" 200 2046 "http://10.0.12.23/" "Mozilla/
5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69"
[hoge1.example.com] out:
[hoge2.example.com] Executing task '_show_access_log'
[hoge2.example.com] sudo: tail -10 /var/log/nginx/munin-access.log
[hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET / HTTP/1.1" 200 2006 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X
10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69"
[hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/style-new.css HTTP/1.1" 200 4049 "http://10.0.12.23/"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69"
[hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/logo-h.png HTTP/1.1" 200 1399 "http://10.0.12.23/static/style-
new.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/
32.0.1948.69"
[hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/favicon.ico HTTP/1.1" 200 2046 "http://10.0.12.23/" "Mozilla/
5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69"
[hoge2.example.com] out:
便利ですね!!1
補足
fabricとClick
> 補足
> click は先に setup.py を書いておくと開発しやすいし
各種環境への配布も楽
> 業務に便利なコマンドは踏み台サーバにインストールし
ておくと布教しやすいのでオススメ
> 詳細な使い方はそれぞれの公式ドキュメントが情報豊富
> fabric http://docs.fabfile.org/
> Click http://click.pocoo.org
まとめ
まとめ
> SSH 経由のオペレーションは fabric
> コマンドラインツールとしての機能は Click
> fabric Click
の組み合わせはお手軽で非常にオススメ
Let's Try!
pip install fabric
pip install Click

Más contenido relacionado

La actualidad más candente

Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
 
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
 
R を起動するその前に
R を起動するその前にR を起動するその前に
R を起動するその前に
Kosei ABE
 

La actualidad más candente (20)

"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
Python入門
Python入門Python入門
Python入門
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
doctest を書こう @ pycon kansai
doctest を書こう @ pycon kansaidoctest を書こう @ pycon kansai
doctest を書こう @ pycon kansai
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
 
R を起動するその前に
R を起動するその前にR を起動するその前に
R を起動するその前に
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Hubotをはじめる
HubotをはじめるHubotをはじめる
Hubotをはじめる
 

Destacado

Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Takayuki Shimizukawa
 
癒し系ネットワーク機器をPingで起こす
癒し系ネットワーク機器をPingで起こす癒し系ネットワーク機器をPingで起こす
癒し系ネットワーク機器をPingで起こす
Shinichi Hirauchi
 

Destacado (20)

Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
 
sqldf for pandas
sqldf for pandassqldf for pandas
sqldf for pandas
 
pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話
 
SekainoKAO by TeamKAO
SekainoKAO by TeamKAOSekainoKAO by TeamKAO
SekainoKAO by TeamKAO
 
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
 
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaokeRy pyconjp2015 karaoke
Ry pyconjp2015 karaoke
 
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
 
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
 
日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる
 
営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面
 
フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
癒し系ネットワーク機器をPingで起こす
癒し系ネットワーク機器をPingで起こす癒し系ネットワーク機器をPingで起こす
癒し系ネットワーク機器をPingで起こす
 
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasiaサンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
 
クラウドハニーポットを運用しよう!
クラウドハニーポットを運用しよう!クラウドハニーポットを運用しよう!
クラウドハニーポットを運用しよう!
 
初心者のためのWeb標準技術
初心者のためのWeb標準技術初心者のためのWeb標準技術
初心者のためのWeb標準技術
 

Similar a 3分でサーバオペレーションコマンドを作る技術

Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 

Similar a 3分でサーバオペレーションコマンドを作る技術 (20)

Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
 
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
 
1MB
1MB1MB
1MB
 
BBBBB
BBBBBBBBBB
BBBBB
 
Haikara
HaikaraHaikara
Haikara
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターンAWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
 
Drone.io のご紹介
Drone.io のご紹介Drone.io のご紹介
Drone.io のご紹介
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.next
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
 
ゆるかわPhp
ゆるかわPhpゆるかわPhp
ゆるかわPhp
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
LinAction Theme Docker
LinAction Theme DockerLinAction Theme Docker
LinAction Theme Docker
 

Más de Kei IWASAKI

Más de Kei IWASAKI (9)

コロナ渦とキャリアの話 / my carrier and covid-19
コロナ渦とキャリアの話 / my carrier and covid-19コロナ渦とキャリアの話 / my carrier and covid-19
コロナ渦とキャリアの話 / my carrier and covid-19
 
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
 
Elasticbeanstalk で Ansible を使っている話
Elasticbeanstalk で Ansible を使っている話Elasticbeanstalk で Ansible を使っている話
Elasticbeanstalk で Ansible を使っている話
 
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
 
Pelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 TokyoPelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 Tokyo
 
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
 
Vagrant+virtualboxを使ってみよう
Vagrant+virtualboxを使ってみようVagrant+virtualboxを使ってみよう
Vagrant+virtualboxを使ってみよう
 
障害発生時に抑えておきたい基礎知識
障害発生時に抑えておきたい基礎知識障害発生時に抑えておきたい基礎知識
障害発生時に抑えておきたい基礎知識
 
監視のススメ
監視のススメ監視のススメ
監視のススメ
 

Último

Último (10)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

3分でサーバオペレーションコマンドを作る技術