2019/10/24 このエントリーをはてなブックマークに追加 はてなブックマーク - Ergo42用にスペーサーを買った話(失敗)

Ergo42用にスペーサーを買った話(失敗)


誰の参考になるかわからないですが、書いてみます。



Ergo42にunderglow LEDに仕込んだため、PCBとプレートの間の空間が5mm以上必要になった。
遊舎工房キット付属のものはm2の5mmだが、5mmではLEDテープがPCBと密着してしまい、あそびがないため干渉する。


  • 東急ハンズ
  • 遊舎工房(多分ネット販売は無い)
  • 秋葉原のそういう系の店
  • AliExpress

有力なのは東急ハンズや遊舎工房などらしい。
AliExpressもアリだと思います。
自キー界隈ではscrapboxに情報がまとまっていました↓


Amazonは皆無に近かった。10mmのものは売っていたので買って見たが長すぎ(そりゃそうだ)。


モノタロウは玄人に優しいサイト


モノタロウは種類が豊富だったため買った。
ただし、完全にそういう建築とかする系の業者がユーザー想定のサイトだったため、結構素人は困惑した。
ただ、これは玄人向けに作ってると言われれば、確かに無駄な情報が無くて良い。
慣れれば使いやすいような気もした。

痛恨の購入ミス


素人の僕は

  • m2であること
  • 高さが何mmか

ばかり気にしていたので、ネジしめが出来ないタイプということに気づかず購入。あえなく爆死しました。
ちゃんとネジ閉まる用のスペーサーも売っているのでそれを買えば解決しそう。

ちゃんと図面を見て買うべし


モノタロウで売ってるスペーサーはだいたい図面も商品ページに書いてあるので、よく見れば需要を満たすものはわかる。
よく見ていない自分が悪いという事案でした。


よく見て買いましょう!
ネジが閉まらず、いま僕のErgo42はパカパカになっています。悲しい
3度目の正直で次はちゃんとしたのを買いたい。



2019/09/08 このエントリーをはてなブックマークに追加 はてなブックマーク - ergo42 towel (光らせバージョン)を作りました

ergo42 towel (光らせバージョン)を作りました


作りました!
ergo42のアーリーバードでもなく、ergo42 towelです(ココ大事)。

ergo42 towelは、4x7のイカしたキーボードです。

https://yushakobo.jp/shop/ergo42-towel/

2019/08/24 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin Fest 2019に行ってきました

Kotlin Fest 2019に行ってきました

カテゴリ: ,



Kotlin Fest 2019行ってきました。
https://kotlin.connpass.com/event/129860/



2019/08/09 このエントリーをはてなブックマークに追加 はてなブックマーク - NestJSのエラーハンドリングってどうやるの

NestJSのエラーハンドリングってどうやるの

カテゴリ: , ,






NestJSとはTypeScriptで書かれたnodeのサーバーサイドのフルスタックな感じのフレームワークです。
どことなくどこかで見たことある感じのフレームワークなので使いやすい感じはあります。
(いろんな言語の某フレームワークや別の某フレームワークに似ているとか感じると思います)

https://github.com/nestjs/nest


NestJSってエラーハンドリングどうするのがいいんだろう?
Catchアノテーションというのがあるらしいけどどういうものなんでしょう(大体想像つくけど)
そのあたりを調べてみます。

2019/08/07 このエントリーをはてなブックマークに追加 はてなブックマーク - helixを作りました(こいつ、光るぞ…!)

helixを作りました(こいつ、光るぞ…!)

helixを作りました。
今この記事を書いているのはmanta60とhelixです。



  • とにかく可愛い。
  • サイズがコンパクト
  • キー数としては充分
  • 光る

2019/08/05 このエントリーをはてなブックマークに追加 はてなブックマーク - エラーログとtry-catchの最低限

エラーログとtry-catchの最低限

カテゴリ: ,

thanks いらすとや
https://www.irasutoya.com/2015/07/blog-post_993.html



この記事は僕がぼんやり考えてぼんやりこうだよなぁ、と思ったという内容です。
割と当たり前な結論なってしまったのでアレてす。これが正解というものではないですし、間違いを含んでいる可能性もあるので悪しからず。
間違いはご指摘いただけると助かります。
なお、例外機構や例外オブジェクトのない言語もまとめて考えるため、本記事では例外という言葉を使わず、
とりあえずエラーと表現しています。

2019/07/09 このエントリーをはてなブックマークに追加 はてなブックマーク - 自作キーボードのキーマッピングについて自分なりに思うところ

自作キーボードのキーマッピングについて自分なりに思うところ


自作キーボードのキーマッピング、皆さん悩むところだと思います。
自分の場合、こうしているというのを書くと参考になる…かもしれないので書いてみます。


2019/07/06 このエントリーをはてなブックマークに追加 はてなブックマーク - ビジネスと技術、どちらからやる気を出すか

ビジネスと技術、どちらからやる気を出すか

カテゴリ: ,

ビジネスと技術、どちらからやる気を出すか
みたいなとこが自分の中にはある。


2019/06/24 このエントリーをはてなブックマークに追加 はてなブックマーク - 60%キーボードのmanta60をつくりました

60%キーボードのmanta60をつくりました







manta60を作りました。

先に言っておきます。manta60は本当にいいキーボードです!

残念ながらレツプリとかheilxとかに比べ作成しました系の記事が少ないので、
足しになればと、僕のビルドログ(?)をブログでまとめます。


天キーで60%キーボードを物色していたところ
良さそうなものが販売されていたので書いました!
これがmanta60との出会いでした。
作者の方から直々にどういう特徴があるか、キットに何が入ってるかなど聞いて
販売してもらうのは貴重で贅沢な体験だったなぁと思います!

2019/06/15 このエントリーをはてなブックマークに追加 はてなブックマーク - ErgoDashをつくりました(壊れかけのエルゴ)

ErgoDashをつくりました(壊れかけのエルゴ)



気のせいだろうか、キーボードの事ばっかりツイートしてるような気がする今日この頃です。


60%キーボードを探していて、候補としては

  • Fotitude60
  • Lily58
  • Iris
  • Viterbi
  • ergoinu

などを考えていたようです。

2019/05/19 このエントリーをはてなブックマークに追加 はてなブックマーク - jjug ccc 2019 springに行ってきました

jjug ccc 2019 springに行ってきました

カテゴリ: , , ,

jjug ccc 2019 springに行ってきました。

http://www.java-users.jp/ccc2019spring/#/

ちょっと私用があり、午前から夕方ぐらいまでの参加でしたが、楽しませてもらいました。
goconも行きたかったし、なんならInside Frontendというイベントも気になりましたが
なんだかんだjjug cccに参加しました。
(日程被っていなくて、抽選漏れとかで無ければそれぞれ参加したかったですね)


yujisoftwareさん、いつも助かります
https://yujisoftware.hatenablog.com/entry/2019/05/19/040112

2019/05/12 このエントリーをはてなブックマークに追加 はてなブックマーク - meishiからキーボード自作を始めている近況(meishi→天キー→ErgoDash)

meishiからキーボード自作を始めている近況(meishi→天キー→ErgoDash)



現状


以前から自作キーボードが界隈で流行っているのは目にしていました。
興味もあったが、市販のキーボードで我慢していたところがあります。

今、Kinesis Freestyle2 Keyboard(たまにHHKB Lite2)を使っています。
いわゆる市販のキーボード?です。

2019/04/20 このエントリーをはてなブックマークに追加 はてなブックマーク - JVM言語とJDKバージョンを今後どう組み合わすのか

JVM言語とJDKバージョンを今後どう組み合わすのか

カテゴリ: , , , , ,

さて、Java is still freeなわけですが
https://medium.com/@javachampions/java-is-still-free-2-0-0-6b9aa8d6d244
https://www.sakatakoichi.com/entry/javaisstillfree

どのJDKをどのバージョンで使うかねぇという話がありますよね。

JDK 8を使い続けるという選択肢もあります。
いろんなベンダーがLTS(long term support)としているJDK 11を使うということも出来ます。
色々考えてみましょう。

2019/03/15 このエントリーをはてなブックマークに追加 はてなブックマーク - とりあえず動かすためのCircle CI 1.0からCircle CI 2.0への移行

とりあえず動かすためのCircle CI 1.0からCircle CI 2.0への移行

カテゴリ:

FINAL NOTICE: Two days left to upgrade your CircleCI configuration by March 15


This is the final notice reminding you that one or more of your projects has recently used the CircleCI 1.0 infrastructure, which will no longer be available after March 15, 2019.

In order to address this issue and keep your project(s) building, please see:

Instructions on seeing which projects still use CircleCI 1.0 config
A guide to migrating from 1.0 to 2.0
CircleCI 1.0 EOL policy
In two days, all projects will require a circle/config.yml, the 2.0 configuration file type, to build on CircleCI. It’s possible that your project is currently missing a configuration file, and is building on CircleCI 1.0 by default. 

We know we have sent you a number of notifications in recent weeks regarding 1.0 EOL. At the risk of over-informing you, our goal is to make sure that zero teams or projects are caught unawares when they can no longer build on CircleCI 1.0 on March 15, 2019. 

We are here to help in making this switch, please visit the migration center.

Thanks again, 
The team at CircleCI

こんなメールが来ていたわけで。超めんどいな、と思ってスルーしていたんですが、
まぁ書き直すかぁということでやってみました。

2019/03/13 このエントリーをはてなブックマークに追加 はてなブックマーク - brew install go @ 1.10するとGOROOT指定しないとgo get出来ない!?

2019/02/11 このエントリーをはてなブックマークに追加 はてなブックマーク - JavaScript、もうvar書かなくて良いよな?と思ったり

JavaScript、もうvar書かなくて良いよな?と思ったり

カテゴリ:

何を今更という人もいると思うのだけど。
varは書く必要ないな、と改めて思いまして。
ということで自分の整理も兼ねて書いています。


2019/01/23 このエントリーをはてなブックマークに追加 はてなブックマーク - ansistorano.deployとansistorano.rollbackがrenameされたらしい

ansistorano.deployとansistorano.rollbackがrenameされたらしい

カテゴリ:


小ネタですが。
ansistorano.deployとansistorano.rollbackがrenameされたらしい。

2018/12/30 このエントリーをはてなブックマークに追加 はてなブックマーク - 今年の振り返り2018

今年の振り返り2018

カテゴリ:

今年もまた1年が終わってしまった。
諸行無常。

自分の中の恒例行事となっているので、
振り返りと来年の目標をユルく立てようと思います。


今年の目標はこんな感じ(だったよう)でした。

  • 本を読む
  • Goを書く
  • Kotlinの情報を何か発信する
  • 健康でいる
  • 習慣を変える

これらを振り返っていく。



・・・・・・・。

2018/12/15 このエントリーをはてなブックマークに追加 はてなブックマーク - EEサーバーとJava SE 11の組み合わせをザッと調べる

EEサーバーとJava SE 11の組み合わせをザッと調べる

カテゴリ: ,

EEとSEってバージョンどうなってるんだろうとふと思ったので、メモがてら書いています。
JAXB無くなったりとか色々あるので。
情報の寄せ集めです。



僕が最近のJavaのサーバーサイドってどんな感じだろうと考えたとき、
以下のような感じかなと思いました。
  • Embedded web server(Tomcat、Jetty、Undertow、Payara など)を使ってアプリを動かす(fat jar的な。executable jar的な。)
  • Spring Boot、Spark、Payara MicroなどでEmbedded web serverをあまり意識せず使い、アプリを動かす(fat jar的な。executable jar的な。)
  • EE Server(Jakarta EE 8を前提とすると、WildFly 15、Payara 5、GlassFish 5、WebSphere*)にwebアプリケーションを作成してデプロイ(昔からよくある感じ)
    ※ WebSphereは有償サーバーでベンダー独自にサポートしているぽいので、調べにくいし割愛

今回、EEサーバーを使う方を考える。


  • 11になって行く時代
  • 11がLTS
  • 9とか10はなかったんや

8が最新の、はず

  • WildFly 15(EE8) + Java SE 8
  • Payara Server 5(EE8) + Java SE 8
  • GlassFish 5(EE8) + Java SE 8

は無論okとして、

  • WildFly 15(EE8) + Java SE 11
  • Payara Server 5(EE8) + Java SE 11
  • GlassFish 5(EE8) + Java SE 11

がちゃんと動くかどうか。

・WildFly 15(EE8) + Java SE 11


EE7 、 EE8サポート。
Java SE 11もクラスパスモードでサポートしているらしい。
http://wildfly.org/news/2018/12/13/WildFly15-Final-Released/

・Payara Server 5(EE8) + Java SE 11


EE8はサポートしているとして、Java SE 11は issueが上がっている。
Java 9以降は現在サポートしていない。Jakarta EE自体が11対応というかjigsaw対応必要だろう、みたいなコメントが書いてある。
https://github.com/payara/Payara/issues/3382
https://github.com/payara/Payara/issues/2296

・GlassFish 5(EE8) + Java SE 11


蓮沼さんの記事が詳しいが、Java SE 11はサポートしてない。
まぁ、Payaraもまだだし。
https://www.coppermine.jp/note/2018/12/nightmare-of-jep320/




2018/11/28 このエントリーをはてなブックマークに追加 はてなブックマーク - 最近読んでる本とか_201811

最近読んでる本とか_201811

カテゴリ:

まえがき

読んでる本を並べてみると、なんかやってる風を装える気がしたので書いてみた。
意外と長めの文章ができ、装いとしては良いかもしれない。

どんな本を読んでいるか

  • エンジニアリング組織論の招待
  • マネージャーの問題地図
  • 実践vim
  • みんなのGo

あたりを今更読んでいる。
本を読んでいていつも思うが、
本を読み切るというのが得意ではない気がしている。
というか本を読むのに費やす時間が単純に不足してるだけともいう。

エンジニアリング組織論の招待

良い本。いろんな人が褒めているので今更褒めるのも野暮に感じている。読んで考察したりしてる部分もある、かもしれない。

マネージャーの問題地図

少しプログラマ向けではないが、とても良い内容。この本に関しては分厚くないし9割ぐらい読んだ気がする。

実践vim

実践vimは読んでいるが、大体知っている内容ではある。tips本なので仕方がないような側面はある。たまに知らないことが載ってるので得をする。

みんなのGo

発売当初に買って、流し読み。そしていま読み直しているが多少は理解しやすくなったような気もする。
この本もムック本?で読みやすい分量なので一周なめておきたい。
しかし物理本にしてしまったがゴーファーのパラパラ漫画は楽しい。手軽さを求めるなら電子書籍が良いかも。

本の読み方

おそろしいほどに、スマホに依存している。kindle端末もあり、PCもあるので、そちらで電子書籍なら読むことが出来るのだが、一番手軽という点でスマホになっている。
おそらく、PCに本を入れておいてリファレンス的に使うというのも有効ではないかと最近思っている。

時間の使い方

個人的な事情で、勉強するのに充てる時間が減ってきた感じがある。
感覚的に言うと無限にあった時間が有限になっただけ、ではあるので少し出来たスポットの時間を如何に有効活用するかが大事になって来ている(これは以前からもそう)。
自分にとっては、ブログに書き出すことも勉強とか読書とか、そちら方面の思考を整理するのに有効なので続けていきたい。

次に読みたい本

Clean Coderも読みたいが、ソフトウェア見積と計画的な見積のやつも読みたい。色々と積みすぎていて詰んでいる。
どの本を読むか、読まないか、捨てるかも整理したほうが良いのかもしれない。

あとがき

なんかコードを書きたい

2018/10/07 このエントリーをはてなブックマークに追加 はてなブックマーク - ちょいとA Tour of Versioned Go (vgo)をやってみる

ちょいとA Tour of Versioned Go (vgo)をやってみる

カテゴリ:


これをやってみようかと。
A Tour of Versioned Go (vgo)
(Go & Versioning, Part 2)
https://research.swtch.com/vgo-tour

vgoの詳細は以下に委ねる。
Goにおけるバージョン管理の必要性 − vgoについて − by @tenntenn #golang #go https://www.slideshare.net/takuyaueda967/go-vgo-102442203



  • macOS High Sierra
  • Go 1.11.1

あぁ、なんかまだバグとかあるかもしれないとのこと。issue立ててとのこと。


You are certain to run into interesting bugs,
since vgo is at best only lightly tested right now. To file issues,
please use the main Go issue tracker and add the prefix “x/vgo:” to the title. 
Thanks.


とりあえず、素直にインストールしていきます。



go get -u golang.org/x/vgo

。。。なんだ?


go get -u golang.org/x/vgo
go get: warning: modules disabled by GO111MODULE=auto in GOPATH/src;
        ignoring go.mod;
        see 'go help modules'

なんかwaring出てるけど、一旦進めてみるか。




helloってディレクトリを作る



$ mkdir hello
$ cd hello



main関数書く



package main // import "github.com/you/hello"

import (
 "fmt"
 "rsc.io/quote"
)

func main() {
 fmt.Println(quote.Hello())
}

go.modってのを作ってビルドするらしい。

echo >go.mod
vgo build

果たしてすんなりビルド通るかな。
なんか、うちのネット環境が貧弱なせいもあって初回ビルドすんごい重いな。

$ vgo build
go: finding rsc.io/quote v1.5.2
go: downloading rsc.io/quote v1.5.2
go: finding rsc.io/sampler v1.3.0
go: finding golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
go: downloading rsc.io/sampler v1.3.0
go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
$ ./hello
こんにちは世界。

お、なんかすんなりできた。
ディレクトリ構成はこんな感じになった。

tree
.
├── go.mod
└── hello
    ├── go.mod
    ├── go.sum
    ├── hello
    └── hello.go

go.modの中身はこうなった。

cat hello/go.mod
module github.com/you/hello

require rsc.io/quote v1.5.2

go.sumの中身はこんな感じ。

cat hello/go.sum
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:qgOY6WgZOaTkIIMiVjBQcw93ERBE4m30iBm00nkL0i8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
rsc.io/quote v1.5.2 h1:w5fcysjrx7yqtD/aO+QwRjYZOKnaM9Uh2b40tElTs3Y=
rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

どうやら、バージョンを固定するためのものっぽい。


vgoで管理しているものをupdate日付とか一覧で見るにはこんな感じらしい。

vgo list -m -u

実際にupgradeするにはこのようにする。

vgo get golang.org/x/text
vgo: finding golang.org/x/text v0.3.0
vgo: downloading golang.org/x/text v0.3.0

逆にダウングレードする際は、バージョン番号を指定してやると良いみたい。

$ vgo get rsc.io/sampler@v1.2.0

vgo test all でvgoで管理されているモジュールのテストが走るらしい。

vgo test all

結果:

vgo test all
ok      archive/zip     (cached)
ok      bufio   (cached)
ok      bytes   (cached)
ok      compress/bzip2  (cached)
ok      compress/flate  (cached)
ok      compress/gzip   (cached)
ok      compress/lzw    (cached)
ok      compress/zlib   (cached)
ok      container/list  (cached)
ok      context (cached)
ok      crypto  (cached)
ok      crypto/aes      (cached)
ok      crypto/cipher   (cached)
ok      crypto/des      (cached)
ok      crypto/dsa      (cached)
ok      crypto/ecdsa    (cached)
ok      crypto/elliptic (cached)
ok      crypto/hmac     (cached)
?       crypto/internal/randutil        [no test files]
ok      crypto/internal/subtle  (cached)
ok      crypto/md5      (cached)
ok      crypto/rand     (cached)
ok      crypto/rc4      (cached)
ok      crypto/rsa      (cached)
ok      crypto/sha1     (cached)
ok      crypto/sha256   (cached)
ok      crypto/sha512   (cached)
ok      crypto/subtle   (cached)
ok      crypto/tls      (cached)
ok      crypto/x509     (cached)
?       crypto/x509/pkix        [no test files]
?       encoding        [no test files]
ok      encoding/asn1   (cached)
ok      encoding/base64 (cached)
ok      encoding/binary (cached)
ok      encoding/gob    (cached)
ok      encoding/hex    (cached)
ok      encoding/json   (cached)
ok      encoding/pem    (cached)
ok      encoding/xml    (cached)
ok      errors  (cached)
ok      flag    (cached)
ok      fmt     (cached)
?       github.com/you/hello    [no test files]
ok      go/ast  (cached)
ok      go/build        (cached)
ok      go/doc  (cached)
ok      go/format       (cached)
ok      go/parser       (cached)
ok      go/printer      (cached)
ok      go/scanner      (cached)
ok      go/token        (cached)
?       golang.org/x/text/internal/gen  [no test files]
ok      golang.org/x/text/internal/tag  (cached)
?       golang.org/x/text/internal/testtext     [no test files]
ok      golang.org/x/text/internal/ucd  (cached)
ok      golang.org/x/text/language      (cached)
ok      golang.org/x/text/unicode/cldr  (cached)
ok      golang_org/x/crypto/chacha20poly1305    (cached)
ok      golang_org/x/crypto/cryptobyte  (cached)
?       golang_org/x/crypto/cryptobyte/asn1     [no test files]
ok      golang_org/x/crypto/curve25519  (cached)
ok      golang_org/x/crypto/internal/chacha20   (cached)
ok      golang_org/x/crypto/poly1305    (cached)
ok      golang_org/x/net/dns/dnsmessage (cached)
ok      golang_org/x/net/http/httpguts  (cached)
ok      golang_org/x/net/http/httpproxy (cached)
ok      golang_org/x/net/http2/hpack    (cached)
ok      golang_org/x/net/idna   (cached)
?       golang_org/x/net/internal/nettest       [no test files]
ok      golang_org/x/net/nettest        (cached)
ok      golang_org/x/net/route  (cached)
?       golang_org/x/text/secure/bidirule       [no test files]
ok      golang_org/x/text/transform     (cached)
?       golang_org/x/text/unicode/bidi  [no test files]
ok      golang_org/x/text/unicode/norm  (cached)
ok      hash    (cached)
ok      hash/adler32    (cached)
ok      hash/crc32      (cached)
ok      hash/crc64      (cached)
ok      hash/fnv        (cached)
ok      image   (cached)
ok      image/color     (cached)
?       image/color/palette     [no test files]
ok      image/draw      (cached)
ok      image/gif       (cached)
?       image/internal/imageutil        [no test files]
ok      image/jpeg      (cached)
ok      image/png       (cached)
?       internal/bytealg        [no test files]
ok      internal/cpu    (cached)
?       internal/nettrace       [no test files]
ok      internal/poll   (cached)
?       internal/race   [no test files]
ok      internal/singleflight   (cached)
?       internal/syscall/unix   [no test files]
?       internal/testenv        [no test files]
?       internal/testlog        [no test files]
ok      internal/trace  (cached)
ok      io      (cached)
ok      io/ioutil       (cached)
ok      log     (cached)
ok      math    (cached)
ok      math/big        (cached)
ok      math/bits       (cached)
ok      math/cmplx      (cached)
ok      math/rand       (cached)
ok      mime    (cached)
ok      mime/multipart  (cached)
ok      mime/quotedprintable    (cached)
# os/signal.test
clang: warning: argument unused during compilation: '-nopie' [-Wunused-command-line-argument]
ok      net     477.127s
ok      net/http        (cached)
ok      net/http/cookiejar      (cached)
ok      net/http/httptest       (cached)
ok      net/http/httptrace      (cached)
ok      net/http/httputil       (cached)
ok      net/http/internal       (cached)
ok      net/internal/socktest   (cached)
ok      net/mail        (cached)
ok      net/textproto   (cached)
ok      net/url (cached)
ok      os      18.478s
ok      os/exec (cached)
ok      os/signal       (cached)
?       os/signal/internal/pty  [no test files]
ok      os/user (cached)
ok      path    (cached)
ok      path/filepath   (cached)
ok      reflect (cached)
ok      regexp  (cached)
ok      regexp/syntax   (cached)
--- FAIL: TestHello (0.00s)
    quote_test.go:19: Hello() = "99 bottles of beer on the wall, 99 bottles of beer, ...", want "Hello, world."
FAIL
FAIL    rsc.io/quote    0.008s
--- FAIL: TestHello (0.00s)
    hello_test.go:31: Hello([en-US fr]) = "99 bottles of beer on the wall, 99 bottles of beer, ...", want "Hello, world."
    hello_test.go:31: Hello([fr en-US]) = "99 bottles of beer on the wall, 99 bottles of beer, ...", want "Bonjour le monde."
FAIL
FAIL    rsc.io/sampler  0.008s
ok      runtime (cached)
ok      runtime/debug   (cached)
ok      runtime/internal/atomic (cached)
ok      runtime/internal/sys    (cached)
ok      runtime/trace   (cached)
ok      sort    (cached)
ok      strconv (cached)
ok      strings (cached)
ok      sync    (cached)
ok      sync/atomic     (cached)
ok      syscall (cached)
ok      testing (cached)
?       testing/iotest  [no test files]
ok      testing/quick   (cached)
ok      text/tabwriter  (cached)
ok      text/template   (cached)
ok      text/template/parse     (cached)
ok      time    (cached)
ok      unicode (cached)
ok      unicode/utf16   (cached)
ok      unicode/utf8    (cached)
?       unsafe  [no test files]

あ、失敗してるし。


どうやら、1.99.99だとテストFAILするので、バージョン変更しようっていうサンプルっぽいですね。
流れにしたがって、 vgo get rsc.io/sampler@v1.3.1 すると テストをPASSするようになりました。


特定のバージョンを除外することもできる。
こんな感じで。

echo 'exclude rsc.io/sampler v1.99.99' >>go.mod

go.modの除外は、他のモジュールでは有効にならない。
この場合、hello/go.modにのみ除外が有効で、他のモジュールでhelloモジュールが使われていたとしても exclude ... は適用されないということみたい。


特定のモジュールを指定して、置き換えができるということらしい。

ローカルにあるソースを参照させるようにしたり

echo 'replace rsc.io/quote v1.5.2 => ../quote' >>go.mod

forkしてきたものを見るようにしたり出来るみたい。

echo 'replace rsc.io/quote v1.5.2 => github.com/you/quote v0.0.0-myfork' >>go.mod

ベンダリングして、GOPATHの通っているところにもっていけば go buildも出来るということらしい。

vgo vendor
$ mkdir -p $GOPATH/src/github.com/you
$ cp -a . $GOPATH/src/github.com/you/hello
$ go build -o vhello github.com/you/hello
$ LANG=es ./vhello
Puedo comer vidrio, no me hace daño.

先ほどの資料によると(https://www.slideshare.net/takuyaueda967/go-vgo-102442203)、
これが Go 1.12では標準となるということですが、
まぁ、普通に使ってみて使えるっちゃ使えるかもなぁと思います(正直ちょっと触ったぐらいではツラミ分からない)。

いちど、ビルド・デプロイの流れを組んでしまえば (それなりに大変だろうけど)なんとかなりそうな。
でも、depとかgbとかもアクティブなのだろうし、他のツールを使っているならそのまま使っていても良いような。
モジュール単位でのバージョン管理とかvgoの仕組みにメリットがあれば使っていけば良い…のかな?




2018/09/30 このエントリーをはてなブックマークに追加 はてなブックマーク - 携帯をLINEモバイルにしました

携帯をLINEモバイルにしました

カテゴリ:


一応このブログは、月一更新以上するのが目標設定なんですが、
先月うっかり投稿していなかったことに気づき
月一投稿記録が途絶えてしまって地味にヘコんだりしている僕です。


そして、今月も9月末に滑り込みでとりあえず書いている状態&ネタ的にもとても微妙なので、特に宣伝などせず、ブログ記事を書くだけというところにとどめておこうと思います。



・携帯をLINEモバイルにした
・ MNP→LINEモバイルの契約→CIMと端末受け取る→CIM開通で完了
・特に今のところ困ってない。今まで通り。解約もそんなに大変じゃない





携帯料金高い!ってとこだけなんですけどね、まぁ。
要約で書いたことがほぼ全てなんですが、携帯の回線契約ってau、docomo、ソフトバンクなどのキャリアの寡占状態で、そこにMVMO業者が参入してきた感じかなと雑に想像ているんですが、
LINEモバイルやMINEO、UQMobile、楽天モバイルなどが台頭してきているという状況なんだなということに今更ながら気づいた次第です。
参考)


しかもMNPというものがあって、電話番号もそのままで、契約を変更できるっていうのが決め手になった感じがします。
携帯電話番号の変更連絡とか、地味な事務作業ってめんどいですし。




前述の通り、かなり移行コストも低かったです。
僕の場合
・auのMNPサポートセンター的なところにTEL
・LINEモバイル契約
・端末&cim受け取り
・開通
だけです。要する期間も数日レベルでした。




LINEモバイルにしたけど特に不便もなく、auの頃と変わりはなさそうって話でした!
何か関連した話があれば続報を書きます。



2018/07/28 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin1.3-M1の変更点を読んでたけど結構面白かった

Kotlin1.3-M1の変更点を読んでたけど結構面白かった

カテゴリ:

Kotlin ver 1.3-M1が出ました。

See what’s coming in Kotlin 1.3-M1
https://blog.jetbrains.com/kotlin/2018/07/see-whats-coming-in-kotlin-1-3-m1/

毎回アップデートがあるたびに変更内容を眺めてはいるのだけど、
今回は久しぶりに面白いバージョンアップだなあと思いました!

  • Coroutinesが安定化しました(experimentalじゃなくなりました)
  • when構文で、変数を良い感じに使えるようになりました
  • Functionが255まで使えるようになった
  • SuccessOrFailureってのが増えたけど関数の戻り値にしちゃダメよ
  • unsignedが実験的に導入されました
  • プラットフォームごとのランダム値生成対応

など。



そして今回もshirajiさんみたいにKotlinへコミットしてる日本の方もいて良いですねー。
https://github.com/t-kameyama
多分日本の方?だと思う。



2018/07/25 このエントリーをはてなブックマークに追加 はてなブックマーク - 西日本応援プロジェクト 真夏の大LT大会!にいってきました #midsummer_lt

西日本応援プロジェクト 真夏の大LT大会!にいってきました #midsummer_lt

カテゴリ:

西日本応援プロジェクト 真夏の大LT大会!というイベントがありました。
https://techplay.jp/event/684228


  • LTやるから
  • 参加費を
  • 義援金にしよう

という企画でした。


そーだいさんが、なんかやろうとしてるなーと思ったら
あれよあれよと豪華な発表者が集まって来てて面白そうだし、
まぁ自分のお金も人の役に立つわけだしということで参加しました。


全員LTするには勿体無いぐらいでしたねーー。ホントに。
しかもLT面白いし。

なにより、各々、災害に遭った地域を思う気持ちが根底にあり発表しているというのがなんとなく伝わって来て良かったです。

自分は阪神大震災で被災してるし、
関東の震災もあったし、
地元の方では最近また大きな地震もあったし、
そして今回水害や土砂災害がありました。
(ここに並べていないけど、他にも色々震災とかありましたね)

出来ることはなかなか少ないんですけど、まあお金を送るぐらいはまぁ、
簡単に僕にも出来ることだなぁとか思ったりしてました。

あと、現場の状況をちゃんと受け止めること、というか向き合うこと。
災害があったことを覚えておくことっていうのが、なんとなく自分の中でやらなきゃいけないことな気がして、そういう意味でも勉強になる会でした。


なんか妙に真面目な話になってしまったので、このエントリは終わりにします!



2018/07/05 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin Developers Meetupにちょろっと行ってきました #jkug

Kotlin Developers Meetupにちょろっと行ってきました #jkug

カテゴリ: , ,

2018/06/27にJetBraninsのhadiさんがくるって言うことで、
Kotlin Developers Meetupに行って来ました!

Kotlin Developers Meetup
https://kotlin.connpass.com/event/90679/

準備は@satorufujiwaraさんに任せっぱなしで、
最後ゴミの片付け手伝ったレベルでした…!
すんません!


togetterでツイートまとめましたのでこちらで雰囲気はわかると思います。
https://togetter.com/li/1243940
(ツイート載せて欲しくない方は編集自由にしていますので削除お願いします!)


当日の映像が動画になっています!
@satorufujiwaraさん ありがとうございます!

https://www.youtube.com/watch?v=TGdAvY5i-sU&feature=youtu.be

DSLの話をしていました。
hadiさんはDSLの話をしていることが多い気がしますね。
今回もジョーク混じえつつの良いトークを聞けました!


ビズリーチの方もLTされてましたが、、
みつけたらこの記事に追加します!

あと@yanzmさんが自分の子供にマイクラのmodをKotlinで書いてもらった?的なLTもありました!


せっかくなので、hadiさんに話しかけようと近づいて行ったのですが
英会話ほぼ出来ないので 「I like wasabi」とだけ伝えました。
https://github.com/wasabifx/wasabi

「wasabiはもうkillしたよ」的なこと言われましたw
https://kotlinlang.slack.com/のslackチャンネルとかから#wasabiが消えてたんで知ってたんですけど、直接言われるとなんとなく寂しいですね

wasabiじゃなくてもうktor使って!てことらしいですね。
https://github.com/ktorio/ktor

@shiraj_i さん とか @callipan さんが普通に英語で会話してるのでホォー羨ましいなと思いつつ、 どういう会話かはちょっとは聴き取れるので横で聴いたりしてすごしました。
hadiさんはエヴァンジェリストチームなので世界各国の色々なところを行脚してて、
そのエピソードトークとかがメインだったような気がします!


実際に中の人に会って話す機会はなかなか貴重なことだと思うので
良いイベントでした!
会場提供 & 準備ありがとうございました!
hadiさんまたきてください!

2018/06/23 このエントリーをはてなブックマークに追加 はてなブックマーク - nginxについて調べた(い) その2。リバースプロキシとロードバランシング

nginxについて調べた(い) その2。リバースプロキシとロードバランシング

カテゴリ:

前回に引き続き。


あえて、調べ直す。

リバースプロキシ(英: Reverse proxy)または逆プロキシは、
特定のサーバへの要求を必ず経由するように設置されたプロキシサーバ。
一般的なプロキシとは異なり不特定多数のサーバを対象としない。
リバースプロキシは、不特定多数のクライアントから寄せられる要求に対して、
応答を肩代わりすることにより特定のサーバの負担を軽減したり、
アクセスを制限することにより特定のサーバのセキュリティを高めたりする目的に用いられる。

wikipediaの引用。
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7

分かるんだけどなんかしっくりこない。
何がリバース?

内部ネットワークと広域ネットワークとの接点に置かれ、
外部から内部へのアクセスを代行する。通常のプロキシ(代理サーバー)の「内部から外部へ」と反対であることが「リバース」の由来。

http://www.dnp.co.jp/artscape/reference/archive_words/detail/rvrs-proxy.html

なるほど、通常のプロキシとは逆方向だよということか。


HTTP、TCP、UDP のロードバランシングが出来るらしい。

  • Layer 7 request routing using URI, cookie, args, and more
    レイヤ7はOSI参照モデルのアプリケーション層ですね。URIやクッキーとかを使ってルーティングする機能がある。

  • Session persistence based on cookies *
    クッキーでセッションを永続化する機能がある。

  • Active health checks on status code and response body *
    ステータスとレスポンスボティのヘルスチェック機能がある。

  • Service discovery using DNS *
    DNSを使ってサービス検出する機能がある。サービスディスカバリーってよく聞く言葉だな

ロードバランシングには5種類の方式が使えるらしい。
ラウンドロビン、最小接続数、ハッシュ、IPハッシュ(NGINX Plusのみ)、Least Time(NGINX Plusのみ)。NGINX Plusというのはnginxの商用版らしい。

  • Round‑Robin (the default) – Requests are distributed in order across the list of servers.
  • Least Connections – Each request is sent to the server with the lowest number of active connections, taking into consideration the weights assigned to the servers.
  • Hash – Requests are distributed based on a user‑defined key such as the client IP address or URL. NGINX Plus can optionally apply a consistent hash to minimize redistribution of loads if the set of upstream servers changes.
  • IP Hash (HTTP only) – Requests are distributed based on the first three octets of the client IP address.
    NGINX Plus has an additional algorithm:
  • Least Time – Requests are sent to upstream servers with the fastest response times and fewest active connections.

2018/05/29 このエントリーをはてなブックマークに追加 はてなブックマーク - nginxについて調べた(い) その1。概要を見る

nginxについて調べた(い) その1。概要を見る

カテゴリ:


なんとなく、調べたいので調べます。


enのwikipedia見てみましょう。
https://en.wikipedia.org/wiki/Nginx

The software was created by Igor Sysoev and first publicly released in 2004.

2004年に公式にリリースされたらしいです。


公式サイトを見て見ましょう。
https://nginx.org/en/

以下、引用。

nginx [engine x] is an HTTP and reverse proxy server, 
a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev.
For a long time, it has been running 
on many heavily loaded Russian sites including Yandex, Mail.Ru, VK, and 
Rambler. According to Netcraft, nginx served or proxied 23.76% busiest sites in March 2018. 
Here are some of the success stories: Dropbox, Netflix, Wordpress.com, FastMail.FM.
  • nginxはHTTPサーバーであり
  • リバースプロキシのサーバーであり
  • TCP / UDPのプロキシサーバーであり
  • Yandex、Mail.Ru、VK、Ramblerとかロシアのサイトでよく使われていて
  • Dropbox、Netflix、Wordpress.com、FastMail.FMとかでも使われている

なるほど。


ざっくり、web serverでwikipediaで見てみる。
https://en.wikipedia.org/wiki/Web_server

と、この情報にたどり着いた
https://w3techs.com/technologies/overview/web_server/all

October 2017
Below are the latest statistics  of the market share of  all sites of the top web servers on 
the Internet by W3Techs Usage of
Web Servers for Websites.

Product Vendor  Percent
Apache  Apache  48.5%
nginx   NGINX, Inc. 35.4%
IIS Microsoft   10.8%
LiteSpeed Web Server    LiteSpeed Technologies  2.9%
GWS Google  1.1%
All other web servers are used byless than1% of the websites.

Apache強いな。。ざっくりApacheとnginxだけ気にしとけば良いか…(雑)
IISは出くわしたら気にするレベルで良いだろう。。。うん。。
ただ、この情報が統計的にどの程度有意なのかわからない。

ということで、Apacheも知っておきたいところ。


この記事がよくまとまっているように思う。勉強になった。
https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations

Apacheよりnginxの方が後発ということもあり優れている部分もあるが、一方でApacheの方が優れている部分もありそう。例えば、Apacheはモジュールの動的ロードが出来るが、nginxは出来ないのだそう。これは相性によってどちらを選ぶかということも考えたりとかがある気がする。
また、nginxをリバースプロキシにして、併用するパターンもよくあると。
さらっと読んだだけでは理解が足りないのでこの記事を何回か読み直したい。


先ほど書いたように、ざっくりは

  • nginxはHTTPサーバー
  • リバースプロキシのサーバー
  • TCP / UDPのプロキシサーバー

ただ、機能もっと色々あった気がする。ので、調べると
https://www.nginx.com/products/nginx/#features

これが出てくる。
なんかこっちのサイトの方が今風だ。

  • Load balancer
  • Content cache
  • Web server
  • Security controls
  • Dynamic modules
  • Monitoring
  • High availability (HA) *
  • Kubernetes Ingress controller
  • Programmability
  • Streaming media

などが書いてある。機能というかfeatureである。


ざっくり追いかけてみましたが、調べきれないので、おそらく続きます。



GA