@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

歌うRactor

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

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

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

Ractorを使ったTUIプログラムの一歩

前回のユーザー入力とクロックを両方待つプログラムを少し改造します。 Enter以外の入力を受け取る カーソルを移動せずに書き換える 後者はRactorは関係ないです。 Enter以外の入力を受け取る 任意の1文字を受け取るためにSTDIN.getchを使いたいです。 STDIN…

Ractorを試す 改訂版

macOS で https://github.com/ko1/ruby/tree/ractor のソースコードをビルドする方法を改善しました。 インストール先 コンパイルしたRubyをmake installしたら「PCの環境が壊れるかも」とビビっていたところ、 id:hanachin さんに ./configure --prefix="$H…

Ractorをつかうプログラムの練習 2つのイベントを待つ

Ractorをつかって、ユーザー入力とクロックを両方待つプログラムを書いてみます。 練習中であり、Ractorを使ったイケているソースコードではありません。 次のプログラムを実装します。 1秒毎にカウントアップします。 ユーザーがEnterキーを押したらカウン…

Ractorを使ってプログラムを書く練習    

注意:Ractorならではとか、計算効率の良さとか考えていません。 1から10までを足す # 最終結果送り先のRactor CR = Ractor.current r = Ractor.new { CR << Ractor.recv } 1.upto(10) do |i| # 数を足すRactorを作ってポインタを置き換える r = Ractor.new(…

Ractorを試す

Ruby3 さみっと online - connpass を見ていました。 Ractorの発表を見て使ってみたくなったので環境を整えてみます。 ビルドする https://github.com/ko1/ruby/tree/ractor のソースコードをビルドします。 git clone git@github.com:ko1/ruby.git ractor c…

自宅作業環境の整備

新型コロナウイルスの影響で在宅勤務しています。 3月3日から、少しずつ作業環境を整備しています。 ノイズキャンセリングヘッドホン オフィス作業時代に、作業集中用に使っていたものをそのまま使っています。 オンラインミーティングしている相手の声が聞…

新型コロナウイルスの患者数を予測する

東京都 新型コロナウイルス陽性患者発表詳細 - データセット - 東京都オープンデータカタログサイト から患者の情報を取ってきます。 グーグルスプレッドシートをつかってグラフを書きます。 新型コロナウイルスの患者数推移 24〜28日がほぼ直線になっている…

新型コロナウイルスの患者数増加ペースが指数関数的増加を少し下回る

3月27日が40人増加で、指数関数的増加を少し下回っています。 指数関数的増加をしていたら累計で400人台前半、28日には400人を超えている見込みでした。 少し希望が見えて来ました。 なるべく家族以外との接触を控えて、増加ペースの鈍化に協力していきたい…

新型コロナウイルスの勢い衰えず

感染者数は、3/22に勢いが衰えたかと思いきや、見事な指数関数的増加中。この先1〜2週間では収まらなさそうです。 東京都の新型コロナウイルス「COVID-19」感染者数推移 データとグラフで見る「新型コロナウイルス」感染状況(国内版)|日テレNEWS24 より

RubyMineのターミナルが壊れた話

RubyMineのターミナルのシェルがおかしいです。 パスから/usr/local/binが消えてしまった。rbenvが動かせません rbenvが動かせません。 シェルにはfish-shellを使っています。 fish-shellの起動時に、次のエラーメッセージが出ます。 ~/.config/fish/config.…

Rubyのコンパイルに挑戦した記録

OpenSSLがみつからない GithubのREADMEに従って git clone git@github.com:ruby/ruby.git して ./configure make make check すると、次のような警告メッセージがでました。 *** Following extensions are not compiled: openssl: Could not be configured. …

2019年のふりかえりと2020の目標

全体的に 私事に掛かるリソースが増えたので、残されたリソースでどうやりくりしたものか工夫した一年でした。 認知度 認知度に関しては、自分の能力以上に認知度が上がっても辛そうなので、一番最初にあきらめました。 その結果が、登壇数0です。 認知度を…

SameSite cookieについての勉強メモ

発端 Google Chromeの開発コンソールを有効にして、Webアプリケーションを開発しているときに次のような警告メッセージが表示されました。 これは一体どういう意味で、何に注意すればいいのでしょうか? Google Chromeの表示する警告 A cookie associated wi…

RSpecでSharedExamplesを使ったときのエラー表示の現状

RSpecで、SharedExamplesを使うと、失敗したテストの行番号の代わりに [1:2:2:3:1] みたいなのが表示されて、どのテストを見ればいいのかわかりにくくなるのが辛いです。 2015年からInclude line numbers as well as index in output · Issue #2119 · rspec/…

今週の作業メモ

JavaScripting runコマンドのバグ https://github.com/workshopper/javascripting/issues/218 javascripting run hogohoge.jsを実行するとたしかに[object Object]が表示されます。 javascriptingではrunコマンドは使っていません。 https://github.com/work…

今週の作業メモ

spring Rails 5.2.3でrails consoleを実行すると、プロンプトが出る前で止まります。 ~ bundle exec rails --version Rails 5.2.3 ~ bundle exec rails c ^CTraceback (most recent call last): 15: from bin/rails:3:in `<main>' 14: from bin/rails:3:in `load' </main>…

タスクの完了からはじめるプロジェクト進捗管理

何の話? タスクの進捗状況をパーセンテージで管理することがあります。 例えば、進捗報告会議で現在着手中のタスクAの進捗を報告するとき「50%完了しています。」という報告の仕方です。 進捗を「タスクの進捗率」で測る方法には、ちょっとした問題がありま…

Ruby2.6 に関数合成オペレータが追加されたのでFizzBuzzで遊ぶ その2

ledsun.hatenablog.com の続きです。 もうちょっと関数合成しがいのある書き方を思いつきました。 fizz = -> x {[x, ('Fizz' if x % 3 == 0)]} buzz = -> (x) {[x[0], x[0] % 5 == 0 ? "#{x[1]}Buzz" : x[1]]} filter = -> (x) {x[1] || x[0]} do_fizzbuzz =…

RubyKaigiに行く意味とは?

結論をいうと「RubyKaigiに行くと自分が世界最高のエンジニアになる可能性」が得られます。どういうことでしょうか? 目的地を知らないとどうがんばっても目的地にたどりつけません。当たり前の話です。エンジニアとしての成長も一緒です。自分がエンジニア…

SIerでのプログラマ教育

現状は次の記事に非常にリアルに書かれていると思います。 www.megamouth.info 現状わかったから、じゃあ、どうしようか?という話を書きます。 今回扱わない話 適性ミスマッチについては扱いません。 新卒でIT企業に開発職で入ってみたが、プログラマが向い…

2018年のふりかえりだとか2019年の目標だとか

2018年のふりかえり 発表 5回発表しました。 speakerdeck.com Qiitaの記事のテキスト処理をして遊んでいたので、Qiitaのファンミーティングで紹介していみました。 PANQは今でも動いてはいますが、最近は開発を止めています。 speakerdeck.com RubyKaigiでの…

Ruby2.6 に関数合成オペレータが追加されたのでFizzBuzzで遊ぶ

fizzbuzz = -> x { x % 15 == 0 ? 'FizzBuzz' : x % 5 == 0 ? 'Buzz' : x % 3 == 0 ? 'Fizz' : x } p_fizzbuzz = -> x { p x } << fizzbuzz 1.upto(15){ | n | p_fizzbuzz.call(n) } pと合成するだけでは面白くないですね。 fizz = -> x { (x.is_a? Integer)…

#railsdm Rails Developers Meetup 2018 Day 4 Nouvelle Vague で発表しました

Rails Developers Meetup 2018 Day 4 Nouvelle Vague で発表してきました。 趣旨は「ActiveRecordやActiveJobなどのRailsの用意した抽象インタフェースを使うと、アプリケーションのミドルウェア構成、ひいてはアーキテクチャの決定を遅らせる事ができる。そ…

builderscon tokyo 2018 で得たもの #builderscon

一ヶ月前の話ですが、やはり印象深かったので書きます。 植山類さんのセッション るいさんのセッション大変良かった。伝説のロックバンドのライブを見た気分。ライブビデオを発売して欲しい。10年後、若者に「おじさんこのセッション生で見たんだぜ」て自慢…

メンバーの教育を(有期の)プロジェクトリーダーの責務に入れてはいけない

t.co を読んで考えた話です。 30歳近くになっても無能、ということは、そいつはほとんどの場合、一生無能だ と刺激的な言葉が使われています。 状況を限定すれば、一理あると感じる点があります。 表題の「メンバーの教育を(有期の)プロジェクトリーダーの…

革ベルトを作る計画を立案せよ

動機 レザーパンチを買ってベルトに穴を開けていたら、革ベルトが作りたくなりました。 予算と手順を立ててみます。 方針 なるべく工数を下げ、可能な限り早く完成にたどり着いて、お手軽に達成感を得ます。 そのため、 手作業での革のカット 手作業での革の…

ミントチョコレートの起源

アイスに限らずにミントとチョコレートの組み合わせの起源を探ります。 1962年 アフターエイト アフターエイトは初めて知った大人のミントチョコレート : イギリスの食、イギリスの料理&菓子 アフターエイトは、1962年にイギリスで生まれたチョコレート菓子…

Ruby on Railsの開発環境でマルチスレッドでクラス定義を探索すると刺さるが再現できなかった話

現象 Ruby on Railsの、ActiveJob内で起動したスレッドで非同期にDBに書き込もうとすると、ActiveRercordのクラス探索で無限に待って固まります。 わかっている条件 ActiveJobで起きる ActiveJobのQueueAdapterにはAsync adapterを使っている DBへの接続以前…