にたまごほうれん草ブログ

はてなダイアリーから移行したブログ。以前のはこちら→http://d.hatena.ne.jp/emergent/

技術書典6へ参加してきました(「機械学習の炊いたん」寄稿と買い物)

参加したのは先週4/14。あっという間に1週間経っていましたね。

初出展

機械学習をテーマにした合同誌に寄稿させていただきました。

booth.pm

といっても、わたくし機械学習はとんと素人でして。

たまたま発起人の@tomo_makesが私の昔の同級生だったことから、声をかけてもらいまして、でもガチ勢の人たちに追いつく時間もないので、

  • 第1章:あやめ(猫)を画像認識してみるチャレンジ(そして失敗してあやめ画像でごまかす)
  • 第3章:機械学習を新たに学んで転職・採用のためのコラム

の2本を勢いでガーッと書ききって恥ずかしげもなく売りさばきました。

おかげさまで、紙の書籍は完売し、引き続き現場とBOOTHでの電子版の売れ行きもなかなか好調です。私以外の執筆者のみなさんのおかげというほかない、ほんとに。

よかったら上記のBOOTHへのリンクから、サンプルで目次を見ていただいて、興味がある方は購入いただけるとありがたいです!あやめのおやつ代になります。

本書内で散見されるあやめ見せびらかしの例

f:id:emergent:20190422024105p:plain f:id:emergent:20190422024304p:plain

その他の出展について

技術書典自体、前回以上に人がたくさん来ていたようです。13時までの入場が有料化したにもかかわらず、12時過ぎまで行列がはけなかったようですしね。

売り子の合間に見て回るのも一苦労でしたが、なんとか素敵な本の数々を入手することができました。少しずつ読んでいく楽しみ、積まれていくつらみを味わえるなんてなんという幸せでしょう。

次回、技術書典7に向けて、(今度こそ技術書にふさわしい内容を携えて)早速準備していきたいと思います。

Shunjuku.rs #2参加記

forcia.connpass.com

仕事を早めに切り上げてLTイベントに一般参加してきました。雰囲気は若い人が多いなーって感じ。(私がおっさんなだけだと思うのですが) しかし、LT登壇者はRust強者だらけで、でもRustという言語を楽しんでいることが伝わって自分も何か作って話してみたいと思った。ただ、LTってすべてを理解するには短いですね。なのでTwitter上で展開されている資料を見直して咀嚼するのです。

参考リンク(順不同、というか見つけた順)

Rust by Example をこつこつと写経した話

doc.rust-lang.org

毎日同じ時間にやるの大事。Exampleはコンパイルが通るからよい(いきなりオリジナルコード書いたらまず通らない)

場所と値を意識してRustの気持ちになる話

speakerdeck.com

RustでGPGPUな話

docs.google.com

WGができたんだって。発表者のtermoshttさんも入ってる。

github.com

RustでTDDする話

Liveコーディングしてた。

mockers とか mockito とか使ってた。

CLionでRust使えるんだー pleiades.io

Rustでターミナル上で動作するフレームバッファを作った話

フィンランド人のコンティオさん。懇親会で一番しゃべった。

speakerdeck.com

↓これのデモ。

gitlab.com

ターミナルは、(名前忘れた)

主催者プレゼン

www.forcia.com

のお話とデモ。

先読みしてんのかってぐらい高速な検索。

RustにVoidを導入してみる話

発散型っていうのね今日知った。

keens.github.io

そういえばHaskellにはVoid型あるよね。

Cでコード書いてたときは *void な型をよく使ってただめな子だった。

まとめ

みんなすごい。

cargo installのインストール先

Rustでコマンドラインツールを作ってインストールできるようにしたい。

qiita.com

では、 cargo install ですると記載があるが、実際に叩いてみると以下のような感じ。

$ cargo install
error: Using `cargo install` to install the binaries for the package in current working directory is no longer supported, use `cargo install --path .` instead. Use `cargo build` if you want to simply build the package.

つまり、 cargo install --path . を使え、と。

使いました。(atgetって名前にしてた。*周辺は適当に伏せ字)

$ cargo install --path .
  Installing atget v0.1.0 (/*path*/*to*/atget)
    Finished release [optimized] target(s) in 0.21s
  Installing /Users/*****/.cargo/bin/atget

できました。

ノーフリーランチ定理の紹介論文

を、読みました。

https://taroyabuki.github.io/works/no_free_lunch.pdf

千葉工大で教授やってる人に紹介してもらったのですが、その人はこの著者の矢吹先生が現在千葉工大にいることを知らなかったのが面白かった。

2019年あけましておめでとうございます

ついにあけてしまいました。

まずはリマインダー

はてなダイアリーが春に終了するので移行準備をしなくてはいけません。

d.hatena.ne.jp

抱負など

2018年9月から新しい会社で働いています。

前職ではプロジェクトリーダー・プロジェクトマネージャとして働いていましたが、コードを書く仕事がやっぱりやりたくて、ソフトウェアエンジニア職で転職しました。

Pythonメインで書く仕事なのですが、趣味としてのいろいろなプログラミング言語学習を、仕事にも活かしていければと思っています。活きなくてもどっちでもいいですが。

何はともあれ、年末、開発計画を立てましたので、それに沿って年明けから私のチームで本格的に開発をすることになります。ドキュメンテーション仕事はほどほどにして、コードをがっつり書いていきたいですね。

あとは、クラウドサーバ(GCPとか)にも詳しくなりたいです。まる。

退職エントリを読んで

某氏の某TT退職エントリが巷を賑わせていますが(私の観測範囲で)、だいたい書かれていることは概ねふむふむと思い読ませてもらいました。ハイレベルな次元にいるなぁ、とは思いつつ。

そういえば私は退職エントリを書いてはいませんが需要とかあるのかしら。一言で言うとプロマネ・プロジェクトリーダーをやってたけど、やっぱりエンジニアになりたいと思って40手前で今の会社にエンジニアとして転職した、って話。

飲み会のネタにはなるけど、世の中に大発信するようなネタでもないなー。寝よ寝よ。

clojureコマンド実行時のclasspathにはカレントディレクトリ+'/src'を含む

ようなので、複数ファイルでオレオレライブラリを作りたい場合は、[ライブラリを使う側のファイルのpath]+/srcとなるディレクトリにオレオレライブラリの.cljファイルを置けば実行時に読み込んでくれるよ。

確認

classpathの表示は、(pprint (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader))))を使う*1

環境はMacOS 10.14.1、Clojure 1.9.0のreplを使って確認します。(ユーザ名だけhogeに変えてます)

$ pwd
/Users/hoge/dev
$ clj
Clojure 1.9.0
user=> (pprint (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader))))
(#object[java.net.URL 0x3a0baae5 "file:/Users/hoge/dev/src"]
 #object[java.net.URL 0xdb57326 "file:/Users/hoge/.m2/repository/org/clojure/clojure/1.9.0/clojure-1.9.0.jar"]
 #object[java.net.URL 0x4b14918a "file:/Users/hoge/.m2/repository/org/clojure/spec.alpha/0.1.143/spec.alpha-0.1.143.jar"]
 #object[java.net.URL 0x6d1ef78d "file:/Users/hoge/.m2/repository/org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24.jar"])
nil

1つ目のパスがそうなってますね。念のため手元のLinux(ラズパイ)でもやっておきます。

$ pwd
/home/moge/dev
$ clj
Clojure 1.9.0
user=> (pprint (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader))))
(#object[java.net.URL 0xfdd473 "file:/home/moge/dev/src"]
 #object[java.net.URL 0x1b365ed "file:/home/moge/.m2/repository/org/clojure/clojure/1.9.0/clojure-1.9.0.jar"]
 #object[java.net.URL 0xbada02 "file:/home/moge/.m2/repository/org/clojure/spec.alpha/0.1.143/spec.alpha-0.1.143.jar"]
 #object[java.net.URL 0x525575 "file:/home/moge/.m2/repository/org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24.jar"])
nil

おんなじですね。