pockestrap

Programmer's memo

作業記録

ライン入出力を使ってスマホでピアノ演奏動画を撮るまで

今年の3月にピアノを習い始めました。 自分の成長の過程を残しておきたくて時々録音をしていたのですが、知り合いがピアノの練習動画をインスタにアップロードしているのを見て、自分も動画を撮りたくなりました。 動画を撮るまでに色々やることがあり、少し…

CircleCIでparallel_testsのruntime logを保存する

TL;DR # from .circleci/config.yml - restore_cache: name: 'parallel spec runtime log' keys: - parallel-spec-runtime-log-{{ .Environment.COMMON_CACHE_KEY }}-{{ .Branch }} - parallel-spec-runtime-log-{{ .Environment.COMMON_CACHE_KEY }}- - run…

CircleCIの実行を速くした

先週仕事でやったのをメモします。 CI力が低いので、記事を公開することでツッコミをもらうのが目的です。 モチベーション 弊社ではCIの実行が1回あたり20分ほどかかっています。 これはわりとストレスなので速くしたいです。幸いにも削れそうなところが2つ…

ThinkPad X1 ExtremeにArch Linuxをインストールする

備忘録 前回までのお話をだいたいそのままやっている。 https://pocke.hatenablog.com/entry/2016/06/18/180914 wifi Wifiに接続 wifi-menu SSH server を起動 SSH server を起動して、外からSSHしてインストール出来るようにする。 コマンドのコピペが効く…

Itamaeのテストを壊してしまっていた話

本日、Itamae v1.10.4がリリースされました。 Itamae v1.10.4 released! thanks @p_ck_ !https://t.co/rcUOukG0Ag— うなすけ (@yu_suke1994) May 10, 2019 このリリースには私のPull Requestがいくつか含まれています。 この記事ではそのうちの1つのPull Req…

毎日新鮮なRubyを使う

rbenv global trunkしていても気が向いた時にしかRubyをビルドしていなかったので、trunkと言いつつ結構古いRubyが動いていることが多かった。 そのため毎日Rubyをビルドして、trunkとしてインストールするようにした。 環境 Arch Linux systemdが動いている…

ruby-2.5.0 みたいなaliasを生やす

for v in $(rbenv versions | ruby -ple '$_ = $_[/[* ]+(\S+)/, 1]'); do alias "ruby-${v}=RBENV_VERSION=${v} ruby" done $ ruby-<tab> external command ruby-build ruby-parse ruby-rewrite alias ruby-2.3.1 ruby-2.4.2 ruby-2.5.0-rc1 ruby-system ruby-2.</tab>…

rubocop-rspecでもCop Generatorが動くようにした

github.com github.com TL;DR rubocop-rspecにCopを追加する時も、rake new_cop[RSpec/NewCopName]でCopの雛形を作ることができるようになった。 Cop Generatorとは RuboCopにはrake new_cop[Style/FooBar]などとすると新規Copのテンプレートを作れてしまう…

AOJ 0506 をゴルフした

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0506 久しぶりにゴルフをやりたくなったのでやった。AOJの仕様上、コードを短くしても自分の他の解答より実行時間が速くなければランキングにのらない様で、悲しかったのでブログ記事にした。 な…

tmux sessions ❤ peco

peco を使って tmux の session にいい感じにアタッチ出来るようにした。 想定する tmux の使いかた セッションを沢山生やす 私は、だいたい1 git repository 毎に tmux の session を生やしている。 仕事だとメインで 4 git repositories + 色々 の為に tmu…

RuboCop の Lint/UnreachableCode を直した

なにそれ RuboCop には Lint/UnreachableCode という便利 Cop がある。 その名の通り、unreachable な code を検出してくれる。 def foo do_something return do_anything # このコードは絶対に実行されない! end 上記のような絶対に実行されないコードをつ…

RuboCop で `#each` がブロックの戻り値を使わないことを思い出せるようにした

問題 以下のようなコードは、恐らくバグになります。 json = users.each do |user| id = user.id full_name = user.full_name { id: id, full_name: full_name, } end render json: json これはidとfull_nameをもったオブジェクトの配列をjsonでrenderするよ…

Gem として提供されているコマンドのベンチマーク

github.com 先程、RuboCop にパフォーマンス改善の Pull-Request を投げました。3%ぐらい速くなります。 この Pull-Request の効果を検証する際に用いたベンチマークの方法が、わりと面白くて便利(自画自賛)だったので、紹介します。 そもそもの問題 Gem で…

Rails 5.1 の System test を試した

bacon-cannon.herokuapp.com bacon-cannon で試した。 該当の Pull-Request はこれ。 github.com 環境 Ruby 2.4.1 Ruby on Rails 5.1.0.rc1 Webpacker 1.1 capybara-webkit 1.14.0 Travis CI やったこと Pull-Request に書いてあるけど、その背景とかの補足…

Bacon Cannon のアーキテクチャ

先日、Bacon Cannon というアプリケーションをリリースしました。 bacon-cannon.herokuapp.com 一言で説明すると、Ruby のオンラインパーサーです。アプリケーションについては以下の記事をご覧ください。 pocke.hatenablog.com この記事では、Bacon Cannon …

vim-go + gocode でインポートしていないパッケージも補完したい

TL;DR Add let g:go_gocode_unimported_packages = 1 to your .vimrc 欲求 通常、gocode ではインポートしていないパッケージの関数等は補完されない。 例えば、strings.Spと打ってstrings.Split()が補完されるためには、import "strings"が必要である。 git…

Heroku で1つの GitHub リポジトリで複数バージョンの Ruby を使う

目的 Heroku を使いたい 同じコードを複数のバージョンの Ruby で実行したい そのためにバージョンの数だけレポジトリを作るとかはやりたくない 解決法 手順1 Gemfileに以下を追記する if v = ENV['CUSTOM_RUBY_VERSION'] ruby v end 手順2 Heroku の管理画…

IME でも :muscle: みたいに Emoji を入力したい!

やりたいこと :something: を解釈しないサービスでもこの形式で Emoji を入力出来るようにする。 こんな感じ 最高に便利なものが出来たぞ pic.twitter.com/Apbeoc1XPA— Pocke (@p_ck_) 2017年3月5日 やりかた IME のローマ字テーブルを書き換える 環境 Mozc …

Vim からいい感じに tig blame する

TL;DR git blame しない人は読まなくていい。 nnoremap <F3> :silent! !tig blame +<C-r>=line('.')<CR> %<CR>:redraw!<CR> .gvimrc では nnoremap <F3> :silent! !sakura -x 'tig blame +<C-r>=line('.')<CR> %'<CR> sakura は適当なターミナルエミュレータの名前に置き換える。 <F3> は完全に趣味なの</f3></cr></cr></c-r></f3></cr></cr></cr></c-r></f3>…

Shibart 作成の軌跡

あけましておめでとうございます。 id:Pocke です。 今年の目標は、人の顔を覚えることです。人のことを服の色で覚えてしまうので、この季節はコートを脱ぎ着すると人の判別ができなくなってしまうのを今年こそは直そうと考えています。 昨年末、Shibartとい…

Rails Best Practices を3~4倍ぐらい速くした話、あるいはStackProf入門

github.com TL;DR StackProf でボトルネック検出 String#present?は遅いから使わない。 何度も呼び出される毎回同じ値を返すメソッドをメモ化 上記により3~4倍のパフォーマンス改善 はじめに Rails Best PracticesはRailsに特化したコードメトリックツールで…

Rails 4, 5 両方対応のGemをTravisでテストした話

先日、Railsのマイグレーションファイルをもっと便利に生成するGem、miのバージョン1.0.0をリリースしました。 github.com pocke.hatenablog.com このGemではRailsの4と5両方に対応しており、また4と5では挙動が異なります。 このため4と5両方のバージョンで…

rails-apiでcookieを使う

最近、rails-apiでcookieを使うような機会が何度かあったので、その方法をメモしておきます。 tl;dr rails-api with cookie · pocke/rails-api-with-cookie-sample@11ccaf1 前置き rails-apiのデフォルトでは、cookieが無効化されています。 そのため、セッ…

Railsで、Layoutを適用した静的なエラーページを生成してみた

こんにちは。私は現在 bearfruits という GitHub と連携した就活支援Webサービスを作成、運営しています。 bearfruits はRuby on Railsで開発しています。 エラーページがRailsデフォルトのままだったのを改善したので、手順をまとめます。 環境 Ruby on Rai…

mikutter から ActiveRecord の validates を使う

mikutter とは、Ruby で書かれた Linux 向け Twitter クライアントです。 というのは表向きの顔で、実際は Plugin で高度に拡張可能な Twitter アプリケーションフレームワークです。 ともなれば、mikutter で Web アプリケーションを作りたくなるのは必然で…

たまたま家にあったWiFiルータが PPTP 対応だったので、自宅 VPN を構築した。

動機 最近PCを組みました。 そこそこ性能のいいやつです。 (PC を組んだ時の記事はこちら パソコンくんだ - pockestrap) 当然の如くノートPCよりもデスクトップのスペックが高いので、出先で作業するのがつらくなってきました。 ノートPCは RAM が 8GB しか…

makepkg する人は、今すぐxzがマルチコアを使うよう設定すると幸せになれるかもしれない

Arch Linux でパッケージをビルドする際、makepkgしたら-> Compressing package...で永遠に待たされた経験のある人は多いと思います。 android-ndk とか最悪ですね。何であんなに遅いんだろう… これはxzコマンドがシングルスレッドで動いているのが原因なの…

パソコンくんだ

メモリ8GB環境に嫌気がさしたのでPCを組みました。自作PCは初めてです。 いろいろ書いておかないと多分忘れるので書いておきます。 パーツ CPUとマザボはツクモで、ほかはドスパラで買いました。 画像がババーンって出てわかりやすいのでAmazonのリンク載せ…

4k 40インチのディスプレイ BDM4065UC/11 を買った。

買いました。 PHILIPS(ディスプレイ) 40型4K対応ワイド液晶ディスプレイ 5年間フル保証 BDM4065UC/11出版社/メーカー: Philips(フィリップス)発売日: 2014/12/27メディア: Personal Computersこの商品を含むブログ (4件) を見る 環境 OS: Arch Linux PC: Thi…

リモートのPCのブラウザやクリップボードを操作するツール Lemonade を作った

pocke/lemonadegithub.com 作りました。 Lemonadeといいます。 Go言語で書かれています。 インストール go getでインストールすることが出来ます。 go get github.com/pocke/lemonade また、リリースページから圧縮ファイルをダウンロードし、PATHの通ったと…