サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
totutotu.hatenablog.com
まずRubyでのオブジェクト指向と言語要素に慣れている場合はJavaScriptのオブジェクト指向でかなり違和感を覚えるような気がします。 JSは全てがオブジェクト (プロトタイプベース:後述) なんかRubyの言ってることと似ているが伝えたい意図が全く違う JSのオブジェクトの構造はRubyでいうハッシュのようなもの JSの中身空っぽ最小オブジェクト var obj = {} 以下みたいな感じで、key値からvalueが参照される。ハッシュじゃんこれ。 var obj = { key: value } JSの関数は「第1級オブジェクト」。だいたい「値」ってことと同意。function() { ... }は別にその他の数字とか文字列とかと扱いに変わりはないないっすよという話。 var f = function() { ... } この「関数=値」を前提にすると、JSのオブジェクトでメソッド
探る過程 ARモデル内で、その属性を更新しようとして以下のようなメソッドを書くとする。 # app/models/user.rb class User < ActiveRecord::Base # ... def toggle_roll status = status == "active" ? "inactive" : "active" save! end end Userモデルのインスタンスメソッドの中でのスコープなら、selfはそのインスタンス自身になってるから、例えば @user.toggle_roll とかやればselfは@userになるので、このメソッドで行われる手続きは、 @user.status = @user.status == "active" ? "inactive" : "active" @user.save! だろうと思う。 ... それが、正しくない。 When
揉めに揉める議論 最初、もりじゅんさんの以下の記事を参考にさせていただこうとしたのですが、 morizyun.github.io Qiitaでも(多分もりじゅんさんの記事を参考にした)同じ例をみかけて、そこでyuki24さんが、この方法はあまりよい方法でないというコメントをしてました。 Railsの404,500エラーページをカスタマイズ - Qiita このコメントでひと記事できてしまうやつ。。笑 必読です。。 ということでApplicationControllerに例外ハンドラを書いてそれに応じてrenderするtemplateを振り分ける、という方法はできれば避けたいですね。 Rails覚えたての頃は、そちらの方法で実装していました。 totutotu.hatenablog.com totutotu.hatenablog.com 実際に最初に静的ページで実装してみると、もともとRai
Everyday RailsのChapter 8「フィーチャスペック」を参考に作ってみます。 フィーチャスペック = 統合テスト モデルとコントローラの単体テスト、テストデータを作成するためのファクトリを全部まとめて、フィーチャテストを行う。 ちなみにコントローラテストについても議論されているけど、今回自分は書いていない。今回最初の段階でそこに大きな工数を割くことができないということと、フィーチャスペックをきちんと書けば複数の重要なコントローラのテストになりうるから。 テストはoutside-inで書く。つまり フィーチャスペック(エンドユーザがタスクを完了する流れを想定しながら) -> コントローラ・モデルテストの単体テスト という流れ。 書いてく 参考記事 Rails + RSpec + Capybara で Devise での認証ログインが必要なインテグレーションテスト(Reques
deviseの代替案として、前々からsoceryいいよなんてきいてたので使ってみます。 github.com @komagata さんにおききしたらつらみはそんなに減らないとなったのが一瞬頭によぎる @komagata devise、つらみを感じてます...。あとはSorceryとかをよくきくのですがどうなのですかね?— 凸(とつ) Totz Yuta (@totzyuta) December 5, 2015 @totzyuta sorceryもそれほどつらみが減ってない感じしてます。monbanが気になってますがstarが少なくて怖いです… https://t.co/trOLzHtXWh— Masaki Komagata (@komagata) December 5, 2015 まぁ…使ってみないことには分からないのでやってみましょう。monbanも気になるところですが。 Special
Single vs Double Rubyでsingle quoteとdouble quoteを書くかは非常に迷いどころで、Rubyistたちの中でもどっちがメジャー、みたいなのはそこまでないみたい。 Based on everything I've read and a review of Ruby style guides, I would say there is no consensus. http://stackoverflow.com/questions/20870375/single-vs-double-quotes 僕はこの回答者のこの答えが好きだなと思った。 think the use of single quotes is completely understandable from the point of view that if the author has no
参考サイト ググったらCOMPHORのサイトだった!COMPHORすぎょい。 Xcode+gitのワークフロー考察 - CAMPHOR- Tech Blog pbxprojとは Xcodeのプロジェクトをgitで管理することの障壁を作っていると思われるproject.pbxproj。こいつは、 プロジェクトの設定を変えた時 プロジェクトにファイルを追加した時 に変更されます。 なので クラスを追加した 画像、音声などを追加した バージョン情報などのプロジェクトの設定を変更した ときとかに変わります。そしてこれらのいずれかが変更されたブランチ同士のmergeだと、ほぼ毎回conflictします。自分で解消するハードルが高いのがかなり辛いです。 どうする? さきほどのCOMPHORさんの記事では、 基本的にはproject.pbxprojの変更を共有できるようにすればいいので方針としてはpro
今使ってる個人用仮想サーバーがGMOのVPSで、結構前から使っててCentOSがめちゃくちゃ古かったり(5.5だったw)、そのプラン自体がそろそろなくなってしまうということだったり、寿司を送り合うコミュニケーションツールを作ってるのでせっかくそれをデプロイするなら別サーバーに移行しようということになった。 以下の選択肢を検討してみる。 DigitalOcean AWS さくらとかGMOのVPS Heroku DigitalOcean 今はフルタイムの方ではAWSを、その他のプロジェクトではDigitalOceanを使ってる。DigitalOceanはそういう用途でかなりアリだなと思っていて、 別々のインスタンス立てるのが楽 => プロジェクトごとにマシンリソースも共有なのはイヤだしインスタンスをドメインごとに管理するのがすごく見やすくて楽だ スケールがめっちゃ楽 => インスタンスをpow
この記事がめっちゃ分かりやすいです。ここに従って進めていきます。 http://qiita.com/QUANON/items/09c87787df6b0d287896 1. Redisをインストール Redisをインストールします。 $ brew install redis Redisについては、以下らへんが詳しいと思う。 Redisとは、メモリ上にKey-Valueストア(KVS)を構築することができるソフトウェアの一つ。 http://e-words.jp/w/Redis.html Redisは,メモリ上で動作するキー・バリュー型の揮発性データベースである。揮発性と聞くと,Redis自身が停止したり,Redisが動作しているハードの電源が切れたりすると,Redisに保存されているデータは消失してしまうように思われるが,Redisはデータをディスクに書き込み,永続化させる機能も持ち合わせ
1. マスタデータの扱いについて rake db:seedするたびにデータが挿入される。 idをインクリメントで自動挿入するときにめんどくさいことになる。 最初に挿入するマスターデータにassociationを張っている場合は、何回も生成してidが更新されると致命的なのでなんとかしたい。 以前はmigrationファイルに書く方法が主流だったみたいだけど、このseeds.rbが2.3.4で追加された理由は「スキーマの生成とDBへの実データの投入は書くところ分けようぜ!」って話だったわけだしmigrationファイルに書いちゃったらマスタ変更したいときに結構無理ゲーになってきそうな感じはある。 方法としては、seed-fuを使うか、seeds.rbで毎回シーケンスをdeleteしてからデータを挿入し直すようにするか seed-fuはdb/fixturesという新しいディレクトリを最低限作らな
最近web制作をやってる会社で働くことになりまして、僕はあまりフロント側の人間ではなかったのだけど、案件をボーンといただいてしまったのでとりあえず最初は手順をまとめながらやってみようと思います。 デザインするときのフローをまとめておきながらやって、自分なりのWebサイトのデザインフローを作っていければいいなぁと思ってます。 今回はもう完成しているサイトの1ページに、新しく項目を追加するって感じの比較的ライトな感じです。 ライトなんですが、何しろデザインわからんすぎて。。。がんばります笑 いざ。 参考にさせていただいたサイト めっちゃ初心者に優しいです。いちから一通りチュートリアル的な形でデザインできる。 Web屋のーりー » WebデザイナーとPhotoshop【前編】 君はいかにしてPhotoshopをWebデザインツールとして用いるか? ここも、丁寧にワイヤーフレームからモックへの落と
ちょっと諸事情により、C言語で音声データのパワースペクトル密度を求めないといけなくなってしまったのでそのメモ書き(どんな事情 パワースペクトル密度とは まず、パワースペクトル密度とはなんでしょうか(全くわかりません) 一応Wikiのパワースペクトル密度のページも読みましたが、何を言ってるんだこいつは状態でした。 これについて知るには、まずパワースペクトルがなんなのかについて一度まとめておきます。 http://www.tagen.tohoku.ac.jp/labo/ishijima/FFT-02.html フーリエ変換もパワースクペクトルも、グラフに表すと横軸は周波数になるみたいです。そして縦軸の値が異なる。 フーリエ変換は縦軸を波形の周波数成分を振幅として表したもの、パワースペクトルは縦軸を波形の周波数成分をエネルギーとして表したものとのことです。 そして単位は以下のようになります。 フ
こんなツイートをみかけました。 How do you check the weather? curl wttr.in — Sure thing! #wttrin pic.twitter.com/mgYzW2ajyq— Igor Chubin (@igor_chubin) 2016, 2月 20 めちゃくちゃかっこいい!!! http://wttr.in/ github.com Tokyoの天気を表示するには、以下のようにすればokです。 $ curl wttr.in/Tokyo ということで、tmuxのスクリーンセーバー(?)にしてみました。 # screen saver set -g lock-after-time 1500 # How's the weather in Tokyo? set -g lock-command "curl -sS wttr.in/Tokyo | head -
電話番号認証、サービスによってはすごい比率が高いらしいので実装したいなと思います。 目次 目次 方針の検討 1. 電話からの音声案内 2. 情報をアプリケーション側で開示した後、ユーザがSMSを送信 3. アプリケーション側から6桁の番号を送信、ユーザはそれをブラウザから入力 実装手順 1. Twillio準備 2. 実装 3. テスト おわり 方針の検討 思いつくいい感じの方法は、3つほど。 電話からの音声案内 情報をアプリケーション側で開示した後、ユーザがSMSを送信 アプリケーション側から6桁の番号を送信、ユーザはそれをブラウザから入力 3番が一番よくあるパターンだと思いますが、まずは1と2から検討してきたいと思います。 1. 電話からの音声案内 いい感じとは書いたものの、1番は手間的な意味でかなりハードルが高いので却下。SMSって届かないことがあるとよくきくので(rebuildでD
手順簡易まとめ 結構内容とか分かってない部分を理解していきながらやりたいので、簡易の手順だけここにまとめておきます。 rails_12factorをGemfileに追加 DBのgemを追加 Rubyのversionを指定 production環境でprecompileできるか確認 デプロイ DBのmigration Herokuデプロイ 以下の公式Tutorialを参考に。 Rails 4 on Heroku | Heroku Dev Center Getting Started with Rails 4.x on Heroku | Heroku Dev Center Logging and asset Herokuのproduction環境ではログを標準出力にストリームする必要があって、その目的+アセットをproduction環境で提供するためのgemをインストールする必要がある。 #
Rails4でリアルタイムなチャットアプリを実装しながら、ActionCableの基本的な使い方をみていきたいなと思います。 完成形こんな感じ。 作ったサンプルアプリは、以下に置いております。 github.com 以下の記事を参考にさせていただきました。 Rails 5's ActionCable and Websockets Introduction | GoRails - GoRails ActionCableの使い方の基礎基礎部分。よいです。 http://nithinbekal.com/posts/rails-action-cable/ Rails 4系でのActionCableを使う初期の実装部分。こちらも非常によいです。 環境 環境はこんな感じです。 $ bundle exec rails -v Rails 4.2.5 $ cat .ruby-version 2.2.3 Ra
ARインスタンスをデータベースから再取得する。 例えば別のリクエストで発生したプロセスがDBのカラムを変更したときに、インスタンスにはもちろん反映されない。 変更されたRDBの内容をインスタンスに反映させるのがこのActiveRecord::Base#reloadというわけ。 @model = Model.find(1) # @model.name => 'RubyKaigi' Model.find(1).update_column(:name, 'Pycon') @model.name # => # @model.name => 'RubyKaigi' @model.reload.name => # @model.name => 'Pycon' といってもreloadというのはオブジェクトの感覚でRDBを扱えるような工夫であるだけで、実施はActiveRecord::Base.findと
これからRailsとRubyをmaster, trunkにちゃんとアップデートして、差分を読んでいくみたいなことをしていきたいなぁと思って、どうせならテストを回せるようになりたいと思い。 RubyKaigi2015で発表されていた以下のスライドが非常に参考になります。ruby coreの人でも知らない情報もあったり笑 Practical Testing of Ruby Core from Hiroshi SHIBATA www.slideshare.net 先に、autoconf, make, make installについて。 autoconfを使ってconfigureを作って配布 - nullnull7の日記 Autotoolsについてのメモ make checkでテストを自動化できる。 rbenvをインストールしていると、configureは/Users/totz/.rbenv/sh
Special Thanks Rails 初心者が Capistrano3 で AWS EC2 にデプロイするためにがんばったこと。 RailsアプリをEC2にデプロイしてみる。 - xxxcaqui.log 追記@2016/04/29 最近は環境やconfファイルのsetupはitamaeでやるようになりました。めっちゃ楽ですitamae。。 goo.gl totutotu.hatenablog.com PostgreSQLの設定は、以下を参考にしていつも自分でやってます。 totutotu.hatenablog.com 手順 手順をまとめると、以下のようになります。 前準備 nginxの設定 設定ファイルの用意 権限変更 Capistrano設定 Unicorn設定 ssh設定 デプロイ myAppの部分は適宜読み替えてやってください。また、設定ファイルのうち編集する必要がある場所にT
今朝、ついに出てましたーー Rails 5.0.0.beta1: Action Cable, API mode, Rails command, https://t.co/Q1Q85ciiNM – It's out! "gem install rails -v 5.0.0.beta1" and party!— DHH (@dhh) 2015, 12月 18 ということで、Release Notesは以下に。 Riding Rails: Rails 5.0.0.beta1: Action Cable, API mode, Rails command 冒頭で、 Rails 5.0! Can you believe it? We only just celebrated the tenth anniversary of Rails 1.0 a few days ago. Time flies wh
せっかくなのでTDDで。 方針 Emailのテストに関しては以下の記事が非常に丁寧にまとめてくださっていて感謝感激です。 ActionMailer のメール送信テストを RSpec で行う | EasyRamble Emailのテストを書き始める前にRails Guidesのテストの項目に目を通しておくことを激オシしておきます。僕はちょっと進んでから先に読んでおいた方がよかったな、、、と若干後悔しましたので。 A Guide to Testing Rails Applications — Ruby on Rails Guides Emailのテストの方針は以下です。 The goals of testing your mailer classes are to ensure that: ・emails are being processed (created and sent) ・the
改行を挿入するとき、いっつもoでやってました。 ですがoだと挿入モードに入ってしまうので、ノーマルモードでいたいときはいっつもそこからCtrl+[とかやって抜けていました。 ここでいい感じの設定が載っていたので参考にさせていただきました。 http://vim-jp.org/vim-users-jp/2009/08/15/Hack-57.html ということでそんなめんどいのしなくても以下を.vimrcに追加すればOとかで改行できるようになります。 nnoremap O :<C-u>call append(expand('.'), '')<Cr>j
以下の記事のAPIのみの設定の部分を参考にさせていただきました。 RailsでAPI作成とAPIのテストのまとめ - Rails Webook ここでは、Uberみたいにドライバーを登録していくサービスのAPIを想定。Driverクラスってのを作ってます。 routes.rbに設定 config/routes.rbに以下のように記述します。 Rails.application.routes.draw do namespace :api, { format: 'json' } do resources :drivers end resources :drivers root to: 'drivers#index' end まず以下でDriverクラスに関するnamespaceを、formatをjsonに指定して作成します。 namespace :api, { format: 'json' }
インデックスを貼るのを忘れたりしてあとから加えたりしたときにどうしようかということで調べてたら。(migrationファイルは原則重ねていくようにしましょう...笑) http://memo.yomukaku.net/entries/iDhORCE $ rake db:resetはDBをドロップし、ただdb/schema.rbにもとづいてDBを作り直すだけなので、migrationのファイルは呼ばれない。 以下を実行すれば、DBのドロップと、migrationファイルの読み込みを順番に行ってくれる。 $ rake db:migrate:reset
Itamaeを使ってみる。 選定基準は、 Rubyの内部DSLで書きたい Ansibleだとそのご期待に添えない でもchefはフルスタックすぎて学習コストが高い... ということでItamae :+1: :+1: みたいな感じです。基本的にRails使うような想定をしております! 構成 以下の構成を目標にがんばります。 rbenv Ruby 2.2.3 MySQL nginx Redis (yum update) Capistrano Railsのデプロイ先のサーバーの設定をしたいので、先にCapistranoの設定をしておきました。 Capistranoの設定は割愛。以下の記事を参考にしてくださると助かります。 totutotu.hatenablog.com itamae itamaeをインストールします。 $ gem install itamae 以下に、この記事の順番でitamae
はじめに 追記@2016/06/22 Railsでの例外処理についてこの後一度真剣に考えてみたので、先に貼っておきます。 totutotu.hatenablog.com 本編 Rails学習ノート続きです。 今回は403 Forbiddenの例外処理を作っていきたいと思います。 おおまかに以下のような流れで書いていきます。 例外を補足する Viewをつくる 例外処理をつくる 403 Forbidden 403 Forbiddenのステータスコードは、要求されたリソースはサーバー上にあるのだけどアクセス権やIPアドレス制限などの問題でアクセス拒否されたことを表します。 例外を補足する まずは例外を補足するための処理をcontrollerに書いていきます。 新しくActionController::ActionControllerErrorクラスを継承したForbiddenクラスと、IpAdd
ローカルでWebrickを立ち上げようとしたときに起こる以下のようなエラーの解決策。 Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (2) エラーの意味としては、「mysqlに接続するためのソケットファイルが指定した場所にないじゃん」ってことになる。要すると、config/database.ymlできちんとmysqlのソケットファイルのパスを指定してやればokです。 以下を参考に、詳細な解決方法。 osx - Cannot find mysql.sock - Stack Overflow まず下のコマンドを叩いて、mysql.sockファイルへのパスが書かれてる場所を探します。 % mysqladmin variables それかMacならlocateコマンドとかで探
以下みたいなエラー出る。 The window server could not be contacted. open must be run with a user logged in at the console, either as that user or as root. ここに従ってreattach-to-user-namespaceをインストールしてtmuxの設定ファイルに加える。 http://www.elmund.io/osx/2015/07/10/open-command-in-osx-tmux/ $ brew update $ brew install reattach-to-user-namespace $ brew upgrade reattach-to-user-namespace $ echo "set -g default-command \"reattac
音声認識の機能を持ったiOSアプリを仕事で開発することになったので、メモしておきます。 いろいろある まずは音声認識機能を実現するためにどんな技術があるのか調べてみたので、有用そうなのをまとめてみました。 DOCOMO音声入力API https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=speech_recognition&p_name=sdk iOS SDK用音声認識機能ライブラリVocalKitの使い方 http://d.hatena.ne.jp/shu223/20110227/1299368179 フリーの iOS 向け音声認識/音声合成ライブラリ『OpenEars』の使い方 http://qiita.com/shu223/items/eda02dc7d334c339ff64 最新記事はこっち -> http://d.haten
次のページ
このページを最初にブックマークしてみませんか?
『totutotu.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く