プログラム: 2007年10月アーカイブ

Gadgetでの背景透過

| | コメント(0) | トラックバック(0)

透過PNGを使う場合、透明度を指定すると透明度をかけた部分と
かけてない部分で位置がずれる。
(透明度をかけた部分だけ左上にずれる)

四隅に影をつけてたのでひげが生えたように。。。

vista gadget透過背景動的変更

| | コメント(0) | トラックバック(0)

HTML
<g:background id="bg_dock" src="images/bg_dock.png"
style="position:absolute;z-index:-1;background-repeat:no-repeat;" />
<g:background id="bg_undock" src="images/bg_undock"
style="position:absolute;z-index:-1;background-repeat:no-repeat;display:none;"
/>

JS
System.Gadget.onDock = function () {
$('bg_dock').style.display = 'block';
$('bg_undock').style.display = 'none';
}
System.Gadget.onUndock= function () {
$('bg_dock').style.display = 'none';
$('bg_undock').style.display = 'block';
}

なぜかstyleではなく、head部に「#bg_dock{...}」で記述すると
背景ではなく、すべての要素の上に表示された。

「<g:background...>」と「<g:background... />」では動作が違う。

「System.Gadget.background」は使い物にならない。
(非透過 or dock時の背景がfloat時に完全に隠れる場合には使えるかも)

あ~、はまった、はまった。

JSでHashを作るときのtips

| | コメント(0) | トラックバック(0)

最後の要素の後に「dummy:null」を追加。

{
hoge : 'huga',
foo : 'bar',
dummy : null
}

こんな感じ。
(もちろんkeyにdummyを使う場合は別の名前で)

IEはhash(Array)の最後の要素の後に「,」があるとエラーになるが、
これを入れておけば必要な要素はコピペしたりしてもエラーにならない。
(上記の「dummy : null」が無い形はエラーになる)

「d:0」とかの方が短くて良いかな。。。

滑稽図

| | コメント(0) | トラックバック(0)

gadgetで
<a href="#" onclick="hogehoge()">click</a>
からDOMの書き換えができないと首をひねっていた。
DOMからの値の取得はできるので、何でかと思ってたけど、まあ当然。


gadgetってclickでの画面更新がわからないからなあ。。。

vista gadgetでわかったこと

| | コメント(0) | トラックバック(0)

sidebar内の幅の動的変更はほぼ無理。左上を始点に右下へ幅が変わる。
(ただし、いったんsidebarから出て戻れば、うまく反映される)

自分でsidebar内から出て行くのはたぶん無理。
(これができればsidebar内で動的に幅が変えられるけど。。。)

背景を透過させればsidebarからはみ出しても割りと普通に動く。

sidebarから出た状態なら幅変更は普通に効く。
(「document.body.style.width *= 2」的な操作)

Flyoutは割と実用的。画面内に収まるようにうまく調整してくれる。
ただし、Flyoutを閉じる操作は非直感的。
Flyout内に閉じるボタンがあったほうがいい。

System.Debug.outputStringはDebugViewで拾える。
exeをたたくときに右クリック->管理者権限で実行を行うこと。

sidebarから出た後、自分で動き回るのはたぶん無理。methodないし。

とりあえず、ここを読め。
http://msdn2.microsoft.com/en-us/library/aa965852.aspx

firefoxにflashがインストールできないとき

| | コメント(0) | トラックバック(0)

最新版のflash playerをinstall後、古いflash playerをinstallすると
firefoxでflash pluginがインストールできなくなる。
flash installerがfirefoxのinstallディレクトリを認識してない感じ。


rebootしてもだめだった。firefoxの再installしたら解決。
「about:plugins」なんてあるんだね。始めて知った。

ある認証サーバの場合

| | コメント(0) | トラックバック(0)

お客さんから「認証サーバがメンテナンス中だと、私が組んだソフトもエラーになるので何とかしてくれ」といわれる。
確かにエラー補足をほとんどしてなかったので(ほとんど手探りでコード組んだので仕方ない部分もあるけど)申し訳ないなぁと思いつつ、メンテナンスの頻度を聞く。
「こないだもあったけど、次も近々予定されてるので修正間に合う?」と返された。

あ~、まだ公開されてから一ヶ月たってないんだけど。。。
二ヶ月のうちにメンテナンス2回、しかも一回1~2時間。。。

とりあえずこっちの状況もあって修正が間に合いそうにないので、直近の修正はエラーがうまく捕捉出来るかとかの検証に使わせてもらう。
検証コードを書いてメンテナンス開始を待ってたら、予定時刻数時間前に「今回のメンテナンスは時間を短縮して、数日後もう一度メンテします」との連絡。

あ~、このタイミングでスケジュールの変更ですか。。。
しかも公式サイトにはアナウンスなし。。。

まあ、それでも最悪検証コードの確認できれば良いか、と思って待ってたけど、なぜかエラーは起こらず既存コードも普通に動作。

サーバ止めてのメンテナンスは次回持ち越し?
今回は結局普通に動いてたから、アナウンスいらなかったのでは?

なんか運用体制にいろいろ疑問が。
こっちが突っ込むことじゃないけど、ほんとに大丈夫なんだろうか。

cygwinでssl接続

| | コメント(1) | トラックバック(0)

したかったので、調べてみた。
ssldumpなるものがあるらしいが、
結構古いらしく微妙。

結果perlのIO::Socket::SSLでたたく。
cpanのinstall Net::SSLeayで結構詰まるも適当に検索して解決。

実際たたくコードはこんな感じ。
telnet風に気軽にsslたたければいいのに。。。

use IO::Socket::SSL;

my $client = new IO::Socket::SSL("example.com:https");

if (defined $client) {
print $client 'GET / HTTP/1.0';
print <$client>;
close $client;
} else {
warn "I encountered a problem: ", &IO::Socket::SSL::errstr();
}

Windows SDK

| | コメント(0) | トラックバック(0)

ガジェットが作りたかったので落とす。
1300MBの表示にびびる。
それが15分程度で落ちてきてさらにびびる。

UTF8 -> JIS(ISO-2022-JP)変換(完成コード)

| | コメント(0) | トラックバック(1)

結局こんな形に。
もちろん半分はパクリ。
下半分はよくある人名漢字。

2008/07/10 「半角「」ってなに?」の修正を反映

Thunderbird移行

| | コメント(0) | トラックバック(0)

なんとかoperaからメールが読めるようになったので
内容バックアップしてThunderbirdへ移行。
基本的には「opera Thunderbird」とかで
出てきたサイトを参考にすすめる。
ただ、アドレス帳のCSV形式は若干違った。
(一度Thunderbirdからアドレス帳をバックアップして確認)

結構うまくいくもんだ。

UTF8 -> JIS(ISO-2022-JP)変換

| | コメント(0) | トラックバック(1)

結局変換テーブル使うことに。
「機種依存字」、「正字」、「旧字」、「NEC特殊文字」、「NEC選定 IBM拡張文字」、「IBM拡張文字」、「はしご高」、「たち崎」、「つち吉」みたいなので検索して、変換の例として出ている文字を片っ端から突っ込む。

ちなみに、この辺のことを解決できそうな方法としては、iconvで「ISO-2022-JP//TRANSLIT」と指定する方法があるけど、なんか微妙にうまくいかない。
コンソールからはうまくいくのに、mojaviに組み込むとなぜかだめ。
(文字コードにかかわりそうな内部変数はいろいろいじった)
$_ENV['LANG']を見てるのはわかったけど、それだけじゃないらしい。
まあ、これも「たち崎」が変換できなかったので追っても仕方ないけど。

結局丸一日くらい悩んでる気がする。いい加減飽きたのでもういいや。

2008/07/10 「UTF8 -> JIS(ISO-2022-JP)変換(完成コード)」に完成形のコードUP

UTF-8で組んだときの罠

| | コメント(0) | トラックバック(1)

メール送るときに化ける。
メールもUTF-8で送れれば良いけど、携帯とWebMailを考えると難しい。
PHP5系ならISO-2022-JP-MS用パッチがあるけど、PHP4系はむり。
もちろん、ISO-2022-JP-MSで完全に回避できるわけじゃないけど、日本語環境だけなら割といけると思う。
「nkf --ic=utf8 --oc=cp50220」って方法もあるけど、nkfとのデータのやり取りめんどくさい(下手すると穴開くし)

結局変換テーブルかなぁ。。。

2008/07/10 「UTF8 -> JIS(ISO-2022-JP)変換(完成コード)」に完成形のコードUP

apache logの統合

| | コメント(0) | トラックバック(0)

非連続的にバックアップしたログをひとつのファイルにしたい。
各ログファイルは期間的に重複している。
単純に全部まとめると300MBくらい。

use strict;
use warnings;

my %mons = (
'May' => '05',
'Jun' => '06',
'Jul' => '07',
'Aug' => '08',
'Sep' => '09',
);

my $DIR = 'hogehoge/hugahuga/';
my $ALL = $DIR.q[all.txt];

open( my $all_fh, '>', $ALL ) or die( $ALL, $! );
my %all_check;
my $trex = qr{ \[ (\d+) / (\w+) / (\d+) : ([\d:]+) \s+ \+ \d+ \] }mosix;
foreach my $base ( get_dirs( $DIR, sub { -d shift } ) ) {
my $dir = qq[$DIR$base/var/log/httpd/];
foreach my $file ( get_dirs( $dir, sub { ( shift ) =~ m{^access} } ) ) {
open( my $fh, qq[$dir$file] ) or die( qq[$dir$file], $! );
while ( !eof( $fh ) ) {
my $line = scalar <$fh>;
next if $all_check{$line}++;
print $all_fh $line;
}
close( $fh );
}
}
close( $all_fh );

sub get_dirs {
my $dir = shift;
my $yield = shift;
opendir( DIR, $dir ) or die( $dir, $! );
my @dirs = grep { &$yield( $_ ) } ( grep !m{^\.\.?$}, readdir( DIR ) );
closedir( DIR );
return @dirs;
}

まずこんな感じのコードにかける。
ちなみに、このとき使用メモリは最大140MBくらい。
結果出力したファイルは60MBくらいになった。
(291313行)

後は適当にソートしてひとつのファイルにしてanalyzerにかけておしまい。
hashにガンガン値を突っ込むからメモリ的にきついかと思ってたけど、
思ったより現実的な時間で終わった。
(実ファイルの二倍ちょいのメモリ使用量って結構少ない)

なんでfindとsortとuniq使わなかったんだろうねぇ。。。

kagemaiをruby 1.6で

| | コメント(0) | トラックバック(0)

いまさらながらruby 1.6環境に影舞を入れる。
しかもmysql 4系に。

影舞自体はむしろ1.6環境のほうが入れやすいが
(1.8だとlibの中をいじる必要あり)
dbi+mysqlを入れるのに手間取った。

ruby-dbi
バージョンは一応最新版の「dbi-0.1.1.tar.gz」。
install方法は普通。
ただし、「dbd/Mysql.rb」を1.6用に書き換える。
具体的には277行から続くcase文を「when '.+': .+」形式から
「when '.+'\n .+」形式へ(「:」を改行へ)置き換える。
とりあえずdbiはこれで動いた。

mysql
最新版を入れると「StringValuePtrって何?」とかいわれて動かない。
(1.7以降で追加されたものらしい)
とりあえずソース内に「StringValuePtr」の存在しない
2.5系の最新版(「mysql-ruby-2.5.2.tar.gz」)を使用。
こっちはバージョンが一致すれば普通に動いた。

なんかわりとどうでもいい知識だなぁ。。。

このアーカイブについて

このページには、2007年10月以降に書かれたブログ記事のうちプログラムカテゴリに属しているものが含まれています。

前のアーカイブはプログラム: 2007年9月です。

次のアーカイブはプログラム: 2007年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.1