Railsでrails db:schema:dumpとかを駆使してやるのとTCO的にはどっちがお得なんじゃろか
カテゴリ:技術系もろもろ > プログラミング
色々本を買った アルゴリズム系をちゃんと書けるようになりたい
それでどうこうしたいというのもないけど。
結局その辺を素通りする人生だったので、ちゃんとやっときたいかなと
本屋に行ったらPythonの本ばっかりでビビった
あとpuppeteerの本があったのには驚いた
結局その辺を素通りする人生だったので、ちゃんとやっときたいかなと
本屋に行ったらPythonの本ばっかりでビビった
あとpuppeteerの本があったのには驚いた
Kindle本を見ながらPrompt(sshクライアント)を開きつつブラウザを開きつつメモも取る、っていうのが1画面でできるようになったのがiPadOS15のいいところ
だなあと
一つ前のやつだと発熱がけっこうすごい ipadで発熱するっていうイメージがあんまりなかったので以外 電池の減りも速い気がする このへん最新のiPad miniだとどうなるか非常に楽しみなところ
黒田さんの本を見ながら、さくらインターネットのクラウドサービスにsshにログインしてdocker起動したりして遊びたいなと
一つ前のやつだと発熱がけっこうすごい ipadで発熱するっていうイメージがあんまりなかったので以外 電池の減りも速い気がする このへん最新のiPad miniだとどうなるか非常に楽しみなところ
黒田さんの本を見ながら、さくらインターネットのクラウドサービスにsshにログインしてdocker起動したりして遊びたいなと
MastodonにLIKE検索を雑に導入する
keyhacをworkspacesに入れた
普通に動く。ていうかもう完全に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とかも作れるようだ
自分の場合 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とかも作れるようだ
VisualStudio2016community editionをいじる
これは良い
某アプリのソースもまあまあすぐ動かせた。
dllとかの依存関係とかが若干めんどくさいし、webアプリのホームディレクトリってどこやねん、みたいなハードルは若干あるけど、nokogiri入れようとしてハマる、みたいなのに比べたら全然楽だし。
某アプリのソースもまあまあすぐ動かせた。
dllとかの依存関係とかが若干めんどくさいし、webアプリのホームディレクトリってどこやねん、みたいなハードルは若干あるけど、nokogiri入れようとしてハマる、みたいなのに比べたら全然楽だし。
某 プログラミング診断室
の著者の方とお話しした。
分厚い技術書を書く人がいない、売れないというだけでなく、自分の好きな技術を広めたい、と思うような人が居ないと嘆いておられた。
分厚い技術書を書く人がいない、売れないというだけでなく、自分の好きな技術を広めたい、と思うような人が居ないと嘆いておられた。
reactいじり再開
機械学習とかみてたけど、一周して戻ってきた。react-railsプラスwebsocketでプロト作ってたけど、ポーリングで充分かも。。
みたいな事書いとかないと、自分が何やってたかすぐ忘れるんで。
みたいな事書いとかないと、自分が何やってたかすぐ忘れるんで。
Java8でいまどき開発って言ったらどんな感じですかね?2015版
■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いじり始めるといいらしい
■GitHub ・ Build software better, together. ▽https://github.com/tokuhirom/tinyorm/blob/master/README.md
この辺らしい。あと普通にWebAPIとかangularとか。
この辺も読んでからJava8いじり始めるといいらしい
モダンなWEBアプリをJavaで作るっていったらどういう感じですかね。
やっぱ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
納品しない開発、ソニックガーデン、あれは良い
つまり何とかしてNやN^2をlogNにしようとしてる
計算量の話を読んだ感想
代数的データ型ってなんだろ
こういうものに二十年前に興味を持てていたら、全然違う人生だったかも。大して変わらなかったかも。どうだろ。
よろしくお願いします
アルゴリズム勉強日記を始めたけど、これはこれでこっ恥ずかしい
〜で働く男のNNN日記、の第二弾だけど、AWS日記よりもさらに恥ずかしさが増すのはなんでだろう。。
色んな本を並行して眺めてたけど、「アルゴリズムを学ぼう」はおおよそ一般的な領域は網羅しているかな
データ構造とアルゴリズム的な話題が、だいぶ身近になってきた。
書籍「アルゴリズムを学ぼう (アスキー書籍)」の最初のpowmodは冪剰余を知らないと理解不能
(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
一般的にはこういう公式しか出てこないし。
合同式とか意味判らんし。
コードゴルフ系の本を読むと、データ構造とアルゴリズム周りの知識とスキルは必須と思うけど、プログラミング言語に関する類型的な知識も併せて必要だなあと
類型化というのは、有れば学習効率が上がるメリットは有るけど、無ければ無いでクリティカルなものでは無いかなと
世界で闘うプログラミング力を鍛える150問 ~トップIT企業のプログラマになるための本
Ruby徹底攻略 (WEB+DB PRESS plus) [大型本]
Windows上に最短の手順でruby+rails+git環境作る
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 ””
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 ””
とりあえず人生初プルリクdone
github本、なかなかわかりやすい。
GitHubに自作アプリのソース載せておいた
masaka's Profile - GitHub
https://github.com/masaka
cometdのチャットアプリとか、とりあえず動くこと目標で作ってたので相当ひどいソースですが、とりあえず。
rvm インストール エラー
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
リアルタイムWEBとか
を作ろうとしていたりしていて、アプリ部分(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
ほほうScalatraとかScalateってのがあるのか
知らなかった
Scala座#01で「これまでのScala これからのScala」という発表をしたんだぜ - ゆろよろ日記
# ところで、この方のスライドのP.10に先日のエントリで書いたようなJavaVM上でScalaを動かすってつまりどういうこと?みたいな話が書いてあるので興味がある人は見てみるといいと思うよ
Scalateってのはテンプレートエンジン。カテゴリとしてはJavaで言えばJSPみたいなものと思ってればいいんじゃ?
Templateってのと名前的に掛けてある。
Playframework で Scalate を使ってみる - 写経日記
ruby用のWEBアプリフレームワークのSinatraってのがあるんだけど、それのScala用なのがScalatraらしい。
Scalatra | A tiny, Sinatra-like web framework for Scala
日本語の記事も沢山あるので適当に検索して試してみるといいかもよ
でも環境をつくらないといけないからちょっと手間が多いかも。
なので、Javaの環境がすでにあるなら、Playとか少しいじればいいんじゃないかと。
Javaで軽快に使える「軽量フレームワーク」特集 〜本格的なRoRスタイルフレームワーク「Play!」(1)(1/7):CodeZine
PythonのDjangoの方から来たみたいですね
hikozaemonchan: Hello, Play framework
まあ文系のIT未経験新卒が「なんとかコンサルティング」っていうITコンサルの会社に就職して、ITシステムの要件定義・設計構築技術を身につけようというような場合には、まずボキャブラリが少なすぎて理解が追いつかない、というようなことは確かにありえるかな(こないだの宴会でもそういう話あったけど)
この場合の最悪シナリオとしては:
ボキャブラリが足りなくて何の話をしているのか判らない
↓
話の内容が理解できなくて面白くない、興味が湧かない
↓
「自分はそういうものには興味が無いタイプの人間です」と自分自身で定義する
↓
スパイラルへ
短期的にはこのへんの話題についてクチプロレスで負けない程度にはなっておくといいかも。自分としてもそういう話が出来る相手が増えるのはありがたいというか、嬉しいし
ここは単に知識の有る無しの話だから結構簡単な話かも(仮面ライダーの悪役の名前を覚えるのと同じレベル
具体的にはWEB+DB PRESSの過去1年分くらいをざっと読むとかw
あと、勉強日記的なBlogを自分で書くのもいいんじゃないかなと。これは地味に効くと思う。
で、書いたら「書きました」的につぶやくという
WEB+DB PRESS Vol.58
著者:編
販売元:技術評論社
発売日:2010-08-24
クチコミを見る
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.58
著者:編
販売元:技術評論社
発売日:2010-08-24
クチコミを見る
AWDR 2nd Edition って
全然2.0対応じゃないなあ〜
といちいち調べながらやってたんですが
Rails 2.0 で『AWDR 第2版』をやる方法 - minorio のプログラミング・メモ
scaffolding と classic_pagination および will_pagination の3つのプラグインを入れると本の通りに実行できるようになるらしい。
なに〜
i18nとか便利(な気がする。他を知らないので)
なので、基本は2.x系で行きます。。
RailsによるアジャイルWebアプリケーション開発 第2版
著者:Dave Thomas
販売元:オーム社
発売日:2007-10-26
おすすめ度:
クチコミを見る
Objective-J って
楽しそう。
Objective-Cはマクロ的な実装らしいけど、こっちはどうなってるんだろ。
Objective-J - Google 検索
Objective-Cはマクロ的な実装らしいけど、こっちはどうなってるんだろ。
Objective-J - Google 検索
Objective-J の検索結果 約 32,300 件中 1 - 10 件目 (0.07 秒)
[プログラミング言語] Objective-C書籍
おもむろにこれを読んでいる。
JavaになってからのFoundationはWOの仕事(これを称してヲ仕事、ってのはどうだろ)で使ってたので、Obj-Cのコードもなんとなく見覚えがある感じ。とりあえずsuper呼んどけみたいなあたりとか。
Objective‐C―MacOS Xプログラミング入門 (MacOS Xプログラミング入門)
ホントはこれを買おうと思ったんだけど、上の本が家にあったから、とりあえず一通り読んでからにしようかと。だってこれ高いし。
詳解 Objective-C 2.0
こんなのもあるんだ。これは持ってない。
Objective-C Mac OS Xプログラミング
なぜかこれも頭から全部読もうかとか思ってたり。
ロベールのC++入門講座
Smalltalk ( Seaside )でブラウザ上でコードブラウザ
これはすごい
WebObjectsのDirect2Webを思い出した(あれはJavaアプレットだけど)
あと、この継続って、WOでもバックトラック(ブラウザで戻るボタンが押されたかどうかを検出する仕組み)は有りますよね。
SeasideへGO!!(第1回)
WebObjectsのDirect2Webを思い出した(あれはJavaアプレットだけど)
あと、この継続って、WOでもバックトラック(ブラウザで戻るボタンが押されたかどうかを検出する仕組み)は有りますよね。
SeasideへGO!!(第1回)
4.5 コードブラウザ
今度は一番右のアイコンをクリックしてみます。
図 20: コードブラウザの起動
Web ブラウザの中に、Smalltalk のコードブラウザが出現します。
[Gauche][Lisp]プログラミングGauche本 & バリケンのLisp日記
twitterでタイプミスで@が来たので知ったemasaka氏。
bash on Railsの人。
本を読む 「プログラミングGauche」
ていうか全然読めてない>自分
Ruby日記なのになぜかLisp日記になっている。。一瞬Rubyで継続とかマクロとかそういう話かと思った。
自分はマクロあたりで大体挫折しているので、このあたりから読み返そう。
マクロ(1) - バリケンのRuby日記 - Rubyist
関連記事:
まさかの日記:[Gauche]Windows+Cygwin+Meadow+Gauche
bash on Railsの人。
本を読む 「プログラミングGauche」
Lisp初学者のための入門書ではなく、網羅的なリファレンスでもなく、学術書でもなく、まさにPractical SchemeであるGaucheを使ってプログラミングする方法についての手引きになっている。最初からgoshとEmacsを組み合わせた開発環境の説明をみっちりやっているし。文法要素をサンプルを作りながら説明していくうちに、説明した各サンプルが継続渡しによるWebアプリケーションに集結するところはちょっとした感動ものだった。
ていうか全然読めてない>自分
Ruby日記なのになぜかLisp日記になっている。。一瞬Rubyで継続とかマクロとかそういう話かと思った。
自分はマクロあたりで大体挫折しているので、このあたりから読み返そう。
マクロ(1) - バリケンのRuby日記 - Rubyist
今日は、マクロについて勉強するよ。
関連記事:
まさかの日記:[Gauche]Windows+Cygwin+Meadow+Gauche
[Redmine]「注記」操作を行っても、更新日が変更されない
メモリも増えたことだし、MacOSX上でこの件を調べようと一通り環境作ったら、何げにその機能自体なくなっている。。。。
というわけでこの件は終了。
しかも「問題」が「チケット」とかに変わってるし。
まあ文言はどうせ自分で全部書き換えてるから関係無いけど。
"問題"の注記を追加した際、一覧の更新日が変更されない。。 -
Redmine Users (japanese) | Google グループ
色々試している中で、"問題"を新規追加した後、”注記"追加のみを行った際、どうも一覧の更新日が「注記追加」した日時に更新がされなく困っております
MacRubyは、Ruby 1.9/YARVをベースにされたようですが
ja.netbeans のマスコット、ねこび〜んです。よろしくね!!
第2回gauche.night
行ってきた。
ゴング楽しかった。
帰りがけにお手洗いに行ったら和田さんが居て、川合さんのサイン貰える事を教えてもらい、つい貰ってしまった(ミーハー
川合さんの実物はイメージとだいぶ違ったな。
あと、アップルの営業の人の新しい名刺貰った。
ログ記事はまだチェックしてないけど、これ↓は興味深いね。
[event][scheme] 第2回gauche.nightログ おまけつき - Greenbear Diary (2008-03-09)
本も買ったけど、マルチスレッド系の記述は無い。ソケット系はあるけど。簡易WEBサーバを作ってみよう的な記事はあるけど、これはシングルスレッドだったり。まあKahuaのソース読めってことで。
プログラミングGauche
それにしても毎回頓挫するLisp勉強。またやるか。
ゴング楽しかった。
帰りがけにお手洗いに行ったら和田さんが居て、川合さんのサイン貰える事を教えてもらい、つい貰ってしまった(ミーハー
川合さんの実物はイメージとだいぶ違ったな。
あと、アップルの営業の人の新しい名刺貰った。
ログ記事はまだチェックしてないけど、これ↓は興味深いね。
[event][scheme] 第2回gauche.nightログ おまけつき - Greenbear Diary (2008-03-09)
shiroさん語録.
本も買ったけど、マルチスレッド系の記述は無い。ソケット系はあるけど。簡易WEBサーバを作ってみよう的な記事はあるけど、これはシングルスレッドだったり。まあKahuaのソース読めってことで。
プログラミングGauche
それにしても毎回頓挫するLisp勉強。またやるか。
CLISPでANSI Common Lisp
おもむろに
M.Hiroi's Home Page / Common Lisp Programming
おもむろにCLISPをダウンロード。
昨日、積んである本をほじくり返していたらANSI Common Lispが出てきたから。
ANSI Common Lisp (スタンダードテキスト)
以前読んでたときも、まだ半分しか読んでない。
#半分に千切って読むなどしており、半分まで読んだところで放り出したことが記憶に新しい
たしか、継続に入りかけたところまでかな。
継続とマクロは理解したいところ。
土曜日に向けて、唐突に復習開始。間に合うか??
M.Hiroi's Home Page / Common Lisp Programming
Windows でも動作する処理系に CLISP があります。
おもむろにCLISPをダウンロード。
昨日、積んである本をほじくり返していたらANSI Common Lispが出てきたから。
ANSI Common Lisp (スタンダードテキスト)
以前読んでたときも、まだ半分しか読んでない。
#半分に千切って読むなどしており、半分まで読んだところで放り出したことが記憶に新しい
たしか、継続に入りかけたところまでかな。
継続とマクロは理解したいところ。
土曜日に向けて、唐突に復習開始。間に合うか??
[Redmine]デバッガでブレイクポイント編(NetBeans/RoR)
というわけでこの本をほじくり出してきた。
Ruby on Rails入門―優しいRailsの育て方
[Project]/config/routes.rbが最初の動作を定義しているファイルとのこと。
Redmineで言えば、
こんな感じ。
例えば、最初のページ「http://localhost:3000/」は、welcome_controller.rbに処理が渡される。
welcome_controller.rbの内容は以下の通り。
このへんに適当にブレイクポイントを指定してあげてデバッガ開始すると、おお止まった止まった。
次は、こないだうちのRoRマスター某氏に頼んで調べてもらったことを自分でも調べてみる予定。
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マスター某氏に頼んで調べてもらったことを自分でも調べてみる予定。
[Redmine]NetBeansでRuby on Rails
なんかありがち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のソースを取得。
でとりあえず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本のうち初心者向けっぽいやつ(動作原理が書いてありそうなやつ)を探して持ってくる。
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本のうち初心者向けっぽいやつ(動作原理が書いてありそうなやつ)を探して持ってくる。
メールからコード投稿テスト2
再度メールからテスト。
半角空白がきちんと表示できてるかな?
半角空白がきちんと表示できてるかな?
BEGIN {
print "Hello, world!"
}
メールからコード投稿テスト
いろいろ試したけど、ただ単純に<CODE>で囲めばいいみたい
下記でいうと、
<CODE>BEGIN {
となっている。
ちなみに
<CODE>
BEGIN {
とやると、最初に改行が入ってしまう。
あと、CODEタグ内で半角空白を表示させるのはCSSで可能。
これ知らなかった。。。
下記でいうと、
<CODE>BEGIN {
となっている。
ちなみに
<CODE>
BEGIN {
とやると、最初に改行が入ってしまう。
BEGIN {
print "Hello, world!"
}
あと、CODEタグ内で半角空白を表示させるのはCSSで可能。
これ知らなかった。。。
Lisp脳っていうかsed脳
シェルスクリプトとかsedとかでテキストファイル編集をやるときは結構こういう発想してます。
私自身は全然Lisperではないですが(そんな畏れ多い
Karetta|Gaucheプログラミング|「Lisp脳」の謎に迫る - Schemeプログラマの発想
もっと前からLisp勉強しておけばよかったなあ。。。
まあ地道にがんばります
私自身は全然Lisperではないですが(そんな畏れ多い
Karetta|Gaucheプログラミング|「Lisp脳」の謎に迫る - Schemeプログラマの発想
「とりあえず1から100までのリストを作れば良さそうだ」
もっと前からLisp勉強しておけばよかったなあ。。。
まあ地道にがんばります
これから新しく自社製品開発をする、という場合にどういう言語やフレームワークを使う?
今朝、
そんなテーマのミーティングが都内某所で行われ、
まあ今ならやっぱ、
RoRかなという結論が出ました。
■言語は?
Ruby。
■フレームワークは?
RoR。
Java系のものは沢山あるけど、
”終わってる”ものが多い。
新しい良いモノも有るけど、
決定打に欠ける。
という感じです。
まあもちろん、
色々な制約や環境の中での判断になるので
一概には言えないですが。
あと、
RoRを使ってAjaxっぽいアプリを作れば
プロモーションになるかも?
(WEB2.0対応です、みたいな広告を、こないだどっかの雑誌で見て感動しましたが)
という時期は、
やっぱりもう過ぎたみたいです。
まあアピールとしては、
RoR普通に使っています
という程度かと。
マイナスではなくゼロです、というアピールかと。
あと例えば
弊社はJavaに特化してやっています、
というのと、
弊社は言語は単なるツールだと考えていますので、特にこだわらず何でもやっています。最近はRubyとかですかね。
という言い方の、どちらがアピールになるか?
それはアピールしたい対象にもよるでしょうね。
それと、
言語やフレームワークの選択というのは、
要するに、
会社として技術の方向性をどうするのか?
という話なので。
技術的な要因だけで判断できない。
あと、ありがちな、
RoRでやるって言い出したの君なんだから、最後まで責任もってやってよね
という丸投げは、
厳しい、とかいう話(ちょっと笑える
これはいわゆる、後ろから撃たれる系ですね。
あるいは補給路を絶たれる、というか。
つまりこういう判断っていうのは
イチ技術者の判断ではなく
会社全体の判断であり
全社的にそれをサポートする必要があり
なんとかで、かんとかで
みたいな
(上記内容は実在するもろもろと一切無関係です)
追記。
弊社では、Common Lisp以外はプログラミング言語ではないと考えておりますので、特にこだわりは有りません。
とか言うと格好良いですね。
そんなテーマのミーティングが都内某所で行われ、
まあ今ならやっぱ、
RoRかなという結論が出ました。
■言語は?
Ruby。
■フレームワークは?
RoR。
Java系のものは沢山あるけど、
”終わってる”ものが多い。
新しい良いモノも有るけど、
決定打に欠ける。
という感じです。
まあもちろん、
色々な制約や環境の中での判断になるので
一概には言えないですが。
あと、
RoRを使ってAjaxっぽいアプリを作れば
プロモーションになるかも?
(WEB2.0対応です、みたいな広告を、こないだどっかの雑誌で見て感動しましたが)
という時期は、
やっぱりもう過ぎたみたいです。
まあアピールとしては、
RoR普通に使っています
という程度かと。
マイナスではなくゼロです、というアピールかと。
あと例えば
弊社はJavaに特化してやっています、
というのと、
弊社は言語は単なるツールだと考えていますので、特にこだわらず何でもやっています。最近はRubyとかですかね。
という言い方の、どちらがアピールになるか?
それはアピールしたい対象にもよるでしょうね。
それと、
言語やフレームワークの選択というのは、
要するに、
会社として技術の方向性をどうするのか?
という話なので。
技術的な要因だけで判断できない。
あと、ありがちな、
RoRでやるって言い出したの君なんだから、最後まで責任もってやってよね
という丸投げは、
厳しい、とかいう話(ちょっと笑える
これはいわゆる、後ろから撃たれる系ですね。
あるいは補給路を絶たれる、というか。
つまりこういう判断っていうのは
イチ技術者の判断ではなく
会社全体の判断であり
全社的にそれをサポートする必要があり
なんとかで、かんとかで
みたいな
(上記内容は実在するもろもろと一切無関係です)
追記。
弊社では、Common Lisp以外はプログラミング言語ではないと考えておりますので、特にこだわりは有りません。
とか言うと格好良いですね。
明日のためにその1
継続はすごいなあ。
感動した。
なんでも継続
ちょっと、いろんな物を全部一旦脇においておいて、継続が身に付くまで勉強しようと思います。
まずは半年間は集中しよう。
感動した。
なんでも継続
アプリケーションは 継続をクロージャにラップしてセッションIDをキーとするハッシュテーブルに 登録しておき、httpサーバはユーザーからのフォームのsubmitがあると セッションIDを元に登録された継続を呼び出すのだ。
ちょっと、いろんな物を全部一旦脇においておいて、継続が身に付くまで勉強しようと思います。
まずは半年間は集中しよう。
関数プログラミングとは
関数プログラミングとは??
副作用的に生じる変化ではなく、返り値を使って動作するプログラミングのこと。
例えばこんなコードは、返り値を使ったプログラミングであると言えるのでは。
というわけで感覚的には、Lisp等での関数プログラミングは、unixのスクリプトにおいてパイプを繋いで処理を行うことに似ている(ほんとか?)
まあ途中で標準出力に表示してデバッグできたりするところも、関数単位に動作させてテストするところと似ていなくもない。とか言ってみたりして。
なるほど、でもJavaで判りやすいコードを書く、というのはそういうことかも。
判りにくいコードとは、副作用的にどういうことが起きているかを頭の中で想像することを読む人に要求するもの、ということなのかもしれない。
そこそこの経験があるプログラマほど、脳を酷使するコードを書きたがるが、その後経験を積むと、判りやすいコードを書くようになっていく気がする(とか偉そうに言ってみる)
☆
というわけでこの本読んでます。いままでLispとか勉強しようとしては挫折しまくってきた人(自分のことですが)にお勧めです。
ANSI Common Lisp
副作用的に生じる変化ではなく、返り値を使って動作するプログラミングのこと。
例えばこんなコードは、返り値を使ったプログラミングであると言えるのでは。
ArrayList list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
というわけで感覚的には、Lisp等での関数プログラミングは、unixのスクリプトにおいてパイプを繋いで処理を行うことに似ている(ほんとか?)
まあ途中で標準出力に表示してデバッグできたりするところも、関数単位に動作させてテストするところと似ていなくもない。とか言ってみたりして。
なるほど、でもJavaで判りやすいコードを書く、というのはそういうことかも。
判りにくいコードとは、副作用的にどういうことが起きているかを頭の中で想像することを読む人に要求するもの、ということなのかもしれない。
そこそこの経験があるプログラマほど、脳を酷使するコードを書きたがるが、その後経験を積むと、判りやすいコードを書くようになっていく気がする(とか偉そうに言ってみる)
☆
というわけでこの本読んでます。いままでLispとか勉強しようとしては挫折しまくってきた人(自分のことですが)にお勧めです。
ANSI Common Lisp
MacOSXへCommon Lispのインストール
昨日、巨大な肉の完食後、オアゾ丸善で購入。
ANSI Common Lisp
でつらつら読んでるんですが結構面白い。そろそろ実行環境作るか。。(Haskellは入ってるんだけど)
適当に落としたソースはIntelMacではコンパイルできないようなので、某氏に聞いてみたところportsでやるのが一番楽とのこと。
というわけで、こちらを参考にまずはDarwinPortsをセットアップ。
Mac OS X : Software Install Memo
DarwinPorts自体のインストールはGUIで普通に終了。
あとはこんな感じ
お、起動した。
続きを読む
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]>
お、起動した。
続きを読む