なべしす

独立系SI企業から完全異業種のベンチャー企業に転職、社内のITインフラを整えるべく颯爽と登場した自称天才プログラマー俺のハートフルブログ

Rails MWS APIを利用するまでの事前準備

MWSとは AmazonマーケットプレイスWebサービスの略です。 自分が販売をしているAmazon各プラットフォーム対して以下のようなことができます。 レポートの取得 出品や商品情報の更新削除などができるフィードのサブミット 商品情報の取得 などなど 詳しくは公…

Pairsで「初回デート費用は男性が全て払う」を選択している人に直接聞いてみた

どんなマインドでそんなの選択してるんだ? 先月ふと思ったんですよ。。。 ペアーズで初回デートは男性がすべて払うにしてる女の子って頭どうなってんだ??その代わりにおっぱいでも揉ましてくれんのか?— なべ@Webエンジニア (@nabe_128) 2017年9月11日 …

GoogleAppsScript JavaScriptを用いてCSVをローカルに書き出す実装

概要 おおよそソースを見たらわかるようにしているので説明はふわっとです。 GAS側のメソッドと機能 メソッド 機能 onOpen() メニューバーのその他に「CSVで出力」を追加 csvDownload() 「CSVで出力」をクリックされるとCSVをダウンロード getData() GASから…

Rails rubyzipでディレクトリを圧縮してダウンロードする

やりたいこと こんな感じのディレクトリを含むデータを 圧縮したい!! 使用するgem rubyzip 導入はREADMEを読みましょう。 ziprubyってのもあるから間違えないように。 rubyzipの基本的な使い方 READMEに書いてある基本的なzip作成方法は以下の通り Basic z…

Rails Stripe サブスクリプション決済実装 プランの登録

概要 Stripeでのサブスクリプション決済実装をRailsで行う場合、 公式で提供されているgemを使用することになると思います。 前回はAPIを使うまでの事前準備を記事にしました。 oredeki.hatenablog.com 今回はサブスクリプションプランをStripeに登録する方…

Redmine プラグイン 今更ながらEasyガントチャートを導入してみた

はじめに Easyガントチャートとは ガントチャートを直感的にいじることができるプラグインです。 https://www.easyredmine.com/redmine-gantt-plugin 今回は無料版を導入しました。 導入の経緯 プロジェクトを管理していたらリスケすることって多々あるじゃ…

Rails Stripe サブスクリプション決済実装 初期設定をしてAPIを使える状態にする

概要 Stripeでのサブスクリプション決済実装をRailsで行う場合、 公式で提供されているgemを使用することになると思います。 実装に当たって Stripe::Plan.create() Stripe::Customer.create() のようなAPIメソッドを使用していくことになるのですが、 今回…

EC2 SGのインバウンド・アウトバウンドに説明の項目が追加されてるー

IP見ただけでどこのIPかなんて把握できるか これはうちのシステムのあるSGのインバウンドルールです。 IPは白塗りしています。 昨日までは説明の項目はなく画像の通りでした。 SSHを6IPから許容していますが、一体これがどこのIP誰のIPかさっぱりわかりませ…

Rails Ransack sort_linkが使えない統計カラムなどをソートするヘルパーを作ってみた

事実確認とやりたいこと Ransackのsort_linkでは統計カラムのソートができない Railsプロジェクトにおいて検索機能を「Ransack」というgemを使って作成している場合、 sort_link()というヘルパー一発でソート機能を実装できます。 しかし、それは単にModelに…

Rails migration decimalカラムをデフォルトで作成すると小数点以下が0桁になるから気をつけよう

decimalをデフォルトで作成すると小数点以下が入力できない 例えば重さを保存するカラムを作る場合はmigrationファイルにこんな感じで書きますよね? class CreateHoges < ActiveRecord::Migration[5.1] def change create_table :hoges do |t| t.decimal :w…

Redmine チケットの文中に画像プレビューを載せる裏技

Redmineのチケットに画像プレビューをつけたい時ってありますよね? Redmineで「こんな感じにお願い!」、「ここ変になってるよ!」などを伝える際に実際のスクリーンショットや写真があったほうが断然わかりやすいのは言うまでもありません。 ↓イメージ↓ し…

Rails 多言語化対応 Model編

はじめに 今後のサービス化していくシステムは多言語化対応が必須となってきます。 なので、多言語化の方針と記述方法を簡単にまとめたので目を通してください。 View編を先に一読ください↓ Rails 多言語化対応 View編 参考サイト 以下のサイトを参考にしま…

Rails 多言語化対応 View編

はじめに このグローバル社会! 開発するサービスによっては多言語化対応が必要になりますよね? 今回自社の開発で多言語化対応をしたので簡単ではありますが導入を紹介します。 View編を先に一読ください↓ Rails 多言語化対応 View編 参考サイト 以下のサイ…

Git 間違ってaddしてしまったものを取り消す方法

Git

はじめに 軽快にaddしていた時に間違ってaddする必要もないものをaddしてしまった経験はないでしょうか? $ git add -p 「y」、「Enter」、「y」、「Enter」、「y」、「Enter」….あっ(察し) 僕はよくあります。 そんな時にaddを取り消す方法を共有します。…

Rails kaminariを使用したページネーションにBootstrapデザインを適用させる

前提環境 RoRプロジェクト プロジェクトにBootstrapの環境が整っている プロジェクトにkaminariでページネーションが生成できる環境が整っている kaminariを用いたページネーションのソースはとてもシンプル <%= paginate @pagination %> このどこにBootstra…

Rails MySQLを使用するアプリケーションでMSSQLServreにも接続する

カオスじゃないかこれは 前提条件 新アプリケーションではRails + MySQLを使用する。 既存のアプリケーションはSQLServreを使用している。 SQLServreはWindowsServerに配置されている。 実現したいこと 新アプリケーションで登録があった場合、 新アプリケー…

Rails migrationでintegerを使う時の注意点〜integerのlimitはバイト数だった〜

limitの定義に注意 マイグレーションファイルでintegerのカラムにlimitを定義する際に注意しないといけないことがある。 integerのlimitとstringのlimitでは意味合いが違う 例えば以下のように記述する。 t.integer :num, limit: 11, null: false, comment: …

Unicorn+Nginx+Rails タイムアウトの設定方法

やりたいこと サーバーのデフォルトタイムアウトが60秒に設定されていた。 スクレイピングやバッチサーバーでは60秒以内に完了しないものが多いのでタイムアウトの時間を設定したい。 設定方法 NginxとUnicornのタイムアウト値を設定する必要がある。 Unicor…

Unicorn+Nginx+Rails サーバが起動できない場合の対処法

事象 Unicorn+Nginx+Rails サーバが起動できない 以下のコマンドでエラーとなった bundle exec unicorn_rails -c config/unicorn.rb -E development -D エラー内容は以下 F, [2017-06-14T16:45:08.020588 #20655] FATAL -- : error adding listener addr=/pr…

RSpecをRailsプロジェクトに導入する

はじめに 弊社プロジェクトでRSpecを導入することになったので、 そのノウハウをとりあえず共有。 必須設定 基本的にGemを追加するだけで使用可能 Gemの追加 group :development, :test do gem "rspec-rails" gem "factory_girl_rails" gem "guard-rspec" ge…

AWS Summit Tokyo 2017 Day4で感じたこと

基調講演は10:00開始だぞ☆その2 今日はちゃんと間に合いましたよ! 茂木さんの講演が聞きたかったので午前だけ出席しました。 とりあえず人がすごい! まあこれは今日に限ったことではないですが、 基調講演ってこんなでかいところ埋まるんですね。 そりゃそ…

AWS Summit Tokyo 2017 Day3で感じたこと

基調講演は10:00開始だぞ☆ なぜか10:30開始だと思っていた僕は、家を出る前に10:00開始だということに気づいた。 「…..うん。事務所行って午前は普通に仕事しよう。」 機械学習系のセッション全然わからん! [スマートニュース] 大規模広告クリック率予測シ…

AWS Summit Tokyo 2017 Day2で感じたこと

AWS Summit Tokyo 2017 Day2 行ってきました! 詳細は後日ゆっくり書くとして感じたことをサササーっと! 人がめっちゃおった 右を見ても左を見ても上を見ても下を見ても人がいた!! 当たり前か。 普段愛媛にいる僕としてはストレスマッハだったぞ! ぱっと…

MySQL TRUNCATEで数値を切り捨てる

1の位を切り捨てたい 1234.56 のような数値を1230に丸めたい! ググってみると、TRUNCATE()という関数がありました。 しかし、TRUNCATEといえばTRUNCATE TABLE。(僕の中では) 全部消えるのでは? いや、全然そんなことなかったです。 MySQLリファレンスは…

ブログ開始から半年!どの記事が多く読まれてるのか分析してみた

ブログ開始から半年の実績 投稿数は31 1ヶ月を30日とすると 30 * 6 / 31 ≒ 5.8 おおよそ6日に1回は投稿している計算となる。 閲覧者数は1360 1ヶ月を30日とすると 1360 / (30 * 6) ≒ 7.5 おおよそ1日に7人が見に来てくれている計算となる。 アクセス元 Googl…

Mission Controlのデスクトップの順番が勝手に変わる件についての対処法

Mac

Mission Controlのデスクトップってなに? 文字面だけではわかりにくいですが、 ここのことです 僕は、左から「ブラウザ」、「エディタ」、「コミュニケーション」、「空」の並びに固定しておきたいのです。 Macで開発やっている人であればこの微妙な不便さ…

プロジェクトスタートアップ決め事

注意 これは、社内向けに作った資料の一つです。 あくまでも弊社での決め事で業界のスタンダートではないです。 はじめに システム開発においてプロジェクトのスタートアップ時に、 「しっかり決めておかないと始まらない」 もしくは、 「いつか後悔すること…

6泊7日で分かった東京出張リモートワークの難しさ

正社員は松山に自分一人 うちの会社は渋谷に支社があり、 非正社員の開発メンバーは東京で働いてもらっています。 ん?なんで?と思う方もいるでしょう。 松山でPGを募集しても全然応募こないのです。 メンバー全員稼働日がバラバラ 開発メンバーは自分合わ…

jQuery 「↓」、「↑」キーでinputのフォーカスを移動させる

何がやりたいか 縦にテキストボックスが並んでいるフォームがあるとします <table> <tr> <td> <input type="text" class="sample-input" id="sample64"> </td> <tr> <tr> <td> <input type="text" class="sample-input" id="sample256"> </td> <tr> <tr> <td> <input type="text" class="sample-input" id="sample512"> </td> <tr> <tr> <td> </td></tr></tr></tr></tr></tr></tr></tr></table>

Youtuberデビュー!?ライブコーディングやってみた

ライブコーディングやろうやろうと思ってたんです oredeki.hatenablog.com この記事でも言ってましたが、 人に見てもらうことでいいところ悪いところ見えてくると思うし、 初心者の方がコーディングってどんな雰囲気なのか感じてくれたら嬉しいなーって。 ど…