忍者ブログ

カウンター

プロモーション

カレンダー

11 2024/12 01
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

FireFox だけ uncaught syntaxerror unexpected token = とならないエラー

JavaScript の調べ物

Firefox でデバッグして作っていたJavaScirpt の部分が
Chrome でエラーを起こしました。

PHP を使っている者が、
JavaScript でついうっかり出しちゃうだろうエラー
を見つけました。

それは

FireFox だけ uncaught syntaxerror unexpected token = 

なのですが、これは 「=」 がダメということなので、
調べたメモになります。



どうも、FireFox はPHP の様に、
関数の引数の宣言で、引数が無い場合に初期化の書き方ができるみたいです。

それが動いているかどうかは確かめませんでしたが、
他のブラウザではその書き方を許さないのが分かっているので、
この書き方はFirefox のイレギュラー扱いした方が良さそうです。

その書き方は

function xxx(a, b=null){

}

と関数の引数の宣言で、引数がなかった場合に自動で初期化するつもりで
「=」を使ってはいけないということです。

なので
function xxx(a,b){

}

に直すのが一番無難そうでした。

今後、JavaScirpt のバージョンとかが上がって、
変わるかどうかは分かりませんが、
PHP とJavaScirpt の両方を同時に使ってサイトを
作っていると、ヒューマンエラーでやらかしそうです。


一応、個人的なメモでした<_ _>


--- 追伸です! ---
IEでも同様に 関数の引数で初期化の書き方は出来ず、
スクリプトが動かない状況になります。

なんでやはりFirefox 特有な状態になっているのだと思います、
繰り返しますが、本当にPHPと同様で、
値が無い時に初期化しているかどうかまで確かめていませんので、
もしもFirefox で関数の引数で「=」のつく書き方をするのであれば、
お気をつけ下さい^^

拍手[0回]

PR

No Image

jQuery ui は外部スクリプトを使うと動くが、ディレクトリでの読み込みは動かない場合

JavaScript の調べ物

凄いびっくりするハマりをしました。

jquery ui のsortable

$(function(){
$(function() {
$("#sortable").sortable();
});

});
を動かしたくてもうんともすんとも言わなかった時です。

html のhead タグ内に
<script  type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
<script  type="text/javascript" src="js/jquery-ui-1.10.4.custom.min.js"></script>
と書いて動きませんでした・・・・

それはFirefox でもChrome でも
一緒の現象でした。

このsortable のjQuery のui を使いたいのに動かないのならば、
普通は
jquery-ui-1.10.4.custom.min.js
の方を疑いませんか????????????????(ここ重要!!!)

しかし、今回なぜか、
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script  type="text/javascript" src="js/jquery-ui-1.10.4.custom.min.js"></script>

太字にした部分、つまりjquery の所だけ、
適当なバージョンで、なんとなく外部から読み込んだのです。

それでなぜか動くので、ではjQuery 本体のJavaScirpt が壊れているとか、
何かの問題があるのだと思って、その本体をダウンロードして
ローカルに配置しました。

つまり
<script  type="text/javascript" src="js/jquery.min.js"></script>
<script  type="text/javascript" src="js/jquery-ui-1.10.4.custom.min.js"></script>
と太字の部分にしたのです。

しかしなぜか・・・・動かないのです・・・・

ここでどうしようもないので、ほぼ1日迷いました^^;(久しぶりに本当に困ったw)

そこでまずネットであれこれjquery ui sortable 動かない
などgoogleで調べてみて

http://manablog.org/jquery-not-work/

なのがあったので、参考になるなぁ!と思いましてブックマークしたりしていましたが、
結局これでも動かなかったのです。

どう考えても読み込む順がおかしいのかな?などと思っていましたが、
Firefox のFirebug などのコンソールでエラー表示されないので
エラーも特定しずらく、迷っていたいのですが、
初心に戻ってhtml の記述がおかしいのか?とかdocment の指定がおかしいのか
あれこれしていて見つけたのがやはりhtml の説明でした。

http://www.tagindex.com/html_tag/elements/script.html

そこでもdefer を付け加えたり、いろいろしてダメだったので
文字コードにUTF-8 でも指定しても変わらないだろうな・・・と
思っていましたが、なんとなく指定しました。

動きました;x;(えええええええw)

つまり、
jQuery UI は、jQuery 本体のJavaScirpt の文字コードに依存して
動かない事がある!んです!!!!

結果的にui 側ではなく、本体側の文字コードをcharset="UTF-8"にしたら動いたのです。
つまり以下

<script  type="text/javascript" src="js/jquery-1.11.0.min.js"  charset="UTF-8"></script>
<script  type="text/javascript" src="js/jquery-ui-1.10.4.custom.min.js"></script>

久しぶりにハマって困った事だったので記述してメモとして残しました!

お粗末です<_ _>

拍手[0回]


No Image

Apache とPHP のバージョンについて(2014年3月31日)

Apache と PHP の調べ物

メモで始めたブログ、
しかし案外あれこれ見に来て下さるみたいで、
古くなると間違った内容になっちゃうから
直さなくてはいけなくなるんだね!?

まぁ、一応追加修正しておきます^^;

Apache とPHP の関係で、
PHP のどのコンパイラで使われたバージョンを使えば良いか?
という話を過去ブログで書いて着ましたが、
これを書き直すという事です。

PHP のNon Thread Safe とThread Safe の違い

PHP はどうもコンパイラのVer でWebサーバを決めている?!

やっとわかった!PHPのバージョンの謎!(PHP5.3.2とか)


これらの事ですが、
2014年3月31日、今日現在、少し違うと言う事です。

厳密には、
Apache のバージョンに2.4 が出てきたので、
それに伴い、Windows 版のPHP は、
Apache 2.4系を使う場合には、
VC9(VC11)でコンパイルされた物を使ってと記述が変わっていました。

なので、PHP のコンパイラのバージョンを選ぶ時、
Apahce 1と、Apache 2 、Apache 2.2 はVC6 系統でよかったと思いますが、
Apache 2.4 はVC6やVC11 でコンパイルされた物を使うと書かれています。

PHP5.4 とかは、もうApache 2.2 用とか、
つまりVC6 でコンパイラされたのは配布されてない気配???
パッと見でアーカイブで古いPHP の配布を見た所、

      Tuesday, March 22, 2011  3:04 PM      5097231 php-debug-pack-5.3.5-nts-Win32-VC6-x86.zip
Tuesday, March 22, 2011 3:04 PM 5272229 php-debug-pack-5.3.5-Win32-VC6-x86.zip
がWindows で最後のVC6コンパイルな様に見えました。


これ以後はVC9 になって、そのうちVC11 の文字が・・・

古いApache は、
何処か(見てないけど)にもうサポートしないと書いてあったりするのかもしれません。

自分でコンパイル出来る様にして古いApache に対応するしかなく、
というか、何処かのレンタルサーバー(ホスティングサービス)も、
古いPHP やApache は新規に選べなくなるのだろうから、
やはりそのうちは乗り換えが必要なのでないのかな????とか思ってます@x@;

嫌だな・・・
とか思いつつ、新しいのにも興味があるけれど、
今現在ホスティングサービスでの安定版とされているのが
5.3.x くらいなので、うーん、これ何時移行しよう????

フレームワークのSymfony2 とか、
少し前だと新しい物使いすぎて、
要件を満たさないホスティングサービスとか
いっぱいあったけど、
そろそろ変わってくるんじゃないかな???

さてさてさて、
うれしいのか悲しいのか分からない波がまた
知らず知らずに押し寄せてきた!?


追加修正のつもりだったけど、
まとめではないので、
また気が向いたらこれまでの
まとめ一覧でも載せる(ほんと?w)かも。



お粗末な修正でしたorz

拍手[3回]


No Image

MySQL5.5 の GRANT ALL PRIVILEGES ON を使う場合にPASSWORD 句を使うのか!?

MySQL の調べ物

メモでっす^w^;

えー・・・・・・

毎回環境を入れ替えるときに、ある程度の新しい目のバージョンの何かしら入れ替えるのですが、
今回はMySQL5.5 を入れてハマったことを記述します(ぁふんorz


とりあず、言える事。

GRANT 構文
GRANT ALL PRIVILEGES ON `テーブル名`.* TO `ユーザー名`@`ホスト名` IDENTIFIED BY `パスワード`;
では動かない

MySQL5.5 からは、GRANT を用いた方法で簡単にパスワードが変えられないもしくは、
変えにくいみみたいです。

なんで分かったか?
13.7.1.3 GRANT Syntax(MySQL5.5英語)
もしくは
8.5.1.3. GRANT 構文(MySQL5.1日本語)
に確認は
Section 13.7.5.22, “SHOW GRANTSSyntax”

項8.5.5.22. 「SHOW GRANTS 構文
を見ようと書いてあったので、
そこを見ると、
SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
で確認できる内容があったので、それを閲覧、
そこにあった構文を実行してみると、動くのに気がつきました。

どうも、
ハッシュ(41桁)のパスワードを書かなければ受け付けてくれません>x<;

構文は
GRANT ALL PRIVILEGES ON `テーブル名`.* TO `ユーザー名`@`ホスト名` IDENTIFIED BY PASSWORD ’ハッシュ(41桁)' WITH GRANT OPTION
これでやっと動くのを確認しました。


問題なのはハッシュ(41桁)の部分
'*1234567890123456789012345678901234567890'
こんな感じの*を含む41桁なのですが、
これはどうもMySQL がパスワードの文字列から作るハッシュなので、
PASSWORD関数を用いて生成しなければいけないみたいです。

表示するには、
SELECT PASSEORD('ハッシュにするパスワード');
です。

参考:
4.3.11. MySQL 4.1 のパスワードハッシュ
11.10.2. 暗号化関数と圧縮関数

(こちらで他のPASSWORD 関数以外のハッシュはMySQL のパスワードに使うべきでないと

書いてあった、実際使うべきでないと言うよりも、使っても一致しなくなるので使えないです)


そうすると例えば
mysql> SELECT PASSWORD('test');
+-------------------------------------------+
| PASSWORD('test')                          |
+-------------------------------------------+
| *1234567890123456789012345678901234567890 |
+-------------------------------------------+
みたいに表示されるので、
現段階ですぐに変更したい場合には
PASSWORD の句にPASSWORD の関数から生成したハッシュになった
パスワードを埋め込むしか無さそうです。

というか、これが手っ取り早そうです?!

うん・・・ 簡単に1つのクエリーにGRANT 構文を埋め込みたいのに・・・・

どう料理するかな・・・・っと・・・


一応、個人的なメモでした<_ _>


拍手[0回]


No Image

PHP のスクリプトをfopen などで呼び出すと、途中終了、終ってしまう未知のecho(print)エラー

PHP の調べ物

メモです。

何時間もかけて突き止めた、バグに近い?エラーです。

fopen などで、自分のサイトへhttp のphp スクリプトを呼び出す時、
呼び出す側の中に、echo を書いてはいけません。

これをしていると、
その部分で止まってしまう事を確認しました。

echo を動く場合と動かない場合があって、
今まで気がつかなかったですが、
多分バージョンによっても動く動かないは
あるかもしれませんが、止まるケースはあります。

例)

a.php で、
if($fp = fsockopen($host,80,$errno,$errstr,2)){
$req = "HEAD ".$host_dir.$q." HTTP/1.1\r\n";
$req .= "Host: ".$host."\r\n";
$req .= "Connection: Close\r\n\r\n";
fwrite($fp, $req);
stream_set_timeout($fp, 2);
fclose($fp);

みたいな内容で、
b.php を呼ぶと時、

b.php 内にecho をしてはいけないと言う事です。

これの判断に、
b.php のecho の前方と後方で

$fp_debug = fopen($fileOpenPath_and_fileName, 'a+'); //指定のパスのファイルネームがあれば追記モードで開き、無ければ作成
fwrite($fp_debug, $saveString); //一行書き込み
fclose($fp_debug); //ファイルの書き込み終了

の様な(例は関数化しているので引数が変数ですが)付け加えた結果、前方はOKですが、後方は
ログすら残りません。

多分、エラーとか、タイムアウトとか、出力先が曖昧になるのでしょうか、
それともLinux が相手のポートを把握できないので、止まるのでしょうか、
色々考えられますが、とりあえずphp のページをfopen なので80 ポートを
用いて呼び出して実行する時には、気をつけなければいけません。

php スクリプトをphp スクリプトで呼び出す場合のデバッグの方法は、
ob_xxx 系関数を用いて、ブラウザでデバッグ出力してとか、
色々考えられますが、直接呼んだのか、間接的に呼んだのかなどが
判断できる、例えばip アドレスとか、ブラウザのユーザーエージェントで
判断するとか、色々考えられますが、
やはりecho やprint は使わないのが手っ取り早いでしょう。


とかいう、個人的なメモでした。

拍手[0回]


[PR]