2009年4月12日日曜日

Mac OS XのBlogライター、ectoを試してみる

前回に引き続き、今度はMac OS Xで最も優れたBlogエディタとの呼び声も高い、ectoを試してみました。

■タイトルのテスト



ちょっと崩れたHTMLを書いた結果がこれだよ! abesihidebuたわばおおお!?なんだこれ!?うまくいった!!!

でも改行を入れないとダメみたいね>< なんだそれ・・・


どういう風にアップロードされるのか 見てみようかな 列挙使いたいな
あべし
ひでぶ
たわば



■以下、余りにも使いづらいので結局普通に編集
詳しいことはよくわかりませんが、この子もWYSIWYGエディタが思いっきり悪さをするのでHTMLエディタのみを使うのが正解のようです。
WYSIWYGエディタからHTMLエディタに戻ってくると勝手にPタグやBRタグを大量に付与されてしまうため完全に文章が壊れます。


あと、タグを適切に閉じないとものすごく怒られます。ひどい。


最大の問題は、このような投稿済みの記事を取得してきたら・・・


こんな風に猛烈に崩れます。これはちょっとなぁ。まぁ、Bloggerの改行をBRタグに置換するなんていう男気のないオプションを使って、純粋なHTMLで記述していない私が一方的に悪いのですが、しかしその辺もうまく対応して欲しいです。

うーん。結論から言うといまいちです。画像アップロードもFlickerにしか対応していないように見えますし。Picasaに投稿したいんですけれど。
MovableTypeやWordpressを個人で利用されている方にはおそらく福音のようなソフトなのでしょうが、しかしBloggerを利用している私にはいまいち使い出がよくなかったです。
しばらくはPetrus Bloggerを使ってみることにします。

Mac OS XのBlogライター、Petrus Bloggerを試してみる


Blogger付属のWYSIWYGエディターを使っていると、Preタグの中身の空白が消えたり化けたりすることがあることが分かったため、やむなくBlogger付属のエディターを使うことが出来なくなってしまいました。

そこで、外部のBlogエディターを導入してみることにします。



■タイトルのテスト
タイトルはfontタグになるみたいです

目についた機能を列挙してみると、
  • Bloggerの機能と連携していて、アプリケーションのメニューからBloggerのDashboardを一発で開いたり出来る。過去記事の編集も可能
  • HTMLタグの入力補助や入力補完は一切無い
  • 画像のアップロード補助も一切無い
  • BloggerのLabelに関しては完全にサポートしている、入力補完はないが入力補助がある

@interface PreTagTest
    NSString *test1;
    id delegate;
@end

@property (retain)NSString *test1;
@property (assign)id delegate;


画像アップロードテスト

↑Edit > Upload Photoを実行するとこのリンクが自動的に張られるのですが、見ての通り表示できません。


Blog > Albumsを押すとアルバム全体が開くので(全体です、二度目以降はキャッシュしているみたいですが、1回目はむちゃくちゃ待たされます)、それから写真を選んでPicasaのページを開き、さらにそこから自分でリンクを拾ってきてようやく表示できます。
使い物にならん・・・orz

ううん、なかなか便利なんですが、編集機能がちょっと弱すぎる感じがしますね。せめてタグの挿入ぐらいはしてくれないとなぁ。画像もドラッグ&ドロップでサクッと入れたいです。

2009年4月9日木曜日

Google App Engineのcronサポートまとめ



http://code.google.com/intl/en/appengine/docs/python/config/cron.html

■注意
以下の情報は2009/04/09現在(Google App Engine 1.2.0.0)の情報です。皆様がごらんになっているときには古くなっている可能性があります。



■時間指定方法
cron.yamlを書く
本家cronとは記法が異なるが、本家cronとほぼ同様のスケジューリングが可能
起動タイムゾーンの指定も可能
cron:
- description: daily summary job
  url: /tasks/summary
  schedule: every 24 hours
- description: monday morning mailout
  url: /mail/weekly
  schedule: every monday 9:00
  timezone: Australia/NSW

■認証
cronによって起動されたURLはadminユーザーによって起動されるため、以下の
2種類の方法で認証が可能
app.yamlのhandlers要素にlogin: adminを指定する
application: hello-cron
version: 1
runtime: python
api_version: 1

handlers:
  - url: /report/weekly
    script: reports.py
    login: admin

2009/04/13追記、以下の方法は利用できません。詳しくはこちらの記事をご覧ください。ご迷惑をおかけいたしまして申し訳ありませんでした。
アプリケーションのRequestHandler内で、users.is_current_user_admin()を利用して判定する(こちらの方法は未確認)
from google.appengine.api import users

# ログインしていない場合やadmin以外の場合にはFalse。adminがログインしている場合のみTrue。
if users.is_current_user_admin():
    # cronジョブをここで実行
else:
    # エラー画面を表示するなど

さらにcronはURLを起動する際にHTTPリクエストヘッダーに以下の要素を付けるため、RequestHandler内でヘッダをチェックすることが出来る
X-AppEngine-Cron: true

■cronタスクの管理方法
cronタスクをアップロードするには、通常のアプリケーションをアップロードするときと同様に以下のコマンドを実行すれば、アプリケーションと一緒にアップロードされる
appcfg.py update

cronタスクだけをアップロードしたい場合場合は以下のコマンドを実行
appcfg.py update_cron

cronタスクを削除したい場合は、cron.yamlを以下のように書き換えてからアップロードすればよい
cron: 

以下のコマンドを実行すれば、現在のcronの設定状況を見ることが出来る(ただし、タイムゾーンを扱う場合はpytzライブラリが必要)
appcfg.py cron_info

■制限
  • 今のところPython版のみ(Java版はない)Java版もある。Java版はcron.xmlを記述する。http://code.google.com/intl/ja/appengine/docs/java/config/cron.html
  • タスクは20個まで
  • 最短実行間隔は1分
  • cron.yamlから起動できるのは自アプリのURLのみ。人のアプリを起動したり、全然関係ないURLを指定したり、シェルスクリプトを起動したりは出来ない
  • cronから対象URLを起動した場合のCPU時間・通信量もすべて従量対象になる