• 検索結果がありません。

お前誰?

N/A
N/A
Protected

Academic year: 2021

シェア "お前誰?"

Copied!
79
0
0

読み込み中.... (全文を見る)

全文

(1)

2018/5/26 NSEG Vol.100

pythonで

webサーバ

(2)

2018/5/26 NSEG Vol.100

お前

誰︖

(3)

2018/5/26 NSEG Vol.100

⾃⼰紹介

・名前︓アベヒロキ (

@hATrayflood

)

・職業︓⾃宅サーバ管理者

・URL︓

rayflood.org/diary-temp/

・地元︓東部町

(4)

2018/5/26 NSEG Vol.100

(5)

2018/5/26 NSEG Vol.100

という記念すべき

回にも関わらず

(6)

2018/5/26 NSEG Vol.100

空気読まずに

(7)

2018/5/26 NSEG Vol.100

(8)

2018/5/26 NSEG Vol.100

pythonで

(9)

2018/5/26 NSEG Vol.100

開発中に

こんなこと

(10)

2018/5/26 NSEG Vol.100

(11)

2018/5/26 NSEG Vol.100

index.html

jquery.js

script.js

(12)

2018/5/26 NSEG Vol.100

$.getJSON("data.json", function(data){

data1 = data;

(13)

2018/5/26 NSEG Vol.100

ローカルファイルとして

開くとjsonが読めない

(ことがある)

(14)

2018/5/26 NSEG Vol.100

(15)

2018/5/26 NSEG Vol.100

ユーザ認証API

のコールバック

(16)

2018/5/26 NSEG Vol.100

twitter, facebook

(17)

2018/5/26 NSEG Vol.100

テスト⽬的でも

ローカルファイルには

コールバックできない

(18)

2018/5/26 NSEG Vol.100

http://localhost:8000/

などは可能

(19)

2018/5/26 NSEG Vol.100

となるとここで

(20)

2018/5/26 NSEG Vol.100

(21)

2018/5/26 NSEG Vol.100

けど既存の

webサーバ

⽴てるの

(22)

2018/5/26 NSEG Vol.100

(23)

2018/5/26 NSEG Vol.100

IISとか

Apacheとか

nginxとか

(24)

2018/5/26 NSEG Vol.100

コマンド⼀発で

(25)

2018/5/26 NSEG Vol.100

そんなん

ある︖

(26)

2018/5/26 NSEG Vol.100

(27)

2018/5/26 NSEG Vol.100

(28)

2018/5/26 NSEG Vol.100

(29)

2018/5/26 NSEG Vol.100

カレントディレクトリを

そのままhttpで公開

(30)

2018/5/26 NSEG Vol.100

/ もindex.html

を読んでくれる

(31)

2018/5/26 NSEG Vol.100

(32)

2018/5/26 NSEG Vol.100

単にhtml

を読むだけ

じゃなくて

(33)

2018/5/26 NSEG Vol.100

pythonで

プログラム

(34)

2018/5/26 NSEG Vol.100

そうなると

cgi的な

(35)

2018/5/26 NSEG Vol.100

IISとか

Apacheとか

nginxとか

(36)

2018/5/26 NSEG Vol.100

設定

(37)

2018/5/26 NSEG Vol.100

設定なしで

(38)

2018/5/26 NSEG Vol.100

コマンド⼀発で

(39)

2018/5/26 NSEG Vol.100

そんなん

ある︖

(40)

2018/5/26 NSEG Vol.100

(41)

2018/5/26 NSEG Vol.100

import wsgiref.simple_server

def application(environ, start_response):

start_response("200 OK", [("Content-Type", "text/plain")])

yield b"Hello World\n"

httpd = wsgiref.simple_server.make_server("", 8081, application)

httpd.serve_forever()

(42)

2018/5/26 NSEG Vol.100

wsgirefは

pythonの

(43)

2018/5/26 NSEG Vol.100

(44)

2018/5/26 NSEG Vol.100

pythonが

使えれば

(45)

2018/5/26 NSEG Vol.100

え︖

リクエストオブジェクト︖

レスポンスオブジェクト︖

(46)

2018/5/26 NSEG Vol.100 application()の引数environの中⾝: SERVER_NAME na512e GATEWAY_INTERFACE CGI/1.1 SERVER_PORT 8081 REMOTE_HOST CONTENT_LENGTH SCRIPT_NAME SERVER_PROTOCOL HTTP/1.1 SERVER_SOFTWARE WSGIServer/0.2 REQUEST_METHOD GET PATH_INFO / QUERY_STRING REMOTE_ADDR 127.0.0.1 CONTENT_TYPE text/plain HTTP_HOST localhost:8081

HTTP_USER_AGENT Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

HTTP_ACCEPT_LANGUAGE ja,en-US;q=0.7,en;q=0.3 HTTP_ACCEPT_ENCODING gzip, deflate

HTTP_DNT 1

HTTP_CONNECTION keep-alive

HTTP_UPGRADE_INSECURE_REQUESTS 1 HTTP_CACHE_CONTROL max-age=0

wsgi.input <_io.BufferedReader name=780>

wsgi.errors <_io.TextIOWrapper name='' mode='w' encoding='utf-8'> wsgi.version (1, 0)

wsgi.run_once False wsgi.url_scheme http

(47)

2018/5/26 NSEG Vol.100

基本的には

昔のCGIと

(48)

2018/5/26 NSEG Vol.100

environつまり

環境変数から

拾って使う

(49)

2018/5/26 NSEG Vol.100

レスポンスは

これに直接書く

(50)

2018/5/26 NSEG Vol.100

ボディは

yield b"<h1>タイトル</h1>"

または

string = "<p>%s</p>" % name

yield string.encode()

(51)

2018/5/26 NSEG Vol.100

あれ︖

ルーティングは︖

テンプレートは︖

セッションは︖

(52)

2018/5/26 NSEG Vol.100

そんなものはない

(AAry

(53)

2018/5/26 NSEG Vol.100

(54)

2018/5/26 NSEG Vol.100

標準ライブラリで

sqlite3が使える

import sqlite3

(55)

2018/5/26 NSEG Vol.100

え︖ 他のdbは︖

モデリングは︖

(56)

2018/5/26 NSEG Vol.100

(57)

2018/5/26 NSEG Vol.100

wsgiそのものは

webアプリ共通

インターフェース

(58)

2018/5/26 NSEG Vol.100

必要最低限のもの

しか提供しない

(59)

2018/5/26 NSEG Vol.100

素のwsgiでは

限界がある

(60)

2018/5/26 NSEG Vol.100

階層化しない

数ページの

(61)

2018/5/26 NSEG Vol.100

階層化して

db使って

(62)

2018/5/26 NSEG Vol.100

フレームワーク

の仕事

(63)

2018/5/26 NSEG Vol.100

⼩さいもの

Bottle

(64)

2018/5/26 NSEG Vol.100

from flask import *

app = Flask(__name__)

@app.route("/")

def hello():

session["name"] = "abe"

(65)

2018/5/26 NSEG Vol.100

⼤きいもの

Django

(66)

2018/5/26 NSEG Vol.100

MVCフルサポートの

全部⼊りフレームワーク

ログイン機能や

(67)

2018/5/26 NSEG Vol.100

使ったことない

Zope/Plone

(68)

2018/5/26 NSEG Vol.100

規模は違えど

(69)

2018/5/26 NSEG Vol.100

つまりwsgiが動けば

マネージドサービス

(70)

2018/5/26 NSEG Vol.100

heroku

google app engine

など

(71)

2018/5/26 NSEG Vol.100

webサーバと

連携する

(72)

2018/5/26 NSEG Vol.100

apacheで動かす

mod_wsgi

(73)

2018/5/26 NSEG Vol.100

nginxで動かす

uwsgi

ただしuwsgiを起こす

コマンドが要る

(74)

2018/5/26 NSEG Vol.100

IISで動かす

wfastcgi

(75)

2018/5/26 NSEG Vol.100

mod_wsgiが⼀番

⼿がかからないので

よく使う

(76)

2018/5/26 NSEG Vol.100

(77)

2018/5/26 NSEG Vol.100

・リンク集

twitter @hATrayflood

http://twitter.com/hATrayflood

開発⽤ローカルサーバを⽴ち上げる⽅法 Qiita@higuma

https://qiita.com/higuma/items/b23ca9d96dac49999ab9

Python2系でもPython3系でも簡易Web鯖をワンライナーで⽴てる - tututenの備忘録

http://tututen.hatenablog.jp/entry/2014/01/09/121428

簡潔な HTTP リクエストハンドラ ̶ Python 2.7.15 ドキュメント

https://docs.python.org/ja/2.7/library/simplehttpserver.html

HTTP サーバ ̶ Python 3.6.5 ドキュメント

https://docs.python.org/ja/3.6/library/http.server.html

(78)

2018/5/26 NSEG Vol.100

WSGI ユーティリティとリファレンス実装 ̶ Python 2.7.15 ドキュメント

https://docs.python.org/ja/2.7/library/wsgiref.html

WSGI ユーティリティとリファレンス実装 ̶ Python 3.6.5 ドキュメント

https://docs.python.org/ja/3.6/library/wsgiref.html

Bottle: Python Web Framework

http://bottlepy.org/docs/dev/

Flask (A Python Microframework)

http://flask.pocoo.org/

The Web framework for perfectionists with deadlines | Django

(79)

2018/5/26 NSEG Vol.100

初⼼者がハマった、初めてのDjangoアプリのHerokuデプロイ Qiita@RyuSA

https://qiita.com/RyuSA/items/0cbc7d5b0145585861a8

Deploying Python Applications with Gunicorn | Heroku Dev Center

https://devcenter.heroku.com/articles/python-gunicorn

[Python] Flask を Google App Engine 上で動作させる Qiita@togoturns

https://qiita.com/togoturns/items/579b0cf73370f4022f29

Python ランタイム | App Engine flexible environment for Python docs

参照

関連したドキュメント

・「下→上(能動)」とは、荷の位置を現在位置から上方へ移動する動作。

震動 Ss では 7.0%以上,弾性設計用地震動 Sd では

太宰治は誰でも楽しめることを保証すると同時に、自分の文学の追求を放棄していませ

・蹴り糸の高さを 40cm 以上に設定する ことで、ウリ坊 ※ やタヌキ等の中型動物

① Google Chromeを開き,画面右上の「Google Chromeの設定」ボタンから,「その他のツール」→ 「閲覧履歴を消去」の順に選択してください。.

 右上の「ログイン」から Google アカウント でログインあるいは同じ PC であると⼆回⽬以

問題解決を図るため荷役作業の遠隔操作システムを開発する。これは荷役ポンプと荷役 弁を遠隔で操作しバラストポンプ・喫水計・液面計・積付計算機などを連動させ通常

Google マップ上で誰もがその情報を閲覧することが可能となる。Google マイマップは、Google マップの情報を基に作成されるため、Google