発火後忘失

FIRE AND FORGET

git の HEAD は @ で代替できる(1.8.5以降)

タイトルで完結してしまっているエントリなのですが、 git reset --hard HEAD やら git rebase -i HEAD~3 やら実行するとき, HEAD とタイプする代わりに @ 1文字で代替できます。
git reset --hard @ みたいな感じですね。

あまり日本語の解説で見かけたことがなかったので書いてみました。
ちなみに導入されたのはバージョン1.8.5からだそうです。もうずいぶん昔ですね(と思ってCentOS7.2にインストールされているバージョンを見てみたら1.8.3でしたが…)。

Instead of typing four capital letters "HEAD", you can say "@" now, e.g. "git log @".

VisualVMがJava8に対応していない(jdk8u102)

CPUプロファイリングを行おうと自作アプリケーションにVisualVMを接続したのですが、次のようなエラーが出て正しく動作しませんでした。

java.lang.NoClassDefFoundError: org/infinispan/util/concurrent/locks/impl/PerKeyLockContainer$$Lambda$156

lambdaという文字列が見えるので、Java8ラムダ関連なのだろうか、と思って検索してみたところ、次のバグが関連するようでした。

暫定対処としては、代わりにNetBeans付属のプロファイラを使用する、という手段が挙がっています。
試してみたところ、こちらでは確かに動作しました。

VisualVMと比較し計測開始までの準備が断然早く驚きました。
なお、機能的にはVisualVMの方がリッチだと思われます。

CentOS7ベースのDockerコンテナで--privileged無しでPostgreSQLを動かしたい

CentOS7ベースのDockerイメージで作成したコンテナの中で systemctl コマンドを実行すると次のエラーが出て失敗します。

Failed to get D-Bus connection: No connection to service manager.

検索すると docker run コマンドに --privileged オプションを付けると良い、なんて書かれているのをよく見かけますが、特権モードなんて名前のオプションを軽々しく使って良いものか、リファレンス読んでもよくわからないし…

と思いつつ情報を探していたのですが、CentOSプロジェクトオフィシャルなPostgreSQLイメージ用Dockerfileがありました。

CentOS-Dockerfiles/postgres/centos7 at master · CentOS/CentOS-Dockerfiles

systemctl コマンド使わずに済むようスクリプトを書き換えて対応している感じです。

PostgreSQL以外でも systemd 経由で起動していたサービスは同じように対応できる気がします(そもそもオフィシャルDockerfileが用意されていたりも)。


以下、今回の本筋とは関係ないのですが、
Bug 1033604 - Unable to start systemd service in Docker container
のリンクに、 --privileged オプション無しで systemd を起動する、というエントリがありました。
Run systemd in an unprivileged(!!!) docker container | maci's random stuff

この回答のどこが問題で何が問題か

Java - Doubleとdoubleの使い方(43331)|teratail より:

質問:

import java.awt.geom.Arc2D.Double;

public class RoundSample {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        Double d = 1234.56789;
        double rd = Math.round(d);
        double rid = Math.rint(d);
        double cd = Math.ceil(d);
        double fd = Math.floor(d);
        int i = d.intValue();

    }

}

上記のコードは参考書のコードです。
Doubleの初期化の所で初期化ができずに、eclipseにdoubleにしてくださいとエラーが出てしまいます。
なぜダメなのかがわかりません。
宜しくお願いします。

回答:

Doubleはオブジェクトなのでコンストラクタを使って初期化してください。

(当初はもう1件回答がついていたはずですが、現時点で既に削除されているようです。)

ちなみに正解は、質問者が自己回答しているとおり、想定外の import を行っている( java.lang.Double を使うつもりがそうなっていない)ためです。

私が回答を見て思ったのは以下の通りです。

  • IDEに貼り付けるだけで正解にたどり着くのに回答者はそれすら怠っている。
  • 「コンストラクタを使って初期化」という表現は不正確で、何が言いたいか分からない人からしてみると具体的にどうすれば良いのか分からない。
    • おそらく new Double(1234.56789); のようにせよ、ということだと思われる。
  • (java.lang.Double ではないということに気づかなかったとしても) オートボクシングが働くのでこのままでエラーとなることはない。
  • 質問に「参考書のコード」だと書いているのを踏まえると、そんな書き間違いをしているわけではないだろうということは想像できるはず。
  • doubleDouble にしたいのであれば使用すべきなのは new ではなくDouble.valueOf(double) である。


つまり、十分に理解できるべき質問を理解せず、基礎的な言語知識に誤りがある状態で回答がなされ、それが特にツッコまれもせず存在していることが問題である、と考えています。
変な質問を問題視する声はしばしば聞こえますが()、そんなものは無視すれば良いだけです。
一方、変な回答は無視すべきものかどうなのか回答を受けた人が判断つかないので非常に害悪です。

過去にteratailのファーストインプレッションとしてマイルドにこの問題に言及したことがありますが、傾向としては今も変わらずこのとおりであると感じます。

本回答者、現時点でteratailランキング総合5位、Javaタグランキングで3位の方なのですが、やはり回答/回答者に対するモデレーションが弱いのが原因の一端にあるのかなと。

UbuntuとWindowsをデュアルブートしていると時刻が9時間ずれる

WindowsUbuntu同一筐体にインストールしデュアルブートできるようにしている場合、Windowsの時刻が9時間ずれる事象に遭遇する場合があります。
従来は /etc/default/rcS ファイルに UTC=no と記載することで設定を行っていたのですが、16.04では設定方法が変わっています。

rcS(5):

The UTC setting is replaced by the UTC or LOCAL setting in /etc/adjtime, and should have been migrated automatically.

というわけで /etc/adjtime ファイルに設定するようになったようですが、このファイルはアップグレード直後には存在していませんでした。
次のコマンドを実行することで、(ファイルがなければ作成し)設定が行えます。

sudo timedatectl set-local-rtc 1

参考:

Ubuntu16.04にアップグレードしたらEclipseが固まる

Ubuntu16.04にアップグレードしてから、Eclipse4.5.2を操作しているとファイルを閉じたり新規作成したりする際に砂時計表示のまま固まってしまうことが多発しました。

暫定的な解決策として、 eclipse.ini--launcher.appendVmargs と書かれた行より前に下記の2行を追記することが挙げられていました。

--launcher.GTK_version
2

参考:

自前で用意できるチャットサーバを探す

最近、self-hostedでslack-alternativeなチャットサービスを探しました。
その時参考にしたサイトと、どういう点を選定基準にしたかを残しておきます。
(ちなみに、Slackそのものは使ったことがありません…!)

注目点

  • LDAP認証
    • 立てるのはチャットサーバだけに留まらないので、アカウント管理は一元化したかった
    • Rocket.Chat, Zulipは機能がありそう
    • MattermostはEE版(有償)のみ
  • ネイティブクライアントアプリ
    • 常駐させたいしブラウザだとどこで開いてたのか分からなくなる
  • 返信時のスレッド(threaded conversations)機能
    • Rocket.Chatを試用した際どの質問に対して返答してるのかとかが非常にわかりづらく必要性を感じた
  • 日本語検索
    • 最初は必要ないと考えていたのですが、長く使っているとやはり欲しくなる…
    • 全プロダクト試したわけではないのですが、調べた限り初期状態では全滅