カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

C# WebBrowserのレンダリングモード

Visual C#にてブラウザを使用したアプリケーションを作成したとき、
WEBページを表示すると表示がおかしいと思って、ユーザーエージェントを確認してみると
IE7となっていました。

環境はWindows7でIE9なのになぜだろう?と思いました。
どうやら作成したアプリケーションではレンダリングモードが「7」で実行されているようです。

解決するにはレジストリを編集し、レンダリングモードを変更してやらないといけません。

ユーザーエージェントのレジストリキー

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

レンダリングモードのレジストリキー

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE

ユーザーエージェント、レンダリングモードをIE9にするには、それぞれのレジストリキーに
ユーザーエージェントは「9000」、レンダリングモードは「90000」という値を設定します。
続きを読む…»

10,082 views

フォームを開く/閉じる速度改善

MicroSoft ACCESSにて、フォームを開くとき、閉じるときの速度が遅い場合、
コードの書き方によって改善できることがあります。

以下のようにフォームを開くときにフィルターをかけていた場合

Private Sub Form_Load()

    DoCmd.ApplyFilter , "[Where条件]"

End Sub

上記の場合でいくと開くときにも時間がかかり、
更には、閉じるときにも時間がかかってしまいます。

改善するには、開くときにフィルター条件を引数に与えてしまいます。

Dim stDocName      As String
Dim stLinkCriteria As String

stDocName = "[フォーム名]"
stLinkCriteria = "[Where条件を指定]"

DoCmd.OpenForm stDocName, , , stLinkCriteria

この方法のほうが開く速度も閉じる速度も向上します。

13,389 views

WebViewを使ったハイブリッドアプリの作成 [Android]

HTML5+JavaScriptを使ってスマホアプリを開発することもできます。
ネイティブとWebアプリの機能を兼ね備えた、俗にハイブリッドアプリと呼ばれるそうです。

ここで作成するのはハイブリッドというには簡単すぎるものですが、
触りとなるものです。

まず、メインとなるアクティビティを作成します。
サンプルですので、WebViewのみ表示するものとなっています。

public class SampleActivity extends Activity {

    private final int FC = ViewGroup.LayoutParams.FILL_PARENT;
    public static WebView web;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(1);

        setContentView(linearLayout);

        web = new WebView(this);
        linearLayout.addView(web, new LayoutParams(FC, FC));

        // JavaScriptを有効にする
        web.getSettings().setJavaScriptEnabled(true);

        // JavaScriptにAPIを追加する
        web.addJavascriptInterface(new JavaScriptObject(this), "myapi");

        // スクロールバーを非表示にする
        web.setHorizontalScrollBarEnabled(false);
        web.setVerticalScrollBarEnabled(false);

        // フォーカスを有効にする
        web.setFocusable(true);

        // assetsディレクトリに用意したHTMLを読み込み
        web.loadUrl("file:///android_asset/sample.html");
    }

}

29行目のフォーカスを有効にするというのはデフォルトで有効になっていますが、
敢えて明示的に有効にしています。
どういった場合に無効にするのかと言いますと、全画面表示のゲームを作成する場合等です。
無効にする場合は引数をfalseとします。

web.setFocusable(false);

更にその場合はスリープモードにしないようにもしておいたほうがよいでしょう。
onCreateの最後にでも記述しておきましょう。

// スリープモードにしないようにする
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

次に、JavaScriptのAPIとなるクラスを作成します。 続きを読む…»

7,384 views

セカンダリDNSサーバーの設定

自前でセカンダリDNSサーバーを構築する際の設定例をご紹介します。

まずプライマリDNSサーバーの設定。
/etc/named.confでセカンダリを用意したいドメインのゾーン設定を修正します。

zone "example.jp" in {
    type master;
    file "example.jp";           //ゾーン設定ファイルを指定
    allow-transfer { 0.0.0.0; }; //セカンダリDNSサーバーのIPアドレス
};

allow-trasferでセカンダリDNSサーバーからのゾーン転送を許可する。※セキュリティ上必須

次にセカンダリDNSサーバーの設定をします。
/etc/named.conf

zone "example.jp" in {
    type slave;               //セカンダリなのでタイプをスレーブに指定
    file "slaves/example.jp"; //ゾーン設定ファイルを指定(省略可)
    masters { 0.0.0.0 };      //プライマリDNSサーバーのIPアドレス
};

それぞれnamedを再起動し設定完了。
ちなみに、ゾーン転送はTCP53ポートを使用するらしいのですが、UDPを解放しないとできなかった。
続きを読む…»

7,213 views

サーバーをプライベートネットワークで運用する場合の注意点

ブロードバンドルーターで静的IPマスカレードを使用し、サーバーをプライベートネットワークで運用する場合の注意点をご紹介。

サーバーをプライベートIPで運用する場合、内部での名前解決をしてあげないといけません。

内部からのドメイン名前解決は/etc/hostsファイルに以下のように記述
※ドメインがexample.jp、ルーターが192.168.100.1、サーバーがホストwwwの192.168.100.2とします。

192.168.100.2   www.example.jp

これを書いておかないとサーバー自身でも自サイトを見ることができません。
更に自サイト内でフルパス参照ができません。
※リンクでページを移動するだけなら可能(クライアントの名前解決によるため)

特に複数のウェブサーバーがあり、別のウェブサーバーからデータを
PHP等のプログラムを使って読み出そうとすると、名前解決できずにエラーになります。

他の事例としては、メールサーバーとウェブサーバーが同ネットワーク内に
別に存在する場合で、ウェブサーバーからフォーム等でメールを同ネットワーク内の
メールサーバーで受けているアドレスに送る場合にも注意が必要です。
続きを読む…»

4,650 views