よく使うコマンド一覧

現在位置表示 pwd 現在位置を表示する
現在位置変更 cd /dir 現在位置を/dirにする
現在位置変更(ホーム) cd # 現在位置をホームディレクトリにする

                                                                                                                                                                                                    • -

ファイル名表示 ls ファイル名を表示する
ファイル名表示(全て) ls -alF ファイル名を表示する(全情報・全ファイル)
ファイル名表示(日付昇順) ls -altF ファイル名を表示する(全情報・全ファイル)日付昇順
ファイル名表示(日付降順) ls -altrF ファイル名を表示する(全情報・全ファイル)日付降順

                                                                                                                                                                                                    • -

ファイル作成 touch A Aファイル作成

                                                                                                                                                                                                    • -

ファイル内容表示 cat A Aファイルの内容を表示
ファイル内容表示(行番号) cat A -n Aファイルの内容を表示(行番号)
ファイル内容連結保存 cat A B > C Aファイルの内容を連結して保存

                                                                                                                                                                                                    • -

ファイルコピー cp A B AファイルをBファイルとしてコピー
ファイルコピー(強制上書き) cp -f A B AファイルをBファイルとしてコピー(強制上書き)
ファイルコピー(上書き確認) cp -i A B AファイルをBファイルとしてコピー(上書き確認)
ディレクトリコピー cp -r A B AディレクトリをBディレクトリにコピー

                                                                                                                                                                                                    • -

ファイルリネーム mv A B AファイルをBファイルに変更
ファイルリネーム(強制上書き) mv -f A B AファイルをBファイルに変更(強制上書き)
ファイルリネーム(上書き確認) mv -i A B AファイルをBファイルに変更(上書き確認)
ファイル移動 mv dir1/A dir2/ Aファイルをdir1からdir2へ移動
ファイル移動(強制上書き) mv -f dir2/A . dir2内のAファイルを現在のディレクトリへ移動

                                                                                                                                                                                                    • -

ファイル削除 rm A Aファイルを削除
ファイル削除(確認) rm -i A Aファイルを削除(確認)
ファイル削除( 強制) rm -f A Aファイルを削除(強制)
ディレクトリ削除(確認) rm -ri dir1 Aディレクトリを削除(確認)
ディレクトリ削除( 強制) rm -rf dir1 Aディレクトリを削除(強制)

                                                                                                                                                                                                    • -

ファイル検索(拡張子)find ./ -regex "./.*\.c" 拡張子が.Cのファイルをカレント以下から検索
ファイル検索(日付) find ./ -mtime 1 1日前に更新されたファイルをカレント以下から検索
ファイル検索 (名前) find ./ -name "*test*" ファイル名にtestを含むファイルをカレント以下から検索

                                                                                                                                                                                                    • -

プロセス表示 ps プロセスを表示する
プロセス表示(全プロセス) ps -ef 全プロセスを表示する(階層つき)
プロセス表示(条件検索) ps -ef | grep A Aという名前を含むプロセスを表示する
プロセス削除 kill 1000 プロセス番号1000を強制終了

                                                                                                                                                                                                    • -

現在の日付を表示する date 現在の日付を西暦で表示する
連続稼働時間を表示する uptime 連続してマシンがどれだけ動いているかを表示

                                                                                                                                                                                                    • -

ユーザ作成 useradd A -p B ユーザAの作成(パスワードはB)
ユーザ削除 userdel A ユーザAの削除

                                                                                                                                                                                                    • -

tar xvf 解凍
tar cvf 圧縮

いきなりログでなくなるの巻

苦労してログ出るようにしたのに突然でなくなる。
なんでだろう?いろいろ調査してみると、テスト用に作ったほかのlog4j設定ファイルを
配置してしまったことが原因のようだ。

うまくログが出なくなったら今参照しているのがどこにあるファイルなのかを押さえておく
必要がありそう。

log4jの使い方の巻

だいぶwebアプリの基本ができてきた感じ。だが、これからエラーとかたくさん発生するだろう。
そんな時調査をするために誰がいつどんなことをしたかが重要になる訳で。

 そんな時に役に立つのがログ(プログラムの動作記録)だ。これさえあれば問題が起きた原因がわかりやすくなるってわけ。

javaのログの取り方はたくさんあるんだけど一般的なlog4jを使ってみる。
設定の仕方はだいたいこんな感じ。

1 log4j.jarとcommons-logging.jarをどっかから落としてくる(まぁいろんなとこにあると思うんで
ここでは割愛っつうことで)

2 落としてきたファイルをTomcatホームのcommon/libに置く

3 log4jの設定ファイル(log4j.xml)を作成しcTomcatホームのcommon/classesの下に置く

ちなみに設定ファイルはこんな感じで。





























以上。これで出力先に設定したログファイルに動いた記録が出るようになる。

こんな感じで。
2007-03-04 01:38:49,819 INFO [TP-Processor3] (servlet.SrvIntro) - ログはでるか
な。

こうやって書くと簡単そうなんだけどここまで動かすのはなかなか厳しかったっす。でも一度出るようになれば
しめたものでやんす。二度やる必要はまずないしね。

postgresqlの使い方をまとめるの巻

postgresql の使い方をまとめておく。

su postgres で専用のユーザーに変更


起動
pg_ctl -w start

状態確認
psql -l

停止
pg_ctl stop

エディットモードスタート
psql dbname(dbの名前)

エディットモード終了
\q

テーブル一覧
select * from pg_tables where not tablename like 'pg%' and not tablename
like 'sql%' order by tablename;

データベース一覧
select datname from pg_database order by datname;

テーブル構造
select attname, atttypid, attlen from pg_attribute where attnum > 0 and a
ttrelid = (select relfilenode from pg_class where relname = 'table_name') order b
y attnum

ダンプファイル作成
pg_dumpall > pgdata.sql

ダンプファイル実行(というかsqlファイルの中身を実行)
psql -f pgdata.sql dbname

テーブルを一覧表示する。table を指定すると,そのテーブルのカラムを表示する。
\d [table]

SQL コマンドが書かれたファイル sqlfile を読み込んで実行する。
\i sqlfile

コネクションプールに成功の巻

ネット上でDBの接続を確保するのは非常に時間がかかる。そのため、その接続を貯めておいて必要な時に
貸し出す仕組みが一般的だ。それがコネクションプール(接続の貯蔵)だ。

 今までいろいろやったけど、全くうまくいかなかったコネクションプールだけどサンプルつくったら
なんだかよくわからんけど(だめじゃん)動いたのでその事を記録しておく。

まずはweb.xmlに以下を追加。



DB Connection
jdbc/postgres
javax.sql.DataSource
Container

次はMETA-INFディレクトリの下にcontext.xmlを作成し、以下を追加




ポイントはmaxActive(どれだけプールを確保するの?)だろう。

基本はこれだけ。簡単そうに見える。でも実際に動かすのはけっこう難しいんだよね。これ。

動作確認用のjspはこんな感じ。


<%@ page language="java" contentType="text/html;charset=Shift_JIS" %> <%@ page import="java.sql.Connection"%> <%@ page import="java.sql.ResultSet"%> <%@ page import="java.sql.Statement"%> <%@ page import="java.sql.*"%> <%@ page import="javax.sql.*"%> <%@ page import="javax.naming.*"%> <%@ page import="javax.servlet.*"%> <%@ page import="javax.servlet.http.*"%> <%@ page import="java.io.*"%> <%@ page import="javax.naming.*"%> <%
Connection con = null;
Statement stmt = null;
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/postgres");
%>

ds<%=ds%>
<%

con = ds.getConnection();
%>con<%=con%>
<%
stmt = con.createStatement();
%>stmt<%=stmt%>
<%

StringBuffer datas = new StringBuffer();
String syouhin_name = "";

String sql = "SELECT * from pro_table ";
ResultSet rs = stmt.executeQuery(sql);
%>sql<%=sql%>
<%
while(rs.next()) {
syouhin_name= rs.getString("pro_name_e");
%>pro_name<%=syouhin_name%>
<%
datas.append(syouhin_name+"/");
} rs.close();stmt.close();con.close();

%>



<%=datas.toString()%>

注意!確保したコネクションはきちんとcloseしないと、だめ!借りたものはちゃんと返さないと。

ftpの仕方

ところで話題を変えてftpについて考えてみようと思う。
どうやってWindowsのマシンで作成したファイルをlinuxマシンへ転送するか・・・ということです。

レンタルしているサーバーがあるので、クライアント(Windows)からサーバーにファイルを送り。
クライアント(Linux)からサーバーのファイルをダウンロードすることにする。

クライアント同士で直にやりとりした方が早いんだけど、なんかうまくいかなかったので。

以下linuxのクライアントへサーバのファイルを転送する方法。


1 lftpでftpモードへ突入

2 lftp -u Username Servername
パスワードを聞かれるので入力

3 cd public_html/linavine
で取得したいファイルがあるディレクトリへ移動

4 lcd /usr/local/dltest/
でローカル側のディレクトリを指定

5 mirror
ディレクトリごとダウンロードが成功

以上だ。

デザインはどうしようの巻

さてタイトルは決まったんだけど(レッツミルク)、どういうデザインにしようかと
ちょっと迷う。

 基本は「大人から子供まで楽しめるサイト」ってことは、年齢制限なく、誰でも気軽に楽しめる
場所ってことになるのかなぁ。

 そうすると、思い浮かぶのは「どうぶつえん」かなぁ。っていうことで動物園をベースに
デザインをすすめていこうとおもう。