まさかの日記

最近まともな文章しか書けなくなってきました

カテゴリ:技術系もろもろ > プログラミング

それでどうこうしたいというのもないけど。

結局その辺を素通りする人生だったので、ちゃんとやっときたいかなと


本屋に行ったらPythonの本ばっかりでビビった
あとpuppeteerの本があったのには驚いた





だなあと

一つ前のやつだと発熱がけっこうすごい ipadで発熱するっていうイメージがあんまりなかったので以外 電池の減りも速い気がする このへん最新のiPad miniだとどうなるか非常に楽しみなところ


黒田さんの本を見ながら、さくらインターネットのクラウドサービスにsshにログインしてdocker起動したりして遊びたいなと


普通に動く。ていうかもう完全にWorkspaces上で生活しているに近い

自分の場合 nickname: Fakeymacs という、Emacsキーバインドの設定集を配ってくださっているもの のままでOK。

なおemacsモードのON/OFFは、 Control + Shift + Space

keyhacのショートカットを shell:startup においておく。

スクロール上下は Control + v / Meta + v


(2021/09/25追記)
ここが参考になるようだ
GitHub - smzht/fakeymacs: Emacs-like key bindings for Keyhac
https://github.com/smzht/fakeymacs

って、思ったけどkeyhacじゃなくてautohotkeyをPythonとかで書けるようなのは無いのかと思ったら普通にある(autohotkey rubyでググるだけ)。
autohotkeyは独自言語っぽいなにかに進化してきたもののようだ。
GUIとかも作れるようだ

これは良い

某アプリのソースもまあまあすぐ動かせた。

dllとかの依存関係とかが若干めんどくさいし、webアプリのホームディレクトリってどこやねん、みたいなハードルは若干あるけど、nokogiri入れようとしてハマる、みたいなのに比べたら全然楽だし。

機械学習とかみてたけど、一周して戻ってきた。react-railsプラスwebsocketでプロト作ってたけど、ポーリングで充分かも。。

みたいな事書いとかないと、自分が何やってたかすぐ忘れるんで。

■GitHub ・ Build software better, together. ▽https://github.com/tokuhirom/avans/blob/master/README.md


■GitHub ・ Build software better, together. ▽https://github.com/tokuhirom/tinyorm/blob/master/README.md


この辺らしい。あと普通にWebAPIとかangularとか。



この辺も読んでからJava8いじり始めるといいらしい


やっぱAPI系は必須として何を選択したらいいんですかね?
と地元の知り合いに聞いてみた結果を共有しときます。

***

バックエンドは当然REST API
実装よりも設計が難しいので要注意
Jersey、Gsonは必須

WEB Viewならspark
http://www.sparkjava.com/

とはいえWEB Viewは不要とのこと。
AngularJS
bootstrap
でシングルページWEBアプリが王道

ORマッパーは、hibernateか、あるいは薄く自作
パフォーマンス重視するなら最終的には必ず自作になる

Seasar、Seasar2系はもう終わり

ちなみにnode.jsよりはvert.xかも

やっぱDockerすごい


(このへんから脱線して開発方法論の話)


社内でメールは不要
チャットから拾ってチケット管理に登録
なので全チーム共通でのチケット管理ツールは必要

ていうか開発方法論も見積もり手法ももはやどうでもいい
作る人で百倍以上違うのに見積もりしても意味が無い
できない奴は一生出来ないし、できるやつなら一日で作れる

進捗何%ですか?は無意味
あと何日で終わるか?だけが重要
もし無理そうならほかの人に変わってもらうだけ

9時過ぎて会社に残ってる人がいたら、困ってたりハマってたりしていないかを上司がチェックする
毎日10時過ぎまで会社に居るのは何かが起きているというアラート
単にこだわってるならOK、困ってて何日も進んでないなら担当を変更する
問題が起きたら出来る人のチームで対応する。


UIは、このUIが最適である、というのをデザインチームが決める。
それを元にエンジニアチームが実装する
リリースはエンジニアチームの都合で決める(延期する)


そもそも管理も何も必要無い
良いメンバーで、雰囲気良くしていればものすごいパフォーマンスを出せる

アプリの仕様書は不要。
そもそも仕様はテストケースで表現する。中身はどんどん変えてOK

納品しない開発、ソニックガーデン、あれは良い


(a * a ) % c == ( a % c * a ) % c

(a * a * a ) % c == ( (a * a) % c * a) % c

(a * a * a * a ) % c == ( ((a * a) % c * a) % c * a) % c


コレ知らないと厳しい


(a * b ) % c == (( a % c ) * ( b % c ) )% c


一般的にはこういう公式しか出てこないし。

合同式とか意味判らんし。


アルゴリズムを学ぼう (アスキー書籍)
KADOKAWA / アスキー・メディアワークス
2014-04-10

1)RubyInstaller,msysgit,ckw-modを入れる
2)ckw-modからmsysgit内の bash -l
3)rubyのPATHを追加

これでだいたい行けるはず。

ckw-modの文字サイズ調整はckw.cfgってファイルを修正すればOK。

msysgitにはssh-keygenも入ってるのでそのへんも大丈夫なはず(未検証)

lsの出力の色が見づらいなら alias ls="ls --color=none"

出力は基本UTF-8なので、nkf32 -s でSJISに変換するとか多用しそう(EXCEL用にCSV出力とか)


その他は下記サイトが参考になる。

■msysgit で日本語を使いたい - Qiita ▽http://qiita.com/kumazo@github/items/2169e1ee7be278f82b94 ””


http://d.hatena.ne.jp/mirakui/20100502/1272849327


の通りですが、この手順をやらないといけなかったのでメモ。


RUBY - RVM doesn't work for 1.9.1 but works for 1.8.6 and 1.8.7 - efreedom http://efreedom.com/Question/1-2910507/RVM-Work-191-Works-186-187


readlineを入れなおしたり、
エラーになるdylibファイルを消したりとか、このへんとか

rvm install 1.9.1 -C --with-readline-dir=$HOME/.rvm/usr


出てたエラーはこのへん


ld: in /usr/local/lib/libsqlite3.dylib, file was built for i386 which is not the architecture being linked (x86_64)


これも出てた。

readline.c: In function ‘username_completion_proc_call’:




efreedomってサイトは最近よく出てくるけど自動翻訳で却って分かりにくい。
URL先頭のja.を外すとオリジナルの英語表示に戻ります。


謎アプリをエンドユーザに近いところに軽く見せたところ、やっぱリアルタイムチャットを必要としているということではないらしい。

まあ予想の範囲内ですが。



ポートの話もあるし、個別アプリにしちゃうとアップデート地獄に堕ちるので、ここはリアルタイム系はすっぱり諦めてperiodicalにexecuteすることにする。

ユーザ数1000人くらいまでなら大丈夫かと。
読み出し処理メインなので負荷分散もしやすいし(杞憂




以下メモ。

・GAEでPusherを使わずにComet出来るようになったらしい。Channel APIってのを使うらしい。

GAEのChannel APIでリアルタイムWebアプリ - ニノ日記
http://d.hatena.ne.jp/ninoseki/20101205/1291519323

#appengine でComet! Channel APIでpushできるぞ - スティルハウスの書庫
http://d.hatena.ne.jp/kazunori_279/20100528/1275039829

・あんまり関係ないけど。

[ruby][sinatra] Sinatraのハンドラ内でem-http-requestを使う - daily gimite
http://d.hatena.ne.jp/Gimite/20101017/1287298216


こういう話ってのが地味に大事だと思うんだけどその大事さを継承できていないなあという気がする昨今ですが、まあそれはそれでよかろうと。


・というわけで当面はAjaxベースで充分かと。せっかくなのでJQueryベースに移行したいところ。

無題メモランダム: Ruby on Rails + jQuery + Ajax で動的にページの一部を更新する
http://blog.mudaimemo.com/2008/08/ruby-on-raisl-jquery-ajax.html

dequeue() - jQuery 日本語リファレンス
http://semooh.jp/jquery/api/effects/dequeue/_/



・とか言いつつ、当面Websocket関連はwatchするつもり。

9、10、11月の成果と12月の目標 - makotoiの日記:from London
http://d.hatena.ne.jp/makotoi/20101129

WebSocketで目指せ“リアルタイムWeb”! - @IT
http://www.atmarkit.co.jp/fcoding/articles/websocket/01/websocket01a.html

em-websocket でチャットとか|Sweets Programming Memo
http://ameblo.jp/i18n/entry-10545104040.html


を作ろうとしていたりしていて、アプリ部分(railsとか)とリアルタイム処理部分(cometベース、もしくはwebsocket)との振り分けをなんとかできないか。

つまり80番ポート1つですべて動かす、ってことができないかを調べてたのでその現時点での自分用メモ。



ていうか、ポート2つ使うものであればshooting_starベースで一応ひと通り動く状態にはなってるんだけど、ポート2つ使っちゃってるから、SSL化できないというのが今の課題。



できるだけ有りモノですまそうとした場合、方法としては2つ。


■nginx用のプラグインで振り分ける
 ⇒リアルタイム処理の部分が独自実装になっていて?悩ましい。
  これからはやっぱwebsocketだろ、という気もしつつ。


■haproxyで、websocketのリクエストを振り分ける
 ⇒これが出来ればこっちで行くんだが、とりあえず動かない。。。
  こっちが本命かなという気もしつつ、websocketの仕様がまだまだ固まらないという話を聞くと実戦投入はまだ先かなとか。。
  そういう意味ではcometはある意味枯れてるよねという話も。




でよくよく考えると、

・URLベースでnginxとかでリバースプロキシすれば1ポートで出来るんじゃないの?
 ⇒これはすんなりとは行かないと思われる。
  例のshooting_starベースだと、チャットでの発言を受けてlong_poll中のセッションにレスポンスを返す部分が一つのコントローラになっていて、これを分離するのが面倒。

・1つのポートですべて完結させたいっていうののそもそもの目的はHTTPSベースにしたい、ってことなんだけどそれって出来るの?
 ⇒websocketにはsslは実装されてるっぽい。。
  cometベースでのlong poll がsslでも大丈夫なのか、ちょっと怪しい気が。keepaliveみたいなこともできなかった気が。(それを解決するのがwebsocketのssl通信ということかと)


というわけで、結局lingrと同様にeventmachineベースで半分自作みたいなcometサーバを作って、リバースプロキシで内部振り分け、っていうのが一番現実的かも。つかもう何年も前にそれできちゃってるlingrはすごすぎる。



まああとリアルタイムチャットにどこまでこだわるか、ってのはあるんだけど。エンタープライズ用途だったらperiodicalExecuteとかで充分な気も。



<参考URL>


Emerge Technology: WebSocketでChatを作ってみた http://blog.liris.org/2009/12/websocketchat.html

go言語によるwebsocketチャットの実装。
以下もそれ系。
簡単なものはすぐできるけど、認証の仕組みとか複数のチャット部屋に分けたりするのはどうしたらいいのか全くわからん。。。。


websocketで遊んでみた - IT素人がIT機器を弄ったり妄想したりする日記 http://d.hatena.ne.jp/the48/20100627/1277646213

WebSocketとWebWorkerを使ってみました - html5-developers-jp | Google グループ https://groups.google.com/group/html5-developers-jp/browse_thread/thread/e82f0d3d0353cfb0?hl=ja
EventMachineとWebSocketでリアルタイムwebアプリを作る: Kwappa開発室 http://kwappa.txt-nifty.com/blog/2010/11/eventmachineweb.html


eventmachineベースのruby用のいろんなgem。em-websocketとem-websocket-serverは違いがよくわからん。。とりあえずem-websocketベースのものが手元では動いている。

igrigorik's em-websocket at master - GitHub https://github.com/igrigorik/em-websocket https://github.com/igrigorik/em-websocket.git

dansimpson's em-websocket-server at master - GitHub https://github.com/dansimpson/em-websocket-server


これは単にProxy。リバースプロキシっぽい使い方が出来るものかと思って期待したんだけど違ったっぽい。
mcolyer's em-websocket-proxy at master - GitHub https://github.com/mcolyer/em-websocket-proxy



Stompってのがあるっぽい。詳細不明。
Matt Colyer » WebSockets & Stomp, the Real Realtime Web http://matt.colyer.name/2010/07/18/websockets-stomp-the-real-realtime-web/


Crampってやつとか。

has_many :bugs, :through => :rails http://m.onkey.org/websockets-made-easy-with-cramp

akitaonrails's cramp_chat_demo at master - GitHub https://github.com/akitaonrails/cramp_chat_demo


この人の記事はひと通り読む価値あり。

Ruby & WebSockets: TCP for the Browser - igvita.com http://www.igvita.com/2009/12/22/ruby-websockets-tcp-for-the-browser/


Ruby & WebSockets: TCP for the Browser | Rails Fire http://www.railsfire.com/article/ruby-websockets-tcp-browser

Nginx & Comet: Low Latency Server Push - igvita.com http://www.igvita.com/2009/10/21/nginx-comet-low-latency-server-push/ em-http




後半がよくわからん。。勉強になりそうな予感。

Websockets and Ruby EventMachine http://www.slideshare.net/ismasan/websockets-and-ruby-eventmachine


これを読んでhaproxyをひと通り調べた

RUBY ON RAILS - Can nginx be used as a reverse proxy for a backend websocket server? - efreedom http://efreedom.com/Question/1-2419346/Can-Nginx-Used-Reverse-Proxy-Backend-Websocket-Server

http://haproxy.1wt.eu/#docs

Re: HAProxy is incompatible with WebSocket protocol revision 76? http://www.mail-archive.com/haproxy@formilux.org/msg03047.html


その他

WebSocket | どうも。わたすがダニーです。 http://daniels-lab.jugem.jp/?cid=5


ポートの話とか。
WebSocketsの実験(未完) - Note ON http://veritas-vos-liberabit.com/note_on/2010/06/websockets.html



後半でなぜかJavaアプリのアプリ化みたいな話がやたら詳しく書いてあったり。

Jettyで始めるWebSocket超入門:第6回 アプリケーションの作成と配布物の生成|gihyo.jp … 技術評論社 http://gihyo.jp/dev/feature/01/websocket/0006



twitterのストリーミングAPIをいじる系

lib/tss_em_web_socket_server.rb at master from gimite's tweet-search-stream - GitHub https://github.com/gimite/tweet-search-stream/blob/master/lib/tss_em_web_socket_server.rb

[tss][ruby] Tweet Search Streamの実装をem-websocketとem-http-requestに - daily gimite http://d.hatena.ne.jp/Gimite/20101011/1286764612


ruby1.9.1での何かのサンプル

Using the em-http gem with WebSockets - SWiK http://swik.net/Ruby/Code+Snippets%3A+ruby/Using+the+em-http+gem+with+WebSockets/ecyzt







知らなかった

Scala座#01で「これまでのScala これからのScala」という発表をしたんだぜ - ゆろよろ日記
帰りの新幹線で、Scalatra + ScalateをGAEに載せようとしてうまくいかなくて、Scalatra-scalate-supportの実装がイケてないっぽなんで今度自分でソース直してビルドして試してみます。うまくいったらエントリ書きます。



 # ところで、この方のスライドのP.10に先日のエントリで書いたようなJavaVM上でScalaを動かすってつまりどういうこと?みたいな話が書いてあるので興味がある人は見てみるといいと思うよ



Scalateってのはテンプレートエンジン。カテゴリとしてはJavaで言えばJSPみたいなものと思ってればいいんじゃ?

Templateってのと名前的に掛けてある。


Playframework で Scalate を使ってみる - 写経日記
Scalate
Scala Template Engine: like HAML or JSP without the crap but with added Scala coolness
HAML か くそな部分がない JSP に Scala のいいところを足したテンプレートエンジン
erb に似たのが ssp
haml に似たのが scaml
どちらかを conf/application.conf で指定する
ssp, scaml ともに豊富なサンプル
現在 (20100710) play-1.1-unstable-r881, scalate-0.3,scala-0.3 までしかテストされてないということだけど、play-1.1-unstable-r942, scalate-0.3,scala-0.6 の組み合わせで問題なし。
app/views/default.scaml があって、そこで index.scaml を呼んでなくても、index.scaml のファイルがない場合、画面には何も描画されない(真っ白いまま)。普通はエラー(Template not found)が表示される
一通り機能がそろっていて、問題なく使えそうな感じ。
JAXRS with Jersey とかはよく分かってない。






ruby用のWEBアプリフレームワークのSinatraってのがあるんだけど、それのScala用なのがScalatraらしい。

Scalatra | A tiny, Sinatra-like web framework for Scala
Since its origin on Gabriele Renzi's blog, this project has been known as Step. Unfortunately, we later discovered that name was already taken. Per Hiram Chirino's suggestion, we have decided to rename the project to Scalatra. Scala + Sinatra = Scalatra.



日本語の記事も沢山あるので適当に検索して試してみるといいかもよ




でも環境をつくらないといけないからちょっと手間が多いかも。

なので、Javaの環境がすでにあるなら、Playとか少しいじればいいんじゃないかと。

Javaで軽快に使える「軽量フレームワーク」特集 〜本格的なRoRスタイルフレームワーク「Play!」(1)(1/7):CodeZine
今やWebのフレームワークと言えば、そのほとんどが「RoRタイプ」です。RoR(Ruby on Rails)がWebの開発に与えた影響は非常に大きく、その後生まれたフレームワークの多くがその影響を受けています。

 しかし、Javaの世界に関しては、RoRはなぜか素通りしてしまいました。既にStrutsというデファクトスタンダードがあったために新しいMVCフレームワークが割り込む余地があまりなかったのか、あるいはLL(ライトウェイト)言語でないとRoRなスタイルは作りにくかったのか。ともあれ、その後、長い間、Javaでは「いわゆるRoRタイプ」と言えるフレームワークは登場しませんでした。

 その流れを変えたのは、Groovyです。Groovyの登場により、JavaでもLL言語のような小回りの聞くコーディングが可能となりました。そのおかげで、ようやくJavaの世界にも遅まきながら新しい世代のフレームワークが登場するようになりました。その1つが、今回取り上げる「Play!」です。





PythonのDjangoの方から来たみたいですね

hikozaemonchan: Hello, Play framework
Play frameworkを使ったことがある人はどれぐらいいるんだろうか。
こんなに面白いフレームワークとは思わなかった。
いや、フレームワークというより、プラットフォームです。

まえにJava on Railsなんて宣伝を見てしまったせいでスルーしていた。
たしかに「Rails使いに媚びてDjangoをJavaにポートした」と言えないこともないけど。
ためしてから宣伝してください。迷惑です。
見所はコマンドラインなんかじゃない。まあ、Python for Windowsがついてくるのは確かに面白いけど。
なんといってもJavaの使い方が革命的に面白い。









まあ文系のIT未経験新卒が「なんとかコンサルティング」っていうITコンサルの会社に就職して、ITシステムの要件定義・設計構築技術を身につけようというような場合には、まずボキャブラリが少なすぎて理解が追いつかない、というようなことは確かにありえるかな(こないだの宴会でもそういう話あったけど)



この場合の最悪シナリオとしては:


ボキャブラリが足りなくて何の話をしているのか判らない

話の内容が理解できなくて面白くない、興味が湧かない

「自分はそういうものには興味が無いタイプの人間です」と自分自身で定義する

スパイラルへ




短期的にはこのへんの話題についてクチプロレスで負けない程度にはなっておくといいかも。自分としてもそういう話が出来る相手が増えるのはありがたいというか、嬉しいし

ここは単に知識の有る無しの話だから結構簡単な話かも(仮面ライダーの悪役の名前を覚えるのと同じレベル


具体的にはWEB+DB PRESSの過去1年分くらいをざっと読むとかw




あと、勉強日記的なBlogを自分で書くのもいいんじゃないかなと。これは地味に効くと思う。
で、書いたら「書きました」的につぶやくという




WEB+DB PRESS Vol.58WEB+DB PRESS Vol.58
著者:編
販売元:技術評論社
発売日:2010-08-24
クチコミを見る



全然2.0対応じゃないなあ〜



といちいち調べながらやってたんですが



Rails 2.0 で『AWDR 第2版』をやる方法 - minorio のプログラミング・メモ
scaffolding と classic_pagination および will_pagination の3つのプラグインを入れると本の通りに実行できるようになるらしい。




なに〜






i18nとか便利(な気がする。他を知らないので)



なので、基本は2.x系で行きます。。







RailsによるアジャイルWebアプリケーション開発 第2版RailsによるアジャイルWebアプリケーション開発 第2版
著者:Dave Thomas
販売元:オーム社
発売日:2007-10-26
おすすめ度:5.0
クチコミを見る


おもむろにこれを読んでいる。
JavaになってからのFoundationはWOの仕事(これを称してヲ仕事、ってのはどうだろ)で使ってたので、Obj-Cのコードもなんとなく見覚えがある感じ。とりあえずsuper呼んどけみたいなあたりとか。

Objective‐C―MacOS Xプログラミング入門 (MacOS Xプログラミング入門)




ホントはこれを買おうと思ったんだけど、上の本が家にあったから、とりあえず一通り読んでからにしようかと。だってこれ高いし。

詳解 Objective-C 2.0





こんなのもあるんだ。これは持ってない。

Objective-C Mac OS Xプログラミング





なぜかこれも頭から全部読もうかとか思ってたり。

ロベールのC++入門講座

これはすごい
WebObjectsのDirect2Webを思い出した(あれはJavaアプレットだけど)

あと、この継続って、WOでもバックトラック(ブラウザで戻るボタンが押されたかどうかを検出する仕組み)は有りますよね。


SeasideへGO!!(第1回)
4.5 コードブラウザ
今度は一番右のアイコンをクリックしてみます。
図 20: コードブラウザの起動
Web ブラウザの中に、Smalltalk のコードブラウザが出現します。

twitterでタイプミスで@が来たので知ったemasaka氏。
bash on Railsの人。

本を読む 「プログラミングGauche」
Lisp初学者のための入門書ではなく、網羅的なリファレンスでもなく、学術書でもなく、まさにPractical SchemeであるGaucheを使ってプログラミングする方法についての手引きになっている。最初からgoshとEmacsを組み合わせた開発環境の説明をみっちりやっているし。文法要素をサンプルを作りながら説明していくうちに、説明した各サンプルが継続渡しによるWebアプリケーションに集結するところはちょっとした感動ものだった。


ていうか全然読めてない>自分




Ruby日記なのになぜかLisp日記になっている。。一瞬Rubyで継続とかマクロとかそういう話かと思った。
自分はマクロあたりで大体挫折しているので、このあたりから読み返そう。

マクロ(1) - バリケンのRuby日記 - Rubyist
今日は、マクロについて勉強するよ。




関連記事:
まさかの日記:[Gauche]Windows+Cygwin+Meadow+Gauche


メモリも増えたことだし、MacOSX上でこの件を調べようと一通り環境作ったら、何げにその機能自体なくなっている。。。。

というわけでこの件は終了。

しかも「問題」が「チケット」とかに変わってるし。
まあ文言はどうせ自分で全部書き換えてるから関係無いけど。



"問題"の注記を追加した際、一覧の更新日が変更されない。。 -
Redmine Users (japanese) | Google グループ
色々試している中で、"問題"を新規追加した後、”注記"追加のみを行った際、どうも一覧の更新日が「注記追加」した日時に更新がされなく困っております

行ってきた。
ゴング楽しかった。

帰りがけにお手洗いに行ったら和田さんが居て、川合さんのサイン貰える事を教えてもらい、つい貰ってしまった(ミーハー
川合さんの実物はイメージとだいぶ違ったな。

あと、アップルの営業の人の新しい名刺貰った。



ログ記事はまだチェックしてないけど、これ↓は興味深いね。

[event][scheme] 第2回gauche.nightログ おまけつき - Greenbear Diary (2008-03-09)
shiroさん語録.




本も買ったけど、マルチスレッド系の記述は無い。ソケット系はあるけど。簡易WEBサーバを作ってみよう的な記事はあるけど、これはシングルスレッドだったり。まあKahuaのソース読めってことで。

プログラミングGauche



それにしても毎回頓挫するLisp勉強。またやるか。

おもむろに


M.Hiroi's Home Page / Common Lisp Programming
Windows でも動作する処理系に CLISP があります。


おもむろにCLISPをダウンロード。



昨日、積んである本をほじくり返していたらANSI Common Lispが出てきたから。

ANSI Common Lisp (スタンダードテキスト)


以前読んでたときも、まだ半分しか読んでない。

#半分に千切って読むなどしており、半分まで読んだところで放り出したことが記憶に新しい


たしか、継続に入りかけたところまでかな。
継続とマクロは理解したいところ。

土曜日に向けて、唐突に復習開始。間に合うか??

というわけでこの本をほじくり出してきた。

Ruby on Rails入門―優しいRailsの育て方



[Project]/config/routes.rbが最初の動作を定義しているファイルとのこと。

Redmineで言えば、

map.home '', :controller => 'welcome'
map.signin 'login', :controller => 'account', :action => 'login'
map.signout 'logout', :controller => 'account', :action => 'logout'
:
:


こんな感じ。

例えば、最初のページ「http://localhost:3000/」は、welcome_controller.rbに処理が渡される。

welcome_controller.rbの内容は以下の通り。
このへんに適当にブレイクポイントを指定してあげてデバッガ開始すると、おお止まった止まった。

class WelcomeController < ApplicationController
layout 'base'

def index
@news = News.latest User.current
@projects = Project.latest User.current
end
end



次は、こないだうちのRoRマスター某氏に頼んで調べてもらったことを自分でも調べてみる予定。

なんかありがちBlog的なタイトルだ。w


Ruby on Railなバグトラッカ(?)、RedmineベースにSFAシステムを作ることにした。
実は社内では割とそれなりに使っていたり>Redmine

ソースをそれなりに読んでおこうと思い。
IDEでは最近のお勧めはNetbeansだと某氏が言うので、

NetBeans IDE 6.0.1 Download

「Ruby入り」をダウンロード。



と思ったらJDKが入っていないので、ここからダウンロード。

Java SE Downloads


Redmineのソースを取得するためにWin32版Subversionをげっと

subversion: Documents & files: Windows


Redmineのソースを取得。


cd \
mkdir proj
cd proj
svn co http://redmine.rubyforge.org/svn/trunk redmine



でとりあえずNetBeansで新規プロジェクト作成>上記フォルダ指定でそれっぽく開けたんだけど、rakeタスクの実行方法がわからん。。

redmineって書いてあるところから右クリック>Rakeタスクの実行>db>migarteって普通に実行したときは、DEVかPRODのどっちかが動いていると思うので、database.ymlの当該箇所をSQLite3を使うように書き換えた(WindowsへのMySQLのインストールとか面倒すぎてありえん。。)



だがJRubyからSQLite3ってどうやって使うのか?JDBCドライバがありそうだが。よくわからん。

(悩むこと5秒)

というわけでJRubyをあきらめてRuby(Win32)をインストール。

手順はこちらを参考にした。

www.be-styles.jp - Windows + ruby + sqlite3 にRailsを入れるためのメモ

SQLite3も必須なので入れておくこと。


というわけで、とりあえずGUIからのrake db:migate&起動成功。

RoRの基本動作を忘れてしまってソースの見方が全くわからないので、積んであるRoR本のうち初心者向けっぽいやつ(動作原理が書いてありそうなやつ)を探して持ってくる。

いろいろ試したけど、ただ単純に<CODE>で囲めばいいみたい

下記でいうと、
<CODE>BEGIN {
となっている。

ちなみに
<CODE>
BEGIN {
とやると、最初に改行が入ってしまう。

BEGIN {
print "Hello, world!"
}



あと、CODEタグ内で半角空白を表示させるのはCSSで可能。
これ知らなかった。。。

シェルスクリプトとかsedとかでテキストファイル編集をやるときは結構こういう発想してます。

私自身は全然Lisperではないですが(そんな畏れ多い

Karetta|Gaucheプログラミング|「Lisp脳」の謎に迫る - Schemeプログラマの発想
「とりあえず1から100までのリストを作れば良さそうだ」



もっと前からLisp勉強しておけばよかったなあ。。。
まあ地道にがんばります

今朝、
そんなテーマのミーティングが都内某所で行われ、
まあ今ならやっぱ、
RoRかなという結論が出ました。


■言語は?

Ruby。



■フレームワークは?

RoR。



Java系のものは沢山あるけど、
”終わってる”ものが多い。

新しい良いモノも有るけど、
決定打に欠ける。





という感じです。

まあもちろん、
色々な制約や環境の中での判断になるので
一概には言えないですが。



あと、
RoRを使ってAjaxっぽいアプリを作れば
プロモーションになるかも?

(WEB2.0対応です、みたいな広告を、こないだどっかの雑誌で見て感動しましたが)


という時期は、
やっぱりもう過ぎたみたいです。



まあアピールとしては、

 RoR普通に使っています

という程度かと。

マイナスではなくゼロです、というアピールかと。




あと例えば

 弊社はJavaに特化してやっています、

というのと、

 弊社は言語は単なるツールだと考えていますので、特にこだわらず何でもやっています。最近はRubyとかですかね。

という言い方の、どちらがアピールになるか?



それはアピールしたい対象にもよるでしょうね。





それと、

言語やフレームワークの選択というのは、
要するに、
会社として技術の方向性をどうするのか?

という話なので。
技術的な要因だけで判断できない。




あと、ありがちな、

 RoRでやるって言い出したの君なんだから、最後まで責任もってやってよね

という丸投げは、
厳しい、とかいう話(ちょっと笑える



これはいわゆる、後ろから撃たれる系ですね。
あるいは補給路を絶たれる、というか。


つまりこういう判断っていうのは
イチ技術者の判断ではなく
会社全体の判断であり
全社的にそれをサポートする必要があり
なんとかで、かんとかで
みたいな





(上記内容は実在するもろもろと一切無関係です)





追記。

弊社では、Common Lisp以外はプログラミング言語ではないと考えておりますので、特にこだわりは有りません。

とか言うと格好良いですね。

継続はすごいなあ。

感動した。

なんでも継続
アプリケーションは 継続をクロージャにラップしてセッションIDをキーとするハッシュテーブルに 登録しておき、httpサーバはユーザーからのフォームのsubmitがあると セッションIDを元に登録された継続を呼び出すのだ。


ちょっと、いろんな物を全部一旦脇においておいて、継続が身に付くまで勉強しようと思います。
まずは半年間は集中しよう。

関数プログラミングとは??

副作用的に生じる変化ではなく、返り値を使って動作するプログラミングのこと。

例えばこんなコードは、返り値を使ったプログラミングであると言えるのでは。


ArrayList list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");


というわけで感覚的には、Lisp等での関数プログラミングは、unixのスクリプトにおいてパイプを繋いで処理を行うことに似ている(ほんとか?)

まあ途中で標準出力に表示してデバッグできたりするところも、関数単位に動作させてテストするところと似ていなくもない。とか言ってみたりして。

なるほど、でもJavaで判りやすいコードを書く、というのはそういうことかも。

判りにくいコードとは、副作用的にどういうことが起きているかを頭の中で想像することを読む人に要求するもの、ということなのかもしれない。

そこそこの経験があるプログラマほど、脳を酷使するコードを書きたがるが、その後経験を積むと、判りやすいコードを書くようになっていく気がする(とか偉そうに言ってみる)



というわけでこの本読んでます。いままでLispとか勉強しようとしては挫折しまくってきた人(自分のことですが)にお勧めです。


ANSI Common Lisp

昨日、巨大な肉の完食後、オアゾ丸善で購入。

ANSI Common Lisp


でつらつら読んでるんですが結構面白い。そろそろ実行環境作るか。。(Haskellは入ってるんだけど)

適当に落としたソースはIntelMacではコンパイルできないようなので、某氏に聞いてみたところportsでやるのが一番楽とのこと。


というわけで、こちらを参考にまずはDarwinPortsをセットアップ。
Mac OS X : Software Install Memo

DarwinPorts自体のインストールはGUIで普通に終了。

あとはこんな感じ

$ which port
/opt/local/bin/port
$ port search clisp
clisp lang/clisp 2.40 The Clisp Common Lisp Implementation
$ sudo port install clisp
Password:
(インストール)
$ clisp
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2006

[1]>



お、起動した。
続きを読む

このページのトップヘ