年: 2012年

  • ASP.NET(VB)アップロードされたファイルをDBに保存する方法

    ASP.NETでアップロードされたファイルを、DBに格納する方法のメモ。

    開発をしていて、データの保存場所に困ることがある。
    フォルダにそのまま格納しておくと分散が大変とか、
    ファイルの管理が大変とか、いろいろな悩みがあるだろう。
    その時の選択肢としてよく上がるのが、DBをストレージとして使う方法だ。
    ファイルとしてフォルダに置くのではなく、DBに格納し必要な時にSQLで取り出す。
    データはDBに保存してあるので、DBのバックアップを取っておけばOK。
    DBのパフォーマンスは気になるが、選択肢としてあるだろう。

    そんなとき、ASP.NETでアップロードされたファイルを直接DBに保存する。
    ファイルとしてサーバ上に置かなくていいので、ゴミもできない便利な方法だ。

    ■画面側

    まず、ASPX側にはFileUploadコントロールを配置する。(これのIDはFileUpload1とする)
    これで、ファイルを指定するボタンとファイルが指定されるテキストボックスができる。

    ■VB側の処理

    FileUploadコントロールのPostedFile.InputStreamメソッドでアップロードされたファイルを
    Streamオブジェクト(バイトデータ)として読み込むことができる。
    ただ読むことができる、いってもそのままDBに格納できるわけではないので、
    一度、変数に読み取ったバイトコードを格納し、それをSQLパラメータにいれる。
    わかってしまえば、どうということはない処理だ。

    ■サンプルコード

     Try
         'SQL Connectionの作成(参考:マスタページ側で処理してる)
         Dim dbCon As SqlConnection = New SqlClient.SqlConnection
         dbCon.ConnectionString = ConfigurationManager.ConnectionStrings("DBconnect").ConnectionString
         dbCon.Open()
         
         'Transactionの作成(参考:マスタページ側で処理してる)
         Dim dbTrans As SqlTransaction
         dbTrans = dbCon.BeginTransaction(IsolationLevel.ReadCommitted)
          
          
         'DBには、VarBinary型もしくはimage型のFileDataというカラムがある想定
          Dim sql As String = "INSERT INTO FileStorage (FileData) VALUES (@file)"
          
          Dim command As SqlCommand = New SqlCommand(sql, dbCon, dbTrans)
          
          'Byteデータとしてアップロードされたファイルを読み込む
          Dim binaryData(FileUpload1.PostedFile.InputStream.Length) As Byte
          FileUpload1.PostedFile.InputStream.Read(binaryData, 0, FileUpload1.PostedFile.InputStream.Length)
          command.Parameters.Add("@file", SqlDbType.VarBinary).Value = binaryData
          
         'SQLの実行
         Dim result As String
         result = command.ExecuteNonQuery()
         
         'SQL Connectionを閉じる。
         dbCon.Close()
     Catch ex As Exception
         dbCon.Close()
         
         Response.Write("失敗。。。")
     End Try
    
  • ASP.NET(VB) アップロードされたファイルがPDFファイルかどうか判別する方法

    ASP.NETでアップロードされたファイルの種類を判別する方法のメモ。
    拡張子で判別するなら、バリデーションコントロールを使ったほうが楽だが、
    ここではmimeタイプを使って判別する方法を書く。

    ■ASPX側

    まず、ASPX側にはFileUploadコントロールを配置する。(これのIDはFileUpload1とする)
    これで、ファイルを指定するボタンとファイルが指定されるテキストボックスができる。

    ■VB側の処理

    FileUploadコントロールのHasFileメソッドを使い、ファイルが指定されているかを判別する。
    次に、PostedFile.ContentTypeメソッドを使い、アップロードされたファイルのmimeタイプを取得し、
    mimeタイプが”application/pdf”であるかを判別する。
    (PDFファイルがアップロードされた場合、mimeタイプはapplication/pdfになる)

    ■サンプルコード

     'ファイルが指定されているかどうかの判別
     If FileUpload1.HasFile Then
         'PDFファイルが指定されているかどうかmimeタイプから判別する
         If FileUpload1.PostedFile.ContentType = "application/pdf" Then
             'PDFファイルだった場合は、ここの処理を実行する
     
     
         End If
     End If
    
  • 中国のグレートファイアウォールが強化されVPN遮断かも?

    クリスマス・イブに届いたうれしくないニュースだ。中国のネットワークとインターネットの間にあるファイアウォール、それがグレートファイアウォール。(なんか変な表現だな・・・、他になんというべきだろうか。)これを使って、中国政府は都合の悪いウェブサイトへの通信を遮断する。最近だと、SNSやSkypeなどが規制されている(されたいた?)。数回、中国にいったことがあるが、このグレートな壁の所為で通信は安定しなかった。この迷惑な検閲システムが、さらに強化されるようだ。

    グレートファイアウォールが強化されて、今度はVPNについても 制限が行われるようだ。中身を傍受されることがあるのかないのかはわからない。ニュース記事によると、VPN接続の速度低下や切断があるとのこと。これが本当なら、中国の拠点と拠点間VPNを使用している企業は困ることになる。VPN上で、IP電話で通話していたものが使い物にならなくなったり、社外秘のデータのやり取りが困難になってくる。前々から、カントリーリスクの大きい国とは思っていたが、ここにきて更に危ない国になっている。中国での人件費もあがりつつし、この先、わざわざ中国でビジネスしなくてもいいだろう。

    ところで、Arcstar IP-VPNとかのサービスでも影響を受けているのだろうか。国内キャリアが提供しているサービスへの影響がとっても気になる。

    http://www.afpbb.com/article/environment-science-it/it/2917958/10022074

  • HTTP2.0のファーストドラフト公開の話

    もう1ヶ月も前の話だが、HTTPの次世代規格であるHTTP2.0のファーストドラフトが公開された。

    今、特に気にせずに使っているHTTPは1.1だ。これは1999年にRFCが提出された。自分がコンピュータを使い始めたのが2000年、HTMLやウェブについて勉強を始めたのが2001年だ。気にする前に決まっていれば、今のHTTP1.1が当たり前に感じるわけだ。そのHTTPの次世代規格がHTTP2.0だ。

    この10数年でHTTPを使った通信は、人々の暮らしを支えるものとして、無くてならないものになった。ウェブの閲覧はもちろんのこと、スマートフォンのアプリでつかっていたり、ゲームでもなんでも使っている。使い方も変わってきているし、今のHTTP1.1では限界が見えているから今、HTTP2.0の策定を行う必要があるのだろう。ユーザが使っている分には、HTTP1.1かHTTP2.0かは意識する必要はないだろうけど、エンジニアとしてはかなり大きな変化になるだろう。1.1から2.0への移行期の混乱やHTTP2.0を使ったアプリケーション開発、それからサーバの設定などなど。楽しそうな未来が待っていそうだ。

    まぁ、どこまでスムーズに移行されていくのかが心配だけど。時代に乗り遅れないように情報を集めたり、勉強したりしなくては。技術の世界は、ちょっとの油断でついていけなくなる。今でも、時代の最先端に追いつけていないわけで、これ以上、乗り遅れていきたくはないものだ。環境的な要因はあるものの最終的には個人の問題だし。

    また、HTTP2.0は利害関係なども含めて簡単には決まりそうも無い。いろいろな案があるので、まとめていくのは大変だろう。今のところ気になっているのは、HTTP2.0のベースになっているSPDYとHTTP2.0でTLSが必須になるのかというあたり。他はよくわからないので、何ともいえない。(ちゃんと調べろよ、といえばそれまでだけど。)

    ■参考URL

    今更とは思うが、HTTP2.0の話は書こうと思っていて仕事の忙しさを理由に書いていなかった。ブログなので、後から見返したり検索したりするので備忘録として書いておく。

  • Windows Server 2008 R2のライセンス再認証について

    Windows Server 2008 R2では、サーバのハードウェア構成を変更した際に再度ライセンス認証を求められる。ライセンス認証はデバイスドライバに変更があると、もう一度、正規のWindowsライセンスかどうかを認証するというものだ。

    ライセンスの認証を求められる場合は、画面の右下にライセンス認証を求めていくるポップアップが上がってくる。これがいつ上がってくるのかは不明だ。そのため、”サーバー マネージャー”を開いて、”サーバーの概要”のプロダクトIDを見るとよい。ライセンス認証されているかどうかが、ここに表示される。(認証済みの場合には、ID番号とともにライセンス認証済みと表示されている)

    ここで認証されていない旨が表示されている場合、ライセンス認証を行う。ライセンス認証は、”サーバーの概要”画面の右側に表示される。このメニューは、ライセンス認証済みの場合には表示されないので注意。

    ライセンス認証のメニューをクリックすると、ライセンスキーを入力する画面がポップアップで表示される。ライセンスキーの項目は、空のまま、”次へ”をクリックする。するとライセンス認証が実行され正規のライセンスであれば、認証される。

    この画面で、ライセンスキーを求められるのでライセンスキーを探してしまいがちだが、一度ライセンス認証したものであれば、表示はされていないが内部にキーをもっているので”次へ”ボタンを押すことができる。

    今回、ハマったのは仮想サーバのWindows Server 2008 R2を別のホストに移動させたところ、ネットワークアダプタが変更された。そのため、デバイスドライバに変更があり、再度、ライセンス認証を求めれた。当然、手元にライセンスキーはなく、あたふたとしてしまった。

  • 87CLOCKERS 2

    87CLOCKERS 2 (ヤングジャンプコミックス)87CLOCKERS 2 (ヤングジャンプコミックス)
    二ノ宮 知子

    集英社 2012-10-10
    売り上げランキング :

    Amazonで詳しく見る
    by G-Tools

    ひたすらオーバークロックに情熱を燃やす話。十年前くらいまでは、よくオーバークロックという話をきいた。今は、聞かなくなってしまったオーバークロック。ただそういうことにアンテナを張っていないだけなんだろうけど。

    2巻は、空冷でオーバークロックを行う話。空冷なので、CPUファンやケースにファンをつけて空気でCPUを冷やす。それに情熱を燃やす話だ。一般的なPCは空冷なので、それをどこまで極められるか、ってこと。クロックを上げるために電圧を調整するための装置があるってこと知った。それを操って限界に調整するんだねぇ。身近なだけに親近感がある話だった。

    この漫画を読んでいると、PCを自作したくなってくる。ここのところ、完成品ばかりだけど自作も面白いかも。ケースとか考えると高くつくんだよね。パーツにこだわってしまうからね。自作・・・いいかも。

  • 家入レオのLEOをかった。

    LEO(通常盤)LEO(通常盤)
    家入レオ

    ビクターエンタテインメント 2012-10-24
    売り上げランキング : 1330

    Amazonで詳しく見る
    by G-Tools

    家入レオのLEOを買った。と、いっても買ったのは先週の発売直後くらいだ。

    買ってから、いろいろとあった。先週末に豊洲ららぽーとに”ふらっ”と出かけたら、家入レオのフリーライブに遭遇。そこで買えば、優先席でライブを見られたのだけど、買った後だったのでライブの背後から、のんびりと観た。真後ろの真ん中だったのでよく見れた。まぁ、背後だったから音響は良くなかったけれど、のんびり観れたのはよかった。ライブ中も、何回か後ろをむいてパフォーマンスしていた。家入レオは最近のお気に入りですよ。

  • 暗殺教室 1巻

    暗殺教室 1 (ジャンプコミックス)
    暗殺教室 1 (ジャンプコミックス)松井 優征

    集英社 2012-11-02
    売り上げランキング :

    Amazonで詳しく見る
    by G-Tools
    ONE PIECE 68 (ジャンプコミックス) ニセコイ 4 (ジャンプコミックス) SKET DANCE 27 (ジャンプコミックス) クロガネ 6 (ジャンプコミックス) 貧乏神が! 14 (ジャンプコミックス)

    ちょっと前に連載がスタートしたと思ったら、もう単行本が発刊されるくらい連載が続いたらしい。

    このなんというか独特な空間というかストーリーがいい感じ。ネウロのときもそうだったけれど、キャラがいいんだよね。ストーリーもいいけれど、予想外の手入れが良いね。ぜひいい感じに連載が続いてほしい。

    そうそう、この本。本屋によっては置いてなかったり、そうかと思えば山積みだったり。あるところとないところがあって、ちょっと困り者。ワンピースの影に隠れてしまっているのが残念。あれと発売日が一緒だと、影に隠れてしまうんだよね。

  • VB.NETで消費税の計算をする

    消費税を計算する場合、原則として1円未満の場合は切り捨てを行う。
    (ただし、四捨五入も認められているので、四捨五入をしても間違えではない。)

    VBで消費税計算をする場合は、小数点以下を切り捨てるために Math.Floor() メソッドを使用する。

    ■例)

     Dim TaxRate As Double = 0.05
     Dim UnitPrice As Integer = 103
     Dim Total As Integer
     
     Total = Math.Floor(UnitPrice * TaxRate)
    

    ■結果:切り捨てしない場合には108.15、切り捨てにより108になる。

    計算結果に対して、Math.Floorメソッドを使うことにより、
    切り捨てた数をInteger型にいれることができる。

    ちなみに、小数点以下を切り上げしたい場合には、Math.Ceiling() メソッドを使う。

    他の方法としては、ToString() メソッドで小数点以下をまるめることもできる。
    変数.ToString(“C”) を指定することで、小数点以下を四捨五入することができる。

    ■例)

     Dim TaxRate As Double = 0.05
     Dim UnitPrice As Integer = 103
     Dim TotalTemp As Double
     Dim Total As Integer
     
     TotalTemp = UnitPrice * TaxRate
     Total = TotalTemp.ToString("C")
    

    この方法でも、小数点以下の表示はなくせるが、四捨五入になる。

  • .NET Framework 4.5のCLR

    .NET Framework 4.5では、CLRのバージョンが4.5になっており、独自のCLRとなった。
    .NET Frameworkは、2.0~3.5SPまでがCLR2.0、4.0がCLR4.0となっている。
    .NET Frameworkは実行環境がCLRのバージョンにより左右されるため、
    CLR4.0しか動作しないWindowsでは、.NET Framework4.5のアプリを
    動作させることができない。

    ただし、CLR4.0とCLR4.5は完全互換性があるとのこと。

    どちらにしても、基盤となるCLRのバージョンが違うため、
    開発などを進める際には注意が必要。
    互換性があるといっても、ベースになるバージョンが違うと実行できないはずなので、
    コンパイルのし直しなどは発生するはずだし、実行環境のアップデートが求められる。
    せめて、4系は同じCLRを使ってほしかったところではある。
    2系のように少し長いこと使えるようにしてくれると、
    開発する側はいろいろと楽なんだがね。