2014年3月24日月曜日

MySQLのクエリのトレース設定手順

データベースでMySQLを使用している時、発行しているSQLを調査したい場合があります。
ボトルネックになっているSQL文や履歴を見たい時などで重宝するトレース機能というやつです。
MySQLの有償ツールを使用すれば簡単に出来るのですが、せっかくの無償のMySQL。ここも無償で使用したいですよね。

そんな時に、簡単に設定できるのでメモとして設定方法を記載したいと思います。

目次

  1. 前提条件
  2. mysql.iniの設定
  3. 動作確認
  4. 参考文献

前提条件

前提条件は以下を想定します。
  • OS:Windows
  • MySQLのバージョン:MySQL5.5.XX

mysql.iniの設定

トレースの設定方法は簡単で、グローバルオプションファイル(mysql.ini)の[mysqld]に以下の設定を追加し、起動するだけで設定できます。
[mysqld]
log
mysql.iniの保存場所は、データが保存されているディレクトリ「datadir」の一つ上の階層に存在します。
調べ方は、root権限でmysqlにログインをし、以下のSQLでわかります。
show variables like 'datadir';

動作確認

設定後、MySQLの再起動をすると、datadirで定義されているディレクトリに<ホスト名>.logで保存されます。
尚、出力されるSQLは以下の図の様な形になります。

参考文献

2014年2月27日木曜日

HTML5ではSVGとCanvasどっちを使うべきか?早見表

HTML5ベースの図やグラフを表示する要件が来ました。
そこでいろいろ調べた結果、HTML5では主にSVG(Scalable Vector Graphics)とCanvasが主な技術だとわかりました。
しかし、この2つの仕様・・・グラフをかけるJavascriptベースのライブラリは色々あるのですが、そのライブラリのレンダリングがどの仕様に基いて作られているかによって大きく変わります。
そこで、SVGとCanvasのメリット・デメリットなどを早見表としてまとめたのでメモとして記載したいと思います。

早見表


SVG Canvas
概要 Scalable Vector Graphicsの略称で、XMLをベースとした、2次元ベクターイメージ用の画像形式の1つである。解像度にかかわらず高品質な表示になる。 HTML5から新しく追加される図形を描く為の技術仕様
ブラウザ IE 9+ 9+
Firefox 26+ 26+
Chrome 31+ 31+
Safari 5.1+ 5.1+
Opera 19.0+ 19.0+
iOS Safari 3.2+ 3.2+
Opera Mini 5.0-7.0 5.0-7.0(部分的)
Android Browser 2.1-2.3(部分的)
3+
2.1-2.3(部分的)
3+
Blackberry
Browser
7.0+ 7.0+
IE Mobile 10.0+ 10.0+
パフォーマンス 画面サイズ - 画面が大きくなるほど描画するピクセル数も増加するためパフォーマンスが大きく低下
オブジェクト数 SVGがDOMに追加するオブジェクト数も増える為パフォーマンスが大きく低下 -
特徴 サイズに関係ない単純な画像描写によく使われる。 高速描画が特長であり、画像情報を保持する必要がない。
用途 概要 静的な画像、表示と印刷のための高品質ドキュメント 複雑なシーン、リアルタイムの数学的アニメーション、高パフォーマンス
具体例 チャートとグラフ 2D ゲーム
理由・場面 XML(SVG)に簡単にエクスポート出来る既存データからグラフを作成する。
ユーザー操作が必要である。
Webページのスタイルを使用する。
ゲームライブラリは低レベルグラフィックAPIを利用してきているため

結論

グラフならSVG、ゲームアニメーションならCanvasがいいっぽいです。
しかし、必ずしもこれじゃなきゃダメ!!ッて言うことではなく、時と場合によって色々柔軟に選択する必要があるということです。
う~ん・・・難しい

参考URL

2014年2月3日月曜日

Windowsサーバのサービス登録したアプリケーションがアクセス権限エラーになる時の対処方法

JBossをWindowsサーバでテストをしていた時、通常のログオンして起動してた時は、正常に起動し、外部サーバの共有ファイルなどのネットワークリソースにアクセス出来ていたのですが、Windowsのサービスを登録した時に、急にHTTPステータス503のアクセス権限がないエラーが出るようになったので、その時の対処方法をメモとして記載したいと思います。
JBossだけでなくネットワークリソースにアクセスする全てのアプリケーションで共通みたいです。例えばApacheなどがそうですね。

目次

  1. 検証環境
  2. 原因
  3. 対処方法
  4. 参考文献

検証環境

  • Windows Server 2008R2

原因

特に意識して設定しないと、サービス登録時のデフォルトログオンユーザーは、Local Systemで登録されます。
Local Systemアカウントは、ドメインのEveryoneグループに所属しないので、Local Systemアカウントのセキュリティコンテキストで実行されているサービスは、認証済みセッションを確立できないことから、アクセスできなくなります。

対処方法

サービスの起動のアカウントをネットワークリソースに許可されているアカウントに変更することで解決できます。
  1. スタートからコンピュータを選択し、右クリックから管理を選択する。
  2. サーバーマネージャが起動するので、サーバーマネージャ→構成→サービスの順に展開する。
  3. 該当サービスを選択し「プロパティ」を選択し「ログオン」タブを選択する。
  4. 「アカウント」にチェックをれ、必要情報を入力し、「OK」ボタンを押す。
  5. 実際にサービスを起動し、確かめてみる

参考文献

2013年12月19日木曜日

JBoss As 7のWindowsサービスの登録方法

JBoss As 7をWindowsのサービスに登録しようと思い、色々調べたのでメモとして記載したいと思います。
行いたい事としては、standalone.batで起動するのと同じ事をサービスを使って制御したいという内容です。

目次

  1. 前提条件
  2. 概要
  3. ダウンロード
  4. ファイルの設置
  5. service.batの設定
  6. サービスの登録
  7. サービスのアンインストール
  8. 参考文献

前提条件

  • Windows 32bit
  • JBoss As 7.1.1.Final
  • jboss-native-2.0.10

概要

JBossのコミュニティサイトから各OSに伴ったファイルをダウンロードし、既存のJBossに組み込んでサービスに導入します。
ダウンロードしたファイルの中でサービスに登録・削除・サービスで起動するexeが保存されていますので簡単に設定できます。

ダウンロード

以下のJBossのコミュニティサイトからJBoss Web ネイティブ コネクタをダウンロードします。
https://www.jboss.org/jbossweb/downloads/jboss-native

ファイルの設置

ダウンロードしたファイルをJBOSS_HOMEに展開します。
展開するとJBOSS_HOMEのbinフォルダにservice.batなどのexeが入ります。

service.batの設定

service.batを開き、以下の設定を変更します。
  1. サービス名の設定内容の変更
  2. サービス起動時にstandalone.batの呼び出し
  3. サービス停止時にOSを落とすコマンド解除

サービス名の設定内容の変更

service.batでサービス名を登録する為、同バッチのサービス情報を変更します。デフォルトはJBoss As 5の名前です。
  • 20行目:set SVCNAME=JBAS50SVC → JBoss7Server
  • 21行目:SVCDISP=JBoss Application Server 5.0 → JBoss AS 7.1.1.Final
  • 22行目:set SVCDESC=JBoss Application Server 5.0.0 GA/Platform: Windows x86 → JBoss AS 7.1.1.Final: Windows x86

サービス起動時にstandalone.batの呼び出し

call run.batをcall standalone.batに変更します。
該当箇所は75行目と104行目です。

サービス停止時にOSを落とすコマンド解除

デフォルトのバッチだとサービス停止時にshutdownコマンドを発行しているので、REMでコメントアウトします。
該当箇所は84行目、94行目です。
REM call shutdown -S < .s.lock >> shutdown.log 2>&1

サービスの登録

service.batの編集が終わったら、コマンドプロンプトでJBOSS_HOME\binフォルダに移動し、service.bat installを実行します。

サービスの削除

サービスの登録と同様に、JBOSS_HOME\binフォルダに移動し、service.bat uninstallを実行します。

以上

参考文献

2013年12月9日月曜日

ApacheのAJPを使うとHttpServletResponseのsendRedirectが動いてくれない時の対処(JBoss)

http://www.jboss.org/overview/
WebサーバにApache、アプリケーションサーバにJBossを使ってAJPでWebサーバとアプリケーションサーバを結んでいるのですが、アプリケーションの方でHttpServletResponseのsendRedirectが上手く動いてくれませんでした。
Tomcatでのserver.xmlの設定をいじった方法だとインターネット上で多く見られたのですが、JBossの対処方法があまりなかったのでメモとして記載したいと思います。

目次

  1. 前提条件
  2. リダイレクト出来ない理由
  3. JBoss設定ファイルstandalone.xmlの編集
  4. 参考文献

前提条件

  • Windows XP
  • JBoss As 7.1.1 final
  • apache 2.2
  • Java 1.7.XX

リダイレクト出来ない理由

アプリケーションサーバで動いているURLでリダイレクトする為、Webサーバにアクセスしているクライアントからは違ったURLを示している為っぽいです。(詳しくは不明)

JBoss設定ファイルstandalone.xmlの編集

JBossでAJPの設定をします。
詳しくは以下のURLから

JBoss As 7とApacheとの連携方法
ポイントとしては、standalone.xmlの設定のAJPの所をschemeが「ajp」ではなく、「http」にすることです。

<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>

schemがajpでも動いたのですが、リダイレクトが上手く動きませんでした。
ajpのままで動かすとapache経由でのリダイレクトが上手く返えらなくページが切り替わらない現象になりました。

参考文献

2013年11月25日月曜日

MySQLのエラー「Error Code: 1175」の対処方法

MySQLにてSQLで一括置換をしUpdateをかけようと思ったら、以下のエラーが出ました。

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.

メモとしてこのエラーの原因と対処方法を記載したいと思います。

目次

  1. 前提条件
  2. 原因
  3. 対応方法
  4. 参考文献

前提条件

  • MySQL 5.5.XX
  • Windows XP

原因

原因はMySQLの接続するクライアントの設定項目「SQL_SAFE_UPDATES」が1になっている為です。
MySQLのリファレンスマニュアルに以下の様な記載があります。

SQL_SAFE_UPDATES = {0 | 1}

もし1に設定すると、MySQL は WHERE 条項か LIMIT 条項内でキーを利用しない UPDATE か DELETE ステートメントを異常終了します。これは、キーが正しく利用されずその為に多数の行を変更、または削除する UPDATE か DELETE ステートメントをキャッチする事を可能にします。デフォルト値は0です。

対応方法

SQLを発行出来る環境から以下のコマンドで対応出来ます。

SET SQL_SAFE_UPDATES = 0;

後は以下の様なSQLで一括置換を行えばOKです。

update test set hoge = replace(hoge,'ab','12');

参考文献

2013年11月15日金曜日

Apache2.4によるWindowsの自己証明書の作成とmod sslの設定手順


Apache2.4をWindows 2008 Serverに導入する上で、OpenSSLを使ったSSLの自己証明書の作成手順で、迷ってしまったのでメモとして記載したいと思います。

目次

  1. 前提条件
  2. 自己証明書の作成
    1. 秘密鍵(server.key)の作成
    2. 公開鍵(server.csr)の作成
    3. デジタル証明書(server.crt)の作成
  3. mod sslの設定
  4. 参考文献

前提条件

  • Windows Server 2008SP2
  • Apache 2.4.6 OpenSSL導入済み

自己証明書の作成

ここでは、自己証明書をOpenSSLで作成し、Apacheに導入する手順を記載します。
Apache起動時のパスフレーズを入力することを省く為に秘密鍵はパスフレーズ無しで作成します。

秘密鍵(server.key)の作成

パスフレーズ無しの2048bitの鍵を作成します。
  1. コマンドプロンプトを起動しApacheのconfフォルダに移動します。
  2. 以下のコマンドを入力し、秘密鍵を作成します。
    ..\bin\openssl.exe genrsa -out server.key 2048
    

公開鍵(server.csr)の作成

  1. コマンドプロンプトを起動しApacheのconfフォルダに移動します。
  2. 以下のコマンド入力し、公開鍵を作成します。
    ..\bin\openssl.exe req -new -key server.key -out server.csr -config openssl.cnf
    

    各項目を入力していきます。
    • Country Name (2 letter code) [AU]: //2文字国名
    • State or Province Name (full name) [Some-State]: //都道府県
    • Locality Name (eg, city) []: //区市町村
    • Organization Name (eg, company) [Internet Widgits Pty Ltd]: //組織名
    • Organizational Unit Name (eg, section) []://部署名
    • Common Name (eg, YOUR name) []: //担当者名またはサーバ名など
    • Email Address []://メールアドレス 空でもOK
    • A challenge password []://[Enter]キー
    • An optional company name []:  //[Enter]キー

デジタル証明書(server.crt)の作成

ここでは有効期限が10年のデジタル証明書を作成します。
  1. コマンドプロンプトを起動しApacheのconfフォルダに移動します。
  2. 以下のコマンドを入力します。
    ..\bin\openssl.exe x509 -in server.csr -days 3650 -req -signkey server.key > server.crt

mod sslの設定

confフォルダにあるhttp.confを変更します。変更箇所は以下であります。
  • #LoadModule ssl_module modules/mod_ssl.soのコメント解除(#を取る)
  • #LoadModule socache_shmcb_module modlues/mod_socache_shmcd.soのコメント解除
  • #Include conf/extra/httpd-ssl.confのコメント解除(#を取る)

動作の確認

apacheを起動し、https://localhostで接続出来れば完了です。

参考文献

 

About

このブログは筆者の備忘録として色々記載しています。
Powered by Blogger.