mysqldumpで出力したデータ等でインサートできない時の確認

‘0000-00-00’がデータに含まれる場合

sql_modeを確認する。

SELECT @@GLOBAL.sql_mode;

STRICT_TRANS_TABLESやNO_ZERO_IN_DATEが設定されている場合、エラーとなる場合があるので要変更。

変更はmy.cnfに書くか、一時的であればインサート前にSET SESSIONで変更。

(以下例)

変更前

STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

変更

SET SESSION sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

Got a packet bigger than ‘max_allowed_packet’ bytesの対応

データ量がmax_allowed_packetの設定を越えている。

以下で現在の設定を確認。

show variables like 'max_allowed_packet';

my.cnfに以下を記述して変更(8MByteにするとき)

max_allowed_packet=8M

翻訳API Microsoft Translator 導入について

APIの機能よりもなによりも、前段のユーザー登録的なものが面倒だったので備忘録。

Microsoft TranslatorはWindows Azure Marketplaceで提供されている数々のアプリケーションの一つなのだが、
APIとして利用するためにはアクセストークンが必要。
アクセストークンはクライアントIDとクライアントシークレットを以って取得する。
クライアントIDとクライアントシークレットは、開発者としてWindows Azure Marketplaceにアプリケーションを登録することで利用可能となる。

以下、おおまかな手順
————————————————————
前段としてWindows Live IDでサインインしておく

1.Windows Live ID の作成(既にあるならそれでもOK)
[code]https://signup.live.com/signup.aspx?lic=1[/code]

2.サインイン
[code]https://login.live.com/login.srf[/code]

————————————————————
Windows Azure Marketplaceでの手順

3.Windows Azure Marketplaceにアクセスすると登録画面が表示されるので登録を完了する。
[code]https://datamarket.azure.com/[/code]

登録画面

4.Microsoft Translatorのページにアクセスし、右手の月額0円サインアップをクリックして完了させる。
[code]https://datamarket.azure.com/dataset/1899a118-d202-492c-aa16-ba21c33c06cb[/code]

サインアップ

5.APIを利用するために擬似的にアプリケーションを登録する。
[code]https://datamarket.azure.com/developer/applications[/code]
ここで登録するクライアントIDとクライアントシークレットをあとで利用する。

アプリケーション登録

クライアントID:任意
名前:適当
顧客の秘密:デフォルトのまま(クライアントシークレット)
リダイレクトURL:適当

6.アクセストークンの取得
所定のURLにクライアントIDやクライアントシークレットなどをPOST送信する。

7.翻訳
所定のURLに翻訳文字列をGET送信する。
このとき、Bearer認証のためのhttpヘッダを送信するが、
そこでアクセストークンが利用される。

※6,7のサンプルコードは以下参照
[code]http://msdn.microsoft.com/en-us/library/ff512417[/code]

================= 追記 ======================

How will I know when I reach my monthly usage limit?
http://msdn.microsoft.com/en-us/library/hh847649.aspx

[code]the API will return a “Quota Exceeded” message.[/code]
また、
[code]You can check your usage limit in your account in the My Account/My Data on Windows Azure Marketplace.[/code]
とある

My Account/My DataのURLは以下
[code]https://datamarket.azure.com/account/datasets[/code]

CentOS5.8 MRTGとSNMPのインストール・設定

CentOS5.8 MRTGとSNMPのインストール・設定

まずMRTG(Multi Router Traffic Grapher)利用に当たり必要なSNMP(Simple Network Management Protocol)のインストール&設定

■SNMPのインストール
必要パッケージ
net-snmp
net-snmp-libs
net-snmp-utils
net-snmp-devel

既にインストールされているか確認
[code]yum list installed | grep snmp[/code]

結果、インストール net-snmp-devel がなかったのでインストール
[code]yum -y install net-snmp-devel[/code]

■SNMPの設定
[code]vi /etc/snmp/snmpd.conf[/code]

ネットワーク範囲とコミュニティ名
com2sec [セキュリティ名] [アクセス許可範囲] [コミュニティ名]

今回はサーバ自身以外はアクセスしないので
アクセス許可範囲は localhost
(コミュニティ名はアクセスに利用するのでホントは予測されにくい文字列がベター)

[code]#com2sec notConfigUser  default       public
com2sec local       localhost        public[/code]

アクセスグループ
group [グループ名] [セキュリティモデルの指定(v1, v2c, usm)] [セキュリティ名]
グループ名は適当。セキュリティモデルはSNMPのバージョン1.2.3を指すようだがよくわからんので全部記述。
セキュリティ名はcom2secで記述したもの。
[code]#group   notConfigGroup v2c           notConfigUser
group   local_group     v1           local
group   local_group     v2c          local
group   local_group     usm          local[/code]

情報閲覧範囲の指定(view)
view [ビュー名] [タイプ(included, exclude)] [MIBのオブジェクトID]
(MIBはSNMPで公開する情報の集合でツリー構造のオブジェクト:詳細不明)
ビュー名は適当。タイプはinclude(指定した範囲)としてMIBのOIDは.1を記述。
1(.iso)以下の全情報にアクセスできることになる。
[code]#view    systemview    included   .1.3.6.1.2.1.1
#view    systemview    included   .1.3.6.1.2.1.25.1.1
view    all_view       included   .1[/code]

アクセス許可のための設定
access [グループ名] [Context] [セキュリティモデル名] [認証設定] [Contextマッチの方法] [読み(get)] [書き(set)] [通知(trap)]
グループ名はgroupで記述したもの。Contextは空欄(詳細不明)。セキュリティモデル名はany(全て)。認証設定はnoauth(認証なし)。Contextマッチの方法はexact(厳密に一致?)。読み・書き・通知の内読みにview名を記述。
[code]#access  notConfigGroup “” any noauth exact systemview none none
access local_group “” any noauth exact all_view none none[/code]

httpdのプロセス監視のための設定
[code]#proc mountd
proc httpd[/code]

ディスク容量監視のための設定
[code]#disk / 10000
disk /[/code]

CPU監視(load average)のための設定
load [1分間の平均] [5分間の平均] [15分間の平均]
設定した数値を超えるとエラー扱いとなる
[code]#load 12 14 14
load 12 14 14[/code]

※load averageはrun queueに入っているジョブの数。使用率ではない。でも数値が多ければジョブがたくさん発生していることになるから、結果付加が高いと考えられる。
uptimeコマンドでも取得できる。
load average: 0.13, 0.21, 0.22
左から1分、5分、15分間の平均ジョブ数。

■自動起動設定
[code]chkconfig snmpd on[/code]

■SNMPの起動
[code]/etc/rc.d/init.d/snmpd start[/code]

■SNMPから各種値を取得してみる
httpdのプロセス
[code]snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.2[/code]
DISK
[code]snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.9[/code]
load average
[code]snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.10[/code]
総空きメモリ(実空きメモリ+スワップ空き容量)。キロバイト単位
[code]snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.4.11[/code]

※snmpwalkがエラーになるなら設定を見直す。

■MRTGのインストール
[code]yum install -y mrtg[/code]

■MRTGの設定ファイル作成
[code]cd /etc/mrtg/[/code]

既存バックアップ
[code]mv mrtg.cfg mrtg.cfg.bak[/code]

作成
[community名]@[ホスト]
[code]cfgmaker –output /etc/mrtg/mrtg.cfg public@localhost[/code]

■MRTGの設定
[code]vi mrtg.cfg[/code]
[code]
# WorkDir: /home/http/mrtg
WorkDir: /var/www/mrtg

# Options[_]: growright, bits
Options[_]: growright, bits

#以下追加
Language:eucjp
#(日本語を使う場合)

#
#  CPU Load Avarage
#

Target[load]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@localhost:
ThreshMaxI[load]: 50
MaxBytes[load]: 10000
Title[load]: CPU Load Average
PageTop[load]: <H1> Load Average on xxServer </H1>
Options[load]: gauge,absolute,nopercent,noinfo,
YLegend[load]: CPU Load Average
YTicsFactor[load]: 0.01
Factor[load]: 0.01
ShortLegend[load]: pt.
Legend1[load]: 1 Minite Average
Legend2[load]: 5 Minite Average
LegendI[load]: 1 Minute
LegendO[load]: 5 Minute

#
# Available Memory “real” and “swap”
#

Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:public@localhost:
MaxBytes1[mem]: 1035168
MaxBytes2[mem]: 2031608
Title[mem]: Available Memory “real” and “swap”
PageTop[mem]: <H1>Available Memory “real” and “swap” on xxServer </H1>
Options[mem]: gauge, growright, noinfo
YLegend[mem]: Available Memory
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: real
LegendO[mem]: swap
Legend1[mem]: Available(real)[MBytes]
Legend2[mem]: Available(swap)[MBytes]

# 物理メモリ
# snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.4.5
# SWAP
# snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.4.3
# で値調査

#
# Number Of httpd process
#

Target[httpd]: .1.3.6.1.4.1.2021.2.1.5.1&.1.3.6.1.4.1.2021.2.1.4.1:public@localhost:
ThreshMaxI[httpd]: 50
MaxBytes[httpd]: 150
Title[httpd]: Number of httpd
PageTop[httpd]: <H1> Number of httpd on xxServer</H1>
YLegend[httpd]: Number of httpd
ShortLegend[httpd]: httpd
LegendI[httpd]: running httpd process
LegendO[httpd]: running httpd process

#
# Disk Usage
#

Target[df]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.1:public@localhost:
ThreshMaxI[df]: 80
MaxBytes[df]: 100
Title[df]: Disk Usage “/”
PageTop[df]: <H1>Disk Usage “/” on xxServer </H1>
Options[df]: gauge
YLegend[df]: Disk Usage
ShortLegend[df]: %
Legend1[df]:/
LegendI[df]:/

#
# Rate of CPU use
#
Target[cpu_use]: .1.3.6.1.4.1.2021.11.50.0&.1.3.6.1.4.1.2021.11.52.0:public@localhost:
MaxBytes[cpu_use]: 100
Options[cpu_use]: growright, noinfo, nopercent
YLegend[cpu_use]: CPU usage(%)
ShortLegend[cpu_use]: (%)
LegendI[cpu_use]: User
LegendO[cpu_use]: System
Legend1[cpu_use]: CPU use(User)
Legend2[cpu_use]: CPU use(System)
Title[cpu_use]: Rate of CPU use
PageTop[cpu_use]: <H1>Rate of CPU use</H1>[/code]

■MRTG実行
[code]LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg –lock-file /var/lock/mrtg/mrtg_l –confcache-file /var/lib/mrtg/mrtg.ok[/code]
(2回目まではWARNINGがでるので3回実行して確認)

■index.html 作成
[code]indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html[/code]

■Apache設定
[code]/etc/httpd/conf.d/mrtg.conf[/code]
を任意編集。
Apache再起動。
/var/www/mrtg/index.html
へアクセスしてグラフ群が表示されればOK

selectタグへのInnerHTMLによるoptionの追加

IEでselectタグへのInnerHTMLによるoptionの追加がうまくいかなかった。
以下の記事を発見。

[code]http://support.microsoft.com/kb/276228[/code]

ぐぐってる途中、他のHTMLタグでもIEのみうまくいかないって事象をちらほらみ見かけた。
もしかするとselectタグの他にもバグがあるのかも。
Internet Explorerには泣ける。

cpコマンドのalias

cpコマンドでfオプションを付加しても上書き問い合わせが行われ警告が出る。

これは、
[code]cp=’cp -i'[/code]
といったエイリアスが設定されていたためで、

[code]$ alias | grep cp[/code]
として確認できる。

エイリアスを無視したい場合は
[code]\cp -f[/code]
と先頭にバックスラッシュを付加する。
これで上書き問い合わせは行われない。

===================================
ちなみに、うちの環境の場合デフォルトで以下のaliasが設定されていた。

[code]# alias
alias cp=’cp -i’
alias l.=’ls -d .* –color=tty’
alias ll=’ls -l –color=tty’
alias ls=’ls –color=tty’
alias mv=’mv -i’
alias rm=’rm -i’
alias which=’alias | /usr/bin/which –tty-only –read-alias –show-dot –show-tilde'[/code]

Twitter(ツイッター)ウィジェットが表示されない

いままで表示されていたのに、突然表示されないケースがあり調査。

FireFoxでのみ表示されない。(エラー:TWTR is not defined)
文字コードがShift_JISのページから呼び出した場合表示されない。

正確な原因は不明だが、Shift_JISで呼び出すと正しく読み込めてない感じ。

http://widgets.twimg.com/j/2/widget.js
を呼び出す際、文字コードをUTF-8で指定したら表示された。

具体的には
[code][/code]

[code][/code]
に変更。

Plesk利用環境 で open_basedir(Apacheの設定) を変更する場合

—–
PHPでドキュメントルート以外にあるファイルやディレクトリを読みに行くと
[code]Warning: ~ open_basedir restriction in effect. ~[/code]
といったエラーになる場合がある。

—–
Pleskではバーチャルホストごとに
[code]/home/httpd/vhosts/example.com/conf/httpd.include[/code]
といった設定ファイルが作成されるが、
この中にopen_basedirの設定があり、かつ以下のようになっている。
[code]php_admin_value open_basedir “/home/httpd/vhosts/example.com/httpdocs:/tmp”[/code]
結果、前段のエラーとなる。

—–
open_basedirの設定部分を書き換えればいいのだが、
httpd.includeの冒頭に記載があるとおり、
Pleskの都合上?は直接編集してはいけないことになっている。
で、さらに読むとカスタマイズしたいなら
[code]/home/httpd/vhosts/example.com/conf/vhost.conf[/code]
でやれと。

—–
具体的には以下の手順で作成。反映させる

(1)ファイル作成
[code]vi /home/httpd/vhosts/example.com/conf/vhost.conf[/code]
(sslの場合 vhost_ssl.conf)

(2)内容記述(open_basedirの設定を上書き)
[code]
<Directory /home/httpd/vhosts/example.com/httpsdocs>
php_admin_flag engine on
php_admin_value open_basedir none
</Directory>[/code]

(3)設定反映
以下のコマンドを実行

[code]/usr/local/psa/admin/bin/websrvmng -v -a[/code]
/home/httpd/vhosts/example.com/conf/vhost.conf (vhost_ssl.conf)
が存在する場合、
/home/httpd/vhosts/example.com/conf/httpd.include
内にInclude文が記述される)

(4)設定確認
[code]/etc/init.d/httpd configtest[/code]

(5)apache再起動
[code]/etc/rc.d/init.d/httpd restart[/code]