page_adsence

2010年6月4日金曜日

Apacheの初期設定

エラーページ等でOS名を表示しないようにする

ServerTokens OS → ServerTokens Prod

エラーページ等に表示される管理者メールアドレスを指定

ServerAdmin root@localhost → ServerAdmin webmaster@centossrv.com

サーバー名を指定(VirtualHostをメインとして使う場合はコメントアウトしたままでOK)

#ServerName www.example.com:80 → ServerName centossrv.com:80

ディレクトリ内のファイルを表示しないようにする

Options Indexes FollowSymLinks → Options FollowSymLinks

エラーページ等でApacheのバージョンを表示しないようにする

ServerSignature On → ServerSignature Off

文字化けしないようにApacheでContents-typeのcharsetの指定をしないようにコメントアウトする

AddDefaultCharset ISO-8859-1 → #AddDefaultCharset ISO-8859-1

Test Pageを表示しないようにコメントアウト

vi /etc/httpd/conf.d/welcome.conf

#<LocationMatch "^/+$">
#    Options -Indexes
#    ErrorDocument 403 /error/noindex.html
#</LocationMatch>

VirtualHostのみを使用する場合は以下のようにする
DocumentRootをコメントアウト
DocumentRoot /var/www/html → #DocumentRoot /var/www/html

IPアドレスでアクセスされないようにする
<VirtualHost *:80>
ServerName any
DocumentRoot /tmp
</VirtualHost>
<Directory /tmp>
order deny,allow
deny from all
</Directory>

2010年6月3日木曜日

Adobe製品を買ってしまった・・・。

ちょっと前からFlashを作ってみようと思ってFlexSDKとFlashDevelopを使ってFlashを作ろうとしていたんですが、
なんかデザイン性のあるようなものを作ろうとしたらこれじゃ大変そうだと思ったのでAdobeのサイトに行ってみた。
そしたらちょうどCS5が5月末に発売すると書かれてた。
せっかくだしFlashCS5とか買って勉強してみようかと思ったんですが、
どうせならWeb系の仕事が全部できるやつがほしいなーと思ってWeb Premiumとか幾らするのか調べたら20万オーバー・・・。
やっぱ高いとあきらめようかと思ったんですが、なんかCS4のWeb StandardからCS5のWeb Premiumに無償でアップデートできるっていうじゃないですか。
早速検索してみるとMac版のCS4 Web Standardはなかったけど、Win版のCS4 Web Standardはありました。
値段は12万程。ポイント還元を計算すると10万強。
高いけどFlashだけ買っても8万4千円だし、Web PremiumはFlashやFlexだけじゃなく、DreamweaverとかFireworks、Photoshop、Illustratorも入ってる。
これがあれば何でもできると思ったので思わず買ってしまいました。
CS4は届いたけど、CS5へのアップグレードは依頼がいっぱいあって発送が遅れているらしい。
発売日以降に申し込んだ僕は1ヶ月待ち。
とりあえずCS4でもFlashとかできるし、いろいろ試してみようと思います。

2010年6月2日水曜日

CentOS5.5の初期設定

1.一般ユーザーを作成しパスワードを設定する


常にrootユーザーで作業しないように一般ユーザーを作成する。
通常者用の一般ユーザーと管理者になれる一般ユーザーの2系統のユーザーを作成しておくとよい。
(理由は後述する)

# useradd testuser
#passwd testuser
Changing password for user testuser.
New UNIX password: ← testuserのパスワードを入力
Retype new UNIX password: ← testuserのパスワードをもう一度入力(確認)
passwd: all authentication tokens updated successfully. ← 成功するとこのようなメッセージが出る。

2.rootユーザーによるsshログインを禁止する。


rootユーザーのアカウント情報を複数の人間が知っていた場合に作業者が不明になるのを防ぐために、
一度一般ユーザーでログインさせてから、必要な時にrootユーザーになって作業するように運用する必要がある。
/etc/ssh/sshd_config

#PermitRootLogin yes → PermitRootLogin no

修正後に設定ファイルを読み込む

# /sbin/service sshd reload

3.一般ユーザーの中でもrootユーザーになれるアカウントを絞る


セキュリティ面や、知識のない人間による作業によってシステムダウンする可能性があるので、
不用意に管理者権限を配布すべきではない。
そのため必要最低限の人間にのみ管理者にになれるような設定をしておく必要がある。

# usermod -G wheel testuser ← 管理者用のユーザをwheelグループに追加する

authの行のコメントを解除する

# vi /etc/pam.d/su
#auth required pam_wheel.so use_uid → auth required pam_wheel.so use_uid


4.yumの自動アップデートを停止させる


デフォルト1時間ごとにアップデートチェックを行うようになっており、アップデート中はメモリの大量消費(約10MB以上)などの負荷がかかる。
その負荷を回避するために停止する必要がある。
また、手動で行ったパッケージインストールと競合するとインストールが失敗するので停止させる。

# /etc/rc.d/init.d/yum-updatesd status ← 現状を確認
yum-updatesd (pid 2284) を実行中...

# /etc/rc.d/init.d/yum-updatesd stop ← 現在のステータスが実行中の場合は停止させる。
yum-updates を停止中: [ OK ]

# /etc/rc.d/init.d/yum-updatesd status ← 念のため停止したか確認

2010年6月1日火曜日

VMWareにCentOS5.5をインストール

CentOs 5.5をテキストモードでインストールしたときのメモ
DVDを入れてブートする
インストールの種類を選ぶ

linux text

と打ち込んでエンターキー

Welcome Centosの画面で

OK

を選択し、エンター
言語を選択

japanease

を選択し、エンター
テキストモードでのインストールは日本語を使えないとでるので

OK

を選択し、エンター
Keyボードの選択

jp106

を選択
インストールするデバイスとパーティションを決める
ガイドを使うか選択してくる

Yes

を選択し、エンター

Remove All partitions on selected drives and create default layout

を選択し、エンター
確認されるので

Yes

を選択し、エンター
レビューするかどうか聞いてくる

No

を選択し、エンター
ネットワークの選択

OK

を選択し、エンター

Activate on boot
Enable IPv4

を選択し、エンター

Dynamic IP configuration

を選択し、エンター

automatically vi DHCP

を選択し、エンター

System clock uses UTC

にチェックが入っているので、外す

Asia/Tokyo
OK

を選択し、エンター
rootのパスワードを決める
パッケージの選択

Desktop - Gnome

にチェックが入っているので外す

Server

にチェックを入れておく
インストールするソフトのカスタマイズをするので

Customer software selection

にチェックをいれる

OK

を選択し、エンター
必要なもにチェックをつけ、入らないもののチェックを外す

OK

を選択し、エンター
インストールを始める確認

OK

を選択し、エンター
完了したら、再起動する
DVDを抜いて、

REBOOT

を選択し、エンター
リブート後にはこっちを参考に。
http://www11.ocn.ne.jp/~mizuniwa/c5/c501.html

VMWareサーバーでCentOSをインストールする際にはまった

VMWareサーバで仮想HDDを作るときにCustomで作らないと仮想HDDがSCSIで作られてしまうので、
CentOSインストール時にエラーになってしまう。

参考サイト
・http://itlicense.iinaa.net/Vmware_Server_linux_setup.html

2010年5月26日水曜日

Jqueryの高速化に関して

基本的には以下の通り。

1.常に最新版を使う。
 これは言うまでもなく、Jqueryはアップデートの度に処理が高速化されています。
 プロジェクト発足時には常に最新版を使用するように心がけたほうがいいと思います。
 ただし、開発中やリリース後に変更する場合は開発環境で何度もテストしてからリリースしないと
 思わぬことが起こるかも知れません。

2.Javascriptのファイルはリリース前に1つのファイルにまとめて圧縮するとよい。
 これはサーバに対するリクエストの回数を減らすためというのと、
 ファイル容量を減らすことでレスポンスを早くするためというのがあります。
 YUI Compressorは変数名を短くしたり、動作に影響しないコメントや空白を除去してくれます。
 使い方はStackTraceを参考に。

3.eachよりfor文を使う。
 JqueryよりJavascriptの原文の方が早いってことですね。

4.セレクタにはclass指定ではなくID指定を使用する。
 これはJquryのソースを見ればわかりますが、class指定した場合には全ての HTML ノードを列挙して、それぞれについてクラス名を調べます。
 しかしID指定した場合だとJavascriptに元々あるgetElementByIdで取得できるので早く処理が済みます。

5.セレクタに対象範囲を記述する。
 これは項番4の補足のようなものです。
 Jqueryでセレクタを使用する場合には「IDで取得してから、子ノードに書かれているクラスやタグで絞る」
 これを徹底すべきです。
 IDを与えることによって検索範囲が縮まり、高速化できます。
 マークアップエンジニアとJavascriptエンジニアが異なる人の場合、
 仕様書を元にJavascriptが影響あるであろう範囲に関してはあらかじめ要望を出しておきましょう。
 ただしIDやclass指定を過度にすると、HTML自体が冗長になってしまい、
 後々のメンテナンスにも響いてくるので、Firebugのプロファイルなどを駆使して現在のコードのベンチマークを取ってみてうまくトレードオフしていきましょう。

6.キャッシュやメソッドチェーンを使用する。
 同じセレクタを何度も使用すると毎回無駄に処理が発生してしまいます。
 なるべくキャッシュやメソッドチェーンを使用して記述しましょう。
 個人的にはメソッドチェーンのほうがすっきり書けるので好きです。
よくない例)
$('#test div').css(...);
$('#test div').click(...);
$('#test div').append(...);

よい例:キャッシュを使う)
var tesdiv = $('#test div');
testdiv.css(...);
testdiv.click(...);
testdiv.append(...);

よい例:メソッドチェーンを使う)
$('#test div').css(...).click(...).append(...);


7.DOM操作はなるべくしない
 append()、prepend()、before()、after()などは処理に時間がかかります。
 一度に大量のDOMを操作するとブラウザクラッシュの原因にもなりますので注意しましょう。
 html()のほうが処理ははやいみたいなので、なるべくならこちらを使うようにしましょう。

8.concat()よりjoin()を使う。
 concatとjoinに関してはどうやら違うようです。
 この記事ではベンチマークがとられていて、それを見る限りjoinが早い場合というのはある程度限られた状況におけるものみたいです。
 今まで基本的には配列に入れてjoinしてましたが、Array.join(",") のように、要素間にセパレータを埋め込む場合かIE で沢山(30~?)の要素数がある場合以外は'+'で文字列結合したほうがよいようです。
 ただしコードの可読性とかもあるので、'+'で文字列結合する場合は書き方を気をつけましょう。
 (ある程度長い文字列同士を結合する場合には改行するなど)

9.return falseすること
 「return false;」を忘れると、ページの一番上に戻ってしまうことがあります。
 これは結構煩わしいので、忘れないようにしたいところです。
 
http://net.tutsplus.com/tutorials/javascript-ajax/10-ways-to-instantly-increase-your-jquery-performance/
原文(英文)です。

http://d.hatena.ne.jp/nitoyon/20081211/jquery_fast_css
問題点や改善方法を手順を踏んで解説してくれています。
Jquery内部でどういった処理が実行されているのかまで書かれているので、
非常にわかりやすいです。

word-breakに関して

今まで知らなかったんですが、JavaScript使わなくても大抵のブラウザで対応できるみたいです。

.word_wrap {
    word-wrap: break-word;
}

たったこれだけでいいの!?と思って確認してみると確かにいけました。
すごい!!

こちらの記事を参照しました。

2010年5月18日火曜日

画像をdivで括り高さや幅を指定し、aタグで括るとIEで画像部分をクリックしてもリンクしない

画像をdivで括って高さや幅を指定してからaタグで括るとIEではカーソルもpointerにならず、
画像をクリックしてもリンクしないという現象があった。
また互換モードだとspanタグも同様の現象が見られる。

例)リンク可能な記述


例)リンク不能な記述(imgタグをdivタグで括り、幅を指定した場合)


例)リンク不能な記述(imgタグをdivタグで括り、高さを指定した場合)


今のところの解決策は特に見つかってない。
Javascriptで対応するくらいしかないのか・・・。

2009年6月16日火曜日

cookieに関して

いつも忘れるのでメモ
cookieは異なるドメイン間での受け渡しはセキュリティの観点からできてはいけない。
document.cookieにドメインを設定する項目があるが、
実際にドメインを超えれるわけではない。
cookieの値をドメイン超えて受け渡すのであれば、
hiddenに入れてPOSTするとか、クエリにつけて送るとかしないと無理。
それを受け取って保存するとかという方法をとればできなくはない。
しかし、現在あるAPIに対してのアクセスなどの実際にそのドメインに遷移せずに、
処理を実行するような場合はできない。

2009年6月9日火曜日

window.onloadとdomready.js

domready.jsはDOM 読み込み完了のタイミングで、任意の関数を実行できるようにするJavaScriptライブラリ。
対応ブラウザは以下の通り

  • IE 7 (XP standalone)
  • IE 6 SP2
  • Firefox 2.0.0.4
  • Opera 9.21
  • Safari 2.0.4
  • Mac Firefox 2.0.0.4
  • Mac IE 5.2.3


ただし、Mac IEではwindow.onloadを代用するように実装されている。

ajax系の処理をする場合は大体window.onloadイベントが発生するのを待って処理するようにしている。
ただ、window.onloadというのはDOMツリーの構築を待つだけじゃなく、すべての画像の読み込みも待ってしまう。
これではせっかくajaxを使っているのに、もったいない。

なのでJqueryを使うのであれば$(function(){})もしくは$(document).ready()を使う。
このほうが画像のロードとか待たなくていいので早い。