Posted by lawrhino - 2008.08.04,Mon
イーモバイルのデータ通信カードを買った。
これでノートPCからいつでもネットにアクセスできる。
新にねんプランで購入して値段は9980円と契約手数料。
あと月々1000円で通信量に応じて最大4980円までとなる。
最近は、やりたい事はたくさんあるけど、何か始めようとするととにかく時間が足りない。
人がいないとこに行こうと思うほどに。
技術研鑽の為の情報収集にかける時間さえも惜しいくらい。
そういう意味では優先度の高い目下の問題といえば、今は時間の確保という事になる。
なので今できる時間の有効活用法として情報収集にかける時間を、
例えば通勤途中の電車の中やちょっとした待ち時間などに当てられると考えると
かなり安い買い物かもしれない。
まぁ生まれた時間を使って何か価値ある結果が出ればの話だが。
これでノートPCからいつでもネットにアクセスできる。
新にねんプランで購入して値段は9980円と契約手数料。
あと月々1000円で通信量に応じて最大4980円までとなる。
最近は、やりたい事はたくさんあるけど、何か始めようとするととにかく時間が足りない。
人がいないとこに行こうと思うほどに。
技術研鑽の為の情報収集にかける時間さえも惜しいくらい。
そういう意味では優先度の高い目下の問題といえば、今は時間の確保という事になる。
なので今できる時間の有効活用法として情報収集にかける時間を、
例えば通勤途中の電車の中やちょっとした待ち時間などに当てられると考えると
かなり安い買い物かもしれない。
まぁ生まれた時間を使って何か価値ある結果が出ればの話だが。
PR
Posted by lawrhino - 2008.07.12,Sat
日本のインターネットが終了する日
今まで携帯の製造番号を送信する時、一切気にしたこと無かったけど
実はこんなことになってたとは。。。
どういう話かっていうと
Docomoの携帯電話はそれぞれ『契約者固有ID(個体識別番号)』というのを持っていて、
これまでは携帯からWebサイトを訪れる際に、Docomo公認のサイトを除いて、
ユーザの許可なくそのIDを送信される事は無かったのだけど、
これからは自動で全てのサイトに送信されるようになった。
ということらしい。
何の為に?というと青少年のネットの閲覧の規制に役立てる為だそうだが、
これによる影響はかなり大きいようだ。
まず広告事業者などあらゆるサイトに埋め込まれた事業者によって、
閲覧者の情報を集められることになる。
それこそ「何時何分にこのIDの携帯のユーザはこのサイトを見た」
というレベルで集められる。
もちろんアダルトサイトのこのページを見たという情報も。
つまり趣味や趣向が丸裸になるかもしれないって事。
ただこの時点ではリアルな本人の名前、住所といったプライバシーと
紐付くわけではない。
しかし他の様々な条件が重なるとその限りではない。
特定のサイトしか見に行かないという人なら構わないかもしれないが、
いろんなサイトをサーフィンするような人だと、その確立はグンと高まる。
また、識別IDを利用したクイックログインを利用して
サイトにログインする事も多いと思う。例えばGmailなんかがそうだよね。
あの場合は通常、識別IDを送るかどうか尋ねられるが、
それを無許可に悪意あるサイトに送られたりしたら、
勝手に識別IDを集められ、その悪意あるサイトに勝手に成りすましログインを
される可能性があるかもしれない。
まぁこれは調査したわけじゃないので、そんな事がありえるのか不明だけど。
とりあえず悪い可能性は未然に防いでおきたいところだよね。
というわけでDocomoのiモードで個体識別番号を送らないようにする方法。
iMenuから一番下の「料金&お申込・設定」を選択。
↓
iモード設定カテゴリの「オプション設定」を選択。
↓
「iモードID通知設定」を選択。
↓
「通知しない」を選択し、パスワードを入れて「決定」を押す。
これで通知をしなくなるはずです。
デフォルトで”通知する”になってるのが怖いですね。。。
今まで携帯の製造番号を送信する時、一切気にしたこと無かったけど
実はこんなことになってたとは。。。
どういう話かっていうと
Docomoの携帯電話はそれぞれ『契約者固有ID(個体識別番号)』というのを持っていて、
これまでは携帯からWebサイトを訪れる際に、Docomo公認のサイトを除いて、
ユーザの許可なくそのIDを送信される事は無かったのだけど、
これからは自動で全てのサイトに送信されるようになった。
ということらしい。
何の為に?というと青少年のネットの閲覧の規制に役立てる為だそうだが、
これによる影響はかなり大きいようだ。
まず広告事業者などあらゆるサイトに埋め込まれた事業者によって、
閲覧者の情報を集められることになる。
それこそ「何時何分にこのIDの携帯のユーザはこのサイトを見た」
というレベルで集められる。
もちろんアダルトサイトのこのページを見たという情報も。
つまり趣味や趣向が丸裸になるかもしれないって事。
ただこの時点ではリアルな本人の名前、住所といったプライバシーと
紐付くわけではない。
しかし他の様々な条件が重なるとその限りではない。
特定のサイトしか見に行かないという人なら構わないかもしれないが、
いろんなサイトをサーフィンするような人だと、その確立はグンと高まる。
また、識別IDを利用したクイックログインを利用して
サイトにログインする事も多いと思う。例えばGmailなんかがそうだよね。
あの場合は通常、識別IDを送るかどうか尋ねられるが、
それを無許可に悪意あるサイトに送られたりしたら、
勝手に識別IDを集められ、その悪意あるサイトに勝手に成りすましログインを
される可能性があるかもしれない。
まぁこれは調査したわけじゃないので、そんな事がありえるのか不明だけど。
とりあえず悪い可能性は未然に防いでおきたいところだよね。
というわけでDocomoのiモードで個体識別番号を送らないようにする方法。
iMenuから一番下の「料金&お申込・設定」を選択。
↓
iモード設定カテゴリの「オプション設定」を選択。
↓
「iモードID通知設定」を選択。
↓
「通知しない」を選択し、パスワードを入れて「決定」を押す。
これで通知をしなくなるはずです。
デフォルトで”通知する”になってるのが怖いですね。。。
Posted by lawrhino - 2008.03.12,Wed
SearchMe
動画を見ただけなんだけど、素晴らしいユーザーインターフェースだと思った。
MacOSX Leopardのクイックルックを模倣したようなイメージ。
Webアプリの表現力もここまで来たわけだ。
今後Webアプリはどんどん進化していくに違いないだろうけど、
いろんな斬新で直感的なUIに普段から触れて発想力を高めとかないとな。。。
というわけでやっぱりMacが欲しい。
動画を見ただけなんだけど、素晴らしいユーザーインターフェースだと思った。
MacOSX Leopardのクイックルックを模倣したようなイメージ。
Webアプリの表現力もここまで来たわけだ。
今後Webアプリはどんどん進化していくに違いないだろうけど、
いろんな斬新で直感的なUIに普段から触れて発想力を高めとかないとな。。。
というわけでやっぱりMacが欲しい。
Posted by lawrhino - 2008.02.14,Thu
WindowsのSafari3ベータ版がAppleより公開されている。
以下のページでダウンロードできます。
Safari Download
VistaとXPにのみ対応だそうだ。
職場のWin2Kに入れてみたがインストールは完了するものの、
残念ながら起動と同時にアプリケーションエラーで落ちてしまった。
気を取り直して別のXPマシンに導入。こちらは問題なく起動できた。
一発目に起動した時、日本語が全て化けて表示されていたけど、
メニューのEdit > Preferences の ApperanceタブにあるFontを適当に日本語のフォントにした後、
Safariを再起動したらちゃんと表示されるようになった。
当然といえばそうなんだけどフォントの中に「ヒラギノ」が無かったのは残念。
見た目はウインドウから全てMac版と同じような感じなのではないでしょうか。
(本家のSafariを触った事ないので詳しくはわかりませんが)
itunesとかを触った事ある人なら問題なく操作できると思う。
HTMLの表示に関してもMac版に合わせてるみたいで、
チェックボックスやラジオボタンがオシャレな感じ。
動作速度は早いと言われてるけど体感できる程の差は感じなかった。
最近のアップルは非常に勢いがあるが、これでまた余計に勢いを増すかもしれない。
Windowsでitunes、safariに慣れて次回のPC買い替え時にMacへ流れるって具合に。
とりあえず自分は日本語ローカライズ版がリリースされたら本格的に導入してみようと思う。
今はまだメニュー項目等が英語表記なので。
Posted by lawrhino - 2007.07.19,Thu
MSのCSV形式をプログラムから扱う為の
モジュールを作成する事になった。
使用言語はJAVA。
まず出力されるCSVの仕様の定義から
・全てのデータは,(カンマ)区切り。
・文字列データは"(ダブルクォート)で囲まれている。
・文字列中の"は""としてダブルクォート2回でエスケープする
・文字列データ中には,、"、改行コード(
)が含まれる。
処理の肝となる部分は
・文字列中の改行コードの処理
・文字列中のカンマの処理
の2点だろう。
とりあえず単純にそれら特殊文字を考慮に入れずに
1行分のカンマ区切りデータを読み込む処理を作成。
ファイルの読み込みにはBufferedReaderクラスを使う。
次に文字列データ中に含まれる改行コードを考慮に入れた処理を追加する。
判断方法はまず文字列中にある連続したWクォート(エスケープされているので連続している)
をreplaceAll(""""","")を使って全て消す。
空文字列の場合も連続しているが一緒に消しても問題はない。
すると残りは文字列を囲む前後のWクォートだけとなるので、
列ごとに必ず2個ずつ存在することになる。
途中で改行が含まれてる列があればその列は前の1個だけとなるので、
読み込んだ行全体としてはWクォートの数が奇数になる。
その場合は続けて次の行を読み込む。
これを繰り返し偶数になるところまで読み込む事で1レコード分を
読み込める。
主要部分だけを書くと以下のようなイメージ
残るはカンマの処理だがこれも同様の方法で判定できる。
とりあえず改行判定で取得できた1レコード分の文字列を
splitを使いカンマで分割する。
次に分割されたトークン配列の先頭から順番にチェックしていき、
Wクォートが含まれた場合は文字列型データ列とみなす。
文字列型データ列の場合は、改行判定と同じ方法で
Wクォートの数が偶数かどうかで判定。
奇数の場合は途中にカンマが含まれていたと考えられるので
次のトークンと文字列結合を行う。
(この際、カンマを追加する必要がある)
結合された文字列に対して再度チェックを行い奇数であれば
さらに次のトークンと結合。
以下これを繰り返すことで一つの文字列に復元ができる。
実際のコードは以下のような感じ。
あとはこれらを使いやすいようクラス設計をする事で完成。
ただカンマ分割部分は正規表現を上手く使う事でもっとシンプルにできるだろう。
・Wクォートで囲まれたカンマを除く、カンマ
という正規表現が書けたらおそらく一発で分割できる。
ただ正規表現は不勉強ですぐには思い浮かばなかった為、
今回は力技でやってみた。
わかる人いたら是非ご教授ください。
モジュールを作成する事になった。
使用言語はJAVA。
まず出力されるCSVの仕様の定義から
・全てのデータは,(カンマ)区切り。
・文字列データは"(ダブルクォート)で囲まれている。
・文字列中の"は""としてダブルクォート2回でエスケープする
・文字列データ中には,、"、改行コード(
)が含まれる。
処理の肝となる部分は
・文字列中の改行コードの処理
・文字列中のカンマの処理
の2点だろう。
とりあえず単純にそれら特殊文字を考慮に入れずに
1行分のカンマ区切りデータを読み込む処理を作成。
ファイルの読み込みにはBufferedReaderクラスを使う。
BufferedReader br = new BufferedReader();
String line = br.readLine();
String[] cols = line.split(",");
for (int i = 0; i < cols.length; i++)
cols[i] = cols[i].replaceFirst("^"","").replaceFirst(""$","");
次に文字列データ中に含まれる改行コードを考慮に入れた処理を追加する。
判断方法はまず文字列中にある連続したWクォート(エスケープされているので連続している)
をreplaceAll(""""","")を使って全て消す。
空文字列の場合も連続しているが一緒に消しても問題はない。
すると残りは文字列を囲む前後のWクォートだけとなるので、
列ごとに必ず2個ずつ存在することになる。
途中で改行が含まれてる列があればその列は前の1個だけとなるので、
読み込んだ行全体としてはWクォートの数が奇数になる。
その場合は続けて次の行を読み込む。
これを繰り返し偶数になるところまで読み込む事で1レコード分を
読み込める。
主要部分だけを書くと以下のようなイメージ
String line = br.readLine();
while(countChar(replaceAll("""""",""),'"',0) % 2 == 1){
line += "
" + br.readLine();
}
// 文字列中の特定文字をカウントする関数
private int countChar(String str, char c, int start) {
int i = 0, index = str.indexOf(c, start);
return index == -1 ? i : countChar(str, c, index + 1) + 1;
}
残るはカンマの処理だがこれも同様の方法で判定できる。
とりあえず改行判定で取得できた1レコード分の文字列を
splitを使いカンマで分割する。
次に分割されたトークン配列の先頭から順番にチェックしていき、
Wクォートが含まれた場合は文字列型データ列とみなす。
文字列型データ列の場合は、改行判定と同じ方法で
Wクォートの数が偶数かどうかで判定。
奇数の場合は途中にカンマが含まれていたと考えられるので
次のトークンと文字列結合を行う。
(この際、カンマを追加する必要がある)
結合された文字列に対して再度チェックを行い奇数であれば
さらに次のトークンと結合。
以下これを繰り返すことで一つの文字列に復元ができる。
実際のコードは以下のような感じ。
private String[] csvSplits(String line, String delimiter) {
LinkedList results = new LinkedList();
String[] tokens = line.split(delimiter, -1);
for (int i = 0; i < tokens.length; i++) {
if (results.isEmpty() || isCorrectElement((String)results.getLast())) {
results.add(tokens[i]);
} else {
results.add( tokens.removeLast() + delimiter + tokens[i] );
}
}
return (String[])results.toArray(new String[0]);
}
private boolean isCorrectElement(String str) {
return 1 == countChar(str, '"', 0) % 2 ;
}
あとはこれらを使いやすいようクラス設計をする事で完成。
ただカンマ分割部分は正規表現を上手く使う事でもっとシンプルにできるだろう。
・Wクォートで囲まれたカンマを除く、カンマ
という正規表現が書けたらおそらく一発で分割できる。
ただ正規表現は不勉強ですぐには思い浮かばなかった為、
今回は力技でやってみた。
わかる人いたら是非ご教授ください。
カレンダー
プロフィール
HN:
lawrhino
性別:
非公開
最新記事
忍者アド
最新TB
アクセス解析
Template by mavericyard*
Powered by "Samurai Factory"
Powered by "Samurai Factory"