はてなキーワード: tomcatとは
※この記事に池っち店長を誹謗中傷する意図はなく、またゲートルーラーに対して悪意を持って不利益を被らせる意図はありません。
みな様ゲートルーラーを楽しんでおりますでしょうか。私はカードこそ持っていないものの、Twitterでたまに検索をかける等して楽しんでおります。
さて、私は数年ではありますが一応ITエンジニアという肩書で働いており、色々なシステムを見てきました。今回のゲートルーラーのデッキメイカー騒動はエンジニアの視点から見ると大変面白くなっている為、こうして書き残そうとした次第であります。
以下は全て推測となりますので、ご了承ください。
①4/13の状況
ゲートルーラーの公式Twitterから原因の第一報が放たれました。どうやら『DNSの登録・反映に時間がかかっている。』のだそうです。
私個人の感覚ですが、DNSの登録や公開は最後の最後、つまりサーバに資材(プログラム)を配置してTomcat等を起動し、ローカルホストからの接続が確認できた後にやる作業だという認識があります。何故なら、資材の配置をせずにDNSを公開した場合、ユーザが公開されたURLにアクセスしても『404』のエラーを返すだけになってしまうからです。※すみません、一般のWebサイトの公開には立ち会ったことがなく、間違っていれば言ってください。
ですのでデッキメイカーの公開はあと一歩のところまで来ていると認識していた人が多かったと思います。
ちなみに、9/9に公開された『デッキメイカー遅延の原因について、ご説明とお詫び』には資材を『gateruler.jp』にアップしようとしている画像が掲載されていますが、仮にデッキメイカーを『gateruler.jp』を同じドメインのURL、例えば『gateruler.jp/deckmaker』に作ろうとしていた場合は、そもそもDNSの登録は必要ありません。
②4/15~5/19の状況
ゲートルーラー公式Twitterから続報がありました。原因不明の問題でアップロードできず、専門家と解決にあたっているとの事です。
私はてっきり4/13の段階でもうサーバに資材がアップロード出来ていると思っていたので驚きました。
アップロードができないということはファイル容量の問題やネットワークの問題、サーバが起動していない等が考えられます。
③9/9 今回の騒動。
公式サイトに『デッキメイカー遅延の原因について、ご説明とお詫び』がリリースされました。
とても読み応えのある文章と共にスクリーンショットが数枚貼られています。大事な部分はレンタルサーバのサーバパネルと、その下のスクリプトです。
まず、『「アップロードしようとするとエラーを表示する画面が出る」というアプリケーションがAによって仕込まれていました。』とありますが、スクリプトを見るにこれが仕込まれていたのはデッキメイカーのアプリケーション自体ではなく、サーバに資材をアップロードするHTMLファイルです。ですがこれはおかしな話です。ゲートルーラーは『Xerver』と言われるレンタルサーバを利用しているとみられますが、このサーバパネルは『Xerver』が提供しているサーバを管理する画面と考えられるので、そこにスクリプトを忍ばせる余地は無いはずです。スクリプトを忍ばせるなら、このサーバパネル画面のHTMLをローカルに保存し、HTML内にスクリプトを記述して、そのHTMLをブラウザで表示する必要があります。画面にはURLが映っておりませんが、恐らくローカルにあるHTMLをそのまま表示しているからではないでしょうか。
もし仮に解決にあたっている専門家が居たとして、資材がサーバにアップロードできない問題を1ヶ月かけても解決できないのであれば、それは素人と言わざるを得ないです。そもそもローカルのHTMLを直接開いている前提からおかしな話なのですが、雑なスクリプトが仕込まれたこの画面を見て原因の切り分けを行わないエンジニアはほぼ居ないでしょう。
ちなみに『Xserver サーバパネル』で画像検索するともう少しリッチな画面が出てきます。不思議ですね。
※ここに書いている事は推測にすぎません。真実を知っているのはあの人だけです。
Emacsのカスタマイズにハマると幾らでも時間が消えていくと言われていたが、私はC言語でタブ幅の設定をするくらいだった。
Strutsの開発でTomcatのプラグインが要ると書いてあったのでEclipseにインストールするとか、会社の人からメールで送られたVimの設定をそのままペーストするとかくらいで積極的にカスタマイズすることは無く。
IntelliJやVisual Studio Codeの無数の拡張機能にも興味が無い。
シェルの設定ファイルを頑張るのは時間の無駄!という主張に共感したわけでもなく、普通に関心が無かった。
1990年代からコンピューターを使っているにもかかわらず……
急に凝り出した。「Emacs Lispっていうプログラミング言語でいろいろできるのか」「Visual Studio Codeのマーケットプレイスには同じファイルを対象にした拡張がいろいろあるな」と、今更。
なぜ。
カスタマーサポートからjavaを解析するチームに転属になった
これまで前職で7年くらいSIerでjavaいじってきたけど、表面上をいじったり設定を変えたりしたたけで、全然スキルにならないことはわかっていた
だから転職してカスタマーサポートになったのに、カスタマーサポートの中では多少コードが読める、というだけで転属になってしまった。
java+tomcat+postgressqlというまーたぶんOSS使うなら標準的な構成だと思うんだけど、
tomcatの外にあるcontext.xmlじゃなくてjavaプロジェクト内のcontext.xmlの設定を変えただけでなんでDBの見る先が変わるんだろう?
eclipse内にあるtomcatってwindowsで普通にインストールするtomcatとどう違うの?
そのへんも分からないし、手順書通りにやっても動かないこともストレス(これはpostgressqlをインストール済みの環境でリストア済みのDBがあること前提で手順書が書かれていることが後に分かった👍️)。
このITのなぜ?に一つ一つ答えられる人がいなくて前職辞めたのに、みんな忙しそうで聞きづらい。
みんなどうやって一から環境構築してるんだろ?構造わかってるから出来てるんだよね...。
設定変えたら動くからそんなもん、て言われたらそれまでなんだけど。
きっとこうやって割り切れなさを抱えてるから仕事遅いと思われてるし、気ぃ遣いで優しそうだと思われてるかもしれないけど、ほんとは一から十まで最初から教えてくれないと分からない頭悪い人だと自分では思ってる。
きっかけと構造さえ掴めれば応用きいたりするんだけど...知識欲もあるし誰か教えてほしい。学校にいくか、本を買って読まなきゃなーって思ってるところです。
人に聞けない俺はその方向で合ってるのかな?
最近はGoが流行っているが、それならJavaだって同様に良さそうな気がする。
- nullがたまにうざい
- なんか重厚な感じがする
- ORMとかが重厚なのが多かった
- 故に環境構築が大変だった
- strutsがしんどかった
- xml地獄からアノテーション化したりいろいろと模索していた
- ちょっと昔には「俺たちイケてるプログラマ」はみんなRailsに移っていった流れがあった?
- Effective Javaよいが、そもそもそういうtips意識せずにそう書けるような言語仕様になってほしかった気もする
- 非同期処理やスレッド処理がやや難しかったか、あるいは言語側でのサポートが薄かったか(?)
言語仕様的な批判と、エコシステム的な批判に分けられそうなきがするな。
関数型言語の関心はScalaやClojureに全フリしてもらって、Javaはシンプルな機能を持つGoの方向性なModan Javaになっていってくれれば良さそうな気も。
httpサーブレットとかそのへんが微妙だったかもしかして。Goみたいにnet/httpライブラリが標準であればそれをベースにすることでオレオレフレームワークの乱立を避けることができるか、と思ったけどJAX-RSとかがあるな。
Goだって冗長な記述が必要な言語だが、好かれているし、Javaも悪くない言語な気がするんだよな。
まあ何でもいいが。
ロジカルに考えているようで結局なところ雰囲気的なところに左右されているエンジニア多い気がする。
まあわいも、人気な言語に乗っておいて高単価を得られたほうがいいのでそうするが。今の所Goが肌にあっているんだよな・・。3年ぐらい使って熟練度上がってきたし、さほど悩まずにコーディングすることができる。
PHPの人が好きな、あるいはRubyのmethod_missingなど活かしたテクいコードは、書いているやつは気持ちいいかもしれないがわいは明示的にinterfaceがわかるコードが書かれていたほうが好きだ。型で振る舞いがわかったり制御されていないと分かりづらくない?複数のプロジェクトを掛け持ちするから、読むときに前提知識が少なく読めるコードがいい。
まあJavaもリフレクションでテクいことができる気がするな。
Goがいい。誰が書いてもだいたい同じコードになるから、誰かに作業を振ったとしてもレビューしやすい。
まあこれからJavaを書く気はしないが、GoでAPI書いているマンから見ると、JAX-RSとかでゴリゴリAPI書いていくの全然悪くないんじゃないかと思うのであった。
最悪別にGeneric入らなくてもいいかもな。別にそんなに困ってない。はいってくれるなら、はいってくれたほうがいいが。sliceに対してmap, each, filter, existsなどのメソッドが生えることになるイメージかな。まあそれは欲しくなるけどな・・・。
Scalaもいいんだが、たまにイキったコードを書くと分かりづらくなる時がある。イケてるコードを書こうと思ったとき、結構パワーを使う言語だ。なんかモナドってジェネリックを更に強くしたやつだとも捉えられるような気がするな。ゴリゴリ関数型で書こうと思った場合、プロジェクト全体に影響がある話なのでアーキテクチャ設計に力がいる気がする。
年をとると大事にするポイントが変わってくるな。昔はスーパープログラマになりたくて関数型言語とかやっていたが、今はいかに効率よく仕事をする=金を稼ぎ自由を得るかを重視している。職業プログラマとなったわけだ。仕様固めたりリリースしたり不具合対応したり運用したり、フリーランスなら税金計算したり、金儲けの方法考えたり忙しいんじゃ。今は結局スーパープログラマとは何か悩ましいよ。「プログラマとして」キチガイレベルにすごい人間というのはまだ見たことがないかもしれない。コーディングが早い?バグ修正が早い?パフォーマンスのやばいコードを書ける?設計が優れている?
逆に客先のサーバにPythonやらRubyは入ってないからダメだ(非常に残念ではあるが)。
というのも昔の話で最近はクラウドサーバの流行でPythonやらRubyも多少使うようになった(なぜ自社内のサーバに新しいものを入れるのは渋るのにクラウドサーバだと渋らないのかは不思議だが)。
その昔どこぞのレンタルサーバがデータをぶっ飛ばしたという事件もあったので慎重になるのも分からないでもない。
結論としてはJava、PHP、Apache+Tomcat、IIS、ASP.NET、JavaScriptに多少の心得があれば食っていけるしRubyとか仕事で使う言語としては絶対に流行らんと思ってたんだけど、そうでもなくなってきたのかなあと思っただけ。
「ローカルに仮想環境たてて開発するとマシンスペック足りない人いるから
みんなで一緒の開発環境上で開発しようね。
→ アホですか?
「Gitは使い方難しくて工数増えちゃうからSVNでソース管理しようね。
ソース触るときは他に開発中の人いないかチャットで確認してね。」
→ アホですか?
あとで検証環境と本番環境でも同じ手順で構築するからコマンドまで細かく書いてね?
chef?ansible? itamae? 自動化するとミスがあったときにハマっちゃうからね。
手動が確実だよ。」
→ アホですか?
「Java8?使ったことないから不安だね。今回はJava7で行こうか。実績あるから安心だね」
→ アホですか?
「JavaEE?使ったことないから不安だね。今回は大規模案件だから使いなれたJavaSEにしよう。
→ アホですか?
「設計書書くときは知識がない人がみてもわかるように書こうね。
もちろんExcelで書いてね。更新するときは更新履歴シートに更新内容書いてね。
ファイル名は日付をちゃんと書くこと。更新したらチャットで報告してね。」
→ アホですか?
こんな会社は僕のとこだけだよね?
GitHubの謎生物が気になり、せっかくなのでIT界隈の動物(?)を用いた名前やロゴの由来など調べてみた。
※追記あり:Gopherファンに襲われそうなので。ごめんねGopher君
Q.どうしてタコなのに8本足じゃないの?
A.なにも考えずに描いたからね!
もともとデザイナーはoctopussと呼んでいたが、いくら訂正してもGitHubの社員がoctocatと呼ぶため、octocatで落ち着いた。
octocatはあの生物種の名称であり、monalisaという名前は社員の娘が学校の課題で名付けたもの。
種類:ニシキヘビ
名前: -
イギリスのコメディ番組『空飛ぶモンティ・パイソン』より。
またPythonという英単語はニシキヘビを意味するため、マスコットとしてヘビが用いられる。
オライリーの本とかすごい表紙だよね。
種類:ゾウ
種類:ゾウ
名前:slonik
「動物のロゴにしたいなら、象なんてどうだい?アガサ・クリスティの小説にもある『象は忘れない』だ」
― PostgreSQL発足時のメーリスより
種類:ゾウ
名前: -
象は記憶力が非常に優れた動物のため。PostgreSQLと同じで、象の優れた能力にあやかっている。
種類:ヌー
名前: -
種類:キツネ
名前: -
もともとPhoenixという名前だったが、商標権を侵害していたので、公募でFirebirdという名前に決定。
しかし今度はDBに同じ名前があったので、Firefox(レッサーパンダの別名)に改名。
みなさん命名は慎重に。
種類:クジラ
『白鯨(Moby-Dick)』より。クジラを採用した理由はデザイン見れば納得。
種類:ペンギン
名前はタキシード(Tuxedo)を着ているように見えるから。
ロゴコンテストで決定されたが、他の作品を見ればなぜ選ばれたのかよくわかる。デザインって大事。
https://www.cs.earlham.edu/~jeremiah/linux-pix/linux-logo.html
種類:鳥
名前:ラリー・バード
名前はNBAのラリー・バード選手より。社員がファンだったらしい
ちなみに初期のTwitterのデザインはGitHubのデザイナーが手掛けたもの。すごいっすね。
種類:シーサー
名前: -
種類:イルカ
名前:Sakila
種類:ネコ
名前: -
オライリーの本に載ることを考慮して動物をマスコットにしようと考え、「自立した強かさ」を持つという意味でTomcat(雄猫の愛称)を採用。
しかし、猫はオライリーのUML本で使われてしまい、念願のTomcat本にはユキヒョウが使われたという…。
種類:Dogcow(イヌ+ウシ)
名前:Clarus
昔々、Mac OSで用紙の向きや色を表示するために使用されていたらしい。
知らんわ。
種類:ウサギ
名前:Glenda
OSの名前である「Plan 9~」はエド・ウッドの『Plan 9 from Outer Space』に由来。
ウサギの名前であるGlendaはエド・ウッドの『グレンとグレンダ』に由来。
どんだけエド・ウッド好きなんだよ。
ニュージャージーのWFMUラジオで、Renee Frenchによって宣伝用のTシャツに描かれたのが、彼の初登場。
その後、Bell labsのメールシステムでアバターとして起用もされた。
(ちなみにReneeはBell labsのGlendaを描いた人。Glendaもアバターの一員だった)
そうして2009年、Goプロジェクトが発足し、ロゴを検討していたメンバーにReneeが無償で描いてあげたのが「Go gopher」である。
みんなGo Gopherと呼ぶので、特に固有の名前は無いらしい。
由来は下記サイトにありました。
MSSQLだったのがMySQLになって新たにTomcatとMyBatis、Springを使うようになった
Frameworkがガラッと変わってとても使いづらかった。ASP.NET使ったら簡単にできるようなことを
上手く動かなくて面倒くさかった。こんな使いづらい言語だれが使うんだ!?とか普通に思っていた。
Java自体というより実質標準になっているFrameworkが面倒くさい
設定ファイルが多すぎ。意味不明過ぎ。あとエラーログが正確じゃなくてがわけわからん。
正式のドキュメントが充実してない。一般のブログに頼る必要がある。
Eclipseも使い始めたけど、DBViewer使いづらい。やっぱMicrosoftと比べるとヒドイね。
DBViewerのスクリプト書くところで選択した領域だけ実行したいんだけど、どうやんだ、これ。
Eclipseも使いづれー
でも人口多いんだよなーJava。なんで使ってんだろ。みんな。Microsoftに比べて安いからか?
品質と使い勝手を天秤にかけてもJavaを使いたくなるようなものか?
まぁ、一回Frameworkの仕組みを覚えたら案外使いやすいかも、とも思う。
あと、Update期間めちゃくちゃ長いですね。Java6,7,8って10年ぐらいかかってんじゃないですか。
何が良くて使ってんだろみんな。
>「Pythonしか使えませんがPythonなら極めてます」
>と胸を張って言える人のほうが重宝できる
今どきAjaxもないレガシーなWebアプリ作ってる人ですか?
1つの言語に強いのはいいことだけど、その枠内でしか考えられないから発想の飛躍ができない。
それにWebアプリはサーバサイドのプログラムだけじゃなくミドルウェア(Apache, tomcat, RDB, KVS etc)や
インフラ(ネットワークや物理的なサーバ)が組み合わさって1つのwebアプリを構成してるんだから、JavaやPHPだけできたってなんの意味もない。
Eclipseがemacsやvimより優れている点を挙げてみよう。
・CVSリポジトリの構成を直接覗ける →redmineとかを使ったほうがいいんじゃないのか
・設定できる警告メッセージの種類が豊富。→警告そんなにいるのか
・復元機能が非常に充実している。 →バージョン管理ソフトがあれば普通だし
CVSのように以前の状態に復元すること、以前の状態の →diffじゃダメか、というかなんでいまどきCVSなの
ソースコードとの比較も容易。CVS(Eclipse標準装備)/Subversionプラグインにもこの機能は存在する。
・プラグインの数が豊富、膨大。 → 数があってもつかえるのは少ない
・プラグイン開発環境もEclipse自体に用意されている。 →開発環境を使って作る程のものでもなく、バッチファイルとかスクリプトでよくね
・ライセンス形態がCPLであり商用利用もしやすい。 →eclipse組み込んで出荷するの?
・上位版にWSADが存在する。 →WSDADってなに、WebSpereの残骸?
・Smalltalkで有名なVisualworksの影響を受けているため、
JUnitプラグイン(Eclipse標準装備)によるテストファースト、リファクタリングの他、eXtreme Programming環境が充実している。→Jenkinsのほうがよくね
・SubclipseプラグインによりSubversionにも対応できる。これはCVSよりも強力!→コマンドラインから実行するsvnコマンドを覚えておくとはターゲットでも動いて便利だよ
・Call Hierarchyプラグイン(Eclipse3.0から標準装備)によりメソッドの呼び出し階層を調べることができる。この機能は強力だ!→スタック見るだけのことじゃないの
・プラグインによってはURLを指定するだけでプラグインの自動ダウンロード、自動インストール、
自動アップデートができるためプラグインのインストールが非常に容易。→勝手に変わったら怖くない
・Eclipse上から直接Tomcat, JBossなどを再起動できるSysdeoプラグイン、JBoss-IDEプラグイン
という強力なプラグインが充実している。→えー、今頃Tomcat
・EclipseUML Omondoプラグインによりクラス図などを書いたり、
UMLによるModel Driven Architecture, リバースエンジニアリング
・RSSリーダープラグイン、MP3プラグイン、All The Newsプラグイン、
など様々なプラグインが充実している。→それ開発ツールじゃなくて携帯でやったほうがよくね
・PHP開発が可能なTruStudioプラグイン、Perl開発が可能なPerl E.P.I.C. プラグイン、
C/C++開発が可能なCDTプラグイン、AspectJ開発が可能なAJDTプラグインなど
他言語プラグインが充実している。→Java以外は所詮おまけだけどね
・そのほかにD言語プラグイン、C#プラグイン、Pythonプラグイン、JavaScriptEditorプラグイン、
CSSプラグイン, HTMLプラグイン, XMLプラグイン、(Jakarta)Velocity UIプラグイン、
Apache Antプラグイン(Eclipse標準装備)、非常に強力なApache Mavenを使うことができるプラグイン、
ゲームができるプラグイン、メーラとしてつかえるプラグイン、Wikiプラグイン、Hibernateプラグイン、
FindBugsプラグイン、CheckStyleプラグイン、Jalopyプラグイン、Sobalipseプラグイン、ソロプログラマープラグイン、
など様々なプラグインが充実している。→それぞれ単機能のソフトのほうが充実してるんじゃないの
どうしてもeclipseというなら止めないけど
Eclipseがemacsやvimより優れている点を挙げてみよう。
ソースコードとの比較も容易。CVS(Eclipse標準装備)/Subversionプラグインにもこの機能は存在する。
・上位版にWSADが存在する。
・Smalltalkで有名なVisualworksの影響を受けているため、
JUnitプラグイン(Eclipse標準装備)によるテストファースト、リファクタリングの他、eXtreme Programming環境が充実している。
・SubclipseプラグインによりSubversionにも対応できる。これはCVSよりも強力!
・Call Hierarchyプラグイン(Eclipse3.0から標準装備)によりメソッドの呼び出し階層を調べることができる。この機能は強力だ!
・プラグインによってはURLを指定するだけでプラグインの自動ダウンロード、自動インストール、
自動アップデートができるためプラグインのインストールが非常に容易。
・Eclipse上から直接Tomcat, JBossなどを再起動できるSysdeoプラグイン、JBoss-IDEプラグイン
という強力なプラグインが充実している。
・EclipseUML Omondoプラグインによりクラス図などを書いたり、
UMLによるModel Driven Architecture, リバースエンジニアリング
などを即座に実現できる。
・RSSリーダープラグイン、MP3プラグイン、All The Newsプラグイン、
など様々なプラグインが充実している。
・PHP開発が可能なTruStudioプラグイン、Perl開発が可能なPerl E.P.I.C. プラグイン、
C/C++開発が可能なCDTプラグイン、AspectJ開発が可能なAJDTプラグインなど
・そのほかにD言語プラグイン、C#プラグイン、Pythonプラグイン、JavaScriptEditorプラグイン、
CSSプラグイン, HTMLプラグイン, XMLプラグイン、(Jakarta)Velocity UIプラグイン、
Apache Antプラグイン(Eclipse標準装備)、非常に強力なApache Mavenを使うことができるプラグイン、
ゲームができるプラグイン、メーラとしてつかえるプラグイン、Wikiプラグイン、Hibernateプラグイン、
FindBugsプラグイン、CheckStyleプラグイン、Jalopyプラグイン、Sobalipseプラグイン、ソロプログラマープラグイン、
など様々なプラグインが充実している。
色々教えてください偉い人。
自分で考えろってのはご尤もですが、色々な方の意見が聞いてみたいのです。
・Struts(ver2じゃないほう)上でのJava(max2000行程度)
・perl(max7000行程度)
・c/c++(ちょっと)
・Haskell(ほんの少し)
・VisualBasic(.NETじゃないほう)(ほとんど忘れた)
・HTML/CSS(セマンティック厨)(HTML5は勉強中)(バイトでWEBデザイン経験有)
・javascript(簡単なものなら)
・MovableType(CMSとして利用。ちょっとした企業サイトレベルくらいのものの構築。簡単なプラグインの作成とかも)
・Apache(セットアップと最低限の設定くらい)
・Tomcat(同上)
・Linux(CentOSとUbuntu。セットアップとちょっとした設定程度)
・AdobeのDTP系製品(CS2)(雑誌編集経験有、ただし学生レベル)
・Oracle(10g)(Bronzeレベルの知識とちょっと触ったことがある程度の経験)
・postgreSQL(ちょっと触ったことがある程度)
・会計関連の知識(日商簿記2級)(大学で管理会計をかじった)
・数学系の知識(論理とか集合やらの基礎。大学で計算機科学をかじった)
・印刷物/WEBサイトのデザイン(独学だけどそれなりに。一般人よりはそれっぽいデザインが作れるかと)
Tomcat上のJRubyから呼んだJavaプログラムから呼び出し元のJRubyの環境(Runtime)を使いたいときにどうすればいいのか?
方法が1つわかったのでメモ。
(追記2:こんなめんどいことしなくてもJRuby.runtimeで取れたみたい)
イメージ的には以下の感じ
↑↓
↑
JRubyは1.4.0、jruby-rack.jarは0.9.7、warblerは1.0.1
まずは必要なクラスをimport
import org.jruby.Ruby; import org.jruby.rack.PoolingRackApplicationFactory; import org.jruby.rack.RackApplication; import org.jruby.rack.RackServletContextListener;
ServletContextをどっかから取ってくる(Listener作ってfieldに埋めるとかして)(追記:$servlet_contextで取れる[JRuby-Rack使うから])
ServletContext context;//=~~~
warblerでwar化するとweb.xmlにRailsServletContextListener(extends RackServletContextListener)が登録される。
そのListener起動時にFactoryがServletContextに登録されるので、それを取得する
PoolingRackApplicationFactory factory = (PoolingRackApplicationFactory)context.getAttribute(RackServletContextListener.FACTORY_KEY);
PoolingRackApplicationFactoryのapplicationPoolを取ってくる
(protected fieldなのでリフレクションを使用)
Field poolField = factory.getClass().getDeclaredField("applicationPool"); poolField.setAccessible(true); Queue<RackApplication> pool = (Queue<RackApplication>)poolField.get(factory);
RackApplication ap = pool.peek(); Ruby ruby = ap.getRuntime();
呼び出しもとのJRuby環境を使ってRubyコードを実行できる
ruby.evalScriptlet("p 'test'");
結構苦労したので健忘録として。。
環境は以下のとおり
yum install mysql-server
/etc/init.d/mysqld start
mysql_secure_installation
jruby -S gem install rails jruby -S gem install warbler jruby -S gem install activerecord-jdbc-adapter jruby -S gem install activerecord-jdbcmysql-adapter jruby -S gem install jdbc-mysql
mysql -u root -p mysql> create database redmine character set utf8; mysql> grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'redmine'; mysql> exit
(任意の場所にRedmineを解凍して、解凍先のディレクトリに移動した後)
cp config/database.yml.example config/database.yml vi config/database.yml
database.yml
production: adapter: jdbcmysql database: redmine host: localhost username: redmine password: redmine encoding: utf8 #development: # # #test: # #
後のwarbleでのエラーを防ぐため、developmentとtestをコメントアウト
jruby -S rake generate_session_store jruby -S rake db:migrate RAILS_ENV=production jruby -S rake load_default_data RAILS_ENV=production
script/serverで起動し、http://localhost:3000 にアクセスして正常に動作するか確認する
jruby script/server -e production
vi config/environments/production.rb config.logger = Logger.new(config.log_path) config.logger.level = Logger::INFO
warble.rbを生成
jruby -S warble config
warble.rbを修正
vi config/warble.rb config.dirs = %w(app config lib log vendor tmp extra files lang) config.gems = ["jdbc-mysql", "activerecord-jdbcmysql-adapter", "activerecord-jdbc-adapter"] config.gems["rails"] = "2.3.5" config.gems["rack"] = "1.0.1" config.webxml.rails.env = "production"
jruby -S warble
できたwarファイルをTomcatに配置して、Tomcatを起動する
mv redmine-0.9.3.war /usr/local/tomcat/webapps/redmine.war /usr/local/tomcat/bin/startup.sh
warblerのバグ(?)でwarに入らないファイルをコピーして入れる
cp vendor/gems/rubytree-0.5.2/.specification /usr/local/tomcat/webapps/redmine/WEB-INF/vendor/gems/rubytree-0.5.2
ところでなんだが、staxってとこがAmazonのEC2サービス上でTomcatを無料開放しているらしいのだ。
http://jp.techcrunch.com/archives/20081216stax-networks-launches-google-app-engine-for-java/
で置いた。
http://db-view.johannes.staxapps.net/
ソースはここ
http://code.assembla.com/dmcsystemservice/subversion/nodes/db-view/trunk
これ作ったころはGUIの閲覧ツールってAccessとかしかなくて、結構好評だったのだが、今はフリーのクライアントソフトがいっぱいでもう、俺の出番おわったわ。
まずJavaを入れる。
http://java.sun.com/javase/ja/6/download.html
で、eclipseを入れる。
http://www.eclipse.org/downloads/
で起動してみる。
が。。。。起動しない。
でggr。
となんかeclipse.iniがおかしいらしい。
http://ajiblog.sblo.jp/article/17157448.html
おっきした!!
でアカウントをとる。
http://code.assembla.com/dmcsystemservice/
http://www.atmarkit.co.jp/fjava/rensai3/eclipseplgn15/eclipseplgn15_1.html
subversiveも使ってみたいなぁと思ったが、ここでeclipseがバシバシ落ちる。
eclipse.iniのXMXオプションをいじるがOutOfMemoryやら、libeay32.dll 序数が見つかりません。とか
秩序ってなんだよ。英語でそのままいってくれ。余計わからん。
でなんか、負けた気がしたが、Javaを5に落とすことにした。
http://java.sun.com/j2se/1.5.0/ja/download.html
XMXを768Mにして起動すると、落ちなくなった。
が、相変わらず、秩序が見つからなくなる。秩序って何。膣女?
こっちのsvnプラグインのほうがいいのかも。。来年やろう。そのうちやろう。ゆっくりしていってね!!
http://server.seasar.org/manual/install_subclipse.html
http://d.hatena.ne.jp/yuroyoro/20081222/1229922781
楽勝だ。
で、また動かない。
で、動いた。が、履歴機能が動かない。
で、ソース修正。
ObjectInputStream、OutputStreamを使っていたのだがXMLEncoderとDecoderにした。
http://www.utj.co.jp/xml/dev/java/dxjava_7.html
ぉ。こんな便利なのが1.4からあったのか。
おもえば、これを最初に作った時は1.3だった。LinkedHashMapがなくてArrayList内包したMapを作っていた。
が、そんなのいらんので消した。で、履歴保持クラスもXMLEncoderからリフレクトできるようにガバガバにプロパティをさらした。
そしたら、動く。履歴機能が動く。
ぉぉ。では早速、svnにあげよう。
で、eclipseのsvnクライアント。相変わらず膣女が見つからないらしい。
去年だったかな、女の子にipodの音はどうやって大きくするの?と聞かれて、右にくるくる。と答えると、
あ、大きくなった。今度、のび太くんのもまわしてみよう。と言われた。
あれから右にくるくるされてない。泣きたい。あの娘は膣女だった。
そんなことを思いながら、エロサイトに誘導されて一回休み。eclipseを落とす。
http://pics.dmm.co.jp/digital/video/h_155tdjk00001/h_155tdjk00001pl.jpg
で、eclipse再起動。svnクライアント。相変わらず膣女が見つからないらしい。
おれくらい帰国子女になれば、英語のメニューのほうが調子がいい。
と思っていたが、svnクライアントだけ微妙に日本語化されている。
が、肝心なところが英語だ。よくわからん。CVSと一緒だろ。と思ってUpdateしたら、ソースが消えた。。。
LocalHistoryから復元しようと思ったのだが、まんどくさい。
staxにDeployしたやつを再度ダウンロードしたら元に戻った。
びっくりした。バックアップソフトでクラッシュする。そんなことも初心者には、おうおうにしてある。
だからバックアップのバックアップ(ryで無限ループにはまるシステムも少なくない。
あきらめが大事だ。ある程度であきらめないとキリがない。
で、再度svnクライアント。今度はCommitをちゃんと選ぶ。
が、明らかにUploadしていない。で、終わると、いくつかのファイルのアップロードはキャンセルされた。とかでる。
で、再度svnクライアント。またまたCommitをちゃんと選ぶ。
ぉ。今度はうまくいく。あきらかにさっきより時間がかかっている。WireShirkで見てないが、あきらかにsvnサーバーにソケットをはっている。
http://code.assembla.com/dmcsystemservice/subversion/nodes/db-view/trunk
ぉぉ。あがっている。
さてタグを設定して、ブランチを作ってみたいみたいが、壊れそうなので怖い。いつからか大人の恋に臆病だ。
XMLEncoderの入出力をBufferedにしようと思ったが、もういいや。
で、寄り道している間に、こんなのを今更発見した。
http://tuigwaa.sandbox.seasar.org/index.html
これだ。俺が欲しかったのはこれだ。
これぐらい楽勝じゃないと、プログラマはわりに合わない。
さっそく落とす。
が、動かない。誰のせい?それはあれだ。また奴だ。。。
もういい。まんどくさい。この金髪ブタヤロウ!!しね!しね!しね!と誰かにメールしたいが、やめておこう。
ほぼ年齢が変わらん増田です。こんばんわ。
あなたは贅沢を言ってますよ。正直自分でファイル構成を書いて、コンパイル環境やテスト実行環境やサーバー立てだって大変なのにチームでやるとなるとはっきり行ってああいう統括してくれるものがないと無理です。少なくともマッピング書いてみんなが理解してくれるのは物凄い事ですよ。
ずっとWeb何それおいしいの?っていう、過去の遺産を改修していく部署につっこまれてたので最近になって初めてStrutsとかTomcatとか触って感動。
なんて管理が楽なんだろう。開発環境作るのにこれだけでいいなんて!
と、素で涙が出そうでした。チーム間のやり取りも良好です。
ま、やめるんだけどね。
最初からこの部署にいたら幸せだったろうなと本気で思う。
犯人が分かったよママ。開発効率が悪いのは商用のAPサーバーのせいですよ。EJBの仕様のせいですよ。あ、もちろん、仕様がおかしいとか、コーダーの質が低いというのは抜いて考えてね。
これを読んでる人たちはわかると思うけど、Tomcatとかで開発してればちょっとソースコードかえたらすぐ動かせるじゃん?メソッド追加したりしたら、再起動かけなきゃいけないけどさ、すぐに再起動出来るじゃん?待っても10秒かかるかかかんないかでしょ?声を大にしていいたいけど、商用のAPサーバー共は再起動に数十秒から数分かかるんですよ?そりゃね、再起動の必要がないような修正だったらさ、10秒ちょいで使えるようになるけどね、正直そんなに待ってらんないんですよ。そりゃEJBの仕様をうまく使えばそれなりの部分を補えるかもしれないけどさ、開発中にどれだけの回数再起動すると思ってんの?開発効率もそうだけど再起動効率をもっと考えた方がいいよ。まぁ、そういうAPサーバーで開発した場合の体感待ち時間比は、
それとさ、EJBとか使うとさいろーんなことができるのよ。でもね、できること多すぎるのに、実際使う機能って実はその中の1/100(感覚ね)くらいだったりするわけ。それってものすごーくたくさんの設定の中から必要なものだけを見つけ出して設定するのよ。まぁいっちゃえば、設定をプログラミングしてるみたいなもん。だからね、EJBの機能を使ってるだけだから自分たちでコードを書いてないわけじゃない。これで勘違いする人が多くて、その分のテストが必要ないとか、設定してあるだけだからAPサーバーを信用すればいいとか勘違いする訳。つか設定をプログラミングしましたよ?なんでその設定が間違ってるかどうかを検証しないでいいんですかと小一時間問いつめたい。
そんな重量級の仕様を把握してなければ使えないようなものは使わない方がいいと思う訳。例えばね、商用のAPサーバーを使う理由として、バグがあったときにサポートを受けられるからっていうのをよく聞くんだけどさ、そうそう簡単に問い合わせ出来ないよね?そうすると内部の仕様を推測して動かすよね?効率悪いよね?ていうかさ、設定があってるかどうかもサポートの人はわからないんだからさ。だったらオープンソースの方が自分で中身見れるし、そこまで深くないし扱いやすいじゃん。法律のことはよくわからないんだけど、APサーバーのバグで損害がでたらAPサーバーを出してるところの責任になるのかな?そうだったら使う意味はあるかもね。それでもそんなに重くなくていい。むしろTomcatをどこかが責任持ってくれればいいよ。
Railsとかさフレームワークでどれくらいの開発効率で差がでる!!とかいってるけど、APサーバーでの開発効率にもっと目を向けてもいいんじゃない?むしろAPサーバーをだしてるところは、そこで勝負するといいと思うんだけどな。むしろ、商用なんだから再起動にかかる時間を1秒くらいにしてほしいもんですね
______________
ちょっと番外編
あぁ、そうかー。仕事で開発をやってるWebシステムのPGがのびにくいのはそういったAPサーバーでしか開発をしたことがないってのもあるのかもね。だって普通の言語を勉強する場合だと、すぐにコンパイルして実行出来るからたくさん経験がつめるけど、そういった重量級のAPサーバー上でばっかり開発してる人だと、反復するのにすごいコストがかかるもんね。そりゃ伸びにくいよね。
芸術性って・・・。
だったら言語から作れよ。
芸術性は見る人に訴求するものがあり、人によって解釈が違う。そういう定義の言葉だろ。
素敵すぎるだろそんなソース。
芸術をも感じさせるソースを見て、どうやったらこんな独自進化を遂げられるんだよと何度ヒザをついたことか…。
人を満足させるために作るのか、自分が満足するためにつくるのか。
自分を満足させるために作り出したものが結果的に人を満足させるということは殆どない。
だって最初のスタート方向が違うんだもの。
コーディングにポリシーはもっていてもいいとおもうけど、そのポリシーがアクションの枷になっているのだったら本末転倒だとおもうな。
どんな立派な機能があるクラスだろうが最初で弾かれて落ちてこないだったら意味ないじゃーん。
というかApp Engineってなに?
つかって何かやりたいとまだ思えてこない以前にApp Engineがまだ未チェック。
PythonはGMOの証券会社が外部APIを公開したのがPythonだった。うんこだった。
勉強するには至らなかったが、そんな特殊だったという印象はもってないな。
plのcgiがあって、そっからasp,jsp,cfmという時代をえて、
php5,RonR,Pythonとかになってきているわけだが、時代は違えどひとつ覚えておけば学習コストっていう意味は殆どかわらないと思うよ。Oracleを覚えてからSQL-serverにいこうがpostgresqlにいこうがmysqlにいこうが一緒みたいなもの。
後継に位置するものであれば必ず似た機能はある。
むしろiis-ocxとかtomcat-Servletとか、ns-ldapとかそういう周辺が違うのであって、
基本的な部分に収まっているあいだは殆ど一緒じゃない?
今の時代みたいに殆どがApacheごにょごにょしただけで動く時代ならphpもRonRも殆ど変わらないと思うな。
所詮LL。
いまだってデータ処理はDBに任せたり、画面だってjavaなりFlashにまかせるじゃん。
LLがクラスに対応したときはおお!!と思ったし、どんどん進化しているのは感じる。
そんな感じで、どんどん面白いのがでてくればいいとおもう。
言語なんてこだわりもって選らんだところで変遷は激しいよ。
コールドフュージョンがどれだけすばらしいかについてプレゼンしてた坊を思い出すたびに涙を禁じえない。
いい音楽が売れるんじゃない。
話題になる音楽が売れるんだ。