サーフィンを始める方に

先週の土日、連日九十九里の海岸でサーファーがなくなられたようで。
日曜日は海に入ってましたが、ほど近い場所で死亡事故が発生していたのはびっくりです。
流されたとしたら、暖かくなってきたとはいえ、今は水も冷たく想像を絶する恐怖だったと思います。
ご冥福をお祈りします。

東浪見
本須賀

Read on →

サーフィン 一宮

稲毛の上州屋に行ったらファミリーが多くて賑わってました。
暖かくなってきたのでみなさん釣りをやられるようです。
セット物の竿とかみています。

店員さんに「ポートタワーで何が今釣れますか?何買えばいいですか?」
って聞いているお父さんがいたので思わず聞き耳たててしまいました。

今は「フッコかセイゴ狙いになりますね。」

ですよねー。
と心の中でつぶやきます。
サビキでしか釣果をあげられない自分としてはサビキをたらせる日々が待ち遠しいです。

先週8ヶ月ぶりぐらいにサーフィンしたらヨボヨボのじいさん並みに体力落ちていたので、
昨日も一宮でサーフィンをしてきました。

Read on →


最後にサインアウトした時間が欲しい


before_logoutというwardenのフックメソッドがあるのでそこに追加
自分はconfig/initializers/devise.rbに追加しちゃいました。

1
2
3
4
5
Warden::Manager.before_logout do |user,auth,opts|
  if user.is_a?(User)
    user.update_column(:current_sign_out_at, Time.current)
  end
end


GrapeでCSRF対策

セキュリティ試験を受けたらapiでpostしている箇所がcsrf違反でレポートが上がってきました。
apiでcsrfって必要なの?
って感じでしたが実際にレポートあがってきてしまっているしよくよく考えたら必要じゃんってなったので実装します。

ググってみると情報が少ないですね。
みなさんgrapeでcsrfどうしているんでしょう。

Read on →

Doorkeeperの認証で使われるtokenを取得

doorkeeprの処理のなかで削除済のユーザのステータスが取りたくて、tokenを取得できるかやってみました。

イレギュラーアクセス -> tokenが取れない。
通常のアクセス -> tokenが取れる。ユーザがひける。
削除済または退会済みユーザへのアクセス -> tokenが取れる。ユーザがひけない。

って感じでしょうか?

Read on →

S3に直接にファイルアップロード

Herokuでの大きいファイルアップロードはリクエストタイムアウトが30秒に設定されているのでやっかいです。

Herokuの公式でも4MBを超えるファイルをあげる場合はS3に直接あげてねって書いてあります。
https://devcenter.heroku.com/articles/s3#direct-upload

1
This is the preferred approach if you’re working with file uploads bigger than 4MB. The idea is to skip the hop to your dyno, making a direct connection from the end user browser to S3. While this reduces the processing required by your application it is a more complex implementation and limits the ability to modify (transform, filter, resize etc…) the file before storing in S3.

carriwaveを使っているのでcarriwave_directいいなと思いましたが、
carrierwave_direct

最終更新日が結構前でメンテされていないのかな?ってのとgemを使いすぎるとわけわかめになるので自力でやることにしました。

Read on →

carrierwaveのリンクの有効期間を個別に設定

全体でかける場合はこうですかね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# config/initializers/carrierwave.rb
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/ # for Japanese
CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'AWS',
    aws_access_key_id:     ENV[:access_key],
    aws_secret_access_key: ENV[:secret],
    region:                ENV['s3_region']
  }

  config.fog_public = false
  config.fog_directory = Settings.aws['s3_bucket']
  config.cache_storage = :fog
  config.fog_authenticated_url_expiration = 1.minutes.to_i
end
Read on →