Oracle JDK SE のライセンス等変更 のメモ(2017-10)

Oracle JDK SE のライセンス等変更 のメモ(2017-10)

個人的に確認したものです。保証はできないので、正確な情報が欲しい方は各自ベンダに問い合わせてください。

オラクルのサイト

Oracle Java SEサポート・ロードマップ

利用用途の変更

  • OpenJDKは、OracleJDKと同等の機能をもつバイナリの提供を開始する。 1

  • 無償での利用は(JRE,JDK) OpenJDK を利用することになる。

  • OracleJDK は、他のOracle製品と同様(Oracle Technology Network)に評価利用は可能だが、従来のような無償利用の対象ではなくなる。利用するには、有償サポートの購入が必要。

リリースサイクルの変更

  • 毎年、3月と9月にリリース。

  • リリースは、新機能の追加とは関係なしに定期的なリリースとなる。

  • 新機能2は完成したタイミングでリリースに組み込まれる。

  • OracleJDKの有償サポートは従来と同じライセンス契約の購入となる。Java SE Advancedを購入するか、WebLogic等のOracle製品のJava実行環境のサポートを購入することで可能となる。

  • OracleJDKは、下記の3年サポート対象のリリースをのぞき、新しいリリースが行われると、古いリリースのものはサポートされない。

  • OracleJDK のサポートは、半年のリリース単位と合わせて3年間の長期のリリース対象が提供される。いわゆるLTSライセンス。

リリース名称の変更

  • 年号と月を組み合わせたバージョン番号となる。

  • 最初のリリースは、JDK 18.3の予定。(2018年3月)

  • JDK 18.9 が、LTS(3年長期サポート)の最初のリリースの予定。以降、3年に一度、LTSの対象となる。


  1. 同じバイナリかどうかは未確認だが、違うものであると思われます。

  2. 例:ラムダ式の実装、ProjectJigsaw

Github での今の自分のやり方の覚書

clone して、issueでbranch

$ git clone https://github.com/guutara/hogehoge.git
$ cd hogehoge
$ git config --global user.email xxx@xxxx.xx
$ git config --global user.name "USERNAME"
$ git branch
* master
$ git branch issuXX
$ git branch
  issuXX
* master
$ git checkout issuXX
Switched to branch 'issuXX'
$ git branch
* issuXX
  master
$ git push origin issuXX
$ git pull origin issuXX

修正作業

$ git add FILE
$ git commit -a -m "MESSAGES"
$ git push origin issuXX

issue 番号を紐付けておく 1

番号は、Issuesの標題の最後にある、#N

$ git commit --allow-empty -m "resolve #N"
$ git push origin issuXX

Pull request と marge

Githubの画面で行う。

marge 後

$ git branch
* issuXX
  master
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git pull
$ git branch -d issuXX

  1. 10-11 追記

あるいはプログラマ以外にプログラムを作る権利を

*1

何か意識高い結論を求めるなら、読んでも無駄でござるよ。。

「どうやったら、プログラムを組めるようになれるんですかね?」

この会話、同じくらいのプログラミングの経験値を共有していた場合は、話が其れなりにあう。

なぜなら、何も知らないところから「プログラムを組む」の状態になるところでどの程度のことができるのか、なんとなく擦りあうからだ。あるいは、擦りあってないなと感じることができるし、あわなければ、あわないなりに、話すことも可能。

その辺りが、いつも難しいなぁと思ってしまうことになる。

で、その会話を書くつもりはないんだけれど。。。

何かを人手をかけずにやろうとした場合の手段として、コンピュータのシステム化がある。で、コンピュータで何かをやらせようとすると、プログラムってやつをかけばいいということになる。

ほら、この時点でも、また、さっきのすり合わせの問題が起きて来てしまってるのだけれど。。

プログラマー、という職種の人に頼まなくても、自分たちでどんどん作れば「改善できる」し、結局のところ利用するのも、やってほしいことが分かっているのも、こちらなんだから、プログラムってやつを覚えてかけばいいんだ。

プログラムを、プログラマー職から、我らの手に!

ってスローガンがあったかどうかは記憶にないけど、似たような話は過去聞いた気はしなくはない。。。

今は、コンピュータの環境としては、クラウドがある。あと、プログラムと呼ぶと怒られるんだろうけど、機械学習用のhhhhh AIようの TensorFlow なんかもある。学習の機会もたくさんあるし、昔とは違いやる気と時間があればできるようになっている、と。

確かに、プログラマー職ではなくても、こんなにすごいことができましたっていう情報はたくさん見るようになった気がする。それは凄いなぁと思う。

でも、それって、情報が昔よりも広まりやすくなって、もともとできる人に届きやすくなり、できたことが知りやすくなっただけの気もしないではない。

プログラムが動くには燃料が必要だ

ってことは、今も変わってはいない。クラウドは、たくさんの燃料を使って動いている。その上で動かすプログラムは、それを消費して動いている。どんなに、クラウドがすごくても、提供できる限界はある。今のところ、限界まで使い切ってしまったって話は、具体的には知らない。ま、要するに、たくさんの無駄^h^h余裕があるということだろう。

で、使用するにはお金がかかる。まぁ、クラウドの資源に余裕があるとすれば、あとは、利用者のお金と時間の余裕が限界というわけだ。

使ったら使っただけ課金されるのが標準的な決済の方法なので、同じ結果を得られるのなら、なるべく使わない方が資金の限界を有効に使える。あとは、プログラマー職に頼んだ場合と、自分で作った場合の費用対効果と機会損失で測れば良いだろう。

この辺、やったことがないので、エビデンスを持っていない。誰か、やってみてくれないだろうか。。

下手なプログラムを書くことに関しては、自信のある自分的には、どーも、専門ではなく二足のわらじ的に行うのであれば、あまり、広範囲には有用ではない気はするんだけど。まぁ、経済的な指標なのでなんとも。。

「どうやったら、資源を無駄に食いつぶさないプログラムを組めるようになれるんですかね?」

っていう、最初の会話と同じような話になってしまう。 しかも、これ、きっと終わりないんだろうなぁ。。

ところがオンプレミスだと課金がない

さて、これが一番の問題で、これを解決できる方法は、今んところ聞いたことがない。自社で設備を持ち、自社でメンテナンス要員を社員と外部の会社で賄っている場合だ。

いわゆる、資源の提供者が「プログラム職」とほぼ同等で、解放をのぞむ方は、ただ利用するだけのケースがほとんどではないかなぁ。

この場合、資源の余裕は、当然あるとしても、クラウドの比ではないし、そもそも、そんなに無駄遣いできない。

ただ、有効に使えるのであれば、毎年の現金のやりくりをしなくて良いので(設備は過去に買ってあるものを利用するから)資金の継続的な余裕は担保できる、はず。

しかし、設備のハードの増強やプログラムを動かす為のソフトウエアの改修などのヒトモノカネは、ただ、利用者の利用状況が逼迫してますから、ってだけでホイホイ決済おりないだろうし、おりたとしても、特にヒトは簡単には手に入らない。

なので、有効性がわからないなら、なるべく利用させたくないということになり、ますます、解放せよ! という不満も膨らみ続ける。

データの民主化って奴も同じ問題を抱えてるきがするのよね

ほんこれ。。

*1:趣味嗜好でプログラム書くのは対象外なので悪しからず

Github での今のやり方の覚書 (Clone しないで作業)

Clone しないで作業

あらかじめ、Local にリモートのリポジトリと同名のディレクトリを作成しておく。
そこには、すでに、hello.goが作成済み。

すでに、

$ git config --global user.email xxx@xxxx.xx
$ git config --global user.name "USERNAME"

はやってある。

$ mkdir gohello
$ cd gohello
$ git init

Githubで、リポジトリを作成。URLをコピーする。

$ git remote add origin  https://github.com/guutara/gohello.git

$ git fetch origin master
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/guutara/gohello
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master

$ git pull origin master
From https://github.com/guutara/gohello
 * branch            master     -> FETCH_HEAD

$ git branch
* master

$ git add hello.go

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   hello.go

$ git commit -a -m "First commit"
[master c62e771] First commit
 1 file changed, 7 insertions(+)
 create mode 100644 hello.go

$ git push -u origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 350 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/guutara/gohello.git
   a72be4a..c62e771  master -> master
Branch master set up to track remote branch master from origin.

2かいめ以降の修正

hello.go 修正後。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   hello.go

  no changes added to commit (use "git add" and/or "git commit -a")

$ git commit -a -m "add line "
[master 934a631] add line
 1 file changed, 2 insertions(+), 1 deletion(-)

$ git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 350 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/guutara/gohello.git
  c62e771..934a631  master -> master

Data Scientist は、AIでメシを喰うのか?

最近、分析系製品で有名な会社の人と四方山話した。その時に、聴いた話を少し書いておこうと思う。

分析の会社ではマーケット的に…

まぁ、言うまでもないと思うのだけど、分析系の会社と言ってもマーケットから最近では、見向きもされないらしい。
ちょっと前は、統計学とか言ってたはずなんだが、今は、Machine Learning でもダメで、AIをつけないと食いつかないそうだ。

で、有名な、R言語ではない、商用の言語をもってる会社もめでたくAIを名乗ることになったみたい。

そして、必然というか、DNNを扱えるようになるだけではなく、Python で、コードが書けるようになっている。

“Analytics, Data Science, and Machine Learning” で、R が、Python に抜かれたという記事が、"kdnugget"あるのだけれど。

Python overtakes R, becomes the leader in Data Science, Machine Learning platforms

Python, R, Other Analytics, Data Science platform, 2016-2017

それを裏付けるような話ではある。

とはいえ人材は統計学で..

当然ながら、今まで揃えてきた人材は、統計学である。まぁ、機械学習に近いところまでは言っているとしても、基本的には統計学のモデルだし、言語な訳だ。

そこへ突然、AIでDNNなんだから、TensorFlowやPythonでしょうと言われたところで、対応できるわけもなく。。

しかし、当然、新規採用はそちらへフラれるわけで、特に新卒は極端にいえば、Rなんて知りません、TemsorFlowやPythonなら得意です。という人材になるわけだ。

これって結局、統計で解決しようと思うユーザ側の求めるものが変わってしまった、金を出す名目が変わってしまっただけで、別に統計やR言語より、DNNやPythonが優れているという話ではない。

でも、こんなに簡単に、変わってしまう業界なのだということは、結構、びっくりではある。

結局問題は…

解決すべき問題はなんなの、それを解決できたかどうかの検証は、どうやるの? というのは置いといたとして。。。

いやぁ、でもね、結局のところ、一番大変なことは、変わっていないのだそうだ。

データの前処理と後処理と検証。

これは、結局のところ変わらない。しかも、そこに関しては、どの先行企業も、情報を出してはいない。まぁ、出せないのかも知れないけどね。

この先なんだけど。。

統計学のまともな人々のエコシステムが壊されて行かないことを祈る。

あと、AIってこんなんだっけはさておき、DNN とTensorFlowとPythonで、末長く食べられるといいですね!!

まぁ、後者の新卒者の人々が統計学もちゃんと大学で学んでいれば話は変わる気はするのだけれど。。

余談

なんでも、この会社の社員の分析者が自社の利益の推移を景気動向と一致していることを見つけたらしい。 本当がどうかは検証してはいないのだけれど。 だとすると、なんだかねぇ。。

Atom Setup History

Atomの設定

Atomの設定をメモとして書き出しておく。

Package

Go

  • go-plus
    初回のgoを書くときに、足りないPackageのインストールが走る。

    Debug用のdelveは、 インストール出来なかったため、brewでインストールした。

    $ brew install go-delve/delve/delve

    • 設定
      GOPATH を設定した。
  • godef
    インストールしただけ。

golang Setup History

golang の設定

golangの設定をメモとして書き出しておく。

本体

$ brew install go --cross-compile-all

環境設定

$ export GOPATH=$HOME/go
$ export PATH=$PATH:$GOPATH/bin

Package

  • 以下は、Atomを入れた際にインストールされた。
$ go get golang.org/x/tools/cmd/goimportsgo
$ go get github.com/nsf/gocode
$ go get code.google.com/p/rog-go/exp/cmd/godef  
$ brew install ghq
$ git config --global ghq.root $GOPATH/src
$ git config -l
credential.helper=osxkeychain
ghq.root=/Users/massekiy/go/src
$ ghq list
github.com/alecthomas/gometalinter
github.com/fatih/gomodifytags
github.com/golang/lint
github.com/nsf/gocode
github.com/rogpeppe/godef
github.com/sqs/goreturns
github.com/zmb3/gogetdoc
golang.org/x/tools
  • peco
$ brew install peco
$ cd $(ghq list -p | peco)
QUERY>                                                     IgnoreCase [8 (1/1)]
/Users/massekiy/go/src/github.com/alecthomas/gometalinter
/Users/massekiy/go/src/github.com/fatih/gomodifytags
/Users/massekiy/go/src/github.com/golang/lint
/Users/massekiy/go/src/github.com/nsf/gocode
/Users/massekiy/go/src/github.com/rogpeppe/godef
/Users/massekiy/go/src/github.com/sqs/goreturns
/Users/massekiy/go/src/github.com/zmb3/gogetdoc
/Users/massekiy/go/src/golang.org/x/tools