Flask タグの一覧です(18 件)

[Python]Shizuoka.py #2 に参加してFlaskについて話をしてきた

Untitled

Shizuoka.py #2 に行ってきました。またFlaskについて発表してきました。

会社でお偉いさん方にプレゼンすることは多々あれど、このような場で発表するのは初めてだったので、どのくらい笑いをとれるか心配でしたが、なんとか無事終えることが出来ました。


発表後、20分程で私の斜め後ろにいらっしゃったaodagさんがflaskからpyramidに書き換えてくれました


パーフェクトPython (PERFECT SERIES 5)
パーフェクトPython (PERFECT SERIES 5)

aodagさんが持参されたパーフェクトPython争奪じゃんけん大会で散ったので帰りのバスでamazonポチりました。じゃんけん大会を見事勝ち抜けてゲットされた@ringtaroさんおめでとうございます!

私以外の発表された方々のスライド(都度更新します)


javascriptも今年少しはやるつもりだったけど、今年も折り返し地点まできてしまったw



ちょっとVirtualBoxでサーバ立ててやってみようと思う。



パッケージングについて。正直ここまでたどりつけていないけど、ところどころは理解できた。今どのような状況なのかが整理されているので今後パッケージを作成することがあった場合、書籍やWebでパッケージングを調べる際、それが今有効なのかどうかを知るのにとても役立つと思った。

楽しかったので次回も参加出来たらまた何か発表したいです


[Python]virtualenvwrapperでworkonしたら自動的にプロジェクトフォルダに移動してついでにgitのリモートリポジトリの更新をチェックする

人生も折り返しを過ぎると脳の劣化が激しくて異常なくらい物忘れが起こるのですが、最近は自宅でこのブログなんかをカスタマイズしてbitbucketにpushしておいたことを会社ですっかり忘れてて昼休みとかに作業始めちゃって途中で気づいて慌てることが頻繁にあります。

作業始める時にリモートリポジトリを確認することを忘れないとかはもう無理なので、そのかわりプロジェクトフォルダでworkonしたらオートマチックにgitのリモートリポジトリの更新をチェックする(git fetch)ようにしました。

workonしたら自動的にプロジェクトフォルダに移動する

virtualenvwrapperのマニュアルにあるsetvirtualenvprojectを参考に

まずプロジェクトフォルダを作成します(プロンプトが可愛いのは気にしないで下さい)

aoshiman ~/dev(*'-') <mkdir testproject

次にtestというvirtualenvを作成し、その後testprojectフォルダに移動します。

aoshiman ~/dev(*'-') <mkvirtualenv test
New python executable in test/bin/python
Installing setuptools.............done.
Installing pip...............done.
Cleaning up...
(test)aoshiman ~/dev(*'-') <cd testproject/

testというvirtualenvにいる状態でsetvirtualenvprojectコマンドを実行して、testprojectフォルダとtestというvirtualenvを紐つけます

(test)aoshiman ~/dev/testproject(*'-') <setvirtualenvproject
Setting project for test to /Users/aoshiman/dev/testproject

いったんdeactivateし、ホームディレクトリに移動した後、workonしてみるとtestprojectフォルダに移動していることが確認出来ます。

(test)aoshiman ~/dev/testproject(*'-') <deactivate
aoshiman ~/dev/testproject(*'-') <
aoshiman ~/dev/testproject(*'-') <cd
aoshiman ~(*'-') <workon test
(test)aoshiman ~/dev/testproject(*'-') <

activateしたら自動的にgit fetchする

これはvirtualenvwrapperのhookscriptを使用します。

先程同様virtualenvwrapperのマニュアルにあるpostactivateを参照に以下の様に記述します。

aoshiman ~/dev/testproject(*'-') <cat ~/.virtualenvs/test/bin/postactivate
#!/usr/local/bin/zsh
# This hook is run after this virtualenv is activated.

/usr/local/bin/git --git-dir=$HOME/dev/test/.git --work-tree=$HOME/dev/test fetch

postactivateはグローバルとローカルにあります。全てのvirtualenvのactivate時にhookを適用する必要は無いはずなのでローカルに記述します。

多分これでやりたいことは実現できたと思います(fetchする時間分待たされるるけど仕方ないかな)。

[Python][Flask]ブログエントリーの経過時間を表示させる

ブログを再構築した際に追加した機能のひとつにブログエントリーの経過時間を表示させるってのがあります。

スクリーンショット 2013-05-13 20.27.39

こういうやつです。

これは、IT技術なエントリーを多めに掲載するブログなら、検索された時に経過時間が表示されたほうが良い(情報が古そうかどうかパッと判断できたほうが良い)と考えたからです。

元ネタはここです

ここでは、jinja2のカスタムテンプレートフィルタとして作成し、ツイッターのようなマイクロブログサービスにおけるタイムラインでの相対的な時間経過表示に使用するtipsになっていますが、私はそれをFlaskのflashで使用するようにカスタマイズしました。ついでに日本語ローカライズもしています(日本語は時間単位に複数形が無いのでコードが簡潔になりますね)。


上記コードはutils/timesince.pyなどにしておいて、これをアプリケーション側で以下の様に記述し

from utils.timesince import timesince

@app.route('/entry/<int:post_id>')
def show_entry(post_id):
    dt = Entry.query.filter_by(id = post_id).one()
    flash(u'%s' % timesince(dt.pub_date), 'alert-success')
    return render_template('show_entries.html',
        entries = Entry.query.filter_by(id = post_id).all(), tags=show_tags())

テンプレート側で以下の様に受け取ります

<div class="row">
            <div class="span9">
                {% for category, message in get_flashed_messages(with_categories=true) -%}
                <div class="{{category}}">{{message}}</div>
                {%- endfor %}
                {% block body %}{% endblock %}
            </div>
            <div class="span3">
                <div id="sidebar">
                    {% block sidebar %}{% endblock %}
                </div>
            </div>
        </div>

因みにFlaskのflashにはメッセージとともにカテゴリーを設定することが出来て、それもテンプレート側で受け取ることが出来ますが、私はカテゴリーにtwitter-bootstrapのAlertsで使用されるクラス名をそのまま使用しています。そうすることによってテンプレート側でのクラス名にそのまま利用することが出来るからです。

ここではAlertsのsuccessを使っていているので緑っぽいですが、infoだと青になると思います。

ちょっと色がトロピカルっぽいんでもう少し淡くしようかとも思っています。

[Python][Flask][Sqlalchemy]blogを作りなおしてみた

blogをFlaskベースに移行してから1年半程経過しているのですが、作りっぱなしで殆ど何も手を加えていない状態が続いていましたが、ここにきてようやくリニューアルというか色々作りなおしてみました。

元々飽きっぽい性格で、作って動いた時点で満足して放置していたようなもので、実のところSphinxベースのstaticなTinkererに移行しようと思って着々と移行作業を進めていたのですが、思いとどまりFlaskでもう一度再構築してしまいました。

なぜそうしたかというと単純で、Shizuoka.pyに参加してモチベーションが上がったからです


Untitled

Untitled

当日の様子などはここらへんで


いやぁ、前々日に第二子が生まれたのに見舞いにも行かず、2歳児を預けてまで参加したかいがありました。その後は見舞いやらなんだかんだと忙しくなり、参加エントリーも書けずに参加した方々に申し訳ないやら情けないやらでしたが、罪滅ぼしではないですが、Shizuoka.pyに感化されて色々やってみたよっていうエントリーをアップします。

やったこと

  • Flask-sqlalchemyをやめてSqlalchemyそのものを使用することにした。RDBMSはsqliteでスキーマも変えてないけど、ここを参考に再構築した(@kzfmさんありがとうございます)
  • CSSにTwitter Bootstrap(というかBootswatchってやつ)を使用した。因みにバナー写真は河津町の河津桜です(河津桜祭りによく行きます)。
  • リモートリポジトリをさくらVPS上のGitからBitbucketのプライベートリポジトリに変更(本番環境はさくらVPS on Ubuntuで変わらず)
  • Flask-sqlalchemyをやめて内包していたページネイト機能は使えなくなったので、SnippetにあるSimple Paginationを拝借
  • 個人的に好きなFlaskのFlashを色々インフォメーション的に使ってみた(タグや個々のエントリーをクリックすると判ります)

  • やり残し

  • レスポンシブが効いてない気がする 5/10 出来ました
  • リンクわかりずらいので色付ける 5/10 出来ました
  • Bitbucketへのpushからwebhookにてgit pullしたい(今は手動)5/12 最低限のことは出来ました
  • apacheとmod_wsgiで動いているのでそろそろgunicornとかにしたい

  • 改めて弄ってみるとFlaskは楽しいですね。もう少し自在に使えるようになりたいなって思います。

    次回Shizuoka.pyやるときはなにか喋れればいいなって思うけど参加できるのかどうかが心配...

[CotEditor]Terminal.appからCotEditorでファイルを開いて編集する方法

FlaskでPythonスクリプトを修正したり新たに書く場合はVimを使ってますが、templateファイルを編集する場合はCotEditorを使ってます。特にはっきりとした理由はないのですが、templateファイルの編集ではCotEditorが使いやすく感じています。
ただ、Vimでの作業やGit操作、sqlite操作等、template編集以外は全部ターミナルで行なっているので、いっそのことターミナルからCotEditorを開けないかなと調べたらありました。


私はzshを使っているので、zshrcに以下のような記述を追加。
#coteditor
alias cot='open $1 -a /Applications/CotEditor.app'

これで cot layout.html とかで開けます。便利!
PAGE TOP