2012/05/26

エスケープが必要な文字

Perlで文字の置き換えを行うのは非常に簡単ですが、特別な意味を持つ文字が含まれている場合、エスケープが必要になります。
エスケープとは、\(バックスラッシュ)もしくは¥(円マーク)をその文字の前につけて、特別な意味を無効にする事です。
以下、エスケープが必要な文字です。
¥ * + . ? { } ( ) [ ] ^ $ - | /
URLで使用する事の多い、「.」や「/」も含まれているため、ハマリがちです。

2012/04/26

li,dt,ddで画像の上下の隙間を詰める方法

li,dt,ddで画像を並べる際に、画像の上下に隙間ができます。隙間無く表示させたいとき、marginやpaddingを0pxにしても詰まらないですよね。
そんな時には、以下の2つの方法があります。

imgにvertical-align:bottom;を指定する方法

li img, dt img dd,img {
    vertical-align: bottom;
}

font-sizeとline-heightを0pxにする方法

li, dt, dd {
    font-size: 0px;
    line-height: 0px;
}

2012/04/06

htmlspecialcharsを使う

PHPでWebアプリケーションを開発するにあたり、htmlspecialcharsは非常によく使う関数です。Webページでは、タグに使用される文字、
< > & '
の様な文字をホームページ上に表示させるためには、
< > & "
と置き換える(エンコード)必要があります。その置き換えをしてくれるのが、htmlspecialchars関数です。

逆に、エンコードされた文字を元の文字に変換したい場合(デコード)に、phpのバージョンによって使える関数が違うため、はまってしまう事があります。

php5.2以上であれば、htmlspecialchars関数の逆を行ってくれる関数が用意されています。
htmlspecialcharas_decode関数
それ以下のバージョンを使用している場合は、
html_entity_decode("変換したい文字列", ENT_NOQUOTES)
を使う事で同等の事が可能です。

2012/03/18

動的アドレスを静的アドレスへ変換

PHPやCGIでシステムを構築すると、URLに動的アドレスを入れる必要があります。
しかし、アドレスに「?」や「&」が入るのが嫌な時があります。
そんな時には、.htaccessファイルを利用してアドレスを書き換える事が出来ます。

例えば、test.php?id=123をtestpage-123.htmlに書き換えたいとき、
RewriteEngine on
RewriteRule ^testpage-([0-9]+)¥.html$ test.php?id=$1
と記述すれば、testpage-123.htmlでアクセスが可能になります。
引数が2つ以上の場合、例えば、test.php?id=123&ct=456をtestpage-123_456.htmlに書き換えたい場合は、
RewriteEngine on
RewriteRule ^testpage-([0-9]+)_([0-9]+)¥.html$ test.php?id=$1&ct=$2
となるわけです。
これで、testpage-123_456.htmlでアクセスが可能になります。

2012/03/07

sendmailのログ出力について

サーバー管理でsendmailのログをチェックするときに、怪しい配信等で細かに挙動をチェックしたいときがあります。
そんな時に、/var/log/maillogを確認するわけですが、実はこのログ出力の詳細レベルを変更することが出来ます。

sendmailの設定ファイル、sendmail.cfの中にあるconfLOG_LEVELがそれで、0〜98までが設定でき、通常は0〜15を設定します。16以上はデバッグで使用されます。

デフォルトでは9ですので、特に通常時は9のまま運用すれば良いですが、より細かな内容をチェックしたいときには、9以上を設定します。

sendmailの挙動がおかしい場合など、解決の糸口をつかむためにもお試し下さい。

2012/02/03

ウィンドウの高さに合わせたブロック要素

CSSで高さ100%のブロック要素を作成したい場合、heightプロパティに対して100%の指定をしても反映されません。

これは、CSSの仕様で、親要素のheightに対しての割合で反映されるため、親要素に明示的にheightが指定されていない場合は、height:autoが継承されるようになっています。

ウィンドウの高さに合わせたブロック要素を作成したい場合、htmlタグとbodyタグのheightプロパティを100%と指定しておくことにより、height100%のdiv要素を作成することが出来ます。

2012/01/28

Macでのインターネット共有

最近はWiFiにつなぐ機器を持ち歩く事が多くなりました。
iPhoneやiPad、そしてもちろんMacBookです。
ホテル等で有線LANが提供されている場合は、MacBookと有線LANを接続し、インターネット共有をONにする事で、MacBookをアクセスポイントとして利用する事が出来ます。

設定する箇所は、

  • 共有する接続経路を「Ehternet」にする。
  • 相手のコンピュータが使用するポートを「AirMac」にする。
  • 「AirMacオプション」で、適当なネットワーク名(半角英数字)と、暗号化の設定をする。(しなければ電波の届くところなら誰でも接続出来てしまいますので、なるべく設定して下さい。)
で、簡単に利用する事が出来ます。

しかし、最近はWiFiのみ提供されている場合があり、有料の場合、WiFiに接続する機器毎に課金される事になりますので、コストがかかります。
そんな時、小型の無線LAN親機を利用すれば、解決出来ます。

MacBookで公衆無線LANに接続し、無線LAN親機のWANポートをMacBookのEthernetにつなぎます。
次に、インターネット共有設定を行うわけですが、ここで、MacBookのEthernet設定を変更しなくてはいけません。

設定する手順は、
  • システム環境設定の「ネットワーク」よりEthernetの設定を開きます。
  • IPv4の構成を手入力にし、IPアドレスは「192.168.2.1」サブネットマスク「255.255.255.0」に変更
  • 「共有」から「インターネット共有」で、共有する接続経路を「AirMac」にする。
  • 相手のコンピュータが使用するポートを「Ethernet」にする。
そして、無線LAN親機のWAN設定で、
  • アドレス設定を手動にして、IPアドレスを「192.168.2.2」ネットマスク「255.255.255.0」ルータを「192.168.2.1」DNS「192.168.2.1」とする。
そうすることで、MacBookのAirMacのインターネット接続を、Ethernetポート経由の無線LAN親機をアクセスポイントとして、複数端末を同時にインターネットへ接続する事が可能です。

2012/01/23

GDで日本語フォントの使用

PHPで開発を行う際、GDで日本語フォントを使う際に、注意しないと文字化けが起こります。
最近ではUTF-8が標準になりつつありますが、過去の資産や開発環境によって、日本語コードに、EUC、JIS、Shift-JISを使用しなければならない場合もあります。

GDの環境情報を取得する場合、
gd_info();
にて確認が出来ます。
その返値で、'JIS-mapped Japanese Font Support' が TRUE の場合は、GD側にてコード変換が行われますので、特に対処は必要ありませんが、FALSE の場合は、UTF-8 へ変換しなければ文字化けしてしまいます。
mb_convert_encording("[出力する文字列]", "UTF-8", "[使用日本語コード]");

2012/01/07

PHPでのメモリ不足

PHPでプログラム作成時、プログラムが動作しないので、サーバーログを見ると
PHP Fatal error: Allowed memory size of xxxxxxx bytes exhausted
と、エラーを出力していました。
今回は、GDライブラリで画像加工を行っているため、メモリが必要になったのだと思われます。

PHPで割り当てメモリを増やす方法としては、

方法1)
php.iniのmemory_limitを増やして再起動
方法2)
該当スクリプトに、
ini_set("memory_limit","●●M");
と●●に増やしたいサイズを指定する。
の方法があります。

2011/12/22

iPad(iPhone)でのtwitterのUI変更方法

TwitterをiPadやiPhoneからアクセスすると、UI(ユーザーインターフェース)がモバイル版になります。
モバイル版UIはシンプルな画面で見やすいのですが、登録されているメールアドレスを変更したいときや、非公開アカウントの場合に、フォローリクエストを承認しようとしても出来ません。
そんな時に、UIをパソコン版に変更する方法があるようです。
https://mobile.twitter.com/settings/change_ui
にアクセスすると、パソコン版のUIに変更されます。
モバイル版に戻したいときは、
https://mobile.twitter.com/
にアクセスすればOKです。
なお、Twitterサイトの仕様変更で使えなくなる可能性はあります。