Are you ready for TECH INFO?
あるユーザーの twitter でのつぶやき(タイムライン)を xml で取得するには、
http://twitter.com/statuses/user_timeline/(ユーザー名).xml
で、おけー だそうです。
簡単ですね。
XSS対策らしいのですが、
iframe内から親ウィンドウへ and/or iframe外から内部へ は、
javascript で制御を行う事が出来ない。(但し、同じドメイン内なら可能。)
という仕様になっているらしいです。
そういう訳で、同じドメイン内でテストして動作していたスクリプトが、外部の実動作環境に投入したとたんに動かないという、すばらしい事態に見舞われ、原因がさっぱりつかめずに困ってしまいました。
よくよく考えれば、当然の事なのでしょうし、わからんでも無いのですが、
普段の私のヘロヘロ頭でそんな所まで気がつく訳がありません。
本当に不親切な事に、そういう事情を知らん者から言わせてもらえば、なんで今まで動いていたものが、実動作環境では突然に動かなくなるのか、さっぱりわからないくてあせる事この上ないです。
同ドメイン内でもエラーして欲しいくらいですね。そういう所は。
デバッガでも原因が掴めなくて難儀でした。
こんなスクリプトで、iframe 内部から親を制御しようと思ったんですけどね
<script> <!-- window.onload = function(){ var parentWindow = window.parent; //親(iframeを内包しているwindow)を取得 var parentDocument = parentWindow.document; //親のdocumentを取得 var parentIframe = parentDocument.getElementById("iframe_id"); //ifame 自身を取得 var inner_height = parentIframe.contentWindow.document.body.offsetHeight; //iframeの中身の高さを取得 parentIframe.style.height = inner_height + 'px'; //ifameの高さを内部に合わせて変更 高さ可変窓の完成...のはずだった。 } --> </script>
無駄に時間を浪費してしまいました。
ああ。
どっかのブログでそんなことが書かれていましたが、
いや、本当にそう思います。
simpleXML は、割りと使い易いですが、CDATAを使おうとするととても苦労します。
実質上書きには出来ません(新規の書き込みと読み込みは出来るんですけどね、php.netにも載っています。でも、追記とか変更とかは出来ませんでした。なんかいい方法があれば教えてください。僕はこれで、phpがクラスのキャストの出来ない言語だったのだと初めて知りました。)
で、DOMですが...
うざすぎます。めんどくさいです。誰?この仕様決めた奴、頭おかしいと思います。
とりあえず、ノードの値を取るとデータ型まで含めた連想配列で返してくれる仕様はやめて欲しいです。
頭痛い。
Zend_Xml とか、あればいいのに
なんというか、いまいちpearは使う気になれません。
英知の結晶だと思うし、使い勝手も考慮されているとおもうのですが、
なんか、どうも、食わず嫌いです。
いざとなれば、検討してみますけど...
ある日、MySQLが死亡しました。
さて、とりあえず必要に迫られてPHPのバージョンアップが必要になり、
そうするとyumとかいうアレから「MySQLもバージョンアップしなさい」的な指摘があり、
じゃ、しょうがないなと思って一緒にお任せでお願いしたら、
「無理無理無理無理! 無駄無駄無駄無駄!」的なエラーメッセージを大量にもらったのです。
でも、どうしてもPHPのバージョンアップは必要で
(いや、本当は必要ではないが、XMLなナニが必要で、そこだけ古いファイルというのが見つけられなくて、じゃ、めんどうだから導入ついでにバージョンアップもしちゃうか? と思ったら、MySQLも一緒にバージョンアップしないとダメだよ、問題でるよ、頼むよ、と、yumから指摘があったというのが真相)
どうやらMySQLは同じバージョン5であっても、バージョンアップすると色々問題が出るらしく、安易に考えていてはダメだなと、今回は思い知らされた。
http://dev.mysql.com/doc/refman/5.1-olh/ja/upgrade.html
とりあえず、yum install php でなんかいっぱいエラーが出たので、 yum upgrade mysql を先に行ったら一応アップグレードしてくれた。
そこで、 yum install php を再び行うと成功。
オケー、じゃ mysql を起動させるか…起動しない。
あせって何度もやってみたけど、やっぱり起動しない。
my.conf を覗いてみても、特に問題があるとは思えない。
ログをのぞいてみると、どうやら mysql_upgrade をせよという事を述べているらしい部分が見つかったので、コマンドをたたいてみるが、
「サーバーが立ち上がってないと実行できませんよ」的な英語メッセージが。
サーバーを立ち上げようとしてコケているので、そのログを見てヤレと言われている事をやろうとすると、サーバーが立ち上がっていないと実行できませんと言われる…なんという理不尽、困った。
結局、色々調べると、 /var/lib/mysql の中身を全部消すと起動する との事。
さすがに消してしまうと後々支障が大きすぎる(DBのデータ本体も含んでいる)ので、データを退避させておいてから起動すると、やっと立ち上がった(泣)
その後、退避データを元に戻して、mysql_upgrade を実行すると、ものの数秒で颯爽終了!
そんなんでいいのか?MySQL! いや、大変助かったけれども...
ま、疑問は残ったままだが、なんとか、ようやく平和が戻ってきたのであった。
再起動もサーバのリスタートも問題無くクリア。
安易なアップグレードは禁物ですね、ちゃんと情報を集めてから行いたいものだが、往々にしてそうはいかないのが人間の悲しい性と言えるかもしれない。
しかし、平和は長くは続かないのであった…
phpMyAdmin 動かんやないかー!
最新版を入れたら動いた。
原因がよく分からない...
Zend_Config の Zend_Config_Ini を使っていて、
値がオブジェクトで返ってくるので
「めんどくせ、配列で取れるようにすればいいのに…」
などと思っていたら、メンバ関数 toArray() を呼び出したら、一発で配列になった...
...絶望的な気分になった。
でも、Zend Framework のマニュアルにはそんなことなんにも載ってないんですよ!
(俺調べ)
Zend_Db でできるから、こっちでもできたりして...うわーい、やっぱりできなかった。
っていう確認を、時間がちょっとだけあったから実行してみたら、ちゃんと配列になっちゃんたんだなこれが。
ずがん。
もうちょっとちゃんとしたリファレンスが欲しいなぁ(日本語で)
最近思ったのは、ABC順のリファレンスだと重要性がわからんから、リファレンスの並びを使用頻度別とかにしてくれんだろか?? という事。
そういう事を実現できたら、Google みたいな会社になれるのかもしれんけどね。
月 | 火 | 水 | 木 | 金 | 土 | 日 |
---|---|---|---|---|---|---|
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 |