ノンカフェインであなたにやさしい

Rails,HTML,JavaScript,jQuery,PHP,CakePHPなど

Reactで Uncaught TypeError: Cannot read property 'setState' of undefined と怒られた時の対処方

コンストラクタで明示的にthisをbindして上げる必要があるらしい constructor(props) { super(props); this.onChangeValue = this.onChangeValue.bind(this); } 参考 ES6でReact使ってたらsetStateがundefinedとか怒られた件 - とっしぃのTech Memo Reactで …

Railsでall_hourメソッドが欲しい

Railsの時間関係の便利なメソッド達 all_month, all_day などなど… でもall_hour がない 作ってしまおう class ActiveSupport::TimeWithZone def all_hour beginning_of_hour..end_of_hour end end Time.current.all_hour # => Mon, 26 Jun 2017 19:00:00 JS…

RailsでDBに配列Arrayを保存する

RailsでDBに配列を保存する方法 serialize :column_name を指定 RailsでDBに配列を保存する方法(サンプルコード) class Hoge < ApplicationRecord serialize :arr end hoge = Hoge.new(arr: [1, 2, 3]) puts hoge.arr # => [1, 2, 3] Arrayと明示するとこう…

Railsのpartialに変数を渡す方法

<%= render partial: 'hoges/index', locals: { moge: @user.moge } %> localsで変数を指定するだけ 部分テンプレートでmogeが使えるようになります。 renderの後のpartialも必要。忘れそう… # hoges/index.html.erb <%= moge %>

Railsでprimary_keyとforeign_keyの両方を指定して主キーではないカラムで関連付けする

こんな関連付けのモデルがあったとして class Atable < ApplicationRecord has_one :btable has_one :ctable end class Btable < ApplicationRecord belongs_to :atable end class Ctable < ApplicationRecord belongs_to :atable end bからcを呼び出すのに …

Huawei mate9でGoogleカレンダーの予定が勝手にキャンセル、辞退されるバグ

Huawei mate9にGoogleアカウントをひも付けたら勝手に他の人の予定をキャンセルや辞退させる問題がおきました。 調べてみるとHuaweiのデフォルトのカレンダーにG suiteのアカウントを連携させると発生するバグらしい。 なのでデフォルトカレンダーの権限をオ…

電話番号の正規表現はどうしたらいいのか

Railsのアプリを作っていて電話番号のバリデーションをするための正規表現はどう書いたらいいのか悩んだので調べてみました 電話番号の正規表現 日本の一般の電話番号の正規表現はこうなりそう /\A(((0(\d{1}[-(]?\d{4}|\d{2}[-(]?\d{3}|\d{3}[-(]?\d{2}|\d{…

Rubyで配列の中央値(メジアン)を求める

Rubyで中央値(メジアン)を求めるコード (a.size % 2).zero? ? a[a.size/2 - 1, 2].inject(:+) / 2.0 : a[a.size/2] 動作確認 a = [3, 5, 10, 23, 88] (a.size % 2).zero? ? a[a.size/2 - 1, 2].inject(:+) / 2.0 : a[a.size/2] # => 10 a = [3, 5, 10, 23, 8…

Rubyで改行、空白を削除する

文字数を取得する時などに改行や空白文字を削除したい text = "春はあげぽよ てか、どんどん白くなる山の端らへんが異常に明るくなって、紫の雲が細く風に流されてるの見て、マジパねぇ、ウケる。 夏は神テン 満月がデラヤバなんてあえてウチの口から言うま…

content_tagで閉じがないhtmlタグ<br/>や<img/>を出力する?

<br /> を出力したくて content_tag(:br) とやったら <br></br> と出力されてしまった… content_tagじゃなくてtagを使うとのこと なるほどcontentがあるかないかの単純な話だったらしい tag知らなかった… 結果 無事brタグが出力されました tag(:br) ↓ <br />

Tagging a string as html safe may be a security risk

RuboCop(0.48.1) で Tagging a string as html safe may be a security risk と怒られた htmlタグを直書きせずにcontent_tagを使えということらしい↓ # bad "<p>#{text}</p>".html_safe # good content_tag(:p, text) # bad out = "" out << content_tag(:li, "one"…

RailsでHSTS includeSubDomainsを外す方法

Rails5からforce_sslを設定しているHSTSでサブドメインまで対象にされてしまうようで設定から外したい config/initializers/new_framework_defaults.rb に以下を追加でサブドメインを外すことができます Rails.application.config.ssl_options = { hsts: { s…

Chromeでhttpからhttpsに勝手にリダイレクトされる問題の解消[SSL]

なぜかChromeだけhttpからhttpsにリダイレクトされるサイトがあり原因を探していたらこちらの記事を発見 beniyama.hatenablog.jp ChromeがSSLサイトのドメインを覚えて勝手にリダイレクトしてくれているらしい HTTP Strict Transport Security(HSTS)め… 設定…

Rails コントローラーからヘルパーメソッドを呼ぶ [controller,helper]

Railsのコントローラーからヘルパーメソッドを呼びたい view_context を使う view_context.hogehoge ヘルパーをインクルードしたりしなくても使えるみたい

Rails GroupでまとめてCountした結果をHavingを使って絞り込む [ActiveRecord]

COUNT(*) した結果で絞り込む方法 Havingを使う Hoge.group(:user_id).having('count(*) > ?', 5).count

JavaScriptでオブジェクトの要素数を取得、空判定をする Object,length,blank

jsのObject.lenghtがない… オブジェクトの要素数を取得する方法 Object.keys を使う var obj = {}; console.log(Object.keys(obj).length); // => 0

郵便番号から住所を自動入力するZipaddrxを任意のタイミングで動かす[Js,React]

郵便番号から住所を自動入力するZipaddrx zipaddr.com Jsを呼んでおけば勝手に動いてくれるんですがReactを使っていてonload以外のタイミングで動かしたくなったのでその時の対処法です。 任意のタイミングで初期化 Zip.x(); これだけ ReactでZipaddrを使う…

JavascriptのObjectをeachしたい

Javascriptでオブジェクトをeachで回したい時に array同様にforEach使おうとしたらダメだった ダメなパターン obj.forEach(function (v,i) { console.log(i, ':', v); }); 普通にforを使うパターン for (var key in obj) { if (obj.hasOwnProperty(key)) { c…

Railsでdevelopmentのエラー画面をproductionと同じにする

config/environments/development.rb ~~~ consider_all_requests_local = false ~~~ consider_all_requests_local を false にするだけ Configuring Rails Applications — Ruby on Rails Guides

Rubyの多重代入 ,(カンマ)で区切られた代入の挙動

こんなやつが出てきて挙動が分からず困っていたら多重代入というやつらしい。 a, b = Hoge.moge 多重代入についてまとめます。 左辺が1つで右辺が複数の場合 配列に変換される a = 1, 2 #=> [1, 2] a #=> [1, 2] 左辺、右辺ともに2つの場合 左辺の各変数に右…

herokuでworkerだけをrestartする方法

heroku ps -a myapp まずはプロセスを確認 $ heroku ps -a myapp === web (Standard-1X): bundle exec puma -C config/puma.rb (1) web.1: up 2017/03/06 00:00:00 +0900 (~ 10h ago) === worker (Standard-1X): bundle exec sidekiq -C config/sidekiq.yml …

constantizeした時にactive_support/inflector/methods.rb:268:in `const_get': uninitialized constant Hoge (NameError)と怒られる問題[Rails]

h = 'Hoge'.constantize h.create(fuga: 'fuga') した時に active_support/inflector/methods.rb:268:in `const_get': uninitialized constant Hoge (NameError) とHogeという定数、クラスがなかったため怒られてしまった。 safe_constantizeで回避 safe_con…

rake taskの中断はreturnではなくnextだった[Rails]

task :test do puts 'hoge' return puts 'moge' end 実行する rake aborted! LocalJumpError: unexpected return 怒られた… rake taskの中断はreturnじゃなくてnextとのこと task :test do puts 'hoge' next puts 'moge' end 以下の場合はreturnとのこと tas…

brew updateしたら/usr/local/Library/brew.sh: line 32: /usr/local/Library/ENV/scm/git: No such file or directoryと怒られる問題

brew update brew update したら $ brew update /usr/local/Library/brew.sh: line 32: /usr/local/Library/ENV/scm/git: No such file or directory /usr/local/Library/brew.sh: line 32: /usr/local/Library/ENV/scm/git: No such file or directory /usr…

getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

GoogleMapAPIを使って現在地情報を取得しようとしたところ Chromeで getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HT…

All in One SEO Packでアーカイブページにもtitle,descriptionを設定する

All in One SEO Packがアーカイブページにディスクリプションやらのメタタグを出力してくれないなと思ったらどうやらそういう仕様らしい 以下のサイトを参考にさせていただきました。 blog.maromaro.co.jp 追加で設定するためにfunction.php以下を書き足して…

CSSで高さを可変にして縦横比(アスペクト比)を維持する

CSSで高さを可変にして縦横比(アスペクト比)を維持する方法です。 縦横比(アスペクト比)1:1のサイズで幅に合わせて高さを可変にしたい時などに使えます。 paddingの特性を使って実現しています。さっそく使い方から。 CSSで高さを可変にして縦横比(アスペク…

Your Gemfile has no gem server sources. If you need gems that are not already on your machine, add a line like this to your Gemfile:

Your Gemfile has no gem server sources. If you need gems that are not already on your machine, add a line like this to your Gemfile: source 'https://rubygems.org' と怒られた時の対処法 英文読めば分かるですが自分が読まずに調べてしまったので……

Rubyのeach_with_indexでeach中のindexを取得する

each_with_index Rubyの each でインデックスを取得したい場合 each_with_index を使う。 %w(a b c).each_with_index do |n, index| puts "#{index} #{n}" end # 0 a # 1 b # 2 c インデックスを任意の数字から始める with_index indexを1から始めたい場合な…

株式会社サックルに行ってきました

鬼丸さんにご招待していただき株式会社サックルにおじゃましてきました! 打ち合わせスペースなどめちゃくちゃオシャレ!! Pepper君がいる!!Pepperめっちゃ話に割り込んでくる!! (残念ながら写真撮ってないのでWantedlyでご確認くださいまし…) お伺い…

RailsのTimeクラスChangeメソッドについて

TimeクラスChangeメソッドの挙動について まずは年月日を変更してみる。 Time.new(2016, 3, 15, 10, 10, 10).change(year: 2015) # => 2015-03-15 10:10:10 +0000 Time.new(2016, 3, 15, 10, 10, 10).change(month: 1) # => 2016-01-15 10:10:10 +0000 Time.…

Railsで現在のURLを取得、現在のpathを取得

Railsで現在のURLを取得 # http://hoge.com/aa/bb?c=d にアクセスした場合 request.url # 'http://hoge.com/aa/bb?c=d' Railsで現在の pathを取得 # http://hoge.com/aa/bb?c=d にアクセスした場合 request.fullpath # '/aa/bb?c=d' request.path_info # ク…

utm_contentをアナリティクスで確認する

utm_contentをアナリティクスで確認する方法 セカンダリーディメンションで、「広告のコンテンツ」を選択することで確認することが出来ます。

JavaScriptのオブジェクト(hash:ハッシュ)の空判定

javascriptの配列は以下のように要素数調べればいいのですが var a = [1, 2]; console.log(a.lenght > 0); // true オブジェクトにはlengthなど無いと… var h = { a: 1, b: 2 }; console.log(h.lenght > 0); // undefined 解決方法 var h = { a: 1, b: 2 }; …

【ツクリンク】ピクスタさんと提携を発表させていただきました

ピクスタさんと提携を発表させていただきました。 以前リリースしたホームページ制作機能の中で約920万点の写真・イラスト素材を無料で使うことが出来ます。 これにより建設業者さんが今まで以上に簡単に、品質の良いホームページを持てるようになります! …

Railsのリファクタリングに使える情報、気をつけたいことまとめ

Railsで開発する際に気をつけたいことや、リファクタリングに使える記事です。 覚えておきたい、リファクタリングの際に都度つど読み直したい記事がいくつかあったのでまとめます。 qiita.com qiita.com qiita.com qiita.com

jQueryで特定のclassを持たない要素を取得する

.hogeが使えるのかと思ったんですがちょっと違う書き方でした。 not_hoges = $('[class!="hoge"]'); 参考 Selectors - jQuery 日本語リファレンス

CompassでCSSスプライトを簡単につくる[Rails, Compass, CSS Sprite]

Compassを使ってCSSスプライトを作る手順です。 以下の記事を参考にさせていただきました。 CSS3 - Rails + Compass でCSSの開発を高速化! - Qiita まず、CSS Spriteでまとめたい画像をimagesの中に保存します。 あとはSCSSを下記のように。 @import "icons…

Railsでcompass 1.0.1を使う(sass 3.4.9)

Railsでcompass 1.0.1を使おうとした時に依存関係でコケたのでメモです。 その時のエラー文 ActionView::Template::Error (wrong number of arguments (2 for 1) バージョン指定なしでインストールした場合 gem 'sass-rails' gem 'compass-rails' Gemfile.lo…

collection_selectにclassやidなどのhtmlオプションを指定する[Rails]

Railsのcollection_selectにclassやidなどのhtmlオプションを指定する方法 // メソッドの定義 collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {}) // 実際の使い方 collection_select(:user, :tit…

SCSSで.sass-cacheを作らないようにする方法

SCSSをコマンドラインからコンパイルしていると.sass-cacheが作られて邪魔だったので作らない方法です。 使うのはオプションの--no-cache scss --no-cache style.css.scss > style.css sassの使い方はこちらにまとまっています。 Sassコマンドの使い方を覚え…

javascriptでspliceを使って配列の要素を削除する方法

javascriptでspliceを使って配列の要素を削除する方法です。 // splice(削除する要素のインデックス, 削除する要素の数) arr = {'zero', 'one', 'two', 'three'}; arr.splice(1, 1); // arr => {'zero', 'two', 'three'} spliceは削除だけでなく追加もできる…

JavaScriptの連想配列にキーが存在するか確認する

JavaScriptの連想配列にキーが存在するか確認する方法です。 inはこのような使い方してはいけないとのご指摘を頂き修正しました。 var hash = { a: 1, b: 2 }; // inを使った悪い例 console.log('a' in hash); //true console.log('c' in hash); //false // …

'Resource interpreted as Image but transferred with MIME type text/html'とコンソールに出るときの対応

コンソールで以下の様な表示が Resource interpreted as Image but transferred with MIME type text/html Resource interpreted as Image but transferred with MIME type text/css MIME type text/htmlの場合は対象のhtml MIME type text/cssの場合は対象…

ローディング用のgif画像を生成するサービス

色や早さ大きさを自由に変えられるので便利です。 Loader Generator - Ajax loader

jQueryのプラグインを作るときに必要なこと。書き方。

javascript書いててまとめた方がいいなあと思ったので初めてプラグイン作りました。 その時に見た記事とか使ったことのまとめです。 jQuery pluginの書き方 JavaScript - jQuery pluginの書き方をいまさら - Qiita 親要素の取得方法 make a record of…: jQue…

Railsのwhereで日付を条件に指定する

Model.where(created_at: Time.new(2014, 10, 10).all_day) 生成されるSQL SELECT * FROM `models` WHERE (`models`.`created_at` BETWEEN '2014-10-10 00:00:00' AND '2014-10-10 23:59:59') all_day all_day を使うことで該当する日をまるごと範囲指定でき…

brew updateとupgradeの違い[Homebrew]

brew updateはHomebrewと内部で管理しているformulaを最新にする brew upgradeは更新があるパッケージを再ビルドする ことのようです。 またupgradeは特定のformula名を指定して個別にビルドすることも可能です。

mixinでclearfixを使う

mixinでclearfixを使う方法です。 @mixin clearfix { zoom: 1; &:before, &:after { content: ""; display: table; } &:after { clear: both; } } header { @include clearfix; } clearfixはmicro clearfixを参考にしています。 A new micro clearfix hack –…

macターミナルのショートカット

macのターミナルで使うショートカットを何度も検索かけちゃうんで忘れないためによく使うものを書き出してみました。 ⌃A 行頭へ移動 ⌃E 行末へ移動 ⌃K カーソル以降の文字を削除する ⌃W カーソル以前の文字を削除する ⌃C 強制終了 ⌃L 画面を消去する(clear) …