mruby v1.3

mruby v1.3 がリリースされましたね。 趣味mrubyウォッチャーとしてv1.2からv1.3で何が変わったのかを、個人的にまとめてみたいと思います。 注目すべきは、やはりmatzのcommit数。 もちろんmerge commitも含みますが、約半数のcommitがmatzのcommitになって…

mruby-io-copy_streamつくった

github.com 特に問題意識を持っているわけではないけど、がんばって作ってみた。半月以上かかった。 mruby-io-copy_streamとは、mrubyでCRubyでいうIO.copy_streamが使えるようになるライブラリです。 IO.copy_streamは、ようはcatコマンドみたいなやつ。 ち…

OSSMMORPG仮説

僕はゲームをやりすぎて留年したぐらいにはMMORPGをプレイしたことがあるわけだけど、最近OSS活動はMMORPGと似ているんじゃないかと思いはじめてきた。 僕がOSS活動をするのも、ゲームをプレイするような楽しさを感じている。 OSS活動と一口に言っても、様々…

無職の記録

無職最終日です— 冬休み (@_ksss_) 2017年1月18日 約3週間ほど無職を体験したのでその記録。 健康保険 3週間ほどであれば、国保の切り替えがベター。 保険証の発行が即行われるので、無職期間中に子供を病院に連れて行っても保険証が提示できるのが大きい。 …

第三回mruby-spec進捗確認

すでに本人が飽き気味になっていることは世間から全然反応がないからでありウンヌンカンヌン。 Fix bugs 細かいのが多いので一覧はこちらをどうぞ。 https://github.com/mruby/mruby/pulls?utf8=%E2%9C%93&q=is%3Apr%20is%3Aclosed%20author%3Aksss%20create…

Repro株式会社にJOINする予定です

https://repro.io/を運営するRepro株式会社にJOINする予定です。 Repro きっかけはCTOのid:joker1007さんでした。 いろいろな道について模索している時に「フリーランスになるとどういう感じなのかなあ」というのを誰かに相談したくても、話せる知り合いはあ…

2016まとめ

2016何したかなーと思ったのでまとめる。 ちなみに去年の。 ksss9.hatenablog.com Pull Requests https://github.com/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Aksss+is%3Apublic+created%3A2016-01-01..2016-12-31 現時点でOpen: 5, Close: 78 ほとんどがmr…

最終出社日です

逃げるは恥だが役に立つ 皆さんは逃げ恥観ましたか。 私は5日間で11話全部観ました。TBSオンデマンドで登録すると最初の2週間無料とききつけて登録(したのは妻だけど)。普段からTVは観ない二人なので、始めの2話を観た日は刺激が強すぎるのか二人して寝付け…

mruby-spec進捗日記〜第二話〜

ここ最近の出来事をまとめてみた。 ruby/specの作者とPRを交換した 前回のブログを公開した所、ある日メンションがとんできた。 @_ksss_ I managed to run some Fixnum specs of ruby/spec on mruby. I made it work with iij/mruby, mrbgems and modifying …

mruby-specの成果報告

注 自分の頭の整理のためのエントリーです。 よって超長い。 mruby-spec 以前、mrubyでruby/specを走らせるやつを書いたのですが、 その後どうなったのかまとめてみます。 ksss9.hatenablog.com 成果 mruby本体のSEGVを3つなおした。 ruby/specで、まず手を…

mruby-at_eixtでmrb_state_atexitを直接呼ぶのをやめた

以前作ったmruby-at_exitに勘違いがあったので改良した。 mruby-at_exit gem リリース - スペクトラム 以前はmrb_state_atexit APIを直接呼んでいたけど、実はこれを呼ばなくてもat_exitは実現できる。 mrb_state_atexitはat_exit的なもの専用APIだと思って…

mrubyでruby/specを走らせることに成功した

長いと思うので結果だけ リポジトリはこちら。 github.com 使い方はgit cloneしてmakeするだけと大変お手軽。 make TESTS="core/nil"のように、ディレクトリ指定もファイル名指定もできる。 全国のmrubyistの皆様に於かれましては、是非お試し願いたいところ…

JSONパーサー再考

tl;dr json-expect-parserというgemを作った。 github.com gem install json-expect-parser で使えます。 きもち JSONをパースする実装はいろいろありそうで、すでに各言語に標準添付されていたり、便利なものがたくさんある。 そこであえて車輪の再発明を試…

mruby-at_exit gem リリース

mrubyでat_exitができるmruby-at_exitを作った。 github.com at_exitはrubyスクリプトが何らかの理由で終了するタイミングで発動するコールバックを登録できるメソッド。 mrubyではmrb_state_atexitというCの関数でmrubyが終わるときをフックする関数を登録…

日報 2016-07-31

exported form https://nippo.wikihub.io/@_ksss_/20160731140352 mrubyでのforkのバグを直した。 https://github.com/iij/mruby-process/pull/7 引数に初期化されてない変数がブロック引数に渡されているので、 これをmruby側で参照すると死ぬ。 そもそもfo…

日報 2016-07-22

exported from https://nippo.wikihub.io/@_ksss_/20160722124458 mruby本体に2つバグがあった。 一つめ Struct.new(:a) do def foo end end とすると、fooメソッドはStruct.newで作られた新しいclassのメソッドになることを期待するが、 なんと、Structclas…

日報 2016-07-20

exported form https://nippo.wikihub.io/@_ksss_/20160720141728 序 おもしろそうなのでこっちに書いてみる。 riloっていうmrubyで動くミニマムエディターを作っている。 https://github.com/ksss/rilo ワンバイナリ化 mruby-cliについて勘違いしてた。 mru…

mrubyでテキストエディタ書いてる

大体動くようになってきたので公開。 github.com きっかけは、まず最初にkiloがあった。 github.com kiloはredis作者が作った、C言語で書かれた超ミニマムなテキストエディタだ。*1 「このコードを読めば、ベーシックなテキストエディタの実装方法が分かるは…

ニブンノイクジに感化されて保護者会に行ってきた

ニブンノイクジ ニブンノイクジは「大東京トイボックス」や「スティーブズ」で有名なうめ先生の描くwebマンガで、 ママテナとcakesで連載されている。 ニブンノイクジ | mamatenna ニブンノイクジ|うめ(小沢高広・妹尾朝子)|cakes(ケイクス) 毎週楽し…

わけがわからないことを雨のように体験する。それが東京Ruby会議11

regional.rubykaigi.org 東京Ruby会議11で「Rubyに型があると便利か」という発表をしてきました。 speakerdeck.com 何百人もの人に30分も時間をとってもらって話を聞いてもらうのは物凄く贅沢な時間だと思います。 トークを聞いていただいた皆様。声をかけて…

議論はすべきでない

最近感じている、「議論はすべきでない」という自説について書いてみる。 この説を裏付ける、二つの話題が自分の中にあったからだ。 人を動かす 最近読んだ本「人を動かす / デール カーネギー」がきっかけだった。 人を動かす 新装版作者: デールカーネギー…

golangでidobataのbotを書く

前提条件 idobataを使っている idobata botがどうやって動いているのか知らないので、知りたい欲求がある golangはほとんど書けないが、練習のためにgolangで書く websocketについては、複数クライアントでのお絵かき同期サンプルを作ったことがある程度の知…

デバッグに便利そうなgem LazyMethodを書いた

https://bugs.ruby-lang.org をなんとなく眺めていたら、とあるチケットが目につきました。 Feature #12125: Proposal: Shorthand operator for Object#method - Ruby trunk - Ruby Issue Tracking System このチケットは、「Method classは便利だけど記述が…

cgoがむずい

CとGoの世界の境界線をいったりきたり。 分かる人には簡単なんだろうけどgolang自体が初心者から抜け出せない。。。 コールバック関数をメンバーに持つstructをつくって、コールバックが動くと対応するgolangのfuncが動く感じになればいい。 直接GoからCにfu…

アカマイ 知られざるインターネットの巨人 / 小川 晃通

(角川EPUB選書)" title="アカマイ 知られざるインターネットの巨人 (角川EPUB選書)">アカマイ 知られざるインターネットの巨人 (角川EPUB選書)作者: 小川晃通出版社/メーカー: KADOKAWA / メディアファクトリー発売日: 2014/08/11メディア: Kind…

孔明の罠 Kaizo Trap

始まりはfacebookだった。 facebookでシェアされた何気ない動画。 普段なら「へ〜」で終わってページをスクロールすることがほとんどだけど、この動画だけは違った。 その動画を再生してから8分間、じっと見続け、再生が終わった瞬間二周目を開始した。 8分…

RubyでJSONをclassにmappingするやつと、2つの記法

僕はHashが嫌いだ。 できるだけHashは使いたくない。 h[:foo] とか h.fetch(:foo) とか本気で使っているのかね君たちは(今日は何となくこんな感じですすみませんすみません)。 Hash Hashはとにかくデバッグが面倒だ。 設定やら多値を表現するためか生存が長…

GitHubの草を連続40日間生やしてみたけどやめた

https://github.com/ksss rebuild.fmの#120を聞いて、jQueryの作者が始めた「毎日コードを書く」というやつを40日間やってみた。 rebuild.fm John Resig - Write Code Every Day よかったこと アウトプットがふえた 毎日コードを書くというルールなので、 ア…

2015まとめ

2015 買い物 家を買った やたら歯を治療した 子供が生まれそうだったので新しい家を去年から探して回っていた。 10軒ぐらい見て2軒話を進め、最終的に1軒契約という形になった。 今年の前半はだいたいこれ。 子供 産まれた 育てた 今年の後半はだいたいこれ…

子育てしながらリモートで働いた半年間

この記事は子育てプログラマ・ITエンジニア・Webデザイナー Advent Calendar 2015の20日目の記事です。 前回は@elcondorさんの背中を預けるということ、あるいは共働き家庭での子育てについて - condor's diaryでした。 はじめに 僕はプログラマーとして働い…

text2svgをつかってfontawesomeをSVG化する

人気アイコンフォント、fontawesomeをSVG化したい。 そんな方にもtext2svgは便利にご利用いただけます。 fontawesomeでは指定のunicode毎にアイコンがフォントの文字として登録されています。 https://fortawesome.github.io/Font-Awesome/ この文字は公式サ…

テキストの外形をsvgにする、text2svgをRubyで作った

テキストとフォントファイルを与えると、テキストの形をsvgで表現した出力が出てくる夢を見たことがありますよね? 作りました。 github.com $ text2svg "Hello, World\!" --font="/Library/Fonts/Times New Roman.ttf" > test.svg $ open test.svg -a /Appl…

RubyKaigi2015でLTした。

「A New Testing Framework Rgot」というタイトルで rgot についての紹介LTをしました。 スライドも公開しました。 発表では時間切れになって見れなかった最後の2ページも乗っています。 以下ダラダラとした話。 LTをやったのは初めて、トーク自体も二回目な…

font awesomeのunicodeを出力するヤーツ

Font-Awesomeという便利アイコンフォントがある。 これをkeynoteなどで使いたい場合、ローカルにインストールしてから、 各アイコン指定の\uf09bのようなunicodeを打たなければならない。 これを探すのもめんどくさければ、文字をキーボードから作れないので…

mgem3連投

mruby関連、最近は全然さわってなかったので少しだけアップデート。 mgem3連投 https://github.com/ksss/mruby-signal 昔作ったやつ。CRubyのsignal.cのほぼコピペ。 コードはコピペだし公式っぽい名前なので恐れ多くてブログにすら書いてなく完全に無告知だ…

korでテーブル変換サーバーが書けてた

ちょっと思いつきで、korで遊んでみた。 github.com KorはRubyのgemだ。Rubyは2.0.0から対応している。 これからのプログラムを走らせる準備をしておく。 $ gem install kor kor-output-json 短いサーバープログラムを書く。 server.rb #! /usr/bin/env ruby…

ISUCON5の予選を徹底的に復習する

ISUCON5の予選に参加して、圧倒的な差で負けたので、 この悔しさをバネに復習して、自分の力にしたいと思う。 今回のファイトではアプリの修正が特に重要であったように思う。 そこでアプリの修正に焦点を当てて、「こうすればよかった」を追っていき、自分…

7日間で7つのgemをリリースした

https://github.com/ksss/kor https://github.com/ksss/kor-input-json https://github.com/ksss/kor-output-json https://github.com/ksss/kor-input-ltsv https://github.com/ksss/kor-output-ltsv https://github.com/ksss/kor-input-yaml https://github…

korのjson出力プラグイン書いた

github.com 自分でも半信半疑だったので(!?)、ためしにkorプラグインを書いてみた。 これで、例えばmysqlのselect結果をJSONに変換する、といったことができる。*1 $ mysql -u root db -e 'select * from users limit 1' | kor tsv json --single [{"id":"…

プラガブルにcsvとかのテーブルデータを別の形式に変換するやつ作った。

github.com 名前はKorという、これまた厨二ネーミング。*1 rubygemsとして実装したので、 $ gem install kor でインストールできます。 csvやtsv、markdownのテーブル表記を、 これまたcsvやtsv、markdownに変換できる、 しかもプラガブルに拡張可能。 とい…

ISUCON5予選に参加した

チーム「かにかま」として、会社のインフラ同好会3人で出場した。 結果は大敗。 多分1700点ぐらいだったと思う。(上位は2万点ぐらい) 反省はたくさんあるけど、一つだけあげるなら 「まず落ち着け!!!」 「まず落ち着け!!!」 おそらく最初に設定されて…

複数行出力をドット'.'に変換するやつつくった

github.com 「ちょっとしたスクリプトが動いているのか確認したいから、 出力は出したいんだけど、 でもそんなにいっぱいは要らない。 なんか一行ごとに.だけ出してくれればいいんだけど。。。」 みたいなことありませんか? ありませんよね? 作りました。 …

URL一覧に全部アクセスしてHTTPステータスコードを付けるやつ作った

名前はballad。厨二ネームだ。 github.com READMEにあるように、こんな感じのことができる。 $ cat data.txt https://www.google.co.jp/ https://www.google.co.jp/a https://www.google.co.jp/b $ cat data.txt | ballad 200 https://www.google.co.jp/ 301…

rubygems type_structをリリースした

RubyはわりとHashオブジェクト中心なところがあって、 便利なその場限りのデータの塊として使ったり、キーワード引数として使ったりする。 でもやたらHashを使っていると、長いこと引数として使いまわしてしまい、 なんでも入れられるがゆえに「今ここでどう…

YAPC::Asia 2015行ってきた

前夜祭 OSSの話を聞いた感想としては、 基本的にソフトウェアは多くの人が使ってるから大丈夫だろうという感じで使うことが大半なので、 使われるソフトウェアは集中する。 なので9割9分のソフトウェアは、 どれだけ宣伝しようが誰にも使われなくて、 ほんの…

Rgotで並列/並行ベンチマーク

前回、前々回にひきつづき、コツコツつくっているgem Rgotはgo testを模しているので当然Benchmark機能をもっています。 go testコマンドでは-cpuオプションをつけると、並列するgoroutineの数と、runtime.GOMAXPROCSで設定できる使うCPUの数をオプションで…

RubyのRipperをつかって、go testのExampleを実装した

引き続きgolangのtestingパッケージをRubyに翻訳したRgotを作っていて、 Testing、Benchmarkは実装したので、Example機能を実装してみた。 機能はgolangのtesting packageにあるExampleとおなじを目指した。 Example機能が何かというと、プログラムのサンプ…

golangのtestingがよくわからなかったのでRubyにもってきた

Rubyのテストは主にassertionを書くものが多く、 「こうあるべき」に主眼をおいて書かれていることが多い。 しかしながらgolangはこのアンチテーゼというかおもしろい見方をしていると聞いて、 「どういうことだろう?」と思って気になったので調べていたらR…

RubyのTempfile.createが便利

Tempfileの実装を調べようとCRubyのコードを読んでいたら見知らぬコードを発見した。 それは僕がほしくてとっさに作ったものそのものだった(それ以上だった) http://docs.ruby-lang.org/ja/2.2.0/method/Tempfile/s/create.html Tempfile.createはTempfile.o…

mruby-methodぼんやりつくったよ

ksss/mruby-methodgithub.com Rubyコードで書かれたメソッドがどのファイルのどの行で定義されているのか調べることができて便利。 p Enumerable.instance_method(:find_all).source_location #=> ["mruby/mruby/mrblib/enum.rb", 148] ご活用ください。