2007年11月27日火曜日

DoCoMoのFlash Lite3用動画を作るための覚え書き

DoCoMoはFlash Lite 3対応の905iシリーズを2007年11月末から販売開始する。

Flash Lite 3ではFLVを見られるが、905iではYouTubeは見られない。

なお、Flash Lite 3は動画(FLV)対応が特徴の1つとされているが、ドコモ広報によれば「(905iで)YouTubeは利用できない」とのこと。

(少なくとも今回のDoCoMoでは)FLVは再生できない可能性が高い
昨日『Flash Lite 3.0 対応 NTT DoCoMo 携帯電話用 Adobe Flash CDK』がアドビのサイトから提供開始され、結局、NetConnection、NetStreamといった外部ビデオに関するクラスと、XMLSocketといった通信系のクラスがサポートされないことが判明。

(2007/11/30 追記)
Flash Lite 2.xにはNetStreamは無く、その代わりにVideoオブジェクトにメソッドが追加されていてそれを使って動画を再生する。(参考:Flash Lite 2.x ActionScript リファレンスガイド -Video ) これにより再生できるのはモバイルデバイス固有のビデオ形式(3GPP、3GPP2)なので、FLVの再生はできない。
Flash Lite3では、追加されたNetStreamオブジェクトなどを使うことによりFLVの再生が可能になったが、このオブジェクトは「i モード端末のみでサポートされていません」とリファレンスの最後の方に書いてある。
(追記終わり)

参考:au・SoftBankのFlash Lite 2でも動画の再生はできない(詳細は下記リンク先を参照。)
Flash Lite 2.0 からの新機能である動画再生にトライしていますが、 Flashのエミュレーターでは再生できても、端末では表示も再生もできないという状態です。 既に2.0対応端末で動画再生に成功した方いらっしゃれば是非ご教授いただきたいと思いますが、いかがでしょうか。

(2007/11/30 追記)
手元のauで確認したが、やはり再生できなった。現象としては上記リンク先と同じで、開発環境(Flash Pro8)では再生できるが実機では再生できない。
System.capabilities.videoMIMETypesは開発環境では"video/3gp,video/3g2,video/mp4,video/cmx"だが、実機では値無し。
(追記終わり)



以下は将来的にFLVをサポートした時のための覚え書き。


Flash Lite 3のビデオコーデックはFlash7/8の新旧両方に対応。
Flash Lite 3には、On2 VP6とSorensonビデオコーデックのサポートも含まれています。


DoCoMo用HTMLにFlashを埋め込む場合は通常のFlash埋め込みobjectタグと違うので注意。
記述フォーマット
<object data="[URL]" type="application/x-shockwave-flash" width="[横サイズ]" height="[縦サイズ]">
<param name="bgcolor" value="[ColorName/ColorCode]">
<param name="loop" value="on/off">
<param name="quality" value="high/medium/low">
</object>

(2007/11/30 追記)
参考までに、auの場合はこう。
<object data="#{swfのURL}" type="application/x-shockwave-flash" copyright="no" standby="#{リンクとして表示する文字列}">
<param name="disposition" value="devfl7z" valuetype="data" />
<param name="size" value="#{swfのファイルサイズ(単位はバイト)}" valuetype="data" />
<param name="title" value="#{保存する時のファイル名}" valuetype="data" />
</object>

ファイルサイズは指定しなくても可。
参考:
 KDDI au: マルチメディア・コンテンツ > Flashコンテンツ
(追記終わり)


Flash Lite 3がある程度普及するのは2008年末~2009年くらいか。
DoCoMoはもうこのままFLVをサポートしない?
auやSoftBankがFlash Lite 3をいつ採用するかは未発表。


参考:
 ドコモ、905iシリーズ主要機種の発売日を決定 - 11月中に7機種連続投入 | 携帯 | マイコミジャーナル
 ×○式 観察記録 : 期待のFlash Lite 3 期待できないFlash 10

Windows版Apache2.2.xでrotatelogs.exeのプロセスが残る

Windows版のApacheで、Apacheを停止してもrotatelogsのプロセスが残ってしまう問題。Apache2.2.3~2.2.5で発生した。(2.2.3より前は試してないので分からない。)

参考になる記事が少ないが、海外の掲示板で見つけた。

In short - rotatelogs (and piped logging in general) has been improved for Apache 2.2.6 at the cost of disabling FastCGI programs and mod_perl.

There are still four processes created for rotatelogs (two for the Apache parent process and two for the Apache child process). This is because piped logs run a command-interpreter (CMD.EXE) in order to run the specified executable (rotatelogs.exe). This is apparently intentional. The log processes now all shut down correctly when Apache shuts down.


Apache2.2.6で問題が解消されたが、2.2.6では代わりにFastCGIとmod_perlに問題が発生しているということか。

PHPでログイン・ログアウト時にsession関連でやること

セキュリティを高めるなら、これにいろいろ追加する?


ログイン

session_regenerate_id(true)

ログアウト
$_SESSION = array();
session_destroy();


参考:
 PHP: session_regenerate_id - Manual
 PHP: session_destroy - Manual
 【PHP TIPS】 3. session_destroy関数はファイルを消すだけで、スクリプト内ではセッション変数が使えてしまう:ITpro

2007年11月21日水曜日

コマンドプロンプトで文字列を置換する

(2009/06/13 追記: コメント欄に、とても簡単に置換する方法を教えてもらったので、まずそちらを参考にすることをお薦めします。)


Widnowsのコマンドプロンプトで文字列の置換をする方法。
コマンドとしては提供されていないので、for文を利用する。

例えばシステム日付(例:2007/11/21)のスラッシュをハイフンにする場合。

@echo off
rem 変換したい文字列をセット

set before=%date%
rem 置換する文字をセット
set search=/
rem 置換後の文字をセット
set replace=-

rem 変数初期化
set after=
set replace_wk=

:loop
if "%before%" == "" goto :end
for /f "tokens=1* delims=%search%" %%A in ("%before%") do (
  set after=%after%%replace_wk%%%A
  set before=%%B
  set replace_wk=%replace%
)
goto :loop

:end
rem 変換結果の確認
echo %after%


対象文字列が日付だけなら、もっとシンプルにできる。
for /f "tokens=1-3 delims=/" %%A in ("%date%") do set today=%%A-%%B-%%C
echo %today%


()の中で変数を使う場合、遅延展開が絡んでくるので注意。(参考:setコマンドの遅延展開について (DOSプロンプト活用相談室LOG)


参考: コマンドプロンプトを使ってみよう! -バッチファイル-

psqlで対話型の簡易アプリ

備忘録として。
Windowsで簡易的に、いくつかの条件を入力後にSQLを実行するアプリ(batファイル)のサンプル。

前提条件

  • psqlがインストールされていること (PostgreSQLがインストールされていればbinフォルダにpsql.exeがある)
  • pgpass.confがあり、必要なログイン情報が書かれている (PgAdminⅢを使っていれば自動で作られる?)
    • pgpass.confは通常は C:Documents and Settingsユーザー名Application Datapostgresql にある。(Application Dataフォルダは、フォルダオプションで「すべてのフォルダとファイルを表示する」にしていないと表示されない)
      参考:パスワードファイル
    • このファイルが無いと、psql実行時にパスワード指定無しでの実行ができない

サンプルコマンド
@echo off
rem 必要な入力項目を入力してもらい、コマンドプロンプトの環境変数にセットする。
set /p foo_no= 番号を入力してください:
rem psqlのオプションとして-cを指定してパラメータのSQLを実行する
rem SQLにはコマンドプロンプトの環境変数を埋め込んでおく
C:(略)psql DB名 -U ユーザー名 -c "SELECT bar FROM baz WHERE foo_no = %foo_no%"
rem pause(「続行するには何かキーを押してください . . .」)より分かりやすいメッセージを表示したい
set /p foo_no= 終了するにはEnterキーを押してください

2007年11月18日日曜日

TracのWikiをWYSIWYGにするプラグイン

インストール方法
 
easy_install が入っていることが前提

easy_installで"TracWiki WYSIWYG Editor Plugin"をインストール

easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.11
Tracが0.10の場合は最後の数字を0.10にする。



設定方法
 ※Tracのバージョンが0.11(以降)の場合
  1. Trac上部メニューの右端の"Admin”をクリック → Administrationページが表示される
  2. Administrationページの左側のメニューの"Plugins"をクリック → インストールされているプラグインの一覧が表示される
  3. tracwysiwygの設定を開き、"Enabled"の両方をチェックして"Apply changes"ボタンをクリック


使用方法
Wikiの編集ページで、テキストエリアの右上にある"wysiwyg"を選択状態にする



参考: TracWysiwygPlugin - Trac Hacks - Plugins Macros etc. - Trac

mod_ruby on CentOS 5 インストールメモ

インストール手順

  1. apxs(APache eXtenSion)が必要なのでhttpd-develをインストール
    yum -y install httpd-devel
    ・けっこう時間がかかる
    ・apxsは /usr/sbin/apxs にできた
  2. modruby.netから最新版のmod_rubyをダウンロード&解凍
    wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz
    tar zxvf mod_ruby-1.2.6.tar.gz
  3. makeの準備
    cd mod_ruby-1.2.6
    ./configure.rb --with-apxs=/usr/sbin/apxs --with-apr-includes=/usr/include/apr-1
    make
    make install
    ・--with-apr-includesを付けないとmakeできなかった
    ・参考:mod_rubyのインストール :: colorchips blog
  4. Apacheの設定ファイルを新規作成
    cd /etc/httpd/conf.d
    vi ruby.conf
    ・ruby.conf
     (2007/11/20 追記:ExecCGIの前に"+"を追加。そうしないとmod_rewriteとかが使えなくなる)
    LoadModule ruby_module modules/mod_ruby.so

    <IfModule mod_ruby.c>
    RubyRequire apache/ruby-run

    # /ruby以下のファイルをRubyスクリプトとして実行する
    #<Location /ruby>
    # SetHandler ruby-object
    # RubyHandler Apache::RubyRun.instance
    #</Location>

    # *.rbをRubyスクリプトとして実行する
    <Files *.rb>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
    </Files>

    #Rubyを実行するディレクトリでCGIを実行可能にする
    <Location /r>
    Options +ExecCGI
    </Location>
    </IfModule>


補足
  • mod_rubyはページ内容出力前にHTTPヘッダ情報を出力する必要がある
    • cgi.rbを使うとスマート
      require "cgi"
      cgi = CGI.new
      print cgi.header("type" => "text/html")
    • 参考:mod_ruby Wiki (ja) - FAQ
  • rbファイルのディレクトリの権限を777にすると、mod_rubyは loading from unsafe file で SecurityError になる
  • requireするファイルを変更した場合、Apacheを再起動するまで反映されない
    • 参考:mod_ruby Wiki (ja) - FAQ
      mod_rubyでは複数のスクリプトで一つのRubyインタプリタを共有します。 require 'foo'を実行した場合、ライブラリがロードされるのは 最初の一回だけなので、その後require 'foo'を実行しても ライブラリが再びロードされることはありません。
      (略)
      Apacheを再起動するか、デバッグ中はrequireの代りに loadを使ってください。


参考:
mod_ruby インストールガイド

PHPでブラウザキャッシュを有効にする

IE6ではCache-Controlが優先される。Cache-Controlがある場合、Pragma、Expiresは無視される。
FirefoxではExpiresとPragmaが優先され、両方無ければCache-Controlが適用される。
→ ExpiresとPragma無しでCache-Controlの設定をすればほとんどのブラウザに対応できる。(IE7は?)

PHPでCache-Controlを設定する方法。
※header()より先に他の出力をしてはいけない。

$strDate = 'tomorrow'; //翌日の0時までキャッシュさせる場合
$dt = new DateTime($strDate);
header('Cache-Control: max-age=' . ($dt->format('U') - time()));

PHPではSESSIONを使うと過去日付のExpiresと"Pragma: no-cache"が設定され、クライアントキャッシュが無効になる。
Firefoxの場合ExpiresとPragmaが優先されてしまうので、PHPでSESSIONを使い、かつクライアントキャッシュを有効にするには、未来日付のExpiresと適当なPragmaでhttpヘッダーを上書きする。(Pragmaには"no-cache"以外の設定値は無い)
$strDate = '+2 days'; //現在日時から2日後までキャッシュさせる場合
$dt = new DateTime($strDate);
header('Cache-Control: max-age=' . ($dt->format('U') - time()));
if (session_id()) { //session_startしている場合
 header('Expires: ' . $dt->format(DATE_RFC1123));
 header('Pragma: cache'); //no-cache以外の文字列をセット(横暴?)
}


参考:
 OZACC.blog: HTTPヘッダでのキャッシュ制御 2
 [Studying HTTP] HTTP Header Fields
 PHP: header - Manual
 PHP: 日付・時刻関数 - Manual
 PHP: セッション処理関数(session) - Manual

2007年11月13日火曜日

Google AdSenseの新機能「広告の管理」

広告ごとの設定をIDで管理できるようになった。IDごとに名前を付けられる。
設定を変更したい場合はAdSenseの管理画面で設定を変更して保存するだけなので便利。ただしサイズについては変えられない。
サイトに貼り付けるコードは、色情報などが無くなりすっきりしたコードになった。しかし幅・高さについては残っている。

管理の対象は「コンテンツ向けAdSense」のみ。携帯向けAdSenseなどは対象外。

Trac 0.11 on Windows 構築メモ

作業前の環境

  • Apache 2.2
    • メインのWebサーバ
    • これではSubversion 1.40へのアクセスはできない
  • Apache 2.0
    • Subversionへのアクセス専用
    • Apache 2.2からリバースプロキシでアクセスする
  • Trac 0.10
  • Python 2.4
  • Subversion 1.40 for Apache 2.0
    • Tracが足枷となりバージョンアップできないでいた



作りたい環境 (全て現時点の最新版にする)
  • Apache 2.2 (変更無し)
  • Trac 0.11dev
    • Trac 0.10のデータや設定を引き継ぐ
    • Subverion 1.45のリポジトリを見られるようにする
  • Python 2.5
  • Subversion 1.45 for Apache 2.2
    • Subversion 1.40のデータを引き継ぐ
    • Apache 2.2経由でアクセス可能にする


Apache 2.5 & Subversion 1.45 にするには、Tracを0.11にしなくてはいけないらしい。(ClearSilverが足枷?) Trac 0.11はまだdev版しかない。
また、今回はTracのインストールにSetuptools(easy_install?)を使う。


Trac 0.11 on Windows 構築の足跡
※インストールの手順としては「11.問題発生」は読む必要は無いが、参考資料として残しておく。
※「Unsupported version control system "svn"」の解決方法を知りたいだけなら「12.libapr-1.dllのバージョン差異を解消」を読んでね。

  1. 古いバージョンをそれぞれアンインストール
  2. Subversion 1.45をインストール
    ・Apache 2.2用をsubversion: ドキュメント & ファイル: Windows Apache 2.2.xからダウンロード
    ・インストーラが付いてない
    ・コマンドプロンプトの文字化けは、コマンドプロンプト上で下記コマンドを入力することにより解消 (参考:UTF-8とコマンドプロンプトとMySQLモニタ | Sarabande
    chcp 65001
    ・サービスとしての実行方法はsvnserve ベースのサーバ参照。以前登録したサービスが残っていてPathが同じならそのサービスを起動するだけでOK。
  3. httpd.confにSubversion用設定追加
    ・たぶんこれだけ (リポジトリの方もバックスラッシュじゃなくていいかも)
    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule dav_svn_module "C:/<Subversionのディレクトリ>/bin/mod_dav_svn.so"
    LoadModule authz_svn_module "C:/<Subversionのディレクトリ>/bin/mod_authz_svn.so"
    <Location /svn>
    DAV svn
    SVNParentPath c:<Subversionリポジトリのディレクトリ>
    </Location>
    ・必要に応じて Digest認証 or Basic認証も設定
  4. Python 2.5をインストール
    Download Python Softwareからダウンロード
    ・インストール後にサーバ再起動が必要
  5. Setuptools(easy_install?)をインストール
    ・Python版のPEARやGemsやCPANシェルみたいなものらしい
    Python Package Index : setuptools 0.6c7からダウンロード
    ・インストールすると、PythonのScriptsディレクトリに、easy_install.exeなどが作られる
  6. Tracをインストール
    ・現時点ではTrac 0.11をインストールするにはTracのSubversionリポジトリから取得する必要がある
    ・PythonのScriptsディレクトリでコマンドプロンプトを開き、下記を実行 (参考:0.11/TracInstall - The Trac Project - Trac
    easy_install http://svn.edgewall.com/repos/trac/trunk/
    ・Genshiも一緒にインストールしてくれる
    ・SubversionのbinディレクトリにWindowsのPathを通してないとエラーになると思う。(svnを使うため。)
  7. TracプロジェクトをUpgrade
    ・Trac 0.11用にプロジェクトとWikiをそれぞれUpgradeする
    ・参考:0.11/TracUpgrade - The Trac Project - Trac
    ・TracプロジェクトのDowngradeはできないとどこかに書いてあった気がするので気を付ける
  8. Mod_Pythonをインストール
    ・ApacheからTracへの橋渡しをするためのモジュール
    Index of /dist/httpd/modpython/winからダウンロードしてインストールする
  9. httpd.confのTrac用設定
    ・以前とほぼ同じ
    TracModPython - The Trac Project - Tracで勧められているPythonInterpreterを追加した。(なくても動きそう。)
    LoadModule python_module modules/mod_python.so
    <Location "/trac">
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir <Tracのデータのディレクトリ>
    PythonOption TracUriRoot /<TracのURL(ドメインの下の部分)>
    </Location>
  10. svn-pythonをインストール
    ・TracからSubversionへの橋渡しをするためのモジュール
    subversion: ドキュメント & ファイル: Windows Apache 2.2.xからダウンロード
    ・TracでSubversionリポジトリを表示しないなら不要。その場合はtrac.iniの"repository_dir"は空欄にしておく (コメントアウトでもいいかも)
    ・下記のようにURLを指定すればeasy_installからのインストールもできる (参考:Fusioncube » Blog Archive » Installing Trac 0.11
    easy_install -Z http://subversion.tigris.org/downloads/1.4.5-win32/apache-2.2/svn-python-1.4.5.win32-py2.5.exe
  11. 問題発生!Apache経由のTracからSubversionに連携できない
    ・Tracの全ページに下記エラーメッセージが表示される
    Warning: Can't synchronize with the repository (Unsupported version control system "svn". Check that the Python support libraries for "svn" are correctly installed.)
    ・Browse Sourceしようとすると下記エラーメッセージも表示される
    Unsupported version control system "svn". Check that the Python support libraries for "svn" are correctly installed.
    ・下記を処方したけど解決しなかった
     ・trac-adminでSubversionリポジトリをresync
     ・easy_installでpysqliteをインストール (Python2.5からpysqliteは標準で組み込まれているので、別途インストールしなくていいはずだけど試しに)
     ・Windows環境変数のPYTHONPATHにsite-packagesを設定 (参考:「Subversion」の検索結果 - 夏 DOKI Lisp スティック
     ・httpd.confでPythonPathをセット (参考:TracModPython - The Trac Project - TracSubversion/ViewVC - てんぷらメモ
     ・subversion: ドキュメント & ファイル: Windows Apache 2.2.xからsvn-win32-1.4.5_py25.zipをダウンロードして上書き
     ・libsvnにWindows環境変数のPATHを通す
     ・SWIGをインストール?
      ・SourceForge.net: Filesからswigwinをダウンロード
      ・インストールの仕方が分からなかった
    ・TracdでならSubversionと連携できた
     ・TracdでTracプロジェクトを全て起動しておき、Apacheからリバースプロキシする
     ・応急対応としては使える
     ・問題点:リバースプロキシ&Tracdだと、TracのWikiを更新した時にResponseが帰ってこない。(更新はされる)
    ・TracとSubversionの連携をやめる(trac.iniの"repository_dir"を空欄にする)ならこの問題は回避できる
    ・trac.iniでログ出力を有効(log_type = file)にしてログを確認してみる (参考:TracIni - akiyan.com - TracTracLogging - Snippets - Trac
     ・"libsvncore.py"のline 5 (import _core)で、「ImportError: DLL load failed: 指定されたプロシージャが見つかりません。」というエラーが出ている
     ・上記のエラーによりSubversion bindingsのloadが完了せず、その結果"svn"が見つからないエラーになるらしい
    ・同じ症状を訴えるメーリングリストを発見!
     ・[Trac] Re: Can't use svn on 0.11 trunk
    mod_python's python can't seem to find init_core() in _core.pyd (it CAN find the module though, it just can't find the procedure, so path issues here are probably out of the question).
    I rolled back to the 1.4.3 bindings and they work well to even in mod_python.

    ・この回答から下記の解決方法が分かった
  12. libapr-1.dllのバージョン差異を解消
    ・Subversionのbinにあるlibapr-1.dllをApacheのbin内に上書きコピーする
    ・そのままだとApacheの方のlibapr-1.dllの方がバージョンが新しいために動かないらしい
     参考:[Trac] Re: Can't use svn on 0.11 trunk
    3. This one was the real pain... The version of libapr-1.dll in the Apache install was newer than the version in the subversion install. I replaced the copy in the Apache install with the copy from subversion (1.2.8.0) and everything works perfectly.
    ・libapr-1.dllを変えてしまってApacheが正常に動くかは不明なので、しばらく様子を見る



所感等
  • Trac 0.11はTracWebAdminが標準になって使いやすい。
  • ClearSilverとpysqliteのインストールが不要になって少しすっきりした。
  • trac-adminがexeになって少し使いやすくなった。
  • easy_installを使うとsite-packagesの中が少しごちゃごちゃになるのが気になる。

関連記事:
 TracのWikiをWYSIWYGにするプラグイン
 TracのWikiで外部サイトへのリンクを別Windowで開くGreasemonkey
 SubversionでExcel等のファイルを比較

2007年11月1日木曜日

PHPに後からmb_stringを追加する方法

CentOS 5 に最初からインストールされているPHPにはmb_stringが入っていない。

phpをrpmでインストールすると(略)後からenable mbstringやwith-mysqlを有効.. - 人力検索はてな

yumを使えば簡単にmb_stringをインストールできた。

yum install php-mbstring

PHP.iniの編集も不要。以下のような/etc/php.d/mbstring.ini というファイルを勝手に作ってくれた。このiniファイルがインクルードされるので、Apacheを再起動すればmbstringが有効になる。
; Enable mbstring extension module
extension=mbstring.so

Linuxコマンド備忘録

CentOS 5のbashでよく使うコマンドと、そのオプションのメモ。
初歩的なものもすぐ忘れてしまう。


サービス

  • /etc/init.d/サービス (start | stop | restart | reload | status)
    • サービスを 起動 or 停止 or 再起動 or リロード or 状態確認 する
  • chkconfig --list
    • サービスのrunレベルごとの状況を表示する
    • chkconfig
  • chkconfig サービス on
    • 再起動時にサービスを開始する設定をする
    • offなら起動しない設定になる
    • chkconfig

ネットワーク
  • ifconfig eth0 IPアドレス
  • iptables -L
    • ファイアウォールの設定を確認する
  • iptables -I チェイン名 番号 -p tcp --dport ポート番号 -j ACCEPT
    • ファイアウォール通過を許可するポートを追加する
    • CentOS 5でデフォルトで使われているチェイン名はRH-Firewall-1-INPUT
    • 番号はチェイン内での設定を上から数えたときの番号(一番上が1)
    • 追加後に設定の保存とiptablesの再起動が必要
      • /etc/init.d/iptables save
      • service iptables restart
    • 詳細やその他の設定については、iptables・設定・ファイアウォール・セキュリティ を参照

ディレクトリ・ファイル

  • rm -fr ディレクトリのパス
    • 問答無用でディレクトリを削除する
  • cp -a コピー元のパス コピー先パス
  • ln -s (ディレクトリ名 | ファイル名) リンク名
    • シンボリックリンクを作成する
    • 削除は普通にrmでできる
  • tar -zxf アーカイブファイル.tar.gz
    • tarボールを解凍する
  • chomod モード ファイル名
  • chown ユーザー名.グループ名 パス
    • 所有者のユーザーとグループを変える
  • umask アクセス権
  • less ファイルパス
    • ファイルの中身を1ページ(画面サイズ)ずつ表示する
    • パスがディレクトリの場合は"ls -l"と同じ結果を表示する
  • grep -n 検索する文字列 ファイルパス
    • ファイルから文字列をgrepし、その左側に行番号を付ける
  • pwd
    • 今いるディレクトリを表示する
  • which コマンド名
    • コマンドの本体のパスを表示する

パッケージ管理
  • yum -y install パッケージ名
    • パッケージをインストールする
    • 対話して進めたい場合は-yオプションを付けない
  • rpm -qa パッケージ名
    • インストール済みパッケージを確認する
    • パッケージ名は*で曖昧検索できる
  • rpm -ivh rpmファイルのパス
    • パッケージをインストールする
  • rpm -Uvh rpmファイルのパス
    • パッケージを更新する

ユーザー管理
  • useradd ユーザー名
    • ユーザー追加
  • passwd ユーザー名
    • rootでユーザーのパスワードを変更する
    • 管理者権限の無いユーザーの場合、自分のパスワードのみ変更できる
    • Manpage of PASSWD

日付・時刻

その他


変更履歴:
2007/11/08 passwd 追加
2007/11/14 [Ctrl + R]、redhat-release 追加
2007/11/16 crontab、date、hwclock 追加
2007/12/21 useradd、yum 追加
2007/12/26 テキストファイル関連、which、iptalbes -I、history、kill 追加
2007/12/27 umask、その他のいくつか 追加
2008/02/08 chmod、ディレクトリのcp追加
2008/04/25 cp オプション変更、ln追加

ApacheでURIに応じてアクセスログを分ける方法

mod_setenvifを使ってアクセスログをURIに応じて振り分ける方法。

mod_setenvifをロードしておく。

LoadModule setenvif_module modules/mod_setenvif.so

SetEnvIfディレクティブでURIに応じて環境変数をセットする。正規表現はPerl互換。
SetEnvIf Request_URI "^/foo.php$" foo

環境変数によってログファイルのパスを振り分ける。
CustomLog logs/access.log common env=!foo
CustomLog logs/access.foo.log common env=foo

ログを年月別のファイルにする方法と組み合わせて、さらにLAN内からのアクセスはログ無しにしてみる。
#※2007/11/02 誤ってRequest_URIとしていた箇所をRemote_Addrに訂正!
#サーバ自身からのアクセスは環境変数nologをセット

SetEnvIf Remote_Addr 127.0.0.1 nolog
#LAN内からのアクセスも環境変数nologをセット(プライベートIPアドレスがクラスCの場合)
SetEnvIf Remote_Addr 192.168. nolog
#foo.phpへのアクセスは環境変数fooとnologをセット
SetEnvIf Request_URI "^/foo.php$" foo nolog
#※2007/11/05 rotatelogsのパラメータを修正
#通常のアクセスは詳細(combined)にログを採る
CustomLog "|bin/rotatelogs -l logs/access.%Y%m.log 86400" combined env=!nolog
#fooへのアクセスは簡易ログで
CustomLog "|bin/rotatelogs -l logs/access.%Y%m.foo.log 86400" common env=foo


参考:
 mod_setenvif - Apache HTTP サーバ
 Apacheのログを分類して記録する方法
 自宅サーバを使ったウエブページの公開

ブログ アーカイブ

tags