ozawaのブログ

本ブログは、PC関連について投稿します

Win10をgrubでブート

始めに

久ぶりの更新です。
今回の内容はGrubを使ってwin10をブートさせます。

毎回、設定するたびにやり方をいろいろググるのが面倒になったので、手順のメモを残します。

手順

目標は、LinuxGrubからWin10のブートができるようにします。
前提として、今回はLinuxWindowsがインストールされているHDDは別であるとします。(デュアルブートでもいけると思いますが)
また、今回はCentosです。

まず初めに、lsblkでブートローダが入っているパーティションを確認します。

% lsblk

f:id:d-ozawa940:20170701040256j:plain

上記の場合だと、sda/sda2にブートローダが入ってます。

自分の場合は、Win10のブートローダが入ってるのは100MBのパーティーションでした。
そして、次のように/etc/grub.d/40_customを編集します。

$ sudo vim /etc/grub.d/40_custom


menuentry "Win10" {
set root=(hd0,2)
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

ここで注意なのが(hd0,2)の部分で、最初の0がデバイス番号を表し、次の2がパーティションを表していて、デバイスはsda, sdb..が0, 1, ….となるのに対して、パーティションはsda1, sda2, …が1, 2, ….となっています。

編集した後は下記のコマンドを打ち、grub.cfgと呼ばれるgrubの設定を更新します。
この時、ディストリビューションやブートの仕方によって場所が違うので要確認。

# Centosの場合
% grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

# UEFIモードの場合
% grub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg

# 上記以外  
% grub-mkconfig -o /boot/grub/grub.cfg  

最後に再起動して、確認する。

Seasar2 + eclipseの設定

はじめに

どうも、今回の内容はSeasar2であるSAStruts(Super Agile Struts)という割と古めのフレームワークの導入です。
SAStrutsJavaのWebフレームワークの一つで、Strutsの拡張です。
なんで、Springじゃないの?とかあると思いますが、使う機会があったためメモ代わりに残しておきます。

目標は、eclipseSAStrutsフレームワークのプロジェクトを新規作成できるようにすること。

下記のサイトを参考にしました。

The Seasar Project(公式)
Java + Tomcat + Eclipse + Seasar2 + MySQL 環境構築手順 まとめ(Javaっと。)

導入手順

本環境はArch Linuxです

基本的にSeasar2のプロジェクトを新規作成するために用いるDoltengというプラグインを利用します。
まずは、eclipse、jdk7のインストールです。

pacman -S eclise-java  
pacman -S jdk7-openjdk  

ここで、なぜjdk8ではないかと言うと、Doltengというプラグインがjdk8だと正常動作しないためです。
jdk8の場合は、"Project Facet Setting"の項目がNone以外選択できず、空のプロジェクトが作成されます。 jdk8を使いたい場合は、一度、jdk7でDoltengを用いてプロジェクトを新規作成してから、若干の設定が必要みたいです。

Seasar2でJava8対応した時の流れ(Qitta)

↓JDK8

f:id:d-ozawa940:20170517231506p:plain

↓JDK7

f:id:d-ozawa940:20170517231649p:plain

さて、次に下記のeclipse プラグインをインストールします。

始めに、SAStrutsPluginを入れるために、"Web, XML, Java EE and OSGi Enterprise Development"を入れる
これは、Help>Install New Softwareを開き、Work withの右のプルダウンをクリック、その中に、"All Available Sites"ある選択すると表示されるのでインストールをする

次に、Help>Install New Software>Add…を開き下記を入力する

Name: Seasar2(適当)  
Location: http://eclipse.seasar.org/updates/3.3/  

その後、DoltengKijimuna、SAStrutsPluginにチェックを入れてインストールする

あとは、下記のように"Project Facet Setting"をすることでSAStrutsフレームワークを新規作成することができる

f:id:d-ozawa940:20170517235515p:plain

まとめ

jdkのバージョンでプロジェクトを作るプラグインが使えないので、そこだけ注意

word2vecを利用したツイート解析

久々の更新です
今回の内容は、自分が研究したことです

分野は言語処理でツイートの解析を行いました
目標は、文章分類で、この文章はどのような属性を持っていかを分類します

ぶっちゃけ、研究し終わってから結構時間たっていたり、そもそも理論を勘違いしていたり、割と適当に書いているので、あらかじめご了承ください

 理論

主に単語の分散表現を利用します
単語の分散表現とは、単語の意味をn次元のベクトルで表現するもので、ある規模のテキストデータがあれば下記のような意味演算が可能になります。

王-男+女=妃

f:id:d-ozawa940:20170407234856p:plain

さて、ここで本研究ではword2vecを利用しました
word2vecは、テキストデータを与えると、n次元のベクトル空間上に類似した単語を近くに配置していく特徴があります

f:id:d-ozawa940:20170407235142p:plain

この近くに配置する作業では、分布仮説という同じ文脈上では同じ意味の単語が出現することを利用して、ある単語の前後n字の単語に対して、近くになるように配置していきます

単語の分散表現をある程度のデータ量で作れば単語の意味関係を表すことができる
ここに着目して次のようなことを考えました

ベースラインとなる単語の分散表現から、ある属性の文章を加えて再配置させると、単語の意味の変化に関する何か有用な特徴が得られるのではないだろうか?

例えば、下記のようなイメージです

ベースラインとなる分散表現: U(ある程度、単語の意味関係が正確になっているもの)
10代が書いたテキストデータで、Uを再配置したもの: U10
20代 〃 : U20
30代 〃 : U30
40代 〃 : U40

とする

そして、この各々の属性のテキストデータで再配置したものをベースラインで引くことで、ベースラインからの変化量が得られる
U10 - U = X10
U20 - U = X20
U30 - U = X30
U40 - U = X40

X10~X40は、各々の属性に関して何かの特徴になっていると考えられる
このX10~X40機械学習を利用することで、何らかの特徴を学習して、文章を与えることで属性分類ができたらな、というのが研究する前に自分が思いついたことでした


と、気力が尽きたのでここまでにします
結果は、男女合わせて2000件のデータを10-fold交差検証したところ、属性平均F値が男女平均して0.92ぐらいです。
また、性別ほど綺麗なデータが取れなくて、ノイズを含む年代では4クラスで0.58なので実用性があるのかは自分では判別できませんでした

f:id:d-ozawa940:20170408000512p:plain

以下の画像は、試験的に分類したものの例でテストデータと学習データの半分に分けて分類した結果です
分類結果は、性別、年代、現住所で一時的によかったものです(交差検証をしていないので評価には使えないが….)

f:id:d-ozawa940:20170407235705p:plain f:id:d-ozawa940:20170408000639p:plain f:id:d-ozawa940:20170408000850p:plain

最後に

自分にとってこの研究の始まりはビッグデータ解析をしたい!!という思いで始めました
しかし、容易に取得できるツイートデータを分析しているうちに自然言語処理の面白さに触れられたと思います
研究した自分としては、単語の分散表現を利用した属性分類は、言葉遣いに違いが現れるような属性のテキスト分類に有効だと信じたい..(自分的には悪くない手法だと思います)

もし、時間に余裕があって、実験ソースが残っていたらアップでもしようかな

ということで、以上となります

Dockerの容量を上げるときのメモ

はじめに

どうもこんにちは。
今回の内容は、「Dockerの容量をあげる時について」です。

この内容を記事にする理由は、久々にDockerの容量を上げることがあり、色々ハマったため手順をまとめることにしたためです

ちなみに作業環境はArch linuxで、Systemdを使っているためコマンド等の違いがあるので注意。

あと、色々な設定等についてはここを参照してください。
Docker ドキュメント日本語化プロジェクト

手順

作業の前に、現在のイメージファイル等は作業中に削除されてしまうため、docker saveでファイルにしておきます。

% docker save 保存するイメージファイル名 >> 保存する時のファイル名

まず、稼働中のdocker.serviceを停止させます。
その後に、それまで使っていたイメージファイル等が入っているディレクトリを削除します。(デフォルトでは/var/lib/docker)
この作業でイメージファイルや起動中のコンテナなどが消えるので注意が必要。

% sudo systemctl stop docker.service  
% sudo rm -R /var/lib/docker  

その後で、/etc/systemd/systemにdocker.service.dがなければ作成します。
systemctl editを使うと編集画面になり、編集後は自動でdocker.service.dと編集したファイルがその中に保存されます。

% sudo systemctl edit docker.service

自分は以下のように編集しました。
dm.basesizeが起動中のコンテナの容量の上限です。
また、自分はDockerのイメージファイル等が入るディレクトリの場所を変更しました。

#/etc/systemd/system/docker.service.d/test.conf

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -g /home/docker --storage-opt dm.basesize=50G

ここで、空の"ExecStart="を書かないとエラーになるので注意。
編集後は、/etc/systemd/system/docker.service.d/[変更後のファイル名].confがあるか確認をして、daemon-reloadをします。
その後で、docker.serviceを起動して、容量が増えているか確認。

% sudo systemctl daemon-reload
$ sudo systemctl start docker.service
$ sudo docker info

以上で容量を上げることができました。

Neovimへの移行

はじめに

ブログを開設してから時間が経ってしまいましたが、ようやく初投稿です。

今回のテーマは「Neovimへの移行」になります。

元々、Neovimにはさほど興味がなかったのですが、Shougoさん(Vimプラグイン開発者)がDenite.nvimというプラグインを開発していたのを知ったため、Neovimに移行してみてDenite.nvimを使ってみよう!となりました。

Neovimとvimの相違点は2015年のモノですが以下のサイトで確認できます。
NVim と Vim の相違点

書いた内容はググれば他に出てくる程度のことなので期待できるほどではないですが、よろしくお願いします。

Neovimのインストール

ここにインストール手順があります。
自分はArch linuxなので以下のコマンドでインストールしました。

sudo pacman -S neovim
sudo pacman -S python2-neovim python-neovim

NeovimはXDG Base Directory Specification(ユーザ個別の設定が書き込まれるディレクトリ)をサポートしているみたいです。 よって、.zshrc(または.bashrc)にXDG_CONFIG_HOMEのパスを追記します。

% vim ~/.zshrc
export XDG_CONFIG_HOME=~/.config

次に、Neovimの設定ファイルであるinit.vimを作成します。
.vimrcのシンボリックリンクを貼るとneovimとvimで設定ファイルを共有できますが、設定の部分でそのままだとエラーが出るので個人的にコピーがおすすめです。

ln -sf .vimrc $XDG_CONFIG_HOME/nvim/init.vim
または
cp .vimrc $XDG_CONFIG_HOME/nvim/init.vim

移行は以上で完了です。
NeovimのGUI開発が待ち遠しい...

ちなみに、nvimで呼び出せます。

% nvim

次回は、dein.vimやdenite.nvimについて投稿していきたいと思います。

注意

  • 設定

.vimrcのclipboardの設定でautoselectを入れている場合はエラーが出るので消します。 Neovimでは、encodingがutf-8に統一されたためencodingもコメントアウト

% vim $XDG_CONFIG_HOME/nvim/init.vim
-set clipboard=unnamed,autoselect
+set clipboard=unnamed

-set encoding=utf-8
+"set encoding=utf-8

NeovimではTERMを設定しないとtmux上でカラースキーマが反映されないようなので、.zshrc(または.bashrc)にTERMを追記します。

% vim ~/.zshrc
export TERM=xterm-256color

酔った勢いでブログを始めました

始めまして、こんにちは

ozawaです

このブログは

を投稿していきたいと思います