2012年12月9日日曜日

SQUID: Your cache is running out of filedescriptors

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月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

2012年10月8日月曜日

Docomo 回線で iPhone5 を使う

巷で話題のSIMフリー iPhone5 を手に入れたので Docomo SIM でやってみました

一応 Android も持っているので いきなり主回線のSIM カットは怖いので今回使用したのはB-MOBILEさんのSIM




失敗してもいいように2枚セットのやつ(本来の用途と違います)

で 出来上がったものが

Docomoだとアンテナ立たないんですよねー・・・でも通信できてます

2012年9月14日金曜日

Yii をインストール

Yii を 使ってみたくなったので使ってみた

  1. Yii をダウンロード
    http://www.yiiframework.com/ から [ Download Yii ] を選択してダウンロード
  2. 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 配下です
  3. プロジェクトの作成
    コマンドラインで スケルトンが作成されます
    移動して
    # cd /var/www/yii

    コマンド
    # ./framework/yiic webapp /var/www/hogehoge

    yiic webapp スケルトン作成先  でOKです
  4. ドキュメントルートを /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 で 消去♪

2012年6月17日日曜日

お引越ししました

FC2がなんとなく使いづらかったのでお引越ししました

CentOS 5.0 以降のSAMBAマウント

RHEL/CentOS 5.0では smbマウントができない
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

POSTFIXの容量

POSTFIXではデフォルトで10MB
どこにも設定するパラメーターがない

main.cf に
mailbox_size_limit = <容量>
で増量可能

Docomoでの入力モードの制御

・漢全
 style="-wap-input-format:'*'"
・カナ半
 style="-wap-input-format:'*'"
・数半
 style="-wap-input-format:'*'"
・英半
 style="-wap-input-format:'*'"

Softbankと互換性がなく使い勝手が悪い・・・

カーネルの整理

カーネルをアップデートする際 古いカーネルは削除されない。
したがってCronなどでアップデートを繰り返すと /boot 領域の要領が足らなくなり
アップデートエラーとなる

そんなときには
#package-cleanup --oldkernels

を実行することにより古いカーネルを削除し空きスペースを確保できる

PHPのセキュリティ対策 -バージョン隠蔽-

HTTPレスポンスヘッダーを除くと X-POWERED-BY: PHP X.X とPHPバージョンが表示される

== php.ini ==
expose_php = Off

とすることで隠蔽可能

Apache セキュリティ対策

autoindex
Apacheモジュール、ディレクトリオプション デフォルト 有効
index.html などデフォルト読み込みファイルがない場合 自動的にディレクトリリストを作成
ディレクトリ構造が露出するのでやめましょう
OFFの場合 FORBIDDEN表示

Apache セキュリティ対策

Location 定義
主に Autoindexと組み合わせて使用される
Autoindex時のファイルアイコンとして使用

念のためOFFにしましょう

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はほぼ無制限

Postfixのボトルネック解析

postfix の状態解析コマンド
qshape

送り先別遅延内容とかの集計が出来るらしい・・・
・横軸には、キューの生存時間を最近のメッセージに対しては細かい間隔で、古いメッセージに対しては (等比級数的に) 多少粗い間隔で表示します。
・縦軸に送り先ドメイン -s をつけると送信者別になる

例) 遅延の多いドメインを見つける
qshape deferrer

PHPの正規表現 A-z

正規表現で文字列マッチ
A-z と書くことがあるが [ ] が含まれる

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
となります

ヴァーチャルアドレスの受信

サーバーのホストドメイン以外のメールを受ける際は
/etc/postfix/virtual に追記する(RHEL系のデフォルト)

書き換えただけでは動かない
書き換えたら
/usr/sbin/postmap /etc/postfix/virtual
にて適用する

存在しないユーザーへの転送

サーバーに存在しないユーザーへのメール配信を行う場合は
/etc/aliases
を編集する
適用は
newaliases

仮想ユーザーから、別ユーザー、プログラムへの転送が可能

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

あとは再起動するだけ

自己責任で!

Excelで24時間をこえる表記

通常Excelでは 時間計算で24時間を超えると 25:00=> 1:00 と表示される

これを
25:00と表示させるには
ユーザー定義
にて
[h]:mi
といった具合に
[ ] で括ると表示できるようです

Redhatのバージョン

REDHAT ESのバージョンは以下のファイルに明記
/etc/issue
ここを見ればマイナーバージョンもわかります。

編集厳禁!

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
を追記する

データベースチューニング innodb_buffer_pool_size

グローバルバッファ
InnoDBのデータやインデックスをキャッシュするためのメモリ上の領域
OS自身がキャッシュしない。
実装メモリの70-80%を目安に設定

innodb_buffer_pool_size=XXX

テーブルやインデックスデータをメモリに展開する際の上限
これを適正な値に引き上げることにより
Disk I/O が減らせ全体的なパフォーマンスアップにつながる

データベースチューニング innodb_log_buffer_size

グローバルバッファ
InnoDBの更新ログを記録するメモリ上の領域
8MB?64MB程度に設定

更新ログは頻繁にフラッシュされるので大きくとらなくてもよい

※頻繁にフラッシュ
一般的にコミット時、またはバッファサイズまでデータを貯めきるとディスクに書き出される

XEN で クローンの作成

Xen仮想環境のクローン作成コマンド

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=<キャラセット>

ミソはキャラセットを取得先と格納先を合わせること
これなら異なるバージョン間でデータ移設が可能

Apache の internal dummy connection

Apache 2.2 から internal dummy connection というログが頻出するようになった
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 データベース名 > 出力ファイル

Apache で 複数ポートの Listen

Apacheで複数ポート待機を行うときは以下のようにする

Listen 80
Listen 8080

待機ポート数だけ 縦に
Listen <ポート番号>

Linux で CPU 情報を確認

Linux で CPU 情報を確認する

$ 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/知りたい項目
といった順に構成されています。

Linux で メモリ情報を見る

Linuxでメモリの容量等の情報を見る

$ cat /proc/meminfo

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'
;

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

で古いバージョンを入れて回避

面白い広告

マウスで気になる単語をハイライトすると
popupしてくれる

Popin Rainbow
http://popin.cc/

気になる単語をハイライトしてマウスオーバーしてみてください

Cakephp 1.2 の ラベル

Cakephp 1.2 のフォームヘルパーで自動でラベルがつく・・・

第2引数の array に 'label' => false を入れることで回避

Postfix で 複数の外部SMTPサーバーを利用する

Postfixで 外部のサーバーをSMTPサーバーに使用する

relayhost=[サーバー名]

で、万が一これが落ちた場合の予備のサーバーを指定する場合は

fallback_relay=[サーバー名]

で経路の冗長性を確保する

Xen での CPU割り当て

ゲストOSのCPU数を変更する
-> /var/lib/xen/ゲストOS

vcpus の値を増やす

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

smarty の var_dump

{$hogehoge|@debug_print_var}

で、print_r / var_dump の代わり

アンドロイド で メニューを設定する

アンドロイドでメニューをつくる
↓こんなやつ
アンドロイドメニュー

//ライブラリはこれ
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

にすると拡張せずに中の文字がスクロールする

ajax で 外部のXMLを読み込む XMLHttpRequest

FireFox、Mobile Safari限定のようですが・・・

xml 宣言の後に


または
HTTPレスポンスヘッダーに
Access-Control: allow <*>

をいれてあげると

クロスドメインでXMLHttpRequestが行えるよう

コマンドラインでPOST

$ wget --post-data 'hoge1=hogehoge&hoge2=hogehogehoge' url

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

android のマネージャー

各種マネージャーメモ

Activity manager
アプリのライフサイクルを管理
基本的にはこいつを使う

Window manger
ウィンドウを管理

Content manager
他のアプリとデータをやりとりするための口

View sytem


Notification manager
上部のステータスバーに通知を出すための口

Package manger
インストール済みパッケージを管理

Telephony manager
電話機能を管理するための機能
SIMなんかもここにいるぽい

Resource manager
リソースマネージャー
端末の型番なんかはここ?

Location manager
位置情報系

Android エミュレーターの大きさを変える

-scale で変更
大体 0.5?0.7で使ってます。

TableLayout の で複数行にまたがる

Layout XMLで TableLayoutを使用した際

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 の差がわかれば速度も出せますね

Winows7 で Xperia を認識

XperiaのUSBストレージをマウントして
CDBrowser の中の Driver をデスクトップに解凍
デバイスマネージャーからここのドライバーを検索してあげると認識する

シェルでファイルをメールを送信する

シェルでファイルをメール送信する

要は 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 が テーブルサイズ

ディレクトリのクリーニング

間違って生成した大量のゴミファイルを一括で消すには・・・

find ディレクトリパス -name "検索対象文字列" -exec rm {} \;

eclipse で JNI エラー

ひさびさに eclipse 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

Intent を 起動する

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

を実行して
認識できてるか確認

mysql 接続時のホスト名

my.cnf に
skip-name-resolve
を追記すると
ホスト名を引かなくなるので IPベースでアクセス権を付与できるようになる。

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 に記述

東日本地震

Android マーケットといえば Googleチェックアウト!

http://www.google.co.jp/intl/ja/crisisresponse/japanquake2011.html

Googleチェックアウトで募金受け付けてます!
Androidユーザーのみなさん是非支援を!

Android で 画像のフェードアウト

使えそうなコードをチョコチョコ貼り付けしだしてみます・・・

まずは 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

//カメラ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 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

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 を発行する

こんな感じ



public class FlagItemizedOverlay extends ItemizedOverlay {
public FlagItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
populate();
}
以下略・・・
}



CheckedListBoxの値のとり方 (DataTable編)

DataSource に DataBinding で 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処理しておくことで続行可能

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

現象についてはイロイロ書かれている方がいるので割愛いたします
ひとつでも多くのサーバーダウンが防ぐため少しでも多くの人に知ってもらえればと思い記事を残します。

MSSQLのテーブルコピー

SQL Server では create table XXXX as select * from YYYY が使えない

やるときは

select * into XXXX from YYYY

で 出来る模様