2011 年 10 月の記事一覧です(3 件)

[iTunes]iTunes でコンピレーション盤をまとめる

今まではあまり気にしなかったのだけど、最近「おかあさんといっしょ」などのCDをiTunesに取り込むことが多く、そのたびに同じアルバムなのに収録されているアーティスト分だけアルバムが出来てしまう現象に悩んでいて、どうしたものかと思っていたらなんのことはない本家サイトに書いてあった

20111031_01

このように同じアルバムでもアーティスト毎にアルバムが出来てしまうので、すべて選択した後

20111031_03

コンピレーションの一部を「いいえ」から「はい」にする。

20111031_02

そうすると上手くまとまってくれる。


おかあさんといっしょはアルバムアートワークがすんなり取得出来ないのが不満

[Werkzeug][Flask]FlaskをSalted Passwordsに対応させる

本当は怖いパスワードの話(1/4) - @ITを読んでなるほどなぁって思っていたのですが、それじゃあFlaskでソルト化(ソルト化っていう言葉が正しいかわかりませんが今回はこう書きます)ってどうやるんだろうかと調べたら、そのものズバリの事例がスニペット集に載っていました。


つまりはWerkzeug(ヴェルクツォィグって読む)がソルト化とそのチェック機能を提供してくれるとのこと。せっかくなのでこのBlogの管理者ログインパスワードをソルト化しました。

generate_password_hashを使ったパスワードのハッシュ+ソルト化

スニペットではwerkzeug.securityのgenerate_password_hashとcheck_password_hashを使ったclassを作成していますが、今回はあくまで個人Blogでの管理者パスワードのみ対応ですので、コマンドラインで作ります。 こちらを参考に
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> from werkzeug.security import generate_password_hash
>>> generate_password_hash("orenopass")
'sha1$4wGWLe5J$d1babced1d89ad9ff811107b7f42ca866fd7b65d'
>>> 

ついでにチェックをしてみます
>>> from werkzeug.security import check_password_hash
>>> ssha1 = 'sha1$4wGWLe5J$d1babced1d89ad9ff811107b7f42ca866fd7b65d'
>>> check_password_hash(ssha1,'orenopass')
True
>>> check_password_hash(ssha1,'omaenopass')
False

Blogに組み込む

生成されたソルト化されたハッシュをブログに組み込みます。私の場合はコンフィグファイルに各種設定値を記述しているのでそちらを編集します。今までPASSWORDが記述されていたところにHASHPASSWORDを記載し、PASSWORD項目は削除します。
% vi ./oreno.cfg

SQLALCHEMY_DATABASE_URI = 'sqlite:////Path/to/www/app/oreno.db'
SQLALCHEMY_ECHO = False
SECRET_KEY = 'SECRET_KEY'
USERNAME = 'orenonamae'
HASHPASSWORD = 'sha1$4wGWLe5J$d1babced1d89ad9ff811107b7f42ca866fd7b65d'
DEBUG = True

次に認証ロジックを修正します。
% vi ./app.py

@app.route('/login', methods=['GET','POST'])
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != app.config['USERNAME']:
            error = 'Invalid username'
        elif not check_password_hash(app.config['HASHPASSWORD'],request.form['password']):
            error = 'Invalid password'
        else:
            session['logged_in'] = True
            flash('You were logged in')
            return redirect(url_for('show_entries'))
    return render_template('login.html', error = error)

werkzeug.securityのcheck_password_hashを使用します。入力されたパスワードとcfgファイルに記述されたソルト化されたハッシュを照合させています。

今回色々と調べてみて、この本に興味が湧いてきたので購入してみようかなと思います。

[Git][Dashboard]GitのチートシートをOSXのDashboardで使う

最近Gitを使い始めました。仕事で使うわけではないのですが、これからの時代はプログラマでなくてもそこらへんのツール、技術は知っておくべきじゃないかと勝手に思い始めていて、ちょうど今Flaskで作っているこのブログをGitで管理しようと思ったわけです。
でもこのGitという奴、ちょっとコマンド多くて覚えられません(他を知らないけど)。なのでチートシートを探して良さげなものを見つけたのでDashboardに置いてみました。

20111002_10

ちなみに頂いたチートシートはこちらのものです。
とりあえずチートシートをDashboardに置く方法を下記します。Leopard、SnowLeopardで確認取っていますが、Lionは環境がない為確認していません。

PDFをJPEGに変換する

チートシートをDashboardに置くためには、チートシートが画像ファイルになっている必要があり、その画像ファイルをSafariで開く必要があります。今回使用したチートシートはPDFファイルだったので、まずそれをJPEGに変換します。私はPDF→JPEG変換にTh-MakerXを使いました。

20111002_01

JPEGをSafariで開く

次に、変換したJPEGファイルをSafariで開きます。

20111002_02

Dashboardに登録する

SafariでJPEGファイルを開いたらファイルメニューから「Dashboardで開く」を選択します。

20111002_03

全範囲を選択して追加ボタンをクリックします。

20111002_05

するとDashboardにチートシートが登録されたので、チートシート右下にあるオプションボタンをクリックし、テーマを決め、さらに編集ボタンをクリックして、表示サイズを調整します。

20111002_07

これで完成しました!

ちょっとした小技

システム環境のExposeの設定画面で、画面のコーナーへの機能の割り当てにて、画面左下へマウスカーソルを持って行くとDashboardが出てくるようにしています。慣れると結構便利です。

20111002_09

Dashboardをチートシート置き場にする方法は以前このブログでも書いています。
PAGE TOP