【RoR】Ruby on Rails Part16
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/01/31(木) 08:07:31.27ID:GGHiBszvhttp://kohada.2ch.net/test/read.cgi/php/1341589839/
http://unkar.org/r/php/1341589839
■参考サイト
<英語>
本家:http://rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails
http://ruby-toolbox.com/
http://rubygems.org/
http://agilewebdevelopment.com/plugins/top_rated
<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/
http://doc.ruby-lang.org/ja/1.9.3/doc/index.html
0548nobodyさん
2013/07/23(火) NY:AN:NY.ANID:???http://www.postgresql.jp/events/jpug-pgcon2013
0550nobodyさん
2013/07/24(水) NY:AN:NY.ANID:???http://blog.sumyapp.com/2013/07/no-dream-crowdsourcing/
0551nobodyさん
2013/07/24(水) NY:AN:NY.ANID:???http://www.lancers.jp/work/detail/171339
0552nobodyさん
2013/07/24(水) NY:AN:NY.ANID:GIiGlKgVhttp://blog.sumyapp.com/2013/07/no-recommend-rails/
0553nobodyさん
2013/07/25(木) NY:AN:NY.ANID:qrUaN9f/http://www.lancers.jp/work/detail/34672
0554nobodyさん
2013/07/29(月) NY:AN:NY.ANID:???テキストボックス(入力不可)
ボタン
があってセレクトボックスの初期値は空白
ボタンは押下不可
この状態でセレクトボックスで選んだ値でDB検索
値をテキストボックスに表示して、
1以上であれば、ボタンが押下可能になる
というのを作りたいんですが
どこからどこまでかJavaScriptで、どこからどこまでがRubyでやるのかわかりません
・セレクトボックスの選択と、選択した値を引数にしてRailsのアクションの呼び出しはJavaScript
・DB検索はRails
までは分かるのですが、ここから先、たとえばボタンのenabledを変更するのは誰がやるのでしょうか?
0555nobodyさん
2013/07/29(月) NY:AN:NY.ANID:???http://d.hatena.ne.jp/ooolong/20070202/1170393898
https://luna.easyjp.net/projects/memo/wiki/rails/Rails3サンプル/Yahoo路線のようなインクリメンタルサーチ
https://www.google.co.jp/search?q=rails+incremental+search+site:stackoverflow.com
0556nobodyさん
2013/07/31(水) NY:AN:NY.ANID:???独自ドメインで公開開始してから4ヶ月。
会員数1000人
PV 3000/1日
UU 250/1日
google検索結果からの訪問 30/1日
yahoo検索結果からの訪問 25/1日
なんだかなぁ。。。。。
0557nobodyさん
2013/07/31(水) NY:AN:NY.ANID:???WHERE now() > (end_date + INTERVAL days DAY)
これをrailsで書くならどうなりますか?
0558nobodyさん
2013/07/31(水) NY:AN:NY.ANID:6YPlmowLwhere( [ 'NOW() > end_date + INTERVAL ? DAY', days ] )
0560nobodyさん
2013/08/03(土) NY:AN:NY.ANID:???サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
ITmedia エンタープライズ:自社サーバがフィッシングサイトに「踏み台化」されたら? (1/3)
また、電源を切ってしまうことも良い対応ではない。
オンメモリ上で稼働しているフィッシングサイトの場合は、電源を切ることによって、すべてのデータが消えてしまい、原因究明や対応に遅れなどが出ることも考えられるからだ。
事実、フィッシングサイトを構成するツールの中には、後に証拠が残らないよう、すべてがオンメモリ上で動作するものがある。
このような場合、再起動や電源オフによって、メモリ上にあるすべてのプログラムやファイルが消え、事実や原因の確認が困難になる。
http://www.itmedia.co.jp/enterprise/articles/0603/17/news004.html
0561nobodyさん
2013/08/07(水) NY:AN:NY.ANID:aOWd/F64https://news.ycombinator.com/item?id=6168885
http://blog.bensigelman.org/post/57543889435/why-nobody-should-use-rails-for-anything-ever
0562nobodyさん
2013/08/07(水) NY:AN:NY.ANID:???link_to "hoge", hoge_path(:key => foo)
といったlink_toを様々なページで多用しています。
しかし、条件分岐でkeyのパラメーターをつけるか付けないかを分けたいです。
hoge_pathのpathの部分だけを
helperのようなかんじで
呼び出し型にすることは可能ですか?
その際に呼び出し側から引数も渡すかんじで
0563nobodyさん
2013/08/07(水) NY:AN:NY.ANID:???ユーザー数が10000人として
仮に5000人がページ遷移して
お互いユーザー同士のページを表示する度に
足跡レコードを生成してたら
データベースの負荷はハンパないですよね?
ユーザー数の増加も考慮すると現実的でない?
0564nobodyさん
2013/08/07(水) NY:AN:NY.ANID:3f/GYhsz太い水道管を用いるとたくさんの水が流せるが、水道管の重量が増えるため水道管に必要な費用が大きくなる。
逆に水道管を細くすると重量の軽い水道管になるので水道管に必要な費用は少なくて済むが、少ない量の水しか流せなくなる。
このように、水量の多さを重視すると費用が犠牲になり、費用の安さを重視すると流せる水の量が犠牲になるという関係にあり、
流せる水量の多さと費用の安さはトレードオフの関係にある。
http://ja.wikipedia.org/wiki/トレードオフ
0566nobodyさん
2013/08/07(水) NY:AN:NY.ANID:???シーク時間はシーク範囲によって異なりますが、仮に 5ms とした場合、並列でI/Oを出せない IDE では 200 IOPS が限界となります。
http://pc.casey.jp/archives/153904156
http://e-words.jp/w/IOPS.html
Amazonクラウド、2テラバイトのSSD、60GBメモリ搭載で12万IOPSを実現するインスタンスを発表 − Publickey
http://www.publickey1.jp/blog/12/amazon2ssd60gb12iops.html
0567nobodyさん
2013/08/07(水) NY:AN:NY.ANID:aOWd/F640568nobodyさん
2013/08/07(水) NY:AN:NY.ANID:???ベストエフォートながら、数百IOPSまでバースト可能というパフォーマンスレベル。
http://www.atmarkit.co.jp/news/201208/02/aws.html
ioDriveは10万IOPS、SSDも3.6万IOPSほどでした。
ハードディスクでは数百から千ぐらいのIOPS
http://internet.watch.impress.co.jp/docs/special/20120731_549042.html
まさに怪物! Fusion-ioが容量10テラバイト/性能130万IOPSのフラッシュドライブ「ioDrive Octal」発表 − Publickey
http://www.publickey1.jp/blog/11/_fusion-io10130iopsiodrive_octal.html
IOPSは、ディスクが1秒当たりに処理できるI/Oアクセスの数である。
IOPSが高ければ高いほど、高性能なディスクと言える。
http://itpro.nikkeibp.co.jp/article/lecture/20070104/258117/
0569nobodyさん
2013/08/07(水) NY:AN:NY.ANID:???http://www.publickey1.jp/blog/12/fusion-io10iopsauto_commit_memory.html
0572nobodyさん
2013/08/07(水) NY:AN:NY.ANID:???基本のDBはMySQLで
そういった足跡みたいに頻繁にRead/Write処理が行われる部分だけは
mongodbとか
Railsでは可能なの?
0573nobodyさん
2013/08/07(水) NY:AN:NY.ANID:???モデルを新規作成する際は、とりあえずはscaffoldを利用して、
controllerなども作っておく場合が多い?
それともモデルのみ作成で、必要になってからcontrollerを作成?
今は確定していないけど将来的にcontrollerを使うかも?って感じの微妙なモデルの場合なんだけど。
0574nobodyさん
2013/08/07(水) NY:AN:NY.ANID:1ogPlLd9リソースとして何が必要になるかを考える。
リソース名にマッピングされるのはモデルではなくコントローラ。
という順番。
0575nobodyさん
2013/08/08(木) NY:AN:NY.ANID:???関連で質問です。
Rails4.0で
self.abstract_class = true と establish_connection xxx
を入れたクラスを継承したモデルがあり、
テーブルのカラム名に「catch」や「x」 を使っていたため
@model.catch
@model.x
を実行したときにprivateメソッドを呼びだしたことになって
エラーを起こしてしまいます。
3.0の頃は問題なかったのですが…。
何かよい対処方法ありませんか?
0576nobodyさん
2013/08/08(木) NY:AN:NY.ANID:???余裕でできる
そもそもRDBSとの連携はモデルにデフォルトで書かれてるActiveRecordの記述だけで
Mongoidをincludeするだけでそのモデルはmongodb用に使える(接続用のconfigファイルを作成する必要あり)
0577nobodyさん
2013/08/08(木) NY:AN:NY.ANID:x7tUE+P1http://www.mongohq.com/pricing
Plans and Pricing | MongoLab: MongoDB-as-a-Service
https://mongolab.com/products/pricing/
0578nobodyさん
2013/08/08(木) NY:AN:NY.ANID:???ならどうして最初からすべてmongodbでやらないの?
mongodbはMySQLに比べて
圧倒的に早いんだよね?
自分の認識では
mongodbってmemcachedの
フラグメントキャッシュみたいに
キーと内容だけを保持するシンプルなもの
なんだけどあってる?
だからこそ使い勝手が悪いから
単純なところのテーブル(DB)だけを
mongodbで実装
あってる?
0579nobodyさん
2013/08/08(木) NY:AN:NY.ANID:???そんなにメリットあるかいな?
使えるgemはほとんど未対応だろうし
0580nobodyさん
2013/08/08(木) NY:AN:NY.ANID:???ずいぶんとまぁ印象だけで語ってるなぁ
0581nobodyさん
2013/08/08(木) NY:AN:NY.ANID:???mongodbはスキーマレスな上に、各々が配列やハッシュを持てるからRDBSよりも自由度がはるかに高い
書き込み性能は段違いだが、読み込み速度は大差ないか劣る可能性もある
最大の弱点はトランザクションが効かないことで、テーブル構成が複雑で整合性が必要な箇所には使われない
だから使い分けが必要なの
わかる?
0583nobodyさん
2013/08/08(木) NY:AN:NY.ANID:???RoRでirbを使用してデバッグしているのですがhelperのメソッドを更新してreload!を実行したのですが、更新がされず毎回exitして再度irbを立ち上げてる状況です。
すでに定義済みのメソッドの中身を書き換えてもreload!では反映されないのでしょうか?
0584446
2013/08/10(土) NY:AN:NY.ANID:OMYv+fV8質問させていただいた件、解決しました。
書込みができなかったのでお礼が遅れてしまいましたが、ありがとうございました。
0585nobodyさん
2013/08/12(月) NY:AN:NY.ANID:???| id. | language |typed│
|001| Ruby │ 0│
|002| Perl │ 0│
|003| Python │ 0│
|004| C++ .│ 1│
|005| Java │ 1│
こんな感じの検索結果を受け取ったときに、そこで更にtypedによってレコードを分割したいときは
どうすればいいでしょうか
0586nobodyさん
2013/08/13(火) NY:AN:NY.ANID:ZYgjO/1Sのようにして >>585 の結果を得ているとする。
A: DBから別々に取ってくる
result はActiveRecord::Relation のインスタンス(まだ配列は返ってきていない)だが、
これはさらに条件を . でつなげることが出来る。この場合、ANDで条件を追加する形になる。
typed = result.where(typed, 1)
typeless = result.where(typed: 0)
2つの変数ともに Relation のまま(= 必要になるまでSQLは実行されない)。
必要なら to_a とか。大抵ぎりぎりまで Relation のままでOKなはず。
B: Rubyレベルで分ける。
こっちだと、SQLを実行してレコード一式読み込んでから、メモリ内で分ける。
B-1: Enumerable#partition を使う
2つに分けるなら partition が使える。
typed, typeless = result.partition{|x| x.typed == 1 }
B-2: Enumerable#group_by を使う
lang_groups = result.group_by {|x| x.typed }
typed = lang_groups[1]
typeless = lang_groups[0]
0587nobodyさん
2013/08/13(火) NY:AN:NY.ANID:ZYgjO/1Sアプリ生成後のREADMEによれば、 reload! でリロードされるのはコントローラと
モデルのコードだけのような。
0589nobodyさん
2013/08/15(木) NY:AN:NY.ANID:9ap0WrHOhttp://blog.f-secure.jp/archives/50708704.html
http://jp.wsj.com/article/SB10001424127887323338404579001681390701184.html
0590nobodyさん
2013/08/16(金) NY:AN:NY.ANID:???そんなに速度が変わりますか?
プリコンパイル実行で毎回5分ほど待たなきゃいけないし
画像一つ追加するのにこれだけ大変だから気になりました
画像一つフォルダにつっこんで
イメージタグを記述のほうが楽ですので。
0591nobodyさん
2013/08/16(金) NY:AN:NY.ANID:???0592nobodyさん
2013/08/16(金) NY:AN:NY.ANID:???0593nobodyさん
2013/08/16(金) NY:AN:NY.ANID:???下記のエラーがどうしてもわかりません。
ActionController::RoutingError (uninitialized constant CommentsController):
環境はruby:2.0,rails:4.0です。
環境が新しくなったことの弊害だと思うのですが、どなたか教えていただけると有り難いです……
ちなみにrake routesでルーティングはしっかりできているように見えます
0595593
2013/08/16(金) NY:AN:NY.ANID:???失礼しました。
下記がソースです、見られるでしょうか。
https://github.com/248/rails_blog
RoutingErrorが出ているものをコミットしてあります。
0600nobodyさん
2013/08/17(土) NY:AN:NY.ANID:???コントローラの名前が間違ってる。
coments_controller.rb
↓
comments_controller.rb
0602nobodyさん
2013/08/17(土) NY:AN:NY.ANID:???って書いてあるんだからもうちょっと注意してたら分かったかもね!頑張って!
0603nobodyさん
2013/08/17(土) NY:AN:NY.ANID:LZQA7c0bActionController:: RoutingError(定数CommentsControllerを初期化されていない):
翻訳
http://translate.google.co.jp/
0604nobodyさん
2013/08/17(土) NY:AN:NY.ANID:???【芸能】女優の日南響子(19)、車にひかれ一時意識不明に 「フラフラと放心状態、車道に自ら入って行ったようにも見えた」と目撃談★2
http://awabi.2ch.net/test/read.cgi/mnewsplus/1376716736/l50
0605nobodyさん
2013/08/19(月) NY:AN:NY.ANID:???https://blog.twitter.com/2013/new-tweets-per-second-record-and-how
0606nobodyさん
2013/08/19(月) NY:AN:NY.ANID:???http://www.atmarkit.co.jp/news/201004/19/twitter.html
RORのままアーキテクチャの変更で10000%高速化したとな。
ttp://b.hatena.ne.jp/entry/highscalability.com/scaling-twitter-making-twitter-10000-percent-faster
ミニブログの Twitterのstats(統計)データ。
http://kaworu.jpn.org/kaworu/2008-01-16-2.php
- 350,000を超えるユーザ。
- 秒間600リクエスト
- 平均毎秒200-300コネクション。最大時は秒間800コネクション
- MySQLは秒間2,400リクエストを処理する
- 180のRailsインスタンスがある。MongrelのWebサーバを使っている。
- 1つのMySQLサーバ(1つの大きな 8コアのサーバ)と1つのスレーブ。スレーブは、統計とレポートのための読み込み専用(リードオンリー)。
- 雑用処理をするための30+のプロセス
- 8台のSun X4100s
- Railsでのリクエストの処理時間は200 msec
- データベースにかかる時間の平均は、50-100 msec
- 16GBの memcached
0607nobodyさん
2013/08/19(月) NY:AN:NY.ANID:???viewで適用させる方法は分かるけど
controllerで判断させるにはどうすればいいの?
やっぱりあらかじめ
localeファイルに各文章を格納してて
それをコントローラーで読み込まなきゃダメ?
0608nobodyさん
2013/08/19(月) NY:AN:NY.ANID:???多言語対応させたいってこと?
0609nobodyさん
2013/08/19(月) NY:AN:NY.ANID:/LpY+15W0610nobodyさん
2013/08/21(水) NY:AN:NY.ANID:???javascriptのコードを他人にパクられるのを防ぐ抑止力になる?
0611nobodyさん
2013/08/21(水) NY:AN:NY.ANID:???関係ない部分含めて丸パクされたら結局パクられるからならないともいえるかもしれない
0612nobodyさん
2013/08/21(水) NY:AN:NY.ANID:???関係ない部分も含めて丸パクってどういう意味?
javascriptをパクられなくするのって無理だよね
0613nobodyさん
2013/08/21(水) NY:AN:NY.ANID:???precompileするとコード全部ひとまとめにされるじゃん?
それ丸ごとコピペすればパクることができるじゃん?
って言うアホみたいな意味しかないです
あくまで抑止力って話でしょう
0614nobodyさん
2013/08/21(水) NY:AN:NY.ANID:???パクられてもいいようなものしか書かない
あとは工夫してサーバーサイドと組み合わせて何とかする
0615nobodyさん
2013/08/21(水) NY:AN:NY.ANID:???>>614
ありがとうございます
たとえば、とあるサイトのhtmlソースを取得して
その中からクレイピングするのを
javascriptで実施したら
とあるサイトに残るアクセスログのIPはクライアントPCのIP
サーバーサイドで実施したら
とあるサイトに残るアクセスログのIPはサーバーPCのIP
という認識であってますでしょうか?
0616nobodyさん
2013/08/23(金) NY:AN:NY.ANID:cyaglvKCこれがコンパイル通りません
どうしてでしょうか
0617nobodyさん
2013/08/24(土) NY:AN:NY.ANID:???<%= %> の中は Ruby のコードを書く
"<%= @hoge %>" は Erb のコード
@hoge.to_s に直せ
0619nobodyさん
2013/08/24(土) NY:AN:NY.ANID:???いったんPOSTしたあと、ブロウザを更新してしまうと、
またPOSTさせてしまうことになります。
POSTさせたあとは、ヘッダーを書きかえるとかはRailsでは可能なんでしょうか
0620nobodyさん
2013/08/24(土) NY:AN:NY.ANID:c/4DiZCS0622nobodyさん
2013/08/25(日) NY:AN:NY.ANID:???たとえばRecordモデルの中に
integerのカラム「time」があったとします
timeにはマラソンの結果タイムが秒単位で格納されます
一時間の場合→3600 (1時間)
そのときに
3600→ 01:00:00
1815→ 00:30:15
のように変換して表示させたいです。
そこでapplication_helperに変換用の関数を作りました。
しかし、1ページ内で1000レコードを表示するとしたら、
ページのロード時に関数の呼び出しが毎回1000回行われ計算されます。
これは現実的ではないですよね?
それとも、このくらいの計算ならhelperでも問題ないですか?
�@helperで関数呼び出し表示
�Aレコードが作成される時点で表示用stringカラムを準備しておいて保存→表示時はこれを表示
どちらの設計手法が一般的か教えていただければ幸いです。
0624nobodyさん
2013/08/25(日) NY:AN:NY.ANID:???ありがとうございます
処理負荷コストで考えるべきは
mysqlなどデータベース関連のクエリくらいですか?
だからcountとかはカウンターキャッシュで処理?
rubyの演算だけで処理できる部分はhelperでOK!くらいの考えでいいですか?
0625nobodyさん
2013/08/25(日) NY:AN:NY.ANID:???ただ1000レコード表示(helperの関数を1000回呼び出し)されるわけですが
仮にこのページを1000人が同時に開こうとする場合
1000人×1000回計算→100万回の計算が行われますよね
これでも�@のhelperに頼るやり方が正攻法ですか?
0626nobodyさん
2013/08/25(日) NY:AN:NY.ANID:+qyGnGohPremature optimization is the root of all evil. --D. E. Knuth
0628nobodyさん
2013/08/25(日) NY:AN:NY.ANID:???データの完全性という点でも、安易に表示用カラムを追加することは
お勧めできません。
大きなお世話でしょうが、私ならまずは1ページに1000レコードを
表示する設計の方をどうにかします。
0631nobodyさん
2013/08/26(月) NY:AN:NY.ANID:???シーク時間はシーク範囲によって異なりますが、仮に 5ms とした場合、並列でI/Oを出せない IDE では 200 IOPS が限界となります。
http://pc.casey.jp/archives/153904156
http://e-words.jp/w/IOPS.html
Amazonクラウド、2テラバイトのSSD、60GBメモリ搭載で12万IOPSを実現するインスタンスを発表 − Publickey
http://www.publickey1.jp/blog/12/amazon2ssd60gb12iops.html
0632nobodyさん
2013/08/26(月) NY:AN:NY.ANID:???Book.joins(:author).where("authors.name = ?", name).order(:created_at)
上記のようなのを高速化したくてBookにauthors_nameというカラムを追加したのですが。
0633nobodyさん
2013/08/26(月) NY:AN:NY.ANID:ETC/yj1b0634nobodyさん
2013/08/27(火) NY:AN:NY.ANID:???カラムを追加した方はindexを利用出来てます。
0635nobodyさん
2013/08/27(火) NY:AN:NY.ANID:rt0S8jbJhttp://itpro.nikkeibp.co.jp/article/COLUMN/20110606/361088/
0636nobodyさん
2013/08/28(水) NY:AN:NY.ANID:???データ量次第だけど、あまりそこで正規化崩したくないなぁ。
本-著者の関連テーブルにインデックス張ればなんとかなったのでは感も。
0637nobodyさん
2013/08/28(水) NY:AN:NY.ANID:???Author.where(name : name).books
みたいに二回クエリ投げる方が早かったりするかも。
0638nobodyさん
2013/08/28(水) NY:AN:NY.ANID:72lLJVGO<div class="hoge">Hoge</div>
<% end %>
これを一行で書く方法はないのでしょうか。
<%="<div class='hoge'>Hoge</div>" if value %>
としたらエラーが出ました。
0639nobodyさん
2013/08/28(水) NY:AN:NY.ANID:Me59r7Ml<%= render partial 'hogediv' if value %>
0640nobodyさん
2013/08/28(水) NY:AN:NY.ANID:Me59r7Ml0641nobodyさん
2013/08/28(水) NY:AN:NY.ANID:???ほれ一行
0643nobodyさん
2013/08/28(水) NY:AN:NY.ANID:???ありがとうございます。
mysql だと複数のテーブルから検索したり並べ替えすると
explain で using temporary, using filesort が出ちゃうんですよね。
検索すると正規化を崩すしかないと書かれていた・・・
よくある問題だと思うのでどう対処されてるのか知りたかったんです。
0644nobodyさん
2013/08/28(水) NY:AN:NY.ANID:???value を定義したら >>638 のままで動いたよ。rails4。
ただ html_safe しないとエスケープされた。
<% value = true %>
<%="<div class='hoge'>Hoge</div>".html_safe if value %>
0645nobodyさん
2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C本当に異次元に低レベルの質問で恐縮なのですが、
ここで使われているファイルを一覧できるツールというのは、
例えばどういったものがオススメなのでしょうか?
というか、私は、このツールに辿り着いていません。
深夜・週末起業家というのもあって気持ち悪い程低レベルかもしれませんが、宜しくお願い致します。
0646nobodyさん
2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C自己解決しました。
失礼いたしました。
0647nobodyさん
2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C解決してませんでした。
すみません。
■ このスレッドは過去ログ倉庫に格納されています