2007/06/19

[murmur] しおしお

水を

飲まないと集中できない

暑い

東京暑い

[ギター] トリルのしすぎ

指先に豆ができたんだけど
爪きりでとったのは失敗だった。
皮の薄い部分ができて、これ以上は練習できない。

針で穴をあければよかった。

[murmur] りんご

香りを楽しみたくて買ってきた

でもそろそろ食べてあげないと

[tDiary] カテゴリについて

自分が勘違いしているような気がしてきた

あと、記事を日付ごとにまとめちゃうのが

自分には不便かも。

[tDiary] この記事が変

セクションにアンカつかないし、
カテゴリもアンカにならないし
おかしいことだらけだとおもっていたら、
この記事がBlogスタイルになっていた。
スタイルって記事ごとに変えられるの?
途中でおかしなことしちゃったかなー。
データ直接編集して、Diaryスタイルに戻せないかな。

(追記)
データフォルダの.td2をいじったらtDiaryスタイルにできた。


2007/06/20

[tDiary] tDiaryの横幅

画面いっぱいに広がるのが嫌いだったので

ヘッダーとフッターに<div></div>を入れて横幅を固定にして

テーブルで囲って中央寄せにした

ヘッダ

<table width="100%" height="100%" cellpadding="0" border="0" cellspacing="0">

<tr><td align="center"><div style="width: 740px; text-align: left;">

フッタ

</div></td></tr></table>

あと、カテゴリをカレンダの下に表示したかったので

ヘッダに

<div class="calendar">

<%=category_list%>

</div>

を追加した。

レイアウトをカレンダに揃えたくて

<div class="calendar">そのまま使った。

いずれスタイル定義しなおそう。

[tDiary] 改行

僕の場合は文章を横いっぱいに伸ばしたくなくて

しょっちゅう改行を入れるのだけど、

その場合はレイアウトはどうなるのかな

↑行間があくみたい、気になる…

[tDiary] 改行2

行間があくのは、<p>タグの余白のせいだった。
<p>タグの余白をスタイルで変えるよりは、
文章全体がひとつの<p>タグに収まるほうがよい(感覚的に)。
なので、改行をかけたいときは<br>を使えばいいかな。
↑<br>1つ。

↑<br>2つ。
<p>と微妙に間隔が違うじゃないか…

[Symbian] 追加のプラグイン

NOKIA端末で端末の低レイヤな機能を使いたいとき
例えば、内線電話(VoIP)をかけるときなんかに、
SymbianのSDKそのままじゃ駄目で、
追加のプラグインが必要になる。

プラグインは海外のForum NOKIAにある。
Forum NOKIA
今のところはココ
なかったらばココから"plugin"なんかで探して。
いま、この記事に自動で<p>タグが付かなかったんだけど、なんか条件があるの?

[Symbian] VoIPアプリケーション

こんなクラスを作って
VoipClass.h
#ifndef __VOIP_CLASS__
#define __VOIP_CLASS__

#include <e32base.h>
#include <MPhCltExtPhoneObserver.h>
#include <CPhCltExtPhoneBase.h>
    
class CVoipClass : public CBase, public MPhCltExtPhoneObserver
{
public:
    static CVoipClass* NewL();
    virtual ~CVoipClass();
private:
    CVoipClass();
protected:
    void HandleDialL(const TInt aStatus);
public:
    void PrepareDialL();
    void EndDial();
    void DialVoipL( const TDesC& aTelNo );
private:
    CPhCltExtPhoneBase* iPhoneClient;
    TBuf<20> iBufTelNo;
};

#endif /*__VOIP_CLASS__*/

VoipClass.cpp
#include "VoipClass.h"
#include "COEMAIN.H"
#include <TPhCltExtPhoneDialData.h>

CVoipClass::CVoipClass()
{
}

CVoipClass* CVoipClass::NewL()
{
    CVoipClass* self = new (ELeave) CVoipClass;
    return self;
}

CVoipClass::~CVoipClass()
{
}

void CVoipClass::HandleDialL(const TInt aStatus)
{
    if(aStatus == KErrNone) {
        //handles success here
    } else {
        //handles error here
    }
    EndDial();
}

void CVoipClass::DialVoipL( const TDesC& aTelNo )
{
    iBufTelNo = aTelNo;

    TPhCltExtPhoneDialData iPhoneDialData;
    iPhoneDialData.SetCallType(EPhCltCallVoIP);
    iPhoneDialData.SetTelephoneNumber( iBufTelNo );
    iPhoneClient->DialL(iPhoneDialData);
}
void CVoipClass::EndDial()
{
    delete iPhoneClient;
    iPhoneClient = NULL;
}

void CVoipClass::PrepareDialL()
{
    if(iPhoneClient) {
        EndDial();
    }
    iPhoneClient = CPhCltExtPhoneBase::NewL(this);
}

どこかで
iVoipClass = CVoipClass::NewL();
しといて

こんな風に使う
CleanupStack::PushL( iVoipClass );
iVoipClass->PrepareDialL();
iVoipClass->DialVoipL( _L("1010") );
CleanupStack::Pop( iVoipClass );

[tDiary] スタイルの変更

スタイルは設定画面から変えられるんだね。
拡張するときは、themeフォルダに
適当に入れておけばいいのかと思ったら
そのとおりだった。

適当にタイトル画像とかを変更してたのだけど、
いつのまにか、ボーダーがくすんだ色になってしまった。

まあ、スタイルシートを拡張するときに、
defaultからコピーするつもりでtDiaryから
コピーしてしまっただけだったけど

とりあえずタイトルの修正だけはヘッダを利用してやった
ヘッダが汚れてきたから、
あとでスタイルシートのほうにうつさないとな。

[tDiary] タイトルを角丸にする

アンチエイリアスされた角丸テーブルを

スタイルシートだけで実現するWEBツール

を使って、タイトルの角を丸くした。

でも目立たないね。

[tDiary] ナビゲーションをフローティング

ナビゲーションとタイトルを重ねた。
といっても角丸のテーブルに入れて、
背景色をあわせた、だけ。
ヘッダでやるのはもう限界がある。
トップ以外のページだとフローティングじゃなくなるし。
↑注:勘違いでした。リロードしてなかっただけ

何度も繰り返すけど、
そろそろスタイルシートに手を入れないとね。

[tDiary] html_anchor.rbをカテゴリに

適用しようと思ったけど止めた。
だってhtml_anchor.rbって
tdiary.rb本体からアンカ作るときに呼ばれてるんだもん。

つまり、カテゴリのアンカ作るときには呼ばれない
じゃあカテゴリのプラグインの方をいじったらいいのか?

というわけで→category.rbをいじる。
17kbかー、結構大きいな。どこから手をつけよう

まず"category="で検索して、アドレス指定箇所を探す
make_anchor()がそれっぽいな。
ここで生成されるアンカを
?category=○○ → category_○○.html に変更

次にmod_rewriteに次の行を加える
RewriteRule ^category_(.+)\.html$ index.rb?category=$1
ていうかこれで四半期とかの対応の仕方分からないのだけど
教えて>エロイ人。

とりあえず四半期とかの対応は後にしよう

[inside] twitterに更新通知

プラグインでできるというのでやってみた
どうなの?

update( status )でencodeに失敗する
encodeなしでやったらNet::HTTP::Postにいろいろ無くて失敗。
むきゃー。

なんかNet::HTTP::Postにbody=がないとかいわれる
ロリポップ限定特有の現象?

ほかにもNet::HTTP::Post.set_formとか使えないので、
Net::HTTPでポストするように変更したら動いた

Net::HTTP::Post.basic_authがないので、
require 'base64'して自前でBASIC認証のヘッダを追加

疲れた


2007/06/21

[murmur] 交通安全協会

交通安全協会の恐るべき実態を鵜呑みにすれば
入る価値なしの協会なのかな?

[tDiary] カレンダーのスタイル

オレンジ色にして枠消してタイトルと一体化
ちょっと満足してきました

[tDiary] カテゴリを静的html化

yearとかmonthとか対応してなかったので、やった
ReqriteRuleに条件とか追加できるか分からなかったのと
";"を含めたURLがなにやらエラーになってしまったので
昨晩は放置してた

結局RewriteRuleを3分割にするのと
(上から適用されるんだよね??)
";"を適切にエスケープ(しなきゃいけないんだよね??)
で、無事カテゴリもhtml化できた

RewriteRule ^category_(.+)_year_(.+)_month_(.+)\.html$ index.rb?category=$1\;year=$2\;month=$3
RewriteRule ^category_(.+)_year_(.+)\.html$ index.rb?category=$1\;year=$2
RewriteRule ^category_(.+)\.html$ index.rb?category=$1

あとはcatogory.rbの出すアンカのセパレータを"_"に変えて
後ろに".html"をつけるだけ。それは後でやる。

(追記)
やった。出先だとウェブFTP使うから面倒だったんだけど
わりと時間が空いたので(それにコードも単純だったし)

[inside] Google Analysticでアクセス解析

Googleが提供するアクセス解析である
Google Analysticを導入した
思ったより軽い

解析を始めるには、トップページを指定して、
そこに解析用のJavaScriptを埋め込まないといけない
tDiaryならskelフォルダのfooter.rhtmlに埋め込むといいと思う

このサイトでは、トップをhttp://www.bibibi.info/dにしたら駄目で
http://www.bibibi.info/d/なら正常に稼動した
最後のスラッシュを省いたときに補完してたのって
ブラウザの機能だったのかな

ちなみに
http://www.bibibi.info/d/index.htmlも駄目
mod_rewriteにそんな設定はされてないから

[tDiary] エントリのyyyymmdd→yyyymmddHHMM化

要するに、エントリを細分化したい。
なんでかっていうと、カテゴリからのリンクをクリックしたときに、
エントリの途中に飛ぶと、一瞬どこを見ていいか困るから。

つまり、ブログ化なんだけど
BlogKitのほうは更新のたびに意味無く日付が
インクリメントされてるので、自前での実装を考える。

デメリットは、処理が重くなる
Array#eachって重いんだっけ?たしか

じゃあひとまずindex.rbの解析から
index.rbは処理に応じて
tdiary.rb内の適切なオブジェクトの
initializeを呼ぶことで各処理を実装している

日記を追加しているのはここっぽい
TDiaryAppend.initialize

定義はそれぞれ
class TDiaryAppend < TDiaryUpdate
def initialize( cgi, rhtml, conf )

特に気になる箇所は
@diary = self[ @date ] || @io.diary_factory( @date, @title, '', @conf.style )
TDiaryAppend.self << @diary.append( @body, @author )

噛みくだく

@dateってなんだ?

@date = Time::local( @cgi.params['year'][0].to_i,
@cgi.params['month'][0].to_i,
@cgi.params['day'][0].to_i )
yyyymmddのみをキーにTimeオブジェクトを作っている
(時刻は無視している)

@ioってなんだ?

class TDiaryBaseで次のように定義されている
@io = @conf.io_class.new( TDiaryBase.self )

@confってなんだ?

TDiaryBase 内で定義されている
attr_reader :conf

TDiaryAppend.initialize( cgi, rhtml, conf )
で渡されている

@diary = self[ @date ] || @io.diary_factory( @date, @title, '', @conf.style )
がやってることって、
self[ @date ] を呼ぶか、無ければ新たに日記を生成してる
self[]( arg )の実装を調べる

def TDiaryBase.[]( date )
@diaries[ date.strftime( '%Y%m%d' ) ]
end

なるほど、Timeオブジェクトを文字列に変換して
それを配列の添え字にしてるのね

追加は要素を増やしたもので上書きして行っているようだ
def <<( diary )
@diaries[diary.date.strftime( '%Y%m%d' )] = diary
end

class Config
@conf.io_class.new の実装は?
require 'tdiary/defaultio' して DefaultIO に任せている
↑じゃあここにファイル名があるね
↑データフォーマットもある

tdiary.rb の
@diaries へのアクセス箇所全てと、
defaultio のフォーマットと
各テンプレの表示コードを改造すればできそう。

[murmur] GPL2ライセンスに関して

コードスニペットは複製物で、それを載せてる場合
複製物の配布に当たるよね

日付の明示はtDiaryの更新月日だと思ってください
あとでLastModified表示しとかないと駄目かな。

あと、著作権元の表示だけど
tDiaryに関してはフッタにあるからいい(だめ?)として
ちまちまいじってるプラグインも製作者に確認とろう。

今、出先だからちょっと待って

[Windows Mobile 6] Windows Mobile 5 からの移植

Windows Mobile 5 で作ったアプリケーションを
Windows Mobile 6 に持ってきてコンパイル

無事通った、けど
実行→○○.exeで問題が発生しました

追うのが面倒なので
空プロジェクト作り直して、
もとのモジュールを追加していくことにした

そのうちエラーの原因も分かるといいな

[murmur] 社会保険庁はボーナス満額

ってのをzakzakの記事で読んだ。

これって文句言ったらまた対応するのはアルバイトなのかな?
で、その人たちへの給料は税金でまかなわれている、という 笑
文句を言うほど使われる税金が増えて、国民が苦しむ構造

ニュー速+の関連スレには反-貧困なんてのが貼られてた。
パレードやるっぽい。集金ビジネスじゃないよね?
バッジがちょっとかわいい。買ってもいいかも

[inside] twitterに更新通知(その2)

昨日は適当な文字列をプラグインから送るテストだったので、
今日はきちんとした更新情報をtwitterに通知してみる

いけるかな?

[inside] twitterに更新通知(その3)

えっと
'status=#{status}' → "status=#{status}"
に変えてもう一度挑戦 笑

[inside] twitterに更新通知(その4)

修正したプラグインをFTPにあげてなかった。
/(^o^)\
今度こそ・・・

[inside] twitterに更新通知のためにプラグインを修正

もとはぺお記すさんのところの、
notify_twitter.rbです

なぜかウチのロリポサーバから使えなくて、
(でも他にそういう話を聞かないので、きっと僕が悪いのだ)
エラーを見た感じだと、Net::HTTP::Post の
bodyなんかが使えないみたいなので
Net::HTTPのみにしました。

def update( status )
    Net::HTTP.start( 'twitter.com' ){ |http|
        res = http.post( '/statuses/update.json', "status=#{status}".toutf8, "Authorization" => "Basic " + Base64.encode64("#{@user}:#{@pass}") + "\n" )
    }
end

kconvとtoutf8って、つかってなかったけど、
使わないほうがいいのかな?
あと、本文最後に" ."をつけてた理由も知りたいです
勉強不足でごめんなさい!


2007/06/22

[murmur] 寝れない

きっと昨日の夜遅くまで起きてたからだ。

[ギター] 薬指が回復

これでまた激しく練習できるけどこんな時間かあ。

[tDiary] メモ

忘れないうちにメモしておこう
twitterへの通知はセクションタイトルが全部送られてしまう。

一番最後のセクションタイトルだけを送るように変えられるなら変える。

あと、HHMM.html化に関しては、データファイルを一個増やして
普段の表示は正式なtDiaryのデータを読み込み、
カテゴリからのリンクだけその独自データに変えたほうがよさそう

だって第三者のプラグインなんかも
本来のtDiaryのフォーマットを期待しているわけで
1つ2つならいいけど、プラグイン入れるたびに
影響範囲を考えたらキリ無い。

[tDiary] twitterへの通知を、最後のセクションタイトルだけに

実験

成功

[Windows Mobile 6] SDK変えたらリソースが読み込まれない

Windows Mobile 6 Professional SDK → Windows Mobile 6 Standard SDK SDK
したら、リソースIDに対して「○○が定義されていません」が出た。
デフォルトで、SDKごとにリソースを生成するみたい。

ソリューションエクスプローラを見ると、
○○sp.rc
○○ppc.rc
があって、SDKによって、片方だけビルドされているのがわかる。

プロジェクトをウィザードで作ったのであれば、
プロジェクト名.hに
次のようなコンパイルオプションがあるはず

#ifdef POCKETPC2003_UI_MODEL
#include "resourceppc.h"
#endif
#ifdef SMARTPHONE2003_UI_MODEL
#include "resourcesp.h"
#endif

とりあえず片方に寄せてみるけど、
固有のUIなんかは使えなくなる。

[tDiary] yyyymmddHHMM.html化(その2)

前回、defaultio.rb を見ればいいことはわかった。
独自ファイルの出力ルーチンを足せないか考える。

defaultio.rb の次の箇所を見ていく
class DefaultIO < IOBase

Append 処理を調べた結果、書き込みにはここを呼んでいる
def transaction( date )

ファイル名は次のようにして生成している
@dfile = date.strftime( "#{@data_path}%Y/%Y%m.td2" )
例:data_path/2007/200706.td2

このファイルをオープンして書き込んでいる
fh = File::open( @dfile, 'r+' )

restore で、ファイル全体をデータに読み込んで、
store で、データの中身を書き込みかな
↑ここ、あまり詳しく読んでない…

つまり、transaction() に
HHMMを付け足した date を渡しても、
tDiaryの正常なデータは作られるってこと。かな。

[murmur] IRコート双眼鏡

IRコート双眼鏡がいかに使えないかを解説してくれている
IRコート双眼鏡の悲劇が面白かった

知らないと買っちゃいそうだよなあ

[Windows Mobile 6] RelayoutDialogによるレイアウト

RelayoutDialog は、渡したダイアログのIDに応じて
レイアウトを調節してくれるAPIだ。

で、Windows Mobile 5の頃なんかは
縦と横のリソースを用意して、
W-ZERO3 と その他の端末(VGAとQVGAに対応)では
拡縮くらいで対応できた。

でもこれから出る Windows Mobile 6 端末は
Advanced/W-ZERO3 [es] (WS011SH)
800x480

X01T
800x480

X02HT
320x240

…鬼だ。鬼が居る。
まあStandard Edition は別と考えてもいいかもしれない

縦横以外にもいくつかのサイズでダイアログ定義して
そいつを RelayoutDialog に渡すようにしないと
レイアウト崩れまくりますよ、というお話。


2007/06/25

[murmur] 濃い野菜

『濃い野菜』には中国産の野菜は使われていないらしい。
お客様相談室に聞いた人がいたんだって。本当かな。
本当だったら、うれしい。


2007/06/26

[Ruby] mechanize.rb

Perl でも使っていた Mechanize
Form へのデータ送信が簡単に行えるけど
malformedなHTMLを与えると、パースエラーで
めちゃくちゃなForm インスタンスが返ることがある

Perl で大丈夫なHTMLでも、Ruby で解析失敗することがある
当然、そのときの解決方法も、Perl のときとは違うので注意

Perl はHTMLを挿げ替える機能があったと思うけど
Ruby の場合は中の HTMLを直接いじれない
そのかわり Form のインスタンスに
delete_field
add_field
があって、クエリを直接いじれるので、
壊れている部分だけそれで対応するのが楽でいいと思う。

現在のクエリは Form.build_query で
文字列として確認できるから、そこみて調整

[murmur] 社会保険庁、ボーナスを自主返納へ

関連ブログ
自主返納じゃなくて、ちゃんと目標額を設定して、
達成率を開示してくださいよ。
謝罪まで、なーなーじゃないですか

[murmur] 中国製の鍋に爆発のおそれ

関連ブログ
野菜だけじゃなくて、鍋まで確認しないといけないのね

[murmur] 加ト吉とかミートホープとか

食肉偽装もそうだけど、その後のコメントにも腹が立つ
消費者は馬鹿だからばれないとか、
安くしろばっかり言いやがって、とか

でも、確かに安ければいいという考え
そればかりをもつ消費者も居るし
なぜか工場で食材を扱う会社を
下においている人も沢山居る

変だよ

僕の理想は、技術者と農家がお互いを認め合って
安心して背中をまかせながら発展していくことなんだけど

[Windows Mobile 6] Active Sync 4.5

ちょっと不安定
まあ、接続先も試作機だからかもしれないけど
普通にビルド→配置したのに配置に失敗
(午前中はできていたのにだよ?)

------ 配置開始: プロジェクト: ○○, 構成: Debug Windows Mobile 5.0 Pocket PC SDK (ARMV4I) ------
ポート 5655 の配置ターゲットへの接続の試みにすべて失敗しました。試行されたアドレス:

169.254.2.1;fe80::8000:60ff:fe0f:e800%6;fe80::5efe:169.254.2.1%2
デバイスのセキュリティ構成により接続が許可されなかった可能性があります。開発用のデバイスに適切な証明書があるかどうかを確認してください。
このデバイスに接続するための正しいセキュリティの設定については SDK ドキュメントを確認してください。

詳細については、Visual Studio ヘルプの接続に関するトラブルシューティング (デバイス) のトピックを参照してください。

結局、端末側の再起動でまたつながるようになった


2007/06/27

[murmur] 的を得る(誤用)

自分も意識せずに使っていたかも。
的を得るは誤用。

こちらのサイトで、 わかりやすく解説してくれています

[murmur] 最近日本への風当たりが

厳しいというか、なめられてるというか
いっそみんなで外貨を買って、
円安進行させてしまえという気になる。

その前に食料自給率を上げないとね。
(円安だと輸入食料が高くなる。
 そもそも日本は食糧を輸入に頼りすぎ)


2007/06/28

[murmur] OpenKODE

ケータイ用語の基礎知識 第328回:OpenKODE は
解説されてるように、要するにAPIセット。

携帯の組み込みプログラムは
固有のコードの宝庫なので
この動きは嬉しいね

ただ、今のOpenKODEにはOpenSL ESといった
いくつかのサブセットが盛り込まれていないみたい。
(次期バージョンで対応予定)
音声機能こそ、標準化して欲しいんだけどね。

[murmur] 加藤幸雄って

このニュースで初めて名前を聞いたけど。
自分の娘や妻が殺されても同じこといえるの?
安全地帯からの識者の意見にどれだけの価値があるの?