2012年12月22日土曜日

File API & XMLHttpRequestでファイルアップロード

大容量ファイルのアップロード周りを便利にしようと思いいいのみつけた、blueimp jQuery-File-Upload。

https://github.com/blueimp/jQuery-File-Upload

なかなかいいじゃないかと途中まで組み込んで問題発生。orz

・問題点1
アップロード後のサーバサイドでの処理に時間がかかる場合、それも進捗状況表示に加えたいのだがいまいちやり方がわからない。


・問題点2
IEが微妙に未対応。アップロード自体は可能。


・問題点3
ファイルサイズが大きい(233MB以上)とアップロードできない。

1は調べれば何とかなりそう、2はとりあえずアップロードは可能なので目を瞑る。
3はかなり問題。本来の目的が大容量のファイルの扱いだったので。

でどこが悪いのかな~と調査開始。
単純化するために、JavascriptのFile APIとXMLHttpRequest + PHPで簡単にアップロードの仕組みを作ってみた。

jQueryも使って、Javascriptはこんな感じ↓
(参考URL: http://d.hatena.ne.jp/takuya_1st/20121101/1351754417 ありがとうございます)

$('#upload').bind('click', function(){
var fd = new FormData();
var f = document.getElementById("file").files[0];
fd.append('userfile', f);
$.ajax({
async: true,
xhr : function(){
XHR = $.ajaxSettings.xhr();
if (XHR.upload) {
XHR.upload.addEventListener(
'progress',
function (e) {
progre = parseInt(e.loaded/e.total*10000)/100 ;
console.log(progre+"%") ;
$("#progress_bar").width(parseInt(progre/100*300*100)/100+"px");
$("#progress_bar").height("30px");
$("#progress_bar").html(progre+"%");
},
false
);
}
return XHR;
},
url:  "",
type: "post",
data:fd,
contentType: false,
processData: false
}).done(function(msg) {
console.log(msg);
$("#output").append(msg);
});
});
Chromeは問題なし。
FireFoxは大きいファイルでこけることがある。FFを再起動すると問題ないのでFFのメモリ関係でしょうか(未検証)。
IEはFile APIとかFormDataが使えないので当然ながら動きません。

サーバ側は同じプログラムで受けとっているので、問題3はblueimp jQuery-File-Uploadによるものかな? これに手を入れるのはためらわれるということでしゃーない自作するか。

今回はサーバ側も自由にいじれるのでPHPのAPCやPHP5.4を使うのもいいんだが、他で使うことも考えてFile API & XMLHttpRequestで突き進んでみよう。
IEだけ分岐して単純な仕様でないてもらおう。

つくづく適当だな。

2012年12月8日土曜日

難解ffmpegそしてありがとう情報を整理して公開している人

iOSでLMS用の動画を見れるようにという注文があるので、HLSで対応しようとごちゃごちゃ検討中。(しかもユーザが使えるようにCMS化しなければならない。)
自分で書いている文章がアルファベット3文字の略語ばっかりでなんか崩壊している。

動画の変換といえばFFmpegのようですがこれがややこしい。マジで!
でも世の中にはいろんな情報を整理してくれる人が居て助かります。ホントに!
本家の英語のマニュアルだけ見ててもぜんぜん分からんのでありがたいです。

http://mobilehackerz.jp/archive/wiki/index.php?%BA%C7%BF%B7FFmpeg

何とかなるかな~。

2012年11月19日月曜日

エフェクターの固定に耐震素材

ゴム足がついているエフェクターだと、マジックテープを底面に張って固定というのが簡単にできない。

両面テープなどでついているゴム足ははずしてもいいんだけど、外したゴム足はよくなくすので後でオークションに出すときなどに価値が下がりそう。
ねじでとめてあるゴム足は、外した後ねじを戻すと本体側のねじ穴が足りずにねじがはみ出したり、ねじの頭が高くてマジックテープがやっぱり使えないということになりがち。

しかもマジックテープを張ったあと剥がすと汚いとかいろいろ面倒。

そこで、下駄グリップという商品を参考に耐震素材の粘着ゴムと普通に売ってるエフェクター用のマジックテープで固定してみました。

下が、粘着ゴムを貼った状態、上が粘着ゴムの上にマジックテープを貼った状態。
5cm×5cmのゴムなので幅5cmのエフェクター用マジックテープと相性ばっちり。

エフェクトボードにがっちり固定されます。粘着ゴムは引き剥がせばきれいにはがれ、エフェクターを汚したり傷つけたりしません。

ナイスです。

2012年11月1日木曜日

munin 2.0.6 のhttp loadtime

munin 2.0.6でhttp loadtimeが正しく取得されない。
2.0.7では直っているらしいが、まだyum updateとかで変わらないのでちょめちょめっと対応。

以下を参考に、/usr/share/munin/plugins/http_loadtime を修正

https://github.com/frasten/munin/commit/401524d03ac75f31046224d3c12ed9714efba28e

2012年10月13日土曜日

6弦ちゃん

ベースは弦が4本しかないから簡単だよねといわれない為に入手した6弦。(ウソ)

その6弦がなんか音痴。
バズフェイトン・チューニングシステムだから?
そんなことないだろう逆だろうということで調べてみるとオクターブチューニングが少しずれてましたw

オークションで落として郵送してもらってそのままじゃあやっぱいけませんわな。


オクターブチューニングして、おおっ!音痴が直った。
弦高もう少し下げたいな。

2012年6月25日月曜日

max_allowed_packet

クエリーやデータが大きくてmax_allowed_packetのエラーが出る場合

ふつうは、my.conf, my.ini等のmax_allowed_packetの値を変更してmysqldの再起動ですが、my.confをいじれないが、mysqlの特権などはある場合。(主にホスティングサーバでphpmyadmin上から利用している場合など)


max_allowed_packetの確認。

SHOW VARIABLES LIKE 'max_allowed_packet';


max_allowed_packetの変更。

SET GLOBAL max_allowed_packet=16*1024*1024;



2012年5月22日火曜日

Ebonol指板

Ebonol指板というのをはじめて知った。
エポキシ加工する必要ないやん。これむっちゃ欲しいんですけど。

http://www.fender.jp/squier/gear/detail.php?pid=28

工作精度や木材の当たり外れはあるやろうけど。

2012年4月26日木曜日

It Bites

最近忘れてた。ごめんね。
再結成してアルバム2枚も出してたわ。





個人的にですが激はまりです!!!
最新のMap of the Pastは在庫なしで買えてないっ!

2012年3月14日水曜日

複数バージョンのIEの確認

Microsoftの公式のサイト。
Virtural PCを利用。
容量は食うがこれが一番じゃないか。(要 Windows7 Professional以上)

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11575

このサイトのIE6用のWinXPは英語版らしいが、下記の日本語のWindows XP Mode + Virtual PCのサイトから普通にXP Modeの仮想マシンをダウンロードするとちゃんと日本語のWindows XPがあらかじめ入っている。


では手順。


まずはWindows7用のXPモードとVirtualPCをセットアップ

http://www.microsoft.com/japan/windows/virtual-pc/download.aspx

Windows7のエディションと言語を選んで、Windows XP Mode, Windows Virtual PC, Windows XP Mode Updateをダウンロード。

順に入れていく。
Windows Virtual PC, Windows XP Mode Update で再起動を要求される。

スタートメニュー → Windows Virtual PC → Windows XP ModeでWindows XPが起動。
これでIE6が使える。


次に、IE7とIE8。

最初のURLからIE7とIE8用の仮想マシンをダウンロード。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11575

IE7とIE8用のデータは圧縮して複数のファイルに分割されていますが、全部ダウンロードして、.exeファイルを実行すると解凍して.vmc, .vmdの2種類のファイルができる。
.vmcのほうをダブルクリックで仮想マシンが起動するんですが、XP Modeのデータと場所を合わせておこうと思うのでまずXP Modeのデータを探す。

スタートメニュー → Windows Virtual PC で、C:\Users\"ユーザ名"\Virtual Machines が開くがここはバーチャルマシン起動のショートカットがおかれているようなもの。(たぶん)

仮想マシンのデータは実際は以下のディレクトリ。

C:\Users\"ユーザ名"\AppData\Local\Microsoft\Windows Virtual PC\仮想マシン

ここに、IE7とIE8の.vmc, .vmdのファイルを設置。

.vmcファイルをダブルクリックで仮想マシンが起動して C:\Users\"ユーザ名"\Virtual Machines に起動ショートカット(?)が作成されます。

仮想マシンが起動したら、ダウンロード元のサイトに書いてあるように、ユーザ名:administrator パスワード:Password1 でログイン。

ネットワークが使えないのでVirtual PCのウィンドウの「ツール」メニューから設定を選んで、ネットワークの設定をする。
自分の場合は、左から「ネットワーク」を選んで、右側の「アダプター1」を「共有ネットワーク(NAT)」にすれば通りました。

同じ「ツール」の画面で「統合機能」でローカルハードディスクも共有しておくと便利かも。


後は自由に使えると思う。

2012年3月3日土曜日

xampp1.7.7のPEAR

マシンを入れ替えたのでxamppもpleiadesごと新しく入れて、xampp1.7.7に。
PEARが中途半端にしか動かないので、ちょいちょい調べる。

設定しようにもgo-pear.batとかpear.iniがない。

おそらくxamppを入れた後に行う、setup-xampp.batでPEARの設定とかしているんだろう。

pear.batの中の環境変数の設定が設置ディレクトリのものになっている。

コマンドラインでpear config-showとやると設定が中途半端に変わっている。

pear.batの中を見ると以下のような感じで設置ディレクトリの設定になっている。

■pear.bat 31~33行目■

IF "%PHP_PEAR_INSTALL_DIR%"=="" SET "PHP_PEAR_INSTALL_DIR=C:\pleiades-e3.7\xampp\php\pear"
IF "%PHP_PEAR_BIN_DIR%"=="" SET "PHP_PEAR_BIN_DIR=C:\pleiades-e3.7\xampp\php"
IF "%PHP_PEAR_PHP_BIN%"=="" SET "PHP_PEAR_PHP_BIN=C:\pleiades-e3.7\xampp\php\.\php.exe"


pear config-showで表示される設定には足りない。

ということで、pear.batの35行目あたりに以下を追加。

IF "%PHP_PEAR_CFG_DIR%"=="" SET "PHP_PEAR_CFG_DIR=C:\pleiades-e3.7\xampp\php\cfg"
IF "%PHP_PEAR_DOC_DIR%"=="" SET "PHP_PEAR_DOC_DIR=C:\pleiades-e3.7\xampp\php\docs"
IF "%PHP_PEAR_DATA_DIR%"=="" SET "PHP_PEAR_DATA_DIR=C:\pleiades-e3.7\xampp\php\data"
IF "%PHP_PEAR_TEST_DIR%"=="" SET "PHP_PEAR_TEST_DIR=C:\pleiades-e3.7\xampp\php\tests"
IF "%PHP_PEAR_WWW_DIR%"=="" SET "PHP_PEAR_WWW_DIR=C:\pleiades-e3.7\xampp\php\www"


これで、pear config-showすると設定した値で表示されるし、今のところうまく動いている。

2012年2月23日木曜日

CodeIgniter Sessionのエラー

CodeIgniterのSessionを使っていておかしいときがちょくちょくあった。(おもにver 1.7)
どうもSessionのデータがちょいちょい壊れる。

いい解決法を発見。
json_decode, json_encodeを使えることが前提

https://github.com/EllisLab/CodeIgniter/issues/13


Session.phpの_serializeと_unserializeを書き換える。


function _unserialize($data)
{
    return json_decode($data, true);
}

function _serialize($data)
{
    return json_encode($data);
}

Good!!!

2012年1月30日月曜日

PostgreSQL91のインストールメモ

postgresql84を入れていたテスト用の仮想マシンなので削除。

/etc/yum.repos.d/CentOS-Base.repo の[base]と[updates]のセクションの最後に以下を追加。

exclude=postgresql*


パッケージを取得
# wget http://yum.pgrpms.org/reporpms/9.1/pgdg-centos91-9.1-4.noarch.rpm
登録
# rpm -i pgdg-centos91-9.1-4.noarch.rpm
インストール
# yum postgresql91
起動設定
# chkconfig postgresql-9.1 on
初期化
# service postgresql-9.1 initdb
起動
# service posgresql-9.1 start


コマンド関係が、/usr/pgsql-9.1/bin/以下になっているので注意。

ストリーミング・レプリケーションとかしてみたいなぁ。

2012年1月25日水曜日

.forwardでPHPにメールを食わせる

.forwardファイルを使ってPHP等のプログラムにメールを処理させることがありますが、ちょっと躓いたのでメモ。

まず、何もなければ、.forwardファイルに以下のように書けばいい。

> vi .forward
"| /usr/bin/php /home/john/sciptfile.php"

(john, scriptfile.phpあたりは任意でっせ。)

ところが、smrshが動作していると簡単には実行してくれません。
勝手にプログラム起動して処理するなということです。
smrshに許可してもらうには、/etc/smrsh内に実行ファイルのリンクを作成してやればよい。

こんなコマンド↓
> ln -s /usr/bin/php /etc/smrsh/php

とここまではよく見かけます。
しかし今回はこれでうまくいきませんでした。

.forwardファイル内の記述が問題のようで、絶対パスは無視されたりいろいろ制約があるようです。
詳細は偉い人に聞いてください。すいません。

でどうするかというと。

.forwardに記述する内容を単純化するためシェルスクリプトを1つ作成します。

> vi scriptcall.sh
#!/bin/sh
/usr/bin/php /home/john/sciptfile.php

↑こんな単純なファイル。

作成したシェルスクリプトに実行権限をつけて、smrshで実行できるようにシンボリックリンクを作成。

> chmod 755 /etc/smrsh/scriptcall.sh
> ln -s /usr/bin/scriptcall.sh /etc/smrsh/scriptcall.sh


.forwardファイルの内容を以下の用に変更

>vi .forward
|sciptcall.sh

以上でjohnさんにメールが来るとプログラムにメールが渡されます。

exim4 mailq一括削除


exim4のmailqの一括削除方法で、いいのがあった。

http://www.fukudat.com/wiki/ja/%E7%8E%84%E7%AE%B1/exim4

# for msgid in `mailq | grep '<.*>' | cut -c11-27`; do
> echo $msgid
> exim4 -Mrm $msgid
> done

ありがとう。

2012年1月18日水曜日

VMWare CentOS メモ


VMWare PlayerでCentOS最小インストール済みのイメージを動かしたときのメモ。

■キーボードのコンフィグ
USキーボードからJISキーボード

/etc/sysconfig/keyboard

KEYBOARDTYPE="pc"

KEYTABLE="jp106"

■SELinuxをオフ(テスト用だし)
/etc/sysconfig/selinux

SELINUX=enforcing

SELINUX=disabled

モードの確認は、コマンド getenforce で可能。


■yumで必要なものを入れる。



■ネットワーク
system-config-network コマンドでCUIのネットワーク設定画面が出るのでこれで簡単に済ませれる。
実際には/etc/sysconfig/network-scripts/ifcfg-eth0 を編集している。

手書きで設定する場合は以下のファイル等。
/etc/hosts
/etc/resolv.conf
/etc/sysconfig/network


■iptables
/etc/sysconfig/iptables

このあたり↓を「-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited」の前に追加

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

必要に応じて開放するポートを増やす。


■VMWareの共有フォルダ
設定したが、結局SSHかFTPでファイルを送った方が楽なのであまり使わなかったので割愛。