« 2006年6月 | トップページ | 2006年8月 »

Python本のご紹介

初めてのPython 第2版 初めてのPython 第2版

著者:マーク ルッツ,デイビッド アスカー
販売元:オライリージャパン
Amazon.co.jpで詳細を確認する

Pythonという言語に関する書籍
この本は、読みやすく書かれてるし、直訳っぽくないのでなかなか良い。
#というのは、Amazonの書評に書けばいいんだけど、そもそも書評するほど
#読んでなかったりもする。。(ダメ)

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

ASP.NETのチューニング

ASP.NETアプリケーションを作成し負荷テストツールを使ってみたところ、100ユーザーでStateServerにてデッドロックのエラーが出てしまったまずは、デッドロックの調査を行う必要があるがどうやら、デッドロックはリサイクルの際に発生している模様なので、まずリサイクリングを起こさないように設定をいじってみることに。

IIS6のアプリケーションプールのプロパティにて、「リサイクル」タブにて、ワーカープロセスをリサイクルのチェック(分ごと)をはずしその代わり、最大仮想メモリの設定にチェックを入れた。

それでもやはり、エラーは起きてしまった。

タスクマネージャや、プロファイラで見てもCPU、メモリともにスカスカなのでスレッドが詰まっているのではないかと考え.NETのMachine.configを編集することに。

下記サイトに乗っている情報を元に、

http://www.microsoft.com/japan/msdn/enterprise/pag/scalenetchapt17.asp#scalenetchapt17_topic3

構成設定規定値 (.NET 1.1)推奨値
maxconnection 2 12 * CPU数
maxIoThreads 20 100
maxWorkerThreads 20 100
minFreeThreads 8 88 * CPU数
minLocalRequestFreeThreads 4 76 * #CPUs

にそれぞれ設定をした。

CPUの使用率も上がりエラーも起きなくなったが、150ユーザーでの使用を試したところ

やはり同じような結果になった。アプリの部分でのボトルネックも調査せねば。(普通先にアプリを調査するんだと思うけどね。CPUつかってなかったのでまずマシン一杯一杯状態になるまでやってみたかったんだよねぇ。。。)

環境は、

Windows Server2003

IIS6

.NET Framework1.1 SP1

SQLServer 2000

続く・・・かも

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

PowerGres2.xのアンインストールに失敗

PowerGresを2.0から2.5にバージョンアップしようと思い、インストーラのexeを起動したらアップデート中にこけてしまった。表示されたメッセージは↓これ

Error Number: 0x80040707

そこで、困ったので一旦アンインストールをしようと思ったら、そこでも同じエラーが出てしまった。(どうやら、まずサービス登録を解除してからアンインストールしないといけなかったらしい)

最後の手段ということで、Program FilesのPowerGresフォルダを削除しレジストリのキーもPowerGresという名のついたものを削除したがそれでもNG。。

困った挙句見つけたのが↓これ

http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B882126#1

削除できたし、新しいバージョンのインストールもちゃんとできる状態にしてくれました。

よかったー(つд`)

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

Javaのクラスローダーでパス内の画像を取得する

Classクラスには、getResourceAsStreamというメソッドがある。
このメソッドを使うと、クラスローダーがパスの通っている対象のリソースのストリームを
返してくれる。
これを使えば、パス内に画像ファイルなどを入れておいてアイコンなどに使用する際に、
アイコン画像をURIなどで取得するのではなくパスから取得でき非常に便利だったりする。

ちなみに、注意事項としては、"/"で始まるリソース名は、そのまま使い、それ以外は、.から
"/"に変換したあと、Classのパッケージで補完します。
よって、Aクラスと同じパッケージにあるリソースのストリームを取得する場合は、下記となります。

A.class.getResourceAsStream("sample.gif");

パッケージ指定する場合は、
A.class.getResourceAsStream("/sample.gif");

とする感じ。

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

bcpだかBULK INSERTだか

CSVのファイルデータを取り込むスクリプトを作ろうとして色々調べたが、

SQLServerでは、bcpを利用するらしい。ところが使ってみたら、文字が途中で切れてるとかいうエラーが

出てしまい取り込めず。。ふざけんなー

BULK INSERTを利用したが同じ結果に、、結局DTSを使って取り込むことに。。。

パッチで直っているという噂もあるけど、果たしてどうかな。。

ちなみに、batファイルで実行する場合は下記。

osql -U sa -P xxx  -i .\insert.sql ・・・・1
bcp xxxDB.dbo.TBL_USER in .\USER.csv -U sa -P xxx -c -t "," ・・・・2

1は、insert.sqlというファイルに保存した BULK INSERTを実行する場合(ユーザーは、sa以外も当然可能)

2は、bcpを利用する場合(ユーザーは、sa以外も当然可能)TBL_USERというテーブルに、USER.CSVをインポート

insert.sqlの中身はというとこんな感じ

------------------------------------------

USE xxxDB
GO

BULK INSERT TBL_USER from 'C:\xx\DDL\USER.CSV'
With (
FIELDTERMINATOR = ','
)
GO

-------------------------------------

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

Ajax.NETを使ってみる

Ajax.NET というライブラリがあるので早速使ってみる。


環境は、こんな感じ

OS WindowsXP Pro SP2

開発環境 VisualStudio.NET2003

開発言語 C#

.NET Framework1.1


dllへの参照をWebアプリプロジェクトに設定して、Web.configを編集すれば設定は終了

(詳しくは、上記リンクのサイトから、ダウンロードして短いドキュメントを読めばOK)


Pageクラス(名前空間 Sample クラス名 SamplePage)


 1.

  private void Page_Load(object sender, System.EventArgs e)
  {
      Ajax.Utility.RegisterTypeForAjax(typeof(SamplePage));
  } 


 2.
  [Ajax.AjaxMethod]
  public string connectString(string value1,string value2)
  {
      return value1+value2;
  }

1.ページクラスのPage_Loadメソッドにて、Ajax.Utility.RegisterTypeForAjaxメソッドを用いて

  SamplePageクラスをAjax呼び出しの対象に指定

2.SamplePageクラスに[Ajax.AjaxMethod]属性を追加したメソッドを作成

  (このサンプルでは、渡された文字列をコネクトして返すだけ)

あとは、aspxにJavaScriptを記述していく感じ。

(これもサンプルを見れば大体わかると思う)


これじゃ全然説明になってないけど、、DataSetや、独自に実装したクラスも扱えるというのはうれしい。

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

JavaScriptでイベントの発生位置を取得する際の注意

JavaScriptでイベント発生時の位置を取得するには、

eventオブジェクトのpageX,pageYをそれぞれ利用するが、IE(検証は6のみ)では、undefinedが

帰ってきてしまう。


そこで、IEでは下記のようにすることで回避が可能。


xpoint = document.body.scrollLeft +event.x;

ypoint = document.body.scrollTop +event.y;


よくevent.x,event.yで座標を取る例が書いてあるが、x,yは、それぞれ表示してるウィンドウ(フレームが切ってある場合は別)の左上からの位置だが、スクロールしている場合には、あまり有効な値とはいえない。


ページの左上からの位置を取るには、上記のようにpageXを使うか、スクロール位置とxの値を足した値を

利用しなければ実際のページ位置は取得できない。

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

« 2006年6月 | トップページ | 2006年8月 »