「ほっ」と。キャンペーン
<   2010年 06月 ( 30 )   > この月の画像一覧
(OpenOffice)Calc 文字列の加算ができない
OpenOffice 3.2.0です。

Calcで時間の計算を行うとすると、Excelとちょっと挙動が違ってたので検証してみました。

まず、Excelの挙動です。
ExcelでA1に下記計算式を入れます。

=TEXT(SUM($B1:$C1),"[h].mm")

また、A2に下記計算式を入れます。

=TEXT(SUM($B2:$C2),"[h].mm")

そして、A3に下記計算式を入れます。

=A1+A2


要はB列、C列の各セルの時間を加算して、時と分の間の区切り文字を . にし、文字列としてA1,A2に入れ、最終的にA1,A2の合計をA3に出すだけです。

そして、B1,B2,C1,C2に下記のように値をいれると、A列でちゃんと計算してくれます。

┌─┬──┬──┬──┐
│ │A列 │B列 │C列 │
├─┼──┼──┼──┤
│1 │2.15│1:15│1:00│
├─┼──┼──┼──┤
│2 │4.15│3:15│1:00│
├─┼──┼──┼──┤
│3 │6.3 │ │ │
└─┴──┴──┴──┘

これと同じことをCalcでやってみると、A3のセルが #VALUE! ということでエラーになります。

それで、A3の計算式を下記のように明示的に数値にキャストしたら正しく計算できるようなりました。

=VALUE(A1)+VALUE(A2)

どうやら、Calcでは文字列の加算の場合は明示的にキャストしないとダメなようですね。
[PR]
by jehoshaphat | 2010-06-29 06:05 | OpenOffice | Trackback | Comments(0)
PacketiX のオープンソース版 UT-VPN
ソフトイーサ、VPNソフト「UT-VPN」のソースコードを配布開始 -INTERNET Watchという記事で知ったんですが、PacketiX のオープンソース版が「UT-VPN」ってのが出てたんですね。

PacketiX の前身の SoftEther 1.0 や 2.0ベータのころはフリーだったんでよく使ってたというより、これで L2VPN の勉強をさせてもらってたんですが、PacketiX になってから無償で使えなくなったんで、Hamachi や TinyVPN を使ってました。

しかし、オープンソース版が出たということで、次にL2VPNを構築するときは UT-VPN 使ってみたいですね。

なお、UT-VPN オープンソースプロジェクト Web サイト - 第 2 章ではSoftEtherからPacketiXの無償版公開停止そして、UT-VPNの公開という内部的な経緯が書いてあり結構楽しめます。
[PR]
by jehoshaphat | 2010-06-29 06:00 | 思ったこととかニュースとか。。 | Trackback | Comments(0)
(.Net,ADSI)ADSIでドメインアカウント数が1000件超えると取得できない
.Net アプリで DirectoryEntry と SearchResultCollection を使ってActiveDirectory上のユーザを取得してるんですが、1000件を超えたアカウント情報が取得できません。

で、調べるとADSIの仕様のようですね。

解決策としては、DirectorySearcher.PageSize を指定するだけでいいようです。

ということで、下記のようにしたら問題なく1000件以上も取得できるようになりました。

DirectorySearcher drSearch = new DirectorySearcher(new DirectoryEntry("LDAP://dc/DC=domainname,DC=jp", "cn=administrator,DC=domainname,DC=jp", "password"));
 
// アカウントフィルターを設定 Userオブジェクトだけ取得するように
drSearch.Filter = "(ObjectCategory=user)";
//取得件数を明示的に1000件にする
drSearch.PageSize = 1000;
SearchResultCollection scn = drSearch.FindAll();


参考:
Hey, Scripting Guy!:すべてのユーザー アカウントを取得できないのはなぜですか
ActiveDirectory 取得エントリの最大数(SizeLimit)について - Windows Server Insider - @IT:
[PR]
by jehoshaphat | 2010-06-27 21:19 | .Net開発 | Trackback | Comments(0)
SSIってのがあったのか…
とあるHTMLだけで書かれたWebの修正作業をやってたんですが、ブラウザから表示したHTMLのソースと、実際にFTPに配備してるHTMLに相違があることに気付きました。

で、差分をとってみてわかったんですが、元のHTML(FTPでアップしたやつ)に
<!--#include file="header.html" -->

ってのがあり、ブラウザで表示したときに、そのincludeを定義してる部分は header.html に置換されているのです。

調べてみると、これは SSI ってものらしいです。
include コマンドを使うと、特定のHTMLを文字通りインクルードできるわけで、メニューやフッタ、ヘッダ等に有効に使えるようですね。

昔、ヘッダ有りのWeb作った時は、JavaScriptのライブラリを駆使して作ってやったんですが、それが阿呆らしく感じましたorz
なぜ今まで知らなかったんでしょうか。。。。

まぁコンテンツの内容によると思いますが、ヘッダ、フッタ等の簡単な挿入だとSSI使った方がいいかもしれませんね。

ただ、SSIは対応してるレンタルサーバじゃないとできないみたいですね。(といってもCGI可な商用サーバは大抵使えると思いますが。。。)

参考:
とほほのSSI入門
SSI入門
[PR]
by jehoshaphat | 2010-06-27 21:16 | Webがらみ | Trackback | Comments(0)
ドメインコントローラでオブジェクトアクセス監査を有効にすると。。。
ドメインコントローラにファイルサーバも兼用させて、特定のファイルへのアクセス(書き込み)ログを残すように監査を設定しました。
(監査の設定はファイルのプロパティから、セキュリティの詳細設定で行えます。あと、グループポリシーで、オブジェクトアクセスの監査を有効にしないといけません。)


そうすると、下記のようなログが大量に発生するようになりました。(1分間に10回前後)

イベントの種類: 成功の監査
イベント ソース: Security
イベント カテゴリ: オブジェクト アクセス
イベント ID: 562
日付: 2010/04/03
時刻: 11:07:01
ユーザー: domainname\username
コンピュータ: domiancontroler
説明:
ハンドルのクローズ:
オブジェクト サーバー: Security Account Manager
ハンドル ID: 171497704
プロセス ID: 500
イメージ ファイル名: C:\WINDOWS\system32\lsass.exe


ITPro:Windows Server 2003で強化されたセキュリティ・ログ活用のポイントによると、オブジェクトアクセス監査を有効にするとSAMのオブジェクトに対するアクセス・イベントも記録されるようです。

ただ、この調子だとすぐにイベントログのファイルが一杯になってしまうのと、本来のファイルアクセスのログを見つけるのが面倒なのでなんとかならないか調べて見ました。

すると、MSサポート:イベント ID 560 およびイベント ID 562 がセキュリティ イベント ログに何度も記録されるに情報が載ってました。
原因の2番目に、ドメイン コントローラで監査を有効にすると、セキュリティ アカウント マネージャ (SAM) オブジェクトへの参照を含むログが残ると書かれてます。


対応策として、方法2のADSI Editを使うことにしました。(ADSI Editについては、(ADSI)ActiveDirectoryのオブジェクトの属性をのぞきたい参照)

手順としては下記のような感じです。
1.ADSI Editを立ち上げ、ツリールートの[ADSI Edit]のコンテキストメニューから[Connection]を押下。
2.[Select or type a Distinguished Name or Naming Context:]に CN=Server,CN=System,DC=Domain_Name,DC=Domain_Extension というように入力。
3.[Computer]のところは[Default (Domain or server that you logged in to)]にチェックし、OKボタンを押下。
e0091163_2164012.jpg


4.そうすると、ツリーに新たなオブジェクトができるので、ツリー展開し、[CN=Server,CN=System,DC=Domain_Name,DC=Domain_Extension]のコンテキストメニューからプロパティを押下。
e0091163_217186.jpg


5.[CN=Server,CN=System,DC=Domain_Name,DC=Domain_Extension Properties] ダイアログ ボックスでセキュリティタブを選択し、詳細設定を押下。

6.セキュリティダイアログが出てくるので監査タブを選択し、[子オブジェクトに適用する監査エントリを親から継承し、それらをここで明示的に定義されているものに含める]のチェックを外す。
e0091163_21112798.jpg

そうすると、[継承可能な監査エントリの、このオブジェクトへの伝達が妨げられています。操作を選んでください。]と聞かれるので、削除を選択。
e0091163_2174565.jpg

で、やってみたんですが、どうもうまくいってないようです。
もしかしたら再起動すればいいのかもしれませんが、簡単にはリブートできないサーバなので。。。。
[PR]
by jehoshaphat | 2010-06-27 21:11 | サーバがらみ | Trackback | Comments(0)
(.Net,OpenOffice)Calcでは通貨の円記号が全角になる。
OpenOffice Calcでコピーしたセル値をDataGridViewに貼りつける部分をコーディングしてました。
Calc側のセルの書式設定が通貨になってたんで、プログラム側でint型にキャストするように下記のようなコードを書いてました。

CultureInfo cul = CultureInfo.CurrentCulture;
NumberStyles style = NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowLeadingSign |
NumberStyles.AllowThousands;
int pay;
if (int.TryParse(vals[i], style, cul, out pay))
{
//DataGridViewセルに貼り付け
DataGridView1[ 0 , 0].Value = pay;
}

しかし、TryParseでエラーとなります。

調べてみると、Calcの通貨記号(¥)が全角となってました。
強制的にCalcを半角にすると、書式がおかしくなります。
Excelは半角の記号なんですけどね。。


とりあえず、全角¥を置換するようにしました。

参考:
(.Net)DataGridViewのセル入力チェック(CellValidating)でハマる が TryPerse で解決 通貨書式文字列をintに変換する方法です。

dobon:DataGridViewで選択されたセルをクリップボードにコピーできるようにする クリップボードの内容をDataGridViewに貼り付ける方法です。
[PR]
by jehoshaphat | 2010-06-26 12:53 | OpenOffice | Trackback | Comments(0)
(OpenOffice)Calcで計算式かどうかを判断する
OpenOffice 3.2.0です。

Calcで任意のセルが計算式かどうかを判断する方法です。

ISFORMULA 関数を使えばいいようです。

Trueなら計算式、Falseならそうでないということみたいですね。
[PR]
by jehoshaphat | 2010-06-26 12:48 | OpenOffice | Trackback | Comments(0)
(バッチ)一般ユーザ権限で、別ユーザのプロセスを落とす
バッチファイルで特定のプロセスを終了するコマンドを書いてたんですが、管理者権限が無いユーザだと別ユーザで動いているプロセスは落とせません。

しかし、RUNASというコマンドを使うと任意のユーザ権限でコマンドが発行できるようです。

使い方はこんな感じです。

runas /user:ドメイン名\ユーザ名 "taskkill /im xxx.exe"

しかし、これだとパスワードを聞かれてしまい、使用中にユーザに意識させずに...ということはできません。
echo パスワード|runas .... とか、リダイレクトとか試しましたがその場合認証に失敗します。

で結局、/savecred オプションを使うことにしました。
このオプションを付けて実行すると初回だけはパスワードを要求されますが、次回からは要求されません。
ただ、XP の Home Editionでは使用できないようです。


runas /savecred /user:ドメイン名\ユーザ名 "taskkill /im xxx.exe"


参考:
runas実行した時にきかれるパスワードを手入力以外で読み込ませたい
[PR]
by jehoshaphat | 2010-06-22 01:38 | 豆知識 | Trackback | Comments(0)
7月から広告が入るらしい
7月からの記事内広告表示に関するお知らせで運営が発表したように、7月から記事の下に広告が2つ入るようになるらしいです。

しかも聞いたところサラ金やらカードローンやらの広告が多いとか。。。

エキサイトブログは無料アカウントでも広告なしでシンプルで軽いのが売りだったのに非常に残念ですね。

また、ブロガーによって広告が入れられてるんじゃないかと誤解されることを懸念してるユーザもいるようですね。

まぁ運用するのにコストがかかるからそれを何とかして回収しないといけないのはわかりますが、これを機にある程度のユーザは離れていくんじゃないかと思います。

こういうことを考えると、自宅サーバでブログ立ち上げたいのですが、なかなか時間が...
ただ自分の場合はただのメモで閲覧ユーザの大半も検索エンジンからの一元さんなのであまり神経質にはなってませんが。。。

ちなみに日本は世界2位の広告大国のようです。
5兆円もの市場規模なので、一概に広告がダメということは言えませんが、広告入れるようなるならそれなりのサービス向上を図ってほしいですね。
[PR]
by jehoshaphat | 2010-06-21 01:02 | 思ったこととかニュースとか。。 | Trackback | Comments(0)
(OpenOffice)Calcでファイル保存時に「書き込みエラー」となってしまう
OpenOffice 3.2.0です。


Calcでファイル保存時に、「書き込みエラー」というダイアログが表示されてしまい、保存できないという現象が報告されれています。

OpenOffice2.xxバージョンで作成したCalcのファイルを3.2で保存する場合にこの現象が発生することが多いようです。

この場合、下記の方法で回避することが可能なようです。
・メニューバーの[データ]→[範囲の指定]にて使用されている範囲名の文字が英語の場合、日本語に変更してみる。(特にExcelから移植したスプレッドシートは自動的に範囲ができ、それが英語名みたいですね。)
・問題のファイルを開く前に新規にOpenOfficeを立ち上げ、メニューバーの[ファイル]→[開く]より、問題のファイルを開く。(この方法の方が分かりやすいかもしれません。)

調べてみたところ、日本語ランゲージパックの問題の可能性が高いようなので、もしかしたら、3.2.1では解決してるかもしれません。
[PR]
by jehoshaphat | 2010-06-21 00:41 | OpenOffice | Trackback | Comments(1)