SQUID で 以下のエラーが出た場合・・・
Your cache is running out of filedescriptors
要はファイルでスクリプタが足りませんよ~というエラー
1. 現在のSquidの状態を確認
# squidclient -p 8080 mgr:info | grep ‘file descri’
Maximum number of file descriptors: 1024
Available number of file descriptors: 1010
Reserved number of ile descriptors: 100
大概、ここの Maximum に引っかかっている
2. 調整 squid.conf
max_filedesc 数値
を追記
保存後 Squid を restart すれば 新しい値にて設定される
3. ついでに OS側も調整
/etc/sysctl.conf
に
fs.file-max = 数値(大体 65536)
を追記
sysctl -p
にて 設定を適用する
2012年12月9日日曜日
2012年12月2日日曜日
kernel: Clocksource tsc unstable
CentOS 6.3 仮想のゲストOSで
/var/log/messages に大量の
kernel: Clocksource tsc unstable (delta = XXXXXXXXX ns). Enable clocksource failover by adding clocksource_failover kernel parameter.
というログが出ていた。
仮想サーバーが 時刻同期のためにCPUのクロックカウンターをベースにしている故に発生するもののようです
最近のCPUはターボブーストやらスピードステップやらとクロック変動させるため
unstabe = 不安定だよ!って出ているみたいです
解決策:
以降のメッセージにあるとおり
Enable clocksource failover
をすればいいわけであり
代替のclocksource を用意すればいいってことですね
clocksource は 以下
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc acpi_pm
自分は acpi_pm を使うので
ゲストOS上の
/etc/grub.conf のカーネルパラメーターに clocksource_failover=acpi_pm を追加
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_web01-lv_root rd_NO_LUKS rd_LVM_LV=vg_web01/lv_root rd_NO_MD crashkernel=auto clocksource_failover=acpi_pm KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_web01/lv_swap LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet
/var/log/messages に大量の
kernel: Clocksource tsc unstable (delta = XXXXXXXXX ns). Enable clocksource failover by adding clocksource_failover kernel parameter.
というログが出ていた。
仮想サーバーが 時刻同期のためにCPUのクロックカウンターをベースにしている故に発生するもののようです
最近のCPUはターボブーストやらスピードステップやらとクロック変動させるため
unstabe = 不安定だよ!って出ているみたいです
解決策:
以降のメッセージにあるとおり
Enable clocksource failover
をすればいいわけであり
代替のclocksource を用意すればいいってことですね
clocksource は 以下
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc acpi_pm
自分は acpi_pm を使うので
ゲストOS上の
/etc/grub.conf のカーネルパラメーターに clocksource_failover=acpi_pm を追加
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_web01-lv_root rd_NO_LUKS rd_LVM_LV=vg_web01/lv_root rd_NO_MD crashkernel=auto clocksource_failover=acpi_pm KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_web01/lv_swap LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet
2012年10月8日月曜日
Docomo 回線で iPhone5 を使う
巷で話題のSIMフリー iPhone5 を手に入れたので Docomo SIM でやってみました
一応 Android も持っているので いきなり主回線のSIM カットは怖いので今回使用したのはB-MOBILEさんのSIM
失敗してもいいように2枚セットのやつ(本来の用途と違います)
で 出来上がったものが
Docomoだとアンテナ立たないんですよねー・・・でも通信できてます
一応 Android も持っているので いきなり主回線のSIM カットは怖いので今回使用したのはB-MOBILEさんのSIM
失敗してもいいように2枚セットのやつ(本来の用途と違います)
で 出来上がったものが
Docomoだとアンテナ立たないんですよねー・・・でも通信できてます
2012年9月14日金曜日
Yii をインストール
Yii を 使ってみたくなったので使ってみた
- Yii をダウンロード
http://www.yiiframework.com/ から [ Download Yii ] を選択してダウンロード - Yii を配置する
ダウンロードした Yii を 解凍
# tar -zxvf yii-1.1.12.b600af.tar.gz
Apacheのアクセス可能な領域にコピー
# cp -r yii-1.1.12.b600af /var/www/yii
※ Redhat人間なので /var/www 配下です - プロジェクトの作成
コマンドラインで スケルトンが作成されます
移動して
# cd /var/www/yii
コマンド
# ./framework/yiic webapp /var/www/hogehoge
yiic webapp スケルトン作成先 でOKです - ドキュメントルートを
/var/www/hogehoge へ設定すれば
して URL叩けば まずは完成です
2012年6月19日火曜日
/var配下が重い
/var 配下が重いので du をしてみた。
見ると /var/cache が6割をしてめており
掘り下げると /var/cache/yum が原因であることが判明
yum の キャッシュをクリアする場合
yum clean all で yum のキャッシュが全て消去
# yum clean
Error: clean requires an option: headers, packages, metadata, dbcache, plugins, expire-cache, all
header, packeages, metadata, dbcache, plugins, expire-cache, all が選択できるらしい
とりあえず all で 消去♪
見ると /var/cache が6割をしてめており
掘り下げると /var/cache/yum が原因であることが判明
yum の キャッシュをクリアする場合
yum clean all で yum のキャッシュが全て消去
# yum clean
Error: clean requires an option: headers, packages, metadata, dbcache, plugins, expire-cache, all
header, packeages, metadata, dbcache, plugins, expire-cache, all が選択できるらしい
とりあえず all で 消去♪
2012年6月17日日曜日
CentOS 5.0 以降のSAMBAマウント
RHEL/CentOS 5.0では smbマウントができない
mount コマンドに統合されたようです
例) Windowsサーバーの共有ファイルを CentOS 5.0でマウントし Windowsマシンで読み取る場合
mount コマンドに統合されたようです
mount -t cifs -o user=<ユーザー名>,password=<パスワード> //ホストIP/ディレクトリ ローカルマウント先ちなみに
mount -t cifs -o user=<ユーザー名>,codepage=<マウント先文字コード>,iocharset=<マウント元文字コード>,password=<パスワード> //ホストIP/ディレクトリ ローカルマウント先
例) Windowsサーバーの共有ファイルを CentOS 5.0でマウントし Windowsマシンで読み取る場合
mount -t cifs -o user=<ユーザー名>,codepage=932,iocharset=sjis,password=<パスワード> //ホストIP/ディレクトリ ローカルマウント先
特定ディレクトリ配下の拡張子を変更する
特定ディレクトリ配下のファイル拡張子を一括変換するスクリプト
このまま bashシェルで実行できる
for file in `find <検索対象ディレクトリ(フルパス)> -name "*.<検索対象拡張子>" -print`
do
res=`expr $file : "\(.*\).<検索対象拡張子>"`
mv $file $res.<置換拡張子>
done
このまま bashシェルで実行できる
for file in `find <検索対象ディレクトリ(フルパス)> -name "*.<検索対象拡張子>" -print`
do
res=`expr $file : "\(.*\).<検索対象拡張子>"`
mv $file $res.<置換拡張子>
done
Docomoでの入力モードの制御
・漢全
style="-wap-input-format:'*'"
・カナ半
style="-wap-input-format:'*'"
・数半
style="-wap-input-format:'*'"
・英半
style="-wap-input-format:'*'"
Softbankと互換性がなく使い勝手が悪い・・・
style="-wap-input-format:'*
・カナ半
style="-wap-input-format:'*
・数半
style="-wap-input-format:'*
・英半
style="-wap-input-format:'*
Softbankと互換性がなく使い勝手が悪い・・・
カーネルの整理
カーネルをアップデートする際 古いカーネルは削除されない。
したがってCronなどでアップデートを繰り返すと /boot 領域の要領が足らなくなり
アップデートエラーとなる
そんなときには
#package-cleanup --oldkernels
を実行することにより古いカーネルを削除し空きスペースを確保できる
したがってCronなどでアップデートを繰り返すと /boot 領域の要領が足らなくなり
アップデートエラーとなる
そんなときには
#package-cleanup --oldkernels
を実行することにより古いカーネルを削除し空きスペースを確保できる
PHPのセキュリティ対策 -バージョン隠蔽-
HTTPレスポンスヘッダーを除くと X-POWERED-BY: PHP X.X とPHPバージョンが表示される
== php.ini ==
expose_php = Off
とすることで隠蔽可能
== php.ini ==
expose_php = Off
とすることで隠蔽可能
Apache セキュリティ対策
autoindex
Apacheモジュール、ディレクトリオプション デフォルト 有効
index.html などデフォルト読み込みファイルがない場合 自動的にディレクトリリストを作成
ディレクトリ構造が露出するのでやめましょう
OFFの場合 FORBIDDEN表示
Apacheモジュール、ディレクトリオプション デフォルト 有効
index.html などデフォルト読み込みファイルがない場合 自動的にディレクトリリストを作成
ディレクトリ構造が露出するのでやめましょう
OFFの場合 FORBIDDEN表示
URLの最大文字数
ふと気になったので調べてみた
1.RFCは定義なし 255バイトを推奨としている
2.Internet Explorer は 2083 バイト(URL の最大長が 2083 バイトです)
3.Apache は 8177 バイト
それ以上は 414エラー Request-URI Too Large が返る
LimitRequestLine のデフォルト値は 8190 バイト
Apache 2.0 では 0 からDEFAULT_LIMIT_REQUEST_LINE (=8190)の間で設定可能
2.2はほぼ無制限
1.RFCは定義なし 255バイトを推奨としている
2.Internet Explorer は 2083 バイト(URL の最大長が 2083 バイトです)
3.Apache は 8177 バイト
それ以上は 414エラー Request-URI Too Large が返る
LimitRequestLine のデフォルト値は 8190 バイト
Apache 2.0 では 0 からDEFAULT_LIMIT_REQUEST_LINE (=8190)の間で設定可能
2.2はほぼ無制限
Postfixのボトルネック解析
postfix の状態解析コマンド
qshape
送り先別遅延内容とかの集計が出来るらしい・・・
・横軸には、キューの生存時間を最近のメッセージに対しては細かい間隔で、古いメッセージに対しては (等比級数的に) 多少粗い間隔で表示します。
・縦軸に送り先ドメイン -s をつけると送信者別になる
例) 遅延の多いドメインを見つける
qshape deferrer
qshape
送り先別遅延内容とかの集計が出来るらしい・・・
・横軸には、キューの生存時間を最近のメッセージに対しては細かい間隔で、古いメッセージに対しては (等比級数的に) 多少粗い間隔で表示します。
・縦軸に送り先ドメイン -s をつけると送信者別になる
例) 遅延の多いドメインを見つける
qshape deferrer
Docomoのリダイレクト
初期FOMAおよびそれ以前のDOCOMO機はリダイレクトをフルパスで記述する必要がある
例)
http://kitfox.blog63.fc2.com/
から http://kitfox.blog63.fc2.com/redirect_test.html リダイレクトするときに
リダイレクト先URLは
./redirect_test.html =>NG
/knowledge_base/redirect_test.html =>NG
http://kitfox.blog63.fc2.com/redirect_test.html => OK
となります
例)
http://kitfox.blog63.fc2.com/
から http://kitfox.blog63.fc2.com/redirect_test.html リダイレクトするときに
リダイレクト先URLは
./redirect_test.html =>NG
/knowledge_base/redirect_test.html =>NG
http://kitfox.blog63.fc2.com/redirect_test.html => OK
となります
ヴァーチャルアドレスの受信
サーバーのホストドメイン以外のメールを受ける際は
/etc/postfix/virtual に追記する(RHEL系のデフォルト)
書き換えただけでは動かない
書き換えたら
/usr/sbin/postmap /etc/postfix/virtual
にて適用する
/etc/postfix/virtual に追記する(RHEL系のデフォルト)
書き換えただけでは動かない
書き換えたら
/usr/sbin/postmap /etc/postfix/virtual
にて適用する
su 出来るユーザーを限定
pam を使うと su できるユーザーを限定できる
/etc/login.defs
SU_WHEEL_ONLY yes
/etc/pam.d/su
auth required /lib/security/pam_wheel.so
group=wheel
/etc/group
wheel:x:10:root,ユーザーID
あとは再起動するだけ
自己責任で!
/etc/login.defs
SU_WHEEL_ONLY yes
/etc/pam.d/su
auth required /lib/security/pam_wheel.so
group=wheel
/etc/group
wheel:x:10:root,ユーザーID
あとは再起動するだけ
自己責任で!
Excelで24時間をこえる表記
通常Excelでは 時間計算で24時間を超えると 25:00=> 1:00 と表示される
これを
25:00と表示させるには
ユーザー定義
にて
[h]:mi
といった具合に
[ ] で括ると表示できるようです
これを
25:00と表示させるには
ユーザー定義
にて
[h]:mi
といった具合に
[ ] で括ると表示できるようです
Procmail で 件名を書き換える
件名を書き換えて他のアドレスに転送するとともに自分でメールを保管
MAILDIR=$HOME/mail/inbox LOGFILE=$HOME/procmail.log SUBJECT=`formail -c -xSubject:` { |formail -i "Subject: 付加する文字列$SUBJECT" !転送先アドレス }
XEN の NTP設定
標準仕様ではゲストOS別にNTPを設定することができないらしい・・・
ゲストOS起動時のホストOSの時刻を標準時とするらしい。
個別に対応する場合は
# sysctl xen.independent_wallclock=1
または
# echo 1 >/proc/sys/xen/independent_wallclock
を実行
起動時に自動で上記を適用するのであれば
/etc/sysctl.conf
に
xen.independent_wallclock = 1
を追記する
ゲストOS起動時のホストOSの時刻を標準時とするらしい。
個別に対応する場合は
# sysctl xen.independent_wallclock=1
または
# echo 1 >/proc/sys/xen/independent_wallclock
を実行
起動時に自動で上記を適用するのであれば
/etc/sysctl.conf
に
xen.independent_wallclock = 1
を追記する
データベースチューニング innodb_buffer_pool_size
グローバルバッファ
InnoDBのデータやインデックスをキャッシュするためのメモリ上の領域
OS自身がキャッシュしない。
実装メモリの70-80%を目安に設定
innodb_buffer_pool_size=XXX
テーブルやインデックスデータをメモリに展開する際の上限
これを適正な値に引き上げることにより
Disk I/O が減らせ全体的なパフォーマンスアップにつながる
InnoDBのデータやインデックスをキャッシュするためのメモリ上の領域
OS自身がキャッシュしない。
実装メモリの70-80%を目安に設定
innodb_buffer_pool_size=XXX
テーブルやインデックスデータをメモリに展開する際の上限
これを適正な値に引き上げることにより
Disk I/O が減らせ全体的なパフォーマンスアップにつながる
データベースチューニング innodb_log_buffer_size
グローバルバッファ
InnoDBの更新ログを記録するメモリ上の領域
8MB?64MB程度に設定
更新ログは頻繁にフラッシュされるので大きくとらなくてもよい
※頻繁にフラッシュ
一般的にコミット時、またはバッファサイズまでデータを貯めきるとディスクに書き出される
InnoDBの更新ログを記録するメモリ上の領域
8MB?64MB程度に設定
更新ログは頻繁にフラッシュされるので大きくとらなくてもよい
※頻繁にフラッシュ
一般的にコミット時、またはバッファサイズまでデータを貯めきるとディスクに書き出される
XEN で クローンの作成
Xen仮想環境のクローン作成コマンド
virt-clone --original 元仮想イメージ --name 新仮想イメージ --file 新仮想イメージファイル
仮想環境を高速作成するのに便利
ちなみに・・・
上記コマンドの実行にはpython-virtinst パッケージが必要になります。
# yum install python-virtinst
virt-clone --original 元仮想イメージ --name 新仮想イメージ --file 新仮想イメージファイル
仮想環境を高速作成するのに便利
ちなみに・・・
上記コマンドの実行にはpython-virtinst パッケージが必要になります。
# yum install python-virtinst
MySQL で Rsync っぽいことを
mysql_dump で エクスポートして インポートするのがめんどくさくなった・・・
直接パイプしてしまえということで以下の通り・・・
所得側で・・・
mysqldump -h <データ取得先ホスト名> <データ取得先DB名> -u<データ取得先接続ユーザー> -p<データ取得先パスワード> | mysql -u<ローカルユーザー> -p<ローカルパスワード> <格納先DB> --default-character-set=<キャラセット>
ミソはキャラセットを取得先と格納先を合わせること
これなら異なるバージョン間でデータ移設が可能
直接パイプしてしまえということで以下の通り・・・
所得側で・・・
mysqldump -h <データ取得先ホスト名> <データ取得先DB名> -u<データ取得先接続ユーザー> -p<データ取得先パスワード> | mysql -u<ローカルユーザー> -p<ローカルパスワード> <格納先DB> --default-character-set=<キャラセット>
ミソはキャラセットを取得先と格納先を合わせること
これなら異なるバージョン間でデータ移設が可能
Apache の internal dummy connection
Apache 2.2 から internal dummy connection というログが頻出するようになった
MPMで稼動する場合、子プロセスの再起動が必要なるが これらが自発的にSHUTDOWNできないため
親から internal dummy connection を発行して SHUTDOWNを促している模様
消せる方法は今のところないそうです・・・
MPMで稼動する場合、子プロセスの再起動が必要なるが これらが自発的にSHUTDOWNできないため
親から internal dummy connection を発行して SHUTDOWNを促している模様
消せる方法は今のところないそうです・・・
mysqldump の 文字化け
MySQL関連で一番受ける質問が mysqldump
よく文字化けする・・・
mysqldump は デフォルト UTF-8 で出力
これ以外の文字コードで DBを作ると
DBの文字コード->UTF-8 で出力される
これを回避するため
--default-character-set=出力文字コード
を mysqldump 時のオプションで渡す。
こんな感じ・・・
EUCの例
mysqldump --default-character-set=ujis -uroot -p データベース名 > 出力ファイル
よく文字化けする・・・
mysqldump は デフォルト UTF-8 で出力
これ以外の文字コードで DBを作ると
DBの文字コード->UTF-8 で出力される
これを回避するため
--default-character-set=出力文字コード
を mysqldump 時のオプションで渡す。
こんな感じ・・・
EUCの例
mysqldump --default-character-set=ujis -uroot -p データベース名 > 出力ファイル
Linux で CPU 情報を確認
Linux で CPU 情報を確認する
$ cat /proc/cpuinfo
processor : プロセッサ番号
vendor_id : 製造メーカー
model name : CPU名
cpu MHz : 周波数
cache size : キャッシュ容量
このくらいわかれば・・・
$ cat /proc/cpuinfo
processor : プロセッサ番号
vendor_id : 製造メーカー
model name : CPU名
cpu MHz : 周波数
cache size : キャッシュ容量
このくらいわかれば・・・
Linux で HDD のスペックを確認する
Linux で HDD のスペックを調べる
型番
$ cat /proc/ide/hda/model
容量
$ cat /proc/ide/hda/capacity
見てのとおり
HDD/知りたい項目
といった順に構成されています。
型番
$ cat /proc/ide/hda/model
容量
$ cat /proc/ide/hda/capacity
見てのとおり
HDD/知りたい項目
といった順に構成されています。
MySQLの外部キー 一覧
SELECT
F1.TABLE_SCHEMA AS TABLE_SCHEMA
,F1.TABLE_NAME AS TABLE_NAME
,F1.COLUMN_NAME AS COLUMN_NAME
,F2.CONSTRAINT_TYPE AS CONSTRAINT_TYPE
,F2.CONSTRAINT_NAME AS CONSTRAINT_NAME
FROM
information_schema.KEY_COLUMN_USAGE F1
LEFT JOIN information_schema.TABLE_CONSTRAINTS F2 ON F1.TABLE_SCHEMA = F2.TABLE_SCHEMA
AND F1.CONSTRAINT_NAME = F2.CONSTRAINT_NAME
WHERE
F2.CONSTRAINT_TYPE = 'FOREIGN KEY'
;
F1.TABLE_SCHEMA AS TABLE_SCHEMA
,F1.TABLE_NAME AS TABLE_NAME
,F1.COLUMN_NAME AS COLUMN_NAME
,F2.CONSTRAINT_TYPE AS CONSTRAINT_TYPE
,F2.CONSTRAINT_NAME AS CONSTRAINT_NAME
FROM
information_schema.KEY_COLUMN_USAGE F1
LEFT JOIN information_schema.TABLE_CONSTRAINTS F2 ON F1.TABLE_SCHEMA = F2.TABLE_SCHEMA
AND F1.CONSTRAINT_NAME = F2.CONSTRAINT_NAME
WHERE
F2.CONSTRAINT_TYPE = 'FOREIGN KEY'
;
PHP で ZIP を扱う
phpで Zip 解凍をやりたいと思い
Zip_Archive を入れる
yum install php-devel
yum install zlib-devel
pecl install zip
phpize の途中でこける・・・ orz
環境
CentOS 5.2
php 5.1.6
pecl の Zip みても問題ないみたいなのですが
とりあえず
pecl install zip-1.8.10
で古いバージョンを入れて回避
Zip_Archive を入れる
yum install php-devel
yum install zlib-devel
pecl install zip
phpize の途中でこける・・・ orz
環境
CentOS 5.2
php 5.1.6
pecl の Zip みても問題ないみたいなのですが
とりあえず
pecl install zip-1.8.10
で古いバージョンを入れて回避
Postfix で 複数の外部SMTPサーバーを利用する
Postfixで 外部のサーバーをSMTPサーバーに使用する
relayhost=[サーバー名]
で、万が一これが落ちた場合の予備のサーバーを指定する場合は
fallback_relay=[サーバー名]
で経路の冗長性を確保する
relayhost=[サーバー名]
で、万が一これが落ちた場合の予備のサーバーを指定する場合は
fallback_relay=[サーバー名]
で経路の冗長性を確保する
Xen の CPU割り当て状況を見る
xm vcpu-list
でCPUの割り当て状況が確認できる
[root@sv1 ~]# xm vcpu-list
Name ID VCPUs CPU State Time(s) CPU Affinity
Domain-0 0 0 0 r-- 72.4 0
Domain-0 0 1 - --p 18.7 1
Domain-0 0 2 - --p 14.4 2
Domain-0 0 3 - --p 13.5 3
sv2 3 0 2 r-- 5.5 any cpu
sv2 3 1 3 r-- 3.2 any cpu
でCPUの割り当て状況が確認できる
[root@sv1 ~]# xm vcpu-list
Name ID VCPUs CPU State Time(s) CPU Affinity
Domain-0 0 0 0 r-- 72.4 0
Domain-0 0 1 - --p 18.7 1
Domain-0 0 2 - --p 14.4 2
Domain-0 0 3 - --p 13.5 3
sv2 3 0 2 r-- 5.5 any cpu
sv2 3 1 3 r-- 3.2 any cpu
アンドロイド で メニューを設定する
アンドロイドでメニューをつくる
↓こんなやつ
//ライブラリはこれ
import android.view.Menu;
import android.view.MenuItem;
//メニューの作成
boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
//メニューを追加する
MenuItem hogehoge = menu.add(0, MENU_ID1, 0, R.string.menu1);
//アイコンをセット
hogehoge.setIcon(android.R.drawable.ic_menu_info_details);
//増やす場合は
//上の追加と アイコンセットを繰り返す
//もちろん変数名変えてね!
// android.R.drawable の中にシステム画像が入ってます
return true;
}
↓こんなやつ
//ライブラリはこれ
import android.view.Menu;
import android.view.MenuItem;
//メニューの作成
boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
//メニューを追加する
MenuItem hogehoge = menu.add(0, MENU_ID1, 0, R.string.menu1);
//アイコンをセット
hogehoge.setIcon(android.R.drawable.ic_menu_info_details);
//増やす場合は
//上の追加と アイコンセットを繰り返す
//もちろん変数名変えてね!
// android.R.drawable の中にシステム画像が入ってます
return true;
}
EditText の 幅
EditTextはそのままだと
入力し続けるとテキストボックスが伸びていく・・・
android:Scrollhorizontally を true
にすると拡張せずに中の文字がスクロールする
入力し続けるとテキストボックスが伸びていく・・・
android:Scrollhorizontally を true
にすると拡張せずに中の文字がスクロールする
ajax で 外部のXMLを読み込む XMLHttpRequest
FireFox、Mobile Safari限定のようですが・・・
xml 宣言の後に
または
HTTPレスポンスヘッダーに
Access-Control: allow <*>
をいれてあげると
クロスドメインでXMLHttpRequestが行えるよう
xml 宣言の後に
または
HTTPレスポンスヘッダーに
Access-Control: allow <*>
をいれてあげると
クロスドメインでXMLHttpRequestが行えるよう
Xperia の ユーザーエージェント
Xperiaのユーザーエージェント
Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; SonyEricssonSO-01B Build/XXXXXXX) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; SonyEricssonSO-01B Build/XXXXXXX) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
android のマネージャー
各種マネージャーメモ
Activity manager
アプリのライフサイクルを管理
基本的にはこいつを使う
Window manger
ウィンドウを管理
Content manager
他のアプリとデータをやりとりするための口
View sytem
Notification manager
上部のステータスバーに通知を出すための口
Package manger
インストール済みパッケージを管理
Telephony manager
電話機能を管理するための機能
SIMなんかもここにいるぽい
Resource manager
リソースマネージャー
端末の型番なんかはここ?
Location manager
位置情報系
Activity manager
アプリのライフサイクルを管理
基本的にはこいつを使う
Window manger
ウィンドウを管理
Content manager
他のアプリとデータをやりとりするための口
View sytem
Notification manager
上部のステータスバーに通知を出すための口
Package manger
インストール済みパッケージを管理
Telephony manager
電話機能を管理するための機能
SIMなんかもここにいるぽい
Resource manager
リソースマネージャー
端末の型番なんかはここ?
Location manager
位置情報系
TableLayout の で複数行にまたがる
Layout XMLで TableLayoutを使用した際
Widget単位で行が作成される
複数にまたがるWidgetは android:layout_span="○" としてまたぐ数を入れる
こんな感じ
Widget単位で行が作成される
複数にまたがるWidgetは android:layout_span="○" としてまたぐ数を入れる
android:id="@+id/TableRow01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:singleLine="true"
android:scrollHorizontally="true"
android:text="http://"
android:id="@+id/INPUTURL"
android:layout_span="2">
こんな感じ
Android で タッチを検出
android.view.MotionEvent をインポートし
Activity で onTouchEvent を オーバーライド
getAction() で
ACTION_DOWN:タッチされた
ACTION_MOVE:動いた
ACTION_UP:指?が離れた
getX() , getY() で 座標が取得できる
なので
ACTION_DOWN の XY と ACTION_UP の XY がわかればフリック操作のようなものもできそう
getEventTime() で 時間が取れるので DOWN と UPの 時間と XY の差がわかれば速度も出せますね
Activity で onTouchEvent を オーバーライド
getAction() で
ACTION_DOWN:タッチされた
ACTION_MOVE:動いた
ACTION_UP:指?が離れた
getX() , getY() で 座標が取得できる
なので
ACTION_DOWN の XY と ACTION_UP の XY がわかればフリック操作のようなものもできそう
getEventTime() で 時間が取れるので DOWN と UPの 時間と XY の差がわかれば速度も出せますね
Winows7 で Xperia を認識
XperiaのUSBストレージをマウントして
CDBrowser の中の Driver をデスクトップに解凍
デバイスマネージャーからここのドライバーを検索してあげると認識する
CDBrowser の中の Driver をデスクトップに解凍
デバイスマネージャーからここのドライバーを検索してあげると認識する
シェルでファイルをメールを送信する
シェルでファイルをメール送信する
要は uuencode をしてその出力結果を mail コマンドにパイプするだけ・・・
uuencode <添付するファイル名> <添付ファイル名(送ったときに見えるファイル名)> | mail -s 'サブジェクト' メールアドレス
本文に文字列を入れるなら・・・
(echo メッセージ; uuencode <添付するファイル名> <添付ファイル名(送ったときに見えるファイル名)>) | mail -s 'サブジェクト' メールアドレス
要は uuencode をしてその出力結果を mail コマンドにパイプするだけ・・・
uuencode <添付するファイル名> <添付ファイル名(送ったときに見えるファイル名)> | mail -s 'サブジェクト' メールアドレス
本文に文字列を入れるなら・・・
(echo メッセージ; uuencode <添付するファイル名> <添付ファイル名(送ったときに見えるファイル名)>) | mail -s 'サブジェクト' メールアドレス
mysql で テーブルサイズを確認する
> show table status from like '<テーブル名>' \G
*************************** 1. row ***************************
Name: <テーブル名>
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: *********
Avg_row_length: ***
Data_length: *********
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: ****-**-** **:**:**
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment: InnoDB free: 93184 kB
1 row in set (0.03 sec)
Data_length が テーブルサイズ
*************************** 1. row ***************************
Name: <テーブル名>
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: *********
Avg_row_length: ***
Data_length: *********
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: ****-**-** **:**:**
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment: InnoDB free: 93184 kB
1 row in set (0.03 sec)
Data_length が テーブルサイズ
eclipse で JNI エラー
ひさびさに eclipse 64bit を 入れなおしたら動かなくなった・・・
> 原因
JRE/JDKがともに 32bitで入っていた
> 対応
JDK を 64bit でインストール
JavaのHPから落とすオンラインインストーラーでは 32bit でしかインストールできないそうです
なので 別バージョン のリンクから 64bit を落とすようにしてください。
なんで今まで動いてたんだろう?
> 原因
JRE/JDKがともに 32bitで入っていた
> 対応
JDK を 64bit でインストール
JavaのHPから落とすオンラインインストーラーでは 32bit でしかインストールできないそうです
なので 別バージョン のリンクから 64bit を落とすようにしてください。
なんで今まで動いてたんだろう?
Xperia Arc っぽいユーザーエージェント
Xperia Arc っぽいユーザーエージェントを見つけた
Mozilla/5.0 (Linux; U; Android 2.3.2; ja-jp; SonyEricssonXXXXXXXXXX Build/3.0.C.0.72) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 2.3.2; ja-jp; SonyEricssonXXXXXXXXXX Build/3.0.C.0.72) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Intent を 起動する
Intent起動の返り値がいらない場合
いる場合は
startActivity(intent);
を
startactivityforresult(intent)
とする
このとき呼び出されるほうは
のような形で返り値を返してあげる
Intent intent = new Intent(getApplicationContext(),xxxx.class);
startActivity(intent);
いる場合は
startActivity(intent);
を
startactivityforresult(intent)
とする
このとき呼び出されるほうは
Intent intent_called = new intent();
setResult(RESULT_OK, intent_called);
finish();
のような形で返り値を返してあげる
DoCoMo T-01C, au IS04 でadb接続 MacOSX編
T-01C/IS04 共通
ユーザーディレクトリの .android/adb_usb.iniに
0x930
と一行書くだけ (いわゆるベンダーコードですな!)
空行スペース等は一切なし
保存したら
adb kill-server
adb start-server
[端末接続]
adb devices
を実行して
認識できてるか確認
ユーザーディレクトリの .android/adb_usb.iniに
0x930
と一行書くだけ (いわゆるベンダーコードですな!)
空行スペース等は一切なし
保存したら
adb kill-server
adb start-server
[端末接続]
adb devices
を実行して
認識できてるか確認
mysql binlog の削除
mysql> show master logs;
+-------------------+------------+
| Log_name | File_size |
+-------------------+------------+
| mysqld-bin.000001 | 1073741881 |
| mysqld-bin.000002 | 835345675 |
| mysqld-bin.000003 | 1073939869 |
| mysqld-bin.000004 | 1074688240 |
| mysqld-bin.000005 | 1073935862 |
| mysqld-bin.000006 | 1074282220 |
| mysqld-bin.000007 | 1074663254 |
| mysqld-bin.000008 | 1074302914 |
| mysqld-bin.000009 | 724855689 |
+-------------------+------------+
9 rows in set (0.00 sec)
いらないやつの最大値を調べて
mysql> PURGE MASTER LOGS TO 'mysqld-bin.000008';
LOGROTATEっぽく自動で削除する場合は
expire_logs_days=XX (XXに保持日数)
を my.cnf に記述
+-------------------+------------+
| Log_name | File_size |
+-------------------+------------+
| mysqld-bin.000001 | 1073741881 |
| mysqld-bin.000002 | 835345675 |
| mysqld-bin.000003 | 1073939869 |
| mysqld-bin.000004 | 1074688240 |
| mysqld-bin.000005 | 1073935862 |
| mysqld-bin.000006 | 1074282220 |
| mysqld-bin.000007 | 1074663254 |
| mysqld-bin.000008 | 1074302914 |
| mysqld-bin.000009 | 724855689 |
+-------------------+------------+
9 rows in set (0.00 sec)
いらないやつの最大値を調べて
mysql> PURGE MASTER LOGS TO 'mysqld-bin.000008';
LOGROTATEっぽく自動で削除する場合は
expire_logs_days=XX (XXに保持日数)
を my.cnf に記述
東日本地震
Android マーケットといえば Googleチェックアウト!
http://www.google.co.jp/intl/ja/crisisresponse/japanquake2011.html
Googleチェックアウトで募金受け付けてます!
Androidユーザーのみなさん是非支援を!
http://www.google.co.jp/intl/ja/crisisresponse/japanquake2011.html
Googleチェックアウトで募金受け付けてます!
Androidユーザーのみなさん是非支援を!
Android で 画像のフェードアウト
使えそうなコードをチョコチョコ貼り付けしだしてみます・・・
まずは Java
つづいて
fadeout = AnimationUtils.loadAnimation(this,R.anim.image_fadeout);
で定義してるアニメーション
res/anim/image_fadeout.xml
を配置XMLに
を入れるだけ
alpahは透明処理(厳密には違うけど・・・)
fromAlpha = 1.0 ではっきりくっきり見せる (アニメーションの開始)
toAlpha = 0.0 でまったく見えなくする
はっきりくっきり => まったく見えなくするのを duration 2000msec かけて実行するよ?
このときの動き(interpolator)はlinear_interpolator等速だよ?
ということです
以上!
まずは Java
ImageView image = (ImageView)findViewById(R.id.image);
fadeout = AnimationUtils.loadAnimation(this,R.anim.image_fadeout);
fadeout.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationEnd(Animation animation) {
// アニメーションの最後は完全にimageを消し去るよ?
image.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
});
fadeout_image = new Runnable(){
public void run(){
image.startAnimation(fadeout);
}
};
//3秒後にアニメーション開始
handler.postDelayed(fadeout_image,3000);
つづいて
fadeout = AnimationUtils.loadAnimation(this,R.anim.image_fadeout);
で定義してるアニメーション
res/anim/image_fadeout.xml
を配置XMLに
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="2000"
android:interpolator="@android:anim/linear_interpolator"
/>
を入れるだけ
alpahは透明処理(厳密には違うけど・・・)
fromAlpha = 1.0 ではっきりくっきり見せる (アニメーションの開始)
toAlpha = 0.0 でまったく見えなくする
はっきりくっきり => まったく見えなくするのを duration 2000msec かけて実行するよ?
このときの動き(interpolator)はlinear_interpolator等速だよ?
ということです
以上!
Andoid で カメラのフラッシュを使う 標準編
Android で カメラのフラッシュを使って懐中電灯アプリを作ってみた
要所:どうやってカメラのフラッシュを点灯させるか
まずManifest
続いてJava
これで点灯
OFFにするときは
cp.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
にするだけ
以上
要所:どうやってカメラのフラッシュを点灯させるか
まずManifest
続いてJava
//カメラAPIに接続
mCamera = Camera.open();
//カメラで設定されている初期値を読み込み
cp = mCamera.getParameters();
//フラッシュ点灯設定
cp.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
//設定を適用
mCamera.setParameters(cp);
これで点灯
OFFにするときは
cp.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
にするだけ
以上
Andoid で カメラのフラッシュを使う Sharp端末編
IS03とか005SHとかでフラッシュが点灯しないという報告があったので調査してみました。
どうやら専用ライブラリがあるらしい
https://sh-dev.sharp.co.jp/android/modules/sdk/index.php?/sdk
からSDKをダウンロードしてBuild Target をSharp Addonにする
まずManifestに
でSharpハードウェアライブラリを読み込む
もちろん
も忘れずに
ここから味噌
で点灯できるはず
FlashLight.LIGHT_COLOR_WHITE で白色
FlashLight.LIGHT_COLOR_RED で赤色
が点灯できる模様
どうやら専用ライブラリがあるらしい
https://sh-dev.sharp.co.jp/android/modules/sdk/index.php?/sdk
からSDKをダウンロードしてBuild Target をSharp Addonにする
まずManifestに
各種インテント系....
でSharpハードウェアライブラリを読み込む
もちろん
も忘れずに
ここから味噌
FlashLight mFlashLight = new FlashLight();
mFlashLight.setFlashLightOn(FlashLight.LIGHT_COLOR_WHITE);
で点灯できるはず
FlashLight.LIGHT_COLOR_WHITE で白色
FlashLight.LIGHT_COLOR_RED で赤色
が点灯できる模様
nkf の バグにハマった
シェルで sendmail と nkf でメールを送信しようとしてハマったのでメモ
title="ながーいながーい件名"
subject=`echo ${title} | nkf -jMm0`
とやると
=?ISO-2022-JP?B?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX?=
=?ISO-2022-JP?B?XXXXXXXXXXXXXXXXXXXXXXXXXXX
お尻の ?= が消える
UTF-8 を -M オプションで MIMEエンコードするとお尻が消えてしまう
どうやら 2.0.7 以前のバグらしい…
2.0.8 にて
* UTF-8 の入力を MIME エンコードすると正しく出力されないのを修正。
なので
subject=`echo ${title} | nkf -j | nkf -Mm0`
として 一旦 iso-2022-jp に変換してから
さらに MIMEエンコードすることで回避する
半日ハマった orz
title="ながーいながーい件名"
subject=`echo ${title} | nkf -jMm0`
とやると
=?ISO-2022-JP?B?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX?=
=?ISO-2022-JP?B?XXXXXXXXXXXXXXXXXXXXXXXXXXX
お尻の ?= が消える
UTF-8 を -M オプションで MIMEエンコードするとお尻が消えてしまう
どうやら 2.0.7 以前のバグらしい…
2.0.8 にて
* UTF-8 の入力を MIME エンコードすると正しく出力されないのを修正。
なので
subject=`echo ${title} | nkf -j | nkf -Mm0`
として 一旦 iso-2022-jp に変換してから
さらに MIMEエンコードすることで回避する
半日ハマった orz
MapViewでItemizedOverlayでアイテムが設定されていないとNullpointer Exceptionが発生
バグのせいで徹夜しました・・・
スタート&ゴールをMapViewで表示しようとして引っかかったAndroidのバグ
スタート、ゴールをItemizedOverlayで MapViewに表示
ゴール地点が未設定状態でMapをタッチすると ヌルポするので調べてみた
結果:Androidのバグ
Issue:2035 に登録されてました。
Issue 2035 - android - NullPointerException when scrolling through a MapView with an ItemizedOverlay with no OverlayItems
回避方法:
ItemizedOverlay の OnCreate で populate を発行する
こんな感じ
スタート&ゴールをMapViewで表示しようとして引っかかったAndroidのバグ
スタート、ゴールをItemizedOverlayで MapViewに表示
ゴール地点が未設定状態でMapをタッチすると ヌルポするので調べてみた
結果:Androidのバグ
Issue:2035 に登録されてました。
Issue 2035 - android - NullPointerException when scrolling through a MapView with an ItemizedOverlay with no OverlayItems
回避方法:
ItemizedOverlay の OnCreate で populate を発行する
こんな感じ
public class FlagItemizedOverlay extends ItemizedOverlay{
public FlagItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
populate();
}
以下略・・・
}
CheckedListBoxの値のとり方 (DataTable編)
DataSource に DataBinding で DataTable をセットしてる場合(ほかは未検証)
チェックボックスの値が DataRowView で返ってくる
なのでこんな感じで値を取得
もちろんホゲホゲは DataSourceにいれた DataTable の列名
チェックボックスの値が DataRowView で返ってくる
なのでこんな感じで値を取得
foreach (DataRowView CheckItem in CheckedListBox1.CheckedItems)
{
MessageBox.Show(CheckItem ["HOGEHOGE"].ToString());
}
もちろんホゲホゲは DataSourceにいれた DataTable の列名
このコマンドに関連付けられている DataReader が既に開かれています。 このコマンドを最初に閉じる必要があります。
C# で SQL を実行し Readerを起動した後は Readerを閉じないと表題の例外が発生する
SqlConnection sqlConn = new SqlConnection();
SqlCommand sc = new SqlCommand();
sc = connection.CreateCommand();
sc.CommandText = SQL;
sc.ExecuteReader();
sc.Dispose();
ここで新たなSQLを発行すると
IlligalOperationExceptionが発生する
sc.ExecuteReader();
sc.Close();
sc.Dispose();
と ReaderをClose処理しておくことで続行可能
SqlConnection sqlConn = new SqlConnection();
SqlCommand sc = new SqlCommand();
sc = connection.CreateCommand();
sc.CommandText = SQL;
sc.ExecuteReader();
sc.Dispose();
ここで新たなSQLを発行すると
IlligalOperationExceptionが発生する
sc.ExecuteReader();
sc.Close();
sc.Dispose();
と ReaderをClose処理しておくことで続行可能
apache1.3
8/26ごろ Apacheの Rangeヘッダーを悪用したDOS攻撃のツールが公開されました。
http://www.apache.jp/news/Apache-HTTPD-1.3-2.x-Range-header-DoS
■ 何が起こるの?
外部から攻撃を受けたサーバがCPU・メモリを消費し続け、最終的にサービス(サーバー)停止に至る可能性があります
■ 影響範囲は?
Apache全バージョン
■ 対処方法は?
httpd.conf に以下の設定を入れてください。
Apache1.3
■ mod_rewrite版
RewriteEngine on
RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]
Apache2.0
■ mod_rewrite版
RewriteEngine on
RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)[OR]
RewriteCond %{HTTP:request-range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]
■ mod_rewrite & mod_headers版
RewriteEngine on
RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]
RequestHeader unset Request-Range
Apache2.2
■ mod_setenvif & mod_headers版
SetEnvIf Range (?:,.*?){5,5} bad-range=1
RequestHeader unset Range env=bad-range
RequestHeader unset Request-Range
現象についてはイロイロ書かれている方がいるので割愛いたします
ひとつでも多くのサーバーダウンが防ぐため少しでも多くの人に知ってもらえればと思い記事を残します。
http://www.apache.jp/news/Apache-HTTPD-1.3-2.x-Range-header-DoS
■ 何が起こるの?
外部から攻撃を受けたサーバがCPU・メモリを消費し続け、最終的にサービス(サーバー)停止に至る可能性があります
■ 影響範囲は?
Apache全バージョン
■ 対処方法は?
httpd.conf に以下の設定を入れてください。
Apache1.3
■ mod_rewrite版
RewriteEngine on
RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]
Apache2.0
■ mod_rewrite版
RewriteEngine on
RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)[OR]
RewriteCond %{HTTP:request-range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]
■ mod_rewrite & mod_headers版
RewriteEngine on
RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]
RequestHeader unset Request-Range
Apache2.2
■ mod_setenvif & mod_headers版
SetEnvIf Range (?:,.*?){5,5} bad-range=1
RequestHeader unset Range env=bad-range
RequestHeader unset Request-Range
現象についてはイロイロ書かれている方がいるので割愛いたします
ひとつでも多くのサーバーダウンが防ぐため少しでも多くの人に知ってもらえればと思い記事を残します。
MSSQLのテーブルコピー
SQL Server では create table XXXX as select * from YYYY が使えない
やるときは
select * into XXXX from YYYY
で 出来る模様
やるときは
select * into XXXX from YYYY
で 出来る模様
登録:
投稿 (Atom)