2012年11月24日土曜日

Apache設定-2

Port 80

 ポート番号
 WWWサーバー(http)は通常80番を使用するので特に変更する必要はありません。ASSLを用いる場合は、HTTPSとして割り当てられている443番、社内などの限られた範囲で使用する場合には 8080番を用いるのが一般的です。もし。80番以外を使用する場合は、他のサービスで使用されている番号以外、特にウェルノウンポート以外の番号を用いるようにしてください。

ServerAdmin koro@mydomain.com
 エラーメッセージの送付先(サーバーの管理者)
 インストール時に記入したメールアドレスが表示されています。これは、致命的なエラーが発生した際にWebマスターとして登録されているE-Mailに送るようになっています。その送り先を指定しているのがServerAdminのディレクティブです。送り先を変更したい場合は各自で変更してください。

ServerName xx.cc.jp
 サーバー名
 インストール時に記入したホスト名、もしくはIPアドレス(127.0.0.1など)が表示されています。LAN内での動作確認を行った後は、本格的な公開前に必ず独自のドメイン名、あるいはDynamic DNSサービスで取得したサブドメイン名を入力しておくようにしてください。

DocumentRoot "C:/Program Files/Apache Group/Apache/htdocs"

 ドキュメントルート(公開ディレクトリ)
 Webコンテンツのルート(最上位)ディレクトリを指定します。デフォルトでは「C:/Program Files/Apache Group/Apache/htdocs」となっていますが、好きな場所に指定しても構いません。個人的には、デフォルトだと階層が奥深いこともあり、管理面で面倒くさい事も多いので違うドライブを指定しています(例:G:/Public_Html ) 。なお、ここで指定したディレクトリのみが公開の対象となり、これより上位のディレクトリへはアクセスできないようになります。


Options FollowSymLinks
AllowOverride None

 ルートディレクトリのアクセス権
 ルートディレクトリのアクセス権を設定します。ここでは、シンボリックリンクの使用を許可し、「.htaccess」を用いた固有のアクセス権は認めない指定になっていますが特に変更する必要はありません。なお、CGIを使用する際には「Options ExecCGI」のように「ExecCGI」を付け加えます。
■all Multiviews以外の全てのオプションを指定します。
■Indexes インデックスの一覧表示を許可します。
■Includes SSIの使用を許可します。
なお、「IncludesNoExec」とすることでExecコマンドとCGIのincludeは含まなくなります。



#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
Options Indexes FollowSymLinks MultiViews
#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all

 ドキュメントディレクトリのアクセス権
 Options Indexes FollowSymLinks MultiViews
 ・・・の範囲は、ドキュメントディレクトリへのアクセス権を設定しています。デフォルトでは、インデックスの一覧表示とシンボリックリンクを許可しています。ウィンドウズにはシンボリックリンクの機能がないので、コメントアウトしても構いません。
AllowOverride None
アクセス権を指定していません。
Order allow,deny
4行目の「Order allow,deny」では、アクセス「allow(許可)」と「deny(拒否)」の評価の順番を指定しています。この指定では、それ以下に「Allow」と「Deny」の両方が指定されていた場合、「Allow」の指定を先に処理し、「Deny」の指定を後から処理しています。指定に矛盾が生じた場合には後から処理したものが有効となります。
Alow from all
5行目の「Allow from All」では、アクセスの制限を指定しています。「Allow from All」だと、「アクセス制限を設けない」=「全てのアクセスを許可する」という設定になっています。仮に制限を設けたい場合は、IPアドレス、またはホスト名(FQDN)のいずれかで指定することになります。以下の例を参考にしてください。
◎アクセス制限の設定例
Allow from 192.168.0.150 ←「192.168.0.150」のIPアドレスだけ受け入れる。
Deny from 192.168.0.150 ←「192.168.0.150」のIPアドレスだけ拒否する。
Allow from 192.168.0 ←「192.168.0」を含む全てのホストを受け入れる。
Allow from jj.mydomain.com ←「jj.mydomain.com」のホストだけ受け入れる(小分類)。
Allow from mydomain.com ←「mydomain.com」のホストだけ受け入れる(大分類)。
■ExecCGI CGIの使用を許可します。
 
UserDir "C:/Program Files/Apache Group/Apache/users"

 ユーザーのホームディレクトリ
 ユーザー個別のディレクトリの作成を行うモジュールの「mod_userdir.c」の指定を行います。「IfModule」は「モジュールが組み込まれている場合は」という判断を行い、もし組み込まれている場合にはその指定をおこなうようになっています。デフォルトでは「C:/Program Files/Apache Group/Apache/users」となっています。


DirectoryIndex index.html

 ディレクトリインデックス(索引)表示
 ディレクトリインデックス表示の作成を行うモジュールが組み込まれているかどうかを判断し、もし組み込まれていた場合には、その指定を行います。ディレクトリインデックスとは、Webページを最初に表示するファイルのことで、通常は「index.html」となっています。
例:)

DirectoryIndex index.html index.htm welcom.html welcom.htm default.html default.htm


AccessFileName .htaccess

 個別ディレクトリのアクセス制御ファイル名
 公開するディレクトリ中で特定のディレクトリだけを公開したり、アクセスできないようにしたりすることができます。ここで指定したファイルに記述されている内容をアクセス権として設定します。アクセス制御ファイルとして、一般的には「.htaccess」というファイル名が使われます。



Order allow,deny
Deny from all
Satisfy All

 .htaccessドキュメントへのアクセス権

 上記で説明した「.htaccess」ファイルはアクセス制限を行うディレクトリの中へ格納します。しかし、アパッチのバージョンによってはWebブラウザなどで正確にパスを記述すると、その中身を閲覧することが可能となってしまいます。そこで、このディレクティブでは「.ht」で始まるファイル名には基本的にアクセスできないように指定しています。
Deny from all
「.htaccess」のファイルが格納されたディレクトリはアクセスを拒否するという設定です。
Satisfy All
ファイルへのアクセス条件を設定するためのディレクティブです。指定値は「Any」と「All」があります。「Any」にすると、アクセス時に要求されるユーザー名とパスワードの組み合わせだけが正しいか、またはアクセス許可されているホストからのアクセスであるかのどちらかの条件を満たせば、アクセスを許可します。「All」にした場合は、その両方を満たさない限りアクセスを許可しません。厳格にアクセス制限かける場合には「All」のままにしておいてください。

2012年11月23日金曜日

Apache設定ファイル-1

◆Global Environment
ServerType standalone
 サーバーの起動方法。他に「inetd」が設定可能だが、「standalone」になります。

ServerRoot "C:/Program Files/Apache Group/Apache"

 サーバーのルートディレクトリ
 Apacheインストール時に設定した内容が反映されています。重要なコンテンツを含んだセキュアなサイトを公開するような方は、ここでルートディレクトリを変更することができますが、通常はこのままで構いません。
 また、「httpd.conf」のパスの指定の際には「¥(エン)」ではなく「/(スラッシュ)」を使用

PidFile logs/httpd.pid

 プロセス番号記録ファイル
 Pid(Process IDentification number:プロセス番号)を記録するファイルの指定を行うディレクティブです。Windowsの方は特に変える必要なし。

ScoreBoardFile logs/apache_runtime_status

 内部情報ファイル
 Apacheの内部情報を記録するためのファイルを指定します。Apacheが動作する上で必要となるファイルなので、このディレクティブは変更しない。

Timeout 300
 タイムアウトまでの時間
 クライアント接続要求を受け取ってから、コンテンツを提供するまでの連続してパケットを送信する時間の最大値を指定します。単位は秒単位です。
 ここで設定した時間を過ぎてもパケットが送信されない場合、ブラウザはエラーメッセージを表示するようになります。クライアントの回線の速度にもよりますが、1ページあたりの送出データがよほど重くない限りは、300秒あれば十分といえるでしょう。それを超える値も設定できますが、サーバーに余分な負荷がかかるので適度な値に設定するようにしてください。

 KeepAlive On
 キープアライブ
 クライアントからの要求があり、いったんコンテンツを提供した後もコネクションを閉じずに次の要求に対してすぐに応答できるようにする機能です。通常はアクセスがあった場合、リンク部分をたどって他のページを見にいこうとするので、このディレクティブが「On」になっているとパフォーマンスが向上します。

MaxKeepAliveRequests 100
 最大キープアライブ値
 各々の接続に対するキープアライブの最大数を指定するディレクティブです。この値を「0」にすると無制限になりますが、サーバーへの負荷も考えるとデフォルトの100のままで良いでしょう。実際に、運用していって問題があるようなら値を変更してパフォーマンスとのバランスを取るようにしてください。

KeepAliveTimeout 15

 キープアライブタイムアウトまでの時間
 ひとつの要求が完了してから、コネクションを切断しないで次の要求を受け入れるまでの時間を指定するディレクティブです。単位は秒単位です。この値が短すぎてもサーバーへの負荷が増大し、反対に長すぎるとレスポンスが悪くなるので適度な値を指定するようにしてください。

#MaxRequestsPerChild 0
 子プロセスの処理可能数
 Apacheはクライアントから要求があるたびに子プロセスを作り、リクエストに応じます。このディレクティブでは子プロセスが終了するまでに処理可能な要求の数を指定します。この機能はUNIX系OSでのみ有効で、ウィンドウズでは無効とされるのでハッシュマーク(#)をつけてコメントアウトしても構いません。

ThreadsPerChild 50

 リクエストを処理する子スレッドの最大数
 Apacheが提供するWebページが同時に処理できるヒット数を指定するディレクティブです。これはウィンドウズ系Apache固有のものでUNIX系OS用のApacheにはついていません。デフォルトで問題ありません。

ClearModuleList

 組み込まれたモジュールリストのクリア
 Section2以降で述べる「AddModule」ディレクティブによって組み込まれた実行可能なモジュールのリストをクリアする指定です。Apacheの起動時は「httpd.conf」の行頭から順に処理をしていくので、ここでモジュールをクリアして、その後で、モジュールの組み込みを行うという段取りをとります。このままにしておいてください。

・・・
AddModule mod_so.c

AddModule mod_setenvif.c
 モジュールの組み込み
 Apacheは基本的な機能の他にモジュールを組み込むことによって、機能を拡張することができます。これらのディレクティブでは、引数として指定されたモジュールの組み込みを行います。

2012年11月11日日曜日

日本の景気動向

日本の景気動向は悪い。
内需は少なく、輸出は政治がらみで中国、韓国とうまくいかず、またアメリカについては景気の良しあしが不安。

今後は波乱含みの選挙。。。。政権交代が決まっているような感じである。
2013年以降は政治動向によって、大きく経済が閉塞する可能性があるので注意を要する

2012年11月9日金曜日

円高は続く・・・

日本経済は過渡期、そしてなぜか、欧米が危機になると、円が買われる
決して、日本経済がいいという意味で買われているのではない。
下記は矛盾もあるがこれが実情であろう

  1. 日本の財政状態は危機的状況であるが、日本国債は日本国民の所有がおおいので、いざとなれば、日本国民の痛みを伴った処理で、日本国の財政は借金0が可能
  2. 経済がガラパゴス進化をしており、欧米から見れば、安全性が高い
  3. 中国の国際化が進むまでは、日本の円
  4. 日本経済が国際化する可能性
     海外に出てゆく企業が多いが円建てにしない
     日本の金融が海外に出てゆく
     日本国民が日本国を出ていく
  5. 日本国内の慢性的ガラパゴス化

2012年11月8日木曜日

HTML5-4

コンテントモデルとカテゴリとの関係

【例】

①body要素
 カテゴリ:セクショニングルート
 コンテントモデル:フロー要素

②h1要素
 カテゴリ:フロー要素
 コンテントモデル:フレージング要素

③p要素
 カテゴリ:フロー要素
 コンテントモデル:フレージング要素

④テキスト
 カテゴリ:フロー要素、フレージング要素
 コンテントモデル:なし

⑤a要素
 カテゴリ:フロー要素(フレージング要素の場合あり)、インタラクティブ要素
 コンテントモデル:親要素を継承するが、インタラクテイブ要素を持てない

⑥div要素
 カテゴリ:フロー要素
 コンテントモデル:フロー要素

⑦img要素
 カテゴリ:フロー要素、フレージング要素、エンペッディド要素
 コンテントモデル:空要素

  • body要素内にh1要素、p要素は可能
  • p要素のフレージング要素なので、子にフロー要素を持つことができません。
  • div要素内のa要素は、親要素を継承すると、フロー要素となり、a要素の子にp要素を含めることは可能
  • p要素内のa要素は、親要素を継承すると、フレージング要素となり、a要素の子にフロー要素を持つことはできません。
  • img要素はフロー要素、フレージング要素、エンベッティング要素ですので、子になることは可能。
  • 同じようにテキストも子になることが可能
  • 上記は透過性という

2012年11月7日水曜日

HTML5-3

カテゴリについて

①メタデータ要素
 head要素内ににかける要素
 title、link要素など

②フロー要素
 body要素内に含めることができる要素、ほとんどの要素がこれに含まれる

③セクション要素
 Webページのセクションを構成する要素
 article、aside、nav、section

④ヘディング要素
 見出しを構成
 h1~h6、hgroup

⑤フレージング要素
 要素の内容がテキストや画像などのコンテンツそのものという要素
 a、audio、img・・・

⑥エンベッディド要素
 HTMLドキュメントの外部のリソースを参照する要素
 フレージング要素が含まれる

⑦インタラティブ要素
 ユーザ操作に反応するタイプの要素
 a、select要素など

次回はコンテントモデルとカテゴリとの関係です

2012年11月6日火曜日

HTML5-2

HTML4とHTML5との特徴的な違い

①HTML4では、HTML書式とXHTMLの書式が複雑であったが、HTML5では統一された

②DOCTYPE宣言が1種類で大文字・小文字区の区別がなくなる

③コンテントモデル(タグの役割の変更)
 Webブラウザにわかりやすくするのが目的・・・視点を変えれば開発者が利用しやすい
 HTML4でわかりにくかったブロック要素とインライン要素を明確にしている

 コンテントモデル:ある要素がもちうるようその内容を示す(P要素ならP要素)

 カテゴリ:似たような性質をもった要素をグループ化させる
  カテゴリの関連性については下記のURLを参照
  http://www.w3.org/TR/html5/

カテゴリについては次回

2012年11月5日月曜日

HTML5-1

HTML5についての基本的特徴と古いWebブラウザを利用する場合について

①HTML5はHTML4と互換性がある

②IE6~8はHTML5に対応していない。
 対応させるにはJavaScriptのライブラリを利用する(完全対応ではない)
 http://code.google.com/p/html5shiv/
 より、ZIP形式のライブラリをダウンロードする。
 HTMLファイルのヘッダ部に下記の文を追加
 (jsファイルをdistの下に配置を前提とする)
 
 
 上記についてはタグのみで属性は認識させることができず、CSS3の機能の多くは利用できない。

2012年11月4日日曜日

人との接し方-2

人と接する場合、
  1. 自分の育った環境などの常識は持ち込まない
  2. 「常識」や「当たり前」などの表現を用いない
  3. 相手の表現や文章の間違いを指摘しない
  4. いい間違えたと思ったら、表現方法を変えて、聞き返す
  5. 相手に対して注意をしない
  6. 知識を持っているからといって偉いのではない
  7. 学歴や会社などの自慢をしない
  8. 聞かれていないことについて話をしない
  9. 話をしたくないときは、「話をしたくない」と主張する
  10. 遠慮や遠回しの表現を用いない
なぜならば、育った環境でさまざま、
自分の中で正しさや、社会一般の正しさを常識や当たり前と考えないことが必要。

年をとると、上位者の感覚で若者に接するが、これは違う。
アドバイスを求められたときの診話をすべきである。
常に上目線から言われるていれば、命令であって、コミュニケーションではないことを自覚しましょう。

2012年11月3日土曜日

人との接し方-1

人との接し方が下手な人は多い。
また、何を話をすればいいのかわからない人も多い。
表現方法、国語力不足・・・と様々である。

誰もが人とのコミニュケーションをうまくできる人、またマナーに優れた人はいない。
どこかしらかにうまくできないことが多いです。

失敗をけなす人、注意をする人など、相手のことを考えずにいう人が多い。
評論家的行動をとる人が、追い込んでしまい、今の社会、うつなどになりやすい。

相手が何をいいたかったのかをまず聞きましょう。
表現法が悪い時もあるし、時間がかかることことも多い。

ゆっくりと話をしましょう



2012年11月2日金曜日

サーバサイドJavaScript-2

◆Nodeのインストール

http://nodejs.org/のサイトで,WindowsとMacにはインストーラが,そしてLinux用にソースコードが提供されている。
インストーラは実行すると,Windowsは「C:\Program Files (x86)\nodejs\node.exe」と,Macは「/usr/local/bin/node」として,それぞれ実行ファイルがインストールされる。

基本的にLinuxにおいては,ソースコードからのコンパイルになります。GCCなどのコンパイラ環境がすでにインストールされている状態で,次のような手順でインストール

$ wget http://nodejs.org/dist/v0.9.2/node-v0.9-2.tar.gz
$ tar zxvf node-v0.9.2.tar.gz
$ cd node-v0.9.2
$ ./configure
$ make
# make install

最後の「make install」はrootユーザで行い,「/usr/local/bin/node」として実行ファイルがインストールされます。


◆モジュールの使い方について
ブラウザ上で動くJavaScriptはすべてのjsファイルがマージされたものとしてスコープが適用されますが,nodeにはモジュールという単位で各機能を分割することができます。

モジュールが1つのjsファイルとなります。それぞれのグローバルスコープはそれぞれのjsファイル内で"閉じた"状態になり,exportsオブジェクトを通して外部に渡すことができます。モジュールの参照はrequire関数を使います。読み込んだモジュールのexportsオブジェクトを返してくれます。

モジュール参照の一例を見てみましょう。
exports.printFoo = function(){ return "foo" }

このコードをfoo.jsファイルとして保存します。このfooモジュールは,文字列「foo」を返すだけのprintFooメソッドを実装しています。

var foo = require('./foo.js');
console.log(foo. printFoo());

こちらのコードをmain.jsファイルとして,同じディレクトリに保存します。foo.jsをモジュールとして読み込んで,fooオブジェクトで参照します。printFooメソッドの結果をコンソールに出力します。

node main.js

を実行すると,コンソールに「foo」と出るのが確認できます。

*ファイルはUTF-8で保存することによって、日本語が取り扱える。

2012年11月1日木曜日

サーバサイドJavaScript-1

◆Node.jsについて

Node.jsとは,ブラウザGoogle Chrome用に開発されたJavaScriptエンジンV8がサーバ上でプログラムを実行できるように,ファイルやネットワークI/Oなど多くの機能を追加したもの。

軽量で効率よく多くのリクエストを処理するネットワークアプリケーションの構築ができるプラットフォーム

①2つのモデル
・ノンブロッキングI/O
・イベントループ

JavaScriptの1つの特徴にシングルスレッドで動作している。
これはNode.jsでも同様で,デッドロックなどを意識する必要がないが、一度に1つの処理しかできないため複数の処理ができない。
そのためNode.jsではノンブロッキングI/Oを採用
従来型たとえば,データベースにアクセスして検索を実行して結果を取得する。この場合,データベースに問い合わせてから結果が返ってくるまで,待ち時間となる。
一般的にはライブラリなどでデータベースから結果が返るまでの間,呼び出し元の処理をとめている。そのため結果を利用した処理を続けてできます。
ノンブロッキングI/Oは,データベースに問い合わせたら次の処理に移ります。結果の受け取りはコールバックで実現。このように基本的に重い入出力処理は非同期で実行するのがノンブロッキングI/O

イベントループ
さらにリクエストやコールバックの発生はイベントとして扱い(登録し),そのイベントに関する処理が終わったら,次のイベントを処理する。このようなイベントループをNode.jsは採用している。