pockestrap

Programmer's memo

Rubyでメソッドのインライン展開をする

Rubyでメソッドのインライン展開をするRinlineというgemを作って、RubyちこくKaigiで発表した。 github.com speakerdeck.com docs.google.com 見るならSpeakerdeckよりもGoogle slidesの方がオススメ。オリジナルデータだし、URLがリンクになっている。 この…

Ruby Puzzle その2

その1はこちら pocke.hatenablog.com 解答、ヒント、解説などは充分な余白を開けた上で表示するので、安心して読んでください。 問題 class String def to_proc puts self -> { self } end end ->(&b){b.()}.(&("Hello world" * 42)) このRubyプログラムに1…

Ruby Puzzle その1

解答、ヒント、解説などは充分な余白を開けた上で表示するので、安心して読んでください。 問題 gist.github.com このRubyプログラムに1文字追加して、"Hello world\n"を出力するプログラムにしなさい。 なお、例外などで異常終了するものは正答とはみなしま…

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…

10連休

10連休でできたこと、できなかったことを書く。 英語でもだいたい同じような記事を書いた。 til.hatenablog.com やったこと プログラミング RubyKaigiでRubyVM::ASTをみんな楽しそうに使っているのを見て、遊びたくなって色々やっていた。 このへんが成果物…

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…

最近querlyに投げたpull request 2019-04

ここ最近querlyにいくつかPRを投げる機会があったので、ブログにまとめてみる。 Add documentation for as syntax #60 github.com これはドキュメントの更新である。 使いたい機能がドキュメントに書かれていなかったので追加した。 querlyにはinterpolation…

遅延評価とRSpecとActive Record

仕事をしていて面白いコードを見たので紹介する。 次のコードについて話す。適当に書いているし、適宜コードも書き換えているので、間違っていたら適当に補完して読んで欲しい。 # app/models/user.rb class User < ApplicationRecord scope :admin, -> { wh…

髪の長い生活

髪の長さ 腰まであるロング。 床に正座をしてピンと背筋を伸ばしても、必ず床に髪が付く程度に長い。 髪の量も少なくはないと思う。 伸びるまでの期間 おおよそ5年ぐらい伸ばしていると思う。 髪型 最近はほとんどの場合でバナナクリップを使ってポニーテー…

Webサービスのアカウント作成に性別が必須であることに対する気持ち

TL;DR 嫌い 性別を入力させたい気持ちはわかることもある でも嫌い 前置き、もしくは予防線 私のセクシャリティは明示しません。 これはめちゃくちゃ不親切でこんな記事を書くならセクシャリティを明示してどの視点から見るとこういう気持ちになるかはっきり…

Vim in Vim しない :terminal

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

2018年の支出(新卒1年目)

note.mu 上記の記事を読んで面白かったので。 生活スタイルが全く同じ人間なんていないので大して参考になるとは思わないけど、見せ物としては面白いのではないか。 前提 2018年中の支出をまとめた マネーフォワードに記録されている値からの抜粋 現金支出は…

Cuculus.vimを作った

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

RuboCopの次のバージョンから、.rubocop.ymlの重複エントリが警告されます

RuboCopの次のバージョンから、.rubocop.ymlの重複エントリが警告されます。Pull Requestはこちら。 github.com Problem RuboCopでは、.rubocop.ymlに重複したエントリがあることが原因であるIssueが度々上がってきていました。 例えば#6728などです。これは…

近況

最近アラサーになりました。pockeです。 前回までのお話: 近況 – Masataka Pocke Kuwabara – Medium TL;DR 2018年11月末付でクックパッド株式会社を退職しました。 2019年2月1日付で株式会社ビットジャーニーに入社しました。 何故退職したのか 働く時間を減…

毎日新鮮なRubyを使う

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

GitHubのIssue Readerを作っている

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

arpry: どこでもpryでActive Record

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

VimでGoのコードをコントラスト高く表示する

Problem なんかGoを書いていると「のっぺりしている」と感じる。のっぺりしていて、どこが何をしているコードなのかパッと理解することがむずかしい。Rubyだとその正反対で、コードのコントラストがはっきりしているように感じる。この違いが言語自体なのかS…

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

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

git: shallow cloneしてすぐunshallowする

Shallow cloneとは Gitには、shallow cloneという便利な機能があります。Shallow cloneを行うことで、最新のコミット履歴のみを取得する代わりに高速にcloneを行うことができます。 古いコミット履歴を取得しないという特性から、これは長い歴史をもつGitリ…

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

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

refineをしてるモジュールをFiddleを使わずに取り出してみた

元ネタ: qiita.com require 'objspace' class C using Module.new { refine(C) { def hi puts "hi" end } } end def reachable?(from:, to:) ObjectSpace.reachable_objects_from(from).include?(to) end def rob(klass) modules = ObjectSpace.each_object(…

Shibartのクローズを予定しています。

こんにちは。pockeです。 2016年末にリリースしたShibartというサービスをCloseすることにしました。 サービスについての概要は、リリース時のブログをご覧ください。 簡単に説明すると、GitHubの芝をTシャツにできるサービスです。 pocke.hatenablog.com な…

2018年に買ってよかったもの

チラシお断りステッカー チラシ・勧誘印刷物の無断投函は一切お断り! 高耐候性ステッカー 30X150mm ヨコ型出版社/メーカー: プロテックメディア: オフィス用品この商品を含むブログを見る 年の頭に買いました。これを貼ってからチラシが入る回数が激減して…

ナンプレアプリをPlay Storeにリリースした

play.google.com Play StoreにChallenging Number Placeというナンプレ1のアプリをリリースしました。 スマートフォンアプリをリリースするのははじめての経験なので、記念にブログを書こうと思います。 まだプロダクトの完成度も大したことがないし、技術的…

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…

ARIIA で GitHub のリポジトリの watch を一括で管理する

こんにちは。少し前に見たイーグル・アイという映画が結構気に入った id:Pocke です。 ARIIA という GitHub のリポジトリの watch を管理するアプリケーションをリリースしました。 https://ariia.herokuapp.com/ からアクセスできます。 何故 ARIIA が必要…