Engine+Pythonで脱プログラミング初心者を目指す日記この広告は、90日以上更新していないブログに表示しています。2013-02-04トラックバックのテストPython自作ブログにトラックバックを送信するテスト。トラックバックを受信するテストか。Engine+Pythonで作成したアプリで、Djangoのテンプレートエンジンを使用しているのですが、テンプレートファイルの代わりに、データストアから取得してきた文字列をテンプレートとして使いたいのです。Typeのテンプレートの仕組みのようなものを実現したい)いつもは次のように、template.render()の結果をresponse.out.write()しています。template_values))しかし、template.render()はテンプレートファイルへのパスしか渡すことができません。})self.response.out.write(template_object.render(template_values)としてあげれば出来そうな感触を得ました。threadというエラーが発生してしまいました。)としてあげたところ期待したとおりに画面が描画されました。%}といったDjangoテンプレートエンジンの機能が使えません(pathが見つからないと無視され、何も出力しないようです)継承やインクルードが使えないのではとても不便ですから、次はこのあたりを解決しなければならないのですが、これに関しては現時点でどう解決すればよいのか、皆目見当がついていません。どなたか良い方法を教えていただけると助かります。Lionがインストールされている『ボリューム全体』を指しているようです。HDボリュームをマウントしようとするとロック解除を求められるものの、BOOTCAMPボリュームは普通に中身を閲覧・操作できました。FileVaultをオンにしても、OSが起動する前にパスワードを求められたりはしなかったので、まあそうなんじゃないかなーと薄々思ってはいたんですが、これはちょっと残念でした。以下、試した手順と結果です。Lionをインストールする。7をインストールする。HD"と"BOOTCAMP"というボリュームが存在する。LionのFileVaultでHDD全体を暗号化する。Lion)にUSB接続する。HD"のロック解除用パスワードを入力してください。いうダイアログウィンドウが表示される。HDとしてマウントされる。間違ったパスワードを入力するとダイアログウィンドウがぷるぷる震えて再入力を促される。n回間違ったら○○になる、みたいなことはない。キャンセルボタンをクリックするとマウントされない。(6)"BOOTCAMP"は特にロック解除などを求められることはなく、USB接続が認識されたら即マウントされる。7)にUSB接続する。(8)"BOOTCAMP"が(試したPCでは)Eドライブとして認識され、いつもの自動再生のオプション選択ウィンドウが表示される。(9)自動再生オプションから「フォルダーを開いてファイルを表示」を選択するとExplorerで中身をいじることができる。Encryption(Symantec/有料)等を使って個別に暗号化するか、(この2つのソフトで可能かどうかは試していませんが)ディスク全体を暗号化するしかないようです。7だけをインストールする手順その他プログラミングと関係ないですが、大いにハマったのでまとめておきます。Xのボリュームを消去してWindowsをインストールすればよいだけです。Pro/Airの最新モデルにはインストールディスクが付属していません。代わりにリカバリー用ユーティリティが用意されています。Xを修復インストールできるようになっているからです。Xをダウンロードしてインストールしてくれます。このリカバリー用ユーティリティでブートした場合、ディスクユーティリティを使用することはできますが、内蔵HDDのボリュームを操作することはできません。Xのボリュームを消去することができない(Windows"だけ"がインストールされた状態にすることができない)のです。Xのインストールディスクをなんとかして作成しなければなりません。作成手順は次のURLに詳しく書いてあります。インストール.app』というファイルから、インストールディスクのディスクイメージを取り出し、USBメモリやDVD-Rに書き込みます。X用ボリュームを消去することでできます。X用ボリュームを消去する前にWindows用のデバイスドライバーを用意しておかなければなりません。Pro/AirにWindowsをインストールしてもまともに動作させることができません。アシスタント』というアプリケーションを使ってAppleからダウンロードし、USBメモリやDVD-Rに書き込みます。アシスタントを起動します。『最新のWindowsサポートソフトウェアをAppleからダウンロード』にチェックを入れて『続ける』、書き込むメディアの種類を選択して『続ける』、です。Toolsのことです。Xボリュームを消去します。Optionキーを押下しながら電源を入れ、起動ディスクを選択する画面になったらDVDドライブに作成したインストールディスクを挿入します。Xが追加されますので、それをダブルクリックし、そのまま数分間待ちます。Xのインストールユーティリティ画面が表示されます。最初に使用する言語を選択し、次に表示されるメニューから『ディスクユーティリティ』を選択し、起動します。ディスクユーティリティが起動したら左サイドバーから内蔵HDDを選択し、右ペインのタブから『パーティション』を選択し、次のとおりに設定します。名前:空欄(空き領域)フォーマット:空き領域サイズ:そのまま(最大)オプション...:マスター・ブート・レコードを選択(参考)MacをWindows専用に上のとおり設定したら『適用』をクリックします。プログレスバーが表示されますが、すぐに終わります。終わったらディスクユーティリティを終了してOptionキーを押下しながら再起動します。7をインストールするOptionキーを押下しながら再起動したので、また起動ディスクを選択する画面が表示されます。7のインストールディスクを挿入します。7』が選択できるようになりますので、ダブルクリックします。7のインストールウィザードに従ってインストールするだけです。''Air''はDVDドライブを内蔵していませんので、DVDドライブをUSB接続する必要があります。7のインストールディスクからブートできませんでした。Driveを使用したら問題なくブートできました。何か対応規格のようなものがあるのかも知れません。PythonでテンプレートエンジンをDjangoからJinja2に変更したのですが、Djangoで使っていたlinebreaksbrフィルターが使えなくなり困ってしまいました。そこでlinebreaksbrという同じフィルター名でJinja2のカスタムフィルターを作ってみました。jinja2_custom_filters.pyというファイルを作成して以下を記述します(ファイル名は適当につけました)。/>\n")このlinebreaksbrという関数を、Jinja2にカスタムフィルターとして登録します。下のコードがスタートガイド(英語)で示されているJinja2を使うときの記述です。loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),)カスタムフィルターを登録するには、これ↑をこう↓します(下3行を追加)。}}とすると、改行が<br>に変換されるようになりました。以下を参考にさせていただきました。追記ここから:下のコードではDatastoreエンティティのkey値をセッションIDに使用していますが、これはセッションハイジャックの脆弱性が生じてしまうので避けるべきだと気付きました。key値は一見ランダムな文字列に見えますが、同じkindのエンティティのkey値は末尾が少し変わる程度なので、cookieに書き込んであるセッションIDから他人のセッションIDが類推できてしまいますね。uuid.uuid4()等でランダムな値を生成する方法をとった方がよさそうです(下のコードはそのようには修正していません)追記ここまで。Pythonで独自にセッション管理をするためのサンプルプログラムは検索したらいくつか見つかったのですが、ちょっと僕にはむずかしすぎるというか、何がどうなってそうなるのかサッパリわからなかったので、自分で理解できる範囲で書いてみました。デキる人から見たらかなりアレだと思いますので、お気づきの点があったらぜひご指摘いただけるとうれしいです><それと、HTMLのテンプレートまでここに書いたら長大なエントリーになってしまうので割愛してますが、なにかいい方法ないものでしょうか。error_messages.append('ユーザー名は6文字以上、32文字以下でお願いします。error_messages.append('ユーザー名は半角英数字と_(アンダースコア)でお願いします。error_messages.append('パスワードは4文字以上、32文字以下でお願いします。error_messages.append('パスワードは半角英数字でお願いします。error_messages.append('そのユーザー名はすでに使われています。)を実現したいのですが、うまい方法がわからず悩んでいます。いまは以下のようにしています。テンプレートの方で以下のようにしてタグを取り出しています。エンティティーを取り出すのが以下のようになっていて、若干ややこしいです。エンティティを取得する。エンティティを取得する。......なにかもっとよい方法がないものかと思っているのですが、アドバイスいただけると幸いです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。