( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

Nand2Tetris(コンピュータシステムの理論と実装)でCPUからOSまで一気通貫で作るのが最高に楽しかった話

どうも、しいたけです。 去年あたりからローレイヤー周りの知識を充実させようと思い、 低レイヤを知りたい人のためのCコンパイラ作成入門 を読んでCコンパイラを書いてみたりx86_64の勉強をしたりしていました。 今年に入ってから、よりローなレイヤー、具…

ラズパイとWebRTCで動物の死活監視ができるようにした話

こんにちわ、しいたけです。 今は夏休みで奥さんと子どもたちが帰省しているので、動物と2人で暮らしています。 で、外出すると動物だけを家に残していくことになります。 ペットモニターとか市販でもあるんですが、せっかくなので、 夏休みの自由研究として…

async/awaitとpromise使えばモナド糖衣構文っぽいの書けそうだよねって思って書いてみたけど、async () => {} でwrapしないといけないしまぁそんなにきれいに書けなかったって話

タイトルで全部言い切ってますが // Optional container like maybe monad class Option { constructor(value){ this.value = value } async promise() { return new Promise((resolve, reject) => { if (this.value) { resolve(this.value); } else { rejec…

関数の話

こんにちは、しいたけです。 某所で関数型プログラミングとはリスト処理のことなのか、と燃えているのを見て、関数型プログラミングとは何か、ということを自分なりの考えを述べたいと思いました。春なので。 この資料は2年ほど前にSupershipの社内勉強会で…

作って学ぶ 「Https Man in The Middle Proxy」 in Go

ᕕ( ᐛ )ᕗ こんにちわ、しいたけです。 webのhttps化が推進される昨今ですね? https通信は経路上での通信内容が盗聴・改竄されるのを防ぐことができますが、開発用途でhttps通信の内容を確認したい場合が稀にあります。 そのような場合は mitmproxy などを導入…

go tool traceでgoroutineの実行状況を可視化する

こんにちわ。しいたけです。今日はgoroutineの実行状況をいいかんじに可視化するツールの話です。 goのプロファイリングツールと言えば、 runtime/pprof や net/http/pprof ですよね。これらの使い方はググればすぐに出てくるのですが、 詳細なtraceを取得し…

ディスク使用量をFlameGraphで可視化する

こんにちわ。しいたけです。今日はディスク使用量をFlameGraphにするツールの話です。FlameGraphについては、 Flame Graphs や GolangでFlame Graphを描く | SOTA を読んでもらうのが手っ取り早いのですが、ようはプロファイル結果を可視化する方法です。縦…

「関数型Ruby」という病(7) - Elixir's Pipe operator |> in Ruby

最近Elixirが人気ですよね。Erlang VM上でOTPの恩恵を受けながら簡潔な記法で並行処理を書ける言語ということで話題になっていますな? Elixirは関数型プログラミングのエッセンスを取り入れていると言われており、そのひとつにPipe演算子(|>) がある。 Enume…

「commit-m: GitHubコミットメッセージの文例が検索できるサービス」がとても便利だったのでcliから使えるコマンド書いた

http://commit-m.minamijoyo.com/:titele という有名OSSのコミットメッセージを検索できるサービスがあって、英語のコミットメッセージを書くときに「あれ? これどういう風に書けばいいんダー」ってときに例文を検索できて捗る。 commit-m.minamijoyo.com が…

表参道.rb #4で「本当は怖い オープンクラスと Duck Typing」というLTをやった話

スライドです 本当は怖いオープンクラスとDuckTyping - 表参道.rb #4まぁたいした話じゃないんですが、マッドマックスの画像をスクリーンに大写しできたのでその点だけで個人的には満足しています「型を讃えよ」

Rspecでfailするとデスメタルが流れるようにした

あまりにもテスト通らないのでデスメタル聴き始めた— ⁰⁰⁰⁰null (@yuroyoro) 2015, 7月 2このような事があったので自動化した。 Mac限定。 こんな感じ。successだとレベルがアガる。事前にbash-itunes というコマンドラインツールを入れておく。 iTunesを日本…

GolangでSIMDプログラミング

以前から気になっていたSIMDプログラミングをGoでやってみた。 Single Instruction Multiple Data (SIMD) 演算とは1回の命令で複数のデータを同時に処理する演算です.近年の CPU には SIMD 演算を行うことができる SIMD 演算器が搭載されており,Intel 社の…

CPUの気持ちになれるツール作った

魂のステージが低いのか、CPUの歓声が聞こえません。CPUの歓声は聞いたことないですが、ハードディスクの断末魔なら何度も聞いてます— ⁰⁰⁰⁰null (@yuroyoro) October 19, 2014 なので、CPUの気持ちになれるツール作った。Remix: Latency Numbers Every Progr…

Typolevel Scala Compiler

最近Scala Complierをforkするのが流行っているようですね。 paulp/policy · GitHub typelevel.scala | Typelevel Scala and the future of the Scala ecosystem 「俺のコンパイラか?欲しけりゃくれてやる、探せ!この世の全てをそこにおいてきた!」 男達…

self.send(pred)がtrueならばselfを、そうでないならnilを返すメソッド

何をいっているのかというと、こういうことですrubyで、obj.send(pred) がtrueならばselfを、装で無い場合はnil を返すメソッド欲しい— ⁰⁰⁰⁰null (@yuroyoro) August 28, 2014foo.present? ? foo : other みたいなの書くのダルいので— ⁰⁰⁰⁰null (@yuroyoro) …

git-ignoreというコマンドを書いた話

git

git-ignore add みたいのが欲しい— azu (@azu_re) August 24, 2014 ちょろっと書けそうだったので書いた。yuroyoro/git-ignore · GitHub Demo Installation PATH通った場所においてくれ curl -sL https://raw.githubusercontent.com/yuroyoro/git-ignore/mas…

rspecの--tagオプションを利用して任意のコマンドライン引数をspec側に渡すという邪悪なhack

今まで、rspecコマンドでは任意の引数を渡すことはできなかったので、環境変数経由で引き渡すという方法をとっていた。 ( ;゚皿゚)ノシΣ フィンギィィーーッ!!! MY_OPT1=true rspec spec/my_spec.rb環境変数で渡すのはダルいのでなんとかしたいと思い、`--tag`オプション…

"err"という文字列をHighlightしておくとGolangのコードリーディングが捗る

vimの人はこんな感じで autocmd FileType go :highlight goErr cterm=bold ctermfg=214 autocmd FileType go :match goErr /\<err\>/</err\>

golang勉強会で「cgoやってみた」という話をしてきた

Go lang勉強会 - connpassで発表してきた。 今までにblogに書いたcgoの話。以下が資料とサンプルコード。 資料 : http://yuroyoro.net/trying_cgo/ サンプルコード : https://github.com/yuroyoro/trying_cgo 久しぶりに人前で発表した気がする。 当日はdemo…

ぼくのかんがえたさいきょうのGit Repository Browser: Gitterb をRuby2.1.2/Rails4にupgradeしてDockerImage作った話

3年ほど前に、GitterbというGitリポジトリのコミットログを可視化するツールを作った。 ぼくのかんがえたさいきょうのGit Repository Browser - ( ꒪⌓꒪) ゆるよろ日記 Gitterb by yuroyoro yuroyoro/gitterb · GitHub このアプリケーションはRuby1.9/Rails3…

ʕ  ゚皿゚ ʔ GolangのASTを可視化するツールを作った

はじめてのGo Runtime。 ということで、GoのAST(抽象構文木)を可視化するツールを書いた。yuroyoro/goast-viewer · GitHubgoast.yuroyoro.net にデモがある。go/astパッケージを使うと、GoのソースコードからAST(抽象構文木)を得ることができる。 あとはこれ…

オマエらはもっとObject#tryの便利さについて知るべき

arr = [ ["foo", "", "bar"], nil, ].sample arr.try(:reject, &:blank?) #=> [“foo”, “bar”] Object#tryはnil-safeなcallとして使える blockを取るメソッドのsymbolを渡した場合に、第二引数にprocを渡しても動作する 要activesupport.gem tryと関数合成は…

ʕ  ゚皿゚ ʔ GolangのWeb Application Frameworkを色々試してみてもいいかしら?

うちのメロンちゃんはLv.117です。Golangで、簡単なWebアプリケーションをいくつかのフレームワークを用いて作成してみた。 サンプルアプリケーションは、こんな感じのPhotoギャラリーアプリケーションで、画像URLを入力すると追加される。 PureというCSSフ…

ʕ  ゚皿゚ ʔ GolangからLevelDBを使う

cgoとLevelDBを使って、タイトルのとおりのものを作ってみた。頑張ればRiakとかInfluxdbみたいなのを書けるかもナー。 ʕ ゚皿゚ ʔ cgo楽しいおシーゴォー コードはすべてGithubにある。yuroyoro/leveldb-go-sample · GitHub なお、この実装はあくまで個人的な練習で…

ʕ  ゚皿゚ ʔ Golangからv8を使う

cgoとlibv8を使って、タイトルのとおりのものを作ってみた。頑張ればnodeみたいなのをgoで書けるかもナー。 ʕ ゚皿゚ ʔ cgo楽しいおシーゴォー 基本的な方法は以下の記事にあるとおりだが、v8のバージョンが上がっていたりするので、多少の手直しをしてある。Embeddi…

「関数型Ruby」という病(6) - 関数合成と文脈、Proc#liftとProc#>=、そしてモナ

前回から一年以上が経過しているけど、最近lambda_driver.gemに機能を追加したので、そのことについて書こうと思う。 Rubyで、モナ……っぽい関数合成を実装した話だ。Rubyで関数合成とかしたいので lambda_driver.gem というのを作った - ( ꒪⌓꒪) ゆるよろ日…

git push 進捗

git remote rename origin 進捗 git commit -m '進捗ダメです' git push 進捗便利

gitでブランチを切り替えた時に何かする(例えばrbenvでRubyのバージョンを切り替えたり)

git

タイトルの通りのことをやりたかったっぽいので。 例えば、現在のRubyのバージョンはREE 1.8.7だけど、次回リリースからは1.9.3にあげることになっている場合なんか、masterブランチはREE使うけどdevelopブランチは1.9.3で動作させる必要があるっぽいけど、c…

tmuxでマウス(trackpad)でバッファをスクロールする

お役立ち情報です。 @yuroyoro スクロールはホイールでの操作になりますね。.tmux.confにset-window-option -g mode-mouse onを追加しておくと、ホイールでtmuxのバッファをスクロール出来るようになります。— いわもと こういち (@ttdoda) 2013, 9月 25 .tm…

Rubyはいつも俺に新鮮な驚きを提供してくれる

こんなコードがあった。 blockの評価結果が偽だったらエラーにする、という意図だと。 def die!(&block)! yield || raise("error") end 実行 irb(main):008:0> die! { true } RuntimeError: error from (irb):6:in `die!' from (irb):8 from /usr/local/var/…