【RoR】Ruby on Rails Part20©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
ついでに言っておくとWebアプリケーションのパフォーマンスボトルネックは
データベースのディスクI/Oが大部分なので
いわゆるコントローラーの処理速度をGolangやJavaで高速化しても
全体はそれほど早くならない >>390
> rails5.0 になってやっとleft outer joinメソッドが実装されたのは驚き
だってSQL使わないじゃん。結合なんて勝手にやってくれて
内部でjoinしてくれるでしょ?
なんでわざわざ自前でjoin書かないといかんのだ?って感じなんだが >>394
それな
わざわざ5レスに分割してるのも
思いつきで書き散らしてまったく計画性が感じられない >>394
従テーブルの外部キーを持たない主テーブルのデータは空白で表示したいことって多いだろ
それをなんでわざわざ毎回実装しないといけないのよ? >>396
こんな感じ?
class Hoge; end
class Fuga; belongs_to :hoge; end
Fuga.all.each {|fuga| p fuga.hoge&.name }
eager_loadはお好みで >>397
セルフネーバオペレータ使うのはちょっと違うと思う >>399
DBの責務とRubyの責務がぐちゃぐちゃになってるから
その処理はDBがすべきもの >>400
え?LEFT OUTER JOIN使ったとしても似たようなコードになるよね? >>401
データのある無しを判断して空白で返す処理をしてるのがMySQLなのかRubyなのかの違いを言っています
コードの似たりよったりではありません。 >>402
でも似たようなコードで同じことができるなら別にいいじゃん
SQL原理主義なんてバッチみたいな速度にシビアな場面でだけ使えばいいんだし、
UIみたいなそうでもないところはコードの保守性の方が大事だよね >>402
え?データのあるなしを判断するはあくまでDBでしょ?
ActiveRecordはそこで投げるSQLを隠蔽しているだけで、ActiveRecordだってデータのあるなしはDBに問い合わせてるよ
そこでLEFT OUTER JOINを使うか、eager loadを使うかで投げるSQLの内容は違うだろうけど、Rubyがデータのあるなしを
判断できるわけないでしょ >>403
完全に素人の発想だな
この場合は大したことしてないけど、
もっと複雑なSQLで大量のデータを対象にした場合どっちがスケールするかな?
そういうことを考えないと いままではDBのしごとで
それぞれの立場で仕事してたのに
Ruby側でやりたいとかわがまま言い出して
Ruby側で実装されたって流れ。 >>406
RubyはDBの仕事を取ってたりしてないよ
ActiveRecordがうまく隠蔽してるだけ
というかRubyがDBの仕事をできるわけないじゃん SQL書きたくない(書けない)ってひとがRubyというかRailsというかActiveRecordに流れただけ >>408
SQLだけでアプリが作れない以上、ActiveRecordになるのは当然だと思うが? ヒカル TV出演「年間5億は稼ぐ勢いですね」
https://www.youtube.com/watch?v=G7qL6ftpets
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ
最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいいぞ。副業にぴったしだ
やろうと思えばスマホがあればできるぞ
最低2年はやらないとここまではいかないだろうけど才能とアイデアと
企画力と継続力があればが大儲けできる可能性がなくもない
まだまだ他の職種に比べれば競争率は低いからオススメ
顔出したくないならラファエルみたいに仮面つければいい
ハロウィン用でいろいろな仮装マスク売ってるからオヌヌメ すみません、PHPから流れてきてrails初心者なんですが
ActiveRecordでDBからレコード取得する時にSQLのSUBSTRみたいに
レコードの文字列の一部だけ取得するやり方ってどう書けばいいんでしょうか?
頭の3文字だけ欲しいみたいな感じです NanikanoModel.find_by(1).nanikano_mojiretsu[0,3]
NanikanoModelのnanikano_mojiretsuフィールドの型がstring型(DB定義var_charとか)だったらこれでいける。
[0..2]
でもOK 私が億万長者になった日 – Medium Japan – Medium
2006年に突然状況は大きく変わった。
ジェフ・ベゾスがBasecampに関心を持ってくれたので、ジェイソンと私はそれぞれ会社の非支配持分を数百万ドルで売った(Basecampは設立当初から財務状況が悪くなかったので、無理に資金調達する必要はなかったのだが)。
私は億万長者になったのだ!
http://b.hatena.ne.jp/entry/s/medium.com/japan/4614d3f4a255
https://medium.com/japan/4614d3f4a255 数億円で売ったのか、安いな
上場したら糞みたいな会社でも時価総額50〜100億くらいになるのに
もったいない >>411
str = "hello"
str.first(1) # => "h"
str.first(2) # => "he"
str.first(3) # => "hel" なあ。rails の vendor ディレクトリの下のソースコードって触っちゃいけないんだよな?
gem とかからインストールされるファイル群だと思うんだけど、そうでもないんだろうか。 >>417
触ってもいいよ
バージョンアップとかで触ったのは全部消えるけど
デバッグとかで触ることはよくあるし >>418
ああ。そう言うものなんだ。ありがとう。
あのファイルを編集するのが一番簡単なんだよな。。どうしよう。 編集してメンテを続けるのはつまりフォークになるんだが
短期的なデバッグ以外なら茨の道 要するにメルカリで情報流出させるようなDeployしてるのか君らは >>420
forkしたプロジェクトで編集してそこからインスコだな 瑕疵担保責任(かしたんぽせきにん)
瑕疵担保責任のポイント
民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない
http://www.atmarkit.co.jp/ait/articles/1706/26/news014.html
http://itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt
改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている
全ベンダーが泣いた民法改正案を解説しよう その1
http://www.atmarkit.co.jp/ait/articles/1609/14/news009.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html
ポイント1:修補や損害賠償、契約解除の期限がなくなる
従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。
もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。 サーバー変えたら動かなくなりました。
OSアップデートしたら動かなくなりました。
OS変えたら動かなくなりました。
WEBサーバー変えたら動かなくなりました。
WEBサーバーにパッチプログラムをあてたら動かなくなりました。
DB変えたら動かなくなりました。
DBをアップデートしたら動かなくなりました。
PHPのアップデートプログラムを更新したら動かなくなりました。
Railsアップデートプログラムを更新したら動かなくなりました。
Rubyアップデートプログラムを更新したら動かなくなりました。
高負荷になったら動かなくなりました。 無償で修理してください。損害も請求します。
しばらく放置していて、最近動かしたら動かないです。原因はわかりません。これは御社の不具合なので無償で修理してください。
無償で修理してください。損害も請求します。
納品先の会社 10社から同時に
重大な脆弱性が現バージョンから発見されました。こちらでアップデートしたところ、起動ができなくなりました。
至急弊社に来て修正作業をお願いします。なおお金は払わない。また営業に損失が出たので損害請求もします。 アップデートしない契約を結べばいいのだろうが
セキュリティーアップデートがある限りそれは不可能 マイクロサービスはもう十分 | プロダクト・サービス | POSTD
http://postd.cc/enough-with-the-microservices/
マイクロサービスの強み弱み
マイクロサービスには分散システムとしての複雑さがあり、注意しなければならない課題がある。
例えば、“ネットワークの遅延や耐障害性、メッセージのシリアライゼーション、
信頼できないネットワーク、非同期性、バージョニング、アプリケーションの各層に対するロードなど”だ。
http://www.infoq.com/jp/news/2014/06/microservices
コンピュータにおいて、制御を行う要素の数が1個の場合、2個の場合に比べて3個以上の場合で複雑さは段違いに異なる。
http://anond.hatelabo.jp/20130319023155
太陽と地球のような二体問題は厳密に解けるが、例えば月の運動も考える一般の三体問題以上になると解析的に解くことはできないとされる
http://ja.wikipedia.org/wiki/多体問題 分割粒度が小さすぎると、組み合わせ爆発が起こって、
階乗・巡回セールスマン問題のように、プログラミング不可能! すみません、コントローラで
def index
UNIXSocket.open('/tmp/myapp.sock') do |sock|
sock.write(params.to_query)
rt = sock.readline
render text: rt
end
end
ということがしたいのですが、どうも
rt = sock.readline
のところで処理が止まってしまうように見えています。
renderの部分まで処理を進めるにはどのような書き方をすればよいのでしょうか。
教えて頂けますと嬉しいです。 すみませんよくよく考えるとrailsの質問ではないですね・・
移動します。失礼しました。 ActiveRecord の話だと思うけど。ここでいいですか。
前段
とあるモデルクラスで管理しているテーブルのカラムに NULL 許容&ユニーク制約をつけたいと思います。
普通に validates email, uniqueness: true などとやるとユニークにはなるのですが。
レコードを追加するときにこのカラムに NULL のレコードがほかにあるとバリデーションでエラーになります。
質問
ActiveRecord のバリデーションで、ユニーク制約をつけつつ、NULL だけは重複があっても許容するような設定は出来ますか。
現状
uniqueness でやるのは諦めてカスタムバリデータでチェックするようにしてみました。
一応動いていますがもっと簡単にできそうな気がします。 >>431
>ユニーク制約をつけつつ、NULL だけは重複があっても許容する
これDB側は対応してるの?
直接他のツール等でSQL発行するとどうなる? 最新人気ランキング
1位 Java
2位 C
3位 C++
4位 Python
5位 C#
6位 PHP
7位 Visual Basic .NET
8位 JavaScript
9位 Delphi/Object Pascal
10位 Go
11位 Perl
12位 Swift
13位 Ruby
14位 Assembly language
15位 R
16位 Visual Basic
17位 MATLAB
18位 Objective-C
19位 Scratch
20位 PL/SQL
https://www.tiobe.com/tiobe-index/ >>432
INSERT とかで挿入する方法ですよね?
普通に複数の NULL カラムのレコードを追加できます。
>>433
既存のプログラムが、ActiveRecord でのバリデーションを実装してるんです。 確認してきました。
DB 側(MySQL)に Null:YES、Key:UNI となっていて、
そのカラムに複数の NULL レコードをインサートできていました。はい。
やぱり ActiveRecord だと対応できないんでしょうか。 >>440,441
ありがとう。
確かめました。
バリデーションにも条件て指定できたんすね。。
今回は前に組んだカスタムバリデーションでとりあえず行こうと思います。 私が億万長者になった日
2006年に突然状況は大きく変わった。
ジェフ・ベゾスがBasecampに関心を持ってくれたので、ジェイソンと私はそれぞれ会社の非支配持分を数百万ドルで売った(Basecampは設立当初から財務状況が悪くなかったので、無理に資金調達する必要はなかったのだが)。
私は億万長者になったのだ!
http://b.hatena.ne.jp/entry/s/medium.com/japan/4614d3f4a255
https://medium.com/japan/4614d3f4a255 考え直そうーーRuby on Rails生みの親でBasecampの創業者がスタートアップに贈る言葉【寄稿】 - THE BRIDGE(ザ・ブリッジ)
http://thebridge.jp/2016/04/reconsider CakePHPやってたんだけど
Cake3とLaravelどっちが良いかな? まちがえた
RailsとLaravelどっちが良いかな? どっちも将来性がないからPythonがGoにしとけ こんなオワコンフレームワークをまだ使ってる奴いるんだw
さすがにRailsは10年前のものだよ >>449
じゃあお前的今時プラットフォームはなんなんだよ >>454
老害だなんてだれも言ってないぞ
被害妄想激しすぎてきもーいw >>457
で、どこで言ってるんですか?
被害妄想にとりつかれた病人さん? Ruby on Railsをウェブの無料サイトで学び始めた初心者です MacBook Proで勉強してるんですけど1文字打つ毎にタッチパッドで文字の横をクリックしないと文字を打ち込めないんですけど、このやり方であってますか?
あとなぜかバックスペースが反応しなくて1回プログラムを打ち間違えたら修正できないんですけど、こういう言語なんですかね? Ruby on Rails 5入門 (全28回) - プログラミングならドットインストール
http://dotinstall.com/lessons/basic_rails_v3 質問。
Rails & MySQL の環境で、
とあるテーブルのレコードをループ処理で 500 回くらい保存しないで作ると応答がなくなる(たぶんプロセスが落ちてる)のだけど、
こういうのの原因てどういうのがあるのでしょうか。保存したらどうなるのかは試してません。
メモリを見てても実行中に特に増えるようなことはないし、別の開発用の環境だと100万回くらいやっても平然と動いてるし。
原因が分かりません。 分散システムについて語らせてくれ
https://www.slideshare.net/kumagi/ss-78765920
マイクロサービスの終焉 | 開発手法・プロジェクト管理 | POSTD
http://postd.cc/the-end-of-microservices/
マイクロサービスの強み弱み
マイクロサービスには分散システムとしての複雑さがあり、注意しなければならない課題がある。
例えば、“ネットワークの遅延や耐障害性、メッセージのシリアライゼーション、
信頼できないネットワーク、非同期性、バージョニング、アプリケーションの各層に対するロードなど”だ。
http://www.infoq.com/jp/news/2014/06/microservices
コンピュータにおいて、制御を行う要素の数が1個の場合、2個の場合に比べて3個以上の場合で複雑さは段違いに異なる。
http://anond.hatelabo.jp/20130319023155
太陽と地球のような二体問題は厳密に解けるが、例えば月の運動も考える一般の三体問題以上になると解析的に解くことはできないとされる
http://ja.wikipedia.org/wiki/多体問題 >>466
ありがとう。
タイムアウトなんてあるんですね。
一度生成したレコードはもう使わないので解放?をしたいのですが、明示的に出来るモノなのでしょうか。
http://qiita.com/dainghiavotinh/items/8158213207b257670ff3
このページの3の方法を試したのですが、落ちる?タイミングが早まっただけでした。 漏れも、RoR はよく知らないけど、
DB の一般論で言えば、1回限りの都度接続と、持続的な接続の、2タイプある
都度接続では毎回、DBに接続して、レコードを取得して、DBからデタッチする
一方、持続的な接続では、接続し放し。
最初に接続すると、接続中に処理を何回もできるけど、
レコード書き込みなら、長時間、表がロックされてしまう
DBの説明書を参照 最新トップYoutuberの年収は10億円、1億円の時代はもう古い
http://www.himatubushisp.com/entry/2017/05/10/224945
Youtuberヒカルが月収を明らかに!!おはよう朝日です出演
https://www.youtube.com/watch?v=RLZGrqQnnZc
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&t=118s
最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ
しばたーやよりひとやkunやぽんちやモンスタージョンなどを真似すればいい >>469
ありがとう。返信が遅くなってごめんなさい。
その理屈は自分でもわかるんです。
ただそのような制御を rails でどうやるのかが分からず。
ひょっとして C# でやるところの using のようなことをやれば?とか思いついたところなのですが、環境がないので試せず。
申し訳ない。 >> 469
> レコード書き込みなら、長時間、表がロックされてしまう
嘘吐きは泥棒の始まり! エラーログが無いと分からないから、
まず、エラーログを取得して、そのエラーログで検索する
MySQL は無料だから、副問い合わせとか、複雑なSQL には対応していない。
複雑なSQL を書いたら、組み合わせ爆発(乗算)を起こす
A表の行数 × B表の行数
DB の基本は、実行計画を見て、何行にアクセスしたか、調べる。
インデックスを使っていなければ、総(線形)探索になる
DB は、ミックの本とか、読んでいないと無理 >>473
> MySQL は無料だから、副問い合わせとか、複雑なSQL には対応していない。
4系時代にクビになった後IT業界に戻れなかった元能無しSEか
ただの嘘吐き >>473
自分へレス?
どうやらエラーログは収集できてないようです。
というかいきなり落ちてるっぽいのでなんとも。
また ActiveRecord による単純なレコードの新規作成(保存さえしていない)なので、複雑な SQL はないと思うんですが。 1行ずつ、デバッグして、原因究明するとか。
単純に、1行だけ挿入するとか
出力の文字コードが、異なるとか?
パスワードなどのアクセス権限・実行権限・セキュリティとか?
エラーログが無いと、原因が無数に考えられるから、話にならない
DBをサービスとして起動していないから、
親プロセスの終了で、自動的に子プロセスも終了させられているとか
SSH などで、よく起こる。
端末(親プロセス)を終了したら、
端末から起動した、子プロセスもすべて終了してしまうとか
LPIC とか、OSの資格を持っていないと、システム構築運用はできない。
プログラマーは、OSの仕組みを知らないから
こういう知識を、コンピューターリテラシーと言う > こういう知識を、コンピューターリテラシーと言う
だからなに? 質問させてください!
Railsガイドのチュートリアルでアーティクルのコメントに対してエラーチェックするためにはどのようにすればいいのでしょうか。
以下のコードに「<% if @comments.errors.any? %>」のようなものを組み込みたいと考えています。
ご存じの方がいらっしゃったらよろしくお願いいたします。
<%= form_for([@article, @article.comments.build]) do |f| %>
<p>
<%= f.label :commenter %><br>
<%= f.text_field :commenter %>
</p>
<p>
<%= f.label :body %><br>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %> Rails ってリクエストを受けてから返すまでの時間制限というかタイムアウトみたいな設定値があったりします? >>475
各アプリのログか、OS のログを見れば? 結局 >>482 さんに教えていただいたのが原因でした。
リクエストを受けてから Unicorn の(デフォルト)タイムアウトまでに処理できなくて切られてた、という単純な問題だったようです。
お騒がせしました。・・・連休挟んで >>481 で気がついて質問するまでに2週間掛かったよ。。おバカでした。
ActiveRecord のインスタンスを作るところで落ちてたのは、
ループ中の処理時間のほぼ全部をそれに使ってたことによる単純な確率の問題だったようです。 あ。書き漏らしてた。
お相手をしてくださった皆さん、ありがとうございました。
上のレスの通りなんとか解決しました。 railsのコントローラーからFirebaseのauth機能使う方法ご存知の方いらっしゃいませんか?
Databaseへの保存などは出来るのですがユーザー作成などをrailsから行う方法がわからず困っています。 なんでrailsからやろうとしているの?
ふつうはクライアントサイドでやるものでしょ? 366 :nobodyさん 2017/05/29(月) 16:07:39.16 ID:6v4UcGhE
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744
367 :nobodyさん 2017/05/29(月) 16:28:06.55 ID:6v4UcGhE
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/
372 :nobodyさん2017/05/29(月) 19:10:37.12 ID:???
Railsでシステム作って納品する
↓
Railsはマイナー、メジャーのアップデートが半年以内に必ずある
↓
客がアップデートする。アップデートによるエラーやバグ、動作の不具合に気づく
↓
気づいてから1年以内に通知すれば、5年間無料保証ゲット
↓
つまりRailsがアップデートするたびに、無償の修正作業を発生するということかな
376 :nobodyさん2017/05/30(火) 09:20:20.09 ID:L5po86sS
>>378>>379>>375
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。 >>489
>これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
>保守に強い言語のみ生き残れる。
発想がバカすぎる…
ITベンダーがつぶれて、自社で直接開発者を雇う形にシフトしていくだけだろ rubyやってる奴らってかなり気持悪いんだけど
キモいキモい もはや時代遅れで構文がキモい言語にいつまでもしがみついているやつらだからな
国産言語(ハァ?)に誇りを持って選民意識がすっごーいっ ■ このスレッドは過去ログ倉庫に格納されています