会社のローカル環境をいちいち忘れるのでいちいち書くこととスルPART1

windows環境下

ruby 1.8.6
Rails 2.2.2
mysql ver 14.7 Distrib 4.1.22, for Win32 (ia32)

mysqlログイン

mysql -u root -p
いつものpassword [ENTER]

Railsのルート

C:\myname\works\hogehoge

WEBrickの起動

cd /rails_root
ruby script/server

プロジェクトの作成

cd /rails_root
rails hello

コントローラーの作成

cd /rails_root
ruby script/generate controller Disp

静的ページについて

ここに入れればとりあえず表示されるみたい
/rails_root/public

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 - フォーラム

このスレッドをさっさと見つけてればはまらなかったかもしれない

はまりへのまとめ

flash(swf)はブラウザ依存しないと思ってたけど、どうやら環境によっては依存してしまうこともあるらしい

やはり主要ブラウザでの確認は必須であることがわかった

またヘッダーについて色々調べてたから勉強になった部分も多く、結果的に得るものはあったかもしれない

まあこれでflexとサーバ連携したサービスが作れる土台が出来たのでよかった

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

おーうまくいったっぽい

そのまま進めてクイックフォーマットを選択し、無事インストール完了

まとめ

>※この際使ったCDは「CentOS-5.3-i386-bin-1of6.iso」をCDRに焼いたもの
これがまずかったのかな?

まあノリで「centOS」入れちゃった人は参考にしてみてください〜

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入門

今日もちょっと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だけちょっと分かるます

コマンドラインからSyntaxチェック

Rubyだと

ruby -c filename.cgi

らしい、

ちなみにPHPだと

php -lc filename.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);

ざっくりこんな感じ?

使用してみた標準ライブラリ

cgi フォーム関連
kconv マルチバイト関連

なんか参考にしたサイトだとcgi-libとかになってたけどcgiと何が違うんだろうか。

参考サイト

http://rubycgi.org/cgi_explanation/index.htm
 →分かりやすい&見やすい
プログラミング言語 Ruby リファレンスマニュアル
 →Rubyのライブラリ - ドキュメント

PHP使ってる人からみたRuby

ネットで検索してもあんまりよさげなサイトが引っかからない(PHPと比べると)
まあきっとRubyの公式ドキュメントが充実しているからPHPみたいに翻訳しなおしているだけのサイトとかが少ないのだろう・・・と

今回はファイルの読み書きをお勉強したけど、次はDB接続とかやってみようかなー