読者です 読者をやめる 読者になる 読者になる

Docker を使って Rust に入門してみた

前々から Rust の良いと聞いていたので、ちょっと入門してみた。 Rust に入門した https://t.co/UfBJ6c1i9C— 神速@リリカルエンジニア (@sinsoku_listy) 2017年2月27日 参考のサイト 公式の プログラミング言語Rust が分かりやすそうなので、これを見ながら…

bundler_diffgems という gem を作りました #speee_lounge

2/18(土) と 2/25(土) に Speee さんのもくもく会に参加して、 gem が出来たので紹介。 speee.connpass.com bundler_diffgems bundler_diffgems は bundle update を支援するための CLI ツールで、GitHub の比較URL を簡単に表示できます。*1 インストール方…

名古屋Ruby会議03に参加した #nagoyark03

2/11(土) に 名古屋Ruby会議03 に参加してました。 感想 良かった 会場が大須演芸場ってこともあり、他のイベントと雰囲気が異なっていてとても良かったです。 #nagoyark03 を見ると雰囲気がわかると思います。 発表者の口調もなんか落語っぽい感じになって…

転職DRAFTの友達紹介でオライリー本が貰えるのはいつなのか?

転職DRAFT は友達を紹介する(もしくは紹介される)とオライリー本が貰えます。 ただ、7月くらいに 友達の紹介 で登録して、更に8月に 友達を紹介 したのですが、まだ1冊しか頂けていない。 発送時期について TOP に紹介キャンペーンについては書かれていま…

paiza.IO から paiza.IO API を使って再帰呼び出しを書こうとして動かなかった話

タイトルの通りだけど paiza.IO API を見つけた時にふと思い浮かんだので試してみた。 まぁ、これ動いちゃったら paiza.IO のリソースを使い潰せるので、ちゃんと対策してるんだろうなー。 コード 1 FizzBuzz です。途中にある p はデバッグ目的のやつ。 req…

Docker Remote API を使ってコンテナを起動させてみた

Docker Remote API を触って、簡単なコマンドを実行してみた。 実行環境 $ docker --version Docker version 1.12.1, build 6f9534c API ドキュメント docs.docker.com コンテナの作成 $ curl -v -X POST \ --unix-socket /var/run/docker.sock \ -H "Conten…

2年ぶりに dotfiles を更新した

sinsoku/dotfiles を2年ぶりくらいに更新した。 更新した理由 MacBook 12inch を買ったことにより、バッグが軽くなった。そして、財布もだいぶ軽くなった— 神速@リリカルエンジニア (@sinsoku_listy) 2016年11月2日 先日、MacBook 2016 を買ってしまったから…

速習プログラミングElixir勉強会を主催してました #quick_elixir

10月末くらいから Elixir の勉強会を主催していて、今日で一通り終わりました。 connpass.com 資料 今日のLT資料は Qiita に上げた。 Elixir のマクロとプロセスの関係 この勉強会を開催したきっかけ 10月にプログラミングElixir を買ったけど、積み本になり…

Elixir で Sleep Sort を実装する

タイトルの通り、 Sleep Sort を実装してみました。 Elixir の並行プログラミングを生かしているけど、全く実用的じゃないソートですね! defmodule SleepSort do def sort(collection) do me = self collection |> Enum.map(fn (n) -> spawn_link fn -> (se…

factory girl で特定のメソッドを rspec-mock の stub で潰す

備忘録。 外部APIを呼ぶメソッド、処理に時間のかかるメソッドなど、普段のテストでは不要であるメソッドは factory 側で潰すと楽。 FactoryGirl.define do factory :user do transient do stubs [:call_external_api] end after :build do |user, evaluator…

8月に購入したバルドハート、テイルズオブベルセリアをクリアした

8月末に発売された「BALDR HEART バルドハート (PC 18禁ゲーム)」と「テイルズオブベルセリア(PS3)」を最近やっとクリアできたので、たまにはゲームの感想でもブログに書いてみる。 Qiita と違ってこういう記事書いても非公開にならないので、はてなブログは…

Rails で gem を導入するときに最低限やること

普通にみんなやっていることだと思うけど、自分が gem を入れるときに最低限やることをまとめてみた。 何かしらの方法で探してきた gem を「導入するかどうか」の判断をするときにやることです。 やること一覧 今後もメンテされそうかを調べる README を 全…

rake notes で TODO が増え過ぎたら CI で検知できるように拡張する

Rails アプリから機能を gem 化する方法の実例を1つ公開してみる。 sinsoku.hatenablog.com rake notes を拡張する rake notes で Rails アプリ内の "OPTIMIZE|FIXME|TODO" を一覧表示できるが、これを拡張する。 ソースコードの探し方 rails/rails のリポジ…

Rails アプリから汎用的な機能を gem 化する方法

これから Rails 用の gem を作ってみたい人向けの内容。 gem 化する 実は下記のようなコードを置くだけで RubyGems に登録しなくても、 gem として認識される。 Gemfile gem 'hello_world', path: 'lib/hello_world' lib/hello_world/hello_world.gemspec # …

Rails の timestamps カラム(created_at, updated_at) と別に日時カラムを作る理由が分からん

Rails を使っていて、日時カラムを作るケースがありますが、あれのメリットが知りたいと思って、ブログに書いてみた。 created_at を使わず、あえて自分達で 別のカラムに https://t.co/BzSE87AzJJ を保存する実装にする意味が分からん…。非同期処理で時間が…

Rails の link_to_if にブロックを渡したときの挙動が分かりにくいので注意

Rails の link_to_if にブロックを渡したときの挙動が分かりづらいので、使う場合の注意点をまとめてみました。 TL;DR ブロックの内容を条件によってリンクにしたい場合は capture を使うのがシンプルで良いです。 <% body = capture do %> <%= image_tag 'i…

tachikoma_ai を v0.3.0 にアップデートしました #mokumoku_onsen

7/16(土)〜18(月)の2泊3日で開発合宿に参加していて、前々からやりたかった tachikoma_ai の gem のアップデートをしました。 開発合宿について、詳しくは id:niwatako さんが記事を書かれているので、興味ある方はそちらを参照して下さい。 niwatako.hatena…

Swift でトランプを実装しようとして、勉強になってる話

まだ全然実装できていないけど、とても勉強になっているので途中経過をブログに書いてみる。 github.com なぜやっているのか トランプくらい簡単に実装できる・・・そう思っていた時期が(ry 環境 Swift 3.0-dev on Docker swiftdocker/docker-swift この…

Swift で Generics を使って Comparable の挙動を変更する

昨日の続きを調べて、一応やりたかったことは実現できたのでブログにも書いておく。 sinsoku.hatenablog.com サンプルコード gist のコードの通りだけど、 Generics を使ってクラスの初期化時に Comparable に使う struct を渡せるようにしている。 こうやっ…

Swift で Generics と空クラスを使ってメソッドの挙動を変える

Generics 周りの挙動の備忘録。 適当な空のクラスをマーカーとして、メソッドの振る舞いを変えられた。

WIP Pull Request Unhighlignter for GitHub が使えなくなったので Tampermonkey の UserScript で再実装した

WIP Pull Request Unhighlignter for GitHub が便利で今まで使っていたけど、昨日突然使えなくなった。 ※ 原因はGitHubのCSSセレクタが変わったため。現在は kyanny/chrome-ext-wip-pull-request-unhighlighter-for-github#6 がマージされ動くようになってる…

Swift の Mirror API を触って、動作を XCTest で確認した

今日やってた勉強内容。 github.com 動かし方 $ git clone https://github.com/sinsoku/study.git $ cd study/swift $ bin/run swift build -C PlayGround $ bin/run swift test -C PlayGround ソースコード // PlayGround/Sources/PlayGround/SimpleClass.s…

XCode を使わず Swift で TDD しながら FizzBuzz を書いてみた

この前作った Swift の環境 で勉強として FizzBuzz を書いてみた。 github.com パッケージの作り方 $ mkdir FizzBuzz $ cd FizzBuzz $ swift package init コード // Sources/app/FizzBuzz.swift class FizzBuzz { let num : Int init(num : Int) { self.num…

Travis CI で npm package の自動リリースに挑戦したら失敗したので、 package を deprecate した話

Travis CI で npm package を自動リリースできるっぽいので、設定してみた。 そして、失敗したので deprecate した話。 参考ページ npm Releasing https://docs.travis-ci.com/user/deployment/npm やったこと clairvoyance の npm publish を自動化してみよ…

Swift の勉強する環境を docker を使って構築する

docker で勉強する環境を作ってみた。 github.com 準備 リポジトリと README を見てもらえば分かるけど、下記のような bin/run のスクリプトを用意する。 #!/bin/sh if [ -n "$*" ] then docker run -v $(pwd):/app -w /app swiftdocker/swift $* else docke…

Mac で docker-machine の IP を localdocker にしておくと捗る

Mac で docker を使うと、docker-machine の IP にアクセスするときが少し面倒です。 これを /etc/hosts を使って localdocker でアクセスできるようにしておくと便利って備忘録。 準備 まず、 /etc/hosts にこんな感じで書いておく。 127.0.0.1 localdocker…

babel + remap-istanbul を使って、ES2015 のコードのカバレッジを計測する

表参道.rb #12【一周年】 で話したネタ。 全然アップデートできていない clairvoyance をちゃんと更新しようと、やる気を高める為に ES2015 で書けるように直した。 資料 ES2015のカバレッジ計測 from sinsoku listy やったこと gulp + babel の環境構築…

Ruby でメソッドがどこで定義されているか調べる方法

byebug で辿っても良いけど、これはこれで便利なのでメモ。 method(:byebug).source_location #=> ["/Users/sinsoku/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/byebug-8.2.5/lib/byebug/attacher.rb", 29] 参考 class Method (Ruby 2.3.0) http://doc…

Gemfile を指定して RSpec を実行する方法

毎回、忘れて困るのでメモ。 bundle install $ bundle install --gemfile=gemfiles/rails_5.gemspec BUNDLE_GEMFILE=gemfiles/rails_5.gemfile bundle install でも動くっぽい。 bundle exec $ BUNDLE_GEMFILE=gemfiles/rails_5.gemfile bundle exec rspec …

try! Swift に参加しました

遅くなったけど、 3/2(水)〜4(金) で try! Swift という Swift のカンファレンスに参加していたので、感想とか書いてみました。 セッション Swift 初心者から上級者まで参考になる話がいくつも発表されていました。*1 Swift 界隈のツールの話、 Swift コミュ…

プロトコル拡張で条件をつけたり、特定のプロトコル拡張のメソッドを呼ぶ方法

Swift のプロトコル拡張の動きが気になったので調べた結果を備忘録として残しておく。 プロトコル拡張で条件を定義 特定プロトコルの場合だけ挙動を変える。 protocol A {} protocol B {} extension A { func say() { print("A") } } extension A where Self…

tachikoma の PR にバージョン比較URLを追加する TachikomaAI という gem を作った

アップデートされた gem の内容を確認するの面倒だったので、作った。 リポジトリ sinsoku/tachikoma_ai これは何? 定期的に bundle update してくれる sanemat/tachikoma にバージョン比較のコメントを追加する gem です。 インストール方法 Gemfile に ge…

Rails でパラメータを別モデルにして、バリデーションできるようにする

ブログをサボりすぎているので、備忘録でも書くようにしておく。 やったこと ちょっと詳細書くのが難しいんだけど、処理自体を抽象化して扱おうとしたら、こうなった。 module Task class Base attr_reader :args def self.arguments(&block) klass = Class.…

CSS のカバレッジを計測する Clairvoyance というツールを作りました

タイトルの通り、CSS のカバレッジを計測するツールを作りました。 github.com これは何? css に書かれたスタイルが html の中でどのくらい使われているのか計測できるツールです。 使用頻度の多いスタイルを調べる(影響範囲が大きいので気をつける) 未使…

Ruby で SSH 鍵を生成する方法

Rails で Web 上から SSH 鍵を生成したくなったけど、方法がなかなか見つからなかったから書いておく。備忘録。 コード Gemfile に gem 'net-ssh' を追加して、↓みたいなモデルを作ればうまくできた。 class SslKey < ActiveRecord::Base belongs_to :user v…

Swift 2.2 の機能: 0011_付属型を許容するため、 typealias キーワードを associatedtype に置き換える

2日前にマージされていたので、紹介します。 github.com 概要 typealias キーワードは今のところ2種類の型の宣言に使われています: タイプエイリアス (既存の型の別名) 付属型 (プロトコルの一部として使われる型のプレースホルダー) これらの2つの宣言は異…

Swift 2.2 の機能: 0001_外部引数名として(大部分の)キーワードを許容する

Swift と英語の勉強の一環として、 apple/swift-evolution の 2.2 を少し読んでみた。 英語苦手なんで、時間がとてもかかるよ・・・。 翻訳したファイル(途中) 外部引数名として(大部分の)キーワードを許容する https://github.com/sinsoku/swift-evolution/…

Heroku で Sidekiq を使おうと思ったら Error fetching job: ERR max number of clients reached が出た話

Heroku で mperham/sidekiq を使おうと思ったら、 Error fetching job: ERR max number of clients reached が大量に出るようになってしまいました。 ログがいっぱいになり、Sidekiq.❨╯°□°❩╯︵┻━┻ したくなった。 エラーの原因 今回、 Heroku Redis の hobby…

fork 元のリポジトリを定期的に fetch して、自分のリポジトリに同期するシェルスクリプト

GitHub で fork したリポジトリで作業して、 fork 元に Pull Request を出すようなワークフローを使っている人向け。 特にお仕事とかで複数人で Pull Request を使うときに便利。 コード 下記のファイルを PATH の通った場所に置いて、作業ディレクトリで実…

Git のエイリアスで引数を使う方法

git

備忘録。 参考ページ rcmdnk.github.io コード 例えば、先日のブログに書いた「Pull Request を簡単にチェックアウトするコマンド」をエイリアスにするとこんな感じ。 [alias] ft-pr = "!f(){ git fetch origin pull/$1/head:pr_$1;};f"

GitHub のリポジトリに登録している Deploy key がどこの鍵か分からなくなったときの調べ方

後から地味に困りそうなので、備忘録として書いておく。 状況 こんな感じで、 Title が適当な鍵に遭遇したときの対応方法です。 方法1: GitHub API を使う Deploy Keys | GitHub Developer Guide GitHub の API を使えば、登録されている Deploy key の一覧…

Rails の Routing で get や match を効果的に使う方法

Rails では Resource Routing: the Rails Default とあり、基本的には resources もしくは resource を使います。 では、 get や match はどういう時に使うのか? について、私が使ってる例を3つ紹介します。 1. gem などで使う場合 intridea/omniauth のよ…

oauth_adapter というgemを作りました #mokumoku_onsen

1/9(土)〜11(月)で開発合宿に参加していました。 mokumoku-onsen.connpass.com そこで oauth_adapter という gem を作ったので紹介します。 注意点 GitHub のドキュメント、テストがまだ全くないです。ある程度の動作確認はしていますが、もし変な挙動があれ…

開発合宿で OAuth 認証の API を使う iOS サンプルアプリを作った #mokumoku_onsen

1/9(土)〜11(月)で開発合宿に参加してました。 mokumoku-onsen.connpass.com 作ったもの Swift の勉強のため、 OAuth 認証の Web API を使う iOSアプリを作りました。 スクリーンショット 最初のページ OAuth 認証のあと コード コードは GitHub に置いてあ…

CocoaPodsで `pod install` したら NoMethodError が出て泣きそうになった

最近、Swift を勉強していて、ライブラリを使いたくなったので CocoaPods を使ってみました。 最初に解決方法を書いておく 0.39.0 じゃなくて、 1.0.0.beta.2 を使いましょう。 $ gem install cocoapods -v 1.0.0.beta.2 cocoapods のインストール 公式ペー…

Rails で RESTful Web API をシンプルに保つ設計

Rails で RESTful な Web API を作る場合、色々な方法があると思います。 今回、私が API を作るときによくやっている設計をブログに書いてみます。 コード 説明するより、コードを見てもらった方が早いと思うので、コードを書く。 # config/routes.rb names…

gemのバグを踏んだときにどうやって立ち向かうのか

最近、 colszowka/simplecov のバグを踏みました。 こうやって 不運にもバグを踏んでしまった 運よくOSSに貢献できるチャンスを得てしまったときの原因調査の方法などを紹介します。 今回のバグ simplecov はカバレッジ率を計測するgemで、以前から便利に使…

rubocop v0.35.1 でruby 2.3のSafe navigation operator(&.) を使うとunexpected token tDOTが発生する

タイトルの通り、 &. を使うとエラーが出てたので対応方法を紹介します。 Inspecting 1 file E Offenses: app/models/user.rb:11:21: E: unexpected token tDOT user.piyo if user&.admin? ^ 1 file inspected, 1 offense detected 対応 1 bbatsov/rubocop …

rake notesを使ってTODOが多くなったらCIで検知する

コード内で長い年月熟成されたTODOに頭を抱えているRailsエンジニアの方々、お疲れ様です。 これ以上のTODOが生まれないように、CIで検知するためのコード書いたので、参考にどうぞ。 参考 rails/source_annotation_extractor.rb at master · rails/rails ht…

GitHubのPull Requestを簡単にチェックアウトするたった1つの方法

みんな知ってるものだと思ったけど、あまり周りで知ってる人がいなかったのでブログに書いた。 こういう釣りタイトルっぽいブログ、一度書いてみたかった。 参考 Checking out pull requests locally - User Documentation 参考というか、そのままだけど。 …