Rails5(Turbolinks5)でGoogle Analyticsを設置

Rails5(Turbolinks5)の環境でGoogle Analyticsを設置した時のメモ。 Turbolinks Compatibilityに掲載されている情報に古さが出てきていたので他の方法を調べていたところ、turbolinksのissuesで同じテーマのやりとりを見つけたのでこちらを参考にしました。 …

DEPRECATION WARNING: alias_method_chain is deprecated

Rails5で作業中に下記のWARNINGが表示されました。 DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super. alias_method_chainが使用されているgemを…

Amazon EC2にSFTPで接続

Amazon EC2に「FTPで接続したい」と言われた時のメモ。 作業ユーザーを作成 $ sudo useradd hoge $ sudo passwd hoge $ sudo visudo hoge ALL=(ALL) ALL 鍵の作成 $ sudo su - hoge $ mkdir ~/.ssh $ ssh-keygen -t rsa $ mv id_rsa.pub authorized_keys $ c…

肩こり・腰痛対策のストレッチ動画

肩こり・腰痛対策のストレッチ動画メモ。 ニューストレッチ⑥(あべこべ体操) 30秒で首がほぐれてしなやかになる 『股関節をほぐせ』進化したストレッチ~ニューストレッチ(あべこべ) ニューストレッチプログラム5ー30秒で床に手がつくようになる(立位) …

NameError: uninitialized constant AWS

「NameError: uninitialized constant AWS」のエラーが出た時の対応メモ。 エラー内容 NameError: uninitialized constant AWS 原因 aws-sdkのバージョン1と2でネームスペースが違う NameError: uninitialized constant AWS. If you receive this error, you…

Rails環境の構築

趣味の開発用にVPSでRails環境を構築した時のメモ。 Rails環境構築 rbenv + ruby-build $ sudo yum update $ sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf au…

ChainerでMNISTを試す

ChainerでMNISTのサンプルコードを試しました。 参考:pfnet/chainer Chainerをインストール $ pip install chainer サンプルコードを動かす chainer/examples/mnistのディレクトリにMNISTのサンプルコードがあります。学習時間は15分程度でした。 $ python …

CapistranoでPermission denied (publickey)が出た時の対処

Capistranoでdeploy:check時にPermission denied (publickey)のエラーが出た時の対処法メモ。 原因 デプロイ先のサーバーで秘密鍵・公開鍵の作成管理が行われていないため、デプロイ先のサーバーからgithubに接続できない。 対応 ssh agent forwardingを利用…

Rails5で日本語化

Rails5で日本語化する時のメモ。 ./config/application.rb # Application configuration should go into files in config/initializers initializers以下の設定に変わったようです。設定は下記のissueを参考にしました。 https://github.com/rails/rails/iss…

フリーランスエンジニア3年目の2016年振り返り

フリーランスエンジニアとして3年目の2016年の振り返りです。 個人開発 尊敬するエンジニアの方が主催したシードアクセラレータープログラムに参加しました。残念ながら、そこで開発したサービスから話が発展することはなかったのですが、サービスの企画検討…

フリーランスの引っ越しで住所変更した場合の手続き

フリーランスの引っ越しで住所変更した場合の手続きメモ。 必要な手続き 事業を継続する前提で引っ越しした場合は「所得税・消費税の納税地の異動に関する届出書」を引越し前・引っ越し先の税務署にそれぞれ提出。 [手続名]所得税・消費税の納税地の異動に…

OANDA APIで現在のレートを取得

練習用にOANDA APIでEUR/USDの現在のレートを取得します。 Sandbox 開発ガイドを読むとsandbox環境は認証が必要ないので最初にこちらで実行しました。 開発ガイド | OANDA API $ curl -i "http://api-sandbox.oanda.com/v1/prices?instruments=EUR_USD" curl…

2016年に買って良かったもの10選

2016年に買ってよかったものをまとめました。 ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装作者: 斎藤康毅出版社/メーカー: オライリージャパン発売日: …

OANDA APIを利用するための準備

OANDA APIを利用するためにアカウントの登録とAPIのアクセストークンの発行を行います。 1. OANDA fxTrade Practiceのアカウント取得 日本の居住者の方が、OANDA APIを利用するには、OANDA Japan株式会社でfxTrade(本番口座)もしくはfxTrade Practice(デ…

システムトレードの参考記事

背景 AI・人工知能分野が盛り上がりを見せる中で、どういった関わり方ができるかを模索していました。ある勉強会でディープラーニングを応用したシステムトレードの開発に取り組んでいる方の話を聞く機会があり、そこでシステムトレードについて興味を持ちま…

シグモイド関数

数学を避けてきた人生の報いを受けながらシグモイド関数について学んでいます。本を読み進める上で以下の記事を参考にしました。 シグモイド関数の参考記事 Artificial Neural Networks/Activation Functions シグモイド関数 How to calculate a logistic si…

Python3でTensorFlowのMNISTチュートリアルを試す

Python3環境でTensorFlowのMNISTチュートリアルを試しました。 Qiitaに丁寧に解説された記事があがっていたので、そこに掲載されているサンプルコードをコピペ(Python3に合わせて一部修正)で動かしました。 qiita.com どういった処理を行っているかについ…

videojsのサンプルコード

video.jsの動作確認用のサンプルコード。 S3から動画を読み込む際には、CORS設定の編集が必要。 <html> <head> <link href="http://vjs.zencdn.net/5.11.9/video-js.css" rel="stylesheet"> <script src="http://vjs.zencdn.net/5.11.9/video.js"></script> </link></head></html>

TwitterボタンをTurbolinksに対応

TwitterボタンをTurbolinksに対応した時のメモ。 TwitterボタンをTurbolinksに対応 twttr_events_bound = false $ -> loadTwitterSDK -> bindTwitterEventHandlers() unless twttr_events_bound bindTwitterEventHandlers = -> $(document).on 'turbolinks:l…

NginxをLet's EncryptでSSL対応

NginxをLet's EncryptでSSL対応した時のメモ。 python2.7をインストール $ sudo yum install centos-release-SCL $ sudo yum install python27 phthon27-python-tools $ sudo yum install dialog $ sudo su # vi ~/.bashrc ~/.bashrc source /opt/rh/python2…

Googleのガイドラインから気になった部分をメモ

Googleのガイドラインから気になった部分をメモ。 コンテンツに関するガイドライン - Search Console ヘルプ 品質に関するガイドライン - Search Console ヘルプ 詳細な記事 参考記事:「詳細な記事」機能に表示される記事 - Search Console ヘルプ schema.o…

Railsで多対多の関連をチェックボックスで設定

Railsで多対多の関連をチェックボックスで設定する時のメモ Model $ rails g model post name:string $ rails g model tag name:string $ rails g model post_tag post:references tag:references post.rb class Post < ActiveRecord::Base has_many :post_t…

RailsのテンプレートをBootstrapが適用されたslimファイルで生成する

RailsのテンプレートをBootstrapが適用されたslimファイルで生成する時のメモ。 RailsのテンプレートをBootstrapが適用されたslimファイルで生成 gem 'slim-rails' gem 'html2slim' gem 'bootstrap-sass' gem 'bootstrap-generators' $ bundle install $ rai…

Carrierwave使用環境でCapistranoでデプロイした時のメモ

Capistranoでデプロイした時に、Carrierwaveでアップロードした画像ディレクトリが削除(上書き)されてしまった時のメモ。 アップローダファイルを修正 下記のリンクを参考にアップローダファイルを修正 Carrierwave uploaded Images aren't persistent aft…

#18 テストデータを作成

ある程度動くようになってきたので、デバッグを兼ねた動作確認のためにテストデータを生成します。 Gemfile gem 'ffaker' seeds.rb 10.times do User.create(name: FFaker::Name.name, email: FFaker::Internet.safe_email, password: FFaker::Internet.pass…

#17 質問閲覧ページの作り込み

旅行に出かけていた関係で開発が滞っていました。 今日からまた再開したいと思います。 質問閲覧ページ 今回は質問閲覧ページを作り込んでいきます。まずは、質問部分です。今回はYahoo知恵袋を参考に構成図を作成しました。 今回作成しているサイトに合わせ…

#16 ユーザー名を表示

ユーザー名を表示します。現状ユーザー名の入力が必須項目ではないので、入力がない場合は匿名表示する処理をヘルパーに定義しました。これを各所で利用したいと思います。 def username(user) user.try(:name) || 'Anonymous' end 参考 【Rails】Helperを使…

#15 トップページの作り込み

第15回では、トップページに表示する質問一覧部分のレイアウトや要素を作り込んでいきます。日頃お世話になっているteratailを参考にしました。 ワイヤーフレームの作成 teratailのトップページの質問部分の構成をざっくりと書き起こしてみました。 今回、開…

#14 フッターの作成

第14回ではフッターを作成します。Bootstrap公式サイト内のサンプルの中から以下のテーマを参考にして作成しました。 Jumbotron フッターを最下部に固定するテーマ「Sticky footer」と悩みましたが、プロトタイプでは極力CSSに手を加えたくなかったので、今…

#13 ドロップダウンメニューの作成

ドロップダウンメニューを作成します。ヘッダーエリアの中に要素が増えてきたので一部をドロップダウンメニューにまとめたいと思います。Bootstrapの公式サイトにそのまま使えるドロップダウンメニューのサンプルが置いてあったので、こちらを利用しました。…

#12 deviseでカラムを追加

ユーザー名を表示するためのカラムを追加します。 $ rails g migration AddNameToUser name:string 内容を確認して実行します。 $ rake db:migrate ユーザー名を編集するためにstrong parametersを設定します。 application_controller.rb before_filter :co…

#11 ransackで検索機能を作成

第11回では、検索機能をつくります。今回はransackを使います。 Gemfileに追加 gem 'ransack' $ bundle install 以下のリンクを参考にしながら作業を進めていきます。 activerecord-hackery/ransack 当初の実装 application_controller.rb before_filter :se…

#10 質問投稿ページのスタイリング

質問投稿ページのデザインを整えます。まずはヘッダーのボタンに質問投稿ページへのリンクを設定します。 application.html.slim = link_to 'Ask', new_question_path ユーザー情報ページで使用したスニペットを利用して、質問投稿ページに適用します。 質問…

#9 Bitbucketでプロジェクト管理

第9回では、ソースコードをGitで管理します。三日坊主で終わるかもしれないと思っていたこの開発も地道に継続できているので、Bitbucketにリポジトリを作成して管理していきます。 Bitbucketで新規リポジトリの作成 「ローカルディレクトリを設定する」のガ…

#8 サインアップページのスタイリング

第8回では、前回と同じ要領でサインアップ画面・ユーザー情報画面のデザインを整えていきます。Bootsnipp でスニペットを検索して、修正を加えながら適用していきます。 サインアップ Before After ユーザー情報 Before After

#7 ログインページのスタイリング

第7回ではログイン画面のデザインを整えます。今回はBootstrapのスニペットを集めたbootsnippを使います。サイト内からログイン画面に利用できそうなコードを検索して、erb2slim.comでHTMLからslimに変換して使用しました。bootsnippではキーワード検索だけ…

#6 RailsでBootstrapを導入

前回、Pingendoで作成した画面を適用していきます。事前にbootstrap-sassを追加してTwitter Bootstrapを使えるようにします。このタイミングでFont Awesomeを使うためにfont-awesome-railsも追加します。インストール方法・使い方はそれぞれ以下のリンクを参…

#5 Pingendoでレイアウトの作成

モックレベルの動作を目指して、要素の配置を確認するためにレイアウトを作成します。今回は、知人の紹介で気になっていたPingendoを使ってみたいと思います。 以下の2画面をつくります。 トップページ 質問閲覧ページ 早速Pingendoのサイトからダウンロード…

#4 回答機能の作成

第4回では、質問に回答する機能をつくります。 質問への回答機能 scaffoldを使用してテンプレートを作成します。 $ rails g scaffold answer user:references question:references content:text 生成されたマイグレーションファイルのquestion項目にnull: fa…

#3 仕様の作成

第3回に入る前に、改めて仕様を整理しました。実はこの時まで何をつくるか悩んでいたのですが、色々と考えた末にQ&Aサイトをつくることにしました。仕様の整理については「パーフェクト Ruby On Rails」を参考にしました。 パーフェクト Ruby on Rails作者: …

#2 deviseでログイン機能の作成

第2回では、メールアドレスを利用したユーザー登録・ログイン機能をつくります。 deviseの導入 参考サイトを見ながらdeviseを導入します。 [Rails] deviseの使い方 plataformatec/devise deviseとは ユーザー登録して、送られてきたメールのリンクをクリック…

#1 Railsの環境構築

ここ数ヶ月仕事の負荷が高かったため、仕事以外の開発から意識的に離れて過ごしていたのですが、落ち着く目処がついて、徐々に何かやりたい欲が湧いてきたので久しぶりに個人サービスを開発しようと思います。1日1~2時間程度の作業量を目安に、2~3ヶ月後のリ…

TensorFlowでHello world

Googleが提供する機械学習ライブラリTensorFlowでHello worldを出力するまでのメモ 環境構築 pipをインストール $ sudo easy_install pip TensorFlowをインストール $ sudo easy_install --upgrade six $ sudo pip install --upgrade https://storage.google…

Railsでいいねボタンを表示

Turbokinksでajaxな画面遷移をした際にいいねボタンが表示されない時の対応メモ turbolinks対応でボタンのjsを読み込む <body> <div id="fb-root"></div> <div class="fb-like" data-send="true" data-layout="button_count" data-width="450" data-show-faces="true"></div> $ -> loadFacebookSDK() bindFacebookEvents() unless window.fbEvent…</body>

Railsのhttps通信で無限ループになった時の対応

Railsのhttps通信で無限ループが発生した時の対応メモ config.force_sslをtrueに設定後、無限ループが発生 ./config/enviroments/production.rb config.force_ssl = true X-FORWARDED_PROTO 「proxy_set_header X-FORWARDED_PROTO https;」を設定しないと、R…

NoMethodError: undefined method `name' for nil:NilClass

has_manyで紐付けしているモデル間の挙動でエラーが発生した際の対応メモ 環境 Ruby 2.2 Rails 4.1 エラー内容 NoMethodError: undefined method `name' for nil:NilClass 原因 Ruby2.2とRails4.1の環境ではActiveRecordにバグがある(らしい) I think ther…

Railsで環境変数を設定する

Railsで環境変数を設定する時のメモ 最初はコマンドで設定したのですが、ログアウトすると設定した環境変数がリセットされていることにハマった気づいたので.bash_profileで設定しました。 .bash_profile $ vi ~/.bash_profile export RAILS_ENV=development…

Railsで現在の環境を確認する

Railsで現在の環境を確認する時のメモ 現在の環境を確認する $ rails console 環境を指定する $ rails console staging エイリアスを使用した場合 $ rails c staging 参考 Railsで現在の環境を確認する Rails のコマンドラインツール

omniauthでログイン後に元のページに戻る

omniauthでログイン後に元のページに戻る処理のメモ redirect_to request.env['omniauth.origin'] request.env['omniauth.origin']から元のページのURLを取得する。 参考 omniauthで、OAuth処理を始めたURLへコールバックしたい場合(リンクのみ) Deviseとo…

ajax通信時に実行順序を保証する

複数のフォームをajax通信で送信するという処理をつくった際に、非同期通信がほぼ同時に行われて処理の順序が動作ごとに異なったため、1つ目のフォームの処理が完了したら2つ目の処理がはじまるという形式に書き直した時のメモです。 $(function(){ $("#subm…