sandbox

Scala, Android, Architecture, Management, Service Design あたりを主戦場としております

GAE Deploy 時に 500 Internal Server Error

デプロイ時に何やら 500 Internal Server Error が発生していた。

Unable to update:
java.io.IOException: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=sandbox&version=1.0&
500 Internal Server Error

Server Error (500)
A server error has occurred.

	at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java:153)
	at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java:86)
	at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:582)
	at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java:400)
	at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:112)
	at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:56)
	at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:271)
	at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:146)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

結果的に原因はバージョン番号。
Maven などの慣習で無意識に 1.0 などと少数点を含みバージョンを指定していたのだけど、整数値にしたら無事にデプロイ成功。

あまり嵌る事はないと思うけど、エラーから原因は分かりにくいので念の為共有。

statusline-toolbar.js の背景色

※4/2 更新 最新の stautsline-toolbar.js だと効かなくなっていたので修正。


statusline-toolbar.js を早速入れてみた。
ただ、Mac だと -moz-appearance: toolbar な背景色になっていたので、statusline と同じ色になる様に vimpwhite.vimp に追記。

style -name toolbar-background chrome://* #liberator-customize-toolbar { padding-left: 5px !important; -moz-appearance: none !important; }

github: vimpwhite.vimp


before
f:id:tlync:20110326171413p:image


after
f:id:tlync:20110326171414p:image

anything-gist.el が便利

gist が emacs から直接編集できてとても便利なのですが、自分の環境ではどうにも動かなかったので少し修正。
変更点は大きく2点。

  • wget に --no-check-certificate オプションを追加
  • 既に gist が存在する場合 git pull する様に変更

https://gist.github.com/862360

@@ -156,7 +158,7 @@
           (delete-region (point-min) (point-max))
           (insert (shell-command-to-string
                 (concat
-                 "wget -q http://gist.github.com/"
+                 "wget --no-check-certificate http://gist.github.com/"
                  id
                  ".txt -O -")))
           (goto-char (point-min))
@@ -168,7 +170,7 @@
         (with-current-buffer gist-buffer
           (insert (shell-command-to-string
                 (concat
-                 "wget -q http://gist.github.com/"
+                 "wget --no-check-certificate -q http://gist.github.com/"
                  id
                  ".txt -O -")))
         (switch-to-buffer gist-buffer))))))
@@ -206,26 +208,26 @@
          ("view" . (lambda(obj-name)
                      (anything-gist-fetch
                        (nth 2 (split-string obj-name)))))
-         
+
          ("edit" . (lambda(obj-name)
+                     (setq gist-id (nth 2 (split-string obj-name)))
                      (setq gist-tmp-dir
-                           (concat temporary-file-directory
-                                   (nth 2 (split-string obj-name))))
+                           (concat temporary-file-directory gist-id))
                      (set-process-sentinel
                       (start-process
                        "anything-gist-clone"
                        "*anything-gist-clone*"
                        shell-file-name
-                       shell-command-switch 
-                       (concat "cd "
-                               temporary-file-directory
-                               " && git clone git@gist.github.com:"
-                               (nth 2 (split-string obj-name))
-                               ".git"))
+                       shell-command-switch
+                       (if (file-directory-p gist-tmp-dir)
+                           (concat "cd " gist-tmp-dir " && git pull")
+                           (concat "cd " temporary-file-directory
+                                   " && git clone git@gist.github.com:"
+                                   gist-id ".git")))
                       '(lambda
                          (process event)
                          (directory-walker  #'find-file-save-hook gist-tmp-dir)))

Reference

anything-gist.elをまたまたアップデート
http://sheephead.homelinux.org/2010/11/24/6396/

simple-hatena-mode から投稿テスト

投稿テスト

(require 'simple-hatena-mode)
(setq simple-hatena-default-id "tlync")
(setq simple-hatena-bin "~/Scripts/hw.pl")
(setq simple-hatena-root "~/.hatena")
(add-hook 'simple-hatena-mode-hook
          '(lambda ()
             (turn-on-screen-lines-mode)
             (require 'hatenahelper-mode)
             (hatenahelper-mode 1)))

(global-set-key (kbd "C-z h c") 'simple-hatena)
(define-key simple-hatena-mode-map (kbd "C-c <down>") 'simple-hatena-find-diary-for)
(define-key simple-hatena-mode-map (kbd "C-c <left>") 'simple-hatena-go-back)
(define-key simple-hatena-mode-map (kbd "C-c <right>") 'simple-hatena-go-forward)
(define-key simple-hatena-mode-map (kbd "C-c o") 'simple-hatena-open-current-url)
(define-key simple-hatena-mode-map (kbd "C-c p") 'simple-hatena-submit)
(define-key simple-hatena-mode-map (kbd "C-c t") 'simple-hatena-trivial-submit)

HootSuite を少しだけ見栄えよくするユーザースタイル

最近、HootSuite を使いはじめたのですが、日々使うものは自分好みにカスタマイズしたいという欲求に駆られるので、早速ユーザースタイルを作成。


http://userstyles.org/styles/44638?r=1298776784
# Steel Blue, Classic テーマ専用


変更内容は下記の通り。
#3/7に少し更新。

  • 表示量を増やす為、文字密度の調整
  • 文字をはっきりと表示する為にテキストシャドウを調整
  • フッターの非表示化
  • コンテンツと UI 要素の font family が一緒で間延びした印象があるのでフォントスタイルを若干調整。

ちょっとした変更ですが、いつもより少し気持ち良く HootSuite が使えます ;)

Before

f:id:tlync:20110307134405p:image

After

f:id:tlync:20110307134404p:image

Add-On Bar を非表示にする

vimperator 3.0pre の最近の latest をインストールすると、下記の様にステータスバーの上に Add-On Bar が表示される様になっています。


f:id:tlync:20110225110948p:image


自分の場合は特に使う事が無い上、見た目も悪いので非表示にしたい、という事でその方法をメモ。

set gui+=noaddons

LaunchBar から Google Calendar のイベントを登録する

予定を登録するのに Google Calendar を開くのが面倒だったので、下記の様な感じで LaunchBar から Google Calendar の QuickAdd 機能を使って予定を登録できる様にしてみました。


f:id:tlync:20110205205556p:image

必要な環境

  • python (Mac であれば標準でインストールされているはず)
  • gcalcli
    • GData
    • dateutil

おおまかな手順

  1. GData のインストール
  2. dateutil のインストール
  3. gcalcli のダウンロード、編集
  4. LaunchBar の設定

GData をインストール

gcalcli の依存モジュールの GData をインストールします。

wget http://gdata-python-client.googlecode.com/files/gdata-2.0.13.tar.gz
tar -zxvf gdata-2.0.13.tar.gz  
cd gdata-2.0.13
./setup.py install

dateutil をインストール

同じく依存モジュールの dateutil もインストールします。

wget http://labix.org/download/python-dateutil/python-dateutil-1.5.tar.gz 
tar -zxvf python-dateutil-1.5.tar.gz
cd python-dateutil-1.5.tar.gz
./setup.py install

gcalcli のダウンロード

予定登録を行う為の gcalcli スクリプトをお好きなディレクトリにダウンロードします。

cd ~/Scripts #お好きなディレクトリに
wget http://gcalcli.googlecode.com/files/gcalcli-1.4.tgz
tar -zxvf gcalcli-1.4.tgz

アカウント名、パスワードの入力

ダウンロードした gcalcli の48、49行目のユーザー名とパスワードを自分の Google アカウントのメールアドレスとパスワードに変更します。

__username__ = '*********@gmail.com'
__password__ = '*********'

文字コード指定の変更(問題が発生した人のみ)

自分の環境では OSX を英語で使っているせいか、gcalcli の予定登録をしようとすると UnicodeDecodeError が発生した為、下記の様にエンコード指定部分を変更しました。
もしかすると、日本語環境の人は不要かもしれないので、一旦この手順は無視して問題が発生したら試してみるといいかもしれません。

--- gcalcli.orig	2011-02-05 21:26:48.000000000 +0900
+++ gcalcli	2011-02-05 21:26:25.000000000 +0900
@@ -1087,7 +1087,7 @@
             Usage()
 
         # allow unicode strings for input
-        uniArg = unicode(args[1], locale.getpreferredencoding())
+        uniArg = unicode(args[1], 'utf-8')
         gcal.QuickAdd(uniArg)
         return

LaunchBar の SearchTemplate の設定

LaunchBar をショートカットで呼びだしたら、Alt + Cmd + I でインデックス画面を表示。
f:id:tlync:20110205215149p:image

SearchTemplate(UTF-8) を選択し Add をクリック。
f:id:tlync:20110205215425p:image

名前はお好みで入力し、URL を下記の様に入力。
※パスは自分がダウンロードしたディレクトリを入力する。またチルダ(~)を含めると登録できないので、フルパスで入力する。

x-launchbar:execute?path=/Users/takuya/Scripts/gcalcli&arguments=quick+%22*%22

f:id:tlync:20110205215107p:image

上記で手順は完了です。

予定の登録

あとは SearchTemplate の登録時にした任意のキーワード(Google Canedar 等)で呼び出し、QuickAdd のフォーマットで予定を入力すると、自動的に Google Calendar に予定が登録されています。便利!!


f:id:tlync:20110205215815p:image
f:id:tlync:20110205215814p:image