2013年3月15日金曜日

chmod の小技


chmod -R では大雑把過ぎて使いづらい。
いい小技を忘れないうちにメモ。

カレントディレクトリ以下のディレクトリのみ変更
find ./ -type d -print | xargs chmod 775

カレントディレクトリ以下のファイルのみ変更
find ./ -type f -print | xargs chmod 664

HTMLファイルのみ
find ./ -name *.rhtml -type f -print | xargs chmod 644

2013年3月9日土曜日

VMWare Playerでテストサーバ

VMWare Playerでテストサーバ作ったのでメモ。

インストール

CentOSのHPから、CentOS-6.3-i386-netinstall.isoあたりをDLしておく。

VMWare Player起動

新規仮想マシンの作成

新規仮想マシン作成ウィザードで、インストール元に先ほどDLしておいたCentOS-6.3-i386-netinstall.isoを指定。

ウィザードに従っていく。

CentOSのインストーラが立ち上がったら、Install or upgrade an existing system を選んでインストーラの指示に従っていく。
インストールイメージ本体の読み込み先の選択はネットインストールなので、URL。
URLは、ftp://ftp.riken.go.jp/Linux/centos/6/os/i386/

少し待つとGUIのCentOSのインストール画面が立ち上がる。

インストーラにしたがって設定していく。
HDDはテスト用なのでデフォルトでいい。
システムはminimumにしておいて後で足す。
ネットワークはとりあえずDHCPにしておく。(後で変更)

インストール後

最低限の装備

# yum install openssh
# yum install system-config-network
# yum install system-config-firewall-tui
# yum install ntp
# chkconfig sshd on
# chkconfig ntpd on

まあこれぐらいはいれてもいか
# yum install bind-utils

ネットワークの設定変更

まず、VMWareのウィンドウ下部のネットワークアダプタをクリックして設定画面を開き、ネットワーク接続を「ブリッジ」にし、「物理ネットワーク接続の状態を複製」にチェックを入れておく。
CentOSに戻り、以下のコマンドでIPなどを設定する。
# system-config-network

テスト用なので面倒なものをオフに

Firewallは以下のコマンドからオフに。
# system-config-firewall-tui

もしくは
# chkconfig iptables off

SELinuxもオフ

# vi /etc/sysconfig/selinux
SELINUX=disabled


これぐらいで再起動。
# reboot

後はsshで接続して本格的に用途に合わせてテスト環境構築。

2013年1月10日木曜日

error_reportingの.htaccessでの書き方

以前メモったと思ってたのに無かったのでメモ。

.htaccessに以下のように記述しても有効にならない。

php_value error_reporting E_ALL & ~E_DEPRECATED

まあ当然か。
以下のどちらかでかく
php_value error_reporting "E_ALL & ~E_DEPRECATED"

php_value error_reporting 22527

(以前数字で書けという記述を見たが"でくくっても大丈夫だった)

数字のほうはE_ALLやE_DEPRECATED等の定数を加減したもの。
以下のようにすれば簡単に求められる。

<?php
 echo E_ALL & ~E_DEPRECATED;
?>
前は手計算してたよw。

2013年1月1日火曜日

今更debian etchのapacheをアップデート

既にoldstableとなって久しいdebian etch。バージョンで言うと4ですね。
ほったらかしにされていたapacheのセキュリティーホールをふさがねばならなくなった。
当然パッケージのメンテナンスなどされていない。

ちょっと困ったのでメモしておく。


/etc/apt/source.list を以下のように修正(そっからかよ!)


/usr/local/srcにapache.orgから2.2系の最新のソースを取得。
./configureするもssl・zlibがないなどで止まるので、


# apt-get install openssl

# apt-get install libssl-dev
# apt-get install zlib1g-dev

↑勉強不足のためlibssl-devとかzlib1g-devが分からなくてちょっと難儀しました。

openssl自体は入っていたので # apt-get install openssl は不要だった。



再度configure(ssl有効、DSOのほとんどのモジュールを入れておく)
# ./configure --enable-mods-shared=all --enable-so --enable-ssl

めでたく通ったので
# make
# make install

/usr/local/apache2 に入りました。

後は元のapacheをとめて設定や起動スクリプトを修正。



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のエフェクター用マジックテープと相性ばっちり。

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

ナイスです。