<%= ASP総合 %> Par ..
116:nobodyさん
05/09/15 11:45:02
>>115
こうすると、文中の改行コードも全てなくなってしまうのでは?
117:nobodyさん
05/09/15 20:37:02
>>115
細かいけどそれをやりたきゃvbNewLineで置換すればOKだぞ
そして>>116の言うとおり。
正規表現を使えばよかろう。
Set regEx = New RegExp
regEx.Pattern = "(^\s*)|(\s*$)"
regEx.Global = True
strWriteData = regEx.replace( strWriteData , "")
118:nobodyさん
05/09/16 11:05:43 fPKBboZa
済みません、教えて下さい。
PDFファイルを生成するミドルウェアはなにがおすすめでしょうか。
・主にレコードセットから生成
・画像挿入
・ページ数制御
・ASP.NETに移行の可能性有り
これくらいの事しかやりませんので、
あまり多機能すぎて開発工数がかかりすぎるより、
多少、機能を削っても工数のかからないものがいいです。
予算は50万円くらいです。
(ユーザーを説得できるだけの機能があれば100万くらいまで可)
ASP
IIS 6.0
IE 6.0
よろしくお願いします。
119:nobodyさん
05/09/16 20:35:57
「工数かからないように」の一要素であるノウハウの多さという意味で言うと
PDFlibあたりがいいんじゃない?
120:nobodyさん
05/09/28 14:02:13
ASPで構造体は使えますか?
使えない場合、何か代替でよい手法がありますか?
121:nobodyさん
05/09/28 22:04:29
>>120
VBScriptにもJScriptにも構造体はありません。
代替はプロパティだけのクラス。
クラス定義が、
class clstest
public prop1,prop2,prop3
end class
こんな感じで、このクラスを返す関数が
function getTest(arg1,arg2,arg3)
Dim obj
set obj = new clstest
with obj
.prop1 = arg1
.prop2 = arg2
.prop3 = arg3
end with
set getTest = obj
end function
こんな感じ。
set retvalue = getTest ("val1","val2","val3")
とすれば
Response.Write retvalue.prop1
で"val1"が出る。
122:nobodyさん
05/09/28 22:23:19
>>120
JScriptの場合はここを参照
URLリンク(www.imasy.or.jp)
123:nobodyさん
05/09/29 07:56:05
動的にプロパティの追加が出来るのはtypo耐性が低くてイカン
124:nobodyさん
05/09/29 18:20:52
>>123
そこでUnitTestですよ。
125:nobodyさん
05/10/04 23:10:08
ASPのサーバ側の処理を排他制御する場合はApplication変数ででも出来るけど
並列してWSHでも定期的に行うようにするため、
代わりにFileSystemObjectでのファイル書き込みオープンでロック制御を試してみた。
<HTML><BODY><%
set fso = createObject("Scripting.FileSystemObject")
set basp = createObject("Basp21")
Response.Write time & " " : Response.Flush
set olock = fso.openTextFile("c:\work\lockfile",2,true)
Response.Write time & " " : Response.Flush
basp.sleep 5
Response.Write time & " " : Response.Flush
olock.close
%></BODY></HTML>
二つの画面で動かして
[17:00:00 17:00:00 17:00:05]みたいな感じとファイルオープン失敗でaspエラーになる事を期待したら
[17:00:00 17:00:00 17:00:05]と[17:00:05 17:00:05 17:00:10]となった。
ファイルオープンを待って[17:00:00 17:00:00 17:00:05][17:00:02 17:00:05 17:00:10]ならまだ分かるが
なぜ二番目のアクセスで最初の一発目も実行されないで待ってるんだろう?
ロックとしては結果オーライではあるんだけど、何か不思議。
何かこれに関係しそうなドキュメントとかあったらURLキボン。
126:125
05/10/05 20:57:09 QIcIBhGo
質問age忘れた
127:nobodyさん
05/10/05 22:43:21
>>125
ヒント: 遅延書き込み
128:nobodyさん
05/10/06 23:16:49
>>127
遅延書き込みは関係ない気がする…
むしろ実行時にスクリプトを先読みしてる?
あそっか、ASPとかのスクリプトエンジンって
実行時にコンパイルしてんだよな(後の方の構文エラーとかも先に出るし)。
この場合ファイル名がリテラルだから…。
なるほどな。結構色々気を回してくれるんだなASP。
129:nobodyさん
05/10/07 18:51:33 2Dl5nVCp
質問させてください
IIS(4.0)+ASP → ODBC → PostgreSQL
でADO接続しているのですが
.Close & Nothing 作業を行っても
Netstatで確認すると
数十秒コネクションが残ってしまいます。
ASPからDB接続するとデフォルトで
コネクションプールみたいな機能が
付いてたりするのですか?
(ODBCの接続プールは使用していません)
因みにVBScriptで作ってます。
130:nobodyさん
05/10/07 23:08:04 BE:36756623-##
>>129
ASPに関わらず、netstatでみると殆どのアプリが数十秒コネクション残るよ
131:nobodyさん
05/10/08 01:00:06 6j6nfXjs
まじっすか!!
実は2000人ほどログインするASPプログラムを
作成する予定なのですが
コネクションが数十秒残るとPostgreSQLでコネクション
限界に達してしまうんですよね…
接続プールやコネクションプールサーバを使用すれば
実現できるのでしょうか…
(もしくはロードバランサーで2台接続?)
みんなどうやってDB接続してるんだろう
情報(人-)謝謝(-人)謝謝です
132:nobodyさん
05/10/08 02:12:07
>>131
DB側のコネクションとネットワーク層のコネクションは別な話だと思うが
133:nobodyさん
05/10/08 11:04:49
>>131
ブラウザ→IIS間のセッションが増えても
その複数セッションに対して一つのコネクションを使いまわす事で
IIS→DB間のコネクション量が膨大にならないようにする
それがDBのコネクションプール
134:nobodyさん
05/10/08 11:14:57
いいや違うね
135:nobodyさん
05/10/08 13:05:50
端末〜Webサーバが同時に2000アクセスしても
Webサーバ〜DBへは同時に2000アクセスするわけではない。
下手すれば並列実行できずに待ち行列だよ
136:nobodyさん
05/10/08 19:27:47
新規DB接続を生成するオーバーヘッドを減らす意味もあるでよ
137:nobodyさん
05/10/09 03:12:32 /MEb5o0Y
DBソフト(PostgreSQL)の接続状況を見てみたのですが
やはりnetstatの接続内容と同じ内容になっていました。
netstat上でもClose後にESTABLISHのまま数十秒
コネクションを維持しています。
Close後にnetstatで見る情報がTIME_WAITEになっていたら
私も気にしなかったのですが…
ASPにてDBオープン
↓
netstat上にDB接続コネクションがESTABLISHで発生する
PostgreSQL上でコネクションが確立する
↓
ASPにてDBをクローズ
netstat上にDB接続コネクションがTIME_WAITEになる
PostgreSQL上のコネクションは開放される
↓
数十秒後にnetstatからコネクション情報が削除される
が私の考える流れなんですが…
あってますか?
因みにASP上のDB解放作業って
Close & Nothing 以外ないですよね?
質問ばっかりですみません
138:nobodyさん
05/10/09 11:12:59
なんでそんなに接続を切りたいの?
複数リクエストに対して一つの接続が
使い回せてればそれでいいじゃん。
いちいち接続を切断するのは逆にオーバーヘッドが増えるって。
139:nobodyさん
05/10/09 12:04:16
>137
コネクションプーリングじゃないの?
140:nobodyさん
05/10/09 13:48:51
>>137
ちなみにPowergesとは何を使って接続してるの?
141:nobodyさん
05/10/09 20:46:04
>140
>129が>137の最初のレスのよーだがそこに書いてある
ODBC経由のADO接続らすぃ
142:nobodyさん
05/10/09 23:02:23 MkiNfj/O
137です。
ASP側でDBをCloseさせた後数十秒間
DB側のコネクションが持続するのが正常な処理であれば
私も問題ないと思うのですが、
コネクションプーリングしていない状況で上記問題が
発生しているためどういう事なんだろうかと頭を悩ませているところであります。
現在
@そもそもそういう仕様なのか?
AODBCの接続プール以外にコネクションプーリングする機能がデフォルトで
存在するのか?
BASP、サーバ設定等で開放するための処理が漏れているのか?
で色々調べているところです。
ASP以外の問題であれば板違いなのですが
@ASPのDB開放処理はClose & Nothing 以外することはない?
AASPのDB接続にて同じような現象に陥った経験はありませんか?
ということを聞きたいです。
143:nobodyさん
05/10/09 23:16:16
>>142
> @ASPのDB開放処理はClose & Nothing 以外することはない?
ない、、、というかこれ以上何かする方法もない
あとIIS4.0ってのはどうにかできないの?
っていうか、複数の端末から同時にIISにアクセスするとして、
IISって並列にDBにアクセスできるんだっけ??
144:nobodyさん
05/10/09 23:43:28 MkiNfj/O
皆様ご回答ありがとうございます!
たまたま手元にあったIISが4.0だったというだけだったのですが
なるほど…IISという可能性もあるかもしれないですね
IISに関してはまだ調べていないんでなんとも言えませんが
少なくともASPのソース自体に問題が無いという事で
要因の一つが消えて安心しました。
145:nobodyさん
05/10/10 00:37:37
>AODBCの接続プール以外にコネクションプーリングする機能がデフォルトで
存在するのか?
存在します。
URLリンク(www.microsoft.com)
の図を見ればODBCの他に
その前のOLEDBにResource Poolingがあるのが一目瞭然だと思います。
146:nobodyさん
05/10/10 07:25:23
>>IISって並列にDBにアクセスできるんだっけ??
できます。
IISプロセスは当たり前にマルチスレッドなので
その各スレッドからのDBへのアクセスは並列になりますな。
147:nobodyさん
05/10/10 21:44:46 47556GXn
Resource Poolingというのをはじめて知りました。
Microsoftのページは見てたつもりだったんですがお恥ずかしい(汗
どうやらADOでMDAC2.1以降を使用している場合
デフォルトで動作するようでこれが原因である可能性が
高い気がしてきました
テストしてみます
ありがとうございました
148:nobodyさん
05/10/23 20:30:47
<input type = file>で参照したcsvファイルで
work_Aというテーブルに書き込めるようなプログラムはどう書けばいいのでしょうか?
参照するcsvはwork_Aテーブルとカンマで区切られて同一構造になってます。
サーバーはSQLサーバーです。
分かりづらい説明かもしれませんが宜しくお願い致します。
149:nobodyさん
05/10/23 23:46:53
Global IP のあるフロントエンドサーバーが ASP で、
LAN にある FreeBSD から text/html なデータをだしたいんだけど、
どういう風にすればいいんですか?便利な proxy とかありますか?
150:nobodyさん
05/10/24 00:49:30
>>148
一旦アップロードしたうえでfsoかadoで普通に読む
or
ADODB.Streamでアップロードも含めて一括でやる
151:bob
05/10/24 14:53:50 txJyGq/T
違うスレでかいたのですがこちらに誘導されましたので
質問させて下さい。
会社でwebデザインをしています。プログラムはASPを使っており
外注しております。そのためASPに興味が出てきたため勉強をしたいのですが
なにから勉強したら良いか分かりません。ASP+SQLServerLです。
また良い参考書などがありましたら教えて頂けますか?
宜しくお願いします。
152:nobodyさん
05/10/24 16:26:50
URLリンク(tryasp.winscom.co.jp)
153:nobodyさん
05/10/24 20:34:52
>>149
FreeBSDのマシンで普通にWebサーバ動かしておいて
フロントエンドサーバからXMLHTTPとか使ってFreeBSDサーバからデータを取って
そのままクライアント送り出すとかが安直でいいのでは。
>>151
URLリンク(www.gihyo.co.jp)
これ結構おすすめ。
154:nobodyさん
05/10/24 22:19:47
ASPを勉強中なのですが、サンプルでわからないところがあるので教えていただけないでしょうか?
<%
sCoString = "DBQ=" & Server.MapPath("./sample.mdb") & ";"
sCoString = sCoString & "DefaultDir=" & Server.MapPath("./") & ";"
sCoString = sCoString & "Driver={Microsoft Access Driver (*.mdb)};DriverId=25;"
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open sCoString
sSQL = "INSERT INTO tablename SELECT * FROM [TEXT;DATABASE=C:\mdb].[test.csv]"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sSQL, cn, 3, 3, 1
set rs = nothing
set cn = nothing
%>
とあるのですが、下のほうに
rs.Open sSQL, cn, 3, 3, 1
とあるのですが、
この3,3,1という数字は何なんでしょうか?
どうぞよろしくいお願い致します。
155:nobodyさん
05/10/24 23:02:13
カーソルモードを定数化もしていないようなそんなウンコなサンプルは捨ててしまえ!
156:nobodyさん
05/10/24 23:32:16
>>154
静的カーソル
ReadOnly
コマンドテキスト
157:nobodyさん
05/10/24 23:33:11
>>153
俺もそのテキスト気に入ってる
158:nobodyさん
05/10/24 23:44:59
>>154
URLリンク(www.microsoft.com)
159:nobodyさん
05/10/26 01:22:49
複数行入力できるフォームを作り、入力された文中にある特定の行と列の数値で計算を行いたいのですが、
どのような考え方やプログラムを行えばいいでしょうか?
入力する文は数値以外は固定です
例)--------------------------------------
************************** 100
*********** 200 ******
****300
****400
****************500
-----------------------------------------
160:nobodyさん
05/10/26 01:43:44
>159
正規表現。
それがイヤなら数値の前後の文字列をInStrとかで検索して
場所を特定してからMidなどで数値だけ抽出。
(関数名はVBScriptの場合)
161:nobodyさん
05/10/26 20:54:07
>>159
数字以外が固定なら数字のところだけinput type=textにした方がいいんじゃないか…
余計なお世話だが、一度そういう無理をしてしまうと
後々になって全角も認識するようにしろとか
「3千」とかも読み取れるようにしろとか
だけど「八千代商事」とかはスルーしろとか
だんだん要求がアホらしくなっていったりしていくんじゃないかと心配してしまふ
162:nobodyさん
05/10/26 20:58:37
>>161
ime-mode:disabled と javascript で isNaN かけるとモアベター
163:nobodyさん
05/10/27 00:32:40
今、会社でASPの勉強をしているのですが、COMをかなり利用していて全然理解できません。
クラス化とかさっぱりわからないのですが、なにかいい参考書やHPはないでしょうか?
よろしくお願い致します。
164:nobodyさん
05/10/27 00:38:09
>>163
きついようだけど、レガシASP程度で全然理解できないとなると、、、、
多分、ASPの日本語の参考書って10〜20冊くらいしか出てないから
本屋で好きなのを買った方がいい。
165:nobodyさん
05/10/27 02:38:55
>>160
ありがとうございます。何とかInStrやMidなどを使い数値を抽出することができました
本で正規表現を読みましたが、短期間ではちょっと理解ができませんでした・・・
>>161
もともと別データから抽出したデータ中の必要な数値データを計算するだけなので問題ありません
心配ありがとうございます
166:nobodyさん
05/10/27 08:01:10
>>163
いやでも自作COMコンポーネントをたくさん使ってると
後から予備知識無しだと全然読めないよね…
167:nobodyさん
05/10/28 22:10:00
>>166
自作COMコンポーネントだったら参考書買っても無理だろ
168:nobodyさん
05/10/30 01:43:33
ASPで翻訳サイトなどにあるクリックすると枠内にあるテキストが消えることってできるんでしょうか?
ソースを貼り付けて実行しようとしてもエラーが出てしまいます。
169:nobodyさん
05/10/30 01:47:13
>>168
クリックするとテキストボックスが消えるってのはJavaScriptではないのか?
170:nobodyさん
05/10/30 02:50:12
InterDevでASPの勉強してるんですが、
デバックって皆さんどうやってるんでしょうか?
ASP.NETみたいにブレークポイント作っても止まってくれませんよね?
イベントドリブンじゃあないから当たり前なのでしょうか?
今は、logファイルに変数を出力してやってますが、ほかになにかないんでしょうか?
171:nobodyさん
05/10/30 03:48:29
>>170
Microsoft Script Debugger の最新版でできる。
俺は使わないけど。
172:nobodyさん
05/10/30 20:29:07
アンケート画面をつくりたいのですが、
項目の1つに選択項目が7,8個ありまして、
それを1位から再下位まで順番をつけてもらいたい項目があるのですが、
どんな形で実現すればよろしいでしょうか?
アドバイスお願い致します。
173:nobodyさん
05/10/30 21:16:35
>>170
Response.Write "<HR>" & 変数 & "<HR>"
Response.flush
とかを途中にぶち込むと画面は乱れるが大体どうなってるのか分かる
ログファイルに書き出すより、画面の描画の進度と見比べられるので俺は好み。
>>172
Javascriptのテクニックになるのでスレ違いだな
174:nobodyさん
05/10/30 23:39:29
なんか、クライアントサイドとサーバサイドの区別も付かないヤツが多いな。
とりあえずJavaScriptくらい極めればいいのに。
そうすればJScriptでASP組めるし。
175:nobodyさん
05/10/31 02:33:29
>172
テキストフィールドを1つ用意してカンマ区切りで入力してもらえば?
176:nobodyさん
05/11/01 18:17:13
すみませんがスレ違いかもしれませんが教えてください
Server2000から2003に移行をしているものです。
IIS5.0では上手くいってなのですがIIS6.0にした途端
Session変数(関数?)がページ間で上手くわたらないのですが
なにかIIS6.0の設定が必要なのでしょうか?
クッキーもページ間で値渡しができなくてこまっています。
(クッキー自体はもしかしたら登録すらできてなかも・・・。)
いろいろ調べたのですが、なかなか出来なくて困っています
もしよろしかったら教えてください。
IIS5.0 プロセス分離モード ってやつもやってみましたがダメでした
177:nobodyさん
05/11/01 18:19:52 olXap06e
>>176
ageときますスミマセン
おなじ事をサーバーで行なうと上手くいきます。クライアント側がさっぱりなのです
178:nobodyさん
05/11/01 20:50:26
>>176
クライアントのセキュリティ設定が
その2003サーバに対してCookieを拒否するようになってたりせんか
179:nobodyさん
05/11/01 21:44:58
>>176
ローカルだとうまく動くんでしょ?
なら >>178 の言うとおりIE側の設定じゃね?
新しいサーバのホストは信頼されてる?
180:176
05/11/01 21:44:58
>>178
そうかもしれませんが、server2000では何も設定せずにうまくいくのに
server2003だとクライアント側を設定しなければならなとなると、導入に問題なのですが・・・。
IISの設定じゃないのですかねぇ??
181:nobodyさん
05/11/01 21:45:56
>>179
ホスト→ホスト名
182:176
05/11/01 21:48:44
>>181
ホスト名・・・。しらべてみます。うまくいったら報告します。
183:176
05/11/01 21:55:48
ホスト名 ビンゴ!!。アドレスにコンピューター名を入れていました。
IPアドレスにしたら完璧に動きました。(LAN内ですので)
みなさまどうもお騒がせしました。まじ感謝です
184:nobodyさん
05/11/01 22:40:03
お世話になります。
現在、asp上のリンクをクリックするとDBにバイナリデータで格納されているpdfファイルを読み込み、
ブラウザに表示をさせるという処理を行っているのですが、
ブラウザに表示できる端末とダウンロードのダイアログが出てきてしまう端末があります。
色々原因を探っているのですが、
今現在わかっているのはダイアログが表示される端末は
全てAcrobat Reader5.0がインストールされているものだということだけです。
しかし、Acrobat Reader5.0がインストールされていてもブラウザに表示できる端末もありました。
また、Acrobat Readerの設定(ブラウザで表示するかどうかの設定)が悪いのかと思いましたが、
pdfファイルをブラウザに放り込んでやるとちゃんとブラウザ上で表示されていました。
さらに、正常に表示できる端末では、
右クリック→対象をファイルに保存 としてやると正常にpdfを保存することが出来ますが、
ダイアログが表示される端末では 対象のファイルがありません のようなエラーメッセージが表示されてしまいます。
ちなみに、現在他のシステムも稼動していますので、
環境を変化させないために全ての端末にAcrobat Readerの最新版をインストールするということは出来ません。
現在わかっていることはこのぐらいなのですが、
ダイアログが表示されてしまう原因は何なのでしょうか?
また、上記で「ブラウザ」と表記しているものは全てIE5.5以上です。
185:nobodyさん
05/11/02 04:34:36 8yGkDJEQ
ASPからWMIを使用し、JScriptで記述した場合の問題に直面しています。
あるフォルダの所有者を取得したいのですが、
VBScriptで以下の用に記述した場合は問題なく動作します。
<%
strFolderName = "C:\\Sample"
Set objWMIService = GetObject("winmgmts:")
Set objFolderSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFolderName & "'")
Dim objSD
intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)
If intRetVal = 0 Then
Response.Write( "Ownerは[" & objSD.Owner.Name & "]" )
Else
Response.Write( "Couldn't retrieve security descriptor." )
End If
On Error Resume Next
%>
186:nobodyさん
05/11/02 04:35:05 8yGkDJEQ
しかし、JScript版で以下の用に記述した場合、
'Owner' は Null またはオブジェクトではありません。 と表示されます
<%
var strFile = "C:\\Sample";
var objWMIService = GetObject("winmgmts:");
var objFolderSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" + strFile + "'");
var objSD;
varintRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD);
if ( intRetVal == 0 ) {
Response.Write( "Ownerは[" + objSD.Owner.Name + "]" );
} else {
Response.Write( "Couldn't retrieve security descriptor." );
}
%>
JScriptで記述した場合、何故objSDはundefinedになってしまうのでしょうか?
どなたかこの現象の原因のわかる方どうか解決方法のご指示をお願いします。
m(__)m
187:nobodyさん
05/11/02 09:07:57
>>186
> var objSD;
JScriptの場合、これだけでは定義したとはいえない。
この状態で objSD の値は null 兼 undefined
188:nobodyさん
05/11/02 09:10:34
>>184
Response.ContentType を明示的に宣言してる?
189:186
05/11/02 09:56:01 8yGkDJEQ
>>187
レスありがとうございます。
自分ではGetSecurityDescriptor()にobjSDを渡せば、
内部でobjSDに対して何某かのインスタンスが生成されて
情報がセットされ戻ってくると思い込んでいたのですが、
それはつまりGetSecurityDescriptor()に渡す前に、
既に何某かの型でインスタンスを生成してobjSDに参照させていないのが
今回の原因ということでしょうか??
190:nobodyさん
05/11/02 19:01:42
>>184
ブラウザのキャッシュを空にしたりすると動きが変わるかも知れない
それを差し引いてもAcrobatReaderの設定は揮発するから微妙なところだな
んで他のシステムではAcrobatReaderを何に使ってる?
他の同様のシステムではPDFがブラウザでちゃんと表示できてるのであれば
>>188氏の言うとおり、ContentTypeでapplication/pdfを明示的に指定することで
うまく行くようになるかも知れないと思われ
191:nobodyさん
05/11/02 20:33:25
>>186
JScriptには参照渡しが無いからそういうメソッドは使えねえべ
192:nobodyさん
05/11/02 22:59:56
>>189
>>191氏も言っているがJScriptにおける代入は "=" のみ。
関数の引数は全て読み込みのみになる。つまり値渡しか使えない。
関数の中で引数の値を変更しても、外には出れない。
193:184
05/11/02 23:46:26 jsGUnMcJ
>>188>>190
どうもありがとうございます
>>Response.ContentType
Response.ContentTypeはapplication/pdfを指定しています。
>>キャッシュ
IEのインターネットオプションでキャッシュを削除してみたところ、
1台のみpdfが表示できるようになりました。
しかし、表示できるのは初回のみで、
2回目以降は表示できませんでした。
また、no-cacheの指定もしてみたのですが、
この指定をしてしまうと初回時に表示することが出来なくなってしまいました。
(Microsoftのサポートページにキャッシュを制限する指定をすると
ダウンロードダイアログが表示されてしまうという既知の問題が載っていましたので、
おそらくこれが原因だと思われます。)
また、他のシステムで実際にpdfが使用されているのかはよくわからないそうです。
しかし、やはり環境を変えたくないという事と、
端末は各店舗にあり、使用しているのはパソコンの素人であることから
Acrobat Readerのアップグレードはしたくないそうです。
長くなりましたので2つに分けます。
194:193続き
05/11/02 23:47:30 jsGUnMcJ
以上のことにより、代替案を考えてみました。
DBからバイナリデータを読み込み、一時ファイルとしてサーバーに書き出す。
そのファイルに対してリダイレクトを行う。
というものなのですが、この案にも問題があります。
1.ASPには標準ではバイナリデータの書き出しが出来ないので、どのようにして一時ファイルを書き出すのか。
2.pdfには個人情報が含まれているので速やかにファイルの削除をしたいが、
pdfの読み込み終了を待ってからファイルの削除をすることが出来るのか。
の2点です。
1に関しては、ADODB.Streamというものがあるそうですが、
現在ではセキュリティの問題上、IEでは使用することが出来ないそうなのです。
色々調べてみたところ、BASP21というものが存在し、
それを使用すれば書き出すことが出来るそうなんですが、
現在自宅に居るため確認が取れない状態です。
2に関しては、1日に一回バッチを走らせてファイルを削除することを考えていますが、
24時間という時間が「速やか」かと言われると問題があると思います。
>>184の内容、もしくは今回の代替案に関して
こうしたらいいのではないかという意見がありましたら教えていただけないでしょうか?
195:nobodyさん
05/11/03 11:31:14
>現在ではセキュリティの問題上、IEでは使用することが出来ないそうなのです。
その書き出しはサーバ内で行われるものでしょ?
IE関係ない。ADODB.Streamで普通に出来る。
>2.pdfには個人情報が含まれているので速やかにファイルの削除をしたいが、
>pdfの読み込み終了を待ってからファイルの削除をすることが出来るのか。
普通に考えると出来ないね。
他の方法を考えた方が良さそうだな。
あとはダメ元でcontent-disposition:attachmentとかを使ってみると
関係無さそうだけどまた状況が変わるかも…
つかそれ以前にその状況って、pdf直リンクならちゃんと開けるのか?
Content-typeをちゃんと設定してバイナリ吐くんだったら
クライアント側に流れるパケットはpdf直リンクとほぼ同じになるはずなのだが?
直リンクでちゃんと開けるのであったら…本気で解決したいなら
etherealとかでpdf直リンクの場合とバイナリ出力aspの場合の
それぞれのレスポンスヘッダをキャプチャして違いを見てみて、
違いがあったらバイナリ出力aspにヘッダを追加する。
それが一番手っ取り早い。
196:nobodyさん
05/11/03 11:35:02
>>194
AcrobatReader5 のブラウザ内表示は悲惨なんだよ。
「Web表示用に最適化」がONになってるPDFをブラウザ表示させるとページが落丁したりする。
Adobeのサポートページに色んな情報があるから見てきな。
197:nobodyさん
05/11/03 11:37:29
>>193
PDFのブラウザ表示はクライアント側の設定に依存するから
サーバ側でどんなにやったって無理なものは無理だよ。
198:186
05/11/03 20:35:58 KtvlL72l
>>191,192
レスありがとうございます。
そしてJScriptに参照渡しが無いことを始めて知りました...orz
当たり前に存在するものだと...orz
するとJScriptではGetSecurityDescriptor(引数)に値する処理は、
行えないのでしょうか?
それともまったく別の記述方法でならDACLに値するものを取得することは
可能なのでしょうか?
199:184
05/11/06 23:28:23
レスが遅くなってしまって申し訳ありませんでした。
皆さん色々なアドバイスどうもありがとうございました。
SEと相談し、結局SEが何かしら対策を考えるから今のまま作っていくことになりました。
色々アドバイスを頂いたのにもかかわらずこんな結果になってしまいましたが、
とりあえずはこのまま作っていきます。
本当にどうもありがとうございました。
200:nobodyさん
05/11/07 20:19:05
>>199
いや、元々システムの設計としては間違ってないんだよ。
AcrobatReader 5.0の動き、ひいては
そんな微妙な動きをする時代遅れの古いバージョンを使い続ける…というのが良くない。
IEやOSのバージョンが上がってるんだからプラグインもバージョン上げていかないとねえ。
まぁガンガレ
201:nobodyさん
05/11/10 16:34:58 l71/uwis
ASP.NETを使い始めたばかりで、今試行錯誤しながらテストしているのですが、HPを作る際に
画像を貼り付けたのですが、ftpでweb上にアップロードし、確認しようとしてみてみると
画像やコンボボックス等のオブジェクト類が一切表示されていません
ツールボックスのWEBフォームからオブジェクトを持ってきたのですが、HTMLのオブジェクトだと
表示されるようです。
.netによるデバック時は表示されているのですが、 web上だと表示されないのは何かが
足りないからかと思うのですが、わかりません。
漠然としていて申し訳ないですが、「これがないとダメポ」というのはありますか?
XMLファイルが無いのですが、これって関係ありますか?
202:nobodyさん
05/11/10 18:10:20
【質問】ASP.NETスレ Part2【議論】
スレリンク(php板)
203:201
05/11/10 19:15:00
ありがとう。そっちに逝ってきます
204:668
05/11/11 11:39:15 CsKh1TLX
リストボックス内のすべての値をRequest.Formにて取得したいのですが、
現状セレクトされている値しか取得できません。
どうすれば、取得することができるのでしょうか?
205:nobodyさん
05/11/11 19:54:32
>>204
Javascriptのテクニックになるのでスレ違いだが
submitする直前にselect のmultiselectをonにして
全optionをselectedにしてからsubmitすればいい。
206:668
05/11/13 11:23:37 GnU/8u4f
>>205
ありがとうございます。
やっとできました。
207:nobodyさん
05/11/17 16:29:44
以下のbatファイルをASP化しようと思っています。
cmd /c net user vaio > I:\temp\test.txt
VBS化のソース↓
Dim WshShell
Dim rtnCode
Const SW_HIDE = 0
Set WshShell = CreateObject("Wscript.Shell")
rtnCode = WshShell.Run("cmd /c net user vaio > I:\temp\test.txt", SW_HIDE, True)
If rtnCode <> 0 Then Error rtnCode
というVBSは成功しました。
でもここからASPにできません。方法ってないですか?
208:nobodyさん
05/11/17 19:58:09
<%@ Language=VBScript %>
<html>
<head>
</head>
<body>
<%
' 処理がとまってしまう
' DOSコマンドでも同様
Dim WSHShell
Set WSHShell = Server.CreateObject("WScript.Shell")
WSHShell.Run "notepad.exe", 3, false 'メモ帳を起動します。
' Microsoft VBScript 実行時エラー (0x800A01A8)<BR>オブジェクトがありません。: ''<BR>
'Dim WSHShell
'Set WSHShell = WScript.CreateObject("WScript.Shell")
'WSHShell.Run "notepad.exe" 'メモ帳を起動します。
' Microsoft VBScript 実行時エラー (0x800A0046) 書き込みできません。: 'MsgBox'になる
' MsgBox "メモ帳を起動しました。"
%>
</body>
</html>
209:208
05/11/17 19:58:44
考えられる原因は?
210:nobodyさん
05/11/17 20:30:17
>>209の書き方がちょっとカチンとくるがヒントを出してやるか
>>207-208ともに
ASPのスクリプトがサーバ内でどういう権限で動作するかって所を考えよう
>>207はWMIを使うという選択肢もあるかも。
>>208は…そのページにアクセスするとサーバでメモ帳を立ち上げたいのか?
意味が分からん。
211:208
05/11/17 20:41:09
>>210
ありがとうっございます。
サーバ処理の概念がいまいちわかってないかもしれません。
WMIを検索して勉強してみます。
212:208
05/11/17 22:32:37
うーん。
ASPでCMD処理って敷居高いのかな。。。VBの時はすんなり出来たんだけど。
213:nobodyさん
05/11/17 23:32:08
>>212
敷居が高いの使い方がまちがっている
まあ、アクセス権限だな
214:nobodyさん
05/11/18 00:17:36
最強に強まっていいのなら
IWAM_USERをAdministratorsグループにぶち込めば
大抵の事は可能になるが。
215:nobodyさん
05/11/21 17:03:41
どうしても分からないことがありますので、どなたか教えて下さい。
以下のsampleソースを参考にメール送信フォームを作成したんですが、
CCにて、複数の宛先に送ることができません。(Toは固定アドレスです。)
参考にしたURL:URLリンク(narita-system.co.jp)
ASP(VBScript)部分をこんな風にしてみたんですが、objNewMail.Cc = 変数;変数とすると、
読み込みエラーを起こして、表示自体ができなくなります。
objNewMail.Ccに1つの変数のみなら正常に送信できます。
この例でいきますと、objNewMail.Ccにて変数:nameと変数:bossに送りたいのですが、どうすれば良いのでしょうか?
どうか、よろしくお願いします。
<%
Set objNewMail = CreateObject("CDONTS.NewMail")
objNewMail.From = Request("mail")
objNewMail.to = "XXXX@XXX.XXX.XXX"
objNewMail.Cc = Request("name");Request("boss")
objNewMail.Subject = Request("name") & "さんのご意見"
objNewMail.Body = Request("comment")
objNewMail.Send
Set objNewMail = Nothing
%>
お願いします。
216:nobodyさん
05/11/21 17:20:15
objNewMail.Cc = Request("name") & "," & Request("boss")
やないの?
217:nobodyさん
05/11/21 17:33:40
>>216
あっさり、できました!!!ありがとうございました!!
感謝します!!!
218:nobodyさん
05/11/24 01:17:36
DBからデータを取得して、
Office XP Webコンポーネントを使用して、
2軸のグラフを表示したいのですが、
どこか参考になるサイトありませんか?
219:nobodyさん
05/11/24 01:31:43
>218
[OFF2003] [HOWTO] Office Web コンポーネント (OWC) のプログラミングに役立つ各種情報とサンプル
URLリンク(support.microsoft.com)
220:nobodyさん
05/11/24 01:39:55
>218
サーバー側のグラフ作成機能を使用してグラフを動的に生成する方法
URLリンク(support.microsoft.com)
221:nobodyさん
05/11/24 10:31:12
あちこち調べてみましたがわからないので教えていただきたく。
WinServer2003+IIS6.0とOracle10gを組み合わせた
ASPのシステムを作ろうと思っています。
一つ問題がありまして、DB接続認証時にオーバーヘッドが発生しています。
> Set OraSession = CreateObject("OracleInProcServer.XOraSession")
> Set OraData = OraSession.DbOpenDatabase("DB01", "test/test", 0)
上記の処理を走らせるとOpen時に約3秒ほど待たされるのですが
これは解決の方法はあるのでしょうか?
IIS5.0の場合だと一瞬で処理が完了します。何か違いがあるんでしょうか?
222:661
05/11/27 10:29:06 j0DdBp+E
今、会社でASPの開発でInterDev6.0を使用しているのですが、
左側に行数を表示するできないのでしょうか?
223:nobodyさん
05/11/28 08:01:03
左側?
224:nobodyさん
05/11/28 23:20:24
>>222
行番号を表示ってことでしょ?
使ったこと無いから分からんが。
225:バッカーです ◆KeuXjwWDdE
05/11/29 01:26:36
インターデブ。あれ、何がいいのか未だにワカラン。
とりあえず行番号なら多分なかったと記憶してるよ。
226:nobodyさん
05/11/29 16:44:32
InterDevはサーバ側のVBScriptの部分と
クライアント側のJavascriptの部分の両方で
キーワード色分けが出来るのは良かった。
あと現在オープン中の全ファイルからの検索&置換。
とか言いつつも結局今はsakura使ってるがw
まあ少なくともデザインビューは100%使ってなかったな。
227:nobodyさん
05/11/29 20:40:46
色分けに関してはPeggyシリーズがとても良い
228:nobodyさん
05/11/30 18:15:34
最近、Perl・PHPからASPをやり始めたんですが、
ASP(VBScript)についてどうしてもわからないことがあります。
フォームからのPOSTデータを Request.Form() で
取得してるんですが、どうやら100KB以上のデータは
Form では受け取れないことに気づきました。
100KB以上のデータをPOSTする際には
どのように取得するのが一般的なんでしょうか?
(例え100K以下のデータを送信する場合でも、100Kの制限がある時点で、Form は使いたくなくなります…)
調べたところ、100K以上のデータを扱う場合には
data = Request.BinaryRead(Request.TotalBytes)
で取得できるとあったんですが、このデータをどう展開していいのかわかりませんでした…。
すみませんがご教示願います。
229:nobodyさん
05/11/30 21:26:15
まあ普通どんな長文だとしてもブラウザのtextareaに
原稿用紙みっちり埋めて128枚分は書かないからなあ。
あんまり大量のデータだったらファイル添付かな。
Request.BinaryReadで取得したデータはバイト配列なので
基本的にvbscriptではまともには扱えない
(まともじゃないやり方が無いわけではないが)。
VBとかCでDLL作って処理する用だね。
230:228
05/11/30 21:34:55
>>229
レス有難うございます。
なるほど、まともに扱えないんですね…
100KB を意識しつつ Request.Form() を使うことにします。
もう一つ不明点が出てきました。
フォームのチェックボックス(name="checkbox")を受け取った場合、
Request.Form("checkbox")(1) などで要素にアクセスできるので
配列かと思い、 IsArray( Request.Form("checkbox") ) をやったところFALSE が返ってきました。
普通の配列は TRUE が返ってくるんですがこれはそういうものなのでしょうか?
チェックボックスかどうかを判断する材料が無くて困っています。
231:nobodyさん
05/11/30 21:36:29
>>228
ADO.StreamかBASP21を使って展開するのが常識になってる。
あと、これも忘れずに
Windows 2003+IIS6で200KBを超えるファイルがアップロードできない
URLリンク(www.hi-ho.ne.jp)
232:nobodyさん
05/11/30 21:37:53
>>230
VB配列じゃない
233:nobodyさん
05/12/01 03:07:58
>>230
なんでname="checkbox"なんだよ
適当に分かりやすい名前つければいいじゃんw
234:228
05/12/01 12:15:06
>>231
別のモジュールで対応するんですね。
Win2003での不具合についても情報ありがとうございます
>>232
VB配列なるものが普通の配列って意味でしょうか?
となると普通の配列とそうでないものがあるんですね。。
(というかFormは配列じゃなくてただのオブジェクト??)
>>233
checkbox だよってのを明示的にわかりやすくしただけです。
テストでやっていたので業務ではこんなことしませんよw
235:nobodyさん
05/12/01 20:36:09
普通の配列で欲しければ
split(Request.Form("checkbox"),", ")
とかでそれっぽいの取れなかったっけかな
236:nobodyさん
05/12/01 20:45:37
>>234
Formはオブジェクトですな
ちなみに配列についてはVBScript上では
Variantの配列とバイナリ配列というのがあります
Variantの配列がいわゆる普通の配列で、
バイナリ配列は配列というよりただのバイナリデータの塊。
話の流れだとRequest.BinaryRead(Request.TotalBytes)で取得できるのが後者で、
文字列に近いイメージで、ADO.Stream,MidB,AscB,Hexなどを無理やり使えば
ある程度いじることは可能。
237:nobodyさん
05/12/03 00:00:48
>>234
Request とか Session は ASP Built-In Objects だから扱いが別。
Request.Form("checkbox") は IStringList ってオブジェクトだったと思う。
Count で要素数
Item(n) で各要素 (n >= 1)
フォームで送られてくるデータは name と value の組の単なるテキストだから
checkbox かどうかを判別する方法なんてそもそも存在しないよ。
238:nobodyさん
05/12/03 01:03:29
>>237
Request.Formはコレクションジャマイカ?
239:nobodyさん
05/12/04 20:53:53
Request.Form と Request.Form("checkbox") は違う
240:NT4.0
05/12/06 15:14:51 A31iTPx+
運用してるサーバが、突然、
「HTTP/1.1 新しい Session の作成に失敗しました」というエラーは吐くようになりました
原因わかる方いましたら、お願い致します
241:nobodyさん
05/12/06 15:18:22
メモリ不足?
一回再起動してみたら?
242:240
05/12/06 16:32:32 A31iTPx+
すいません
NT4 じゃなくて、2000 Server でした
再起動したら直ったんですけど、
原因不明のままだと、チトまずいんで・・・
243:nobodyさん
05/12/06 17:11:53 XSSghKFO
教えてください。
そこそこ閲覧のあるHPを公開したとして、ソースはなるべく短くし、DBとのやりとり(ストアド等)の数を減らしたり
してあげたほうがユーザー側にも、サーバー側にも負担って少ないですよね?
aspx.vbのソース行数を見ると1000行を軽く突破する勢いなんですが、多すぎますか?
ちなみに目標は1日1万ページビューで、SQL-SERVER+XPです
244:nobodyさん
05/12/06 17:48:36
>>242
セッションが新規作成できないくらいに、メモリ使ってるとか?
メモリを使って開放してないとか?
>>243
そこそこの定義がわからん。
1000行なんてコンマ何秒の処理だろ。
245:243
05/12/06 17:50:50
>>244
わかりにくくて申し訳ないです。
そこそこ=目標は1日1万ページビューです
ちょっと安心しました
246:nobodyさん
05/12/06 17:51:32
>>243
aspx.vbはスレ違いだが…
まあソースは短いに越したことは無いが、
1000行程度ならそう長い訳でもないだろう。
ASP.netならなおさらクラス定義やなんやかんやでソース上で行数食うしね。
DBとのやり取りも回数を減らすに越したことは無いが、
大抵はそれより「途中で無駄なデータを発生させない」ように
気をつけておいた方がいい。
たとえば20件ごとに表示するのに、データ全行取り出して
要らない部分を空読みしてスキップ、
というようなことをやるとデータが増えるにしたがってたちまち重くなる。
247:nobodyさん
05/12/06 19:00:09
ソースが短いからといって負荷が軽いとは言えない。
248:nobodyさん
05/12/06 21:58:25
asp.netってコンパイルするんでしょ?
じゃぁ1000行なんて余裕でしょ。
多少長くても、定義やセッションの切断とかを明確に書いた方が早いことが多いよ。
249:nobodyさん
05/12/07 00:47:24
>>248
実はレガシASPも実行時はコンパイルされてるぢょ
250:nobodyさん
05/12/07 11:04:22 Q9Fd97MO
a = Split(b, ",")
nCnt = 0
' EOFまでループ
Do Until OnjRS.EOF
' DBからの値を格納
hoge = NVL(ObjRS.Fields("hoge_id").Value, 0)
' 配列aのnCnt番目の値が、DBからの値と同じ時だけ、cに代入
If a(nCnt) = hoge Then
c = "ifの中"
End If
OnjRS.MoveNext
Loop
a(nCnt)部分でエラーが出ます。
過去ログなどから、UBoundで配列の最大要素番号を指定してから出ないと
エラーになることはわかったのですが、
実際、どのように書いたらいいのかわかりません…。
251:250
05/12/07 11:36:40
解決しますたm(__)m
激しく勘違いを…(((;゚Д゚))) ガクガクブルブル…
252:228
05/12/07 17:23:06
すみません、レス遅れました…
>>235
カンマ区切りの文字列を分解して配列にするイメージっすね。
チェックボックスがチェックされていなかったり、
一箇所のみチェックだったりしても split はエラーを返さないんですね
>>236
なるほど、やっぱり二種類あるんですね…
いまいち二種類を使い分ける方法がよくわかってません。
恐らくその種類によって使えるメソッドも変わるんでしょうね…
>>237
checkbox かの判断の意図は、
チェックボックスかがすぐわかれば、それでループかけて
どこがチェックされてるか調べることができるのかなと。
(PHPでは連想配列で入ってくれてたので、キーの指定だけで判断できました)
みなさんはどうされてるんですかね??
(というか普通はどうするものなんだろう…)
何か簡単なフォームASPのサンプルって転がってないですかねぇ…
VBScriptがなかなかなじまない…
253:228
05/12/07 17:34:56
結局のところ、フォームからのクエリを処理するために、
Request.Form の値を、
Set Query = CreateObject("Scripting.Dictionary")
とした連想配列(オブジェクト?)Queryにコピーしてから処理してます。
一般的にクエリを取得する場合は、Request.Form の 100KBの壁は無視されるのでしょうか?
それとも、ADO.Stream か BASP21 のようなツールを使って
Request.BinaryRead(Request.TotalBytes) からちゃんととるのでしょうか?
それと、ASPで連想配列を使いたい場合は、
Set Query = CreateObject("Scripting.Dictionary")
が一般的でしょうか?
また、連想配列の連想配列の場合は、
-----
Dim a1, a2
Set a1 = CreateObject("Scripting.Dictionary")
Set a2 = CreateObject("Scripting.Dictionary")
a2.add "key", "value"
a1.add "key", a2
Response.Write( a1.item("key").item("key") & "<hr>")
-----
な感じでやっています。
(変なことしてないかな…
すみません、ご指摘いただければと思います。
254:nobodyさん
05/12/07 19:51:07 +pnCfHBy
流れをぶった切ってADSIの質問をさせください。
ASPでユーザー認証を行うため、以下のプログラムを作成しました。
環境はWin2003サーバーとFreeBSD+Samba3.0+OpenLDAPで、
ドメインに信頼関係を持たせています。
以下のプログラムはSambaの握っているOpenLDAPを覗きに行っています。
strPath = "LDAP://xxx.xxx.xxx.xxx/ou=AAA,dc=BBB,dc=CCC"
strUser = "ユーザー名"
strPassword = "パスワード"
Set objDSO = GetObject("LDAP:")
Set objUser = objDSO.OpenDSObject( strPath, strUser, strPassword, 1)
どこをどう変えても動きやがりません。エラー '80072032'とのたまいます。
また、普通に
Set user = GetObject("LDAP://〜〜適当に〜")
としてuser(sambaSamAccount型)を取得した場合に
name = user.Get( "cn" )
とするとユーザー名が取れるくせに、
pass = user.Get( "sambaNTPassword" )
とするとエラー '8000500c'
ディレクトリのデータ型と、ネイティブ DS のデータ型を相互に変換することはできません
とのたまいやがります。
どなたか同じようなことで悩んだ方、よろしくおねがいしやすm(__)m
255:nobodyさん
05/12/07 22:18:10
>>228
複数のcheckboxがある場合はASPでは>>235みたいにするのが普通だと思う。
splitの後にisArrayで配列になったかのチェックをすればいい。
それと、おせっかいだとは思うが
Dictionaryは確かに便利だがその使い方は無駄だと思う。
Dictionaryを入れ子にしたりして美しくデータを確保してる余裕があったら
さっさとResponse.Writeしていくべき。
基本的にWebプログラムの振る舞いの一般論として
一つのスレッドで大量のメモリを確保するような設計は推奨されない。
それと100KBの壁にずいぶんこだわっているようだが
一体どんな使い方をしようとしているのか?
普通に使っていて一つのinputで100KBに達することは
まず無いと思うのだが。
>>254
cn=ユーザ名, を加えればいいんじゃない
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4886日前に更新/289 KB
担当:undef