カテゴリー別アーカイブ: LAMP[Linux, Apache, MySQL, PHP]

JavaScript/jQueryでファイルアップロードフォーム(インプットタグ)の拡張子を確認する

<form name=’test’>
<input name="picture_file" type="file" >
</form>

 こんな感じのファイルアップロードフォーム(インプットタグ)を用意して、ファイルをアップロードさせる時に、タグの属性(accept)でファイル形式(拡張子)を設定できるけど、ブラウザ依存なんで、JavaScriptでアップロードファイル名の拡張子をチェックしたい時の開発パーツ(jQuery利用)

<form name=’test’>
<span id=’picture_file_span’><input name="picture_file" type="file" id="picture_file" onchange="extchk(‘picture_file_span’, $(this).val());"></span>
</form>

<script type=’text/javascript’ src=’https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js’></script>
<script type="text/javascript">
    function extchk(id, fn){
        var fnsplt = fn.split(".");
        var ext = fnsplt[fnsplt.length – 1];
        switch(ext.toLowerCase()){
            case "jpg":
            case "jpeg":
            case "gif":
            case "png":
                return true;
                break; //未到達コード
            default:
                alert(‘未対応のファイル形式です’);
                jQuery(‘#’+id).html(jQuery(‘#’+id).html());
                return false;
                break; //未到達コード
        }
    }
</script>

 ファイルインプットタグの変更イベントで、設定したファイル名の拡張子がcaseに列挙されていればtrue,それ以外はアラートメッセージを出してファイルインプットをクリアした上でfalseを返している(IEではfile inputタグのvalをクリアすることは出来ないので、inputタグをspanで括って、中身を書き直すことでクリアしている)
 最初、jQueryでバインドしたが、htmlの差し替えでファイルインプットをクリアするとバインドが解除されるので、タグのonChangeに載せている。
 ファイルの中身を確認しているわけではないけど、簡単なチェックにはなるからWeb開発時に使い回せるだろう。

テストページ

ソースの整形にはHTML特殊文字をエンコードする on さくらVPSを利用している。

(2330)

カテゴリー: jQuery | コメントをどうぞ

Web開発のお供にBootstrap

 ツイッターが提供しているBootstrapっていうライブラリ(?)がある。
 Web開発をする時、ページのスタイルを作るのが結構面倒なんだけど、Bootstrapには基本的な枠組みとかフォームパーツのアレンジとかがセットになって、CLASSを適当に設定してやると、通常のINPUT BUTTONを画像ボタンみたいに色づけしたりも出来る。
 基本的に、ちょっと大きめで、スマホページとかでタッチ操作に向いている感じだけど、追加のスタイルでサイズを調整すれば良い感じでWebサイトが作れる。
 難しいスタイルを作らずに、簡単にそこそこ見栄えのするページを作りたい時にオススメのアイテムだ。

(298)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

以前の記事で書いた、さくらVPSでKNOPPIXを動かす記事のおまけ

 以前、KNOPPIXさくらのVPS(virtio_blk)上で動作するようにする記事を書いたけど、今回、仕事関係で複数のVPSサーバーをまとめて設定する必要が生じた為、KNOPPIX利用のイメージングをて行った。
 せっかくminirt.gzを作成したので、基本設定状態で差し替えればいいminirt.gzイメージを置いておく。

Virtio起動対応KNOPPIX用Bootイメージこのファイルをminirt.gzとして配置してやれば、KNOPPIXがVirtio起動デバイスなお名前VPSさくらVPSで動作するようになる。

  1. KNOPPIXを入手する(最新CD版を利用した)
  2. DaemonTools or WinRARを入手する
  3. KNOPPIXのISOイメージをDaemonToolsでマウントするかWinRARで開く。
    CDの/KNOPPIXをVPSの/KNOPPIXとしてコピーする。
    CDの/boot/isolinuxの中身をVPSの/boot/KNOPPIXにコピーする。
    ついでに、上に置いてあったknoppix_virtio.gzファイルで/boot/KNOPPIX/minirt.gzを置き換える。
  4. VPSのGRUB設定を追加する。
    VPSの/boot/grub/menu.lstに追記して、KNOPPIXを起動できる様にする(最下行に追記)

    title KNOPPIX
    root (hd0,1)
    kernel (hd0,0)/KNOPPIX/linux ramdisk_size=100000 init=/etc/init ro
    initrd (hd0,0)/KNOPPIX/minirt.gz

     デフォルトインストールのさくらVPSだと、hd0,0が/bootで、hd0,1が/なので、ルート配下の/KNOPPIXにアクセスする場合はhd0,1である。 なお、kernelとinitrdでは/boot/KNOPPIXに配置したファイルを使いたいので、hd0,0である。

  5. システムを再起動して、直ちにVNCコンソールを開く。
    GRUBのスタート画面でカーソルキーか何か押すと選択画面が開く。 この時、先ほど追記したKNOPPIXがあるので、選んでEnter。
    KNOPPIXが起動する。
  6. (124)

カテゴリー: サーバ設定 | タグ: , , , , | コメントをどうぞ

お名前.comのVPSとRTX1000の間にOpenswanを使ってIPSec方式のVPNを設定した

 Windows化したさくらVPSサーバー固定IPプロバイダでつないだRTX1000の間にアグレッシブモードメインモードIPSecを張っていたわけだけど、今回はCentOS 6環境のお名前.com VPS(KVM)サーバーとの間にメインモードのIPSec VPNの設定を行った。

 IPSecはオープンな規格であるものの、独自実装が多くて、なかなか相互互換が得られない困ったちゃん。
 特にLinuxのIPSec実装には色々なソフトがあって、つながる組み合わせ、つながらない組み合わせが難しい。
 今回使ったLinuxのIPSec実装であるOpenswanは、CentOS標準パッケージなのでメジャー系ではあるものの、あまり普及しているとはいえず、ネット上で情報収集してもL2TPと組み合わせてスマホを接続するような情報ばかりで、最終的にソースコードを眺めつつ、設定を詰めるのに1週間以上かかってしまったが、何とか構築することが出来たのでメモしておく。

RTX1000の設定

ip route VPSのグローバルIPアドレス gateway tunnel 1 filter 1001 1002 1999

ip filter 1001 reject * * udp * 500
ip filter 1002 reject * * esp
ip filter 1999 pass * *

tunnel select 1
tunnel name VPN2VPS
ipsec tunnel 1
ipsec sa policy 1 1 esp 3des-cbc sha-hmac
ipsec ike always-on 1 on
ipsec ike encryption 1 3des-cbc
ipsec ike esp-encapsulation 1 off
ipsec ike group 1 modp1024
ipsec ike hash 1 sha
ipsec ike local address 1 192.168.0.1
ipsec ike local id 1 192.168.0.1
ipsec ike payload type 1 3
ipsec ike pfs 1 on
ipsec ike pre-shared-key 1 text 秘密だよ
ipsec ike remote address 1 固定IPだよ
ipsec auto refresh 1 on
ip tunnel tcp mss limit auto
tunnel enable 1

3des-sha1の組み合わせで、ESP有効、MODP1024設定でPFS有効のポリシー(軽いdes-md5を試みたが、yumパッケージ版ではdesはサポートされておらずビルドし直さなければならない)

Openswanの導入は、CentOS標準のyumからの導入でOK(yum install openswan)

Openswanの設定
/etc/ipsec.conf

 auto=startだと起動時に接続にいく。 addにすると、コマンドラインから ipsec auto –up homenetwork のようにコマンドを打つことでリンクアップできる。
 今回は認証がsecret(事前共有鍵)なので、/etc/ipsec.secretsに
: PSK “事前共有鍵”
 のように記述しておく。
 電子証明書認証も出来る。

 VPN接続がうまくいくと、LAN側のPCで”traceroute VPSサーバーの固定IP”とか実行すると、デフォルトゲートウェイVPSサーバーのIPの順で表示される(VPNが無いと、デフォルトゲートウェイ対向ルータインターネットVPSサーバーのIPというように、中間のアドレスが表示される=トンネルモードVPNだと仮想的に1ホップになる)
VPSサーバー側でnetstatを実行すると、VPNで繋がっていないとルータの外側IPが表示されるが、繋がっているとLAN内部のIPがそのまま表示されることでも確認できる。

 VPNを設定しておくと、VPSサーバーからsambaを経由してLAN上のWindowsマシンの共有ストレージを利用したり、LAN上のマシンからPOP3接続したりしたときに、VPSサーバー<=>ルーター間の情報はすべて暗号化されるためセキュアで良い。

参考
参考
RTXのIPSec設定参考
新しいRTXだとこんな事も出来る

(910)

カテゴリー: サーバ設定 | タグ: , , , , , | 1件のコメント

jQueryで開発、テキストフィールドから数字以外を削除する

 数値だけしか入力できないINPUT type=textタグを用意したいことがある。
 簡単に実装する場合は、該当のINPUTタグからフォーカスが外れる時に数字以外を削除してしまうのが良いだろう。

 そんなわけで、そのようにしたjQueryコード

<script src=’https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js’></script>
<script>
    $(document).ready(function(){
        $(".numberonly").blur(function(){
            var str = $(this).val();
            $(this).val(str.replace(/[^0-9]/g, ""));
        });
    });
</script>

 blurイベントはfocusが外れた時。
 で、正規表現で[0-9]以外を消している。
 class=numberonlyにバインドしているので、

<input type=’text’ name=’zip1′ class=’numberonly’>-<input type=’text’ name=’zip2′ class=’numberonly’>

みたいに、郵便番号欄を半角数字に限定するみたいな動きをさせたり?

(2645)

カテゴリー: jQuery | コメントをどうぞ

PHPのUserAgent設定

 PHPでfile_get_contentsなんかを使うとURLからもGETすることが出来る。
 $html = file_get_contents(“http://hogehoge.tld/”);
 みたいな感じ。

 で、この時、UAはPHPが入るんだけど、最近、Google検索をPHPで叩きに行くと403Forbiddenになってしまう。 ここのUA文字列を書き換えると表示できるので、PHPに任意のUAをセットしたい。

 方法は簡単で、iniに設定する。
/etc/php.iniファイルを修正する場合は[PHP]セクションで
 user_agent = “Mosaic”
みたいに設定する。

実行時に切り替える場合は、ini_set関数で
 ini_set(‘user_agent’, ‘User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6)’);
みたいな感じにする。

 独自BOTを作っていて、BOTのUAを定義したい場合など役に立つだろう。

(768)

カテゴリー: PHP | コメントをどうぞ

新しくVPSを契約したので、お名前.comとさくらで再度ベンチを取ってみた

 仕事関係で新しくお名前.com(KVM)とさくらのVPSサーバーの契約をしたので、それぞれのベンチを更新しておく。

お名前.com(KVM)の1380円コースのUnixBnech

========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)

System: o2a.studioes.net: GNU/Linux
OS: GNU/Linux — 2.6.18-308.1.1.el5 — #1 SMP Wed Mar 7 04:16:51 EST 2012
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap=”UTF-8″, collate=”UTF-8″)
CPU 0: Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz (6133.4 bogomips)
x86-64, MMX, Physical Address Ext, SYSCALL/SYSRET
CPU 1: Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz (6132.4 bogomips)
x86-64, MMX, Physical Address Ext, SYSCALL/SYSRET
CPU 2: Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz (6134.8 bogomips)
x86-64, MMX, Physical Address Ext, SYSCALL/SYSRET
12:20:41 up 3 days, 19:14, 1 user, load average: 0.09, 0.03, 0.01; runlevel 3

————————————————————————
Benchmark Run: Mon May 28 2012 12:20:41 – 12:48:49
3 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 19161530.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3797.3 MWIPS (9.8 s, 7 samples)
Execl Throughput 1738.7 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 988507.3 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 289959.6 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1526394.9 KBps (30.0 s, 2 samples)
Pipe Throughput 2619601.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 311905.9 lps (10.0 s, 7 samples)
Process Creation 6949.5 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4281.3 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1423.9 lpm (60.0 s, 2 samples)
System Call Overhead 4632913.8 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 19161530.5 1641.9
Double-Precision Whetstone 55.0 3797.3 690.4
Execl Throughput 43.0 1738.7 404.3
File Copy 1024 bufsize 2000 maxblocks 3960.0 988507.3 2496.2
File Copy 256 bufsize 500 maxblocks 1655.0 289959.6 1752.0
File Copy 4096 bufsize 8000 maxblocks 5800.0 1526394.9 2631.7
Pipe Throughput 12440.0 2619601.7 2105.8
Pipe-based Context Switching 4000.0 311905.9 779.8
Process Creation 126.0 6949.5 551.5
Shell Scripts (1 concurrent) 42.4 4281.3 1009.7
Shell Scripts (8 concurrent) 6.0 1423.9 2373.2
System Call Overhead 15000.0 4632913.8 3088.6
========
System Benchmarks Index Score 1346.0

————————————————————————
Benchmark Run: Mon May 28 2012 12:48:49 – 13:16:57
3 CPUs in system; running 3 parallel copies of tests

Dhrystone 2 using register variables 56858986.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 11326.2 MWIPS (10.0 s, 7 samples)
Execl Throughput 13070.2 lps (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 163497.5 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 50706.7 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 407272.4 KBps (30.0 s, 2 samples)
Pipe Throughput 7740792.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 1557688.3 lps (10.0 s, 7 samples)
Process Creation 39957.6 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 16021.8 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 2878.0 lpm (60.0 s, 2 samples)
System Call Overhead 7840433.7 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 56858986.2 4872.2
Double-Precision Whetstone 55.0 11326.2 2059.3
Execl Throughput 43.0 13070.2 3039.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 163497.5 412.9
File Copy 256 bufsize 500 maxblocks 1655.0 50706.7 306.4
File Copy 4096 bufsize 8000 maxblocks 5800.0 407272.4 702.2
Pipe Throughput 12440.0 7740792.9 6222.5
Pipe-based Context Switching 4000.0 1557688.3 3894.2
Process Creation 126.0 39957.6 3171.2
Shell Scripts (1 concurrent) 42.4 16021.8 3778.7
Shell Scripts (8 concurrent) 6.0 2878.0 4796.7
System Call Overhead 15000.0 7840433.7 5227.0
========
System Benchmarks Index Score 2279.9

 相変わらずウェットストーンが高い。
 トランスコーダを走らせても、20fps前後出るので自宅に変換用PCを買うのがあほらしくなるスピードだ(Walkmanプロファイルだと100fps超えるし)

さくら2GB(v3) 1480円のUnixBench

========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)

System: www3363uf.sakura.ne.jp: GNU/Linux
OS: GNU/Linux — 2.6.32-220.17.1.el6.x86_64 — #1 SMP Wed May 16 00:01:37 BST 2012
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap=”UTF-8″, collate=”UTF-8″)
CPU 0: Intel(R) Xeon(R) CPU E5645 (4800.2 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSCALL/SYSRET
CPU 1: Intel(R) Xeon(R) CPU E5645 (4800.2 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSCALL/SYSRET
CPU 2: Intel(R) Xeon(R) CPU E5645 (4800.2 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSCALL/SYSRET
13:08:05 up 6 days, 50 min, 1 user, load average: 0.41, 0.20, 0.12; runlevel 3

————————————————————————
Benchmark Run: Mon May 28 2012 13:08:05 – 13:36:03
3 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 20218009.8 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2702.1 MWIPS (7.5 s, 7 samples)
Execl Throughput 1405.1 lps (29.3 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 571262.0 KBps (30.1 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 164788.5 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1143543.4 KBps (30.0 s, 2 samples)
Pipe Throughput 1416847.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 218994.1 lps (10.0 s, 7 samples)
Process Creation 3338.4 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2728.8 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 782.9 lpm (60.0 s, 2 samples)
System Call Overhead 3000141.3 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 20218009.8 1732.5
Double-Precision Whetstone 55.0 2702.1 491.3
Execl Throughput 43.0 1405.1 326.8
File Copy 1024 bufsize 2000 maxblocks 3960.0 571262.0 1442.6
File Copy 256 bufsize 500 maxblocks 1655.0 164788.5 995.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 1143543.4 1971.6
Pipe Throughput 12440.0 1416847.9 1138.9
Pipe-based Context Switching 4000.0 218994.1 547.5
Process Creation 126.0 3338.4 264.9
Shell Scripts (1 concurrent) 42.4 2728.8 643.6
Shell Scripts (8 concurrent) 6.0 782.9 1304.8
System Call Overhead 15000.0 3000141.3 2000.1
========
System Benchmarks Index Score 881.0

————————————————————————
Benchmark Run: Mon May 28 2012 13:36:03 – 14:04:01
3 CPUs in system; running 3 parallel copies of tests

Dhrystone 2 using register variables 60631625.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 8157.5 MWIPS (7.7 s, 7 samples)
Execl Throughput 7662.9 lps (29.5 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 406180.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 120266.1 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1120928.0 KBps (30.0 s, 2 samples)
Pipe Throughput 4245141.3 lps (10.0 s, 7 samples)
Pipe-based Context Switching 581530.1 lps (10.0 s, 7 samples)
Process Creation 16977.0 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 8931.4 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 1361.9 lpm (60.1 s, 2 samples)
System Call Overhead 6741630.9 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 60631625.5 5195.5
Double-Precision Whetstone 55.0 8157.5 1483.2
Execl Throughput 43.0 7662.9 1782.1
File Copy 1024 bufsize 2000 maxblocks 3960.0 406180.4 1025.7
File Copy 256 bufsize 500 maxblocks 1655.0 120266.1 726.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 1120928.0 1932.6
Pipe Throughput 12440.0 4245141.3 3412.5
Pipe-based Context Switching 4000.0 581530.1 1453.8
Process Creation 126.0 16977.0 1347.4
Shell Scripts (1 concurrent) 42.4 8931.4 2106.5
Shell Scripts (8 concurrent) 6.0 1361.9 2269.9
System Call Overhead 15000.0 6741630.9 4494.4
========
System Benchmarks Index Score 1940.0

 さくらとお名前.com(KVM)のUnixBenchの比。
 File周りでさくらVPSは2倍以上優速だけど、その他はドライストーンが微妙に勝っている以外、ほとんど負けている。
 DB処理でディスクアクセスが多発する場合はさくら、オンメモリで動作しちゃうような場合はお名前の方が良い感じかな。

(266)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ