指定ディレクトリ以下の特定のファイルを全てchmodしたりchownしたりする。
find ./ -name \*.phps -type f -exec chmod 664 {} \;
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 |
find ./ -name \*.phps -type f -exec chmod 664 {} \;
RewriteEngine onRewriteLockはロックファイルの場所で、どこでも良い。但し、VirtualHostの中には置けないようなので、一番上に書く。
RewriteLock /tmp/rewritemap.lock
RewriteMap myprog prg:/usr/local/bin/url_rewriter.php
RewriteRule ^/rewrite/(.*)$ /test/${myprog:$1}
#!/usr/local/bin/phpmod_rewriteからは、stdinに入力内容+"\n"が来る。この入力をfgetsで取って、書き換えた結を"\n"で終端してstdoutに返す。終わったら次の入力に備える。と、こういう次第である。
<?php
$fin = fopen("php://stdin",'r');
while(!feof($fin)){
$read = fgets($fin);
$out = ここで$readに応じて書き換え処理...;
$fout = fopen("php://stdout",'w');
$out .= "\n";
fwrite($fout, $out);
fclose($fout);
}
fclose($fin);
// ※入出力はSTDINとechoを使ってもいいが、分かり易さでphp://とした。
?>
mysql> SHOW TABLES;
+------------------------------------------+
| Tables_in_usodb |
+------------------------------------------+
| attacker_ahoaho |
| abyorn_hogehoge |
:
+------------------------------------------+
206 rows in set (0.01 sec)
mysql>
mysql> SHOW CREATE TABLE zenra_config\G
*************************** 1. row ***************************
Table: zenra_config
Create Table: CREATE TABLE `zenra_config` (
`zenraid` varchar(64) CHARACTER SET sjis COLLATE sjis_bin NOT NULL,
`title` varchar(512) CHARACTER SET sjis COLLATE sjis_bin DEFAULT NULL,
`text` mediumblob,
`remark` varchar(512) CHARACTER SET sjis COLLATE sjis_bin DEFAULT NULL,
PRIMARY KEY (`zenraid`),
CONSTRAINT `fk_znrcfg_aid` FOREIGN KEY (`zenraid`) REFERENCES `zenra_pri` (`zenraid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=sjis
1 row in set (0.00 sec)
mysql>
#!/bin/sh
# mysqlコマンドと引数
SCRIPT_MYSQL="mysql -p[YOUR_PASS] -u [YOUR_NAME] [YOUR_DB]"
# 出力ファイル
FILE_CREATES=tablecreatesql.txt
rm -f ${FILE_CREATES}
for t in `echo "SHOW TABLES" | ${SCRIPT_MYSQL}`
do
echo "SHOW CREATE TABLE $t\G" | ${SCRIPT_MYSQL} >> ${FILE_CREATES}
done
ffmpeg -y -i PICT001.AVI -sameq PICT001.mpg
ffmpeg -y -i PICT002.AVI -sameq PICT002.mpg
ffmpeg -y -i PICT003.AVI -sameq PICT003.mpg
copy /b PICT*.mpg temp.mpg
ffmpeg -y -i temp.mpg -same_quant -dts_delta_threshold 1 PICTALL.mpg
ffmpeg -y -i PICTALL.mpg -vcodec libxvid -b:v 1200k -r 15 \
-acodec libmp3lame -ab 64 -ar 44100 \
PICTXVID.avi
// 配列に入った緯度経度をポリラインエンコードする実行すると、こんな感じで出力される(実際は改行は入っていない)。
// 1つのポイントは array(緯度10進数,経度10進数) の形式
// ポイントを array( ポイント, ポイント, ... ) で列挙
function latlon2GooglePolyline($data)
{
$plat = false; // 1つ前の緯度
$plon = false; // 1つ前の経度
foreach($data as $point){
// 初回以外は差分を取る
$lat = $plat !== false ? $point[0] - $plat : $point[0];
$lon = $plon !== false ? $point[1] - $plon : $point[1];
// 緯度と経度をポリラインエンコードしてクエリに追加
$query .= GooglePolyline_Encode($lat).GooglePolyline_Encode($lon);
$plat = $point[0];
$plon = $point[1];
}
return $query;
}
// 単体の緯度または経度をポリラインエンコードする
// 入力値 $value は10進数の緯度または経度
function GooglePolyline_Encode($value)
{
$value = ($value * pow(10,5)) << 1; // ステップ2,3,4: 10^5を掛け左1ビットシフト
if( $value < 0 ) $value = ~$value; // ステップ5: 元の数値が負の時はビット反転
//ステップ6,7: 下位から5ビットずつ切り出す(逆順になる)
for($i=0;$i<6;$i++){
$arr[$i] = $value & 0x0000001F;
$value = $value >> 5;
}
// 不要なバイトを取り除く(上位で0が続く間そのバイトは除去、但し0の時は1バイト残す)
while( $arr[ count($arr)-1 ] === 0 && count($arr) > 1 ){
array_pop($arr);
}
//ステップ8: 最下位バイト以外に後続ビットを立てる(0x20論理和を加算)
for($i=0;$i<count($arr)-1;$i++){
$arr[$i] |= 0x20;
}
//ステップ9,10,11: 各バイトに63を加算してASCII文字に変換
$ret = '';
for($i=0;$i<count($arr);$i++){
$ret .= chr($arr[$i]+63);
}
return $ret;
}
// テスト用データ・山手線各駅の緯度経度
$data = array(
array(35.619772,139.728439),
array(35.625974,139.723822),
array(35.633923,139.715775),
array(35.646685,139.710070),
array(35.658871,139.701238),
array(35.670646,139.702592),
array(35.683061,139.702042),
array(35.689729,139.700464),
array(35.700875,139.700261),
array(35.712677,139.703715),
array(35.720476,139.706228),
array(35.730256,139.711086),
array(35.731586,139.728885),
array(35.733445,139.739303),
array(35.736825,139.748053),
array(35.737781,139.761229),
array(35.731954,139.766857),
array(35.727908,139.771287),
array(35.721484,139.778015),
array(35.713790,139.777043),
array(35.707282,139.774727),
array(35.698547,139.773091),
array(35.691173,139.770641),
array(35.681391,139.766103),
array(35.675441,139.763806),
array(35.666151,139.758654),
array(35.655391,139.757135),
array(35.645736,139.747575),
array(35.628760,139.738999),
array(35.619772,139.728439)
);
// テスト用データをポリラインエンコードしてURLを出力(実際は改行は入っていない)
echo "http://maps.google.com/maps/api/staticmap?sensor=false&
size=640x640&maptype=roadmap&path=color:0x0000ffFF%7Cweight:
5%7Cenc:".latlon2GooglePolyline($data)."\n";
$ php polylineencode.phpこのままIMGタグに張り込むと、こうなる(クリックで原寸)。
http://maps.google.com/maps/api/staticmap?sensor=false&size=640x640&maptype=roadmap&
path=color:0x0000ffFF%7Cweight:5%7Cenc:q~kxEuuysYwe@x[sp@fq@wnArb@ckAdv@qhAmGqlAlBsh
@xHsdAf@whAqTuo@uNa|@i]iGenBqJa`AaTsu@}DiqAjc@cb@fXuZbg@_i@`o@`Erg@lMpu@dI`m@fNb|@h[
bd@hM`y@d_@dbAlHh{@tz@`iBpt@bw@|`A
function binary_dump($in)pack()でunsigned charで分割して配列に格納し、端から出力しているだけである。
{
$bindata = unpack("C*", $in );
$ret = "";
foreach($bindata as $v){
$ret .= sprintf("%02x ",$v);
}
return $ret;
}
$sjis = "バイナリダンプ";
$utf8 = mb_convert_encoding($sjis,"UTF-8","SJIS");
echo "SJIS:".binary_dump($sjis)."\r\n";
echo "UTF8:".binary_dump($utf8)."\r\n";
$ php dump.php
SJIS:83 6f 83 43 83 69 83 8a 83 5f 83 93 83 76
UTF8:e3 83 90 e3 82 a4 e3 83 8a e3 83 aa e3 83 80 e3 83 b3 e3 83 97
function modulus10w31($num)ついでにモジュラス16。
{
$arr = array_reverse(str_split($num));
for($i=0;$i<count($arr);$i++){
$t += ( ($i+1) % 2) == 0 ? intval($arr[$i]) : intval($arr[$i])*3;
}
$cd = 10 - intval( substr($t,strlen($t)-1,1) );
return $cd > 0 ? 10 - $cd : 0;
}
function modulus16($str)おまけでモジュラス43。
{
$maparr = str_split('0123456789-$:/.+ABCD');
$inarr = str_split($str);
$t = 0;
for($i=0;$i<count($inarr);$i++){
$t += array_search( $inarr[$i], $maparr);
}
return $maparr[ 16-($t % 16) ];
}
function modulus43($str)使うときは入力値のvalidationを加えてください。
{
$maparr = str_split('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%');
$inarr = str_split($str);
$t = 0;
for($i=0;$i<count($inarr);$i++){
$t += array_search( $inarr[$i], $maparr);
}
return $maparr[ ($t % 43) ];
}
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\xpdf\xpdfbin-win-3.03\bin64>pdfimages.exe -j C:\source.pdf .\
C:\xpdf\xpdfbin-win-3.03\bin64>
tc@box:~$ sudo sh
root@box:/home/tc# cd /usr/local/etc/ssh
root@box:/usr/local/etc/ssh# cp sshd_config.example sshd_config
(※必要であれば sshd_config を編集する)
root@box:/home/tc# /usr/local/etc/init.d/openssh start
Generating public/private rsa key pair.
...(略)
(※一度sshdを実行してホスト鍵を作成しておく)
root@box:/home/tc# adduser usost
Changing password for usost
New password:
Retype password:
Password for usost changed by root
root@box:/home/tc# grep usost /etc/passwd
usost:x:1000:1000:Linux User,,,:/home/usost:/bin/sh
root@box:/home/tc# grep usost /etc/shadow
usost:$1$RPG9zR3i$pxjWO47JkotnvIpfni6Fo/:15136:0:99999:7:::
root@box:/home/tc# vi /opt/userinit.sh
----
#!/bin/sh
# /opt/userinit.sh
# add user on boot.
echo 'usost:x:1000:0:Linux User,,,:/home/usost:/bin/sh' >> /etc/passwd
echo 'usost:$1$RPG9zR3i$pxjWO47JkotnvIpfni6Fo/:15136:0:99999:7:::' >> /etc/shadow
echo 'usost ALL=NOPASSWD: ALL' >> /etc/sudoers
----
root@box:/home/tc# chmod 755 /opt/userinit.sh
root@box:/home/tc# vi /opt/bootlocal.sh
----
#!/bin/sh
# put other system startup commands here
/opt/userinit.sh
/usr/local/etc/init.d/openssh start
----
root@box:/home/tc# vi /opt/.filetool.lst
opt/userinit.sh
usr/local/etc/ssh
の2行を追加。
tc@box:~$ tce-load -wi kmap.tcz
tc@box:~$ vi /opt/bootlocal.sh
----
#!/bin/sh
# put other system startup commands here
loadkmap < /usr/share/kmap/qwerty/jp106.kmap
/opt/userinit.sh
/usr/local/etc/init.d/openssh start
----
▼レンタルサーバー・VPS比較表を見る▼