2007/02/23

[Excel]how to remove outerlink

Excelの外部リンクについて。

入力されているデータが小さいのに、ファイルサイズが大きくなることがある。他にも、Excelファイルを開いたときにこのブックには、ほかのデータソースへのリンクが含まれています。というメッセージや、ファイルを指定するプロンプトが表示されることがある。

Excelは外部ファイルへのリンクを使うと、ファイルを開いたときにリンク先の更新を反映しようとする。メッセージが表示されるのは、実際に更新を行っていいか確認するとき。リンク先のファイルが無いと、正しいパスを入力させようとしてファイル選択のプロンプトを表示させる。
ファイルサイズが大きくなるのは、リンク先のファイルを丸ごと取り込んでいたりするからだ。これらを解決するには、外部リンクを全部削除する。大まかには

数式のリンクを削除する
セルをコピー→値の貼り付け を行ったり、xls・xlt・xlkなどをブック内で検索して適宜削除していく。
セル範囲の名前の設定を削除する
Ctrl+F3でセル範囲に付けた名前の一覧が出てくる。このリストのうち、名前の横にシート名が出ていないものは外部ファイルへのリンクになっているか、シートが削除されたためにリンク切れになっている。シート名が出ていない行を選択して、右下にある削除ボタンで削除していく。

名前設定の削除は、VBAを使える人なら、Worksheet.Namesプロパティを使って削除するマクロを組んでおくと便利。(ブック内のリンクを除外して削除するのがちょっと面倒だけど)

ラベル: ,

2007/02/18

[Cygwin]setup.exe losts /etc/profile

cygwinを久しぶりに更新した。 wgetを追加したかっただけなんだけど、しばらく更新をしていなかったのでインストール済みのモジュールは全部更新することに。いつもどおりsetup.exeから更新をかけてしばし待つ。

んで、使おうとしたらbash: wget: command not foundあれ、インストール失敗した?ls /binbash: ls: command not found…は?んなワケないだろう。/bin/ls /binずらずら出てくる。あるやん。wgetもあるやんけ。

バイナリはあるけど、パスが全然通っていないらしい。ちょっと調べてみると/etc/profileがいない。setup.exeが消したらしい。何てことをするんだ。cp /etc/defaults/etc/profile /etc bash: cp: command not found だぁ~っ!悪かったよ!!/bin/cp /etc/defaults/etc/profile /etc

コピーできたのでsource /etc/profileで何とか復活。設定がいくつか消えてしまった。怖いから今度からバックアップ取っておこう…。

ラベル:

[Java]log4j - RollingFileAppender 2

次のバージョン(log4j 1.3alpha-8)を見てみると、Streamベースに置き換わっていた。カウント方法も、出力する直前にバイト数を数えるように変更されてた。 自前でやるとバイト変換のコストが気になっていたけど、次からは気にしなくて済みそうだ。

ラベル: ,

2007/02/04

[Java]log4j - RollingFileAppender counts String.length()

jakarta log4jのRollingFileAppenderはファイルサイズでローリングする と説明されることが多いが、本当は出力した文字数を数えている。
Asciiしか使わないようなログなら問題ないんだけど、日本語を出力していると設定したサイズより大きくなる。メッセージ自体は英語にしていても、外部からの入力パラメータなんかを埋め込んでいるとそうはいかなくなってしまう。
カウントしているのはhelperパッケージにあるCountingQuietCounter#write(String)なので、コレを入れ替えることになる。
まず、CountingQuietCounter#writeメソッドをオーバーライドして、カウントの仕方を変更したQuietCounterを作成する。もとのコードを参考にして、下記の通り修正。
count += string.length();count += string.getBytes().length;
getBytes()は、出力文字コードに手を入れているならそのコードを指定できるようにしておく。

次に、CountingQuietCounterを生成している箇所を修正。これはRollingFileAppender#setQWForFiles(Writer writer)を同じくオーバーライドして、自作のCountingWriterに置き換えよう。
あとは、設定ファイルに指定するAppenderを自作Appenderに直して完了。

因みに、バイト変換するコストが発生するので注意。Log4jはWriterベースで作られているので、OutputStreamベースに作り変えるのはもう少し作業が必要になる。

ラベル: ,