UbuntuでのEclipse再インストール

UbuntuでのEclipse再インストール

Ubuntu13.10から14.01にアップグレードするとあるJavaのプロジェクトが動かなくなったのでEclipseを再インストールした。
そのときのメモ。

下記手順でアンインストール。

$ sudo apt-get purge eclipse*
$ sudo apt-get autoremove
$ sudo rm -rf /usr/lib/eclipse
$ sudo rm /etc/eclipse.ini
$ rm -rf ~/.eclipse

`sudo rm -rf /usr/lib/eclipse`を飛ばすとEclipse立ち上げた後の新規ソフトウェアのインストールでコケた。

アンインストールが完了したら下記手順でインストール。

$ sudo apt-get install pleiades
$ vim /etc/eclipse.ini ※末尾に下記の1行を追記
-javaagent:/usr/share/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
$ eclipse -clean & ※編集完了後に一度-cleanオプションを付加してEclipseを起動。以降は-cleanオプションは不要。

【データ設計アンチパターン】誤ったステータスカラムの設計

Webアプリの開発では、あるテーブルにステータスカラムを持たせるということはよくあります。
今回は、実際に業務で遭遇したBadなステータスカラムの設計を教材として、正しいステータスカラムの設計とは何かを考えていきたいと思います。

ステータスの定義

ステータスとは文字通り、対象の状態のことです。
開発では、操作対象(オブジェクト)のある状態に名前をつけたり値を割り振ったりします。
例えば、記事が公開中であるか、下書き状態であるかです。

ステータスをそのように区別しなければならない理由としては下記があります。

・当該ステータスにおいてのみ、実行させたい処理がある
・当該ステータスでは、実行させたくない処理がある

アンチパターンその1. ステータスを抽出する粒度がおかしい

仮にYahoo!ニュースのようなニュースを配信するメディアがあったとします。
このメディアでは、記者が書いた記事を運営事務局が検閲し、内容に問題がなければ掲載を開始するという業務フローになっています。

このケースで以下のようなデータ設計がされていたらどうでしょうか?

※ステータスにフィーチャーするため、ユーザIDなどの外部キーや記事本文など他のカラムについては記載していません。

まず、edit_statusというカラムについてです。
抽出されているステータスとして「申請中・再申請中」というものがありますが、両者は区別する必要はありません。

なぜなら、申請中というステータスは記者が事務局に「記事の内容を確認してね」という要請を出していますよという状態ですが、それが初回であろうが2回目の申請であろうが事務局が行う検閲という業務フローには影響がありません。

ステータスは抽出しようと思えば、いくらでも作れてしまいます。
例えば、対象を人間変えると「新婚・風邪・食あたり・食事中・休憩中」などなど。

こうなってしまうと際限がなくなってしまいますので、粒度が細かいものはまとめなければなりません。
ではどういった基準でまとめるのかというと、前述した「当該ステータスにおいてのみ、実行させたい処理がある」かどうかです。

例えば勤怠管理のシステムにおいて欠勤理由などを保存する場合「風邪・食あたり」では細かすぎます。「体調不良」というより大きな粒度にまとめてしまうといいでしょう。
制御に利用されないステータスは混乱を招くだけですのでなくすようにしましょう。

アンチパターンその2. ステータスが重複している

上記データ設計にはもう1点悪い箇所があります。
それはステータス保存するカラムが2つあることです。

まずこの実装でステータスを定義する目的は「記事を公開できる状態であるか区別する」もしくは「オペレーション(申請に対する検閲)が必要であるか区別する」ことです。
2つに分けられたステータスを比較したときに、これらを制御し得る値であるが複数存在しちゃっています。
表にしてみると一目瞭然です。

具体的に重複している箇所は以下の通りです。

・「下書き中」「未公開」はどちらかひとつあれば、記事を編集中であるかどうかは判断可能
・「完了」「公開中」はどちらかひとつあれば、記事を公開できる状態かどうかは判断可能
・※「申請中」・「再申請」は前述した通り
このケースだと、statusカラムは1つにまとめちゃって、値は「編集中・申請中・公開中」の3つにしてしまえばずっとシンプルになります。

以上、ステータスカラムの設計についてでした。

シェル、sh

shellでの$$(ダラーマーク/ドルマークが2つ並んでいる)の意味
ログインしたシェルのプロセスIDを知ることができます。
ttps://kamotora.net/system/aix/shell-doubledolloar-mark/

AWKプログラミング
レコードの先頭から$1、$2、$3
レコードの末尾からは$NF、$(NF – 1)、$(NF – 2) ……と定義されます。
This is a pen.
$1 $2 $3 $4
$(NF – 3) $(NF – 2) $(NF – 1) $NF
https://codezine.jp/article/detail/7852

Linuxでのドル記号「$(…)」の意味と使い方
$ echo “現在のディレクトリは、$(pwd)です”
現在のディレクトリは、/home/userです

Linuxでのドル記号「$(…)」の意味と使い方

bashの配列 @(アットマーク)と *(アスタリスク)の違い
どちらも全件抽出ではあるが、@(アットマーク)の方がきれいにでる
https://qiita.com/mtomoaki_96kg/items/ff82305f1ff4bb4c827c

シェルスクリプトの % (パーセント記号)の意味
https://it-soudan.com/meaning-of-percent-symbol-of-shell-parameter-expansion/

シェルの入力制御
https://qiita.com/tag1216/items/7ce35b7c27d371165e56

http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%EB%B5%AD%B9%E6%CE%E0%A4%DE%A4%C8%A4%E1

改行コードに気を付ける
https://qiita.com/b4b4r07/items/9ea50f9ff94973c99ebe

【シェルスクリプト】ファイルの中身を一行ずつ読み込む方法
https://www.server-memo.net/shellscript/read-file.html

echo オプション eは改行を出力(hをつけると表示されないので省略)
ttps://eng-entrance.com/linux-command-echo

単項演算子が予期されますを防ぐ

https://www.bee-planetz.com/blog/%E3%80%8C%E5%8D%98%E9%A0%85%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%8C%E4%BA%88%E6%9C%9F%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%8D%E3%82%92%E6%8A%91%E5%88%B6%E3%81%99%E3%82%8B/