tomimemo
http://w.atwiki.jp/tmogmni/
tomimemo
ja
2006-10-11T00:30:09+09:00
1160494209
-
menu
https://w.atwiki.jp/tmogmni/pages/1.html
''Menu''
-[[Top]]
-[[perlメモ]]
-[[mysqlメモ]]
-[[postgresqlメモ]]
-[[Apacheメモ]]
-[[linuxメモ]]
-[[qmailメモ]]
-[[OpenLaszloメモ]]
-PHPメモ
--[[Smarty]]
--[[PearDB]]
--[[php.ini関連]]
--[[phpeclipse]]
--[[定義済み変数]]
--[[PHP関数等]]
--[[その他メモ]]
-[[携帯用webサイト開発関連]]
-[[迷惑メール一覧]]
-[[ポートスキャン]]
-[[いろいろ]]
2006-10-11T00:30:09+09:00
1160494209
-
Top
https://w.atwiki.jp/tmogmni/pages/2.html
a
2006-09-30T00:25:40+09:00
1159543540
-
迷惑メール一覧
https://w.atwiki.jp/tmogmni/pages/16.html
日々届く迷惑メールぽいもの。メールアドレス収集ボットさん、このページも収集してスパムメールを送ってあげてください。
00000018_00002205_unsubscribe@sv.j-news.jp
00000007_00001753_unsubscribe@sv.j-news.jp
021maxday.honkidesagasou@hotmail.com
09minimini.tukumo@yahoo.co.jp
0yen_namalive@lycos.jp
1okusama093free00@hotmail.com
14dfgsdhu@nifty.com
14seferiii@nifty.com
144hkf_587dfgsd@hotmail.com
15sdgdhieee@nifty.com
15srgtsdrlghsdr@hotmail.com
15tokubetsu_jyosei@nifty.com
18hoiuu_htyy@hotmail.com
2000over_netparty@abox4.so-net.ne.jp
2005_onlysummerweek@orange.ocn.ne.jp
2shotwebonline@cat.biglobe.ne.jp
2005welcome_party@abox6.so-net.ne.jp
25asdfdiiii@nifty.com
25honobono@hotmail.com
25honokani@hotmail.com
25honikanimo@hotmail.com
25zsdghsdgj@hotmail.com
32hanamizuki@nifty.com
36sdfhsdogi@nifty.com
36days_free_1254@nifty.com
3corabo_web_deai_goukon@d4.dion.ne.jp
3menbers_youcanplay@mri.biglobe.ne.jp
3yuki_ml_service@docomo.ne.jp
55_sado_okusama_55@hotmail.com
56sakosakomusic@mail.goo.ne.jp
78superfreepicture@excite.co.jp
7honey_45kott@hotmail.co.jp
87fbreibgeisluogegyse@hotmail.com
88smsmsmsmhour056@hotmail.com
89fkagfkegrsgawh.ca@hotmail.com
----
attack-mail@mail.love-max-girls.net
abe_net_gol@goo.ne.jp
admin@easy-come.net
a_apt_abe@mail.goo.ne.jp
ami_toomy_rel@green.livedoor.com
ami_toomy_rel@mail.goo.ne.jp
ami_toome_rel@mail.goo.ne.jp
ando_allon_ma@infoseek.jp
aoki@lavieen-rose.cx
apocrypha@nifty.ne.jp
arisa@dex.3feet.com
bini@vip-palace.com
brfufhuweahtfhwe9trfuewrhatfh8ewty423qyhqw3yh@hotmail.com
bomb_bomb_7_b@yahoo.co.jp
carbonic@infoseek.jp
cr7jrkb6xc573465c3e6evu7j65@yahoo.co.jp
cfuryucr68br78lrxcr76c4763x53cf5ev5irt6fuky@yahoo.co.jp
daisuki@brokenbrake.com
daisuke@cacktailshaker.com
dolphin_ring_r0922@yahoo.co.jp
dgr465156n1e56ee@yahoo.co.jp
eiko_kijima_hv@yahoo.co.jp
finance_financing0719@yahoo.co.jp
first_step_123abc@yahoo.co.jp
fjersofu493wioujijfsaouf489a0we9fupoj@hotmail.com
fzwrtjec5ve68u4567363x5562w42wv6u5tetyetyh@hotmail.com
francass_nana44@yahoo.co.jp
free_madam_jast_in_love487@dion.ne.jp
friend__chat_ope@infoseek.jp
fwhv3465@mb.infoweb.ne.jp
gtyyy_487ohcool@hotmail.com
help@can-na.jp
hitomi_1131_luv55@yahoo.co.jp
info@milkymail.net
info@s-si2.com
info@lackyhit.com
illd_d_takako@yahoo.co.jp
info@zero-zero-machine.com
info_free_mail_printing_co_dai@dion.ne.jp
japan_di_cestrs@mail.goo.ne.jp
jgfsdigjhsorsoeghsdfdsgs8493wtguhs@hotmail.co.jp
job_news@sohowork.me.uk
Katase50@nifty.ne.jp
Kawano89@infoseek.jp
kotonohabatake_0830@yahoo.co.jp
kghf@yahoo.com.cn
lovely_february@mail.goo.ne.jp
lily_island_o_o_0921@yahoo.co.jp
lig2on_jp@yahoo.co.jp
lumalimalimaliumalimali@hotmail.com
love_get_01258@nifty.com
love_get_love0365258@nifty.com
love_get_04528@nifty.com
madam_2y-supportcenter@5151madam.cc
musiq@anet.ne.jp
m-pre@mbn.nifty.com
master@otoku-pro.com
madam_or_tv192535com@yahoo.co.jp
medamayaki70@yahoo.co.jp
mint_smile221@yahoo.co.jp
might_bring_love15@yahoo.co.jp
miyuky_seireki_2005nen@yahoo.co.jp
milk@buywhiteband.com
Motoyama293@so-net.ne.jp
nanako_775_3smil_keep@yahoo.co.jp
natu_no_yukidaruma324y@yahoo.co.jp
nt705@hotmail.com
old_mrs_service_mail_sp@odn.ne.jp
ojllk_ayane_cyan@mail.goo.ne.jp
pure_full_9054@mail.goo.ne.jp
pretty_1987@mail.goo.ne.jp
popmaster@mail-mail.2y.net
player@kiwi.ne.jp
pooh_galaxy@yahoo.co.jp
reiko_kijima_club@yahoo.co.jp
rina_bb_bocomo@mail.goo.ne.jp
sakujyo_c_39658@yahoo.co.jp
soku_h_girl_info@soku-h-planing.net
sp_information@mail.nature-love.net
si_wonder_go@yahoo.co.jp
sizuka_po_op@mail.goo.ne.jp
stop_maga@yahoo.co.jp
Sugai22@ybb.ne.jp
sns_parking_henz@tiger.livedoor.com
system_medic@pmye.com
tamago_daisuki0816@yahoo.co.jp
ta_fauth_okuyama@mail.goo.ne.jp
to_to013_to_to@nifty.com
tomoe-id732@chijyokan.net
takako-yoshida@goo.ne.jp
tears_trust@yahoo.co.jp
teas_trust_sei@yahoo.co.jp
trans_1@todomana.com
uhk86159@nifty.com
webmaster@nan-paso.com
Yaguchi99@tdr.ocn.ne.jp
yoshi@naa.att.ne.jp
yellowcube_88@ocn.ne.jp
zeikintaisakukenkyujyo@nifty.com
2006-07-20T11:10:34+09:00
1153361434
-
その他メモ
https://w.atwiki.jp/tmogmni/pages/20.html
#contents
*mb_send_mailでwindowsマシンからメール送信
php.iniのmail functionのセクションで設定すれば使える??
[mail function]
; For Win32 only.
SMTP = 127.0.0.1
smtp_port = 25
; For Win32 only.
sendmail_from = hogehoge@hogehoge.com
*画像生成テスト(for windows)
php.iniの extension=php_gd2.dll を有効にする。
*javascriptをPHP5で動かす(For PHP5)
[[PHP5で書かれた JavaScriptのインタプリタ>http://j4p5.sourceforge.net/index.php]]。
JavaScriptのソースをPHP5で動かすことができるようです。
初回は起動が遅いけど、2回目以降はキャッシュ(winだと WINNT/TEMP以下、unix系だと/tmp以下に作成)を読みに行くので割と早いかも。
サンプルコード
<?php
// モジュールの読み込み
include "js.php";
// Javascriptのコード記述し$codeに代入
$code = <<<EOD
function color() {
var s=Math.floor(Math.random()*256*256*256).toString(16);
return "#" + ("00000"+s).substr(-6);
}
String.prototype.colorize = function() {
var o='';
for (var i=0;i<this.length;i++) {
o += '<span style="color:'+color()+'">'+this.charAt(i)+'</span>';
}
return o;
};
String.prototype.big = function() {
return "<span style='font-size:6em'>"+this+"</span>";
};
print("Hello, World!".colorize().big());
EOD;
// Javascript実行
js::run($code);
?>
*カレンダーを作る
pearのカレンダークラスを用いてカレンダーを作るテスト。
<?php
require_once 'Calendar/Month/Weekdays.php';
print(dispCalendar("2005","12"));
/**
* 引数で指定されたカレンダーのテーブルを返す
* @param string $year 年 2005等で指定
* @param string $month 月 2,12等で指定
* @return string $returnString 指定した日のカレンダー
*/
function dispCalendar($year, $month)
{
// 曜日の設定
$week_day = array("日","月","火","水","木","金","土");
// 現在の日付を取得
$Month = new Calendar_Month_Weekdays($year,$month,0);
$Month->build();
$returnString = "<table border='1'>\n";
$returnString .= "<tr>";
foreach($week_day as $val)
$returnString .= "<td>$val</td>\n";
$returnString .= "</tr>\n";
while ($Day = $Month->fetch())
{
if ($Day->isFirst())
$returnString .= "<tr>\n";
if ($Day->isEmpty())
$returnString .= "<td> </td>\n";
else
$returnString .= '<td>'.$Day->thisDay()."</td>\n";
if ($Day->isLast())
$returnString .= "</tr>\n";
}
$returnString .= "</table>\n";
return $returnString;
}
?>
*windowsにphp-5.1.1をインストール(インストーラーを使わない版)
インストーラ使うと楽にインストールできるけど、過去のバージョンのphpを残しておきたい場合などはインストーラー使わないほうがいいのかもしれない(あとで元に戻せるので)。ということで、windowsにインストーラー使わずにphp5.1.1をインストールする手順をメモ。インストールする環境は以下。
-windows 2000
-Apache2.0.54インストール済み
-php5.0.4→これを5.1.1にする
まず、php5.1.1のwin32版zipファイル(php-5.1.1-Win32.zip
)を http://www.php.net/downloads.php よりダウンロードして解凍。
解凍するとphp-5.1.1-Win32というディレクトリが作成されるので、こいつをphp-5.1.1にリネームして D:\直下に配置。
次に環境変数を設定。
-マイコンピュータを右クリックしてプロパティ開く
-詳細タブ開く
-環境変数クリック
-システム環境変数内の「Path」を選択して「編集ボタン」をクリック
-変数値の最後に「;D:\php-5.1.1」を入力してOK
Apacheのhttpd.confを以下のように修正。
LoadModule php5_module "D:/php-5.1.1/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "D:/php-5.1.1"
D:\php-5.1.1にあるphp.ini-recommendedをphp.iniにリネーム。既存のphp.iniがある場合はD:\php-5.1.1にコピー。php.iniの以下の部分を修正。
extension_dir = "D:/php-5.1.1/ext"
パソコン再起動。
Apacheを起動。起動時にエラーが出るようであれば、php.iniのextension_dirとかinclude_pathとか見直す。
あとは定番のphpinfo()作成して表示させて「PHP Version 5.1.1」とか出ればOK。
*if文を短く
$hoge = "";
if (empty($str))
{
$hoge = "空";
}
else
{
$hoge = "not 空";
}
上記と同じことを1行で書くと以下のようになる。
$hoge = (empty($str))? "空" : "not 空";
*クラスの生成は文字列でもOK
クエリ文字列からクラスを生成したりできる。
例として、WEBサーバのドキュメントルート直下に以下のファイルを配置してテスト。(エラー処理とかは省略)
index.php
class/
|
+---Top.php(トップページ用クラス)
|
+---Hoge.php(Hogeクラス)
|
+---Hogehoge.php(Hogehogeクラス)
まず、index.phpを作成。
[index.php]
<?php
// GET値のact名を取得
// act名がない場合は既定の文字列をセット
$act = $_GET["act"];
if (strlen($act) <= 0) {
$act = "top";
}
// クラス名は先頭大文字にしておくというルールで。
$act = ucfirst($act);
// act名のクラスのインスタンスを作成
$instance = new $act;
// 生成されたインスタンスのrun()メソッドを実行
$instance->run();
// クラスのオートロード
// classディレクトリ以下の$classname.phpファイルをrequire_onceする
function __autoload($classname) {
require_once("class/".$classname.".php");
}
?>
次に単純なクラスを3つほど作成
[Top.php]
<?php
/*
* Topページ用
* GET値のact名が定義されていない場合に表示させるページ
*/
class Top {
public function run() {
print "top page";
}
}
?>
[Hoge.php]
<?php
/*
* Hogeクラス
*/
class Hoge {
public function run() {
print "hoge page";
}
}
?>
[Hogehoge.php]
<?php
/*
* Hogehogeクラス
*/
class Hogehoge {
public function run() {
print "hogehoge page";
}
}
?>
以下URLにアクセス。
http://localhost/index.php では「top page」、
http://localhost/index.php?act=top では「top page」、
http://localhost/index.php?act=hoge では「hoge page」、
http://localhost/index.php?act=hogehoge では「hogehoge page」
と表示されるはず。
クエリ文字列からクラスのインスタンスを自動生成してrunメソッドを実行するということができる。
*PHPでバッチ処理(linux)
2~3年前まではPHPでバッチ処理を行う場合は結構コツがいるようだったが、現在はすんなりできる。たとえば、画面に hoge と表示するバッチは以下のようにすればOK。
test.phpの作成
<?php
print("hoge\n");
?>
で、SSHかなんかで接続して以下コマンド。
# /usr/local/bin/php test.php
*全てのHTTPリクエストヘッダを取得する
getallheaders()
または
apache_request_headers()
リクエストヘッダを表示するには以下。
test.php
<?php
print_r(getallheaders());
?>
*ミリ秒単位の時間を取得
microtime関数を使う。返却されるのは文字列"msec sec"のフォーマット。
print(microtime());
結果:0.89670100 1130307859
print((float)microtime());
結果:0.896716
*コンストラクタとデストラクタ
php5からコンストラクタとデストラクタの記述が厳密になった。(過去バージョンとの互換性から、クラス名と同名のfunctionもコンストラクタに使える。)
MyClass.php(厳密な書き方)
<?php
class MyClass
{
//コンストラクタ
public function __construct()
{
}
//デストラクタ
public function __destruct()
{
}
}
?>
MyClass.php(過去のバージョン)
<?php
class MyClass
{
//コンストラクタ
function MyClass()
{
}
}
?>
*全角ハイフンを半角ハイフンに変換関数
public function toHankakuHaifun($str)
{
return mb_ereg_replace("[-ーー―-‐]","-",$str);
}
*キャスト
<?php
//整数へのキャスト
$foo = (int)$bar;
$foo = (integer)$bar;
//論理値へのキャスト
$foo = (bool)$bar;
$foo = (boolean)$bar;
//floatへのキャスト
$foo = (float)$bar;
$foo = (double)$bar;
$foo = (real)$bar;
//文字列へのキャスト
$foo = (string)$bar;
//配列へのキャスト
$foo = (array)$bar;
//オブジェクトへのキャスト
$foo = (object)$bar;
>
*型チェック
$hoge = "aaa";
//$boolはfalse
$bool = is_array($hoge);
*半角カナでPOSTデータが文字化け
PHP内部のエンコーディング自動判定がミスっているらしい。短い入力文字だとたまにミスる。ダミーで日本語文字が書かれたhiddenタグを入れておくといいらしい。
<form>~</form>の中に
<input type="hidden" name="hidden" value="日本語判定用文字列">
*ケータイでアクセス時に「無効なデータを受信」
header関数でリダイレクトしている場合、リダイレクト先を相対URIで書いてると、たまに「無効なデータを受信しました」と出る。
リダイレクト先は、絶対URIで記述すること。
×header("Location: top2.html");
〇header("Location: http://www.hoge.com/top2.html");
2006-04-10T11:52:01+09:00
1144637521
-
linuxメモ
https://w.atwiki.jp/tmogmni/pages/22.html
#contents
*sed でhogeファイル内の空行を削除してhogehogeとして出力
# sed '/^\r/d' hoge > hogehoge
*カレントディレクトリのファイル数を調べる
# find . -type f | wc -l
99 ← 99個のファイルがある
*viの使い方
ファイル開きたい場合は
# vi ファイル名
viには編集モードとコマンドモードがある。ファイル開いた時点ではコマンドモード。編集モードに移行する場合は「i」等のキーを押す。以下コマンド一覧。
[終了]
:q セーブせずに終了
:q! 変更した行もセーブせずに終了
:w セーブするが終了しない
:wq セーブして終了(Shift+ZZでも同じ)
[編集モードへ移るためのキー]
i 現在のカーソル位置から挿入
R 現在のカーソル位置から置換
A 現在行の末尾に追加
O 現在行の前に行挿入
o 現在行の次に行挿入
[カーソル移動キー]
h(←) 左
j(↓) 上
k(↑) 下
l(→) 右
0 行頭へ
$ 行末へ
[Enter] 次の行の先頭へ
w 次の単語へ
b 前の単語へ
ctrl + f 次画面へ
ctrl + b 前画面へ
1G 文頭へ
G 文末へ
nnG nn行目へ
[変更キー]
x 1文字削除
dd 1行削除(カット)
cw(Change Word) 1語変更
c$ カーソル位置から行末まで変更
dw(Delete Word) 1語削除
d$ カーソル位置から行末まで削除
[検索]
/正規表現 前方検索
?正規表現 後方検索
n 次の候補
N 前の候補
[置き換え]
:1,$s/正規表現/置き換え文字列/g
文書内の全ての「正規表現」を「置き換え文字列」に置換
[コピー&ペースト]
yy 1行コピー
dd 1行カット
p ペースト(張り付け)
[その他]
.(ドット) 直前の変更操作の繰り返し
u 直前の変更操作の取り消し(何回でも戻れる)
:r xxx ファイル xxx の内容を次の行に挿入
:r! xxx OSのxxxコマンドを実行しその結果を次の行に挿入
:h 日本語マニュアルを表示
*viエディタ使用時に行番号を表示させる
viを起動後に行番号を表示させる
viでhoge.txtを開く
# vi hoge.txt
以下コマンドを打ち込んでエンターキー
:set number
起動と同時に行番号を表示させるには以下のようにホームディレクトリに .exrc ファイルを作成すればOK。
# echo "set number" >> ~/.exrc
*シェルスクリプト
例えば、apache子プロセスのinterrの数を表示するシェルスクリプト
# vi test.sh
以下記述。
#!/bin/sh
declare -i interrcount
interrcount=`ps lax | grep httpd | grep interr -c`
echo $interrcount
権限の変更
# chmod u+x test.sh
実行
# ./test.sh
if文の書き方は以下。if文の[]とコマンドの間に半角スペース空けないとエラーになる。しばらくはまった。
if [ コマンド ]; then
なにかコマンド
elif [ コマンド ]; then
なにかコマンド
else
なにかコマンド
fi
apacheが謎のinterr子プロセスを吐き出してサーバ停止になってしまう状況が起きた。今は落ち着いているものの、いつまた起こるかわからないのでシェルスクリプトを使ってプロセスの監視を行うことにした。ファイル名はprocesswatch.sh。
#!/bin/sh
# 整数宣言
declare -i interrCount
# 無限ループ
while true
do
# psコマンドでhttpdプロセスのinterrの数を取得
interrCount=`ps lax | grep httpd | grep interr -c`
# interrの数が30以上だったらapacheを再起動
if [ $interrCount -gt 30 ]; then
/usr/local/apache2/bin/apachectl restart
fi
# 5秒おきに監視
sleep 5s
done
---- ファイルここまで
権限の変更
# chmod u+x processwatch.sh
バックグラウンドで起動
# ./processwatch.sh &
停止する場合は psコマンドでpid調べてkill。
指定したプログラムのpidを取得するシェルスクリプト。たとえばhttpdプロセスのpidを取得する場合は以下。
#!/bin/sh
PID=`/bin/ps -aefw | grep httpd | awk '{print $2}'`
echo $PID
↑だと結果が一行に表示されてしまうのでこっちに修正
#!/bin/sh
PID=`ps aux | grep httpd | awk '{print $2}'`
echo $PID
*rsyncによるデータバックアップ
異なるマシン同士で簡単にバックアップを取るコマンドにrsyncというのがある。
以下、rsyncの設定手順。(SSHを使わない場合)
参考 http://www.asahikawahigashi-h.ed.jp/kohmusystem/rsyncd.html
まず、バックアップしたいファイルがあるサーバの設定。(ここではDBサーバとか)
ログファイルの吐き出し設定。
/etc/syslog.confを編集して以下追記。
# vi /etc/syslog.conf
local5.* /var/log/rsyncd.log
次に、rsyncd.confを以下の内容で作成。(新規で作成)
# vi /etc/rsyncd.conf
pid file = /tmp/rsyncd.pid # rsyncデーモンのプロセスID書きこみ場所
syslog facility = local5 # ログ書きこみ場所
read only = false # サーバへのデータ書きこみ許可
[db_backup_module] # rsyncクライアントからアクセスするモジュール名
path=/usr/local/pgsql/data/# バックアップ対象ディレクトリ
comment=backup db # コメント。なんでもいい
uid = root # このモジュールでデータ転送するときのユーザ名
gid = root # 同じくグループ名
use chroot=false # ファイル転送する前にpathでchrootするかどうか
secrets file=/etc/rsyncd.secrets # 認証で使われるパスワードファイル
auth users=root # 接続を許可するユーザー名(なんでもいい)
hosts allow = 192.168.0.100# 接続を許可するクライアント機のIPアドレス
hosts deny = * # 上記IP以外は拒否にする
次に パスワードファイル /etc/rsyncd.secretsを作成。
# vi /etc/rsyncd.secrets
root:hogehogepassword
設定ファイルとパスワードファイルの権限を変更。
# chmod 600 /etc/rsyncd.conf
# chmod 600 /etc/rsyncd.secrets
rsyncサーバを起動する。ポート873で待ち受け。しばらくdeamonと記述してたせいで、なかなか動かなかったorz
# /usr/bin/rsync rsyncd --daemon --config=/etc/rsyncd.conf --port=873
上記コマンドを/etc/rc.d/rc.localに以下追記して自動起動設定する。
# vi /etc/rc.d/rc.local
/usr/bin/rsync rsyncd --daemon --config=/etc/rsyncd.conf --port=873
----
バックアップファイル保存サーバ(rsyncクライアント)の設定。
まず、バックアップファイル保存ディレクトリの作成。どこでもいい。
# mkdir /backup
rsyncするときに使うパスワードファイルを作成する。
もちろん、上で設定したパスワードと同じにすること。
# vi /etc/rsyncd.pass
hogehogepassword
パスワードファイルの権限を変更。
# chmod 600 /etc/rsyncd.pass
取得除外対象ファイルの作成。別にいらないっちゃいらない。
とりあえずlogファイルは取らないようにしてみる。
# vi /etc/rsyncd.exclude
*.log
----
ここまでで、とりあえず設定終了。
rsyncクライアントから以下のコマンドを投げてみる。
# rsync --port=873 -avz --password-file=/etc/rsyncd.pass \
--exclude-from=/etc/rsync.exclude \
rsync://root@(DBサーバのIPアドレス)/db_backup_module /backup/
おお、ファイル一覧が表示されて、取れてる取れてる...ちなみにコマンド2回目以降は、新しく追加されたファイルや更新されたファイルのみ勝手に取得してくれるので便利。
ついでにcrontabに登録して、自動でバックアップとる設定にする。ここでは毎日午前3時30分にバックアップを取る。
# crontab -e
(1行で書く)
30 3 * * * root /usr/bin/rsync --port=873 -avz
--password-file=/etc/rsyncd.pass
--exclude-from=/etc/rsync.exclude
rsync://root@(DBサーバのIPアドレス)/db_backup_module /backup/
*コマンド制覇への道
http://www.linuxworld.jp/command/
http://homepage2.nifty.com/cs/linux_command/command/
*redhat linux enterprise 3.0インストールメモ
インストールするマシンはDELL PowerEdge SC420(win2000が入っている)。
インストールCD-ROMをマシンに入れて電源ON。いろいろエンターキーを押しまくってGUIベースのインストール画面に到達。言語・マウス・キーボードを設定。
「ディスクパーティションの設定画面」で「自動パーティション設定」を選択したところ''「新規ファイルシステム作成のための有効なデバイスが見つかりません」''のエラーが出て落ちた。
今度は「ディスクパーティションの設定画面」で「Disk Druidを使用して手動パーティション設定」を選択するが、同じエラーで落ちる。
いろいろ調べていると、どうやらハードディスクがSATAであるのが問題とのこと。DELLのHPに行って、ata_piix-0.93c-1c.tar.gz というドライバをダウンロード。
解凍すると、中に8個のファイル。
ata_piix-0.93c-dd-rhel3-i386-GU1U2.img
ata_piix-1.00b-dd-rhel3-x86_64-U2.img
ata_piix-0.93c-1dkms.noarch.rpm
ata_piix-0.93c-1dkms.src.rpm
ata_piix-1.00b-1dkms.noarch.rpm
ata_piix-1.00b-1dkms.src.rpm
dkms-1.10-1.noarch.rpm
README
READMEを読むと、「ata_piix-xxx.imgをフロッピーに作成してなんたら」と書いてあったので、既存で動いているlinuxマシンを使ってフロッピーにimgファイルを作成。一番上のファイルをとりあえず使ってみた。
# dd if=ata_piix-0.93c-dd-rhel3-i386-GU1U2.img of=/dev/fd0
しばらく待つとフロッピーが作成されたのでもう一回DELLマシンを起動、今度は起動するときに linux dd と入力して、ドライバインストールモード?で起動。
fd0とhdaの選択を迫られたので迷わずfd0を選択。作成したフロッピーを入れて「OK」ボタン。Errorになった。何故だorz
今度は ata_piix-1.00b-dd-rhel3-x86_64-U2.img をフロッピーに作成してもう一回チャレンジ。...Error...
またいろいろ調べていくと、どうやらrawriteというwindowsでもimgファイルが作成できるツールがあることを発見。
ftp://ftp.kddlabs.co.jp/pub/Linux/packages/RedHat/redhat/linux/9/en/os/i386/dosutils
こいつを落としてきてc:\aaaというフォルダに配置。ついでにさっき展開したimgファイルも同じフォルダに配置。
コマンドプロンプトで以下入力。
cd c:\aaa
rawrite
Enter disk image source file name: xxx.img
Enter target diskette drive: A:
エンターキー押す
おお、作成されている。
しばらくして作成されたので、再度DELLマシンを linux dd で起動。作成されたフロッピーを入れて「OK」おしたら..何故か今度はerrorにならずインストールされた。何故だ?
再度linuxインストール開始。問題の「ディスクパーティションの設定画面」で「自動パーティション設定」を選択...おお!エラーにならない!
ということで先に進めた。
*コマンド
日本語を扱う
export LANG=ja_JP.eucJP
export JLESSCHARSET=japanese
または
setenv LANG ja_JP.eucJP
setenv JLESSCHARSET japanese
※よく分からなかったら両方打ち込む
ファイルをある条件で検索してひっかかったら削除
・/usr/local/hoge/以下のディレクトリ
・拡張子がlogのもの
・最後に手が入った日付が7日前
上記条件の場合、以下のコマンドで対象ファイルを消せる。
# find /usr/local/hoge/* -name "*.log" -atime +7 -exec rm {} \;
削除じゃなくて圧縮の場合は以下
# find /usr/local/hoge/* -name "*.log" -atime +7 -exec gzip {} \;
フロッピーを使う(マウント)
# mount -t vfat /dev/fd0 /mnt/floppy
# ls /mnt/floppy
マウントしたあとはアンマウントして取り出す。
# umount /dev/fd0
sshを使えるようにする
# /etc/init.d/sshd start
シャットダウン(後、システム停止)
# shutdown -h now
ポートを開ける
rootでログイン
# redhat-config-securitylevel-tui
カスタマイズを選択
その他のポートにあけたいポート番号を記述->OK
->OK
で、OK。
ユーザ追加
# useradd hoge
hogeユーザが追加される
ユーザ削除
# userdel hoge
hogeユーザが削除される
/home 以下のディレクトリも同時に削除したい場合は
# userdel -r hoge
hogeユーザのパスワードを変更する
# passwd hoge
*iptablesの使い方
redhat-config-securitylevel-tui でポートを空けると楽だけど、iptables使ったほうがいいのかもしれないので、iptables使ったポートの空け方をメモ。
まず、現在のiptablesの内容を保存しておく。
保存しておけばもとに戻せるので。
ここでは/etc/にiptables.save という名前で保存。
# iptables-save > /etc/iptables.save
もとに戻すときは
# iptables-restore < /etc/iptables.save
ポートを空ける作業開始。ここではpingとsshの22番とpostgresql用ポートの5432を空ける。まず、ポリシーを設定。
INPUTを全部許す。
# iptables -P INPUT ACCEPT
FORWARDは全部無効。
# iptables -P FORWARD DROP
OUTPUTは全部許す。
# iptables -P OUTPUT ACCEPT
設定を一旦クリアー。
# iptables -F
ポートの設定。
pingと自端末からの入力を許可
# iptables -A INPUT -p icmp -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT
sshを許可
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
postgresqlを許可
# iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
TCPの接続開始と応答、FTPデータなどを許可
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
他の接続は全て破棄
# iptables -P INPUT DROP
設定を保存する。
# /etc/init.d/iptables save
一応再起動。
# service iptables restart
iptables -L コマンドで有効になっているか確認して終了。
*不要なサービスを止める
電源管理ユーティリティ
# chkconfig --level 3 apmd off
atコマンドで指定した時刻にコマンドを実行する
# chkconfig --level 3 atd off
かな漢字変換サーバ
# chkconfig --level 3 canna off
印刷システム
# chkconfig --level 3 cups off
# chkconfig --level 3 cups-config-deamon off
マウス制御
# chkconfig --level 3 gpm off
外部機器接続時に動く????
# chkconfig --level 3 haldeamon off
Internet Intranet Input Method Protocol????
# chkconfig --level 3 iiim off
マルチCPU環境で使う 1CPUマシンでは意味なし
# chkconfig --level 3 irqbalance off
ISDNカード接続用スクリプト
# chkconfig --level 3 isdn off
追加もしくは取り外されたハードウェアに関連した設定を変更する
# chkconfig --level 3 kudzu off
AppleのRendezvousのために利用(internetServer目的なら不要らしい)
# chkconfig --level 3 mDNSResponder off
ソフトウェア RAID の監視と管理用
# chkconfig --level 3 mdmonitor off
NFS、sambaの自動マウント
# chkconfig --level 3 netfs off
NFSでファイルロックを行うためのサービス
# chkconfig --level 3 nfslock off
ネットワークアダプタ監視デーモン
# chkconfig --level 3 nifd off
PCカードのデバイスドライバをロードする
# chkconfig --level 3 pcmcia off
RPC接続をTCPのポートにマッピングする
# chkconfig --level 3 portmap off
アップデート情報を一定時間ごとにチェック
# chkconfig --level 3 rhnsd off
RPCと呼ばれる通信の仕組みで使われる
# chkconfig --level 3 rpcgssd off
# chkconfig --level 3 rpcidmapd off
# chkconfig --level 3 rpcsvcgssd off
メール配送(qmailとか使う場合)
# chkconfig --level 3 sendmail off
X用フォントサーバ
# chkconfig --level 3 xfs off
管理下に置かれたサービスの起動などを制御
# chkconfig --level 3 xinetd off
*ホスト名の変更(redhat linux)
以下の二種類のファイルを変更
# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.175 xxxxxxx
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xxxxxxx
GATEWAY=192.168.0.1
変更後は、ネットワークデバイスを再起動。
# /etc/rc.d/init.d/network restart
※つうか、# hostname xxxxxxxxx でいいんじゃない?
2006-02-27T17:37:58+09:00
1141029478
-
PHP関数等
https://w.atwiki.jp/tmogmni/pages/30.html
#contents
*date('r')
print(date('r'));
出力結果
Tue, 21 Feb 2006 19:17:03 +0900
*空のファイルを作成する
empty.txtという空のファイルが作成される
touch("/home/hoge/empty.txt");
*ファイルのコピーを作成する
hoge_cp.txtというコピーが作成される
copy("/home/hoge/hoge.txt", "/home/hoge/hoge_cp.txt");
*ファイルグループを変更する
hoge.txtがwebuserグループになる
chgrp("/home/hoge/hoge.txt", "webuser");
*ファイルのパーミッションを変更する
hoge.txtのパーミッションが0755になる
chmod("/home/hoge/hoge.txt", 0755);
*CSVデータを読み込む
以下のようなcsvデータを読み込む場合。
[hoge.csv]
1,one,hoge
2,two,hogehoge
3,three,hogehogehoge
// csvファイルを読み取り専用で開く
$fp = fopen("/home/hoge/hoge.csv", "r");
$ret = array();
$i = 0;
// csvファイルを一行ずつ読み込んで配列に格納
while ($row = fgetcsv($fp))
{
$ret[$i] = $row;
$i++;
}
// ファイルクローズ
fclose($fp);
$retには、以下のように格納されている
Array
(
[0] => Array
(
[0] => 1
[1] => one
[2] => hoge
)
[1] => Array
(
[0] => 2
[1] => two
[2] => hogehoge
)
[2] => Array
(
[0] => 3
[1] => three
[2] => hogehogehoge
)
)
2006-02-21T19:23:23+09:00
1140517403
-
いろいろ
https://w.atwiki.jp/tmogmni/pages/31.html
#contents
----
*windows上でwgetを使う
http://members.at.infoseek.co.jp/futora/wget153/wget153_win32.lzh をダウンロード
解凍してできたディレクトリをwgetにリネームして適当に配置
(例 D:/tool/wgetとか)
コマンドプロンプト使って取得してみる。取得できた。
> cd /d d:\
> cd D:\tool\wget
> WGET.EXE http://www.google.co.jp/
--10:31:13-- http://www.google.co.jp:80/
=> `index.html'
Connecting to www.google.co.jp:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
0K -> ..
10:31:13 (2.65 MB/s) - `index.html' saved [2781]
オプションの指定について
-ユーザエージェントをhogehogeにする
> WGET.EXE --user-agent=hogehoge http://www.example.com/
-ユーザ名とパスワードを付加する
> WGET.EXE --http-user=username --http-passwd=password http://www.example.com/
残りはドキュメントを見れば大体OK。
ちなみにディフォルトのユーザエージェントは Wget/1.5.3 になっていた。
2006-02-08T10:51:15+09:00
1139363475
-
Apacheメモ
https://w.atwiki.jp/tmogmni/pages/18.html
#contents
*Apache2をlinuxにインストール
http://www.apache.jp/misc/download.html あたりからhttpd-2.0.54.tar.gz をダウンロード。ダウンロードしたファイルを/usr/local/src にコピー。
解凍。
# cd /usr/local/src
# tar xfvz httpd-2.0.54.tar.gz
いらないので消す。
# rm httpd-2.0.54.tar.gz
インストール。
注)SSL通信使う場合は # ./configure --enable-so --enable-ssl としないとだめ。
# cd /usr/local/src/httpd-2.0.54
# ./configure --enable-so
# make
# make install
完了。
*再起動の方法
普通の再起動
/usr/local/apache2/bin/apachectl restart
ゆるやかに再起動
/usr/local/apache2/bin/apachectl graceful
*webalizerの日本語化設定
webalizerはlinuxなら?標準でインストールされているアクセス解析ツール。見た目も結構ハデでいい感じ。ただ、標準だと日本語化されていない(日本語化は可能)。rpmの再インストールで日本語化することにした。
まず、webalizer実行に必要なrpmの確認。
#rpm -qa rpm-build gd-devel libpng-devel zlib gd libpng db4
うちの環境の場合、gd-develとlibpng-develが見つからなかったのでインストールする。レッドハットCDから以下のファイルをwinscpとかで/usr/local/src以下にコピー。
gd-devel-1.8.4-12.i386.rpm
libpng-devel-1.2.2-16.i386.rpm
gd-devel-1.8.4-12.i386.rpmとlibpng-devel-1.2.2-16.i386.rpmをインストール。
# cd /usr/local/src/
# rpm -ivh gd-devel-1.8.4-12.i386.rpm
# rpm -ivh libpng-devel-1.2.2-16.i386.rpm
インストールされているか、一応確認。
# rpm -qa gd-devel libpng-devel
libpng-devel-1.2.2-16
gd-devel-1.8.4-12
次に、SRPM形式の webalizer-2.01_10-15.ent.src.rpm をレッドハットCDからwinscpとかで/usr/local/srcにコピー。
インストール開始。
# cd /usr/local/src
# rpm -ivh webalizer-2.01_10-15.ent.src.rpm
日本語化設定にするため、webalizer.specファイルをちょっといじる。
# cd /usr/src/redhat/SPECS/
# vi webalizer.spec
48行目を以下に変更(--with-language=japaneseを追記)
%configure --with-language=japanese --enable-dns --with-dblib=/lib
ビルド。
# rpmbuild -ba webalizer.spec
一回アンインストールする。これやらないと失敗する可能性がある。
# rpm -e webalizer
日本語化webzlizerのインストール。
# cd /usr/src/redhat/RPMS/i386/
# rpm -ivh webalizer-2.01_10-15.ent.i386.rpm
終了。
本当に日本語化されているかチェック。の前に、webalizerの設定ファイルの重要そうなところだけ環境に合わせて修正。
# vi /etc/webalizer.conf
# 解析するapacheのログファイル
LogFile /usr/local/apache2/logs/access_log
# 解析結果を出力するディレクトリの指定
OutputDir /usr/local/apache2/htdocs/access
# 過去の解析結果を覚えておく。
Incremental yes
# ここyesにしないと、ログが長い場合エラーになってしまうぽい。
ReallyQuiet yes
解析開始。
※ログローテイト等で複数アクセスログがある場合は、古いアクセスログから順次上記コマンドを投げていかなければならない。
# webalizer -c /etc/webalizer.conf \
/usr/local/apache2/logs/access_log
ブラウザで確認。
オーケー。
※アクセスログの解析の順番を間違った場合は /var/lib/webalizer/webalizer.current と /val/lib/webalizer/webalizer.hist の2ファイルを削除してやり直せばOK。
*httpd.confでリダイレクト設定
リダイレクト先のディレクトリ作成。アンド簡単なページを作成
# mkdir /usr/local/apache2/htdocs/hoge/
# vi /usr/local/apache2/htdocs/hoge/index.html
<html>
<body>
hoge
</body>
</html>
次に/usr/local/apache2/conf/httpd.confに以下追記。
Redirect permanent / http://localhost/hoge/
最後にapache再起動
# /usr/local/apache2/bin/apachectl restart
ブラウザでhttp://localhost/にアクセスして、http://localhost/hoge/にリダイレクトされればOK...と思ったらリダイレクトされない...
いろいろ試した結果、
Redirect permanent / http://localhost/hoge/
のpermanentのあとはファイル名が必要らしい。ということで、/usr/local/apache2/htdocs/以下にダミーのindex.htmlファイルを作成。
# vi /usr/local/apache2/htdocs/index.html
<html>
</html>
再度、/usr/local/apache2/conf/httpd.confを編集。
Redirect permanent /index.html http://localhost/hoge/
再度、apache再起動
# /usr/local/apache2/bin/apachectl restart
http://localhost/にアクセス...よし、リダイレクトされました。
*ログのローテイト
標準インストールだと、アクセスログとエラーログがひとつずつしかないため時間とともに徐々に肥大していく。後々ログ削除する場合や確認したい場合に非常に困るので、ログを日付ごとに吐き出す設定をする。apacheに付いているrotatelogsという機能を使う。
アクセスログとエラーログ格納ディレクトリ作成
# mkdir /usr/local/apache2/logs/access/
# mkdir /usr/local/apache2/logs/error/
httpd.confのErroLogとCustomLog記述を以下のように変更(1行で記述する)
ErrorLog "| /usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/error/error%Y%m%d_log 86400"
CustomLog "| /usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/access/access%Y%m%d_log
86400" common
Apacheを再起動
# /usr/local/apache2/bi/apachectl restart
これで、logs/access,logs/error以下に日付の入ったログが作成される。
※上記の設定をしたのに、何故かログが0時に切り出されない場合がある。
その場合は以下のように540をくっつける。
CustomLog "| /usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/access/access%Y%m%d_log
86400 540" common
※エラーログのディレクトリを指定したのに、/usr/local/apache2/logs/以下に未だにエラーログが作成される。何故だ?
→ssl.confのログファイルの設定が抜けていたためだと思われ。
*アクセス制限をかける
参考:http://dog.intcul.tohoku.ac.jp/unix/accs-rest.html
httpd.confの<Directory htdocsへの絶対パス>タグを探す。タグ内のAllowoverrideを以下のように変更。
#AllowOverride None コメントアウト
AllowOverride Limit
制限を欠けたいフォルダ内に「.htaccess」という名前のファイルを作成。.htaccessファイル内に以下のように記述
order deny,allow
deny from all
特定のIPからのみアクセスを許す場合は以下のように作成する。
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx #許すIPアドレス
allow from 192.168.0. #イントラ
Apache再起動。
*ベーシック認証設定
サイトアクセス時にユーザ名とパスワード入力ダイアログを表示させるベーシック認証の設定。
まずパスワードファイルの作成。
# /usr/local/apache2/bin/htpasswd -c \
/usr/local/apache2/.htpasswd ユーザ名
New password: xxxx
Re-type new password: xxxx
Adding password for user ユーザ名
次にhttpd.conf内の<Directory "/usr/local/apache2/htdocs"></Directory>の記述を探して以下の記述を追加。
#vi /usr/local/apache2/conf/httpd.conf
<Directory "/usr/local/apache2/htdocs">
AuthUserFile /usr/local/apache2/.htpasswd
AuthGroupFile /dev/null
AuthName "Please Enter Your Password"
AuthType Basic
Require valid-user
</Directory>
アパッチ再起動。
※解除するときは、上記記述をコメントアウトしてアパッチ再起動。
特定ディレクトリのみベーシック認証かける場合は以下のようにする。
(hogehogeディレクトリにベーシック認証かける場合)
<Directory "/usr/local/apache2/htdocs/hogehoge">
AuthUserFile /usr/local/apache2/.htpasswd
AuthGroupFile /dev/null
AuthName "Please Enter Your Password"
AuthType Basic
Require valid-user
</Directory>
2006-01-24T14:16:58+09:00
1138079818
-
postgresqlメモ
https://w.atwiki.jp/tmogmni/pages/21.html
#contents
*数値フォーマット
0で埋める場合は以下
select to_char(12345, '00000000');
to_char
-----------
00012345
*現在日付からの加算と減算
以下の書式で書けた。便利。
■現在時刻から1年2ヶ月3日4時間5分6秒後を取得
SELECT
now()
,now() + '1year 2month 3day 4hour 5minute 6second';
now | ?column?
-------------------------------+-------------------------------
2006-01-10 16:20:42.203232+09 | 2007-03-13 20:25:48.203232+09
(1 row)
■現在時刻から1年2ヶ月3日4時間5分6秒前 を取得
SELECT
now()
,now() + '1year ago 2month ago 3day ago 4hour ago 5minute ago 6second ago';
now | ?column?
-------------------------------+-------------------------------
2006-01-10 16:21:31.433893+09 | 2004-11-07 12:16:25.433893+09
(1 row)
*psqlでファイルを読み込んでクエリ実行
psqlが実行できるユーザになる
# su postgres
ユーザのカレントディレクトリにてファイル作成
# vi /home/postgres/select.sql
select id,name from member;
以下で実行
# psql DB名 < /home/postgres/select.sql
実行結果をファイル出力したい場合は以下
# psql DB名 < /home/postgres/select.sql > 出力ファイル名
*postgresql8.1.0windows版インストール
最初は8.1.1をインストールしようとしたが日本語版がまだでていなかったようなので8.1.0で妥協。http://www.postgresql.org/ftp/binary/v8.1.0/win32/ からpostgresql-8.1.0-1-ja.zipをダウンロード。解凍して作成されたディレクトリ内の postgresql-8.1-ja.msi を実行。以下インストール時の様子。画像が切れてるな...
#ref(01.gif)&br()&br()
#ref(02.gif)&br()&br()
#ref(03.gif)&br()&br()
#ref(04.gif)&br()&br()
#ref(05.gif)&br()&br()
#ref(06.gif)&br()&br()
#ref(07.gif)&br()&br()
#ref(08.gif)&br()&br()
#ref(09.gif)&br()&br()
#ref(10.gif)&br()&br()
*データのバックアップ
データベース全体をバックアップしてdb_backup.outというファイル名で出力する場合。
# su - postgres
$ /usr/local/pgsql/bin/pg_dumpall -o >
/usr/local/pgsql/data/backup/db_backup.out
(以下1行で書く)
cronとかに登録しておけば自動バックアップできる。例えば毎日午前5時にバックアップする場合。
# crontab -e
(以下1行で書く)
0 5 * * * su - postgres -c
'/usr/local/pgsql/bin/pg_dumpall -o >
/usr/local/pgsql/data/backup/db_backup.out'
*簡単にテーブル作成
psqlでテーブルを作成する場合、ひとつひとつ手入力でテーブル作成するのは面倒。その場合は、SQL文を記述したファイルを用意してバッチで一発作成。
ファイル格納ディレクトリ作成。
# mkdir /home/hoge/batch
ファイル作成。例えばhoge1とhoge2というテーブルを二個作成する場合は以下。
# vi /home/hoge/batch/create.sql
--
-- hoge1
--
CREATE TABLE hoge1
(
id int4 NOT NULL DEFAULT 0
,name varchar(255)
,PRIMARY KEY (id)
);
--
-- hoge2
--
CREATE TABLE hoge2
(
id int4 NOT NULL DEFAULT 0
,email varchar(255)
,PRIMARY KEY (id)
);
以下コマンドでテーブル作成される。
# su - postgres
$ psql DB名 < /home/hoge/batch/create.sql
*linuxにポスグレをインストール
ソースファイルを以下からダウンロード。
ftp://ftp.jp.postgresql.org/source/v8.0.2/postgresql-8.0.2.tar.gz
ポスグレ用ユーザを追加
# adduser postgres
ダウンロードしてきたファイルをwinscpなどで/usr/local/srcに移動して、インストール開始。
解凍
# cd /usr/local/src
# tar xfvz postgresql-8.0.2.tar.gz
# rm postgresql-8.0.2.tar.gz ←要らないので削除
インストール
# cd /usr/local/src/postgresql-8.0.2
# ./configure
# gmake
# gmake install
データ格納ディレクトリ作成
# mkdir /usr/local/pgsql/data
ポスグレユーザに権限を与える
# chown postgres /usr/local/pgsql/data
DBの初期化
# su - postgres
$ /usr/local/pgsql/bin/initdb --no-locale
-E EUC_JP -D /usr/local/pgsql/data
(1行で書く)
起動
# /usr/local/pgsql/bin/postmaster \
-D /usr/local/pgsql/data >logfile 2>&1 &
自動起動設定は /etc/rc.d/rc.local の最初に、以下の記述を追加。(1行で書く)
su - postgres -c "/usr/local/pgsql/bin/pg_ctl start
-D /usr/local/pgsql/data
-l /usr/local/pgsql/data/logfile
-o \"-i -p 5432\""
*インポートエクスポート
CSVデータをテーブルにインポートするには
COPY テーブル名 FROM 'CSVファイルの絶対パス' CSV;
例:hogeテーブルにhoge.csvをインポート
COPY hoge FROM '/home/postgres/data/hoge.csv' CSV;
テーブルをCSVデータとしてエクスポートするには
COPY テーブル名 TO 'CSVファイルの絶対パス' CSV;
COPY テーブル名(カラム名1, カラム名2, ...) TO 'CSVファイルの絶対パス' CSV;
例1:hogeテーブルをhoge.csvにエクスポート(全カラム)
COPY hoge TO '/home/postgres/data/hoge.csv' CSV;
例2:hogeテーブルをhoge.csvにエクスポート(idとnameカラムのみ)
COPY hoge(id,name) TO '/home/postgres/data/hoge.csv' CSV;
注意事項
-インポート先テーブルとインポート対象CSVデータのカラム内容は同じでなければならない。
-CSVデータに改行のみの行が存在する場合インポートに失敗する。改行のみの行は削除しておく必要あり。
-インポート時に何度もエラーを出した場合は最後にバキューム処理を忘れずに。(メモリを喰うため)
-CSVファイルがSJISの場合、インポート時にエラーが出るので以下のようにクライアントエンコーディングをセットしてからインポートを行うこと。
SET client_encoding TO 'SJIS';
COPY テーブル名 FROM 'CSVファイルの絶対パス' CSV;
*関数
時間型を文字列型に変換
select to_char(now(), 'yyyymmdd');
結果
20050829
*2つのテーブルを比較して重複しているもの以外を抽出
テーブルA
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
| 3 | cc |
| 4 | dd |
| 5 | ee |
| 6 | ff |
+----+------+
テーブルB
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
+----+------+
テーブルAにおいて、テーブルBに含まれるname以外の結果(ここではcc、dd、ee、ff)を取得したい場合は以下。
SELECT name
FROM A
WHERE name NOT IN
(
SELECT name
FROM B
);
2006-01-17T16:52:55+09:00
1137484375
-
php.ini関連
https://w.atwiki.jp/tmogmni/pages/25.html
#contents
*php.iniの文字コード設定
PHPプログラムをShift_JISで保存、ブラウザへShift_JISで出力する場合
output_buffering = Off
default_charset = Shift_JIS
extension=php_mbstring.dll(コメントのセミコロンを外す)
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
PHPプログラムをShift_JISで保存、ブラウザへEUC-JPで出力する場合
output_buffering = On
output_handler = mb_output_handler
default_charset = EUC-JP
extension=php_mbstring.dll(コメントのセミコロンを外す)
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
PHPプログラムをEUC-JPで保存、ブラウザへShift_JISで出力する場合
output_buffering = On
output_handler = mb_output_handler
default_charset = Shift_JIS
extension=php_mbstring.dll(コメントのセミコロンを外す)
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
PHPプログラムをEUC-JPで保存、ブラウザへEUC-JPで出力する場合
output_buffering = Off
default_charset = EUC-JP
extension=php_mbstring.dll(コメントのセミコロンを外す)
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
*ブラウザにphpのエラーを表示させない
テスト環境ではいいけれど、本番環境でphpのエラーが表示されると、非常にまずいので、php.iniファイルを以下のように修正
display_errors = Off
これで画面にphpエラーは表示されなくなる。とはいえ、本番環境でエラー内容がわからないと不便なので、エラーログを吐き出す設定をする。php.iniファイルを以下のように修正
;;log_errorsを有効にする
log_errors = On
;;エラーログファイルのパスを指定
error_log = /var/log/phplog
ログファイルを作成
# touch /var/log/phplog
ログファイルの権限をnobodyにする。こうしないと書き込まれないらしい。
# chown nobody /var/log/phplog
*その他
-register_globalsはOFFにしとけ
-session.use_only_cookies は ON で運用したほうが良い
-allow_url_fopen = Off にしておこう
2006-01-12T10:45:45+09:00
1137030345