タグ

ブックマーク / www.ianlewis.org (20)

  • Testing Django Views Without Using the Test Client

  • Fabric デプロイツールのPythonicな書き方 - Ian Lewis

    Fabric は指定したコマンドを各ホストで実行する実行モデルです。この場合は特にホストの指定がなかったので、全部ローカルで、一回実行することになります。 これは結構つまんないので、当の例を見ましょう。これは最近、仕事で作ったコマンドです。 nginx サーバーでメンテ画面を出すようなコマンドです。 各ロードバランサーで実行します。 from fabric.api import run, cd, abort, require, sudo, env from fabric.decorators import runs_once, roles from fabric.contrib.console import confirm ... @roles('loadbalancers') def start_maintenance(): """ メンテナンス画面に切り替える """ _produc

    peketamin
    peketamin 2018/10/04
  • Djangoの DateTimeField の auto_now と auto_now_add

    Django の Model の DateTimeField に auto_nowと auto_now_add というキーワード引数があります。この引数はデフォールトで False になっていますが、 True にすると、 モデルのインスタンスを保存するタイミングで更新されます。 auto_now=Trueの場合はモデルインスタンスを保存する度に現在の時間で更新される。auto_now_add はインスタンスの作成(DBにINSERT)する度に更新される。 ただ、ありがちなのは、この引数を使うと、自分でこのフィールドを更新することができません。 例えば、こういうようなモデルがあるとします。 from django.db import models class MyModel(models.Model): created_at = models.DateTimeField(auto_now_

    peketamin
    peketamin 2016/07/21
  • HTMLサニタイズするライブラリbleachを試してみた

    最近にHTMLををサニタイズしてくれる便利なライブラリ bleach を見つけた。HTMLを受け取ってウェブ上に表示したいんだけど、 危険なやつをエスケープするもしくは消したいって場合に使うものだ。特にWYSIWYGエディターで入力されたHTMLとか html5lib を使っているから、閉じタグが入ってないような汚いHTMLでもかなり強いらしいけど、どのくらい強いか試してみたかった。 僕は今まで自前で作った BeautifulSoup ベースの HTMLパーサーを使っていた。長い間使っているから、(自慢ではないけど)対応するエッジケースが多くて、結構使えたものでした。bleachは比べるとどんな感じなんだろうかと知りたかった。 例えば、 HTMLでは、以下のようなHTMLを見たことありませんか

    peketamin
    peketamin 2016/06/22
  • feedparserで、media コンテンツを取る

    feedparserで、どうやってビデオを取れるかをずっと悩みましたけど、今日少しだけ、進展した。問題の核心はyoutubeや、vimeoは Yahoo! RSS モジュールを使って、RSS拡張ネームスペースにデータを入れている。この拡張データの処理はfeedparserが 中途半端でやってる。見てみよう。 YoutubeのGDATA APIで取ったデータはこうなる <entry> <id>http://gdata.youtube.com/feeds/api/videos/R3orQKBxiEg</id> <published>2008-07-17T23:58:51.000Z</published> <updated>2008-11-24T02:32:25.000Z</updated> ... <title type="text">Official Watchmen Trailer</ti

  • (より)小さいDockerイメージを作ろう

    最近、コンテナ技術が流行っていていろなツールを興味深く触っている。その中の一番人気のはみんな大好きなDockerDockerdocker runでコンテナの実行環境を簡単に作ってくれる上、docker build でコンテナのイメージの構築も簡単にできる。Dockerのイメージ構築はDockerfileというMakefileのようなファイルを元にその中のコマンドを順番に実行して構築していくもの。 例えば、 FROM debian:jessie RUN apt-get update RUN apt-get install -y python RUN mkdir -p /data VOLUME ["/data"] WORKDIR /data EXPOSE 8000 CMD [ "python", "-m", "SimpleHTTPServer", "8000" ]

    peketamin
    peketamin 2015/11/27
  • Google Cloud PlatformのDeveloper Advocate になりました!

    Googleの新入社員として、 Google Cloud Platform チームで働くことになりました。 Developer Advocateとして、僕は、以前、 GDE としてやっていたことをGooglerとしてできるようになりました。 前のブログポストで、仕事が決まっていないと書いていたが、それは完全に事実ではなかった。この仕事はほぼ決まっていたが、いろいろ決まっていないことがあり、実は仕事を初めてから発表したかったので、そう書いていた。 ということで、日ではGoogle CloudのDeveloper Advocateはなんと2人になりました! 今までは、クラウドを利用する開発者のアドヴォケートが1人か0人だったが、これで一気に2人になったことで、それなりの責任を持ちながら、日、そしてAPACの開発者をサポートすることを強く思っています。これからも、GDEにも関わると思いますし

    peketamin
    peketamin 2015/01/22
    わお!おめでとうございます!
  • 株式会社ビープラウドを退社しました

    BPでは6年間、長い期間で勤めた。振り返ってみると、僕がBPに入った時にBPはだいぶ違う会社だった。6,7人の受託開発をする会社でほぼすべての受託案件は常駐だった。最初の1年間が一番忙しかった。そのときに入った案件は4,5ヶ月で終わったけど、他のメンバーとよく頑張ったせいか、その後、次々と案件が入ってきて、仕事がどんどん増えてきてきつくなった。それで、入社してから大体1年経ったところから会社が徐々に大きくなってきた。それとともに会社が信頼されて、常駐開発ではなく持ち帰って会社のオフィスで仕事をできるようになった。 その後、Pythonを持ち上げたり、connpassという自社サービスもやったり、いろいろおもしろい仕事ができた。 Pythonについて BPに入社したころ、Python仕事できる会社って相当なかった。ま、あったかもしれないけど、コミュニティもバラバラで、Python仕事した

  • Testing HTTPS with Django’s Development Server

  • Google Developer Experts を卒業しました

    先週の月曜日(6/9)に公開されて、皆さんは多分見逃している人が多いと思いますが、私は Google Developer Expert (旧Google Api Expert) を卒業しました。私が3年半くらいやっていて、 とても楽しかったです。Google IO に行ったり、地方のプログラマーと接したり、いろな貴重な経験を させて頂きました。 Api Expertになったころ 2010年11月に Google Api Expert になりました。 その時は、App Engine がまだプレビューだったごろでした。すこし、 kay-frameworkの開発を松尾さんに手伝ったんですか、Api Expert に なってから、Kay 1.1 の開発を中心でやって、いくつかの機能を組み込みました。 その次の2011年の夏から、App Engineのリリーススケジュールが大体1ヶ月1リリースになっ

    peketamin
    peketamin 2014/06/18
    お疲れ様でした!
  • Custom Admin Views and Reversing Django Admin URLs

    I recently used the new feature in Django 1.1 for reversing django admin urls and specifying custom admin views in my project django-lifestream. django-lifestream has a custom admin view which allows users to update the lifestream manually. The code looks like the following: class ItemAdmin(admin.ModelAdmin): list_display = ('title', 'date','published') exclude = ['clean_content',] list_filter = (

  • Django 1.5 の紹介

    この記事は 2012 Pythonアドベントカレンダー(Webフレームワーク) の第3目の記事。昨日の記事は id:shomah4a の「 2012 Python アドベントカレンダー (Web フレームワーク ) 二日目 WSGI でなんか作ってみる 」。明日は surgo さんが、 Django 1.5 以降と Python 3 あたりの記事を書いてくれます。 10月25日に Django 1.5 alpha 1 がリリースされて 、順調に先週の火曜日(11月27日)に Django 1.5 beta 1 がリリースされました 。徐々に Django 1.5 の正式リリースに近づいてきいます。もしかして、年内にいいクリスマスプレゼントになるかもしれません。 新機能 Django 1.5 はたくさんの変更がありますが、一番大きい変更をピックアップして、紹介します。 Python 3 対応

    peketamin
    peketamin 2014/02/10
    イアンさん感謝!
  • PyCon Mini JP 「お前、誰よ」まとめ

    昨日、 PyCon Mini JP にSphinx 1.1 の i18n 機能について発表しました。 Python コミュニティの偉い石さんが 日Pythonコミュニティの歴史について、いいキーノートを発表してくれたけれども、いろなPython 開発者がみんな集まる PyCon みたいなイベントが珍しいので、最初は固くて、重たい気持ちを感じました。 清水川さんや、鈴木さんがアイスブレークしようとしましたが、固い雰囲気が続いてしまった。 私はスタッフさんから無理やりアイスブレークをするのが非常に難しいと認識した。もし、スタッフさんがよく頑張ってくれたのに、みんなさんがあまり楽しめずに終わってしまったら、非常に残念なことになるなと思った。発表が受けられるために、以前にいろいろ考えて資料を作ったが、もうちょっと軽い気持ちをさせるため、発表する前に、ギリギリな時間に #bucho の写真の

  • クリエーティビティーは大事だ

    この記事は BeProud ではどう仕事しているかの3部構成シリーズの3部目。github のZach Holman さんが書いて頂いた 「 [How Github Works](http://zachholman.com/posts/how-github-works/) 」シリーズの BeProud版。1部目は「 [Hours are Bullshit](http://zachholman.com/posts/how-github-works-hours/) 」の解説の「 [BPで働くのがどうか (How BeProud Works)](/jp/bp-how-beproud-works) 」で、2部目は「 [Be Asynchronous](http://zachholman.com/posts/how-github-works-asynchronous) 」の解説の「 [仕事を非同期に

  • Redmine で reStructuredText を使う方法

    我々BeProudのRedmineのWikiやチケットの説明文やチケットのコメント文にはReStructuredTextを使っている。 RedmineのデフォルトのTextileはPythonが好きな弊社で使うのは以ての外。なので、ReSTを使うようにした。 そして、生のReSTしか使わなければ、出来ることが少ないので、blockdiagや、コードの構文ハイライト(Pygments) を使っている。 Redmine はテキストフォマッターを入れ換えるように作られている。プラグインを入れるとWiki やチケットの内容のフォーマットを変えることができます。BeProud では Redmine reStructuredText Formatter の RbST/docutils ブランチを使っている。 http://glacialis.postmodo.com/posts/zyd1ig インスト

    peketamin
    peketamin 2013/07/06
  • Django 1.5.1 のリリース (ジェネレーターに例外処理はダメ?)

    Django 1.5.1 が昨日 リリースされました 。リリース内容を見るて、クエリーセットにメモリリークの問題があったそうです。 もともとのバグ 1.4 では、2回クエリーセットを解決すると、空な結果が返ってきて、前の結果がガーベージコレクションされない現象があったそうです (バグ #19895) 例えば: qs = MyModel.objects.all() first = list(qs) second = list(qs) # second は first と一緒だはずなのに、空になってしまう。。 1.5 ではこの問題に対して、 修正された らしい。ただし、1.5 のリリース後にその修正はメモリリークを招いたことが分かった。 メモリリーク この問題は Python の動きに関係があるそうです。Django の開発者は Python のバグ を登録していたんだけど、うちは社内で「それ

    peketamin
    peketamin 2013/04/21
  • virtualenv, virtualenvwrapper, pip を使う方法

    あるプロジェクトの依存は特定なバージョンじゃないとダメな場合が結構多いと思いますけど、最近、pythonの仮想環境を簡単に作れるようになりました。virtualenv と virtualenvwrapper と pip の組み合わせを紹介します。 virtualenvは環境を作ってくれるライブラリで、virtualenvwrapperはその作った環境を簡単に管理してくれるツールになります。 まず、virtualenv と virtualenvwrapper をインストール.

  • AE35 IS NOT IMPRESSED

    僕が作った appengine アプリ http://ae35notimpressed.ian-test-hr.appspot.com/ (Update: 落としました)はもう見ているかもしれませんが、何で作ったか、 どういう意味なのかがわからない人が多くて、ちょっとブログで説明しようかなと思って、書いてみた。 PyFesから始まる 11月24日の PyFes で connpass チームとして @ae35 と2人で発表しました。発表している時に、Python界のカメラマンがいっぱい写真をとりました。偶然なことではありますが ae35 の表情は想像してみるとあまり感心してないように見える写真がいくつかとられた。 McKayla is Not Impressed その時に、McKayla Maroneyさんの「 McKayla is Not Impressed 」というmemeを思い出した。

  • A Japanese Python Community Who’s Who

    There is a small but growing Python community in Japan. Many people, even some of those Python enthusiasts who living in Japan, are unaware of this and don’t know who any of these people are. There are a lot of reasons for this but the number one reason is probably the large language barrier between Japanese speakers and non-Japanese speakers. Currently it can be kind of hard to know who’s interes

    peketamin
    peketamin 2013/01/14
  • Python でPassbookファイルを作成する

    最近、iPhoneのiOS6でPassbookという機能が出ました。Passbookはイベントのチケットや、飛行機や船の搭乗券や、クーポンや、ポイントカードを管理出来る地味に便利なアプリ。 僕は興味があって、Pythonでどう作るかを調べてみたので、ここで共有しようと思っている。Passbookはパスの更新の仕組みもありますが、とりあえず、パスを作るとところまで説明しようと。 まずは、Appleの日語ドキュメントの「Passbook プログラミングガイド」をざっと見たほうがいいかもしれない => https://developer.apple.com/jp/devcenter/ios/library/japanese.html 基礎の仕組み的に、Passbookはサーバーからダウンロードしたzipファイル。パスの内容はpass.jsonというJSONファイルの中に入っている。中身のファイ

  • 1