ブックマーク / nwpct1.hatenablog.com (22)

  • Django における認証処理実装パターン - c-bata web

    追記: 翔泳社さんからDjangoの書籍を出版するのでぜひ読んでみてください。 実践Django Pythonによる格Webアプリケーション開発 作者:芝田 将翔泳社Amazon この資料は DjangoCongress JP 2018で話した「Djangoにおける認証処理実装パターン」 の解説記事になります。 2019/04/08 追記: GithubのコードはPython3.7 Django2.2にupdateしています) 何年か前に Djangoのユーザー認証まとめ という記事を書きました。今でもコンスタントに100PV/dayくらいアクセスのある記事なのですが内容が古く、実装時にハマりやすい注意点にもあまり触れることができておらず、おすすめできる資料ではありません。今回はDjangoCongress JPにて発表の機会をいただけたのですが、この機会に認証処理についてまとめ直すと同

    Django における認証処理実装パターン - c-bata web
    nwpct1
    nwpct1 2018/05/19
    発表資料こちらです。お聴きくださった方ありがとうございました。
  • Core APIの概要とDjango REST Frameworkでの使い方 - c-bata web

    追記: この記事の内容はかなり古くなっています。翔泳社さんからDjangoの書籍を出版するこちらを読んで頂くのがおすすめです。 実践Django Pythonによる格Webアプリケーション開発 作者:芝田 将翔泳社Amazon Django Advent Calendar 2016 - Qiita 18日目の記事です。 Django REST Frameworkは、DjangoでRESTfulなAPIを提供するときに非常に人気のあるフレームワークです。 既に使ってるよという方も多くいらっしゃるのではないでしょうか。 日経電子版さんも業務でも活用しているようです。 この記事では、REST Framework自体の使い方とかはあまり話しません。 REST Framnworkの作者である @_tomcriestie さんが策定・開発しているCore APIの概要と使い方について、これまでの経緯

    Core APIの概要とDjango REST Frameworkでの使い方 - c-bata web
    nwpct1
    nwpct1 2016/12/19
    ちょっと更新した。まだ整ってない部分はあるけど、夢のあるものなのでぜひ使ってみてください
  • PIPEによるプロセス間通信とselect, poll, epollの話 - c-bata web

    エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ) 作者: Michal Jaworski,TarekZiade,稲田直哉,芝田将,渋川よしき,清水川貴之,森哲也出版社/メーカー: ドワンゴ発売日: 2018/02/26メディア: Kindle版この商品を含むブログを見る 先日、 tokibito 先生(id:nullpobug)と勉強していたpipe, select, poll, epollあたりについてメモ。 os.fork os.fork : 子プロセス(child process)をつくれる。 import os a = 0 print(a) os.fork() a += 1 print(a) 子は親の複製。親のデータ、ヒープ、スタックの各空間の複製を取得。 メモリのこれらの部分は共有されないので、実行結果は次のようになる(テキストセグメントは共有される)。

    PIPEによるプロセス間通信とselect, poll, epollの話 - c-bata web
    nwpct1
    nwpct1 2016/10/08
    かいた
  • Feedy(Python)でRSSフィードをいい感じに処理する - c-bata web

    最近、RSSフィードをfetchしてゴニョゴニョ処理したいと思うことが多かったのですが、特に気にいるライブラリが無かった *1 のでFeedyというライブラリを作ってみました。 個人的には結構気に入っていて、便利に使えているので紹介します。 もともと欲しかった機能・特徴としては、 デコレータベースでシンプルに記述できる 当然、前回fetchした時間からの更新分のみの取得も可 RSSフィードのリンク先のhtmlも自動で取得して、好きなHTMLパーサ(個人的にはBeautifulSoup4)でいい感じに処理したい 具体的には↓のように記述します from feedy import Feedy feedy = Feedy('./feedy.dat') # 前回フェッチした時間とかを格納(Redisとかに自分で置き換えることも可能) @feedy.add('https://www.djangopa

    Feedy(Python)でRSSフィードをいい感じに処理する - c-bata web
    nwpct1
    nwpct1 2016/05/25
    #pyconjp でこれについても話したい(タイトル分かりづらかったので変えました)
  • Pythonを使ったデータ分析に関する内容をJupyter Notebookにまとめ始めました - c-bata web

    研究をかれこれ2年半ぐらい続けてきたので、研究をする中で必要になった機械学習の手法について調べたりコードを書いたりしてきたのですが、まだまだ触ったことのない機械学習の手法も多く、研究で必要になる手法以外の知識も付けたくなってきたので、勉強し始めました。 Sphinxにまとめるか悩んだのですが、「ひとまず簡単にスライドにできること」・「手元でもすぐにコードを実行できる」という理由でJupyter Notebookを使用しています。 もし誤りやタイポ等があれば、IssueやPRお待ちしております。 github.com 今のところ↓の2つについてまとめました。 Jupyter Notebook / Numpy / Pandas / matplotlib入門 決定木(Decision Tree) ノートブックの内容一覧 内容については今後何度も変更をすると思いますが、とりあえず今の予定としては下

    Pythonを使ったデータ分析に関する内容をJupyter Notebookにまとめ始めました - c-bata web
    nwpct1
    nwpct1 2016/05/14
  • Golangでつくる検索エンジン(Webクローラ、MongoDB、Kagome、gin) - c-bata web

    最近、Golangを書き始めたので勉強として、1年半ほど前にPythonで作っていたWebクローラと検索エンジンをGolangで実装してみた。WebフレームワークはFlaskの代わりにgin、Mecabの代わりにKagomeを使用、Datastoreは前回と同じくMognoDBを使ってます。 GitHub - c-bata/gosearch: Web crawler and Search engine in Golang. 今回のコード Pythonでつくる検索エンジン(Webクローラ, Mecab, MongoDB, Flask) - c-bata web 以前書いたPython版検索エンジンのブログ記事 基的に実装はこれと大きく変わりません 今回はHTML書くの面倒だったので、フロントはginでJSON返すだけにしました。 以下使ったライブラリやGoに関するメモ 可変長引数の挙動 ス

    Golangでつくる検索エンジン(Webクローラ、MongoDB、Kagome、gin) - c-bata web
    nwpct1
    nwpct1 2016/04/10
  • Python製WebフレームワークのURL DispatcherとType Hintsの活用について - c-bata web

    少し前から趣味で実装してるKobinというWebアプリケーションフレームワークのURL Dispatcherの実装をする時に、BottleやDjangoを参考にしながら考えてみました。 これらの比較とType Hintsを利用したKobinのURL Dispatcherの実装についてまとめます。 (追記) リバースルーティング ちょっと長いですが、追記です。結論としては元々紹介していた正規表現ベースのルーティングとは違う方法をKobinで採用しました この記事では正規表現によるルーティングについて解説していたのですが、このルーティング方法は逆引きが少し難しくなります(Djangoは正規表現ベースの逆引きですが、自由度の高い正規表現からURLを生成するために一部妥協しているところもあるようです)。 実際の問題では正規表現が必要となるほど複雑なURL構成になることは稀かもしれません。 逆引きの

    Python製WebフレームワークのURL DispatcherとType Hintsの活用について - c-bata web
    nwpct1
    nwpct1 2016/02/11
    アドバイスとかこうするのが好きとかあればはてぶでもメンションでもいいので聞かせてください
  • Pythonでmp3再生 - c-bata web

    pygameというライブラリでmp3が再生できるらしいので,Raspberry Piにインストールしようとしたのですが,どうやらデフォルトで入っていたみたい。無かった人は↓のコマンド $ sudo apt-get install python-pygame 実際にプログラム書いてみる。 #!/usr/bin/env python #coding:utf-8 import pygame.mixer import time pygame.mixer.init() pygame.mixer.music.load('test.mp3') pygame.mixer.music.play(2) # ()内は再生回数 -1:ループ再生 #pygame.mixer.music.pause() # 音楽の一時停止 #pygame.mixer.music.unpause # 一時停止した音楽の再開 #pyga

    Pythonでmp3再生 - c-bata web
    nwpct1
    nwpct1 2015/07/12
  • pandasのvalidationライブラリを公開しました - c-bata web

    はじめに pandasのDataFrameはかなり便利ですが、その構造を明示的に定義できないので変な値が混ざってることに気づきにくいです。 研究で使ってるプログラムで変な値が混ざってないかチェックしたい所があったのですが、validatorについて調べてみても特に良さそうなライブラリとかは見つからなかったので、pandas-validator を作りました。 使い方 インストール $ pip install pandas-validator Seriesのバリデーション DataFrameだけでなくSeriesのvalidationも可能です。 import pandas_validator as pv validator = pv.IntegerSeriesValidator(min_value=0, max_value=10) # バリデーションを通る例 series = pd.Ser

    pandasのvalidationライブラリを公開しました - c-bata web
    nwpct1
    nwpct1 2015/05/24
    書いた
  • Travis CIを使ったDjangoプロジェクトの継続的インテグレーション - c-bata web

    はじめに 以前,Djangoのテスト(ユニットテスト)の書き方について勉強したことがありました. Djangoのテストの書き方について勉強したのでまとめる - Programming Log 今回は↑の記事でも作成したDjangoプロジェクトに,Travis CIの設定を追加しました. Jenkins使おうかと思っていたのですが,Travis CIの方が手軽そうだったのでこちらにしました. ソースコードはGithubで公開しています. Travis CIについて Travis CIは言語の各バージョンを同時ビルドでき,利用者が多くドキュメントも豊富らしいです. もちろんDjangoのTutorialもありました. これを参考にすすめてみます. Travis CI: Building a Python Project アカウントの作成 travis ciのトップページからGithubでサイン

    Travis CIを使ったDjangoプロジェクトの継続的インテグレーション - c-bata web
    nwpct1
    nwpct1 2015/02/08
  • FlaskでhtmlからDELETEやPUTなどのhttpメソッドを扱う方法メモ - c-bata web

    はじめに 今勉強用に作ってるWebアプリケーションで、htmlからDELETEメソッドを送りたかったので調べてみると、htmlのformではdeleteやputなどのhttpメソッドが使えないらしい。 対策 ↓のページを見つけた Custom HTTP methods from flask import _request_ctx_stack @app.before_request def before_request(): method = request.form.get('_method', '').upper() if method: request.environ['REQUEST_METHOD'] = method ctx = _request_ctx_stack.top ctx.url_adapter.default_method = method assert request

    FlaskでhtmlからDELETEやPUTなどのhttpメソッドを扱う方法メモ - c-bata web
    nwpct1
    nwpct1 2015/02/06
  • Raspberry Piで音声合成(AquesTalk Pi,Open JTalk) - c-bata web

    Raspberry Piで音声合成をするには,Open JTalkかAques Talkあたりがよさそうだったので,どちらも試してみる。 まずは音が出るか確認 イヤホンをつないで↓のコマンドを叩く $ amixer cset numid=3 1 $ aplay /usr/share/sounds/alsa/Front_Center.wav AquesTalk Piで音声合成 参考資料 AquesTalk Pi の使い方まとめ AquesTalk Pi - Raspberry Pi用の音声合成 具体的には↑に示した2つ目のリンクから,ソフトウェアをダウンロード。Raspberry Piに移して展開すればインストール完了。 ただし,この状態では実行権限がないので,chmodで実行権限を与える。 $ cd aquestalkpi $ ls -l 合計 284 -rw-r--r-- 1 pi pi

    Raspberry Piで音声合成(AquesTalk Pi,Open JTalk) - c-bata web
    nwpct1
    nwpct1 2015/01/25
  • Webサービスをリリースして遭遇した不具合とその対処 - Programming Log

    2015-01-18 Webサービスをリリースして遭遇した不具合とその対処 Django Webアプリ はじめに 3日ほど前にいつかリストというWebサービスをリリースしました. DjangoWebサービスつくってみた - Programming Log DjangoWebサービスつくってみた - Programming Log リリースすると、知り合いやブログ記事を読んでくれた方々に使っていただき、いくつかのバグ報告をもらいました. どれも実際に公開してみないと気づかなかっただろうなと思う不具合ばかりで、公開してよかったなという気持ちとともに報告くれた方々に感謝しています.ありがとうございました. Case1: はてブボタンのCSSが読み込めてない 問題 いくつかのページにTwitterやFacebook、はてなブックマークによる共有ボタンを設置していたのですが、はてブボタンの表示が

    Webサービスをリリースして遭遇した不具合とその対処 - Programming Log
    nwpct1
    nwpct1 2015/01/19
  • DjangoでWebサービスつくった - c-bata web

    追記: Djangoのバージョンも古いのでcloseしました エキスパートPythonプログラミング改訂2版 作者: Michal Jaworski,Tarek Ziade,稲田直哉,芝田将,渋川よしき,清水川貴之,森哲也出版社/メーカー: KADOKAWA発売日: 2018/02/26メディア: 単行この商品を含むブログを見る Djangoを触りだして1ヶ月ちょっと経ちましたが、忙しいって言いながらあんまり勉強できてなかったので短期間集中してWebサービスの開発をやってみました.とりあえず人に見せられるところまで来たのでHerokuで公開しています. いつかリスト つくったものはTwitter/Facebook/Githubでログインすることができ,「いつかやりたいこと」を管理・シェアできるサービスです. 前に↓の記事を見かけて、人生でやりたいことリストを作るのっていいなと思い開発し

    DjangoでWebサービスつくった - c-bata web
    nwpct1
    nwpct1 2015/01/15
    書きました
  • Djangoのユーザ認証まとめ - c-bata web

    追記: 使用しているDjangoのバージョンをはじめ、いくつか古くなってきている点があります。DjangoCongress JP 2018で認証に関する発表を行ったのですが、ブログ記事も用意しています。そちらを参照してください nwpct1.hatenablog.com 追記終わり Djangoでユーザ認証をしたかったので調べてみると,DjangoではUserモデルがはじめから用意されているらしい.そこでDjangoの提供する機能をそのまま使ってログイン・ログアウトを実装してみた. さらに調べてみるとpython-social-authというライブラリを使えば、TwitterやFacebook,GoogleGithub等のアカウントを使ったOAuth認証が簡単に実装できるみたいなのでそれも試しておく. ソースコードはGithubで公開してます. https://github.com/c-

    Djangoのユーザ認証まとめ - c-bata web
    nwpct1
    nwpct1 2015/01/11
    書きました
  • Djangoのテストの書き方について勉強したのでまとめる - c-bata web

    追記: この記事の内容はかなり古くなっています。翔泳社さんからDjangoの書籍を出版するので、ぜひ読んでみてください。 実践Django Pythonによる格Webアプリケーション開発 (Programmer’s SELECTION) 作者:芝田 将翔泳社Amazon はじめに この記事はPython Advent Calendar 2014の12日目の記事です. 昨日は「SushiYasukawa」さんによる(Pythonによる簡単なLispインタープリタ実装方法(四則演算編)) - Python, web, Algorithm 技術的なメモでした. 最近Djangoで何か作ったという記事をよく見かけます. 次のQiitaの記事を参考にDjangoの勉強を始められた方が多いようなので、僕も始めてみました. Python Django入門 (1) - Qiita Python Djan

    Djangoのテストの書き方について勉強したのでまとめる - c-bata web
    nwpct1
    nwpct1 2014/12/12
    djangoのユニットテストについてまとめました
  • Pythonでつくる検索エンジン(Webクローラ, Mecab, MongoDB, Flask) - c-bata web

    検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏 作者:山田 浩之,末永 匡発売日: 2014/09/25メディア: 単行(ソフトカバー) (この記事で紹介しているのはTF-IDFとかの計算もない簡素なものです。) はじめに Webサービスのプログラミングに必要なことのだいたいは、スクレイピングに学んだ - Line 1: Error: Invalid Blog('by Esehara' ) この前↑の記事をみかけました。クローリングやスクレイピングは、色々と応用が効きそうなのでしっかり勉強したい。 PythonではScrapyという有名なクローリング・スクレイピング用のライブラリがありますが、今回は勉強としてScrapyを使わずに実装してみる。流れとしては以下のとおり Webクローラの構築 Mecabで日語の形態素解析 検索エンジンの構築 データをMongoDBに格納 Fl

    Pythonでつくる検索エンジン(Webクローラ, Mecab, MongoDB, Flask) - c-bata web
    nwpct1
    nwpct1 2014/11/12
    ブログ更新しました
  • VimからPyCharmに乗り換え(機能の把握と設定) - c-bata web

    はじめに 現在、vimrcはまだ500行ほどだけどすでにメンテが負担になってしまっている。試しにPyCharm使ってみたらびっくりするくらい使いやすかったので 今回は、PyCharmの設定と便利機能の把握、ついでにvimrcもコンパクトにする。 参考資料 PyCon JP 2014で清水川さんの発表がとても参考になった。。 CH06 PyCharm活用術 (ja) - YouTube PyCharm 活用術 (ja) この発表聞いてPro版買おう!とか思ってたら学生用のライセンスがあった(Free for students:)。学校のメールアドレスと名前を入れたら登録できた。後はJetBrainsのアカウントを作ってからPyCharm Professionalをダウンロード・インストール、起動してからサインインすれば使えました。 PyCharmの設定・プラグイン テーマの変更 Androi

    VimからPyCharmに乗り換え(機能の把握と設定) - c-bata web
    nwpct1
    nwpct1 2014/10/06
    pycharm便利ですよ!
  • Pythonデバッガ(pdb)とテスト(pytest)についてのメモ - c-bata web

    はじめに 今までテストを書くどころかデバッガを使ったことがなかったのですが、id:Kesinさんの↓の記事を読んで、このままではマズイと思ったので勉強しました。 研究のプログラミングにおける悲劇を無くすためのGitとテスト デバッガ Pythonには標準でpdbというデバッガが付いてるらしい。 pdbPython デバッガ Pythonのpdbモジュールでデバッグする こちらによると、 使い方はいろいろあるみたいだけど、とりあえず set_trace は便利なのですぐにでも使ってみるべき。pdb.set_trace() でデバッグ用の対話シェルが実行される。 とのこと。他のサイトでもプログラムの気になる所にpdb.set_trace()を埋め込んで使っていました。 import pdb pdb.set_trace() 使い方 PyCon JP 2012 hands-on セッション/

    Pythonデバッガ(pdb)とテスト(pytest)についてのメモ - c-bata web
    nwpct1
    nwpct1 2014/06/22
    pythonのデバッガーやテストについて勉強しました
  • dotfilesをGitHubで管理,vimプラグインをNeoBundleで管理する方法メモ - c-bata web

    ドットファイルをGitHubで管理する 最近知ったのですが,.vimrcや.bashrc等のファイルのことをドットファイルというようです。 これらをGitHubで管理することでどのマシンでも同じ設定がすぐに使える!っていうのが流行っているらしいなので、早速取り入れてみる。 まずはGitHubのページから「Create new Repository」を選択。「dotfiles」という名前のリポジトリを作成。 この時,README.md等を作成するのところにチェックを入れると後でpushするときに面倒くさくなるので,リポジトリ名だけを指定してリポジトリ作成。 それが終わったら次はローカルにdotfilesディレクトリを作成して,GitHubで管理したいファイルを移動する。 $ cd $ mkdir dotfiles $ mv .vimrc dotfiles $ mv .gvimrc dotfi

    dotfilesをGitHubで管理,vimプラグインをNeoBundleで管理する方法メモ - c-bata web
    nwpct1
    nwpct1 2014/03/30
    vimrcのNeoBundleの設定に誤りが有りました。修正しましたので、参考にしてくださっていた方は確認をお願いします。