忍者ブログ

カウンター

プロモーション

カレンダー

02 2025/03 04
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

AntinomyMy の実験室

   私のWEBアプリ実験室です!

ブログ内検索

楽天でお買い物

twitter

最新トラックバック

最新コメント

忍者アナライズ

ウェザーニュース

バーコード

本を買う

アクセス解析

Google+

[PR]

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


No Image

PHP の環境をS-JIS からUTF-8 にする(泣)

PHP の調べ物

 またまた環境を一部環境を見直す話です。
今回は文字コードについて見直しします。

 文字コードというのは色々あり、表現できる文字の種類も違い、
そして文字コードを他の文字コードに変換しようと思うときに、その種類の違いが
変換できない文字を生んだりして困る様です。

 また、文字コードを他の文字コードと間違って解釈すると文字化けの原因に
なる様です。

 そんなこんななんですが、私が一番初めに手にした
ろくでもないPHP の入門書は、Windows 標準のメモ帳 で、
S-JIS を用いて書く方法を書いていて、
Web上でWebページ としてページが生成されたりするには
Web上の文字コードに合わせなければならないので
その場合、今現在の流れではUTF-8 でWebページの内容を
書くことが一般的となりつつある様なので、この時点でシフトJIS(S-JIS)を
使っているのは面倒な事につながり兼ねません。

 そして上記の方にある様に無駄に文字コードを変換することは
文字化けの原因になる可能性もありますし、それ以外に
MySQL に保管する文字データも無駄に変換して用いるべきではないと思います。

なのでMySQL の文字の設定とPHP の文字の設定をもう一度見直す事に
なるのだと思います。


php.inオプション名 適応場所、結果 意味、概要 値の表し方と補足 該当関数
mbstring.detect_order mb_detect_encoding 関数,
mb_send_mail 関数の
文字エンコーディング検出順序
文字エンコーディング検出順序を設定。  文字コードで1種類以上、またはauto。
auto ならばASCII,JIS,UTF-8,EUC-JP,SJIS
の検出順序。
mb_detect_order 関数
mbstring.http_input    HTTP 入力文字エンコーディングのデフォルトを設定。
入力をソース内部で指定した文字コードに変換する
場合に設定するが、元の
  文字コード1種のみ。指定し何もしないpass を
指定したり、auto を指定したならばASCII,JIS,
UTF-8,EUC-JP,SJISの検出順序で自動認識も
可能。
 mb_http_input 関数
mbstring.http_output  mb_output_handler 関数で指定した
出力バッファ。
 また、mb_output_handler 関数
を用いたときに
条件によって作られる
charset HTTP ヘッダの値にも作用。
 HTTP 出力文字エンコーディングのデフォルトを設定。
Content-type がtext/html である場合のみ出力変換が
有効になる。またmb_output_handler 関数などの
文字コード変換関数を用いなければ効力はない。
 文字コード1種のみ。指定し何もしないpass を
指定も可能。
mb_http_output 関数
mbstring.encoding_translation    入力される HTTP クエリに関して、
文字エンコーディング検出および
内部文字エンコーディングへの変換を行う
透過的な文字エンコーディングフィルタの設定。
 この値がOn であると入力されたクリエは
mbstring.http_input で指定した
文字エンコーディングであると判断し、
mbstring.internal_encodingで指定した
文字エンコーディングに変換をします。
 色々な意味合いで、入力がどんな
文字エンコーディングなのかや、
マルチバイト文字の関数を用いるのかなどを
考慮して設定する必要があります。
 スクリプト内部で設定できるのであれば、
Off にして使用することが可能です。
 公式サイト(HTTP 入出力)に、
「PHP スクリプトで
HTTP 入力文字変換を制御する
手段はありません。」
とあるので注意が必要。
(php.iniが書き換えられない環境
の場合にはApache の設定で、
php_value
mbstring.encoding_translation
Off
 を設定する) 
mbstring.internal_encoding 各マルチバイト文字の
関数で元のエンコーディング
種類が必要な関数。
mb_convert_encoding 関数,
mb_convert_kana 関数などで
引数がない場合に使用。
mb_decode_mimeheader 関数では
必須となるがソース内で該当関数で
指定可能。
内部エンコーディングと呼ばれているが、
関数内部で必要な時に使用される
暫定(既定)の文字エンコーディングの事。
 文字コード1種のみ。マルチバイト文字列系の
関数を使うときに自身で値を設定するのならば、
注釈にしてしまい用いない事も可能。
mb_internal_encoding 関数
default_charset 自動で生成される環境設定の場合、
charset HTTP ヘッダのContent-type:
の文字エンコーディング種別。
Content-type:ヘッダで character encodingを
出力する。
 PHPの処理はWebページ向けの処理のみでは
無いので、この設定が問題を発生させる場合は
値を空にして、charsetの送信設定を無効に
出来ます。 またWeb系の出力の場合にこの値を
空である無効にした場合には、header 関数で
値を指定する必要も考慮が必要になります。
 (header 関数)
output_handler 最終的な文字コーディングを必要と
した場合、フィルタとしてコールバック
関数を用いた後の出力の内容変化。
 出力する最終段階で内容を自動的に指定した
関数に送り処理させ、その関数の出力を最終出力
とする設定。(つまりこの事をリダイレクトと言う)
 つまりバッファを用い、文字エンコーディングを
他の文字エンコーディングに変える事を、
関数を選んで指定できます。
関数名もしくは空の値。
例としては、
"
ob_iconv_handler"か"mb_output_handler"
 や
"
ob_gzhandler()"か"zlib.output_compression"
 PHPのバージョンによっては、
イメージのようなバイナリデータであるのに
Content-Type: を
header 関数を用いて指定や、
バージョンや環境設定においては、
mb_http_output
 をpass に指定しなければ
バイナリデータがうまく処理できない場合が
あります。

コールバックとしての
mb_output_handler 関数 
(実体は ob_start 関数)
mb_detect_order
編集中

拍手[0回]

PR

No Image

xdebug やらZend Debugger を使う前の予備調べ

Eclipse の調べ物

 PHP を便利に使いたい!
この地獄の様な使いにくいエディターだけの環境から早く抜けたい!そう思って、やはり本を買っちゃいました。


しかし、この本にはXdebug についてはある程度書いてありました、
しかしXdebug をダウンロードせずにPHPのディレクトリに既に存在する様な
書かれ方をしていましたが、それは間違えだと思います。
少なくとも私の落としたThread SafeのApache2系でも使える
VC6でコンパイルされたWin32 のPHP5.3.2のパッケージには存在していませんでした。

なのでXdebug はXdebug のサイトから落とさないといけないです。

 そして本を見てXdebug のみの知識を先に吸収してこれば良いのですが、
私の良い所であり悪いクセである、他のことも知りたいと言う事や、
もっと予備知識があるなら吸収したいと思ったこともあり、
それを忘れる前にブログにメモしておく事にしましたw


 では本題である事に向かって説明しようと思います。

Eclipse 公式サイトにあるページ、PHP Development Tools (PDT)のダウンロードページ
PHP のデバッグの説明が無いか探しました。

そしたらあるのはあったのですが、PDFでした^^;

そこでまぁ、毎度ながらいい加減に(どうせ時間なかったりして長い間中途半端になるけど)
英語出来ませんが翻訳してみようと思います。


Debugging PHP using Eclipse and PDT(PHP のデバッギングで、Eclipse とPDT を使う)

Debugging PHP using Eclipse and PDT
(PHP のデバッギングで、Eclipse とPDT を使う)

Use XDebug or Zend Debugger to boost your productivity when
fixing bugs in PHP applications

(PHP アプリケーションでバグを直すとき、
あなたの生産性を引き上げるために XDebug あるいは Zend デバッガを用いる。)

Skill Level: Intermediate
(技能水準:中級)

Nathan A. Good (xxxxx)

Senior Information Engineer
(先任の情報技術者)

Consultant
(顧問)


※説明を作った方?とメールアドレスでしたが、PDF の中身であり、
これをWebサイトにメールアドレスを載せることは、元々勝手に翻訳を
しているのでよろしくないと思い、メアド(xxxxx)は載せませんでした。
 その代わり、Webページであれば良いと思いましたので、
Webページを所在として載せます。
http://www.nathanagood.com/
またどうしてもメールアドレスが必要な場合はPDFの中身を見て下さい。


17 Jun 2008(2008年6月17日)


The PHP Development Tools (PDT) plug-in, when installed with Eclipse Europa,
gives you that ability to quickly write and debug PHP scripts and pages.
(PHP 開発ツール( PDT )プラグインは、Eclipse Europa と一緒にインストールすると、
あなたに速く書く能力、そして PHP スクリプト をデバッグとページを与える。)

PDT supports two debugging tools: XDebug and the Zend Debugger.
(PDT は2つのデバッギングツールをサポートする: XDebug と Zend Debugger。)

Learn how to configure PDT for debugging PHP scripts and discover
which perspectives you use when taking closer looks at your scripts.
(PDTの配置方法を習得する意味とは、PHPスクリプトのデバッギングと、
貴方は貴方のスクリプトの動作をより近くで見る事に魅力を感じて使用していると、
いずれそれ(PDTの習得?)は全体像が見える事でしょう。)
※ごめん!ギブアップですww 原文が曖昧すぎる意味がいっぱいで解釈に困りましたw
 暇があればまた翻訳するとしますwwwww


orzw

追記:話は進みますが、xdebug の使い方が判ったので、こちらの以下ブログを御覧下さい。
zend_extension と zend_extension_ts そしてApache の設定・・でもよくわからない

拍手[0回]


No Image

PHP のNon Thread Safe とThread Safe の違い

Apache と PHP の調べ物

Non Thread Safe とThread Safe の違いについて書きます。

 これはNon Thread Safe とThread Safe の違いって何か?なんですが、
簡単に言うとCPUの中で同時に動いている別々の処理機構であるスレッドが、
1つの動作中のプログラムを効率よく処理しようとしたときに不具合を起こさない様に作られたものを
「Thread Safe」といい、1つのプログラムが同時にCPU内のスレッドを使う事に対応していないのが
「Non Thread Safe」と言う事になる様です。

 では厳密にPHP にはその2種類の「Non Thread Safe」と「Thread Safe」が
存在しているのですが、しかし私には、これらの違い指し示す所が厳密にどうなのか、
私には見当が付きませんでした。

 なのでファイルを比較したところ、見当が付きました。
------------------------------------------------------------------
[1] : php-5.3.2-nts-Win32-VC6-x86|| [2] : php-5.3.2-Win32-VC6-x86           
------------------------------------------------------------------
 |..                         ---| |..                          ---

L|dev                        ---|R|dev                         ---

L|ext                        ---|R|ext                         ---

 |extras                     ---| |extras                      ---

 |PEAR                       ---| |PEAR                        ---

 |go-pear.bat                 90| |go-pear.bat                  90

 |icudt36.dll         10,166,272| |icudt36.dll          10,166,272

 |icuin36.dll            954,368| |icuin36.dll             954,368

 |icuio36.dll             53,248| |icuio36.dll              53,248

 |icule36.dll            192,512| |icule36.dll             192,512

 |iculx36.dll             45,056| |iculx36.dll              45,056

 |icutu36.dll            106,496| |icutu36.dll             106,496

 |icuuc36.dll          1,064,960| |icuuc36.dll           1,064,960

 |install.txt             86,472| |install.txt              86,472

 |libeay32.dll         1,069,056| |libeay32.dll          1,069,056

 |libpq.dll              464,172| |libpq.dll               464,172

 |license.txt              3,286| |license.txt               3,286

 |news.txt               279,571| |news.txt                279,571

 |phar.phar.bat               39| |phar.phar.bat                39

L|pharcommand.phar        53,212|R|pharcommand.phar         53,212

L|php-cgi.exe             45,124|R|php-cgi.exe              49,223

L|php-win.exe             28,740|R|php-win.exe              28,743

L|php.exe                 28,736|R|php.exe                  28,739

 |php.gif                  2,523| |php.gif                   2,523

 |php.ini-development     70,515| |php.ini-development      70,515

 |php.ini-production      70,800| |php.ini-production       70,800

L|php5.dll             5,476,417| |                             

L|php5apache.dll          32,839|R|php5apache.dll           36,938

 |                              |R|php5apache2.dll          36,939

 |                              |R|php5apache2_2.dll        36,941

 |                              |R|php5apache2_2_filter.dll 36,948

 |                              |R|php5apache2_filter.dll   36,946

L|php5apache_hooks.dll    49,229|R|php5apache_hooks.dll     53,328

L|php5embed.lib          785,796|R|php5embed.lib           796,892

 |                              |R|php5nsapi.dll            32,841

 |                              |R|php5ts.dll            5,648,454

 |pws-php5cgi.reg            135| |pws-php5cgi.reg             135

 |pws-php5isapi.reg          139| |pws-php5isapi.reg           139

 |readme-redist-bins.txt  20,693| |readme-redist-bins.txt   20,693

L|snapshot.txt               952|R|snapshot.txt                955

 |ssleay32.dll           212,992| |ssleay32.dll            212,992
------------------------------------------------------------------
[1] : php-5.3.2-nts-Win32-VC6-x86 の方が、「Non Thread Safe」であり、
[2] : php-5.3.2-Win32-VC6-x86 の方が、「Thread Safe」です。

 このファイル比較を見てわかったことは、Apache2系のdll が「Non Thread Safe」の方には
有りません。
 当たり前といえば当たり前なのかもしれませんが、Apache2系がマルチスレッドでの動作に
対応したApache だったはずなので、マルチスレッド対応=「Thread Safe」であり、
もっと言い換えるなら、「Thread Safe」=マルチスレッド対応=Apache2も対応 と言う意味で
とらえて、もっと名前の意味だけで種類を考えるのならば、PHP のバージョンの話ではあるが、
Non Thread Safe とThread Safe の違いは、Apache のバージョンの違いであることと
思っておけば良いと思う。

○「Thread Safe」=マルチスレッド対応=Apache2系も対応
○「Non Thread Safe」=マルチスレッド非対応=Apache1系のみ

 また前回ブログにも載せた
○IIS を使うならVC9 でコンパイルされたパッケージ
○Apache (2.2迄)を使うならVC6 でコンパイルされたパッケージ
を使う様にPHP のパッケージは構成されている。
(VCコンパイラのバージョンによってApache かIIS のどちらに使うかの
推奨?推薦?バージョンが決まっているっていた時代の話です。
今はもっとVC11 などもありますし、この記事を修正している今のPHPの最新バージョンは
7.2.2などがありますので、斜線をあえて引いておきました。)




ちょこっとリンク:
スレッドセーフの説明 



追伸:
上記の記事は古くなった!!!

追記の内容は
Apache とPHP のバージョンについて(2014年3月31日)
に書きました。

拍手[3回]


No Image

Eclipse どう使う?プラグインの謎

Eclipse の調べ物

 結論からですが、
Eclipse はプラグインから成り立っている
と言っても間違えが無いのだと思います。

Eclipse の調べ物をした時に思った特徴は、

○なんらかのプログラミング言語の開発をする為にEclipseがあり、
 用いたいプログラミング言語に合わせたプラグインからEclipseは構成されている。

○プラグインは類似品が存在し、その違いは図示や比較解析だけでは判りにくいし、
 案外比較解析されていない、もしくは比較されていても個人的主観があるだろうから、
 鵜呑みに出来ず、結果自身で使い実感するしかなさそうである。

○Eclipse にもプラグインにもバージョンが存在していてバージョン違いなどの取り扱いが
 必要な気がするし、実際そうだと予想する。

○プラグインのインストールは例外がなければ、Eclipse 「plugins」と「features」の
フォルダ(ディレクトリ)にコピーし、<<eclipse.exe -clean>>コマンドを実行するとか、
Eclipse の実行ファイルがある場所にある、設定ファイル「eclipse.ini」の最後の行に
>>-javaagent:<<から始まるURLっぽいパスでバージョンを省略した.jar拡張子の
プラグインを示す事柄を書くみたいである。

○プラグインを個別にインストールするよりも、プラグインを適応済みのEclipse を
導入する事の方が容易な様だが、追加でプラグインを追加するほどEclipse に詳しくなると
導入済みのプラグインが何であるかわからず邪魔に思えたり、消さなければならない場合や、
入れなおした方が見通しが利く場合が発生すると思った。

○プラグイン はEclipse 公式な物と、サードパーティー製の物がある、そして
プラグインを導入した場合には適応される優先順位があるらしい。

○当面本当にEclipse の玄人になるまでは、サードパーティー製のスクリプトと一緒に
Eclipse が入った配布パッケージが存在するので、それを用途に合わせて使った方が
良いと思った。



今回こそあまり役に立たない概要っぽい覚書です。
 

拍手[0回]


No Image

Eclipse に挑戦?統合開発環境として便利なの???

PHP の調べ物

PHP の初心者の枠から未だに抜け出られない状況にいる私です。

色々考えたのですが、本とか読んで仕組みとかライブラリの種類を判ったとしても、
なんだかうまく扱えない感じがしていました。

それはPHP のコードが書ける程度のエディタを使っているだけでは、
効率が進まない、自身の書いたコードの不具合、つまり、
バグや単純な人為的ミスの打ち間違いや書き間違いに気が付かない、気が付きにくい。

これだけの事で進む能率がとてつもなく変わる、時間の無駄になる。

 そもそもそれに気が付いたのは、私はVB(Visual Basic 6.0)なら基本的に
Webの情報などを用いて何でも適当にある程度作れるますが、
現状の私のPHP 環境の様に無駄に進まない、気軽にコードを打ち込んで試せない、
そんな状況にはならないのです。

 これは何が悪いのかを考え、色々調べてみると、統合開発環境は
とても重要なのだという事を実感しました。

 これはブレークポイントを設置するデバッグや、コードの見通しが利く見え方、
ファイル単位やプロジェクト単位、関連付け、エラーチェック、
コード内の関数定義場所へのファイルをまたいだジャンプ編集、
色々あると思います。

 色々調べた結果なのですが、テキストエディタで自分がミスをしない事や
記憶力だけを当てにした開発や制作、作成をしているよりも、
気軽に思いつきどおりに何かを作り出せる事の方が、
クリエイティブな環境なのだと思い、これ自身が私の求める物だろうと
確信的な想像が付いたので、やっとでありますが、動こうと思います。

長ぁ~~~~~い前置き終わりっ!w


PHP の統合開発環境を探してみた。

 さて、PHP のエディタだけではなくて、ちゃんとデバッグやソースに関連付けられたファイルの
変数や関数まで把握してくれる統合開発環境を求めて、色々探してみました。

 ここで連ねて書いても良いが、迷った事を残してみようと
思っていたが、時間が足らないのと、不必要な調べ物は消して手元に無いので、
ほとんど他のサイトを見て得た知識なので、そのリンクを書いておこうと思う。

【コラム】イマドキのIDE事情 (5) もうひとつの無償IDE - "Oracle JDeveloper"を試してみる | エンタープライズ | マイコミジャーナル

 一応今回は説明が少ないですが終わりにして、
そのうち私がPHPの統合開発環境として使ってみようと思っている
Eclipse PDT (PHP Development Tools)を触って、日本語化できたら
その事のメモでも残そうと思う。

拍手[0回]


[PR]