crate under_score hy-phen

crateはunder_score区切りで命名するようだ。

https://doc.rust-lang.org/1.0.0/style/style/naming/README.html#general-conventions-%5Brfc-#430%5D

なおhyphenのcrateも多い。どっちか迷ってpyphenでつけてしまったので、renameしようとした。できない。
古い方全部yankして、たぶんしなくていいんだけど、新しい方にcargo publishした。ところが最後のuploadでこける。

   Uploading text_to_checkstyle_cli v0.0.5 (file:///mnt/623D90F735FA5D47/sanemat/data/src/github.com/packsaddle/rust-text_to_checkstyle_cli)
error: api errors: crate was previously named `text-to-checkstyle-cli`

前はこの名前でした、って知っとるわ。
crateでpyphenで入力して、underscoreじゃないですか、ってもしかして出たので、内部では同じに持ってるのかな。まじかよ。設計ミスぽい。helpにメールしたので、反応待ち。手作業で何か解決するのかな。

広告

unwrap祭り

どこがResultにくるんで返すといいかよくわからない。全部だ、全部!ってやるとunwrap祭になってしまう。どうするんだろう。

better shell

ベターシェル

私がほしいのって
– みんなでちょっとずつ作ったものが
– ワンバイナリにコンパイルできる
– ベターシェル

人が有象無象山盛りいるのが必須条件。
なので、nodejsで書いたアプリが1MBぐらいに縮んでくれると一番良い。
次にgolangでライブラリパッケージシステムが発展するのが次にいい。
どっちも期待薄なのでrustですかね。前者2つに比べちゃうと人が足りない。
rustの良し悪しはよくわからないですがcargoとcratesが最高便利。

fmtやlintは設定項目ないのがいいですね
gofmt最高
eslintイマイチ prettier最高
rstfmtイマイチ?
rubocopイマイチ

メタデータ設定項目はプログラムかけないのがいいですね
json最高
tomlイマイチ?
yamlイマイチ

jsのpower assert最高

rustのバイナリをgithub releasesに送る仕組み

なんで各言語ごとに作りこみたがるんだろう。バカなのかな? って思いたくもなるけど、自分含めてそうしないとまともに扱うのは無理なのかなと思ってしまう。

コレはやり過ぎだから、自分でわかる範囲で探すかと、cross compileのしくみを探していて結局
japaric/trust: Travis CI and AppVeyor template to test your Rust crate on 5 architectures and publish binary releases of it for Linux, macOS and Windows
コレに戻ってきた話です。

追記
伝わらない気もして追記すると、わたしは、クロスコンパイル環境作るくんと、クロスコンパイルするくんと、パッケージするくんと、ghr でやるほうが正しいと思うんですね。glue codeはnodejsで書くかなあ。一ミリもeasyじゃないが。

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回ぐらいやっておかしくねって気づいた。ラベルの幅て。