Kawaii Lab

プログラミングとかサービス開発とか

2019-01-01から1年間の記事一覧

スリープしてもSSHしているサーバーとのセッションが切れないようにする設定

Code Host * ServerAliveInterval 60 ControlMaster auto ControlPath /tmp/%r@%h:%p 解説 ServerAliveInterval 設定したsec毎にサーバーに対してリクエストを送り続けてセッションを維持する 会社支給のPCの場合、短時間でスリープさせられるのでセッション…

GASで文字列を置換、整形し出力する

概要 Googleのスプレッドシート便利ですよね。 でもテストデータを作るときに繋げる単語をカラム毎にわけて、Join()でつなげる作業が辛くなってきたので要素だけ放り込んで出力するスクリプトを書きました。 コード 簡単に言うと、B列に書かれた文字列をreso…

PRを出すときに個人的に気をつけていること

はじめに PRの内容は原則ステークホルダー(e.g. :PO、ユーザー)に向けて見せることを意識した構成にしましょう。 レビュワー(もしくは未来のコミッター)はPRを見たときに知りたいことは、コードの流れや処理ではなく背景や実現したいことのはずです。 達成し…

健全なスクラムチームを目指すための大事なこと

コミットメントを宣言することができる ストーリーの背景を理解し、ACの適切な設定ができること ACを満たすまでのプロセスをイメージすることができ、チームの基準を参考にポイントを算出できること プランニングでホワイトボードなどを使ってプロセスを説明…

自分のキャリアビジョンを晒す

タイムラインでキャリアビジョンを公開しているのを見ました。 私もそろそろ転職活動を決めないといけない時期にきているのでここで整理しておきます。 興味 ユーザーが本当にやるべきことに対して集中して価値を出せるプラットフォームを作りたい。 既存の…

CodilityのLesson2をGoで解いてみた(続き)

概要 オンラインコーディングの試験であるCodilityのLesson2を自分なりに解いてみました。(続き) CyclicRotation coding task - Learn to Code - Codility 前提 以下の条件で配列が生成される 要素: N個 シフト数: K回 要素は配列の終端に達した後、シフトす…

CodilityのLesson2をGoで解いてみた

概要 オンラインコーディングの試験であるCodilityのLesson2を自分なりに解いてみました。 https://app.codility.com/programmers/lessons/2-arrays/odd_occurrences_in_array/ 問題の要約 以下の条件で配列が生成される 要素: N個 空ではない 値は必ず奇数 …

CodilityのLesson1をGoで解いてみた(解説付き)

概要 オンラインコーディングの試験であるCodilityのLesson1を自分なりに解いてみました。 BinaryGap coding task - Learn to Code - Codility 使用したのはGoになります。 問題の要約 以下の範囲の整数値が与えられた時、バイナリ化し1で囲まれた0ブロック…

CQRSとCQS

What is CQRS Command Query Responsibility Segregation 和訳すると責務分離によるコマンドとクエリパターン になる What is CQS Command Query Separation 和訳すると分離によるコマンドとクエリパターンになる What is コマンド and クエリ コマンドとは…

Rails のテストにおけるログレベルの変更ベストプラクティクス

Railsでは以下の方法でテストのログレベル変更ができるようです。 Rails.logger.levelに動的にレベルを付与する configファイルでレベルを設定する 基本的にログはテスト結果のコンソールに出さないほうがいいでしょう。 UTの結果をPRに貼る場合に加工しない…

Railsで作ったAPIのテストを全通させて学んだこと

RailsWay から外れるのは辛い 今回はModelを使わないRailsAPIを作っているのだが、アプリケーションからDBを切り離そうとするとそれだけで苦戦するので、最初からRubyだけで作った方が楽なのかもしれない。 また、gem同士の依存関係が強くRSpecもDBの接続あ…

RSpecの知見を得た

導入 こちらの記事で暫定的なテストルールを策定したが、実際に描いている内に不可能なこと、非効率的なことが判明してきた。 there-you-moon.hatenablog.com この記事ではそれらの原因を踏まえて改善策を策定する 問題 beforeの中で letは書けない テストの…

RSpec テストルール

各Roleにおけるルール describe ユーズケースが記述される e.g: 800m圏内のレストランを取得する context ユーズケースの中で前提条件が複数存在する場合に記述される e.g.: 営業中のレストランが存在しない時 before exampleが依存するオブジェクトを準備す…

GCSのCLIツールをGoとオニオンアーキテクチャで作ってみた

リポジトリはこちら https://github.com/KamabokoHouse/go-storage 機能的を説明すると引数で受け取ったバケットのオブジェクトを一覧表示するというCLIツールです。 アーキテクチャ ディレクトリは以下のようになっています。 (全部は説明しないので特徴的…

DBに依存しないRailsアプリケーションを作成した

現在こちらのPRで作成している story0002 eat-backが徒歩圏内でランチができる店を知ることができる by KamabokoHouse · Pull Request #2 · KamabokoHouse/eat-back · GitHub 当初RailsではDBが必須だと考えていたのだが、調べたところによると必須ではない…

今日の進捗はDockerのDBイメージと連携で詰まった

現在Dockerの環境構築をしている PG::ConnectionBad: FATAL: role username does not exist というエラーが出て接続できないので明日解消したいと思う POSTGRES_USERに与えればRoleが作成されると思ったがそうではないのか...謎が深すぎる docker-compose.ym…

今日の進捗はRailsの自動CI/CDフローを整備した

以下の二つを達成した devブランチにマージしたらdevサーバーにリリース masterブランチにマージしたらstgサーバーにリリース herokuだとpostgres DBしか使えなかったのでDBの変更もした。 記事によっては開発環境はSQLite3でherokuはpostgresが多かったのだ…

今日の進捗

やったこと --apiオプションを使うためにRubyのVersionを2.6にあげた fishだとrbenvのインストール方法が違う fishでrbenvを導入する - Qiita こちらの手順を実行後,rbenv initでインストール完了 githubリポジトリを作った GitHub - KamabokoHouse/eat-back…

story0002の設計をした

バックログ サービス開発を始めるので要件定義をしてみた - there_you_moon’s diary story0002 eat-backが徒歩圏内でランチができる店を知ることができる AC GET /restaurant から 半径800メートル圏内の店を取得できる Dockerにより高速な開発環境が実現さ…

Rubyのクラスで使う変数について調べてみた

インスタンス変数 インスタンス変数はクラスのインスタンス毎に異なる値を持てる変数 基本的にはこちらを使うことになるだろう @val クラス変数 クラス変数はクラスのインスタンス全てで共有される変数 スコープが広いため通常の使用には適さないので、(そも…

クックパッドのエンジニア採用イベントに行ってきた!

今回は以下のイベントに参加して参りました! cookpad.connpass.com オフレコの話もあるということなのでそこら辺はぼかして書いて行きたいと思います! まず受付をすると、なんとクックパッドのロゴ入りトートバッグがもらえました! クックパッドのロゴが…

活動前の技術棚卸し

技術の棚卸しをしてみる 導入 なんか毎回職務経歴書書くたびに一から考えて、書き直してる気がするので一旦ここで棚卸しをしてみる。 今後の職務経歴書はこの記事を参考に変えたりするつもり。基本A4ペライチで収めるように努力する。 今後はよほどのことが…

Rubyの謎、Blockに迫ってみた

Block とは Blockの定義は以下になります。 複数のコードで構成される Blockに名称をつけることができる 複数のコードは中括弧({})で囲まれる Blockは同じ名前の関数から呼び出すことができる 関数からはyieldで呼び出すことができる 実際に動かしてみた def…

Slackにお邪魔して参りました(Otemachi.rbにて)

概要 今回Otemachi.rbに参加するにあたり、Slackの東京オフィスにお邪魔して参りました。 enechange-meetup.connpass.com 備忘録程度にまとめてみます。 Slackの見学ツアー 屋内は基本的にシックな感じなのですが、日本を意識していらしく木目などが組み合わ…

Rubyでバブルソートを実装してみた

バブルソートとは 全ての要素に対してて隣接する値同士を比較し入れ替えていくソート法である。 総数をnとして n(n-1)/2 の繰り返しを行います。 最初の周回で最後尾の要素が決定する 次の周回では決まった要素を除いた要素たちで周回を行えばいい(/2) 最後…

story0001の設計をした

概要 以下のストーリーの設計をする story0001 現在地の緯度経度を取得することができる AC {{domain}}/にアクセスで緯度経度を確認できる local開発が高速に行える CI/CDが整備されリリースの秩序が保たれている WA 現在地の緯度経度を取得する ブラウザのA…

サービス開発を始めるので要件定義をしてみた

Service名 Now->Eat(仮) 概要 ユーザーが今日のランチに使うお店を迷わずに決めることができるコンシェルジュWebサービス。 ペルソナ 25才 ~ 35才 独身 男性 オフィスで働く人 渋谷や新宿の飲食店が周囲にあるオフィス街 決まったお店に行くことがない 飲食…

Rubyのifは文法的に読めなくて辛い

Ifの書き方 ワンライナー Rubyでは以下のようにifが書ける JavaやJSとは逆の順になっているので勘違いが多くなりそう $condition = true print "ok!" if $condition unless ifの逆もあるらしい !if的なやつ !if使うと可読性めちゃ下がるので標準でサポートし…

Hello Ruby! -RoRはまだ早かった件について-

Rubyについてのお勉強を始めた。 クラスの作り方 基本的には以下の形式でClassを作るみたい 先頭大文字ね class Class名 end メソッドは以下の形式で宣言するみたい。 def method名 end コンストラクタの形式は固定されていて、以下のメソッドをクラス内で宣…

BigQueryを完全に理解する

BigQuery とは SQLインターフェースが使用できるデータウェアハウスです。 GUI,クライアントライブラリからのAPIなどからアクセスすることができますが、アクセス制御をかけることもできます。 サードパーティを使用したデータの読み込みや視覚化ができます…