マルチブート環境で Fedora 29 をインストールする

そろそろ頃合いかなということで手元の Linux 開発環境も、先日組んだ自作 PC に移行することにした。
すでに Windows がインストールされているマシンなので、恒例のマルチブート構成(EFI ブート)で Fedora 29 を追加でインストールした。
ビデオカードのドライバー設定などは毎回はまるので、作業の覚書きとして、詰まりそうな箇所のみ将来のために特筆しておく。
Fedora 29 のパーティションをカスタマイズする
Fedora 29 Workstation の Live メディアを USB メモリとして作っておき、それでブート後にインストールしていく。
インストールは画面に従って進めていけばいいが、パーティションのレイアウトだけは自分で決めたかったので以下のようにカスタマイズした(もちろんパーティションのレイアウトは自動で生成することもできる)。

インストールするディスクが sdb だったので、パーティションは指定した順に /dev/sdb1 〜 /dev/sdb2 になっている。デバイス マウントポイント サイズ タイプ
/dev/sdb1 /boot/efi 200MiB EFI パーティション
/dev/sdb2 swap 2GiB swap
/dev/sdb3 / 109.6G ext4
近年の流れにのって EFI でブートするようにするため、200 MiB の /boot/efi
パーティションを忘れずに先頭に置いておく。
メモリは 16 GB 積んでいるので swap
パーティションを作る必要があるのか迷ったが、今までずっと作ってきたので今回もなんとなく作っておいた。
残りの容量はすべて何も考えずに /
に割り当てた。個人の開発環境なのでこれくらいがちょうどいいかなと。
NVIDIA のビデオカードのドライバーをインストールする
毎回 Linux 環境を作る際に苦労するのがこの NVIDIA のビデオカード用ドライバーのインストールになる。せっかくいいビデオカードを積んでいるので綺麗な GUI でマルチディスプレイ環境を使えるようにしたいのだが、NVIDIA のドライバーは別途インストールしなければならないこともあり、面倒くさい。
続きを読む
Linux
コメント (0)
2018/12/09 13:28:15
python の pip でインストールできる自作モジュールを作ってみる
Java にはライブラリの依存性を管理するためのつーるとして Maven
や Gradle
がありますが、Python の世界にもパッケージ管理ツールとして pip
があります。コードの規模が大きくなってくるとモジュール化は避けては通れない課題なので、今回は pip
を使って、Python での自作モジュールの作成と呼び出しをしてみようと思います。
自作モジュールを用意する
まずは作業をするための自作モジュールのディレクトリを作り、その中に移動します。ディレクトリはなんでもいいですが、わかりやすいようモジュール名と同じにしておきます。$ mkdir libhollow
$ cd libhollow
このディレクトリ内に、自作モジュールのためのファイルを用意します。
ディレクトリ内に、さらにモジュール名と同じディレクトリを作成します。$ cd libhollow
そしてこのディレクトリ内部に __init__.py
を作成します。中身は空でよいので touch
コマンドで作ります。$ touch libhollow/__init__.py
同じくモジュールに含める Python のコードも入れておきます。ここでは libhollow/jackolantern.py
というファイル名で、以下の Python コードを置いておきます。# -*- coding: utf-8 -*-
def call():
print "Trick or Treet"
Python コードの内容としては、"Trick or Treet" と表示される call()
を定義しているだけです。
ここまで見てくると、これが通常の Python パッケージの作りかたと同じであることに気づくかもしれません。Python に、sys.path
上にあるパッケージを import
させるには、まずパッケージ名のディレクトリを作ってソースコードを置き、いっしょに __init__.py
もいれておく必要があります。pip でインストールできる自作モジュールを作る際にも、モジュールのコードや __init__.py
は同じようにモジュール名のディレクトリ内部に置いておくことになります。
続きを読む
python
コメント (0)
2018/11/02 13:02:57
ElasticSearch で文書を検索をしてみる
ElasticSearch
で提供されている代表的な文書の検索機能には、全文検索クエリと Term ベースクエリがあります。全文検索クエリは、検索時のキーワードが含まれているるドキュメントを探し出すための検索クエリです。一方 Term ベースクエリは、検索時のキーワードが完全に一致するドキュメントを探し出すための検索クエリになります。
よくある検索エンジンのようにキーワードが含まれている WEB ページを探すというような用途では全文検索クエリが適していますが、ユニークなキー値のようなものをキーワードにして、そのキー値が割り当てられている文書を探すような用途では Term ベースクエリが適しています。全文検索クエリではあらかじめ文書が単語に分割されて、その単語に対して検索が行われますが、Term ベースクエリでは文書が単語に分割されず、キーワードと完全一致するかで検索されます。ユニークなキー値で検索を行う場合、そのキーワードの一部分ではなくすべてが完全に一致するドキュメントを検索しなければならないので、Term ベースクエリの方が適していることになります。
今日はこの全文検索クエリと Term ベースクエリについて、実際にインデックスを作りながら試していきたいと思います。
検証データを用意する
前提として、今回は以下のインデックスを使うものとします。$ curl -XPUT http://localhost:9200/samurai -H "Content-type: application/json" -d '{
"settings": {
"number_of_replicas": 0,
"number_of_shards": 1,
"analysis": {},
"refresh_interval": "1s"
},
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "keyword"
},
"description": {
"type": "text"
}
}
}
}
}'
このマッピングでは、name
フィールドは keyword
型、description
フィールドは text
型としています。
また、このインデックスには以下のドキュメントを入れておきます。$ curl -XPOST http://localhost:9200/_bulk -H "Content-type: application/json" -d '
{ "index": { "_index": "samurai", "_type": "_doc" } }
{ "name": "真田昌幸", "description": "甲斐国の武田信玄の家臣となり信濃先方衆となった地方領主真田氏の出自で、真田信之、真田幸村の父。" }
{ "index": { "_index": "samurai", "_type": "_doc" } }
{ "name": "真田信之", "description": "真田昌幸の長男。徳川家康の養女を妻としていたため関ヶ原の戦いでは東軍につき、江戸時代には松代藩藩主をつとめた。" }
{ "index": { "_index": "samurai", "_type": "_doc" } }
{ "name": "真田幸村", "description": "真田昌幸の次男。豊臣家臣の大谷吉継の娘を妻としていたため関ヶ原の戦いでは西軍につき、父真田昌幸とともに戦死した。" }
{ "index": { "_index": "samurai", "_type": "_doc" } }
{ "name": "石田三成", "description": "豊臣政権の五奉行の一人。秀吉の死後、徳川家康を倒すため決起するが、関ヶ原の戦いで敗れ、その後処刑された。" }
{ "index": { "_index": "samurai", "_type": "_doc" } }
{ "name": "徳川家康", "description": "豊臣秀吉の天下統一後に台頭した武将で、関ヶ原の戦いに勝利し、江戸幕府を開いた。" }
'
続きを読む
ElasticSearch
コメント (0)
2018/10/10 20:00:43
ElasticSearch 6.4.2 をさわってみた
データを全文検索するためのエンジンである ElasticSearch
を触っていきたいと思います。全文検索というと WEB ページや文書のキーワード検索として広く利用されていますが、最近では RDB への参照性能を改善するため、代替手段として使われる場面も多いようです。RDB から適切なタイミングでデータを同期してやる必要があるものの、複数のテーブルやデータベースから必要なデータのみを集約して参照させるという用途では、RDB よりもはるかに高速にアクセスでき、RDB とは切り離した擬似的な参照系として構築できる点が評価されているようです。
ElasticSearch
も他の分散システムと同じくノードを複数台用意したクラスター構成をとることができますが、今回は手始めということで、シングルノード構成での環境構築からやってみたいと思います。
ElasticSearch をインストールする
公式サイトのダウンロードページから ElasticSearch
の最新版をダウンロードします。現時点での最新版は 6.4.2
でした。Linux 向けには rpm パッケージが公開されていたので、これを使うことにします。
ダウンロードした rpm
パッケージをインストールします。# rpm -ivh elasticsearch-6.4.2.rpm
ElasticSearch
をインストールすると、/etc/elasticsearch/elasticsearch.yml
として設定ファイルが作られます。シングルノード構成の場合には特に elasticsearch.yml
を編集しなくても動くのですが、複数ノード構成でクラスターを組む場合には書き変えてやる必要があります。
インストールした ElasticSearch
は、systemctl start
コマンドから起動できます。
# systemctl start elasticsearch.service
また、自動起動を有効化する場合は systemctl enable
しておきましょう。# systemctl enable elasticsearch.service
続きを読む
ElasticSearch
コメント (0)
2018/10/09 20:05:50