カテゴリー: 技術系

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

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

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

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

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

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

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

  • 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系のように少し長いこと使えるようにしてくれると、
    開発する側はいろいろと楽なんだがね。

  • VBで全角の文字列を半角の文字列に変換する

    strConv関数を使うことで、文字列の種類を変えられる。

    ■例)

     Dim Text As String = "WHAT TIME IS IT NOW?"
     Dim narrowText As String = StrConv(Text, VbStrConv.Narrow)
    

    ・VbStrConv.Narrow で文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換
    ・VbStrConv.Wide で文字列内の文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換

    他にも、VbStrConv.XXXで指定することにより、ひらがなからカタカナ、
    繁体字を簡体字、というように変換用のセットが用意されているため、
    簡単に変換することができる。

    なお、例のように全角文字から半角文字に変換する場合、
    文字列に含まれたカタカナが半角カタカナに変換されてしまうので注意が必要。

    カタカナのケアだけ別途やる必要があるので、万能ではない。
    カタカナが混じる場合は、別途組み合わせて対応が必要。

  • Apple、Mac版Java 6のセキュリティアップデートを公開

    Mac版のJavaってメンテナンスをしないといっていたような気がするのだけど、
    気のせいだったのかな?
    影響が大きいから、サポートを打ち切るといいつつ、
    Javaの利用が下火になるのを待っているということだろうか?
    どちらにしても、セキュリティアップデートは当てないといけないですね。

    http://www.itmedia.co.jp/enterprise/articles/1210/18/news024.html

  • Acrobat ProでPDFのフォームを編集したらファイルが肥大化する場合の対処

    Windows7でAcroabat X Pro でフォームを作成したり、フォームを編集したら、
    元が数10KBのファイルが数MBにまで肥大化した。

    PDFのファイルを最適化するために、別名で保存しても圧縮できない画像があるとかで
    ファイルのサイズはほぼ変わらず。(数10KB小さくなっただけ)
    PDFファイルの圧縮などを試していたら、フォーム自体が消えてしまったり。
    それでもファイルは小さくならない。
    前に同じような編集をした際には、ここまでPDFファイルが肥大化することはなかった。
    原因不明の謎な現象。

    前に編集したときと条件が異なるのは、Windows OSのバージョンだけ。
    ためしにWindows XP にAcrobato Proをインストールして同じ編集をした。
    すると、フォームを作成したときに若干ファイルサイズが大きくなるものの300KBくらいになった。
    (ここで編集したのは、肥大化したPDFファイルではなくて、フォームを作成する前の元のPDFだ。)
    XPの方で、別名で保存を行えば、PDFが最適化されてさらにコンパクトになった。

    結論: PDFファイルが肥大化した原因は、Windows7とAcrobatの組み合わせ

    原因はまったくもってわからないが、OSのバージョンによってAcrobatの動作が変わっている模様。
    そのため、PDFファイルに余計なものがついてファイルサイズが肥大化したようだ。
    不可解だが、なんとか解決。

    Windows 7 でPDFファイルの肥大化に困ったら、とりあえずWindows XPで試してみるとよい。

  • Google AppsによるGoogle+の管理機能

    Google+のApps用管理機能がリリースされた。

    http://cloud.watch.impress.co.jp/docs/news/20120830_556313.html
    http://googleenterprise-ja.blogspot.jp/2012/08/google.html

    Google+の管理機能は、Appsのコントロールパネルから、
    設定→サービス→Google+の順に選択し、
    全般のタブから、Google+ Premium機能をプレビューを選択することで有効になる。

    現在の機能で制限できるのは、

    • 投稿の共有設定 「新しい投稿のデフォルト設定を制限付きにする」
    • ハングアウトのオプション 「Apps以外のユーザは、招待されない限りハングアウトに参加できません」

    の2種類のみ。

    また、AppsのアカウントでGoogle+を行っているかどうかをプロフィールからユーザ毎に確認できる。

    ためしに登録してみてわかった注意点。

    1. プロフィールについては、管理者が公開範囲を指定することはできない。
      ユーザが自由に公開範囲を設定することができるため、個人情報をダダ漏れにすることも可能。
    2. Appsのユーザだけでなく、外部のG+ユーザともつながれる。
      (オープンなSNSなので、これも当然といえば当然なのだが。)
    3. 写真の共有は、Picasaを使うので、Google+を許可すると、Picasaも許可しなくてはならない。
    4. 日記の機能はなく、FB,TW,YMと同じく、つぶやき形式でのコミュニケーションになる
    5. ハングアウトでウェブ会議が可能。
    6. 情報公開の設定は、わかりにくく、設定を間違えると、Apps以外のユーザにも公開されてしまう。
      (ちょっと集中管理ができるくらいのFBと思った方がよさそう。)
    7. つぶやきについても、ユーザが自分で公開範囲を変更すれば、組織外のユーザにも公開できてしまう。
    8. 設定できる機能はいまのところ少ないが、Google Appsに作成した組織単位で設定をすることができる。

    これから管理機能がふえてくれることを期待したい。
    基本的には、ユーザの・・・使い方次第。
    いろいろと縛れると思っていたので、ちょっと拍子抜けな感じがする。

    あと、このPremium機能は、2013年末まで無料とかいてある。
    その後は、管理機能に対して別途、利用料をとるということなんだろうか。

  • VBで「August 31, 2012」のフォーマットで日付を表示させる方法

    VBで、どうしても「アルファベットの月表示 日, 年」のフォーマットで出力する必要があった。
    表示が「August 31, 2012」になるように整えなければならなったのだ。
    (今回は、本当にVB.NETでやった。古くて大変だった・・・)
    いろいろと調べてみると、上のフォーマットに曜日や時間つきで
    表示するフォーマットはあったが、月と日と年だけを表示するという
    フォーマットはなかった。

    組み合わせることによって、下記のフォーマットでいけることが判明。

     "MMMM d, yyyy"
    

    ポイントは、MMMMのところ。これにより、月が省略されない形で表示される。

    しかし、問題はこれだけではなく、日付の出力では実行環境のロケールをみていることが判明。
    英語で出力しようとしていたら、日本語で出力されて、文字化け。
    (ちなみにどんな日本語で出力されたかは不明・・・)
    整形して出力する際に、ロケールを指定する必要があった。

    こんな感じで書くとよい

     Dim usDate as Date = Date.Now()
     Dim culture As New System.Globalization.CultureInfo("en-us")
     Label.text = usDate.ToString("MMMM d, yyyy", culture)
    

    関数にするなら、こんな感じ。
    (日付フォーマット以外の文字列を渡すとクラッシュするので、その場合は空文字を返すようにしている)

         '----------------------------------------------------
         ' August 31, 2012 のフォーマットで文字列を返す関数
         '----------------------------------------------------
         Private Function getDateMDYformat(ByVal str As String)
             Try
                 Dim usDate As Date = str
                 Dim culture As New System.Globalization.CultureInfo("en-us")
                 Return usDate.ToString("MMMM d, yyyy", culture)
             Catch ex As Exception
                 Return ""
             End Try
     
         End Function
    

    ロケールによって出力が変わるというところは、かなりハマった。
    CultureInfoでちゃんと指定してやれば、US以外のフォーマットでも出せるとわかったのはめっけもん。
    VBは、やれることは多いんだけど、調べるのが大変だ。

  • Firefoxがウェブサイトみていると固まる

    WindowsでFirefoxを使っている人は要注意。Firefoxで無効にしたshockwaveプラグインがプラグインのアップデートによって有効化され、それが原因でいろいろなサイトでFirefoxが固まる。固まると、Firefoxから「スクリプト〜〜〜」という警告がでるまで、まともな反応を返さなくなってしまう。(タブの閉じるをクリックしても、反応するまでに結構時間がかかるので、反応しているのかイマイチわからない。)厄介なのは、自分で無効化したものが勝手に有効化されているので、原因の特定までに時間がかかるということ。

    サイトをみているだけで、Firefoxが固まる人は、プラグインでshockwaveプラグインを無効化したほうが良い。これを無効にすることで、Flashのコンテンツも見れなくなる。FlashよりもFirefoxが固まらなくなるほうが重要。

  • VBで改行コードを文字列に入れる方法

    VBで変数やコントロールに改行コードを入れるには、vbCrLfを指定する。
    (ControlChars.CrLf と指定してもよい)

    ■使い方

     Dim str As String
     str = "一行目" & vbCrLf
     str &= "2行目"
    

    ちなみに vbCr ならキャリッジリターン、vbLf ならラインフィードになる。
    開発によっては、vbLfを使うこともありえる。