Hard work by INTERNET

ベンチャーで働くひとりぼっちWEB開発者が頑張るブログ

telnet 使った

telnet でメールのチェックをする - いますぐ実践! Linuxシステム管理 / Vol.020

telnetsmtpと話をした。 HELOしてRCPTしたら拒絶された。それとVRFYとEXPNした。 VRFYはユーザがいるか返してくれる。EXPNは転送先を返してくれるはずなんだけどnot found comanndとなった。 セキュリティの観点からそうなったのかな(´・_・`)

たまにメールサーバは不調なので調査をしてください、って依頼が入るのでこれでバッチシです。

SSHログインされたタイミングで通知する・ログをとる

WWW を使ってログをとる - いますぐ実践! Linuxシステム管理 / Vol.011
SSH で遠隔ログインした時にメールで通知する - いますぐ実践! Linuxシステム管理 / Vol.010

をやりました。

sshdがキックされると~/.ssh/rc が実行されるようで、そこにmailコマンドを書いたり、WEBサーバにGETを投げたりした。 また、課題ではprintenvの内容をメールしたり、scpではrcがキックされないようにしたりした。 sshすると環境変数のTERMにセットされるの知らなかった。

環境変数TERMについて調べると、接続端末によって特殊文字の定義が異なるため、端末と特殊文字を紐付けたデータベースがあり、 Vimやshellなどのアプリケーションは、そのデータベースから適切な出力をしているとのこと。

なるほどなー。

Rails Documentation. Getting Started Tutorial not working. 1

RailsドキュメントのGetting Started が動かない。

Rails Documentation. Getting Started Tutorial not working. · Issue #19330 · rails/rails · GitHub

本文

あなたがgetting startedチュートリアルをフォローしているのなら、セクション5.2の終わりに気づくだろう。 formの入力やsubmitボタンをクリックするとき、チュートリアルに従っていないルーティングエラーが起きる。 わたしはこの修正方法を知らない。解決するためには何ができますか?

返信

もし、あなたがあなたのformをペーストしたらそれは助けになっただろう。そう、私たちはそれとガイドを比較できる。 (そのエラーの)は原因は、ガイドのurlにある、formは不正確であり、あなたはこのように変えるべきだ。 私には正しく見えるので今の所はこれを閉じるよ。

うーーーーーーーーーーーーーーん。なんか意図がわからん。

Weird behavior of POST, PUT and DELETE in Mozilla Firefox

Weird behavior of POST, PUT and DELETE in Mozilla Firefox · Issue #19278 · rails/rails · GitHub

FireFoxでPOST, PUT, DELETEをすると変な振る舞いをする

本文

Hi! I'm making forum https://github.com/vladzzag/rails-forum どうも、私はフォーラムサイトを作っている。そして、FirefoxでPOST, PUT, DELETEリクエストで何か問題が見つかった。1クリックにつき複数回それらのリクエストが送信された。スクリーンショットを見て。また、chromeでは問題がないことを気がついた。 FireFoxでそのバグについて教えてくれることはできますか? 私は英語のスキルが不完全でごめんなさい。

返信

私たちはあなたのバグを助けることやFireFoxをテストを助けることはできない。 QAサイトかメーリングリストで試してくれ。

返信(主)

わかった。link_toメソッドにDELETEメソッドと { data: :confirm } を追加すると1POSTリクエストの代わりに3リクエスト送られた。

とても奇妙だ....。

最近issuesを読んでいるとQAサイトみたいな使い方をしている人はよくいますねー。

Scope that finds nothing or ends with .first does another lookup

結果が見つからなくてfirstメソッドで終わるとscopeが別の結果になる。

本文

Rails4.2とRuby2.2だよ。

class Car < ActiveRecord::Base
  scope :where_color_or_tint, ->(q) { where("color = ? OR tint = ?", q, q).limit(1).first  } 
  scope :find_color_or_tint, ->(q) { find_by("color = ? OR tint = ?", q, q) }
  scope :where_color, ->(q) { where(color: q).first }
  scope :find_color, ->(q) { find_by(color: q) }

最初に何も見つからんかったら、次にクエリが実行し、最初の値を返している(何も見つからなかったら全てを返しているの意かな?)。これは意図している?

Car.where_color_or_tint('test')

  Car Load (39.4ms)  SELECT  `cars`.* FROM `cars` WHERE (color = 'test' OR tint = 'test')  ORDER BY `users`.`id` ASC LIMIT 1
  Car Load (37.7ms)  SELECT `cars`.* FROM `cars`
=> [
  [0] #<Car:0x00000006bec6d8> {
Car.find_color_or_tint('test')

  Car Load (0.8ms)  SELECT  `cars`.* FROM `cars` WHERE (color = 'test' OR tint = 'test') LIMIT 1
  Car Load (39.1ms)  SELECT `cars`.* FROM `cars`
=> [
  [0] #<Car:0x000000068c53b0> {
Car.where_color('test')

 Car Load (0.8ms)  SELECT  `cars`.* FROM `cars` WHERE `cars`.`color` = 'test'  ORDER BY `cars`.`id` ASC LIMIT 1
  Car Load (37.4ms)  SELECT `cars`.* FROM `cars`
=> [
  [0] #<Car:0x00000006806168> {
Car.find_color('test')

  Car Load (0.8ms)  SELECT  `cars`.* FROM `cars` WHERE `cars`.`color` = 'test' LIMIT 1
  Car Load (38.9ms)  SELECT `cars`.* FROM `cars`
=> [
  [0] #<Car:0x00000006720550> {

クラスメソッドとして定義したらnilや[]を返す意図通りになる。

レス1

ActiveRecord::Scoping::Named で定義している、scopeメソッドnil || allを返すから、このような結果になっているのように見える。 あなたのケースはfirstfind_byでnilが返る。したがってすべてのレコードが得る。

first/find_byを使用せず、レコードがない場合の結果は言うでもないがnilではない空のARオブジェクトだ。

Car.where("color = 'gold' OR tint = 'gold'")
Car Load (0.3ms)  SELECT "cars".* FROM "cars" WHERE (color = 'gold' OR tint = 'gold')
=> #<ActiveRecord::Relation []>

Car.where("color = 'gold' OR tint = 'gold'").nil?
=> false

私が思うに、scopes は1レコードを返すfind_byや類似メソッドと使うために作られていない。

あなたの場合はこのようなのを試すほうがたぶんより適している。

class Car < ActiveRecord::Base
  scope :where_color_or_tint, ->(q) { where("color = ? OR tint = ?", q, q) }

  def self.first_car_with_color_or_tint(q)
    where_color_or_tint(q).first
  end
end

レス2

なるほど。ありがとう。

以上。

Time select and datetime select not honoring config.time_zone value

issueの本文

time_select, datetime_select のフォームヘルパーがタイムゾーンを無視する。UTCから変換するべきだ。今はUTCで保存される。環境はRuby2.2とRails4.2

レス1

私はその環境でtime_selectを試したけど、そのバグは再現しなかったよ。

レス2

バグを再現した簡単な(モデル, コントローラー, config, formだけの)アプリケーションを作ることができますか?

レス3(issue作成者)

作成したよ。(URL) タイムゾーンの設定にAPIに記されているMumbai をした。値を保存するとき、UTCでそれを保存する。(訳すのを諦めた) 例えば、タイムゾーンをMumbaiにセットして、7:00でを入力するとき、UTC1:30に変換され保存されるべき。しかしながら、入力した値はUTC7:00 で存在しており、正しくない。 updated_at フィールドのための変換は正しい。

タイムゾーンが反映されていないってことなんだろうけどイマイチよくわからん。