2005-01-26
_ userChrome.cssでOffice XP風に(3)
userChrome.cssでOffice XP風にしてみる第3回目.今回は右クリックで表示されるメニューなど細かい部分について.Launchyで任意のアプリケーションが動かないで掲載したスクリーンショットをみて,Launchyの部分がXP風になっていないことに気づく.あと,フレームを利用したページでも,フレームに関するメニューの部分がXP風でない….中途半端なのも気に入らないので,このあたりの修正.
menuitem[_moz-menuactive="true"],
menupopup > menu:hover,
menupopup > menu[open="true"],
menuitem[open="true"],
#frame:hover,
#frame[open="true"],
menu[label="Launchy"]:hover,
menu[label="Launchy"][open="true"] {
border: 1px solid #6c6c6c !important;
color: #000 !important;
background-color: #d2d2d2 !important;
}

前回から修正した部分は,#frameの部分と,Launchyの部分.これで細かい部分もかなり見た目が統一されてきたかと思います.そうなるとほかの拡張も対応させていきたいところ.私がメインで使用している拡張でSageがありますが,このボタン部分も同じような感じにしてみます.
#pageSagePanel toolbarbutton:hover{
border: 1px solid #6c6c6c !important;
background-color: #d2d2d2 !important;
}
#pageSagePanel toolbarbutton[disabled="true"] {
border: none !important;
background-color: transparent !important;
}
私の環境ではSageくらいしか見た目を変える必要のある拡張はなかったのですが,他にも適用させたい場合は,DOM Inspectorでいろいろ探してみるとなんとかなるかと思います.
2005-01-25
_ スクリプトの文字化け問題
perlでとあるデータファイルをCSVに変換するスクリプトを作成していたのですが,ある文字列の部分だけどうしても結果がうまくとれない部分がありました.最初は対象の文字列の単なる転記ミスだたのですが,どうしてもうまくいかない部分がありました.よくよく見てみるとそれぞれの文字列に共通して存在する文字列はカタカナの「ソ」.
早速,Googleで検索してみると,簡単に解決できました.問題は文字コードにあります.
Shift-JISでスクリプトを作成した場合,漢字コード中にメタ文字である「\(0x5C)」が含まれることが原因. 文字化けする文字列一覧より引用
らしいです.この問題を引き起こす厄介な文字は何文字かあって,今回問題になった「ソ」も含めて40文字あります.この文字化けを回避する方法としては,
- スクリプトをEUCなどの文字コードで保存する
- シングルクォートで文字列列を囲む
- 文字化けを起こす文字の後に「\」を付加する
とりあえず回避策として3番目の「\」をつけてみました.これで問題を回避できました.
2005-01-24
_ rel="nofollow"の付加
tDiaryではどこかに自分の日記がどこかでリンクされ,誰かがそのリンクから自分の日記へアクセスすると,そのリンク元が記録される仕組みになっています.この機能はとてもおもしろい機能だし便利なのですが,これに目をつけたSPAM業者が宣伝目的でリンク元を残していくことがあります.最近よく見られるリファラSPAMと呼ばれるものです.
リファラSPAMはそのリンク元を多くのサイトに残すことでGoogleのページランクを上げようとしています.これに対応して米Googleではリンク属性にrel="nofollow"を付加することで,Googleのページランクには反映させずSPAMリンクを無効化する機能を追加しました.この方針についてはYahooやMSNなども支持しています.
というわけで,このサイトでもとりあえずrel="nofollow"をリンク元とトラックバックのリンクに付けてみました.効果があるかないかは分かりませんが,つけていて特に問題もないだろうしね.
_ VBAメモ
ExcelのVBAでグラフを作成しようとして,ひとまず作業をマクロに記録して,そのコードを流用することにしました.作成されたコードはデータの範囲が固定なので,この部分が実際は可変に対応できるようにする必要がありました.
ActiveChart.SetSourceData Source:=NEW_XLS_BOOK.Worksheets(2).Range("L1:L77"), PlotBy _
:=xlColumns
上記のコードはマクロを記録したときのコードの一部ですが,Range("L1:L77")の部分を,可変対応できるようにします.セルの範囲を可変にするにはCells()メソッドを使えばいいことは分かっていたのですが,次のように書くとエラーになりうまく動きません.
ActiveChart.SetSourceData Source:=NEW_XLS_BOOK.Worksheets(2).Range(Cells(1,12), Cells(lngREC,12)), PlotBy _ :=xlColumns
上記のように書くと,
実行時エラー '1004': 'Cells' メソッドは失敗しました: '_Global' オブジェクト
Googleで検索したところ,ExcelファンクラブQ&A集で答えが見つかりました.グラフのデータ範囲が可変の場合は以下のように,ワークシートの指定とセルの指定が必要になるみたいです.
ActiveChart.SetSourceData Source:=NEW_XLS_BOOK.Worksheets(2).Range(Worksheets(2).Cells(1, 12), Worksheets(2).Cells(lngREC, 12)), PlotBy _ :=xlColumns
これでなんとか目的は果たせそうなのですが,Excel VBAはどうも私には性に合わないみたいです…