@ledsun blog

無味の味は佳境に入らざればすなわち知れず

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

2020年ブックマークランキングベスト3(累計350ブックマーク)

# タイトル 1位 プログラマにできるとよさそうなこと - @ledsun blog 2位 たのしいプログラミング練習法 - @ledsun blog 3位 チーム開発で気をつけていること - @ledsun blog generated by 年間ブックマークランキングジェネレーター

またまた Gitのdiffを振り返る

ふたたび Gitのdiffを振り返る - @ledsun blog で日単位で集計しました。 週、月、年単位の集計結果も見ていきましょう。 週 gnuplot> set xdata time gnuplot> set timefmt "%Y-%m-%d_%H:%M:%S" gnuplot> plot 'all_log_week.dat' using 1:2 w i title 'ins…

ふたたび Gitのdiffを振り返る

続々 Gitのdiffを振り返る - @ledsun blogでコミット単位でのファイルの変更行数の遷移をふりかえりました。 コミット単位では列間が詰まりすぎてグラフが見にくいです。 特に、Gitのコミット数を振り返る - @ledsun blog で見たように、2020年9月以降コミッ…

続々 Gitのdiffを振り返る

続 Gitのdiffを振り返る - @ledsun blog で1000行以上の変更があるコミットはツールによるフォーマット変更であることがわかりました。 また、日付でまとめてしまうと一日の変更行数が2000を超えます。 これはgit rev-listのbeforeやafterの挙動によるもので…

2020年に書いたQiitaの記事

Search result of “user:ledsun created:>2020-01-01” - Qiita 意外とたくさん書いていました。10記事書いて19LGTM。とても平和です。 2020年に書いたQiitaの記事

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

2020年に作ったGitHubリポジトリ - pockestrapにインスパイアされました。 次の条件でGithubを検索します。 Search · is:public user:ledsun created:2020 · GitHub 2020年にGithubに作ったリポジトリ 大体どれも作りかけです。 GitHub - ledsun/svg-playgro…

2020年のプルリクエストをふりかえる

2020年のプルリクエストを振り返る - kakakakakku blogを参考にしました。 あまりにも少なかったのでissueも入れました。 次の条件でGithubを検索します。 is:public author:ledsun created:2020 Search · is:public author:ledsun created:2020 · GitHub 20…

rbenvでRuby 3.0を使う

Homebrewをインストールし直す - @ledsun blogでrbenvをgitから入れました。 git pullします。 ~ cd .rbenv/ ~ git pull --ff-only Already up to date. んー、rbenv install --list-allしても3.0.0が出てきません。 ~ cd ~/.rbenv/plugins/ruby-build ~ git…

続 Gitのdiffを振り返る

Gitのdiffを振り返る - @ledsun blog でGitの記録から、約2年間の毎日のファイルの変更行数を見ました。 1日に4000行の人力では不可能に思える変更が見つかりました。 今度は巨大な変更を含むコミットを探してみましょう。 次のRubyスクリプトを使います。 r…

Gitのdiffを振り返る

Gitのコミット数を振り返る - @ledsun blogで、Gitのコミット数をふりかえりました。 今年はコミットの粒度を変えたためコミット数が増えています。 その結果、作業効率は上がったのでしょうか?今度はGitのdiffをふりかえってみます。 日付単位でgit diffの…

Gitのコミット数を振り返る

次のRubyスクリプトを使って、あるリポジトリの2020年のGitコミット数を月単位で集計します。 require 'date' 1.upto(12) do |i| start_date = Date.new(2020, i, 1) end_date = (start_date >> 1) - 1 commits = `git log --oneline --since #{start_date} …

たのしいプログラミング練習法

プログラミングが上達するのに、プログラミングする以外の方法はありません。 なるべくたくさんのプログラミング練習法を知っていて、 その時の自分の気分に合ったプログラミング練習法を使いわけて、 なるべく長い時間飽きずに、プログラミングを続ければ、…

日記を書く

きっかけ 「スーパーエンジニアへの道」の「第七章 自分自身への気づきを高める方法」に「日誌をつける」と書いてありました。 スーパーエンジニアになりたいので、仕方なく日記を書き始めました。 ブログとは違い人に見せないつもりで書いています。 ですの…

Legacy on Rails

最近古いバージョンのRailsに触ることが多かったので、二度と使わないで済むことを祈りつつ、得た知見をメモします。 Ruby 2.4 と PostgreSQL と Rails 3.2 Rails 3.2 と PostgreSQL とRuby 2.4で rake db:create だけコケるおもしろ現象に出会いました。 ht…

Homebrewをインストールし直す

Homebrewの再インストール GitHub - Homebrew/install: Homebrew (un)installer を見て /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.c…

「論理的思考の放棄」をパクる

「論理的思考の放棄」とは 論理的思考の放棄 - 登 大遊 (Daiyuu Nobori) の個人日記 がバズっていたので読みました。 世の中のスーパープログラマーは1日で1万行のプログラム書くことができるようです。 その手法として「論理的思考の放棄」が挙げられていま…

React on Ruby on Railsの素振り

Ruby on RailsとReactの連携の仕方がイマイチ理解できていないので、簡単なアプリケーションを作って勉強します。 4月生まれのホットな動画を見つけたのでこちらを参考にします。 www.youtube.com 動画でなくテキストがお好みの人は、GitHub - zayneio/open-…

プログラマにできるとよさそうなこと

十行程度のプログラムが読めること プログラミング言語の文法を知っている 分岐とループを追いかけることができる 変数の状態変化を追いかけることができる 関数呼び出しを追いかけることができる 十行程度のプログラムを複数回書いたことがある プログラム…

チーム開発で気をつけていること

この日記は同僚が読んでいないことを前提に書いています。もし読んでしまった同僚の方は絶対に感想を伝えないでください。 日に二度のオンラインミーティング 4月に在宅勤務が始まって以降、一日2回zoomを使って開発チームでオンラインミーティングをしてい…

一度moveしたオブジェクトは移動先のRactorが死んでも帰ってこない

moveしたオブジェクトを参照するとRactor::MovedError 次のRubyスクリプトがあります。 dead = Ractor.new {} dead.send STDIN, move: true STDIN.gets RactorにSTDINをmoveしてから、STDINを使います。 するとRactor::MovedErrorが起きます。 ~ ruby dead_a…

国家公務員法改正案に関するメモ

国家公務員法改正案が廃案になるそうなので、どういう話だったのかメモを集めておきます。 法案 衆法 第196回国会 30 国家公務員法等の一部を改正する法律案 議案というのがパッチで、要項がdescriptionみたいです。 第201回 通常国会|内閣官房ホームペ…

RailsConf 2020のKent Beckのトークを見た

koicさん*1を真似ました。 Software design is an exercise in human relationships 我々、プログラマは次のような段階を経て、コミットの粒度を工夫していきます。 巨大な1つの塊 構造の変更(リファクタリング)と機能の変更に分ける 構造の変更(リファク…

sjisの文章をShift_JISとして読むとEncoding::UndefinedConversionError

Rubyの話です。 ‘Ⅸ’(ローマ数字の9) を含むsjisの文章をShift_JISとして読むとエラーが起きます。sjisとして読むとエラーが起きません。 たとえば、 'Ⅸ'.encode('sjis', 'utf-8').encode('utf-8', 'Shift_JIS') はエラーが起きて 'Ⅸ'.encode('sjis', 'utf-…

イベントハンドラーAの処理があるときはイベントハンドラーBの処理を止めたいです

ブラウザのJavaScriptの話です。 イベントハンドラーAの処理があるときはイベントハンドラーBの処理を止めたいです。 イベントハンドラーAは新しいNodeを作って選択します。 イベントハンドラーBは選択を解除します。 期待する動作は、新しいNodeができて選…

rbenvでのバージョン指定が効かなくなりました

~ rbenv version 2.5.5 (set by /Users/shigerunakajima/pubannotation/.ruby-version) ~ ruby --version ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18] ruby のバージョンが上がっている。パスが上書きされたのでしょうか? ~ echo $P…

gem install libxml-ruby -v '3.1.0' に失敗します

Building native extensions. This could take a while... ERROR: Error installing libxml-ruby: ERROR: Failed to build gem native extension. current directory: /Users/shigerunakajima/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/libxml-ruby-3…

切符を通したときだけ通れる改札口Ractor

前回、Ractor.selectでtakeとrecvを両方待てることがわかりました。 これを使って切符を通したときだけ通れる改札口を作ります。 完成形 キーボード入力を待つRactor = Ractor.new { loop { Ractor.yield gets.chomp } } 改札口Ractor = Ractor.new(キーボー…

Ractor.recvの代わりにRactor.selectする

RactorはsendされたメッセージをRactor.recvで受け取ります。 Ractor.selectでも受け取れます。 例えば、次の例です。 r = Ractor.new do # message = Ractor.recv と同じ _, message = Ractor.select self p "Hello #{message}!" end r.send 'World' r.take…

歌うRactor

Ractorで歌ってみましょう。 歌う部分はRactorは関係ありません。出落ちです。 Ractor内で、spawnしたプロセスをメインスレッドでkillできるか確認します。 非同期なspawn関数をRactor内で実行する必要があるのかは知りません。 完成形 LYRICS =<

Ractor間のメッセージ送受信 Pull型とPush型

やることは前回と同じです。Ractorの構成を組み替えてみました。 Pull型とPush型 Ractorのメッセージ送受信にはPull型とPush型があります。 前回、メインスレッド(?)でRactorインスタンスをselectしてイベントを待ちました。Pull型です。 Pull型 今回、描…