2014年10月23日木曜日

VB.NET WebBrowserのバージョンはいくつ?

とあるシステム専用のWEBブラウザーを作るにあたり、VB.NETのWebBrowserコントロールを使用した。

コーディングが完了し、早速Webサイトを表示したらcss3を使用した部分が見事に崩れている。原因は、WebBrowserのバージョンにあった。デフォルトのままでWebBrowserを使用するとie7で動作する。今どきデフォルトがie7とは困ったものだ。

参考までに、WWWサーバー側で取得したブラウザー情報は以下の通り。
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

バージョンを任意のバージョンに変更するには、
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]に新たに値を追加する。追加する値は、プログラム名=ieのバージョン
例えば、"AcroRd32.exe"=dword:0000270f

私は常に最新版を使用したいので、最大値のdword:ffffffffを指定した。
この時はこれで上手く行ったのだが後日正常に動作しないことがあったので、AcroRd32.exeと同じ値に変更した。これで期待通りに動作した。2014/11/06変更

これで思った通りに表示することが出来た。

補足)
正式な実行プログラム名がhogehoge.exeだとすると、Visual Studioでデバッグ中は実行プログラム名がhogehoge.vshost.exeになるので、レジストリには両方登録しておいた方が便利だよ。

2014年8月22日金曜日

Got a packet bigger than 'max_allowed_packet' bytes

WWWサーバーをWebARENA Suite X V1からV2に移行することになり、WrodPressのMYSQLデータベースをV1からエクスポートし、V2にインポートした。その際、首題のエラーが発生した。

これは、WebARENA Suite X V2 高機能データベースのmax_allowed_packetの設定値が1MBであり、かつインポートしようとしたファイル中にこの設定値を超えるデータがあったので、インポート出来ないと言うことみたいだ。

WebARENAのテクニカルサポートに電話で問い合わせたら、max_allowed_packetの設定値を一時的に最大値の12MBにまで拡大してくれた。これにより、無事インポート作業が完了した。

V1とV2とでは設定値に差があるとサポートの方が説明してくれた。


2014年8月4日月曜日

NET COMMONSの引っ越し

レンタルサーバーで使用していたMYSQLのファイルサイズが、一つのDBは100MB迄という上限を超えてしまったので、新規にレンタルサーバーを契約してnc(NET COMMONS)を引っ越すことにした。引っ越しついでに今まで使用していたドメイン名も変更する事にした。引っ越しが完了するまでは色々と悩んだが、終らせた今振り返ってみると、引っ越しは思ったよりは単純な作業だった。同じように引っ越しで悩んでいる人に手順をご紹介(※この手順は正しい手順ではない可能性があります。気付いたら指摘してください)。

・当社の環境
レンタルサーバーはNTT PC COMMUNICATIONSのWebARENA

・旧nc環境
サーバーは SuiteX V1
MYSQLは標準のもの(MAX 100MB)
ドメイン名は独自ドメインでhoge.com
IPアドレスは、hoge1
ncインストール先は、home/

・新nc環境
サーバーは SuiteX V2 スタンダード
MYSQLは高機能データベースMySQL5(MAX 10GB)
ドメイン名は独自ドメインでnc.hoge.com
IPアドレスは、hoge2
ncインストール先は、home/nc.hoge.com/ ※マルチドメイン設定

つまり、ドメイン名もIPアドレスも違うという環境でのお引っ越し。


・手順
前提条件として、レンタルサーバーの設定(例えば、子ドメインの追加、マルチドメインの設定など)は終わっているものとする。※独自ドメインの場合、レジストラへの登録等の作業が必要だけど、その手順は割愛。
  1. 新nc用レンタルサーバーでhtaccessが有効であることを確認。確認方法はこちら
  2. 新MYSQLに旧MYSQLと同じデータベース名でデータベースを作成する。
  3. 管理者権限で旧ncにログインし、旧ncのサイトを閉鎖する。
  4. 旧ncをフルバックアップする。
  5. フルバックアップした旧ncを解凍。私の場合は、Windows PC上で解凍。解凍に使わせてもらったソフトはALZip。+Lhacaで解凍したら理由は不明だが解凍が不十分だった。
  6. 解凍した旧nc内のhome/.htaccessを削除 ※引っ越し先は、home直下ではなくhome/nc.hoge.com/の中なので、元の.htaccessとは内容が異なるから。
  7. 解凍した旧nc内のhome/webapp/config/install.inc.php の値を新nc用に変更
    // ----------------------------
    // ベースのURL値
    // ----------------------------
    define('BASE_URL', 'http://新ncのFQDN');
    例えば、define('BASE_URL', 'http://nc.hoge.com');
    // ----------------------------
    // データベース用設定値
    // ----------------------------
    define('DATABASE_DSN', 'mysql://DBユーザー名:パスワード@DBサーバー名/DB名');
    例えば、define('DATABASE_DSN', 'mysql://hogedbid:hogepass@localhost/hogedb');
  8. FTPソフトを使用して解凍した旧ncをnc.hoge.com/home/nc.hoge.comにコピー(バイナリーモード)。使わせてもらったソフトはWinSCP。
  9. nc.hoge.com/home/nc.hoge.com/webapp/config/install.inc.phpのパーミッションを444に変更。※これをしないとインストーラーが起動してしまう。
  10. パーミッションを777にするディレクトリ一覧
    index.phpがあるドキュメントルートディレクトリ(一般的にsrc直下 or src/htdocs直下)
    webapp/uploads以下のすべてのディレクトリ(ファイル)(chmod -R 777 uploads/)
    webapp/templates_cディレクトリ
  11. 解凍した旧nc内のbackup_full.sqlをテキストエディタで開き、http://hoge.com(旧URL)をhttp://nc.hoge.com(新URL)に全部置換。※この作業は、nc内のリンクを全部新しいurlに変更するために必要な作業。使用したエディタはMicrosoft社製 Visual Studio 2008。
  12. 置換したbackup_full.sqlを新MYSQLにインポート。インポートに使わせてもらったソフトは、BigDump。普通ならばphpMyAdminを使用してインポートすれば良いのだが、そもそも今回引っ越しする羽目になったのは、DBの容量が100MBを超えてしまった為。高機能データベースのphpMyAdminでは、インポート可能なファイルサイズが100MiBまでなのでそのままではインポート不可能。そこで、自動的にファイルを分割してインポートしてくれるBigDumpが大活躍。とても助かりました。
  13. これで新ncが動作する環境は整ったので新ncのurl(http://nc.hoge.com)に管理者でログオンし、モジュール管理から一括アップデート。※固定リンクの設定だとログオンした際、ページが見つからないとなってしまうが、慌てずアドレスに新ncのurl(http://nc.hoge.com)と入力し直せば大丈夫。※一括アップデートが重要。
  14. 固定リンクの設定をONにしている場合は、一旦OFFに設定後、再度ONに設定しなおし、.htaccessを作成しなおす。※nc.hoge.com/home/nc.hoge.com/直下に作成される。
  15. nc.hoge.com/home/nc.hoge.com/.htaccessの最終行に、php_value memory_limit 50Mを追加する。
  16. 旧ncサーバーにURL REDIRECTの設定をする。hoge.comをnc.hoge.comへリダイレクト。
  17. 完成

参考にしたurl
WebARENA NetCommons2
nc 4-07 バックアップ
BigDumpの使い方


2014年7月3日木曜日

定義 XML によるスキーマの確認が失敗しました。XML ドキュメントの行 | にエラーがあります。

EXCEL2013で作成したブックをACCESS2013でインポートしようとしたら、下図の様なエラーが発生してしまった。シートに問題があるのかと思いあれこれ試してみたが全く原因が分からない。
藁にもすがる思いでファイル名を変更したら正常にインポートできた。



最初にインポートしようとしたファイル名は、"部品シール追加.23.xlsx"
インポートに成功したファイル名は、"部品シール追加23.xlsx"
どうやらファイル名の途中に"."があるとインポートに失敗するようだ。

2014年6月13日金曜日

Microsoft.ACE.OLEDB.12.0 プロバイダはローカルのコンピュータに登録されていません。

VB.NETでデバッグ中、「Microsoft.ACE.OLEDB.12.0 プロバイダはローカルのコンピュータに登録されていません。」が表示されてしまった。

Microsoft.ACE.OLEDB.12.0を使ってEXCEL2013で作成したXLSXブックを読み込むプログラムなのだが、こんなメッセージが表示されデバッグが中断してしまった。

ネットで調べてみると、同じ障害で困っている人が沢山いるらしく、あちこちの掲示板に情報が書き込まれている。でも、私と同じ環境で障害が発生している人が見つからずネットを彷徨っていたら、マイクロソフトのOFFICEサポートに記載してあった。

驚いたことに最新のOFFICE2013にはこのコンポーネントが含まれていないそうだ。仕方がないので素直に[Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント]をダウンロードしインストールしたら正常に動作した。これだけの事なのに2時間以上無駄な時間を費やしてしまった。

私の環境は
Windows 7 Ultimate SP1 x64
OfficeはMS Office2013 Professional x86のみで他のバージョンは無し。
開発中のソフトはx86用
なので、素直にx86用をダウンロードした。

2014年6月9日月曜日

申し訳ございません。現在、お客様のプロダクト キーにアクセスすることができません。数分後にもう一度お試しください。

OFFICE 2013をセットアップする際、http://office.microsoft.comにログオンしてオンラインでインストールをするが、今回、プロダクトキーの表示ボタンをクリックすると、「申し訳ございません。現在、お客様のプロダクト キーにアクセスすることができません。数分後にもう一度お試しください。」が表示されてしまい、プロダクトキーを確認できない障害が発生した。このメッセージの通り、数分後に試してみても駄目、翌日試してみても駄目、その翌日も駄目と駄目駄目が続いた。

原因がこちら側にあるのではないかと思い、別なパソコンで試してみたが変わらず。
ie11の設定をリセットしてみたが変わらず。
Google Chromeで接続してみたが変わらず。
保有しているマイクロソフトの別なアカウントで試してみると正常にプロダクトキーが表示された。

こうしてみると、こちら側に問題があるのではなく、どうもマイクロソフト側に問題が在りそうな気がしてきた。そもそも数日前までは正常にプロダクトキーが表示されていたのだから。

Microsoft コミュニティで質問してみたが、ありきたりの回答。そんなことはとっくにやっているさ。話にならん。

Microsoftサポートに電話して相談した。すったもんだするうち、こちらで保有しているプロダクトキーの一覧表を送って欲しいと依頼され一覧表を送った。何日かして、Microsoftから電話があり、システム側に問題があったのでその対処をしているからもう少し待ってほしいと言われ待った。本日、http://office.microsoft.comにログオンしたら、正常にプロダクトキーが表示された。

こうした場合は、だいたいユーザー側に問題があると思いがちだけど、Microsoftも人の子、間違える事もあるんだよ。

2013年10月31日木曜日

話題の3Dプリンターを見学してきた

10月30日に国際展示場で開催された「ものづくりNEXT↑2013」を見学してきた。

世の中で話題の3Dプリンターとはなんぞやとの疑問は解決した。以下、私の出張報告書の一部抜粋。

3Dプリンターとは、3次元CADで設計したポリゴンデータ形式(拡張子はSTL)を基に「積層造形技術」を使用し物を作る機械です。積層と言う言葉が表すとおり、数ミクロンという薄い層を幾重にも積み重ねて物を作る技術です(正確な表現ではないかもしれませんが)。積層造形技術というのは実物をご覧いただく方が理解が早いです。正に百聞は一見にしかずです。

今回は樹脂で出来た物を実際に触れることが出来ました。見た目は、数ミクロンの積層なので表面は階段状になっていますが、触ったときに変な違和感はありません。材料によっては表面に金属のメッキをする事も可能で、メタリックのピカピカでつるつる(表面が階段状ではなく正に射出成形した製品と同等)のマウスが展示してありました。

素材は現在では100種類以上あり、代表的なものとしては金属、樹脂、石膏が上げられます。金属は高温、高圧に耐えるもの、プラスチックは固いものやバンドの様に柔軟性のある物、石膏はフルカラーが特徴です。作るときは、いくつかの素材やプリンターを組み合わせて作ることが重要だと言っていました。品質も射出成形、鋳造品、鍛造品に近い品質になってきました。

以前は試作で使用することが主目的でしたが、最近は技術が進歩したので、樹脂の射出成形に近い物が出来るようになり、製品としても使える物が作れるようになったそうです。私の知識不足で正確にはお伝えできませんが、特に、鋳造の砂型を作る時に鋳物の完成体として使われる発泡スチロールの代わりに、樹脂3Dプリンターで出力した物を使用すると、精度が向上するそうです。

また、10万円の樹脂で出来た試作品が3Dプリンターでは8,000円で作れた実績や、開発期間に数週間かかったものが数日に大幅短縮、鋳造の砂型の数も20個が4個に減った事例があるそうです。

3Dプリンターは1ロットが数十個程度迄がターゲットになります。製造する数が増えてくると、従来の射出成形や鍛造、鋳造の方がコスト面で良いとされます。

3Dプリンターは造形の自由度が高いことも特徴です。従来の射出成形や鋳造、鍛造では困難だった物も作ることが可能です。従来は溶接が必要な造形物を3Dプリンターならば鋳造の一体成形で作ることも可能です。また、その際、重量が60%も軽くなった事例もあるそうです。

3Dプリンターは動作音が静粛で殆ど音が聞こえません。インクジェットプリンターの様な騒音はありませんでした。数ミクロンの積層造形技術なので、1時間で2~3cmの高さを積み上げられます。