rubymineで編集中のファイルだけ、プロジェクトの.rubocop.ymlを無視してrubocop -aする

いろいろな事情の結果、rubocopでほとんど制限しないルールにしたのだけど、自分だけはrubocop -aでよしなに整形したい。rubymineで。

external toolsにこんなのを登録する。

bin/rubocop -c /mnt/623D90F735FA5D47/sanemat/data/src/github.com/sanemat/dotfiles2016/rubocop-2-3.yml -a $targetFile

危険な兆候だけ消して、あとは動けばいいので。gofmt最高。そして項目を設定できてはいけない。

spam recruiter

aiでスパムリクルートメールを打つ人材サービスを使っちゃうとリスクありそうだなーと思った。

====
Kenichi Murahashi 様
※お名前の漢字が分からなかったので、失礼ながらアルファベット表記とさせていただきました。

突然のご連絡失礼致します。
株式会社xxx人事のxxxと申します。
GitHubに掲載中のメールアドレスからご連絡しております。

弊社は、スモールビジネスに携わる方向けのクラウド会計ソフトを作っている会社で、現在80万人以上の方々に利用されています。
社内で行っているプロジェクトに関しては下記を御覧ください。
(url snip)
起業や独立に伴う「難しいこと・面倒なこと・大変なこと」を自動化し、人々が創造的な活動に集中できるサービスづくりに取り組んでいます。

そんな中、現在
・プロダクトおよびフィーチャーの企画・設計・実装・テスト・計測・改善(xxxのエンジニアは企画から開発、リリースまで、エンジニアが自分たちで考え、実行に移しています)
・新規技術、コア技術に関する研究開発・調査
・新規機能企画開発、自動化のアルゴリズム改善、UX改善、新規プロダクト企画開発等
などのような業務を、Ruby / Rails を使って行なうエンジニアチームの向上を図っております。

上記のプロジェクトの一環として行っている試みなのですが、Murahashi様のような現場で活躍されている外部の優秀なエンジニアの方を実際に弊社オフィスにお招きして、弊社のサービスやエンジニア・オフィスをご紹介して、気軽にディスカッションをする、ということをしています。

誠に勝手ながら、Murahashi様のGitHubやブログの記事を拝見しました。GitHubのリポジトリのTachikomaを拝見しまして、依存するgemのバージョンを最新に保つことができるTachikomaは開発コストを削減できる非常に優れたOSSであると感銘を受けました。RubyやRailsを使うプログラマーの定形作業を減らすという点が評価されて、TachikomaはHEROKU賞を受賞されているとのこと、高い技術力が多くのエンジニアの方々からも評価されていることに敬服しました。弊社では最新技術を積極的に取り入れており、Murahashi様のように新規技術、コア技術に関する研究に携わっているエンジニアの方と是非技術的なお話しをさせていただければと思っています。

よろしければ一度お時間をいただき、30分-1時間程度で結構ですので五反田の弊社オフィスにて、お話をさせていただけないでしょうか。
もしご興味があれば、こちらのアドレス(snip) まで返信をよろしくお願いいたします。

ご返信をお待ちしております。
それでは失礼致します。

【xxxについて】
エンジニアブログ
(url snip)
弊社の機械学習への取り組み
(url snip)

N度目のGolang挑戦やってる

書いてる最中と書き終わった瞬間はNode.jsが一番楽しい。一個一個npm moduleにしてるときは、ウヒョーてなる。
もしかしたら誰かが再利用してくれるかも、という期待が一番持てるのもNode.js。
なお、あとから使う人、自分も含む、のことなぞ知らん。毎日使うもの以外はきびしい

これだとやっぱり後でうれしくないので、自分が使いたいツールをgolangで書き始めた。
golangってgolang標準添付以外のライブラリに現実的には再利用性なくてキライ
cliとライブラリでパッケージ分けてないの多くてキライ というかcli側はmainになっちゃう
なぜmakefile?? golangで書こうよって思うからキライ
gofmtとgoimportで書き方一つになるのすごく好き
適当にクロスコンパイルしとけば、シングルバイナリになって、どこでも動くものがボコボコっと作れる、全キライを吹き飛ばすほど好き

というわけでyak shavingからはじめた。github releasesまわり。ここがいければあとはテンション高く書いていけるはず。はず。

windows updateしたらデュアルブート側のubuntuが半端にしか起動しなくなった

windows updateしたらデュアルブート側のubuntuが半端にしか起動しなくなって半泣きだったけど、ログに従ってwindowsの高速スタートアップをoffにしたら起動するようになってよかった。

windowsの高速スタートアップはoffにしていたが、大きめのwindows updateでなぜか勝手にonになってしまい、windowsのなんかフラグがついてて、ディスクのマウントに失敗するようになってしまい、cuiでrootでしか起動できなくなってしまった。はじめgrub2あたり壊れたかなーって使い方読んだり意味もわからずwindows側でubuntuのuefiの何かの設定をonにするおまじない打ったりしてだめだった。
けどちょっと考えたら、grub壊れてたらcuiのrootだろうとなんだろうとubuntuが起動しなそうなわけで、そこじゃないのかなーと思えてきた。そして、画面に出ている通り(!!) journalctlコマンドでログを眺めてたら、windowsのなんかフラグで汚れててディスクのマウントが出来ねーって出ていたので、windows側に戻って、高速スタートアップをoffにしたら、無事ubuntuが起動した。よかった。よかった。

ぐぐるのはスマホで情報探してたけど、スペアないとつらいな…

float と big decimalをなんとなくベンチした

rubyで
3.14 * 10
=> 31.400000000000002
ってなるよなーって思ってbig decimalベンチしてみた。

手元のthinkpad x1 carbon 2016 にubuntu 16.04

$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]

$ cat float-vs-big-decimal.rb
require 'bigdecimal'
require 'benchmark'

n = 1000000
Benchmark.bm do |r|
  r.report "float" do
    n.times do
      3.14 * 10
    end
  end
  r.report "big decimal" do
    n.times do
      BigDecimal("3.14") * BigDecimal("10")
    end
  end
end
(rc->0)
$ ruby float-vs-big-decimal.rb 
       user     system      total        real
float  0.060000   0.000000   0.060000 (  0.052816)
big decimal  0.960000   0.000000   0.960000 (  0.967326)

生成コストでフェアじゃない?気もするけど 最後人間に読めるようにto_f するとか細かいこと気にするなってことで。16倍、思ったほどではなかった もうbigdecimal常用でいいのかな。もちろん用途によるんだけど。
キャッシュするとかベンチになってないとかあるかも。あんまりわかってないから。

$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
$ ruby float-vs-big-decimal.rb                                                  
       user     system      total        real
float  0.060000   0.000000   0.060000 (  0.055150)
big decimal  1.020000   0.000000   1.020000 (  1.020329)

手元のrubyははじめ謎のバージョンで止まってたままだった。けど2.4にあげたら20倍が16倍になってなるほどはやくなってるんだ。

あとBenchmark.bm の後ろの数字繰り返し回数かと思って Benchmark.bm 1000000 do |r| ってやってすごい文字数空白出てきた。はてなマーク出しながら10回ぐらいやっておかしくねって気づいた。ラベルの幅て。

ジャバ

仕事でjavaを触りたいなと思ってThe Java™ Tutorials からやりはじめた。

java歴としては、大昔に結城さんの本を読んで、基本情報か何かを一夜づけてjavaやって、よくわからないが合格したぐらい?
あとは他人が書いたandroid javaを修正したことはある。あとeclipseで作ったandroid javaだったので、ci回す用にantにしたり、とか。つまりほぼ未経験。

java力を上げたいなーと思って、なんとなく
https://github.com/trending/java?since=weekly
trending見てた。

rubyでいうrails関連のgemや、昔のnodejsのhubot pluginみたいな、お手軽に触れて、ちょっとずつレベルアップできるみたいなのが欲しい。

trendingみてると、android, spring-boot, というandroidならandroid javaやるわってのと、springならrailsやるわってのと、あとelasticsearchとかみたいな巨大なやつしかない。cassandraとかそのへんのデータ周りはjavaなイメージある。
https://github.com/apache?utf8=%E2%9C%93&q=&type=&language=java
zookeeper, hive, kafka, hbaseとか、お、おうとしかいえない。
あとはbitcoinjとかか??

昔の知識で言うと、jenkins pluginやjetbrains ideaのplugin書くといいのかな?ともおもう。といってもjenkins pluginはつくってもci as a serviceで使いづらいしいまどき書いたら負けだろう。あーあとはminecraftのmodか。minecraftやらないからな。javaのためにやるか。言い訳ばかりで進まない!

利用者と開発者の話

利用者と開発者の話、おおむね開発者コミュニティがあればいいじゃないので賛成。ただ、職人が「昔は見て盗んで覚えた」っていうのと変わらないような印象も受けてしまう。人数 is powerって自分は思ってる。オチ無し。

Update dependencies

json gemが1.xだとruby2.4で動かなくて、2.xだとruby1.9で動かない。
みたいなので結構おっくうになってたのだけど、ちょっとずつバージョンを上げ始めた。

http://rubies.travis-ci.org/ みながらここにあげる

- 2.0.0
- 2.1.10
- 2.2.6
- 2.3.3
- 2.4.0

今上げてるのが、nodejsにかぶれたあとのライブラリ群なので、まだそんなに苦労はしていない。まだ。

いまのところで引っかかるのは、
– rubocopがどこかのバージョンから1.9サポートをdropしている
– public_suffixがどこかのバージョンから1.9サポートをdropしている

このへん。
rubocopはgemspecではなくGemfileで入れてることが多いので、gem 'rubocop' if RUBY_VERSION >= 2.0.0みたいにした。
octokit -> sawyer -> addressable -> public_suffix
を使っているライブラリはもうどうしようもないので、1.9サポートをdropした。

1.9なんてもういいだろって思うけど、travis-ciって便利サイトがデフォルトruby1.9で、他の言語で使って欲しいツール・ライブラリでは1.9もサポートしたいのよね。出来る限り。
で、出来ない限りになってしまったので、1.9サポートdropはしかたない。
あとはmac os xっていう便利プラットフォームもsystem rubyが2.0とかいう化石使ってるので、2.0サポートも出来る限りしたい。
こういう小さいツール・ライブラリを作るのにrubyを使うのは向かない、ってことになってしまうのがなんともはや。
golangでやろう、って方向へいきますね。golangまだ全然思うように書けないけど。

今年のpull request 一覧

自分のリポジトリ以外へのpull request一覧、自覚はしてたけど今年悲惨だ。大部分fix typoだし。
自分リポジトリもなにか去年のsaddlerやnpm module作りまくってた感じではないからな…

https://github.com/search?p=1&q=is%3Apr+created%3A%222016-01-01..2016-12-31%22+author%3Asanemat+-user%3Asanemat+-org%3Apandawing+-org%3Apacksaddle+-org%3Adogwalk&ref=searchresults&type=Issues&utf8=%E2%9C%93

社会復帰(会社復帰)は果たせたので、次はOSS復帰しよう。

全く気付かないうちにあの曲になるwebアプリ

全く気付かないうちにあの曲になるwebアプリができた。
https://sanemat.github.io/lunch-box/?pv=k4xGqY5IDBE&st=11

クリスマスの宿題として、作っていたのだけど思ったより時間かかってしまった。
どうにか2016年中に完成したので年が越せる。

https://sanemat.github.io/lunch-box/?pv=mjyeBXDWiHg&st=10
https://sanemat.github.io/lunch-box/?pv=CTl1BDngldc&st=5

iosは複数動画流すと、1個目の動画が止まってしまうのはwebkitの仕様?バグ? らしいので、androidかパソコンで見てね。

ユッキのは元ネタあり
「気持ちいいよね 一等賞!」が全く気付かないうちにあの曲になる – ニコニコ動画 http://www.nicovideo.jp/watch/sm25234632