pockestrap

Programmer's memo

作ったもの

activerecord-originator をリリースしました

こんにちは。 id:Pocke です。 今日は activerecord-originator という gem を作ったので紹介します。 github.com なにこれ Active Record が発行するSQLの各部分に、それがどこで作られたものかをコメントとして入れ込む gem です。 理解するには実例を見る…

オンデマンドパルワールド

こんにちは。 id:Pocke です。最近はパルワールドというゲームをやっています。 パルワールドでは個人がサーバーを建てることができ、私も例に漏れず自宅のあまっているPCにサーバーを建てています。 ですがサーバーを管理している上でいくつか不便なことが…

graphql-coverage をリリースした

こんにちは。 id:Pocke です。 graphql-coverage という gem をリリースしました。 github.com なにこれ GraphQL-Ruby を使っているときに、テストがすべてのフィールドを網羅して呼んでいることを検査するための gem です。 モチベーション 私は GraphQL-Ru…

正規表現でかんたんにCopを書けるRuboCop拡張 rubocop-grep をリリースしました

こんにちは。正規表現でかんたんにCopを書けるRuboCop拡張を作ってみたので紹介します。 github.com 使い方 まず、ほかのRuboCop拡張と同様にgemをインストールし、.rubocop.ymlのrequireにこのgemを指定してください。 この拡張は設定をしないと何も動きま…

2020年に作ったGitHubリポジトリ

年末なので、今年GitHubに作ったリポジトリを振り返ってみます。 このリストは次の記事のコードを使って生成しました。(記事は去年のものだけど、今年実行しても動くはず) pocke.hatenablog.com 今年は15個のリポジトリを作りました。去年の31個より減ってる…

Rails/UniqueValidationWithoutIndex copを追加した

rubocop-rails にRails/UniqueValidationWithoutIndex copを追加しました。 rubocop-railsの次期リリース(おそらくv2.5.0)から利用できます。 github.com これはなに Rails/UniqueValidationWithoutIndex copは、RDBMSのunique indexがついていないカラムに…

毎日日記を書く技術

最近、 https://commits.hatenablog.com で毎日日記を書いている。 この毎日というのは一日も欠かさずという意味で、実際日記を書き始めた2019-12-17から一日も欠かさずに続けている。1 これを続けるために2つ工夫していることがあるので紹介したい。1つは仕…

2019年に作ったGitHubリポジトリ

年末なので、今年GitHubに作ったリポジトリを振り返ってみます。 このリストは次の記事のコードを使って生成しました。 pocke.hatenablog.com リポジトリたち 今年は31個のリポジトリを作りました。 下に行くほど新しいリポジトリです https://github.com/po…

rubocop-rubycwとは

github.com TL;DR ruby -cw をRuboCopのインターフェイスで扱うためのgem ruby -cwとは rubyのコマンドラインオプション。 -cを付けると、Rubyはコードを実行せず、構文のチェックのみを行う。 -c check syntax only -wを付けると、Rubyは見つけた警告をすべ…

banner (1) をベースに、Vim scriptでbannerを出すプログラム vanner を実装した

Hello, Vanner! github.com 実装の動機 keycast.vim というプラグインを紹介した(keycast.vimをつくった - pockestrap)ところ、macOSでうまく動かないという報告をもらいました。 調べてみると、keycast.vimが依存しているbannerコマンドの挙動がプラットフ…

keycast.vimをつくった

Vimで入力した文字を表示するためのプラグイン、keycast.vimを作った。 github.com screencast 仕組み 入力されたキーをbannerコマンドで大きくして、popup windowに表示している。 キーの入力 最初、Vimでキーの入力を監視する方法が見つからなくて苦労した…

AURからパッケージをインストールするItamaeのresourceを作った

github.com AUR (Arch User Repository)からパッケージをインストールするItamaeのresourceを作りました。 Usage 次のように書くとrbenvパッケージをAURからインストールします。 aur_package "rbenv" Arch Linuxの環境をItamaeで構築するのに便利な気がしま…

:terminal を使ってDenite.nvimのシンプルな代替Vimプラグインを作った

Problem Denite.nvim という便利なVimプラグインがあります。 Deniteの解説は他に譲りますが、私は主にファイル名のインクリメンタルサーチや、git grepに使っていました。 github.com Uniteの頃からとても便利に使っていたのですが、DeniteはPythonに依存し…

RubyをWhitespaceにトランスパイルする

前回までのお話 pocke.hatenablog.com Whitespaceというプログラミング言語があります。 Whitespaceは空白文字だけで構成されたプログラミング言語です。 空白文字だけで構成されているので、当然Whitespaceでプログラムを記述するのは大変です。 そこで、Ru…

WhitespaceをRubyに埋め込む

Whitespaceというプログラミング言語があります。 この言語はスペースとタブと改行文字だけで構成された言語です。 たとえばHello, world!を出力するプログラムは次のようになります。 gist.github.com このWhitespaceをRubyで実装してみました。Akazaという…

Rubyでoverloadをする

Rubyは言語仕様としてはoverloadを提供していませんが、ライブラリを使うことでoverloadできます。 github.com 使い方 まずgemをインストールします。 $ gem install overloader クラスにOverloaderモジュールをextendし、overloadメソッドを呼び出すことでo…

Vim in Vim しない :terminal

PoCを作っている。 なに Vimには:terminalという便利なコマンドがあり、これを実行するとVimの中でターミナルが開く。1 これは多分便利で、例えばターミナルからgfしやすかったりすると思う。 :terminalコマンドで開かれるのはターミナルなので、もちろんそ…

Cuculus.vimを作った

github.com なにこれ Rubyのdef-endなどの対応を%でジャンプするためのVimプラグイン。Parser gemを使っているので、Parser gemが正確にパースできるコードであれば正確な位置にジャンプできる。 動機 vim-jpのSlack1でmatchup.vimがうまく動かないという話…

GitHubのIssue Readerを作っている

とりあえずぐだぐだと現状を書いておくだけの記事。 リポジトリはこのへん。 github.com github.com 2018年の夏頃に開発をはじめたのだけど、途中止まってしまって最近開発を再開した。 自分がGitHubのNotificationsから乗り換えるぐらいにはできてきたので…

arpry: どこでもpryでActive Record

Rails Console、便利ですよね。これさえあればデータの表示や簡単なデータの修正、作成などが簡単にできてしまいます。 ところがそんな便利なRails Consoleにも1つ大きな欠点があります。Rails ConsoleはRailsでしか使えません。 当然です。ですが、不便です…

.travis.yml内のRubyのバージョンを更新するPull Requestを作る

こんにちは。Ruby 2.6が先日リリースされましたね。 Rubyの新しいバージョンがリリースされると、その度に.travis.ymlに書かれているRubyのバージョンを上げる作業をしている方は多いと思います。 今回はその作業を楽にするツールを作ったので紹介いたします…

ナンプレのアプリにタブ機能を実装した

少し前にナンプレのアプリをリリースしました。 今回はこのアプリにタブ機能を実装したのでお知らせします。 Androidユーザーの方はダウンロードして使っていただけると嬉しいです。 pocke.hatenablog.com play.google.com タブ機能とは? この機能を使うこ…

Update commit status on GitHub manually

Today, I published a simple command line tool to update commit status on GitHub. It is named git-update-commit-status. github.com Installation It requires Go 1.11 or higher. $ export GO111MODULE=on $ go get -u github.com/pocke/git-update-c…

2017年に作ったGitHubレポジトリ

42個。作った順 https://github.com/pocke/shakaise-filter ゴミ https://github.com/pocke/stackprof-run これは本当に便利で、stackprofを使う人は使うべき https://github.com/pocke/ruby-pkgbuild Ruby 2.4.0がめちゃくちゃ遅くてつらかったので、2.4.1…

`Style/EmptyBlockParameter`(と`Style/EmptyLambdaParameter`)を作った

github.com Style/EmptyBlockParameterとStyle/EmptyLambdaParameterというRuboCopのCopをだいぶ前に追加した。後者はおまけ なにこれ Rubyでは、ブロック引数が存在しない場合でもバー(|)を書くことが出来る。 foo.do_something do foobar end # 上の式とこ…

Style/EvalWithLocation Copを作った

github.com github.com rubocop-jpのissuesにあげたものを、実装してみました。 このCopが対象とする問題 eval族1のメソッドには、コードの位置情報を渡すことが出来ます。 この位置情報は主に例外が上がった際のバックトレースの表示に役立ちます。 https:/…

exit status が0である間コマンドを繰り返す

id:sinsoku さんのツイートを見て思いついた。 for n in {1..10}; do rspec spec/foo_spec.rb || break; doneそして、稀に落ちるテストが再現するのを待つ— 神速@リリカルエンジニア (@sinsoku_listy) 2017年11月7日 zshのrepeat便利なんだけど、exit status…

stderrが出たらexit 1する

コマンドがstderrを出力したらexit 1をするようなコマンドがほしかったから作った。 github.com 何故必要か 「警告をstderrに出すけど、警告があっても常にexit statusが0のコマンド」をCI上で使っていて、警告が出た場合はCIを落としたかった。 Installatio…

require を忘れる

Ruby のコードをちょっと試したい時、requireを煩わしく感じることがあります。 例えば素数が小さい順に10個欲しくなった時、Rubyist は Ruby でワンライナーを書くでしょう。 $ ruby -e 'require "prime"; require "pp"; pp Prime.take(10)' [2, 3, 5, 7, 1…

🍚🅱🚨🚵🎼😬🐦🛐🌘📵🆒🏫✌🎷🍤🐠👨⁉🆒🇷

github.com 生きていると、絵文字が欲しくなる時がある。例えば、ブログのタイトルに迷った時。 そういう時に、サッと絵文字を提案してくれるコマンドがあったら便利ではないだろうか? その願いを叶えてくれるのが、emo コマンドだ。 このコマンドは、go ge…