2010年8月31日火曜日

【GAE】別のマシンから動作確認するためのコマンド

Google App Engineの開発で、GAE自体はMac Serverで動いているけどもコーディングは共有フォルダ経由でWindowsから行っているので、ブラウザでの動作確認もWindowsから行うために調査したメモ。

環境はGoogle App Engine SDK 1.3.6, Mac OS X Server

GoogleAppEngineLauncherから起動した場合はlocalhost:8080のアドレスのみでしか動作しない。localhost以外のアドレスでもアクセスを許可するためにはコマンドを実行して起動する必要があるみたい。

詳しくは公式サイトのリファレンスで。

インストールの方法は前の記事を参考に。

$ dev_appserver.py --address=192.168.0.62 gbook

で、他のマシンから http://192.168.0.62:8080/ のアドレスでアクセスできるはず。

ファイヤーウォールを設定している場合は空けてあげる必要がある。Mac OS X Serverの場合は、サーバ環境設定 → セキュリティ からポートを追加する。

これでSSHを使って、コマンドを叩けばいいので、コーディングから動作確認までMacのコンソールを使わずに済む。

開発しやすい環境が整ったので、いろいろ作ってみますかな。

 

<関連記事>

Mac環境にGAEの環境(Python)を整えてGAEOをインストール
Mac Snow Leopard ServerにTera TermでSSHログインする

2010年8月30日月曜日

Mac環境にGAEの環境(Python)を整えてGAEOをインストール

Google App Engine(GAE)の開発をしようと思って、フレームワークのGoogle App Engine Oil(GAEO)をインストールしてみたけど、パスの関係でWindows環境では動作しないと分かったので、Macで開発することにした。

GAEのWindows環境へのインストール方法はこちら

環境はMac OS X Server 10.6.4

MacにはPython 2.5が既にインストールされているので、GoogleのGAE公式サイトからApp Engine SDK for Pythonをダウンロードする。

GoogleAppEngineLauncherをアプリケーションにコピーして終了。

次はGAEOのインストール。公式サイトから最新ソースをダウンロードするかMercurialを使ってクローンする。Mercurialについては前の記事を参考に。

適当なディレクトリに配置して、google-app-engine-oil/binにPATHを通す。

$ vi .bash_profile
  export PATH=$PATH:/Users/suganuma/GAE/google-app-engine-oil/bin
$ source .bash_profile

PATHの設定は前の記事も参考に。

これで環境周りは終了。

実際に試してみる。GAEOのマニュアルも参考に。

$ cd /Users/suganuma/GAE

$ gaeo gaeo.py gbook

これでGoogleAppEngineLauncherを起動して、File → Add Existing Applicationからさっき作ったgbookを選択。

Run後、しばらくするとBrowseが有効になるのでクリックして表示してみると

「It works!!」

が表示されれば成功。

 

<関連記事>

MacのPATHを設定(追加)する
Macにバージョン管理ソフト「Mercurial」をインストール
Windows環境にGoogle App Engineの環境を整える(Python)

2010年8月27日金曜日

MacのPATHを設定(追加)する

Linuxと同じなので分かりやすい。

ホームディレクトリの.bash_profileを編集。なければ作る

$ vi .bash_profile

export PATH=$PATH:/Users/suganuma/GAE/bin

これを保存して反映

$ source .bash_profile

PATHの確認

$ printenv PATH

2010年8月26日木曜日

Macにバージョン管理ソフト「Mercurial」をインストール

MacでGoogle App Engine(GAE)の開発をしようと思って、バージョン管理ソフトウェアの「Mercurial(マーキュリアル)」をインストールしたときのメモ。

詳しくはWikipediaを参照。

なぜMercurialが必要になったかというと、GAEの開発で「Google App Engine Oil(GAEO)」というフレームワークを使ってみようと思ったから。

Mercurialのダウンロードはこちらから。

インストール後はコマンドラインで使えるようになる。GUIで使えるようにするためには別途ツールをインストールする必要がある。

MacMercurialというのを見つけた。

いまのところはコマンドでやるつもり。コマンドを確認するときは

$ hg help

で。

・・・というかメインがWindowsなので、MercurialのWindows用クライアントをインストールして共有フォルダ経由で作業しているけど。

 

<関連記事>

Windows環境にGoogle App Engineの環境を整える(Python)
Mac mini(snow leopard server) + VMware fusion 3を買った

2010年8月25日水曜日

GoogleのAPIを使って日本地図を表示するためには

最初に日本地図を表示させておいて、県→地区→詳細とドリルダウンしながらデータベースの内容を表示するような要件はたまにある。

それを自前に全部作成するのではなくて、Googleが提供してくれているAPIを使えば比較的簡単に実現できるのではないかと調査したメモ。

パッと思いついたのがGoogle Visualization API(Google Chart Tools)を使う方法とGoogle Mapを使う方法。

Google Visualization APIはJavaScriptを使って棒グラフ、円グラフ、統計グラフ、組織図などを簡単に表示できる。サンプルを見れば分かりやすい。

クライアントサイドのアプリケーションでなければ商用でも利用できるみたい。詳細はFAQを参照。

Google Map APIを利用する場合に、県だけ表示するとか、色を変えてプロットするとかも可能みたい。詳細は公式ブログで。

地区まで表示したら、onclickイベントで別のページに遷移できるかは別途調査が必要。

2010年8月24日火曜日

ドコモでiPhoneがついに実現する

iPhone4をNTTドコモのネットワークで利用できるmicroSIMが8/26から発売される。

コンセプトは“思いきり快適に”--ドコモ網でiPhone 4を利用できるmicroSIM

Docomoユーザーとしては大歓迎なのだけど、注意点もいくつかある。

  • SIMフリー版のiPhone4をどこかで手に入れる必要がある
  • キャリアメール(docomo.ne.jp)は使えない

さらに心配事は

  • 回線速度が十分か
  • ファミリー割引などの割引サービスを組み合わせられるか(無理?)

まだ様子見。

個人的にiPod touchで満足しているので、AndroidがUIを刷新して、iPhoneなみのヌルヌル感を実現してくれるのを希望。

2010年8月20日金曜日

PostgreSQLにCSVデータをファイルから取り込む

旧システムから新システムへデータ移行を行ったときのメモ。

CSVを取り込む前に対応するテーブルがないと始まらないので、create tableのsqlをゲットするか、csvの1行目を見てテーブルを作成するプログラムを作ったりする。

対応するテーブルがあれば、COPYコマンドを使えば簡単にできる。

# su postgres

$ psql test-db

test-db=# \copy table1 from /opt/csv/table1.csv WITH CSV HEADER

「WITH CSV」を付けるとCSVファイルと認識して、カンマ区切りのデータとして扱ってくれる。

「HEADER」を付けると1行目を無視する。

csvファイルは取り込むDBに合わせて、エンコーディングする必要があるみたい。

ちなみに私が愛用しているエディタxyzzyではここにあるスクリプトを使えば、フォルダ内のファイルを一括で文字コード変換ができる。

一括でやる場合は\copy文をファイルに記述して

test-db=# \i /opt/csv/copy.sql

を実行するば出来る。

 

<2010/08/23 追記>
コメントで指摘があったので、追記。エンコーディングもコマンドで指定すればできる。こちらの記事を参考に。

2010年8月19日木曜日

TCPDFとFPDIでPDFを読み込んだときにエラー

TCPDFFPDIで既存PDFを読み込んだときにエラーとなって困ったときのメモ。

エラーは

TCPDF ERROR: This document (/opt/test.pdf) probably uses a compression technique which is not supported by the free parser shipped with FPDI.

「PDFが圧縮されているからフリー版のFPDIでは扱えない」らしい。

このとき使ったツールたちのバージョンは

  • MS Excel 2003
  • Adobe Acrobat 9.0 (PDF Maker)
  • TCPDF 5.8.002
  • FPDI 1.3.3 (FPDF_TPL 1.1.5)

TCPDFとFPDIのインストールに関しては前の記事を参考に。

Excelで作成した帳票を印刷するときに、Acrobatをインストールすると出てくる「Adobe PDF」をプリンタとして選んで印刷。

エラーを回避するためには、「Adobe PDF」を選んでプロパティ → Adobe PDF 設定 → 編集で

「オブジェクトレベルの圧縮」をオフ

にすれば大丈夫

image

 

<関連記事>

【PHP】TCPDF 4.5.xxx+FPDIで既存PDFの読み込みと編集
【PHP】Webで帳票を作成するのにPDF変換を利用する方法

2010年8月18日水曜日

三十路になりました。

さよなら20代。こんにちは30代。

あっという間に30まで来てしまった。これで人生の半分ぐらい?

単純に肉体の衰えを感じつつも、周りからは「ガクンとくるよ」と言われているので、毎日のメンテナンスをしっかりと行いたい。

まだ学生には負けたくない。(←空手の話)

そういえば学生から電話があって、夏の合宿の日程が決まったみたい。

今年は千葉で行うらしい。千葉県での合宿は初めてじゃないか?暑そう・・・

もちろん行くつもりだったけど、ちょうどTOEICの試験と重なっているので難しそう。

今英語を本気で話せるように勉強中なのですよ。

20代は技術力向上に努めて、それなりに自信はついた。30代は英語をマスターして、この技術力を活かしつつ、さらなる展開をしていくつもり。

2010年8月17日火曜日

運転免許証の更新で平針まで行ってきました

免許書更新の通知が来たので、お盆の休みを利用して、平針まで行ってきました。153号線を使って約45分。

一番怖かったのが目の検査。明らかに悪くなっているのが自分でも分かる。前は右0.3で左0.7ぐらいだった。今度は

右0.5 左0.5

両目0.7以上だったので一応セーフ。次回はメガネがないと通りそうにない・・・。毎日、朝から晩までPCとにらめっこしているので視力を保っていたのが不思議なくらい。

年には勝てないね。

最近は免許証にもICチップを使うようになって、暗証番号を設定しないといけない。しかも2つも。一度設定すると変更が効かない。詳しくは下記リンクから。

ICカード免許証 :警視庁

運転免許証 - Wikipedia

さらに法律が変わって、普通と大型の間に中型ができた。トラックを運転する予定はないので関係ないかな。wikipedia

私は日頃の行いが悪いので2時間の講習を受けて終了。講師の先生の話がうまかったので退屈しなくて済んだ。

2010年8月16日月曜日

iPhoneアプリのDDRで高得点を出すための持ち方(指の位置)

昔懐かしのDance Dance Revolution(ダンスダンスレボリューション)のiPhoneアプリ版を暇な時に楽しんでましたが、expertが尋常ではない速度と矢印の配置で流れてくるので、他の人はどうやっているか調べたメモ。

私の場合、iPod touchを片方で持ち、片手でタッチするやり方でやっていた。

しばらくやっていると右手がツリそうになる・・・。

YouTubeで見つけたexpertをクリアする人々は両手で持ち、親指でタップするやり方みたいなので、こっちの方がやりやすいみたい。

それにしても恐ろしい指の動き。

まだモードが一つ隠れているので、これを出すぐらいは頑張らないと。

2010年8月11日水曜日

【JavaScript】先月、今月、先週、今週の日付を計算

JavaScriptで日付計算をしたときのメモ。

日付の表示はjQuery UIdatepickerを使用。

コードサンプル

var objBase = j$("#<?php echo $sId;?>");
var objOption = {
  numberOfMonths  : 3,
  defaultDate     : "-1m",
  showAnim        : "",
  changeYear      : true,
  showButtonPanel : true
};
var objBegin = objBase.find("[name$=_begin]").datepicker(objOption);
var objEnd   = objBase.find("[name$=_end]").datepicker(objOption);

//先月、今月、先週、今週をセット
var objToday = new Date();
//先月
objBase.find("[name=last-month]").click(function(){
    objBegin.datepicker("setDate", new Date(objToday.getFullYear(), objToday.getMonth() - 1, 1));
    objEnd.datepicker("setDate", new Date(objToday.getFullYear(), objToday.getMonth(), 0));
});
//今月
objBase.find("[name=this-month]").click(function(){
    objBegin.datepicker("setDate", new Date(objToday.getFullYear(), objToday.getMonth(), 1));
    objEnd.datepicker("setDate", new Date(objToday.getFullYear(), objToday.getMonth() + 1, 0));
});
//先週
objBase.find("[name=last-week]").click(function(){
    iDate = objToday.getDate() - 7 - objToday.getDay(); //日曜
    objBegin.datepicker("setDate", new Date(objToday.getFullYear(), objToday.getMonth(), iDate));
    iDate = objToday.getDate() - 7 + 6 - objToday.getDay(); //土曜
    objEnd.datepicker("setDate", new Date(objToday.getFullYear(), objToday.getMonth(), iDate));
});
//今週
objBase.find("[name=this-week]").click(function(){
    iDate = objToday.getDate() - objToday.getDay(); //日曜
    objBegin.datepicker("setDate", new Date(objToday.getFullYear(), objToday.getMonth(), iDate));
    iDate = objToday.getDate() + 6 - objToday.getDay(); //土曜
    objEnd.datepicker("setDate", new Date(objToday.getFullYear(), objToday.getMonth(), iDate));
});

PHPのコードがあったり、jQuery UIを知らないと意味不明かもしれないけど、自分用メモだから良しとする。

 

<関連記事>

【JavaScript】jQueryとjQuery UIを使ってボタンを点滅させる
jQueryとjQuery UIのバージョンを確認(Google CDNを使う)
jQuery UIでリッチなユーザーインターフェースを実装する

2010年8月10日火曜日

【JavaScript】jQueryで検索条件を一括でクリアする

webシステムの検索画面で「クリア」ボタンをクリックしたときにjQueryを使って簡単にクリアする方法

コードサンプル

$(function() {
    $("#button-clear").click(function(){
        $(".search-area input, .search-area select").each(function(){
            if (this.type == "checkbox" || this.type == "radio") {
                this.checked = false;
            } else {
                $(this).val("");
            }
        });
    });
});

ポイントはラジオボタンとチェックボックスのときだけ処理を分岐することぐらい。

2010年8月6日金曜日

G-SHOCKのタフソーラーが充電できないので修理を依頼

メンテナンス(電池交換)がいらないと思っていたG-SHOCKを修理に出した時のメモ。

使っていたのはG-ms MSG-900。6,7年前に買った気がする。

3年ぐらい前にライトが付かなくなって、そのまま放置していたら完全に表示されなくなった。腕時計がなくても生活に全く支障はなかったけど、TOEICの試験を受けるときに時計を持参しないといけないようなので、この機会に修理することにした。

Webからはカシオテクノショップから依頼する。

MSG-900の場合は「ウォッチ修理」から。生活防水レベルのものは「ウォッチ電池交換」からでも大丈夫みたい。この辺は入力時にある「時計の型番検索」で確認

必要事項を記入して送信すると確認メールが送られてくる。ちなみに値段は

修理料金合計: ¥8,400
往復宅配料金(引取り+配送料):¥1,260
請求合計: ¥9,660

新品のG-Shockが買える値段。

g shock 電池交換 タフソーラー」で検索すると自分でも電池交換できるみたいなので、防水機能を諦める場合はそっちの方が安上がり。

登録後、回収キットが送られてくるので、それに時計を挟んで送り返す。必要なものは全て回収キットに同封されているので、本当に挟んでコンビニとかに出しに行くだけ。

謳い文句にあるように、せめて10年ぐらいは頑張ってほしい。

2010年8月5日木曜日

[XCode]gdata-objectivec-clientを使ってGoogle APIを利用する

iPhone/iPod touchアプリを開発する際にGoogle data APIsを利用するのにobjective-c用のライブラリがオープンソースで開発されているので、ダウンロードして設定するまでの手順をメモ。

gdata-objectivec-clientはここからダウンロード、もしくはチェックアウト。

ちなみにMacでsubversionを利用する場合はSvnXというフリーのソフトがある。

SourceのGData.xcodeprojを開いて、ターゲットのGDataTouchStaticLibをダブルクリックで開いて、Releaseのビルドオプションを設定

  • 「その他のCフラグ(OTHER_CFLAGS)」に「-DGDATA_INCLUDE_PHOTOS_SERVICE=1 -DGDATA_INCLUDE_OAUTH=1」を修正、追加
  • ベースSDKを最新バージョンに

Device×Simulator, Releaseでビルド。

これでライブラリの準備が完了。

今度は利用するプロジェクトをXcodeで開く。プロジェクト → プロジェクトに追加からさっきのGData.xcodeprojを選択。

libGDataTouchStaticLib.aが黒くなっているはずなので、横のターゲットのチェックを付ける。

ターゲットのアプリをダブルクリックで設定を開いて、「一般」タブの「直接依存関係」にGDataTouchStaticLibを選択。次に「ビルド」タブで下記設定。

  • 「他のリンカフラグ」に「-lxm2」
  • 「ヘッダ検索パス」に「/usr/include/libxml2」
  • 「ユーザヘッダ検索パス」にヘッダーファイルの置き場所を指定。

image

これでソースに

#import "GData.h"

と書いてビルドできれば成功。

サンプルが結構よく出来ているので、イメージがつかみやすいかも。↓Picasaの写真を取得するサンプル

image

<参考サイト>

BuildingTheLibrary

Google Data APIs Objective-C Client LibraryをiOS SDKで使用するための準備

Google Data API クライアントライブラリのビルド

2010年8月4日水曜日

Google Book Search APIsをZend Gdata経由でPHPから使う

Googleの書籍検索をPHPから利用するwordpressのプラグインを開発したときのメモ。

さくっと参照するだけならGoogle Codeのサイトを参考にしながら直接リクエストを投げた方が早い。でも取得できる情報が少ない。↓こんな感じ

image

要約などの詳細情報したり、レビューや評価を投稿したり、ユーザーライブラリを使用する場合はZend Gdataライブラリを使うと簡単。参考となるサイトは下記をみればサンプルもあり分かりやすい。

Google ブック検索を PHP アプリケーションに統合する

[Google Code]Google Book Search API[Zend]Programmers Reference Guideも参考に。

 

<関連記事>

【PHP】Google AJAX Search APIを使ってニュース記事を取得
Google ニュースのAPIを商用利用できるかとYahooとの比較
【PHP】WordpressでPicasaの写真を表示(非公開のも)

2010年8月3日火曜日

Web(オンライン)で画像編集できる機能を組み込むAPIを調査

Wordpressで構築しているブログに投稿した画像をWeb上で編集、加工できるツール(プラグイン)はないものかと調査したときのメモ。

できれば素人でも使えるようにアメブロやJUGEMなども採用しているマジカルメーカーを利用できれば一番いい。

マジカルメーカーの利用は無料なので、アカウントがあれば作成したHTMLをwordpressに貼りつければいいけど、やりたいのはwordpress上で編集したい。

(利用料は分からないが)マジカルメーカーを組み込むのも一つの方法。

無料で利用できそうなのが、オンラインサービスの「Pixlr」や「Picnik」を利用する方法。

これらのサービスは外部から利用するためのAPIを公開しているので、頑張って作りこめば思った通りのことが実現できそう。

ちなみにPicasaはPicnikを使って編集、加工できる。

PicnikのAPIの利用方法は下記記事が参考になりそう。

Flickr のような画像編集機能を実現する「Picnik API」

でも、「素人でも直感的に使える」という点ではマジカルメーカーかな。

2010年8月2日月曜日

プリンタ「エプソンEP-901A」が特定の用紙だと給紙してくれない

知人に頼まれて、EP-901Aを使って印刷するときに、「給紙(排紙)エラー」で困ったときメモ。

EP-901Aはエプソンの多機能モデルの最新シリーズ。背面給紙がなく、前面給紙のみになった。気をつけないといけないのが、純正の用紙以外を使用する場合に給紙できないトラブルが起きる可能性がある。

私が使った用紙はこれ。

ELECOM 両面半光沢の光沢紙 EJK-GRSA420

EP901Aの前に使っていたブラザーのMFC-620CLNでも、給紙できない場合があったが、トレイに入れる枚数を減らしたりすれば、ほとんど問題なかった。

でも今回は、90%の確率で給紙できない。数百枚の単位で印刷しなければならないので、これだけのために背面給紙のあるプリンタを買い換えようかと本当に思った。

・・・で、困ってGoogle先生に助けを求めてみると、解決できそうな情報を見つけた。

[EPSONサポートQA]ハガキの給紙がうまくいかない場合の給紙ローラーのクリーニング方法<PM/PX用クリーニングシート>

EP-901Aの場合は普通用紙をセットして、

(スキャナ部分に何も置かない状態で)コピー→枚数入力→スタートを繰り返す

で給紙ローラーのクリーニングができるらしい。

30枚ぐらい一気にコピーしてクリーニングすると、20部ぐらいまでは給紙できるようになった。(それでも確率が上がるだけで、給紙できない場合はもう一回繰り返す。)

20部を超えると給紙できる確率が下がるので、同じように給紙ローラーのクリーニングが必要。

一応最後まで印刷できたけど、次プリンタを買うときは背面給紙ができるのを選ぶようにしよう・・・。

 

<関連記事>

自宅のネットワーク構成を一新・・・するために
Related Posts Plugin for WordPress, Blogger...

Blog Archives