5月18日(土) に開催される JJUG CCC 2019 Spring 、そのスマートフォン用タイムテーブル(セッション一覧)が欲しかったので、作りました!
公式ページのビルドして圧縮された Vue ファイルを手作業でハックして作ったので、本家と同じデザインになっています。 もし怒られたら消します(><)
ぜひご利用ください!!
JavaScript の split メソッドを使ったら「あれ?」となったのでメモ。
Java, C#, Ruby, Perl の split
メソッドは、第二引数に limit
を指定できます。
これを指定すると分割回数が制限されます。
(下記の例だと、文字列を2つに分割しています)
Java "aaa,bbb,ccc".split(",", 2) // ==> String[2] { "aaa", "bbb,ccc" }
C# "aaa,bbb,ccc".Split(new char[]{','}, 2) // ==> String[2]{ "aaa", "bbb,ccc" }
Ruby "aaa,bbb,ccc".split(",", 2) # ==> ["aaa", "bbb,ccc"]
Perl split(/,/, "aaa,bbb,ccc", 2) # ==> ("aaa", "bbb,ccc")
JavaScript の split
メソッドも、第二引数に limit
を指定できます。
ただ、ほかの言語と意味が違っていて、これを指定すると戻り値の要素数が制限されます。
(下記の例だと、文字列を分割して最初の2つを返しています)
JavaScript "aaa,bbb,ccc".split(",", 2) // ==> Array [ "aaa", "bbb" ]
MDN には「見つかった分割結果の数の制限を指定する整数です。」と書かれています。
パッと読んだ感じほかの言語と同じかなっと思ったんですが、よく考えると違ったという…。
お気を付けください!
新しい Windows 7 の PC を使おうとしたら Internet Explorer (IE) しか入っていませんでした。
しかし、私は IE が嫌いなので、Firefox を使いたいです。
そこで、Firefox ダウンロードしようと思い…、そこで気づきました。
Windows 7 で Firefox を使おうとしたら、まず最初に IE を起動しなくてはいけません。
しかし、私 は I E が 大 嫌 い で す。
そこで、Windows の機能だけで Firefox をダウンロードする方法を編み出してみました。
cmd /c move "(入力されたパス)" "(移動先のパス)\Firefox.exe"
これで、Firefox をインストールできるようになりました!!
ファイルを開くダイアログには「URLからファイルをダウンロードして開く」という機能があります。それを使って、インストーラをダウンロードしました。
ただ、そのままだとファイルに拡張子がつかないので実行できません。
そこで、最後にファイルを移動しつつ拡張子を付けています。
https://bit.ly/firefox へアクセスすると IE のページに飛びます。
JJUG CCC 2018 Fall に行ってきました!
今回、興味のあるディープな JVM の話とかアーキテクチャ設計をたくさん聞けて、個人的にはとてもテンションが上がりました!
「Deep dive into instanceof」のように、HotSpot VM の深い話を知れたり。仕事で役に立つわけではないですが、完全に趣味として、こういう話を聞けるのはとても好きで楽しいです。
一方で、アーキテクチャ系の話もいろいろ聞けて、こちらは仕事で生かせそうです。最近、うまく設計できなくて四苦八苦していたことが続いていたのですが、その解決に向けてのヒントになりました。
この幅広さとバランスが JJUG CCC のいいところだと思います!
さて、最後にいつものを。
今回、残念ながら満席だったり時間がかぶってしまって参加できなかったセッションもあったので、あとで読むために現時点で発表者の方が公開されている資料一覧をまとめしました。*1
(あとで JJUG CCC 2018 Fall のページにもリンクが載るかもしれませんが、とりあえず自分の方で調べました)
追記:JJUG の GitHub ページで公式な資料一覧が公開されました!
jjug-ccc/slides-articles-2018Fall: JJUG CCC 2018 Fall 登壇資料まとめ
*1:発表者のお名前は敬称略とさせていただきました。
Arrays.asList(T... a)
というメソッドについてググると、「このメソッドで返ってくる List
は、add
や remove
ができないので注意しましょう」ということが良く書かれています。
でも、「なぜできないのか?」という点については書かれていないことが多いので、理由を説明します。
一言でまとめると「配列を List
として扱えるようにラップするためのものだから」です。
(「変換するもの」ではないです)
配列を List
として扱いたいときに使います。
例えば、シャッフルするのに Collections.shuffle(List list)
という引数に List
を取るメソッドはあるのですが、引数に配列を取るメソッドがありません。
そういうときに、 Collections.shuffle(Arrays.asList(a))
という風にラップすることで、引数に配列を渡せるようになります。
Arrays.asList(T... a)
で返ってくるリストは元になった配列と連動しているので、この List
の要素を書き換えれば配列の要素も書き換わります。
String[] array = new String[] { "aaa", "bbb", "ccc", "ddd", "eee" }; // 配列を List にラップしてシャッフルする Collections.shuffle(Arrays.asList(array)); // 元の配列が、ちゃんとシャッフルされている // => [ccc, eee, ddd, bbb, aaa] System.out.println(Arrays.toString(array));
Arrays.asList(T... a)
が返すリストクラスの実装を見てみると、配列をラップしているだけなのがよく分かると思います。 ((この ArrayList
は java.util.ArrayList
とは別のクラスです。))
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable { private final E[] a; ArrayList(E[] array) { a = Objects.requireNonNull(array); } @Override public int size() { return a.length; } @Override public E get(int index) { return a[index]; }
もし add
や remove
を実装しようとすると、元になった配列の長さを変える必要があります。
しかし、Java では配列の長さを変えられません。
そのため、set
や get
のような配列の中身に対して操作するメソッドは実装されていますが、add
や remove
のような配列自体を変更する必要のあるメソッドは実装されていないのです。((正確には List
インタフェースは add
や remove
を実装する必要があるので、メソッドはあるけど UnsupportedOperationException
をスローするという処理になっています)))
明日の Java アドベントカレンダー、担当は null
さんです。
誰か!書いて!!!
追記:
@opengl-8080 さんが書いてくださいました!
Doma2 でログ出力を制御する - Qiita
2019年3月末で、ジオシティーズが閉鎖されることが決まりました。
これはつまり、過去のいろんな歴史的サイトも消えてしまうということ。
そうなる前に、ジオシティーズのデータを保存して置く方法をまとめました。
まず、Wget for Windows をインストールします。
その上で、スタートメニューから「コマンドプロンプト」を起動して、以下のコマンドを実行します。
"C:\Program Files (x86)\GnuWin32\bin\wget" --convert-links --mirror <トップページのURL>
これで、ページや画像、Java Script などが全部ダウンロードされます。
もし対象のページが更新されたときは、再度このコマンドを実行すれば差分だけダウンロードされます。
CSS で指定されている画像(背景とか)はダウンロードできないという弱点がありますが、おおむね実用には耐えられると思います。
インターネット上に永久保存したい場合は、Internet Archive (Wayback Machine) へ。
https://archive.org/web/
今後、このサイトを見たくなったときは、URLで検索すれば見れるようになります。
図にまとめてみました。
こうしてみると、サポート期間5~6年って結構長いなーと思います。
First Release Date | Final Public Release Date | Final Public Release Version | |
---|---|---|---|
Java 1.3 | 2000年5月8日 | 2006年12月 | Java 1.3.1 Update 20 |
Java 1.4 | 2002年2月6日 | 2008年10月 | Java 1.4.2 Update 19 |
Java 5 | 2004年9月30日 | 2009年10月 | Java 5 Update 22 |
Java 6 | 2006年12月11日 | 2013年4月 | Java 6 Update 45 |
Java 7 | 2011年7月28日 | 2015年4月 | Java 7 Update 80 |
Java 8 | 2014年3月18日 | 2019年1月 | Java 8 Update 201 |
Java 9 | 2017年9月21日 | 2018年3月 | Java 9.0.4 |
Java 10 | 2018年3月20日 | 2018年9月 | Java 10.0.2 |
Java 11 | 2018年9月25日 | - | - |
上記の Final Public Release Date は、Sun Microsystems または Oracle の 無償サポート期間です。
有償サポートを契約すると、さらに延長してサポートを受けられます。
この詳細は、JDKの新しいリリース・モデル、および提供ライセンスについて および Oracle Java SE サポート・ロードマップ をご覧ください。
サポート種別 | Premier Support 期間 | Extended Support 期間 |
---|---|---|
Java 7 | 2019年7月 | 2022年7月 |
Java 8 | 2022年3月 | 2030年12月 |
Java 11 | 2023年9月 | 2026年9月 |
Oracle JDK 以外は各ベンダーによってサポート期間が異なります。
ディストリビューション | Java 8 | Java 11 | 資料 |
---|---|---|---|
Red Hat OpenJDK (CentOSも準じる) | 2026年5月 | 2024年10月 | OpenJDK ライフサイクルおよびサポートポリシー | Red Hat Customer Portal |
AdoptOpenJDK | 2026年5月 | 2024年10月 | Support | AdoptOpenJDK - Open source, prebuilt OpenJDK binaries |
Amazon Corretto | 2026年5月 | 2027年9月 | よくある質問 - Amazon Corretto | AWS |
Azul Zulu Enterprise | 2030年12月 | 2027年9月 | Azul Java Support Roadmap | Azul Support Lifecycle | Java 8 eol |
BellSoft Liberica JDK | 2030年3月 | 2027年3月 | BellSoft Liberica JDK | BellSoft - Java Platform & Applications Experts |
各ディストリビューションごとの情報源は、@yamadamn さんの OpenJDKと各種JDKディストリビューションの情報源まとめ #minjava をご確認ください。
各 OpenJDK のサポートポリシーや比較については、@u-tanick さん、@yamadamn さんの資料をご確認ください。
JDKの長期商用サポート(LTS)の提供ベンダー比較(無償利用についても言及あり)(@u-tanick)
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本 (@yamadamn)