したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

VBでつくられた2chブラウザ

11 </b><font color=#FF0000>(GQrDul2E)</font><b>:2003/03/28(金) 17:19 ID:ih5oMVcU
VB製の2chブラウザとそのサンプルプログラムはあるのかにゃあ?

2021 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/25(金) 22:29:41 ID:INERpPZw
メモリの中にテーブルを作成するコードを掲載しておく。
Dim Dt As New DataTable("Creature")
Dt.Columns.Add("ID")
Dt.Columns.Add("Name")
Dim NewRow As DataRow = Dt.NewRow
NewRow("ID") = 1
NewRow("Name") = "みるきーぱい"
Dt.Rows.Add(NewRow)
Dim NewRow2 As DataRow = Dt.NewRow
NewRow2("ID") = 2
NewRow2("Name") = "スーチーパイ"
Dt.Rows.Add(NewRow2)
'データセット内の値の変更
'Dt.Rows(0)("Name") = "みるきーぱい2"
Dim Ds As New DataSet
Ds.Tables.Add(Dt)
DataGrid1.DataSource = Ds.Tables(0) 'またはDt 、 テーブルがひとつだけのときはデータセットを使わないでデータテーブルDtでよい
DataGrid1.DataBind()
DataGrid1.Visible = True

2031 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/25(金) 22:47:53 ID:INERpPZw
データベースを設計する場合にフィールド(列)に型を指定するとおり、メモリ内テーブルにも型を指定する。
Dt.Columns.Add("ID", Type.GetType("System.Int64"))'←IDを数値型のうちのひとつに指定
Dt.Columns.Add("Name", Type.GetType("System.String"))'←名前フィールドは文字列型

2041 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/25(金) 23:12:14 ID:INERpPZw
用語について注釈しておく。
フィールド=列=Column=カラム
レコード=行=Row=ロー

ドットdt=ピクセルpx<>ポイントpt
ポイントは画面解像度によって値が変わってしまうので<>

2051 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 02:13:23 ID:INERpPZw
[実行結果]
メモリ内テーブルCreature
ID  Name
1  みるきーぱい
2  スーチーパイ
データベースを持っていなくてもデータをデータベース的に扱うことができるようになった。
これで多次元配列の混雑さから開放された。
もちろん、メモリ内のデータはいつか消えるので任意のタイミングで
データベースやXMLやテキストやCSVとして記録しておく。
ちなみにデータセットはApplicationオブジェクトとして常駐させないとページごとにデータセットが作成されパソコンをいたわる意味がなくなる。
あとは排他ロックなども必要なときは使ってデータの整合性を保つこと。

2061 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 15:08:39 ID:INERpPZw
ところでプログラミング中に変数の中を見てみたいことがあるが、
その変数が配列だと画面に表示するためには
For i=〜
For j=〜
 出力 多次元配列
Next
Next
みたいに配列を総当りで読み込むプログラムが必要だ。
しかしデータをデータセットで扱っていたなら
デバッグ用データグリッドコントロールのデータソース = データセット
としてデータグリッドにデータをバインド(連結)表示させるだけだ。

207& </b><font color=#FF0000>(wNEVt54c)</font><b>:2005/03/26(土) 16:19:44 ID:I1tMITBc
あのー、モzyいや、なんでもない

208名無しさん:2005/03/26(土) 17:33:00 ID:bMcCgW.w
俺様のチラシの裏

VBコーナー
ttp://www.geocities.co.jp/SilkRoad/4511/vb/vb.htm

2091 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 19:22:20 ID:INERpPZw
日本対イランがどうしたって?

2101 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 19:42:32 ID:INERpPZw
ところでテーブルと聞くと机や食卓しか想像できない方もいるだろう。
で、HTMLをかじると表を作るためのテーブルタグだとわかってくる。
さらにデータベースと出会うとデータを格納するための行と列を持った表だと知る。
今までの解説でも特にどのテーブルかは言っていないが、文脈からデータベースやHTMLや机を区別できているだろう。

211名無しさん:2005/03/26(土) 21:43:11 ID:I1tMITBc
行、列よりもどこでも配置、机最強説を唱えます。

2121 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/26(土) 22:09:07 ID:INERpPZw
         ,..-──- 、
        /. : : : : : : : : : \
       /.: : : : : : : : : : : : : : ヽ
      ,!::: : : :,-…-…-ミ: : : : :',
   r、r.r {:: : : : :i '⌒'  '⌒'i: : : : :}
  r |_,|_,|_,|{: : : : |  ェェ ェェ|: : : : :}
  |_,|_,|_,|/.{ : : : :|    ,.、 |:: : : :;!    なるほどなるほど・・・
  |_,|_,|_人そ(^i :i   r‐-ニ-| : : :ノ
  | )   ヽノ |イ!  ヽ二゙ イゞ
  |  `".`´  ノ\ ` ー一'丿 \
  人  入_ノ   \___/   /`丶´
/  \_/ \   /~ト、   /    l \
      /    \/l::::|ハ/     l-7 _ヽ
     /i    ⊂ニ''ー-ゝ_`ヽ、    |_厂 _゙:i
    /|    >‐- ̄`    \.  | .r'´  ヽ
    / |    丁二_     7\、|イ _/ ̄ \

2131 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 01:20:09 ID:INERpPZw
C++を勉強することにした。ゲームプログラミングの本はほとんどC++(VC++含む)だからだ。
C++はハードウェアを直接制御できるネイティブコードを作成できるのがよい。
これからC++の本を見に行くとしよう・・・

214名無しさん:2005/03/27(日) 11:34:02 ID:QPmiSey6
MozillaのXPCOM使ってマルチプラットフォームに仕上げてくれ

2151 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 14:18:42 ID:INERpPZw
ひまができたらな。

2161 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 23:38:49 ID:INERpPZw
ではアップローダで良く使われるSessionやApplicationオブジェクトについて
初学者が知らない重要事項を述べておく。
どちらも変数として使う分には同じ構造なのでSessionについての例にする。

2171 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 23:43:43 ID:INERpPZw
変数にはスコープ(適用範囲)があるが、Sessionは各クライアント内で有効な変数で、
Applicationはアプリケーション全体で有効である。
Webアプリの場合はあるページから別のページにジャンプするときにジャンプもとのページの情報はジャンプ先に引き継がれない。
したがって、ページどうしで値を送受信するいくつかの方法のうちのひとつがSessionやApplicationである。
Sessionの値はサーバ内にあり、クライアントには送信されないのでパスワードなどを格納しておくときはSessionが良い。
フォームやクエリストリングで渡すのは見られても良いデータである。

2181 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/27(日) 23:54:13 ID:INERpPZw
SessionやApplicationはコレクションであり、つまりその中には複数の要素が格納されている。
コレクションをひとつずつ操作することはできず、セッションを配列として扱いたいときに、
Session("A")(0)=1と値を代入するとエラーになる。
なので、いったん通常の配列を使い、それを丸ごとセッションに代入する。
Dim A(2) as Integer ={1,2,3}
Session("A")=A
これでセッションで配列を扱えるようになったとおもう。
あとはメモリに余裕があるならセッションが消えるまでの時間を長くする。
Session.Timeout=60(分)
これでキミも大物アップロダの管理人だ!

2191 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/07(木) 16:20:59 ID:cJyFducs
2chねらーの一部にはやさしくしてやりたいが、
スレ内でいいことをすると
ダメ2chねらーにも利益が行ってしまうから困ったもんだ。

220名無しさん:2005/04/07(木) 16:31:17 ID:juyXAnEU
自分のサイトに誘導してIP抜けば良いよ

2211 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/09(土) 23:09:36 ID:NeXcfvRM
ふーむ

2221 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/10(日) 00:34:48 ID:NeXcfvRM
記事を読み込むプログラム。
Dim myWeb As New WebClient
Dim b() As Byte
b = myWeb.DownloadData(URL)
Dim bStr As String = Encoding.UTF8.GetString(b)
画像などのファイルの場合はbのバイナリのままでよいが、掲示板の記事は文字列bStrに変換。
これが.NETのWebClientを使ったときのインターネットドキュメント取得方法である。
上記クラスを使うときは名前空間
System.Net
System.Text
をインポートします。
System.Net=WebClientクラス用
System.Text=文字コードのエンコード用

2231 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/10(日) 00:52:36 ID:NeXcfvRM
2chの場合は
Dim bStr As String = Encoding.GetEncoding("Shift-Jis").GetString(b)
シフトジスで文字列を得て、
それからさらにUTF-8にコンバートするのがよい。

2241 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/11(月) 04:10:18 ID:NeXcfvRM
2chに貼られているttp://abc.jpgにアクセスしたとしよう。
さてこれはなんだろうか?見かけは画像ファイルだが、クライアントに画像が送られてこないことの方が多い。
404のファイル無しの場合や503のサーバービジー状態の場合などである。
さらに、どこか画像とは関係ないアダルトページに飛ばされることもある。
これはサーバー側がリダイレクト機能を有効にして別ページにジャンプさせているのである。
正常なjpgだけを保存するには一旦ピクチャボックスに読み込ませてエラーになるかならないかを見てからがよい。
On Error Resume Nextを使ってエラートラップする。
PictureBox image=abc.jpg
Err.Number<>0のときはエラーなのでその.jpgは保存しない。
エラー判別しおわったら
Err.Clear
On Error Go To 0
でエラーが起こったらプログラムが止まる状態にしておいてデバッグしやすいようにしておく。

225名無しさん:2005/04/11(月) 16:45:18 ID:juyXAnEU
1.HTTPヘッダをチェック(Locationヘッダがあったらリダイレクト、404/403/500だったらファイルが存在しない)
2.画像かどうかのチェック
とやるのが良いのでは?

アプロダって直ぐに消えちゃうからP2Pの仕組みを付けてふたばブラウザのような仕組みを付けるべき。
ウェブページにも同様のことが言える。

2261 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/11(月) 23:49:25 ID:NeXcfvRM
>>225オレがすでにつくりおわてるのはそうしてあるが、あまりここではすべてのことは言わないようにしてるだけ。
---------------
おまいらエラーのでる.jpgも偽装ファイルとしてのちゃんとしたファイルかもしれんから
捨てずに保存しておくのがよいかもよ。エラーが出たら
偽造.jpgみたいにリネーム保存するのがよいかもよ。

227名無しさん:2005/04/12(火) 00:18:49 ID:juyXAnEU
極窓との連携とかすれば?
うpろだは*.jpg.htmlのようなものがあるけどあれって*.jpg.htmlをリファラに設定して*.jpgにアクセスすれば一発で見れそうだけど実際どうなんだろうか

2281 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/12(火) 02:31:47 ID:NeXcfvRM
極窓で判別できるファイルなら極窓コンポーネントをプログラムで利用すれば簡単だが、
最近の2chでの偽装は極窓では対応できないのがほとんどだから、結局2chのスレを読まないと正常なファイルに変換できない。

*.jpgのあるディレクトリをアップロダを観察してみてわかた場合は*.jpgに直接アクセスするためのアドレス文字列を作成するのは簡単。

2291 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/12(火) 02:58:14 ID:NeXcfvRM
abc[001-099].jpgというカキコミを自動的に
abc001.jpg

abc099.jpg
という名前に直してアクセスする操作も必要だな。

それに、自動取り込みソフトにはタイマーをつけたほうがいいぞっと。
〜時〜分にあるスレのファイルを取り込むといった時間指定取り込みがすぐにファイルが消える2chでは必要。

現行スレと過去スレを自動的に分ける機能も必須。
過去スレはどんどん別の記憶装置やDVD-Rに移動させちまおう。

まだまだこちらのアイデアはあるが機嫌がいいときに教えてやろう。

230名無しさん:2005/04/12(火) 16:43:55 ID:vcnCr0mk
掲示板システムで思ったがWinnyの掲示板システムを改良してShareの拡散うpっぽく他の人に任せちゃえば良いのではないかと思った。
その人がやめたらその時点で終わりだけど

#すれ違いスマソ

2311 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/12(火) 18:16:44 ID:NeXcfvRM
あえて シェアーと言ってみる

2321 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/13(水) 05:00:17 ID:NeXcfvRM
2chはShift-JisとUnicodeが混ざっているようなので
しばらくは文字コードについてしらべてみる。
スレはスレタイトルから?<>/などのWindowsのフォルダ名に禁止されている文字を消したり置き換えたりしたスレタイトルで保存する場合が多いが、
スレタイトルにまれにUnicodeが使われてるのを数回経験したことがある。
2chをShift-Jisと決めてかかると自作プログラムのどこが間違ってるのかわからないようなエラーに悩まされてうんざりすることは言っておく。

233名無しさん:2005/04/13(水) 17:14:03 ID:UgwMDIk.
内部でunicodeを使うべきでは?
ファイル名のエスケープは大変だろうね。
古いWindowsだとUnicode文字使えないし。
スレはスレ名が被る事もあるからそれも配慮しないと。
#余談だがVB6からも.NETのモジュールが使えるらしい

2341 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/14(木) 04:19:26 ID:B846RqWk
スレは
スレ名+スレIDで保存して重複を避けている。

2351 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/15(金) 11:55:14 ID:B846RqWk
スレタイトル 1234567890
スレタイトル(1234567890)

保存フォルダ名の作成にはいくつかパターンがあるがそこらへんは好みでよい。
上記例はどちらもスレタイトルとIDをいつでも文字列関数を駆使して分離できるのでマル
コンピュータの扱える形式で保存しておけばある程度プログラマの自由でよい。

236名無しさん:2005/04/16(土) 21:23:41 ID:ua06WDaY
クローラー&過剰リロード対策スレ2【新バーボン】
http://qb5.2ch.net/test/read.cgi/operate/1113647422/

厄介ですね

2371 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/16(土) 23:39:03 ID:DbGBN3FQ
機能制限のしすぎは嫌われる原因さ。
ほりえもんあたりが掲示板つくってくんないかな。

2381 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/16(土) 23:54:01 ID:DbGBN3FQ
雑談などはあまりしないリンク先のファイルにしか興味の無いオレたちのほうが
雑談中心の2chねらーよりはるかに2ch読み込み回数は少ないと言うことに気づけなかったみたいだね、2chの中の人は。
記事を丸ごと取り込むのは2chと裁判した一部の企業とかであってその組織は2chを高速で保存しまくるだろうが、
オレたちはリンク先のファイルのダウンロードの遅さに悩まされるから2chにはあまりアクセスしない。

2391 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 00:05:28 ID:DbGBN3FQ
たとえば警察の自宅からのアクセスが禁止になったとしよう。
そうしたらその警察は2chにたいして機嫌が悪くなって
2chの悪い部分を見つけて2chを法律的に規制するだろう。
サーバがアクセス過多で止まるのはユーザーもしょうがないなと我慢できるが、
2chにアク禁にされたり規制されるのはサーバにやさしくなったとしてもユーザーからはうらまれる。
そこらへんのユーザー心理を2chはもっとうまく処理しないと2ch関係者はいつか刺されてしまうかもしれない。

240名無しさん:2005/04/17(日) 02:24:48 ID:dd7xbrxU
>>237
ここ?
>>239
>2chはもっとうまく処理しないと
そこでWinnyの掲示板ですよ

2411 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 03:43:14 ID:DbGBN3FQ
まあねん

2421 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 08:19:39 ID:DbGBN3FQ
このスレの下のほうになぜかVBグッズの商品リンクがあるからみんな将来の自分のために買ってみてくれ。
もれは金持ちになる1年後に買う余裕が出てくるが。

2431 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 08:21:21 ID:DbGBN3FQ
『Webプログラマのための正規表現実践のツ...』をライブドアデパートで購入

さまざまなジャンルの選りすぐりアイテムがここに集結。お気に入りの商品がすぐに見つかる!じっくり選んで快適ショッピング。
depart.livedoor.com 『Visual Basicプログラマのため...』をライブドアデパートで購入

さまざまなジャンルの選りすぐりアイテムがここに集結。お気に入りの商品がすぐに見つかる!じっくり選んで快適ショッピング。
depart.livedoor.com

リンクはランダムだから何回かページ更新して見れ

244名無しさん:2005/04/17(日) 14:12:43 ID:eeUqVda2
言語仕様が標準化されてるC#マンセー

ところでmonoってどうよ>1

2451 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 19:25:46 ID:DbGBN3FQ
WindowsServerが高いから開発用クライアントはWindowsXP ProfessionalでサーバーにはLinux+monoが使われるのが流行る可能性はある。
が、一生Windows系だけいじって生活していきたいのが多くのマイクロソフト好きの望み。

246名無しさん:2005/04/17(日) 21:07:52 ID:eeUqVda2
オープンソースマンセーな俺には関係ない話ダガヤ

2471 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/17(日) 21:09:37 ID:DbGBN3FQ
特許とかからめるとやはり隠蔽も必要だが技術発展には公開も必要だから悩ましいもんだ。

248名無しさん:2005/04/17(日) 21:21:16 ID:eeUqVda2
そこでインストール時にビルドですよ
ダウソサイズも大きくなるしインストールも時間かかるけど特許侵害防げるし

2491 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/18(月) 02:22:01 ID:DbGBN3FQ
うーむ・・

2501 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/18(月) 06:21:24 ID:DbGBN3FQ
とりあえずDiscとDiskについて調べておくことをおすすめする。

2511 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/19(火) 16:35:50 ID:hn0ZmOIA
まずアプリを立ち上げてから実行するのは
ディスクの空き容量をチェックするプログラムがおススめだ。
容量チェックはSystem.IOでもFile System Objectでもよい。

2521 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/21(木) 09:26:44 ID:94QWdl1w
VB6.0からVB.NETになってめんどうになったのが大文字小文字を分ける部分があることです。
DataTable オブジェクトにアクセスするときは、
条件付きで大文字と小文字が区別されることに注意してください。
たとえば、"mydatatable" という名前の DataTable と "Mydatatable"
という名前のテーブルがある場合は、
この 2 つのーブルのどちらかを検索する文字列は大文字と小文字を区別すると見なされます。
ただし、"mydatatable" という名前は存在するが "Mydatatable" という名前が存在しない場合は、
検索文字列は大文字と小文字を区別しないと見なされます。

2531 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/21(木) 14:44:45 ID:94QWdl1w
メモリ内でテーブルを扱うようになっていろいろ実験しているが、メモリ内テーブルをSQLステートメントのようなコマンドの実験の様子。
下記の例は.NETをやるなら一生役立つので各行の意味を1秒眺めただけで理解できるようでないなら
データベース、SQLの勉強が必要だ。
Dim mySort As String
'mySort = "FileSize,FileName"
mySort = "index"
Dim myFileter As String
'myFileter = "FileSize>=0"
'myFileter = "index>10"
'myFileter = "Flg is null"
myFileter = "FileName Like '%.zip%'"

Dim DataRows As DataRow() = Dt.Select(myFileter, mySort, DataViewRowState.CurrentRows)

2541 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/21(木) 15:11:12 ID:94QWdl1w
最初はDataTableのSelectメソッドによる返り値もテーブルだと便利かなと思っていたが、
しかしADOのレコードセットに相当するものが出力されることを考えるとDataRowコレクションが戻り値なのもうなずける。

2551 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/04/25(月) 21:59:45 ID:94QWdl1w
DataTableに何行ものレコードがあるとする。
そのデータから必要なデータを抜き出した場合はその抜き出されたデータは
DataRow()またはDataViewどちらに格納しても良い。
DataRowは1行のレコードだが、DataRow()は複数のレコードで動的配列である。
データの更新が行う場合はDataRow()で、表示に特化させたい場合はDataViewが良い。
データテーブルはスキーマ(構造)の作成に何行かの記述が必要なため
配列変数よりも使用に手間がかかるが機能が豊富なので積極的に使っていきたい。

2561 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/05/06(金) 11:43:32 ID:pt6.P2oE
VB.NETのFormオブジェクトをグローバルで宣言しておくとVB6.0のような
開発性でVB.NETを扱えた。
VB6.0の便利さをVB.NETで実現するためには自分なりの工夫をすればよい。

2571 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/05/10(火) 03:34:02 ID:na6kNfbY
あまり働かないでずっと掲示板にいるのが神だとは悲しいものだ。

2581 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/05/18(水) 00:13:58 ID:T8FibFIw
クライアントアプリにもSQL Serverを採用する時代が来たようだ。

259名無しさん:2005/05/18(水) 01:59:02 ID:StC70F4g
まぢですか?
庶民はAccess付属のMSDEでいいでしょ

2601 ◆ExGQrDul2E:2005/05/23(月) 21:55:19 ID:T8FibFIw
2chで神になろうとしなければMSDEでもよいが。

2611 ◆ExGQrDul2E:2005/05/24(火) 00:14:19 ID:T8FibFIw
2chで必要なのは何日間もファイルが流れないで多量アクセスにも余裕で答えられるアップロダであり、
Webサーバ+MSDEだと5人までしか同時アクセスできん。

2621 ◆ExGQrDul2E:2005/05/24(火) 00:22:47 ID:T8FibFIw
庶民のクライアントアプリも同時アクセス5だと
インターネットから自動的にファイルや情報を集めるアプリだとすると
そのアプリはほとんどの情報をスルーしてしまうことになり、自動的にお宝を集めるアプリを目指してるキミにはものたりたりないはずだ。

263名無しさん:2005/05/25(水) 09:05:39 ID:4Z1r0KjE
> MSDEだと5人までしか同時アクセスできん。
100でもいくつでもアクセスできるよ
しょうもない記事を鵜呑みにしてないで自分で試してから書け

それにクライアント側での最近の流行はユーザ側でSQL鯖(含むMSDE)を建てないで済むSQLiteだよ
これはDLL配布だけで済むし基本的なSQL文は解釈してくれるし言うことない
身近なところではRSSリーダーや2chブラウザに組み込んで使用される実例が増えている

勉強不足だ
しっかり汁

2641 ◆ExGQrDul2E:2005/05/27(金) 19:30:42 ID:rY7x7oOg
( ^▽^)このスレおもしろーい

2651 ◆ExGQrDul2E:2005/07/12(火) 22:45:14 ID:ihzvuwJE
日本にお金持ちが現れて2chのような掲示板をつくり、そこは2chよりもユーザ思いのシステムであろうと予測される。
数十年後の予言である。

2661 ◆ExGQrDul2E:2005/07/19(火) 21:55:13 ID:y8dbjjbM
ホントこのモナジラBBSはくそスレばっかだな

2671 ◆ExGQrDul2E:2005/10/13(木) 02:38:24 ID:GRrXdLqk
さて、ネットにあるテキストドキュメントをダウンロードしてディスクに保存するプログラムを作ったので紹介する。
まずは名前空間のインポートを行う。
Imports System.Net
Imports System.Text
Imports System.IO
---------------
サーバへの送受信を行うクラスを使用する。
Dim WC As New WebClient
このクラスは先ほどインポートしたSystem.Netに含まれているものだ。
---------------
そしてアドレス文字列を準備する。
Dim UStr As String = "とりこみ対象ページのアドレス"
たとえばhttp://www.abcd.net/efg.htmlなど。
-----------------------------------------
ネットドキュメントをバイナリデータとして読み込む。
Dim DownLoadData As Byte() = WC.DownloadData(UStr)
-----------------------------------
今回はEUCコードのページをUTF-8に変換する例を挙げておく。
Dim UTF8Bytes As Byte() = Encoding.Convert(Encoding.GetEncoding("EUC-JP"), Encoding.UTF8, DownLoadData)
(画像ファイルなどはこのコード変換作業は不要だ。WindowsXPではUTF-8のドキュメントが扱いやすいようなのでUTF-8にしてみた。私がフランス語やドイツ語も使うこともあるのであえてShift-JISは見送った。)
----------------
エンコード後のバイナリデータをディスクに書き込むところ。
Dim fs As New FileStream(AppPath & "\DownLoad.html", FileMode.Create)
Dim w As New BinaryWriter(fs)
w.Write(UTF8Bytes)
w.Close()
fs.Close()

268名無しさん:2005/10/13(木) 05:15:15 ID:N4pIWB/U
わーい、1さん、おかえりなさい

2691 ◆ExGQrDul2E:2005/10/13(木) 07:41:32 ID:GRrXdLqk
うむ

2701 ◆ExGQrDul2E:2005/10/13(木) 19:09:37 ID:GRrXdLqk
ちなみにバイト配列をファイルとして保存しないで、
メモリ内に文字列変数としておいておきたい場合は
S = Encoding.UTF8.GetString(UTF8Bytes)
みたいにGetStringメソッドを使えばよい。

2711 ◆ExGQrDul2E:2005/10/14(金) 08:07:08 ID:wkvnVpxM
ネットドキュメントで取得すべきは
ズバリ競馬データである。
競馬で生活していくためには過去のレース結果を収集して分析しなければならない。

2721 ◆ExGQrDul2E:2005/10/15(土) 06:58:58 ID:wkvnVpxM
今はパソコンで馬券を買えるので
JRAホームページで無料会員に入ること。
土日は自宅で競馬をすればよい。

2731 ◆ExGQrDul2E:2005/10/15(土) 15:54:59 ID:FNbh/Qr2
競馬データを解析するプログラムを何千行も書いた。
そしてバグがありうまくうごかない。ノイローゼになるほど探したがどこが悪いのか見つからない。
泣く泣く0行目から新規に書くことにした。つらすぎる・・・・

プログラムのデバッグはVB.NETよりVB6.0のほうが優れているというのが体験的に感じられた。

2741 ◆ExGQrDul2E:2005/10/15(土) 16:28:55 ID:FNbh/Qr2
しかし、今日は競馬で3万勝てたので
プログラムの書き直しも苦にならないほど機嫌がいいのだ。競馬は毎月8回あるから
いつもこれぐらい勝てれば毎月20万ぐらいになる。
だからなんとしてでも競馬ソフトを開発しなければならない。
大事なのは、どの人気番の馬券が来たか、である。
人気番の解析ができるソフトを作れれば高い確率で当たり馬券を買えるのだ。

2751 ◆ExGQrDul2E:2005/10/16(日) 07:14:46 ID:FNbh/Qr2
.NETではメモリ内データベースであるDataTableをよく使うが、
Dt.Columns.Add("abc",GetType(String))
で列を加えて、
Dim Row1 as DataRow = Dt.NewRow
Row1("abc")="あいうえお"
Dt.Rows.Add(Row1)
で行を加える。
列はフィールド、行はレコードともいう。

書き込んだデータをすべて削除するメソッドはClearである。
Dt.Clear()
テーブル構造さえも消去するメソッドはResetである。
Dt.Reset()
先ほど加えた特定の列を削除するメソッドはRemoveである。
Dt.Columns.Remove("abc")

2761 ◆ExGQrDul2E:2005/10/16(日) 08:40:47 ID:FNbh/Qr2
プログラミング自体は簡単だ。
問題はシステム設計、仕様だ。
とくにデータを蓄積する場合はデータベースの設計が悩ましい。
競馬ソフトでは日付ごとに格納するか、馬券の式別ごとに格納するか、それの決定が微妙なのだ。
ハードディスクに余裕があるなら両方採用でもよい。
馬券で儲けることが目的ならまずは式別ごとに格納しよう。
あと1時間半で馬の発走時間になってしまうので私も急ピッチでコーディング中だ。

2771 ◆ExGQrDul2E:2005/10/16(日) 21:58:32 ID:WLy9nzRo
バグでプログラムが動かない件については
VB.NETのバグだとわかった。
インテリセンスinstrrev関数の-1が1になっていたり
dim lng1 as long
do while instr(lng1+,......

loop
では
ループの前にlng1=0と書いておかないとダメなことなど
VB.NET自体に修正すべきところがある。
バグがあったら自分と言語両方を疑おう。

2781 ◆ExGQrDul2E:2005/10/17(月) 07:16:32 ID:WLy9nzRo
テーブルにNull値を代入するにはDBNull.Valueを入れる。
Nullかどうかの検査はIsDBNull関数を使う。

2791 ◆ExGQrDul2E:2005/10/17(月) 20:45:29 ID:kmK7nyDQ
完成図
http://www.interq.or.jp/guitar/lead/up/2005_10_17_keibasoft.png

競馬場に毎日通ってるおじさんたちはこういったデータを手入力しているのだが
競馬データは膨大で一生かかっても入力できるものではない。
しかし私たちプログラミング経験者はボタンをクリックしただけで自動的にデータを集めるソフトを作れてしまうのだ。
私はネットドキュメントをインターネットから取得してそれをバイナリのままあるいは任意の文字コードの文字列に変換する方法を解説した。
それからメモリ内データベースであるデータテーブルの作り方も述べた。
それらを使って競馬データも取得するのだ。
あとはその競馬データを自分なりに解析して競馬でのもうけかたをあみだす。
マーチンゲールに最適な馬券の買い方を見つけるのだ。
たとえばX番人気を掛け金をY倍にしながら買い続ける。など。
とりあえず
ギャンブル マーチンゲール
で検索すればわたしの言っている意味もわかるだろう。そしてお金持ちになれる可能性も沸いてくるだろう。
私との出会いがあなたの人生を良い方向に変えたはずである。

2801 ◆ExGQrDul2E:2005/10/25(火) 20:31:17 ID:yyu0AzNw
最近2ch板リストページのアドレスがiij4uから別のに変わったのはまだ漏れしか知らないみたいだね

281名無しさん:2005/10/25(火) 21:30:54 ID:PwzqRQvE
>>280
かなり前からですよ

2821 ◆ExGQrDul2E:2005/10/29(土) 22:29:37 ID:ajdWMgkE
((((((;゚д゚)))))

2831 ◆ExGQrDul2E:2005/10/29(土) 22:41:33 ID:ajdWMgkE
Dtというメモリ内テーブルが定義されていたとする。
その列(フィールド、カラムともいう)のコレクションを得るにはどうするか?
Dim DC() as DataColumn
のなかにテーブル内の列情報を格納することはできないのだ。
DataColumnCollectionというオブジェクトがありそれに代入する。
Dim DC as DataColumnCollection
DC=Dt.Columns

これで列コレクションをテーブルから独立して扱えるようになった。
そのあとは
dim dc2 as datacolumn
For each dc2 in DC
列名取得
列に定義されているデータタイプ取得
Next

SQL="Create Table メモリ内テーブルと同じ構造定義"
Execute SQL

などのコードを書いてテーブルと同じ構造でSQL Serverにテーブルを自動的につくったりする。
メモリ内テーブル(データテーブル、DataTable)とSQL Serverの両方でテーブル作成するのは大変なので
これでデータテーブルのみ設計すればSQL Serverではわざわざ列を手動で作る必要は無くなった。

2841 ◆ExGQrDul2E:2005/10/29(土) 23:09:18 ID:ajdWMgkE
こちらはすでに作り終わってるのでもうちょっと紹介してみると
カラムをFor EachでまわしてDC.DataType.ToStringの戻り値がSystem.Int32だったら
SQL=SQL & "int"
などとしてSQL文に列定義をどんどん追加していけば最後にはDataTableと同じ構造をくれるようなSQL文ができあがるので
それを実行すればSQL ServerにDataTableと設計が同じなテーブルが作成される。

2851 ◆ExGQrDul2E:2005/10/29(土) 23:14:57 ID:ajdWMgkE
日本のギャンブルでは払戻最高額は2億円までと決められているとのことで、
配当のデータ型はint型 -2^31 (-2,147,483,648) から 2^31 - 1 (2,147,483,647) までの整数
で扱うことにした。
ナイチンゲールの法則の計算などはbigintやそれ以上の
万億兆京がいじょじょうこうかんせいさいごくごうがしゃあそうぎなゆた
という大きな数が扱えるデータ型にすること。

2861 ◆ExGQrDul2E:2005/10/30(日) 07:39:32 ID:ajdWMgkE
さてメモリ内データテーブルをハードディスクのSQL Serverに保存するところをやっているわけであるが、
ADO.NETでは
レコードセット.EOFに相当するものはデータリーダー.HasRow
である。
HasRowがTrueかFalseかによってSQL文は
InsertにするかUpdateにするかを決める。

2871 ◆ExGQrDul2E:2005/10/30(日) 11:38:42 ID:ajdWMgkE
データベースをいじるときは
Where文を書き忘れないこと。書き忘れるとデータベース全部が削除されたり上書きされたりしてしまう。

2881 ◆ExGQrDul2E:2005/10/30(日) 19:56:09 ID:2lbTmlQA
競馬データには
'95インターナショナルジョッキーズ
というクオーテーションを含んだ文字列がありこの'はSQL文では予約記号なので
SQL文で扱える形にエスケープさせること。

2891 ◆ExGQrDul2E:2005/10/30(日) 20:10:41 ID:2lbTmlQA
SQLエスケープ
「'」→「''」
「\ 」→「\ \ 」

2901 ◆ExGQrDul2E:2005/10/30(日) 21:16:46 ID:2lbTmlQA
\0 ASCII 0 (NUL)
\n 改行文字
\t タブ文字
\r リターン文字
\b バックスペース文字
\z ASCII 26 (Control-Z)。
\' シングルクォート( ' )
\" ダブルクォート( " )
\\ バックスラッシュ( \ )文字
\% % 文字
\_ _ 文字

2911 ◆ExGQrDul2E:2005/11/01(火) 07:56:40 ID:2lbTmlQA
前回はDataTableのテーブル構造をSQL Serverに自動作成するプログラムを書いた。
次はSQL Serverのテーブル構造をDataTableなどに自動作成するために必要なスキーマの取得をしてみる。
Dim CS As String = "Data Source=(local);Initial Catalog=Keiba;User ID=kimagure;Password=kimagure"
Dim conn As New SqlConnection(CS)
Dim SQL As String
SQL = "Select * From Race Where ID=20000105100000"
Dim cmd As SqlCommand = New SqlCommand(SQL, conn)
conn.Open()
Dim DR As SqlDataReader = cmd.ExecuteReader
DR.Read()
Dim schemaTable As DataTable = DR.GetSchemaTable()
Dim myRow As DataRow
Dim myCol As DataColumn
SS = ""
For Each myRow In schemaTable.Rows
For Each myCol In schemaTable.Columns
SS = SS & myCol.ColumnName & " = " & myRow(myCol).ToString() & CL
Next
Next
DF_.RTB1.Text = SS : DF_.Show()
LnanComp2:
DR.Close()
conn.Close()
LandComp:
Button1.Enabled = True
App.DoEvents()

2921 ◆ExGQrDul2E:2005/11/01(火) 07:58:53 ID:2lbTmlQA
このプログラムではSQL ServerがWindows認証になっていないのでセキュリティをアップさせる必要があるような大事なことはWindows認証でSQL Serverを扱うこと。

2931 ◆ExGQrDul2E:2005/11/01(火) 08:01:39 ID:2lbTmlQA
上記プログラムでschemaTableがどのような構造になっているかはデータグリッドに表示させるとわかりやすいだろう。
DataGrid1.DataSource = schemaTable

2941 ◆ExGQrDul2E:2005/11/01(火) 08:07:03 ID:2lbTmlQA
schemaTableの戻り値で特に大事なのは
ColumnName
ColumnSize
DataType
で、これらを取得すればSQL Serverのテーブルと構造が同じなDataTableを自動作成できる。

今回と前回のことを知っていれば、
DataTableあるいはSQL Serverどちらか一方だけのテーブル設計をすればよくなる。
両方とも手動で設計していたのではテーブル設計の仕様変更のたびに両方とも修正しなければならなくメンテナンス製に乏しくなる。

2951 ◆ExGQrDul2E:2005/11/01(火) 11:05:12 ID:2lbTmlQA
ユニーク列(主キー)があるばあいはそのこともスキーマ作成時に付加すること。

2961 ◆ExGQrDul2E:2005/11/09(水) 12:15:32 ID:oxEmRE/U
データビューのRowFilterやSortには私たちの目的を達成できるほどの柔軟性がないので
結局はデータテーブルから自前でデータを加工することになりその結果をまた別のデータテーブルに保存するであろうから、
そのときもフィールド名を自動的に取得してくれる今回のサンプルは役立つはずだ。

2971 ◆ExGQrDul2E:2005/11/11(金) 02:11:57 ID:oxEmRE/U
.NETになってコーディングが厳密になったとささやかれているとはいえ、
デフォルトプロパティに甘えることは許されている。
レコードのフィールドを厳密に指定するなら
Row.Item(indexまたはフィールド名)
だが、Itemというプロパティがデフォルトなため省略してしまって
Row.(indexまたはフィールド名)
と書いてもよい。
そのほか大文字小文字を区別しないですむ仕様などは私の好みであるしグラマーの労力軽減に役立っている。
Windows携帯がついに発売されるとのことで、VB6.0、VB.NETを信じてきたグラマーに希望の光が見えてきた感じである。

2981 ◆ExGQrDul2E:2005/11/24(木) 20:31:41 ID:FyL9DViM
問題
vbCrLf,vbLf,vbCrの改行コードの混じったテキストの改行コードをすべてvbCrLfにするコードを書きなさい。

299名無しさん:2005/11/24(木) 21:04:43 ID:Fl3fPTYk
なんでまじっちゃったの?

3001 ◆ExGQrDul2E:2005/11/26(土) 03:24:12 ID:oxEmRE/U
(?_?)

3011 ◆ExGQrDul2E:2005/11/26(土) 03:32:46 ID:oxEmRE/U
データグリッドコントロールでもっともいじりたいのは列の幅ではないだろうか。
整数値の列は幅が狭いだろうし、String列は幅の広さが必要だ。
デフォルトではすべての幅が均等に表示されてしまう。

DataGridの任意の列の幅を変更するコードを作ってみた。
DataGridには
dim Dt2 as new DataTable("Dt2")
とDt2という名前のデータテーブルを作ってそれを表示する。
そしてDt2にはColumns.AddやDt2.Rows.Add(DataRow)で列と行が追加してある。
今回存在する列名はo、oSの2つであるとする。
参考:Dt2.Columns.Add("o",gettype(Single))
↑oというなまえの列をSingle数値型で追加
Dt2の列を定義したらデータグリッドの列幅も操作できる。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板