Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

bottle の検索結果:

Bottleで簡易なデータ受信用鯖をつくる

…す。 実際のところ bottleなら最小構成で楽々。 from bottle import post, request, run @post('/') def receivedata(): body = request.params print(body.value1) @post('/json') def receiveJson(): data = request.json["username"] print(data) run(host='localhost', port…

bottleのURLキャプチャで正規表現をつかう

bottleのURLキャプチャで正規表現をつかう方法です。 エントリ番号を入力する所で文字列や日本語を投入されないようにできます。 実際のところ 一致させる場合 @get('/blog/:num#[0-9]+#') 特定の文字列だけキャプチャという事も可能 @get('/hello/:name#(shuzo|taro)#') 一致はさせたいが、変数は不要の場合 POST何かのときに有用ですね。 @post('/blog/#[0-9]+#') 参考もと bottle.paws.…

bottleにファイルの変更を検知してリロードする機能を加える

bottleにも、ファイルの変更を検知してリロードする機能が備わっています。 ある程度性能とトレードオフな所があるので、開発段階でTrue、実用段階でFalseにしてしまえばいいでしょう。 実際のところ 普通のrunにreloader=Trueを付け加える。 それだけです。 run(host='localhost', port=8080, reloader=True) テンプレートのようなファイルの更新は参照されません。 ま、都度レンダリングされてるからなんでしょうが。 参考…

UNIXプロセスを切る方法いくつか

UNIXプロセスを切る方法いくつか 実際のところ Bottleで動いているアプリを止めたいとき pkill $ pkill python kill -9とpidof $ kill -9 $(pidof python) ps、grep、awk $ kill $(ps -ax | grep python | awk '$4 != "grep" {print $1}') 参考もと kill a process using pipe

bottleでJSONを返す

…WEBフレームワークbottle - Bye Bye Mooreの続き。bottleでJSONをゲットしたい場合……何も考えずに辞書型を放り込むと"Content-Type: application/json"で返してくれます。 実際のところ 文字と現在時刻を返したい場合、以下のようにします。 from bottle import get, run, template from time import strftime @get('/api/status') def api_…

bottleとsqlite3を連携させて簡単なメモ表示ツール その4:フロントエンド・フレームワークを使う

…ド・フレームワークをbottleで使う方法を考えます。 実際のところ 導入 designmodo.github.io 上記サイトから、twitter-bootstrapの拡張版「Flat UI」を頂いてきます。 展開すると「dist」というディレクトリが確認できるので、こいつの中身をbottleプロジェクトのtemplatesディレクトリに追加。 index.htmlは好みで。私は消しました。 終わると、こんな構成になってるはずです。 $ tree -l 2 . ├── ap…

bottleとsqlite3を連携させて簡単なメモ表示ツール その3:テンプレートエンジンJadeを使う

bottleにはデフォでerbっぽいテンプレートエンジンが搭載されています。 ……とはいえ、今更タグ閉じなんてカッたるい事をやる気にもなりません。 ここは一つ先人の叡智をお借りして、jadeをbottleで使ってしまいましょう 実際のところ 導入 まずは導入。 jadeの環境がある状態で、以下のコマンドを実行。 最終更新が2年前というのが若干きになりますが……。 $ pip install bottle-jade python部分 冒頭部分 諸々のライブラリまわり。 今までの…

bottleとsqlite3を連携させて簡単なメモ表示ツール その2:POSTする

…みます。 from bottle import get, post, request, run, template, static_file, error getの後にpostを追記。 @post('/blog') def postBlog(): body = request.forms.get('body') query = 'INSERT INTO blog VALUES ("' + body +'",date("now"))' conn.execute(query) r…

bottleとsqlite3を連携させて簡単なメモ表示ツール その1:存在するデータの表示

bottleとsqlite3を連携させて簡単なメモ表示ツールをつくる方法です。 第一回目は存在するDBからデータの表示する方法です。 実際のところ あらかじめ、blogpost.sqliteというDBを作った上でtableも用意しておきます。 /blogにアクセスしたら、最新の記事 /blog/にアクセスしたらnum番目の記事 という表示を考える場合、以下のような感じになります。 from bottle import get, run, template import sql…

bottleのredirectとabort

…の処理。 最小構成のbottleはこういうモノも外付けパッケージです。 種類としては、特定のURLに飛ばすredirectと自動生成タイプのabortがあります。 実際のところ abort 特定のエラーコード付きでエラーページを出したい場合はabortを使います from bottle import route, abort @route('/restricted') def restricted(): abort(401, "Sorry, access denied.") …

bottleでダウンロードリンクをつくる

今回の記事はbottleでダウンロードさせる方法についてです。 ローカルで生成した結果を読み込ませたり、webページに載せるにはちょっと分量が多くなりすぎる内容を掲載できますね。 実際のところ imageディレクトリにgopherくんの画像"gopher.png"を用意しておきます。 スクリプト 最小限だとこんな感じ。 download用のライブラリは不要みたいです。 from bottle import run, static_file from time import s…

bottleで静的な404ページ

bottleで静的な404ページを出す方法です 実際のところ 404ページのポンチ絵 htmlファイルとかでもいいのですが……デザインセンスなど一ビットもないのでポンチ絵で。 これを、imageフォルダにつっこみます。 スクリプト 最小限だとこんな感じ。 from bottle import run, static_file, error from time import strftime @error(404) def error404(error): return sta…

Bottleで静的ファイルを表示する

Bottleで静的ファイルを表示する方法です。 固定のpdfファイルや画像ファイルを表示させる時なんかに使います。 ローカルのImageMagicで生成したファイルをブラウザに渡すときにも重宝しそうですね。 実際のところ imageディレクトリからgopherくんの固定ファイルを表示するアプリケーションを想定します 元画像 File:Go gopher mascot bw.png - Wikimedia Commonsから、gopherくんの128pixelのを導入します。 …

python版sinatraな軽量WEBフレームワークbottle

bottleはsinatraな軽量WEBフレームワークです。 getメソッドの取扱いレベルまで小分けされているので、限界域まで軽く作ることができます。 導入 例の如く、pipで。依存パッケージは無いように設計されているみたいです。 $ pip install bottle依存がなく、軽量……ということは直接導入という荒業も。 200kbyte程度なので、ワザワザpipを入れるほどでは……という場合にも重宝。 $ curl -O https://raw.githubuserco…

超高速なKey-Value型DB「Redis」をOS X上で遊んでみた。

…chomebrew/Bottles/redis-2.8.9 ######################################################################## 100.0% ==> Pouring redis-2.8.9.mavericks.bottle.tar.gz ==> Caveats To have launchd start redis at login: ln -sfv /usr/local/opt/redis/*.p…