MacBookAirにMacPortsをいれたよ

0 コメント

ちょいはまったのでエントリ。

Macで簡単に開発環境を入れられるよと
噂のMacPortsを入れようとしたのですが、
なぜか上手くいきませんでした。
インストーラ自体は正常に走ってるっぽいのですが、
ターミナルでコマンドを打ってみても
イメージがみつからんとかそんな感じの
エラーが出てきて上手く動いてくれない。

で、なにかなーと思って色々調べてたら、
どうやらMacPortsのバージョンが大分古かった模様。
最初に入れてたのは1.6.0なんですが、今は1.9.2みたい。
しかもSnowLeopardなのにLeopardバージョンを入れようとしてたり。
一応1.9.2のリンク
http://distfiles.macports.org/MacPorts/MacPorts-1.9.2-10.6-SnowLeopard.dmg

というわけでこちらをインストールしたら
無事にインストールできましたよっと。
環境変数の設定も勝手にやってくれるみたいですね。

twitterbotのAWS移行計画

0 コメント

ご無沙汰してます。

最近はもうFF11三昧で生活が大分アレな感じに。

で、もうFFだらけなので時間がないような気もするんですが、

タイトルのような事を考えてます。

現在自分はGAEを使って、L_H_A_botなるものを作って、

公開?してたりするんですけど、

どうもtwitterとGAEの相性が悪いらしい。

大元のライフハッカーのアカウントはつぶやいてるのに、

botはつぶやかないことがしばしば。

で、GAEjaのメーリスとか見てると、みんな同じような症状になったりしてるらしい。

(特にポスト関連がひどいらしい?)

という訳で、AWSから1円クラウドが大分前に出て気になっていたので、

移行しようかなーと思ったりしてます。

まぁbotはもう結構諦めてて、AWSを触りたいだけなんですけどね。

MacBookAir買っちゃってAcerのノートが鯖機になるかもしれないとか

そんなことを妄想したりもするけど、まぁそれはそれ別の話ってことで。

ちゃんと動き出したらやり方とか書けたらいいなーと思ってます。

Agileってなんだろうな?

0 コメント

今日は現場の人間の送別会でフグを食べに行ってきました。
まさかの5000円ポッキリで刺・鍋・唐のフルコース。
あ。あとヒレ酒もね。

まぁそれはそれで大満足だったのですが、
飲みの席でまさかのアジャイルトークになり、
ちょこっと色々疑問に思ったのでエントリ

本題に入る前にアジャイルとは?
オレの認識だとアジャイル宣言ってのがあって、
基本はその宣言に則りつつ、上手くソフトウェアを作っていこうよ
というものだと思ってます。

アジャイル宣言

  • プロセスやツールよりも個人や相互作用
  • 分かりやすいドキュメントよりも動くソフトウェア
  • 契約上の駆け引きよりも顧客とのコラボレーション
  • 計画を硬直的に守るよりも変化に対応する

以上は、このページからの引用です。


で、今回の飲みで話題になったのは、
成果物作成後のドキュメントに関して。
実際にアジャイルを用いてシステムを作成した後に、
そのシステムの品質をチェックする立場の人から聞いた話です。
その人曰く、

"確かに、アジャイルはすぐに仕様を変更したり、
業務の現場の変化に対応出来るかもしれないけれども、システム作成後の
保守をするにあたって、ドキュメントがグダグダだから、
これならウォーターフォールのがいいんじゃね?”

とのことでした。
自分はまだまだアジャイルをちゃんと勉強した訳ではない、
かつ、実際にそのシステムの開発・品質チェックどちらにも
携わっていなかったので、ちゃんとアジャイル手法が適用されていたのかどうか
わかりませんが、この疑問に対して上手く解答することはできませんでした。

というわけで、疑問に思ったのは、

開発→本社情シス・外部のソフトウェアハウス
保守→本社保守チーム

と開発を行うチームと保守を行うチームが別々になっていたときに、
仕様の引継ぎ(ドキュメント)などの問題はどのようにクリアしていくのか?

ということです。

アジャイルはこういったケースに対して解答を持っているのでしょうか?
それともそもそもそういった開発体制ではアジャイルは適用できないのでしょうか?

オレもこれから本を読んでみるつもりですが、
もしわかりやすい解答を持っている人がいたら教えてください。

Google的思考書評

0 コメント

iPadからDuetを使って更新の巻
ネタがあれば寝ながら更新できないこともないけど…
レイアウトの最終確認とか推敲がしにくいから
ちょっとキツイかなー。
まぁ使えないことはないってレベル
大分レイアウトがアレっぽいので、
後で修正しよう。
今日のネタは以前読んだGoogle的思考の読書メモです。
断片的だけど結構上手くキーワード拾えてるんじゃないかなーとか思う。
ちょっと長すぎるけど…
では、はじまりはじまりー

Google的思考

まえがきから
・主導権を握っているのは消費者のほうである。
・マスマーケットはもはや存在しない。今あるのは、多数のニッチである。
・流通ルート、人員、製品、さらには知的財産の所有は、
もはや成功の鍵ではない。肝心なのはオープンであることだ。


プラットフォームの重要性
プラットフォームを築くこと?
オープンにすることで好循環を築き上げる

コミュニティ
コミュニティは企業が作るモノではない。
コミュニティは企業の外にすでに存在している。
企業はそのコミュニティの場を提供してやればよい。
コミュニティは企業のモノではない。
コミュニティはコミュニティのモノである。

エレガントな秩序を築き上げること

・モノはお荷物
Amazonはモノを扱っているのではない。
*モノを売買することによって顧客の嗜好情報を蓄積している。
Amazonはモノの会社ではなく知識の会社
Amazonはモノを扱うことと引き換えに知識を蓄えている

・仲介業の危機
インターネットは非効率を排除していく

・無料のビジネスモデル

Zillow.com創設者リッチ・バートンの言葉
「インターネットは無料サービスのための一大競技場だ。
無料で提供できる商品に価格をつけたりすれば、
自らの首を絞めることになるだろう。」

グーグルが行っているのは組織化と知識のビジネスモデル
グーグルの主力ビジネスは検索サービスをはじめとする、
各種Webサービスだがそこからは一切収入を得ていない。
*グーグルの(現在の)収入源はサービスを
使用するユーザーに対しての的確な広告である。

・自分のビジネスがなんであるかを明確にする。
グーグルは自身がコンテンツビジネスモデルではないことを理解していた。
ヤフー、AOLは自身のビジネスモデルを見誤った
自問してみよう。
あなたの企業の核は知識か?データか?
コミュニティか?プラットフォームか?ネットワーク?
あなたの価値はどこにあるだろう?利益はどこから入ってくるだろう?
金銭は必ずしもいつも同じ形でもたらされるわけではないことを覚えておこう。

Chapter7 新しい心構え
・統制と信頼の関係
「消費者に主導権を与え、使わせる」

デビッド・ワインバーガーの言葉
「統制と信頼は反比例の関係にある」
自分が主導権を握れば握るほど相手からの信頼は薄れ、
相手に主導権を与えれば与えるほど信頼は深まるということ。
「自分をさらけ出し、主導権を渡せば失った信頼を取り戻せるだろう」

・民衆を信頼する
「潤沢さが商品の質を高める」

信頼を核にしたビジネス

彼は自分が信頼している仲間たちが編集したインターネットの中を巡っている。
同じ視点を持った者たちの間に、信頼のウェブが構築されているのだ。

多くの企業は、消費者への信頼ではなく、規則や禁止事項を基盤に機能している。
やってはいけないことを客に提示し、それを破った者には罰則を科す。
しかしグーグルは、我々への信頼を基盤に帝国を築き上げたのだ。

・耳を傾ける


Chapter8 新しい倫理
・うまく失敗する
失敗は本人次第で貴重な体験となり得る。
最悪の過ちは、失敗などしなかったように振る舞うことだ。
そんなことをしたら、周囲の期待が無駄に高まり、
次に失敗したときには取り返しがつかなくなるのだ。

しかし今日、インターネット上では過程が商品になる。

・人生は開発途上
重要なのは失敗をしたことではなく、それにどう対応するかなのだ。

・正直な態度
正直さと率直さを基盤にした新たなメディア世代は、身も蓋もない真実を求めている。
グーグルがある今、情報を統制したり、
昨日の発言や今日の失敗をもみ消したりするのは不可能になってきている。
真実はあっという間に広がるのだ。

・透明性
グーグルも秘密が多いから批判もしょうがないよね。

・協力体制

・邪悪なことはしない
グーグルに対する疑問と著者の姿勢。
とりあえず今んとこ大丈夫じゃね?という見解

ハークの法則
「相互作用が拡大すれば、邪悪な行為の代償は恩恵を上回る」

Chapter9 新しいスピード
・即座に出てくる答え

・人生はライブ
グーグルは記事の完成度が高いほうが検索結果の上位に来るため速報性に欠ける。
速報性は新たなビジネスチャンスとなるかもしれない。
→最近はtwitterの検索結果が表示される。

・モブ(群集)

Chapter10 新しい義務
・ドル箱商品に注意
成功は時に人の目を曇らせ、失敗の可能性を見過ごさせる。
また、失敗に対する恐怖心は、人を成功から遠ざける。

人はお金が入ってくるうちは、変化や厳しい決断や改革の必要性が目に入らない。

・革新の促進と保護
グーグルの教訓は明確だ。革新をビジネスにするのだ。

・シンプルに徹する
デザインは、単なる美観の問題ではない。デザインは美学なのだ。

・邪魔をしない

■グーグルが世界を支配したら
物事を違う見方で見て、グーグル時代における根本的な変化を理解し、
難問について考え、新しいチャンスをつかみ、
考え直し、想像し直し、作り直すということだ。
それが、グーグルに倣うということだ。

onConnectの挙動超概略

0 コメント

最近全然ネタをメモってないっす・・・
とりあえず昔(と言っても半年位前)に書いたネタで
イケそうな奴をちょこちょこっと公開します。
今回はChromeExtensionsネタですが、
Google先生は変化のスピードが尋常じゃないので、
もしかしたら今はもう通用しないかもしれません。
ネタメモをほぼそのままコピペなので始まりが唐突です。
書いた当時はChromeExtensionsを触っていて、
contents.jsとbackground.html間のやりとりを
追いかけた時のメモです。

onConnectの挙動超概略


まずはコンテントスクリプトから

var port = chrome.extension.connect({name:"test"});

でバックグラウンドページに対してラブコールを送る
(ちなみにここで引数として渡してるname:"test"で
portの名前が決まる。今回のコードでは"test"になる。)

バックグラウンドページは

chrome.extension.onConnect.addListener(function(port) {});

この関数がコンテントスクリプトからのラブコールを受け取る受け口を用意する。
ラブコールを受け取る受け口の中でさらに

port.onMessage.addListener(function(msg){});

を宣言しておく。これが実際にラブコールの応酬をやり取りする関数になる。

全体の流れとしては

コンテントスクリプトでonConnectしてバックグラウンドページに対しての道を開ける。

道が開いたらコンテントスクリプトからport.postMessge({key:"value"});
で値を送信する。コンテントスクリプトから値が送信されたら、
バックグラウンドページは
onConnect.addListenerの中で宣言している
port.onMessageでコンテントスクリプトのpostMessageを受け取る。
んでバックグラウンドでやりたい処理(まぁ基本的にはXHR的な処理だと思うけど)
ゴニョゴニョやったらその結果をport.postMessage({key:"value"});
でコンテントスクリプトに返してあげる。
んでコンテントスクリプト側での
port.onMessage.addListener
で送信されたデータを受け取る。
もらったデータを受け取ってコンテントスクリプト内で
やりたいことをゴニョゴニョやるって寸法ですね。


最初はconsole.logの追い方がわからなかったのもあるんですが、
個人的にはコンテントスクリプト側もバックグラウンド側も
送受信に使う関数名が一緒なのがちょっと理解に時間を要した原因かも。
だからといって変えられる訳でもないんですけど。


とりあえず冒頭で紹介した、動きの追い方を把握すれば難なく理解できると思います。
console.logの嵐でね!

BlogWriterからテスト

0 コメント

タイトル通りなんですが、何も書かないのもあれなので近況でも。

とりあえず、今携わってる案件は無事に担当機能の作成を終え今日でおしまいっす。
そして明日からしばらく静岡に行くことになるようです。

ajn#10のまとめは元気があったらそのうちやります。

そんな感じ








漫画を読むならi文庫HDよりComicGlass!!

0 コメント

お久しぶりです。大分更新に間隔が空いてしまいました。
今回はiPadのおはなしです。(output的な内容じゃない・・・

昨日までずーっと漫画を読むときはi文庫HDを使ってました。
今までは特に不満を感じてないつもり、
あるいは感じていてもそんなに大きいモノではなかったのですが、
この連休で続き物の漫画を読むときに色々と不満が爆発しました。

下の方は個人的なi文庫HDへのdisだらけなので、
先に結論からいうと

①ComicGlassはタップ操作をカスタマイズできるから
   ページ送りやメニュー表示などが自分の思い通りにできるので便利

   
②ComicGlassは本棚の概念がないのでファイルを開くのが楽

③ComicGlassは外部フォルダをデフォルトで見に行ってくれるので、
   iFunBoxからの転送もやりやすい。


以上3点の理由からオレはiPadの漫画リーダーには
現時点ではComicGlassをオススメします。

というわけで、ここからは詳細な不満や要望です。
まずはi文庫HDへの不満点を述べつつ、
ComicGlassへの賛辞を述べていきます。


不満点① タップ操作のカスタマイズが出来ない!

i文庫HDだとページ送りをするにはスワイプするか、
画面左端をシングルタップするかなのですが、
これをカスタマイズすることが出来ないのです。
多分通常右利きの人だったら画面右端シングルタップで
ページ送りが出来たほうが使いやすいですよね?
(オレはComicGlassで試してみた結果こっちのが
断然使いやすかったでした。)
あとはカスタマイズが出来ない故に
メニューが不用意なタップで出て来ないように
制御したりも出来ません。
ComicGlassは結構自由にタップ操作をカスタマイズできるので、
右利きだろうが左利きだろうがなんでもこい。
欲をいえばトリプルタップも設定出来れば更に神だった。


不満点② ページ送りのスワイプの動作が大げさじゃないと次のページにいけない。

オレは基本的に漫画を読むときは横向きで使う人なのですが、
i文庫HDは画面半分位スワイプしないと次のページにいかないんですよね。
その点ComicGlassはかなり少ない量のスワイプで次のページへいけます。


不満点③ 本を読むときにわざわざ本棚に登録しないとイケない。

ビジュアル的な観点からすれば確かに本棚はキレイなのかもしれませんが、
大量に本を読もうとするとなると、ハッキリいって本棚登録は
邪魔な動作以外のなにものでもありません。
本のファイルを開く時はファイルから直接開けるのですが、
(それでもわざわざ本棚に登録してくるかどうか聞いてくるのが煩わしいですが)
本と閉じたときに戻る画面が本棚になると、
次の巻へ行こうとしたときに本棚からわざわざファイルがある
フォルダへ移動しなければなりません。
上の結論でも書いたようにComicGlassには本棚の概念がないので、
次のファイルへ行くのが明らかにi文庫HDより楽


不満点④ ページが最後に到達しても自動で本をとじてくれない

これはComicGlassにも言えることなのですが、
その本の最終ページに到達して、なおページ送りの
動作をした場合は本を閉じて欲しいです。
もしくは設定でそういう設定を選べるようにして欲しいです。
漫画を読んでる時なんて最後のページに到達したら、
滅多にページ戻しなんてしないでしょう?
(オレの偏見かもしれませんが)


以上色々ツラツラと述べましたが、
ページ送りのアニメーションに関してはi文庫HDの圧勝です。
コレはもうグウの音も出ません。
ただ、オレの場合はページ送りのアニメーションよりも読書中の操作性が
なによりも重要だったので、今後のiPadのメイン漫画リーダーは
ComicGlassを使っていこうかなと思ってます。
勿論i文庫HDにしろComicGlassにしろまだまだアップデートは
すると思うので、その都度チェックしていきたいとは思いますが。

Pythonチュートリアル一人読書会 vol.3

0 コメント

■第5章 データ構造

リストについて
リストオブジェクトが持ってるメソッドの紹介
リストを使って簡単にStackとQueueを実現できるよ。
Stack
→append()で要素を追加して引数なしのpop()で要素を取り出せばおk
Queue
→append()で要素を追加して引数'0'のpop(0)で要素を取り出せばおk
リストの内包表記
filter(func, seq)
seq内のすべての要素に対してfuncを実行し、
実行した結果がtrueとなるような値のリストを返却します。
map(func, seq)
seq内のすべての要素に対してfuncを実行し、
実行した結果の戻り値からなるリストを返却する
reduce(func, seq)
引数を二つとるfuncに対して、seqの先頭から処理を実行していく。
最初にseqの先頭の二つの要素に対してfuncを実行し、
以降は実行した結果と、次の要素を用いてfuncを実行する。
ex)1から10までの総和を求める場合
def add(x,y): return x+y
[1,2,3,4,5,6,7,8,9,10]
1+2=3→3+3=6→6+4=10→10+5=15...45+10=55
seqの要素がひとつしかない場合はその値自体が返却される。
空の場合例外投げます
a**2でaの二乗になる
→strには使えない
タプルとシーケンス
タプルは常に丸括弧で囲われるよ
タプルは変更不可だよ
(スライスと連結を使えば変更みたいなことはできるけど)
参考:
集合やべぇ
diff取れるとかすげぇ
辞書型
keyにタプルを使えるよ
keyの存在を調べるにはhas_key()
すべてのkeyのリストを取得するならkeys()
iteritems()
→キーとそれに対応する値を同時に取り出せる
enumerate()
→要素のインデクスと要素を同時に取り出せる
比較演算子の優先順位
"and", "or", "not" などは比較演算子より優先順位が低い
式の内部で代入は行えませんよ
→=と==のミスタイプを防止するため
str1,str2,str3 = '','Trondheim','Hammer Dance'
not_null = str1 or str2 or str3
#この式がなにを評価しているかがわからにぃ
#実行すると'Trondheim'が出力されるということは
#not nullになる一番最初の値を代入してるってこと?

Pythonチュートリアル一人読書会 vol.2

0 コメント

ある程度読み進めたので投下。
・・・と思ったけど、ちょこちょこまとめてたのを一気に投下したら
結構長かったので、分割します。

■第4章 その他の制御フローツール
ifやforの使い方
else if -> elif
if...elifは他の言語のswitchやcaseの代替になるよ
forは対象の文字列かリストのすべての要素に対して、
任意の処理を行うよ。
Javaのように対象のリスト内の範囲を指定して
反復処理実行したりはできないよ(たぶん)
また、for実行中にforの対象のリスト(文字列)を
書き換えるような操作は安全じゃないよ。
forの対象のリストを書き換えるなら、
forの対象をコピーして、コピーしたほうをグルグルまわしながら、
処理対象に処理を加えるべきだよ
range()関数
渡された引数でintの配列を生成するよ。
・引数ひとつの場合
range(10) → [0,1,2,3,4,5,6,7,8,9]
開始値:0
インクリメント値:1
最終値:引数-1
引数は要素の数を表す
・引数ふたつの場合
range(5, 10) → [5,6,7,8,9]
・引数みっつの場合
range(5,10,2) → [5,7,9]
raw_inputってなによ??
raw_input関数はキー入力を取得します。
input関数では数値として変換されましたが、
raw_inputはそのまま文字列として返されます。
引数はプロンプトとして表示されます。
可変引数のお話
関数側であらかじめ複数の引数を定義しておけば、
関数実行時には、それより少ない数の引数で実行できるよ
キーワード引数のお話
キーワード引数でエラーが起きる場合
・必要な引数がない
・キーワード引数の後に非キーワード引数がある
・引数に対して値が重複してる
・道のキーワードを使用している
どうでもいいけど
print '-'*40
に感動した
引数リストのアンパック
→リストに入ってる値を、関数の引数に適用する?
ラムダ形式?匿名関数とかちょっとよくわかんないです。
→あとでちゃんと調べましょう
関数に関するドキュメントの記述ルールについて

過去記事

TortoiseSVN 日本語化 できない

2 コメント

仕事場のPCのTortoiseSVNを日本語化しようとしたら、
ちょこっとハマったので軌跡などをメモ。

重要なポイントは二つ。

・TortoiseSVN本体と言語パックのバージョンに
  ズレがあると、日本語化は上手くいかない。
   
・TortoiseSVNは「プログラムの追加と削除」から
  削除しても、ちゃんと削除されない。
  アンインストーラーがないんで、そうするしかないんですが、
  コレで削除してもインストールフォルダが残ったままで、
  アンインストール前のデータが残っちゃったりしてます。
   
この二つのポイントを抑えればもう2度とハマる事もないはず。

以下にハマった軌跡を箇条書きしておきます。

・仕事場のTortoiseSVN(ver1.6.7)を日本語化する必要が出てきたぞ。

・確か言語パック自体がインストーラだったから楽勝でしょ。

・最初に落としてきた言語パックのバージョンは1.6.10

・なにもしらずにそのままインストール

・Generalのlanguageに日本語の選択肢がでてこねーじゃねーか!

・バージョン齟齬問題について知る。

・とりあえず1.6.7の言語パックを落としてくる。

・上書きインストール出来ないかな・・・?

・ダメでした。

・TortoiseSVNアンインストールしたらぁぁぁぁ!

・アンインスコ→PC再起動→インスコ→言語パックインスコ

・ダメでした。

・なんか・・・オカシくね?

・TortoiseSVNアンインスコ後にProguram Filesのフォルダ内を見てみる。

・TortoiseSVNフォルダが見事に残ってました。

・しかもjaフォルダが綺麗に残ってました。

・ソレらを消して、再インスコしてみる。

・やっと無事に日本語化できましたとさ。ちゃんちゃん。

あ。ちなみに環境は
・Windows XP Professional SP3 32bit
・TortoiseSVN 1.6.7
でした。

オライリー本が読みたいじゃない? ~iBooksの洋書で英和辞書を使う方法~

0 コメント

先週こんなエントリがホッテントリになってた。

たった600円でオライリー本をiPadやKindleで読む。すてき。

コレはスゴイっすね。
そしてこのエントリを受けてdankogai氏が
Perlで自動化スクリプトを組んでました。

perl - O'ReillyのiPhoneアプリ本からepubをぶっこぬく

自分も一応技術者の端くれなので、
あのバカ高いオライリー本がこんなリーズナブルな値段で
読めるようになっちゃうなんて!って心が踊ったりもしました。
んで、実際にHadoop本をダウンロードして、ePub形式にしてみました。
(Perlをインスコするのがめんどくさくてdankogai氏のスクリプトは試してませんが)
いざiPhoneに入れて読むぞー!と意気込んでみてはみたものの・・・

いや・・・わかってたんですけどね・・・

わかってたんですけど、やっぱり英語は辛かったっす・・・
1ページでくじけました。

その後色々調べてみたところ、iBooksは辞書機能があることを知り、
その場で単語が調べられるなら、イケンジャネー?と思ったのですが、
上記の方法でePubにしたHadoop本はなぜか単語を選択しても、
辞書機能を発揮しない。英英辞書すらも。

色々調べてみたところ、Jailbreakすると英和辞書が使えるよ的な
ブログを発見したのですが、かといってそのためだけにJailbreakはしたくない。

しかしコチラのブログを見ると、どうやらePubファイルの
言語設定を「Japanese」にすると、英和辞書が使えるようなことが書いてある。

というわけで早速試してみました。
今回使ったアプリは「Sigil」
基本的な使い方はコチラを参照してください。


今回やった手順は「Sigil」を立ち上げて、
対象のePubファイルを開き、Tools->Meta Editor を選択し、
LanguageをJapaneseにしてあげただけです。

言語情報を変更したら、上書き保存し、
保存したファイルをiTunesにドラッグアンドドロップし、
iPhoneと同期を取るだけ。

すると、どうでしょう?見事に英和辞書が開けるようになりました!
(ちなみに言語をEnglishにすると英英辞書が開かれます)

これでもうちょっと戦えそうですね!
もとい、もうちょっと戦ってみます!!

大量の洋書を英和辞書対応するのにはちと辛いかもしれませんが、
オライリーの本が読みたいけど高くて手が出なかったんだ!
というiPhone、iPadユーザーは是非試してみてください。

(※今回iPadでは実施してないので、iPadでの動作保証はできませんが)

Pythonチュートリアル一人読書会 vol.1

0 コメント

以前のPythonインストール記事でPythonチュートリアル
を読みながらPythonを勉強していると言いました。
ただ、チュートリアルを読んで手を動かしながら、
Pythonタノシーウヒョーって言ってるのもいいんですが、
折角ブログを持ってるんだから、自分なりに読んだ部分を
まとめておこうかなと思ったので、今日からまとめ始めます。
タイトルにvol.1とある通り続きます。
いや。続かせたいです。
と言っても一人でやってるので、
区切りをつけるのが、その時その時で違うので、
各号のボリュームは大分変わるかもしれません。
Pythonチュートリアルは以下にあります
HTML版
PDF版
というわけで以下からまとめです。

【第1章】やる気を高めよう
    Pythonはインタプリタだから開発が楽だよというお話。
    既存言語を引き合いに出してPythonの良さを伝えてます。


【第2章】Pythonインタプリタを使う

    コマンドプロンプトでPythonを起動するところから、
    REPLでの実行方法、ファイルからの実行方法、
    ソースの文字コードについてなどをザクっと述べてます。
    パス通すところを記述するなら、公式のダウンロードURL
    も一緒に書いておいてくれれば嬉しいのに・・・

   
【第3章】形式ばらないPythonの紹介
    コメントの書き方や、REPLでPythonを電卓として使用してみたり、
    文字列の扱いについてのお話してます。
    以下感動?したこと
    ・Pythonは最後の計算結果を 変数"_" に格納してます。
    ・Pythonは文字列操作が楽ちん
    ・リストの操作も楽ちん
    ・リストに要素を追加するときは"+"も使えるけどappend使おうね
    ・文字列の項のrawモードはちょっとよくわからんかった
    ・複素数はもっとよくわからんかった(高校の時やったはずなのにね
   

とりあえず今回は3章まで。
またちょっぴり読み進んだらまとめます。

オレが欲しいiPadアプリネタ~ぼくがかんがえたさいきょうのあいぱっどあぷり

0 コメント

こんにちは。最近iPad欲しいモードになって困ってるmasashoujiです。
iPad欲しいなーと思いながら仕事をしてたところ、
ふとこんなアプリあったら便利なんじゃね?
ってかiPadで仕事をしようと考えてる人が結構いるんだから、
結構需要あるんじゃね?とか思ったネタが思い浮かんだので晒します。
オレの周りでiPadアプリが作れる環境がない訳じゃないんですが、
状況を鑑みるに、どう考えてもリリースされない or リリースされる
としてもいつになることやら状態になるのが目に見えてるので
とりあえず草案だけでもネットの海に晒しておけば、
誰かが作ってくれないかなーなんて淡すぎる期待を持ってます。

もし、オレが晒したアイデアで大儲けしちゃった日には
iPadをプレゼントしてくれてもいいですよ?

というわけで以下がオレが考えたiPadアプリネタ

■タイトル
    一応いくつか考えてみた
    ・TextEditor
    ・Textit
    ・Keyborder
    ・KeyPuncher
    けどまぁオレが作るわけじゃないので、
    どうでもいいっちゃどうでもいいか。
   
■コンセプト
    外部キーボード(Bluetooth)を前提とした
    テキストエディタアプリ
    今のところ、想定としてはリュウドのキーボードや、
    Appleの純正Bluetoothキーボードなどを考えてる
   
■なにがしたいか?
    キーボード入力のみでテキストファイルの
    作成・編集を完結させたい。
    そのために外部キーボードに標準で備え付けられているであろう
    Ctrl,Alt,Shiftを用いて既存のPCのテキストエディタアプリで
    実現できるキーボード操作をiPadで実現させられるようにしたい。
   
    今のところ実装したいキー操作
    Ctrl  + s         →    保存
    Shift + 矢印    →    範囲選択
    Ctrl  + c         →    コピー
    Ctrl  + x         →    切り取り
    Ctrl  + v         →    貼り付け
    Ctrl  + f          →    現在編集中のテキストファイル内検索
    Ctrl  + r          →    置換
    Shift + Enter    →    上改行
   
    変換候補を矢印 or スペースキーでカーソル移動
   
   
■保存形式
    基本は.txtがいいです。
    こんなの実装してほしいなーと思ってるのは
    Ctrl + s            →    ローカルに.txtで保存
    Ctrl + d            →    DropBoxに.txtで保存   
        →DropBoxアカウントは別途設定できるように。
    Ctrl + e            →    Evernoteに送信。
        →Evernoteアカウントは別途設定できるように。
        →送信時にタグ設定や送信先ノートを選べるとなおベター
       
    ホントは保存時に拡張子を選択できるようにしてほしい。
    というか、普通のエディタのように「hoge.java」とかで
    保存したらそのままの拡張子で保存してほしい。
   
    そうすりゃ、htmlやちょっとしたプログラムコード
    なんかも書けるようになる・・・はず
   
■欲しいオマケ機能
    ・シンタックスハイライト機能
        →あるとすばらしいと思う。
   
    ・コード補完機能
        →あるといいなぁとは思うけど、
        ガッツリとコーディングできるわけでもないだろうし、
        どの言語をサポートすんだって話もあるし、
        いらないっちゃいらない
       
   
ちなみにもしホントに作ってもいいけど、
こんなテキストベースじゃわからん。
直接会って仕様を教えやがれ!
という人がいれば、土日祝日・平日夜でよければ
時間空けます。
メールかtwitterでご連絡ください。

お便りお待ちしてます!

メアド
guyst.326アットマークgmail.com

twitter
@masashouji

Windows7にPython2.6を入れたよ!

0 コメント

2.7が出たっていうのにね!
しかも2.7のリリースニュースを見ると、
2系のファイナルメジャーバージョンアップみたいだから
今後はじめる人は3系を勉強したほうがいいのかも?

というわけでWindows7 Home Premium(64bit)に
Python2.6を入れました。
ダウンロードするファイルさえ間違えなければ、
next連打で普通にインストールできるから、
記事にするまでもないって話もあるけど、
SSとったので一応晒しときます。

ダウンロードするファイルはここから、
自分のOSにあったファイルを選べばおk
自分の場合は64bit版だったので、
Python 2.6 Windows X86-64 installerを選択しました。
(2.7がリリースされたのでリンク先はPython2.7になってます)

あとはダウンロードしたインストーラをダブルクリックして、
標識どおり進むだけ。






































































ちなみに今はPythonチュートリアルを読みながら
イチから勉強ちう。(PDF版もあるよ!)


20100708:修正
表現がアレだったので修正と、リリースニュースのリンク先追記

やりたい事が溢れてきたので整理

0 コメント

さながら WannaDoリスト

■今やってること
    Pythonチュートリアルを読みながら
    ハンズオン形式でPythonの勉強
    Pythonの文字列操作らくちんで楽しい
   
■やりたい事
    ・Scalaチュートリアルなるものを見つけたので、
        それを参考にもっかい勉強
   
    ・Liftを使ってサンプルプログラム作成
        とりあえず触りたい
   
    ・今更ながらJavaDBの調査。
        Java単体でアプリ創りたいなぁ
   
    ・クレカCSV管理アプリが創りたい。
        出来ればJava単体といきたい所だけど、
        UIが大変な事になりそうだからなぁ・・・
   
    ・Evernoteにどんどん溜まっていくドキュメントの消化
        未読タグ的なのを作らないといかんかなぁ・・・
   
    ・Djangoを使ってサンプルプログラムを作成
   
    ・Windows7にEclipse3.6(Helios)の導入
   
    ・UbuntuにEclipse3.6(Helios)の導入

    ・ScalaをダシにNetBeans初挑戦
   
   
こんなとこかなぁ。
気になることはもっと一杯あるけど、
それはまた今度まとめよう。

Scalaを触ってみたよ

0 コメント

なんで触り始めたかは覚えてないんですが、
下記サイトを参考にScalaを触ってみました。

今からでも遅くない これから始めるScala(前編)

インストールでちょこっとつまずいたのでメモなど。

zipをダウンロードして、SCALA_HOMEを設定したのだけど、
なぜかコマンドプロンプトで起動しようとすると
「\Java\jdk1.6.0_20\bin\java.exe の使い方が誤っています」
とメッセージが出てきて、起動できない。

ググってみたら、scalaの起動バッチを修正することで、
起動出来るってことが書いてあった。

scala.batがだめっぽい

上記リンクはscala.batにしか言及してないけど、
scalac.batも同じようにバッチを修正してやらないと、
コンパイルできません。というか出来ませんでした。
ちなみにscalac.batも32行目をコメントアウトしてやればおk。
scaladocとかはまだ試してないけど、多分同じ症状が起きる予感。

上記リンクに書いてあるように、
この現象は64bit版のWindowsで起きる現象の模様。

最初はノート(Windows7 Home 64bit)で試してたのだけど、
後に母艦(Windows7 Pro 64bit)で試してみたら、なぜか上手く行った。

何が違うのかと思って調べてみたところ、
ノートに入ってるJDKは32bit版用で
母艦に入ってるJDKが64bit版だったことが判明。
バッチがこけてる訳だから、JDKが32bit版だろうが64bit版だろうが
JDKの中身は関係ないと思うんだけど、64bitOSに32bit版のJDKを
インストールしようとすると、デフォルトのインストール先が
「C:\Program Files (x86)」になる。
(64bit版だと「C:\Program Files」)
こいつのせいでJAVA_HOMEのパスが上手く動かないのかなーとか妄想しました。

結論
64bitOS上でscalaを動かす場合は

・scalaのバッチを修正する
・JDKは64bit版を入れる
・32bit版のJDKを入れる場合はインストール先を Program Files に変更する
(これは試してないんで、これで問題が解消するかどうかはわかりません)

の3つの方法があります!
ということでした。

それではみなさん良いScala Lifeを!

ubuntuのデスクトップをMac風に

0 コメント

ubuntuのデュアルブートに成功させたので、
ubuntuもといLinuxに慣れようと色々イジって遊んでます。

ubuntu10.04になってから、
外観がかなりMac風になってるのですが、
どうせならMacにしちゃえってことで、
以下の記事を参考にMac風に仕立て上げてみました。

UbuntuのデスクトップをMac OSX Leopard風にするチュートリアル


もとい仕立て上げようとしました・・・が、
どうやら AWN manager インストール方法の部分が古いらしくて、
AWN managerのインストールが上手く行きません。
ググってみたら同じようにハマってる人が、
ubuntuフォーラムにいました。

https://forums.ubuntulinux.jp/viewtopic.php?pid=54561

んで、なんとかAWNのインストールに成功したので、
そのメモなどを記述しておきます。

上記URLのフォーラムにも書いてありますが、
現状のLinuxにAWNを入れるには下記のリンク先に
書いてあるようにやるといいらしいです。

http://wiki.awn-project.org/DistributionGuides#Testing_Package_Archive

ハイ。英語デスネー。

というわけで合ってるかどうか保証は出来ませんが、
以下自分がやった手順です。

①システム→システム管理→ソフトウェア・ソースをクリック

②他のソフトウェアタブをクリック

③追加ボタンを押して、 ppa:awn-testing/ppa と入力し、ソースを追加をクリック
この時、既に上記のリンクで
deb http://ppa.launchpad.net/awn-testing/ubuntu hardy main
deb-src http://ppa.launchpad.net/awn-testing/ubuntu hardy main
を追加してるならば、先に削除しておいたほうが無難です。
というか自分は削除しました。
(上記URLが書いてある所をクリックして削除ボタンを押せばおk)

④端末で $sudo apt-get install awn-settings-trunk を実行する。

といった手順でインストールできれば、
システム→設定の所に Awn 設定 という項目が追加されているハズです。

ただ、ここまで書いておいてなんなのですが、
AWNが新しくなったせいか、GUIが刷新されており、
上記のブログとはイメージが違うし、
ダウンロードした Eleganto glass のテーマも
tgzファイルだからかなんなのかわからないけど、
テーマファイルとして認識してもらえずで
結局あんまり役に立ってないような気もします・・・w

んで、結局 Docky を別立てでインストールして、
Dockは実現しました。
Dockyのインストール方法については下記記事を参考に
実施して問題なく出来たのでここでは割愛。

独自プロジェクトに分離したGnomeDoのDocky《Ubuntu 9.10対応》


とりあえず、これでデスクトップの見栄えはMac風にすることに成功しました。

完成図


ななみちゃんver


後々細かい点等修正がありそうだったら、
記事を修正するかもしれません。
しないかもしれません。

JCMT 2010に参加してきたよ! Cacoo裏側編

0 コメント

はい。先週のブログに書いた通り、
個人的に一番面白いと感じた
「Seasarで動いているWebサービスCacooの裏側」
のセッションについてのメモ等をさらそうかと。

とりあえず、資料はこちらにさらされてます。
一応このブログにも埋め込んでみる。

Tags: Etc

資料内のアジェンダにも書かれてるけど、
今回お話してた内容は、
・Cacooとはなんぞや?
・Cacooが動いてるアーキテクチャの構成
・Cubbyで拡張して何をどう実現してるか
・デザイナーさんとの協業方法
・レスポンスの改善
・質疑応答
って感じでした。

以下、セッションを聞きながらのメモを時系列で。
資料と重複してる部分や、意味不明な所は抜いた・・・はず。

 Cacooはヌーラボが運営・開発している

ヌーラボの仕事
→カクー、Backlog、受託開発を行っている

受託で作ったものをOSSに還元して、
その作ったものをさらに自分たちのサービスで使用している

Cacooとは?
VisioのWeb版
いろいろかけるよ!
・フローチャート
・UML
・ネットーワーク図
・座席配置図

図を描くだけでもなかなかイケてるけど、
リアルタイムコラボレーションもできるよ!

同じオブジェクトを触っている場合先勝ちになる。

別オブジェクトの場合マージされるよ

何のために作ったか?
本社が福岡のため、東京のお客さんとBacklogで文字だけでやり取りするのは結構きつかった
図も使ってたけど、pptで書いてpngにして、と面倒くさかった
ほかの人が編集できなかった
というわけで、図を直接みんなで編集できたりしたらいいなぁということで作った。

図が描けるツールが当時はあまりなかった

最初はUMLをWeb上で書くことができるようなプロトタイプを作った
JSONで情報やりとり

その後FlexやFlashを使えばクロスブラウザ問題を解決できそうだったので
ので社内で利用する為のプロトタイプを作成

社内プロジェクトで運用してみて、いけそうだったので、
Webサービスとして提供した

7ヶ月でユーザー数が現在4万4千超
国数は120カ国以上
ユーザーは英語版が57%以上
英語じゃない問い合わせが来てたりして、ユーザー対応が結構大変・・・

Cubbyで拡張
        ・脱Strutsを目指した
        ・T2も同じ感じ?
  
Plugin
    AOPを使わずに拡張していく  
    それぞれフックできるポイントが提供されている。   

Mayaa
    ・テンプレートの切り替えができる
    Cacooはリリース以前から多言語対応を念頭においていた
    多言語対応用に日本語・英語のリソースをすぐに切り替えられるようにした
  
    1.最初に開発者のみでプロトタイプHTML・機能を作成
    →使いやすさを追求
  
    2.次にイメージを作成
    →イメージをデザイナに伝えて、デザイナにサイトデザインを作ってもらう
  
    3.出来上がったイメージはイラレやPNGだったりするので、デザイナさんに
    それぞれパーツとして切り出してもらい、HTMLコーダーにパーツを渡し、コーディングしてもらう
            id/classのルールが重要
          
            Cacooではs_で始まるid/classは開発者側で使うというルールを規定し、
            それ以外はHTMLコーダーに自由にやってもらった
          
    4.出来上がったHTML/CSSからMayaaで仕上げる
    →動的なコンポーネントを含める
        →JavaScriptでDOMで表示するようなものを含めてもらう
      
    5.日本語の表示が終わったら多言語対応
    →翻訳したい単語・文章をリストアップして、翻訳者に渡す
  
        失敗したと思ったこと。
            翻訳者のCacooへの理解が足りず、翻訳してもらったものが
            ちょっとオカシなものになっていた。
            →実際にユーザーに指摘してもらって修正した

Mayaaとは
    ・最初がはまりやすい
    →公式ドキュメントを参照しましょう
        すでにメーリングリストで質問されている事がたくさんある
       →JSPと同じ考え方で表示しようとするとハマりやすい。
  
    Cubbyのカスタムタグの連携を用意にする拡張もあったりする。
  

レスポンスの改善

    通信速度・距離の問題
    アメリカからCacooやBacklogにアクセスしてみたところ
    画像が表示されないという問題が発生。
  
    サーバーキャッシュ→Ehcacheで解決(主に画像)
    RMIで複数台で分散してキャッシュをするようにしている。
  
    基本はネットワーク通信を減らす・DBアクセスを減らす
  
    ブラウザのキャッシュ
    タイムスタンプが重要

    Mayaaの応用
    InjectionResolverを拡張して、pom.xmlのバージョンを設定、
    JSのバージョン等を動的に変更させるようにした
  
    Hudsonでリリースモジュールを作成することによって、
    リリース漏れをなくすようにした。
  
    回線速度やレイテンシの問題
    →今EC2に乗っけるかどうかを検討している。
  
    現状海外からのアクセスが国内からのアクセスに比べて30倍位遅くなっている。
  
    InjectionResolverを用意しておくことによってEC2に乗り換えたときも
    リソースのパスなどの修正もあまり入らないと考えている

まとめ

CacooはSeasarプロダクトを基盤として動作しています。
  
Seasarを使うことによってサービス開発に集中できました

Seasarを使って魅力的なサービスをじゃんじゃんつくっちゃいましょう!

Javaだって今風なWebアプリ作れるぜ!



質疑応答
・HTML5導入は?
当時検討もしたが、当時はIE優勢だったので、見送った。
HTML5に切り替えればロードが早くなるのは
わかっているので是非やりたいと考えている。
Canvasは早いことはわかっている

英語じゃない質問はどうしてるの?
質問をGoogle翻訳で邦訳し、英語で返答している。

開発チームの人数は?
リリース直前は4名
3,4ヶ月で開発

インフラ構成は?
アプリケーション4台、DB2台?でかなり余裕
現状はたぶん2,3台でまわせる


以上。
最近話題になっているであろうCacooの裏側の事情が聞けて、
非常に興奮しました。

Windows7にUbuntu10.04を入れる

0 コメント

こないだ買ったAcer Aspire One 752(以下AO752)に
入れたくなったので入れました。
実行した手順は以下の通り。
リカバリディスクの作成方法等が
違うだけで、基本的には他のネットブック等でも
応用可能だと思います。
まぁ、試した訳じゃないので、
出来なくても責任は持ちませんけど。


前準備:リカバリディスクの作成
AO752には標準で「Acer eRecovery Management」
というツールが入っており、外付けDVDドライブと
空DVDさえあればすぐにリカバリディスクが作成できます。
基本的には画面の誘導に従えば出来るので、
詳細な手順は省きます。
①ubuntu10.04のLiveCDを手に入れる。
    これは多分CDでもUSBでも構いません。
    外部からブートできる媒体であればOKです。
    ちなみに自分はUSBでした。
    LiveCDの作り方はググればきっと一杯出てきます。


②Windows7のパーティションを分割する。
    Windows Vista以降、Windowsは空き容量さえあれば、
    自前でパーティションを分割することが出来るみたいです。
    詳しくはここを見ながらやりました。

    パーティションの拡張と圧縮 Windows Vista / Windows 7  
   
    なお、リンク先にも書いてありますが、
    リンク先のような行為はシステムを復元不能にしうる
    可能性もあり得るので、しっかりと熟考し、
    バックアップを取った上で実行しましょう。
   
    パーティションを分割した部分の領域は
    未割り当てのままで大丈夫です。

    あと、パーティション分割しようとすると、
    デフォルトの分割値が分割するドライブの半分とか
    になっちゃってますけど、勿論そんなにいりません。
    自分はものすごい余裕を持って40G(40960)にしました。
    40Gでも多すぎるとは思うんですが、
    色々遊ぶ予定なので余裕を持っておきたいなと・・・
   
③①で用意したCD or USBを用いてUbuntuのLive版を起動する。
    当たり前ですけど、再起動するときはちゃんと、
    ブートの順番を変えないとダメですよ?
   
④起動するとインストールか、お試しかを聞かれるので、インストールを選択する。
    この後の詳細なやり方は
    以下を参考にしました。
   
    USBメモリへUbuntu10.04をフルインストール
     
    上のリンクはUSBメモリへのフルインストールの方法なので、
    今回のはちょっとだけ手順が違います。
   
    上記リンク手順の7で、
    "「手動でパーティションを設定する」のラジオボタンにチェックを入れて「進む」。"
    とありますが、今回は内蔵HDDの未割り当ての領域にインストールするので、
    "それぞれ別のものとしてインストールし、起動時にどれを起動するか選択"
    を選びます。
   


   
    ここで「進む」をクリックすると、以下のようなちょっと怖い確認画面が出てきますが、
    勇気を出して「続ける」をクリック。




   
    また手順13でブートローダのインストール先を変更していますが、
    これも今回の場合はWindows7、ubuntuが共に内蔵HDDに
    インストールされてますので、変更は不要です。

    あとはインストールが始まるので、
    インストール終了後に再起動するだけです。
   
    自分の場合、
    インストール終了後にubuntuではなくWindows7を起動したのですが、
    なぜか、Windows7が起動途中で止まってchkdiskが実行されたので
    かなり焦りましたが、chkdisk終了後はなんの問題もなく、
    Windows7、Ubuntu共に動きました。
    原因がなんだったのかは不明です・・・
    未割り当て領域だったところにいきなりデータが
    書き込まれてたからかなぁ?
   
    まぁ、そんな感じでデュアルブートネットブックの出来上がりです。
   

Java Cloud Meeting Tokyo 2010に参加してきたよ!

0 コメント

お久しぶりの更新です。
というわけでJCMT2010に行ってきたので、その所感など。


参加したセッション
1時間目    :    Seasar3がやってくる
2時間目    :    SeasarFoundation社員総会
3時間目    :    デベロッパーのためのAWS講座
4時間目    :    Seasarで動いているWebサービスCacooの裏側
5時間目    :    AWSハンズオンセミナー
6時間目    :    AWSハンズオンセミナー

以上のセッションに参加してきました。
以下、各セッションについての所感

■Seasar3がやってくる
ひがさんが来るべきエンタープライズクラウド時代に向けて、
今後のSeasarをどういう方向で開発していくかをお話してた。
結論から言うと、今のところ考えてるのは、
Springをベースにして、既存のSeasarで行えていたことを
実装していくという方針だとか。
今のところはHotReloadingを
クラスキャストエクセプションが起きないように
実装する、なんてのを考えているらしい。

ただし、これは現段階の考えであって、
今後他の人たちともっと話しをして、
最終的に決めていきたいとのこと。

■SeasarFoundation社員総会
SeasarFoundationとして、
コミュニティの枠を広げていきたいとかどうとか

■デベロッパーのためのAWS講座
一応今日のメイン目的のセッション。
講師がAmazon本社のAWSエヴァンジェリストで、
セッションは翻訳者付で行われた。

基本的にはAWSのサービスの概要説明だとか、
どんなサービスがあるかとかを話していた。
AWSで最近RDSという、クラウドでRDBMSを利用できる
サービスを展開しているが、これはMySQLを
利用しているため、既存のDBがMySQLの場合
簡単に移行できるらしい。

ちょっと驚いたのは、RDSは自動的にログを取っているのだけど、
そのログからDBのバックアップが可能だということ。
そんなのって普通のRDBMSでもできるの?

■Seasarで動いているWebサービスCacooの裏側
タイトルの通り、使ってるアーキテクチャやら、
開発時の苦労話等。
個人的にここが一番濃かったので、
ここについては別で記事をあげようと思う

2010/06/20追記
記事アップしました。
JCMT 2010に参加してきたよ! Cacoo裏側編


■AWSハンズオンセミナー
wktkして行ったけど、ちょっぴりガッカリなセミナーだった。
自分が情報収集しきれてなかったのが悪いのだけど、
アカウント取得前提というのを聞いてなかったので、
実際にハンズオンには参加できなかった。

あと、ガッカリな理由としては、2時間使った割には、
内容がホントの入り口の部分しか触れられなかったところ。
ちょっと前口上というか、AWSについての説明が多かった。
AWSの説明は説明で勉強になったのだけど、
ハンズオンていう位なんだからもうちょっと、
インスタンス作って、あれやこれやイジくって
というセッションにしてほしかったなーなんて思ったり。


以上。そんなとこっす。

Windows7のタスクスケジューラの設定方法

0 コメント

今の仕事で使用しているサーバーのOS WindowsServer2008で
タスクスケジューラーの設定方法のマニュアルを
お客さん向けに書く機会があったので備忘録の意味を込めてエントリ。
タイトルはWindows7だけど、GUI一緒なんでいいかなと。

XPやWindowsServer2003とWindows7(VISTAも?)、Server2008
は大分設定方法(GUI)が変わってるんですね。
ちょっと戸惑っちゃいました。
その分設定できる項目が充実したみたいですけど。

というか元々開発環境用(WindowsServer2008ね)
に設定するためのマニュアルがあったはずなんだけど、
なぜか知らないけど手順・キャプチャともにXPの仕様で書かれてるっていう。
開発環境で設定するときもWindow2008Serverに設定してたはずなのにね(*'3')

【免責】
ちなみに、今回のエントリ用に使用したOSは
上に書いてあるようにWindows7Professionalです。
基本的にGUI操作で、見た目がまんま一緒なので
特に問題はないと思うんですが、
これを見て、上手くいかなかったぞー!とかいわれても知らんよ。


前置きが大分長くなりましたが、以下手順です。
今回設定するのは、中身がなにもない「hoge.bat」です。

①「コントロールパネル」を開いて、「システムとセキュリティ」を開く

















②「管理ツール」を開く

















③「タスクスケジューラ」を開く

















④「操作」メニューを開いて「基本タスクの作成」を選択














⑤名前に適当な名前を入力。














⑥タスクのトリガーを選択。いつ実行するかってことですね。













⑦上のトリガーで「毎日」を選んだので、時刻と実行間隔も設定する。













⑧何を実行するかを選択













⑨上で「プログラムの開始」を選んだので、どのプログラムを実行するかを設定する。













⑩今回は上で書いたように「hoge.bat」を選択















⑪「完了」ボタンを押して終了

Java内でStrutsのメッセージリソースを取得する方法

0 コメント

今の現場で必要に迫られたので調査しました。
コードをそのまま載せてる所が見受けられなかったので、
記事にしてみる。

PropertyMessageResourceFactory pmrf = new PropertyMessageResourceFactory();
MessageResources mr = pmrf.createResources("メッセージのパス※1");
mr.getMessage(キー,引数,引数※2);

※1
メッセージが格納されているファイルへのパッケージのフルパス
例)
jp.test.resources.MessageResource

※2
キー → メッセージファイル内に記述されてるメッセージのキー
引数 → 対象のメッセージで引数を指定している場合


ってな感じです。
この方法だとJUnitの時も簡単らしい。
ちなみにStruts1.3.10のお話です。

jQuery参考サイト

0 コメント

自社でwikiプロジェクトが勃発したので
jQueryの項目をちょろっと編集してみた。
(ホントにちょろっとだけど)

なんだか悔しいので自分のブログにも投稿しちゃう。

jQuery参考URL

「jQueryのセレクタ 基本」
jQuery基本のキ

「jQuery基礎文 法最速マスター」
jQueryの基本チートシート

「jQuery の基本動作確認」
jQueryの基本チートシート2 Ajax系とか

「NobleCount」 
twitterみたいに入力可能文字数を表示するプラグイン

「IE6、7でも動いてくれる&実用性の高そうなjQueryプラグイン30個まとめ」 
タブ切り替え系とかTextResizerとか、あとvalidation.jsとかは使い勝手良さそう
 


もうちょっとありそうだけど、今日はとりあえずここまで。
ていうかリンク貼るのマンドクセ

iPhoneアプリの電子書籍について考える

0 コメント

iPadの発売やkindleの各国発売で電子書籍業界が賑わってますね。
本のせいで場所を取られている貧乏庶民には
大変望ましい傾向じゃないかと思います。

iPadもkindleも持っていない僕なんですが、電子書籍を購入・所持しています。
それはWeb上で無料配布されているPDFの電子書籍や、
iPhoneアプリとして配布されている電子書籍です。
昨日ついつい購入して、そのままその日に読破したのが、
昨今のドラッカーブームを作り上げたと思われる

もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら
(iTunesリンクです)

です。ラノベ感覚で読めるのでサクっと読んでしまいました。
小説感覚でドラッカーを読めるので、ドラッカーの書籍にくじけた人にオススメです。
(といっても、「マネジメント」にしか触れてませんし、
「マネジメント」の全文が載っているわけではないので、
本当にドラッカーを勉強したいならドラッカーの本を買うべきですけど)

本だと1680円するところがiPhoneアプリ版だと800円で非常にお買い得ですね。
これは買わない手はないでしょうってことで勢いで買っちゃった訳なんですけど、
読み終わった後にふと気づきました。

これってiPhoneがないと読めないじゃん!!

いや、もう読了したんでどうでもいいっちゃどうでもいいんですけど、
iPhoneアプリ版の電子書籍だと困る事が2点ありました。

・人に貸せない(貸す人がいるかどうかはおいといてね)
・iPhoneでしか見れない

まぁ1点目はそんなに問題じゃないんですけど、
重要なのは2点目ですね。
せっかくの電子書籍なのに、
PCやkindleを使える状況でもiPhoneからじゃないと読めない訳です。
(iPadはアプリの互換性があるはずなので、
見やすさはわかりませんが読めるはず。)
今のところはあまり真剣には困っていないのですが、
技術書とかPC使いながらPCで参照したいような書籍なんかだと、
非常に困っちゃいますね。
(iPhoneアプリで技術書が出るかどうかはまた別問題ですが)

そう考えるとやっぱり、実物の書籍を購入してPDF化するのがいいのかなー
なんて妄想したりしました。
最近はこんなサービスもありますしね。

BOOKSCAN(ブックスキャン) 低価格・書籍スキャンサービス - 大和印刷

法的に白か黒か結論は出てないっぽいですが、
利用してみようかなーとちょっと思ってたりします。

というわけでiPhoneアプリで書籍を購入する際は
事前にどういう場所で読むかを考えてから購入しましょう。

Windows7にPostgresをインストールしてみた。

0 コメント

SQLを勉強するためにPostgresをWindows7に入れてみた。
環境は以下
・Windows7 Professional 64bit版
・Postgresql8.4.3

正直XPに入れるやり方と全く変わらないので、
XPでPostgresをインストールしたことがある人には全く参考にならないかもしれません。
というわけで以下の手順でインストール出来ました。

① 「postgres」という名前のWindowsユーザーアカウントを
非管理者権限で作成する。パスワードはとりあえず「postgres」

②Postgresql8.4.3のインストーラをダウンロードしてくる。
http://www.postgresql.jp/PostgreSQL/8_4/8_4_3

③ダウンロードした「postgresql-8.4.3-1-windows.exe」を
ダブルクリックして起動するとPostgresqlのインストーラが起動する。
「Next」をクリックする。
















④「Next」をクリックする。
















⑤「Next」をクリックする。
















⑥DBのスーパーユーザーのパスワードを入力するように求められるので、
任意のパスワードを入力する。自分はとりあえず「postgres」で入力。
それぞれにパスワードを入力したら、「Next」をクリックする。
















⑦ポートを設定する。自分は特に「5432」を使っていないのでデフォルトのまま。
任意のポートを設定したら「Next」をクリックする。
















⑧Localeを設定する。デフォルトでも良かったんだけど、一応「Japanese」にしてみた。
pl/pgsqlはとりあえず使う予定ないけど、チェックを外さないでみた。
諸々設定したら「Next」をクリックする。
















⑨「Next」をクリックする。
















⑩インストール終了。チェックを外してから「Finish」をクリックする。
(キャプチャだとチェックを外してないけど)
※これは自分がスタックビルダが何者なのかわかってないので外してるだけなので、
必要な方はチェックを外さないでくださいね。
















以上でインストール終了。
無事にpgAdminが起動出来るようになるはずです。

content.jsとbackground.htmlのやり取りの追跡方法

0 コメント

extension開発でXHRを使いたかったんだけど、
めちゃめちゃハマったのでまとめてみる。
content.jsからbackground.htmlにデータを送って
background.htmlでXHRを使うってのは前情報で知ってたんだけど、
実際にそのデータをやり取りする経路の追い方がわからなくて
かなりハマりました。


結論から言うと、

content.jsとbackground.htmlのログ出力場所は別だった!

ΩΩΩ<な、なんだってー!

ということですね。
じゃあどこなんだよ!って事で以下SSを交えて簡単に説明。

<---- 前提 ---->
以下で語る事の前提として、
ログの出力とはconsole.logで吐き出す文字列の事を指します。
<- 前提ここまで->

content.jsのログが出る場所は説明するまでもなく、
manifest.jsonでextensionの挙動を許可しているURLのページですね。

















extensionを許可しているページ上で右クリックして「要素を検証」を選択

















自分はベータ版のChrome5を使ってるので画面上部に
Consoleのタブがありますが、安定版の4を使ってる人は
左下の左から2番目のボタンを押せばコンソールが出てきます。

content.jsでログを出力すればここにログが出ます。
まぁこれはみなさん周知の事実かと思われます。
問題は次ですね。
background.htmlでログを出力したときにどこにでるか!
それはここでした!
















拡張機能のextensionのアイコンが出ているちょっと右下に
「 動作中のページを調査:」って書いてあって、
その下にbackgroundページに指定しているhtmlのファイル名がありますね?
そこをクリックすると!

ジャジャーン!


















Web Inspectorが起動します!
ここでコンソールを表示すると
















background.htmlで動いてるscriptのログが出力されます!!
画像だとsyntax errorでてますけど・・・w

という感じで、content.jsとbackground.htmlそれぞれでログを出力すると
上記の二つの場所でログが出るので、
それがわかればcontent.jsとbackground.htmlとの
データのやり取りは制覇したも同然です!

「ファイル名を指定して実行」って使ってる?

0 コメント

自分は最近使うようになりました。
と言っても、せいぜいブラウザを立ち上げる時位なんですけど。

んで、結構コイツが便利なので、
自分が起動したいアプリやらフォルダも
起動できるようにならないかなーと考えたので
ググってみたら、答えはありました。

「ファイル名を指定して実行」をランチャー化するカスタマイズ方法と起動コマンド一覧

詳細は紹介した記事に書いてあるので割愛しますが流れとしてはこんな感じ。

任意のフォルダを作成

作ったフォルダに対して起動したいアプリやフォルダのショートカットを突っ込む

作ったフォルダを環境変数の設定でPath設定する。
(かなりぶっきらぼうに書いたのでよくわからない人は
上記リンク先を読んでください。ここより具体的に書いてあります。)

まだ、自分も使い始めてないのですが多分コレかなり良いです。
何が良いかというと、「ファイル名を指定して実行」の時に
②で作ったファイル名を指定すれば、起動したいものが
起動出来るようになるんですが、ショートカットを作成したあとに
そのショートカットの名前を変更してやれば、
好きな単語で好きなアプリが起動できる訳です。
例えばDropBoxのフォルダのショートカットに対して
「db」と名前を付けてやれば、「db」でフォルダを開くことが出来るわけです。
これってすごくないですか?

注意点としては、Windowsのシステム上先に登録されている文字列を
ショートカット名にしても、自分が指定したショートカットではなくて
先にシステムで割り当てられてるモノが起動するってことですね。
ちなみにシステムで割り当てられてるコマンド一覧は下記リンクに書いてあります。

ファイル名を指定して実行 まとめ


と、オレスゲー事に気づいちゃった!みたいな勢いで書いてますけど、
かなり既出の情報ですね。ググれば情報がザクザク出てきます。
でもここまで書いて記事削除ってのもアレなんでアップしちゃいます!


家でゆっくりやれるときとかは余り使う必要ないかもしれませんが、
電車の中でノートパソコンやネットブックをイジる時には使い勝手がいいはず!

SELECTして検索したの結果のX行目からY件取得する方法

0 コメント

SQLがスゴイ!
っていうか自分がSQLについてしらなすぎなだけなんですけど。

今回すごいって思ったのはLIMIT と OFFSET

この二つを以下のように使うと、

SELECT *
    FROM TABLE名
        LIMIT Y OFFSET X;
       
タイトルで書いた
SELECTして検索した結果のX行目からY件の結果を取得することが出来る。
ちなみにこれはPostgreSQLでのお話(自分が触ったのはVersion8.3.7)

Oracleだと結構面倒くさいみたいですね。
参考記事
Oracleでlimit offsetもどき - よねのはてな


そんな訳でSQLを勉強しようと思いました。
最近は@sikusimaさんフォローされてつぶやきを見たりしてるだけですけど・・・
Togetter - まとめ「@sikushima 氏のDB語り:適材適所/ストアドプロシージャ/ORM編」


@sikusimaさんが以前つぶやいてた
現場で使えるSQLを会社から拝借してきたので勉強しよう。




トリガーを使って更新日時を自動で挿入するとかそんな感じのも
汎用性が高そうだから今度調べよう

Mapに格納されてる中身を全部みたい!

0 コメント

というわけでググってみたら素敵な情報がありました。
中身まんま転載ですがご紹介。

for (Map.Entry entry : userInfoMap.entrySet()) {
System.out.println("key:" + entry.getKey() + " value:"
+ entry.getValue());
}






元記事はこちらです。

 Mapの中身を一気に出力 - メモ

書評:「結果を出す人」はノートに何を書いているのか

0 コメント

書評というほど大げさなものでもないけど、
今後ちょこちょこ書く予定なのでタイトル統一の意味を込めて。



見た目どおり?ものすごく軽く読める本だった。
ノートに関連するtipsや著者の方法論等を並べてある本。
通勤時間に読むにはちょうど良いかも。
デジタル 対 アナログ(アナログTUEEEEEEE!!
の構図をやたら強調しようとして必要以上にデジタルをディスってるように見えて、ちょっとモニョった。
モニョりつつも以下気になった点とか。試してみようと思った事。


■母艦ノート・メモノート・スケジュールノートにノートを分ける。
    ・自分の場合は人と会ったり、外出したりするケースは少ないので、
       スケジュールノートはなし。
    ・今使っているノートはモレスキンなので、メモノートを付箋で代用してみる。
    ・現在運用中だが、定番のモレスキンだと若干サイズが小さいので、
    ・書き込める余白が少ないのが難点。
    ・もうちょっと大きい母艦ノートを検討してもいいかもしれない。
       余白が大きくなると1ページ1項目の原則を破ってしまいそうだけど・・・

■気になった文具用品
    ・デートスタンプ
    ・紙用マッキー極細
    ・シャーピー
    ・ドットライナー
    ・マルチワークケース






Eclipseのプロジェクトの分け方

0 コメント

今関わっている案件で非常に困っていたのでつぶやいてみたら、
いろんな人が反応してくれたのでまとめてみる。
ちなみに以下の話は基本的にWebアプリの話です。



@alpha_pzさん
・ウチだとWAR単位で分けてます(ω・ WAR複数作るか判定打ち合わせなんてのもたまにやります。


・1システム=1WARもありますが、機能数が多くなりそうだと最初に分解することにしてます。一番わかりやすいのは業務本体と、マスターメンテを分けるとか(ω・


@michio009さん
Eclipseでプロジェクトを複数に分割するのは、他のプロジェクトで利用できるであろう共通部分を分離して部品化しつつ、その部品自体も使いながら改良していく場合が多いと思います。自分はそうして共通部分をいろいろ使いまわしながら進化させていってます。


リアルタイムで返信を下さったのはお二方でした!
これらを参考にしながら実際の業務でのプロジェクトの分け方を決めました。


またリアルタイムではないのですが、メールで反応してくれた方も。
ちょっと長文ですが非常にわかりやすい説明でした。

@mon104さん
★システム(サブシステム)
   ☆1つのWebシステムとして纏めれるもの 

     → プロジェクトからWARファイルが作成できる
     例えば、1つのシステムに対して各チームがサブシステムを作ってて
     1つのプロジェクトにコミットしてたら・・・わやだわね。
     各サブシステム単位でWARファイルにしたら、各々デプロイできるし、
     EARファイルに纏めることもできるしねぇ!
     (バージョンアップや拡張はブランチ・タグで)

★Utility
 ☆1つのJarファイルとして纏めれるもの
   微妙かもしれないけど、システムが大きくなればなるほどソースは膨大になるので、
   ユーティリティ系はJarにしちゃえ!ってときとか。
   あとソースを触られたくないもの。独自のFrameworkとか。
   ん?微妙?

★スタブ(モック)
 ☆テスト時で必要なスタブ(モック)
    テストが終わったらいらないよねぇってなるものとか・・・。
    仮にXMLから動きを読込むのであれば、各システムに
    XMLを配置すればいいしねぇ!微妙か・・・?

★サーバの設定
 ☆各設定ファイル
    server.xmlや必要なJarファイルとかを管理。
    そのプロジェクトに中にantでローカルのサーバに

 必要なものをコピーするようにしておくとか。
   (JBossの時に使ったよ!サーバが動かないとか色々でて面倒だったから
    チェックアウトしてant叩いて設定完了みたいな!)
    でも・・・ EclipseでWTPとかの場合は必要ないか・・・。
   これも微妙か・・・。



皆さんありがとうございました!




明日こそソフトバンクショップ行こう・・・

localStorage勉強中

0 コメント

先日のHTML5とか勉強会に刺激を受けて、
サボってたChrome extensionの開発を再開。

というわけで最近はタイトルにあるlocalStorage周りをイジってます。

今やりたいことが、

①オプションページで設定保存

②コンテントスクリプトで設定読み込み

③ページ上で保存された設定で機能発動

って流れなんですけど、軽く調べたところ
コンテントスクリプト上からだと、
localStorageに素直にアクセスできないことが発覚。

localStorageをつかってエクステンションの設定を管理する

上のサイトさんにサンプルが置いてあって見事に解決法も載っちゃってたりするので、
こりゃラッキー!・・・と思ったのですが上手くいかず。

どうもlocalStorageへ値をセットするコードが上手く動いてないらしい。
上記サイトで
localStorage["userId"] = document.getElementById("userId").value;
としているところを
window.localStorage.userId = doument.getElementById("userId");
に変更したら無事にスクリプトが走るようになりました。

と書いてて改めて自宅で確認してみたところ修正しないでも動きました。
コピペミスですね。ごめんなさい。
なんせiPhoneからPCに手打ちでコピペしたもので><

localStorageは値のセット方法が複数あるのが若干わかりずらいですね。
削除方法も
delete localStorage.hoge;
なんてやり方もできたりしてもうなにがなんだか。

というわけで、今はlocalStorageの値をコンテントスクリプトに渡してやる方法を勉強中です。
これの実装が終われば、あとは最大の難関設定変更のUIを
やって自分が作ろうとしてるextensionが公開できるかなー・・・と思ってますが、

UIは今以上にドハマりしそうなので頑張ります。

Pocket Wifi欲しいなぁ・・・

ポケットベガス攻略! -追記 高みを目指して +雑感

0 コメント

仰々しいタイトルですけど、そんなに重いものではないです。
ポケットベガスをプレイしてて、前回紹介した方法以外に点数を余分に取得出来る方法を見つけたのでご紹介しようかなと。

■最後の仕上げはキッチリとネッ☆
どういう事かは下のSSを見て頂ければ納得して頂けるのではないかと。





































はい。そういうことなんです。
一応言葉で説明すると、場札にもう既にKが頂点の列が出来てて、且つ空いている場がある場合、Kが頂点の列を空いている場に動かすと点数がゲットできるんです。但し、点数がゲット出来ない場合もあるので正確な条件は申し訳ないですけどわかりません。
というわけでクリア状態一歩手前の段階で一旦手を止めて、Kをどこでも良いから空いてる場所へ動かす事によって更に得点がゲットできるよ!というお話でした。


でも、実際にはスピードが最優先なのは変わりません。
前回ご紹介した方法と今回ご紹介した方法を如何にスピードが求められる中でこなしていけるかというのが1位を目指す道だとオレは考えます。
まぁ、最近ではだいぶランキングが落ちて50位前後をウロチョロしてるようなプレイヤーの妄言なので信用に値するかは微妙なところがあります。
(せめて10位以内に常駐できるようになればもうちょっと自信タップリに語れるんだけどなぁ)


あとちょっとだけ最近思う事を。
AppBankアプリのクチコミについてです。

「我思う、ゆえに我あり」 ~ 4人のAppBankアプリへの思い ~

Appbankアプリのクチコミ機能に待ったをかける人がいてもいいんじゃないか? | 覚醒する?Club D&#039;s iPad&amp;iPhone 3GS - CDiP 1.02
AppBank 1.31がいよいよ登場 &#8211; 開発秘話など | 普通のサラリーマンのiPhone日記 
AppBankアプリ開発メンバーhiro45jp氏の開発秘話! - もとまかのiPhone・iPod touch戯れ日記 
Twitter / appbank: @RyoAnna 実は私のクチコミに対する思いもちょ ...
Appbank氏に訊く 0Appbankアプリのクチコミ機能について 0 | 覚醒する?Club D's iPad&iPhone 3GS - CDiP 1.02
 
とまぁみなさんクチコミに対して思い思いの事を語られて議論が進んでるわけですが、オレが思う事を少しだけ書いてみようかと。
まぁ、実際にはAppBankアプリのクチコミ機能を全く使ってないお前が言うなという話なんですが。
 
個人的にオレはすごく良い機能だと思います。
なぜなら投稿数・投稿内容を見る限りだとiPhoneアプリに対するクチコミのプラットフォームを確立しつつあると感じるからです。

クチコミがAppBankのレビューに対して肯定的な意見だらけのクチコミであるならばソレは信用に値しないでしょう。ですが現在の所はAppBankの記事・アプリの内容に対して否定的・建設的な意見が出ているのであれば、それはクチコミのプラットフォームとして機能しているのではないかと考えるからです。

なにが言いたいかというと、iPhoneアプリ開発に多少携わってる人間として、アプリに対して意見が出てくる場が多いという事実は歓迎すべきことであるということです。

とにかく何が言いたいかというとAppBank頑張れ!オレは応援してるぞ!ということです。