会社のローカル環境をいちいち忘れるのでいちいち書くこととスルPART1
FlexのURLLoaderでIE6だけ「#2032: ストリームエラー」 原因はgzip?
見事にはまったよ
けど
一応、解決したよ
はまり現象
第13回 Flexが備えるサーバー連携API(Part1:Flash系パッケージ)(2ページ目) | 日経 xTECH(クロステック)
↑のようなことをしたけど、IE6だけ「IO_ERROR」が出ちゃう人が参考にするといいかも
ローカル環境のIEは大丈夫だけど、UPすると駄目になっちゃう人もいいかも?
URLLoaderじゃなくてlastResultとかのHTTPアクセスではまってる人も同じ現象かと
一番の問題はURLLoader.load()したあとに戻ってくるデータのレスポンスヘッダーにあるみたい
(lastResult使ってる人の場合は「HTTPService.send()」のあとのレスポンスヘッダー)
はまり脱出への調査
とりあえず色々調べた結果、短い文字列を取得(URLLoader.load())した場合、
HTTP/1.1 200 OK Date: Tue, 09 Jun 2009 08:27:55 GMT Server: Apache X-Powered-By: ModLayout/3.2.1 Cache-Control: no-cache Connection: close Transfer-Encoding: chunked Content-Type: text/html
こんな感じのヘッダーが返ってくるけど、ある程度長い文字列を取得しようとすると
HTTP/1.1 200 OK Date: Tue, 09 Jun 2009 08:26:30 GMT Server: Apache X-Powered-By: ModLayout/3.2.1 Cache-Control: no-cache Connection: close Content-Type: text/html Content-Encoding: gzip Content-Length: 960
こんな感じにヘッダーが返ってくる
ここでポイントなのは
Content-Encoding: gzip
この人
この人はどうやら「僕gzip圧縮されて返ってきました」っていうヘッダーらしいんだけど、どうやらURLLoaderで取得した場合はgzip圧縮されたデータを解釈(解凍?)できないみたい. そんな人僕は召還した覚えがないんですが、このヘッダーの制御はレンタルサーバー(XREA Free)のapacheで設定されているっぽいんですね
この人が帰ってきた場合はほぼ間違いなく「#2032: ストリームエラー」になります
firefoxとかoperaは大丈夫なんですけどね、なんなんですかねIE6は
※蛇足:この「Content-Encoding」は「Accept-Encoding」という送信ヘッダーによって制御されているみたい. これもapacheの設定らしく僕のレンタルサーバー上では「HTTP_ACCEPT_ENCODING gzip, deflate 」となっています. これは変更できないんだろうか? まあいいや
はまり脱出への方法
なので.htaccessを使用してgzip圧縮されないようにしました
<ifmodule mod_gzip.c> mod_gzip_on no </ifmodule>
↓ここ参照
FLASH-JP.COM - フォーラム
このスレッドをさっさと見つけてればはまらなかったかもしれない
windowsXP(DSP版)インストールではまる
PC状況
・5年くらい前に購入したsofmapの牛丼パソコン
購入時はXPが入っていたがノリで「CentOS5」をインストール
その後、XPに戻したいがインストールディスクが行方不明なのでDSP版のwindowsXP(SP3)を購入
インストールしはじめるが おもいっきりはまる
僕の行った行動
CentOS5を下記のサイトを参考にfdiskで削除
※この際使ったCDは「CentOS-5.3-i386-bin-1of6.iso」をCDRに焼いたもの
Linux(CentOS)をインストールしているPCにWindowsをインストールする方法
その後、windowsXP(SP3)インストールディスクを入れてCDからBootするが下記のエラー
error loading operationg system
パーティションの削除がうまくいっていない様子?
そこで下記のサイトを参考に「DBAN」を使ってパーティションの削除を実行
@IT:Security Tips > ハードディスクの内容を安全に消去 - DBAN
「DBAN」にてパーティション選択画面では2つのパーティションが表示されていたと思う
とりあえず上の方を選択して削除を実行
これがちょー時間かかる
(なにこれ、おかしいのこれ?)
とか思っていたけど、
無事終了したっぽいのでリブートする
windows setup
おーうまくいったっぽい
そのまま進めてクイックフォーマットを選択し、無事インストール完了
flashdevelopをインストールした時のはまりポイント
とりあえず
独学ActionScript
とかを参考にインストールしてみるが、
結構はまった下記2点のエラー
The Path to Flash.exe is not configured properly. do you want to edit your program settings?
詳しくは↓参照(英語)
http://catfacegames.com/2009/02/12/flashdevelop-setup-error-the-path-to-flashexe-is-not-configured-properly/
英語見ると頭痛くなっちゃう人へ↓
●下記の場所がちゃんとSDKのフォルダを示しているか確認
Tools -> Program Settings -> AS3Context -> Flex SDK Location
例)C:\flex_sdk_4.0.0.7219
●下記の場所がちゃんとFlashPlayer.exeを示しているか確認
Tools -> Program Settings -> FlashViewer -> External Player Path
例)C:\flex_sdk_4.0.0.7219\runtimes\player\10\win\FlashPlayer.exe
●ProjectウィンドウからProject名を右クリック後、propaties... をクリック
・No output, only run pre/post build commands,にチェックが入ってるからチェックを外す
・Output file に適宜swfファイル名を指定する
・TestMovieを「Play in external player」に変更する(そうするとTestMovieを実行した時に↑のプレイヤーを使うのかもしれない)
これでエラーが変わると思われる
In order to build this project, you must mark the AS or MXML entry point as "Always Compile" in the project tree.
●Projectウィンドウからmxmlファイルを右クリックすると、「Always Compile」というそれっぽいのがあるからチェックしておく
これでコンパイル出来ちゃうと思われる
まとめ
適当にインストールしたからこうなったのか、
デフォルトの設定(F10)を調整しなければいけないのか、
そもそも毎回これらを指定するのがスタンダードなのか、
ワカラン!
うまくいかない場合はflexbuilderを買っちゃおう!(笑)
ヒアドュメントによる複数行の文字列を表示(Ruby)
今まで
print "<html>\n<body>\nafefe\n</body>\n<html>\n"
とか不効率かつ見難いことしていたのですが、
めんどくさくなったので調べた
print (<<"EOS") <html> <body> afefe </body> </html> EOS
こりゃ便利
メモメモ
今日もちょっとRubyしたらエラー
先日から参考にしているサイトの下記のカレンダー作成をぽちぽち作成してみた。
http://rubycgi.org/cgi_explanation/4-3.htm
完全にコピー(手打ち)したつもりがスクリプトが途中で止まる
そのソースが↓
(1..31).each do |day| itsday = Time.local(year, month, day, 0,0,0) wday = itsday.wday if day == 1 print "<td></td>" * wday elseif wday == 0 print "<tr>" end
ん??
ぱっとみ合ってそうなんだけど実は
elseif wday == 0
ここ「elseif」が間違ってて正解は
elsif wday == 0
「elsif」だった
という盆ミスなお話
だがしかし、
この部分を間違えたまま
ruby -c filename.cgi Syntax OK
とすると、画面の通りシンタックスOKになる
ど、どういうこと・・・
-cの使い方間違ってるのかな?
ruby -v ruby 1.8.5 (2006-12-04 patchlevel 2)
んー
困った
とりあえずRubyをCGIではじめてみた
なんでRuby
そのうちお仕事でRubyOnRailsの勉強をしないといけないようなので、とりあえずRuby構文をCGIでお勉強。RubyOnRailsやるっていってもRubyが分からないとお話にならなそうなので
※ちなみに僕はPHPだけちょっと分かるます
print関数でダブルクォーテーション内の変数の置き換え方法
たいとる難しいわ
Rubyだと#{hogehoge}ということで
tmp_text = "太い文字だよ" print "<b>#{tmp_text}</b>"
PHPだと
$tmp_text = "太い文字だよ"; print "<b>{$tmp_text}</b>"; # あんまり使われない? print "<b>${tmp_text}</b>"; # これもあんまり使われない? print "<b>$tmp_text</b>"; # これが多い?
んな感じ
文字列をhtmlエスケープしたい
Rubyだと
require "cgi" cgi = CGI.new print CGI.escapeHTML("<b>あはは</b>")
こんな感じらしい(もしかしたら無駄なことしてるかも)
PHPだと
echo htmlspecialchars("あいうえお");
かな
ただ、エスケープされる文字種が異なる
□エスケープされる文字
Ruby | CGI.escapeHTML() | ", <, >, & |
PHP | htmlspecialchars() | ', ", <, >, & |
すんげーわかりづらい表だけど、RubyのescapeHTML()はシングルクォーテーションがエスケープされないみたい。
なんかうまいこと出来るのかな?
ファイルの読み出し
Rubyだと
fh = open(FILENAME, "r") fh.each{|text| print text } fh.close
PHPだと
$fh = fopen(FILENAME, "r") while( ! feof( $fh ) ){ echo fgets( $fh ); } fclose($fh);
ざっくりこんな感じ?
参考サイト
□http://rubycgi.org/cgi_explanation/index.htm
→分かりやすい&見やすい
□プログラミング言語 Ruby リファレンスマニュアル
→Rubyのライブラリ - ドキュメント