Windows上にWindowsの仮想環境を作って開発環境にする(ややこしい)

現在使用しているパソコンはWindows10の64bitなのだが、この環境をなるべく汚さずに開発環境を建てたい。
始めはPython環境を作るためにpyenvやdirenvの事を調べていたのだが、いつの間にかVagrantにたどり着き、こんな記事になった。

Vagrant で Windows 7 + IE8 の環境を構築する

Vagrantを使ってWindowsの仮想環境を作る。
Windows8やWindows10のイメージもMSが用意してるのだけど、仮想環境用のイメージは90日しか使用することが出来ない。
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/windows/

Windows での開発環境構築は、Chocolatey を使おう!

そこで、Windows用のパッケージ管理ソフトChocolatyを使うことでインストールを簡単に。
Java、Eclipse、Sublimetext3やVisualStudioも入れることができる。

VirtualBox 共有フォルダー設定 – ホストとゲスト間でフォルダーを共有

イメージが90日しか使えないので、VirtualBoxの共有フォルダ機能を利用することで、ユーザのデータを保護することが出来ると思います。
Vagrantにはsyncedfolderという機能があるが、Windows-Windowsの環境でどうなるかは未検証。

作業手順としてはVagrantとChocolatyを使って元イメージを作成し運用する。
ただ、Windowsのイメージが90日しか使えないので、定期的に強制リフレッシュされるのが面倒くさいなぁ。
やっぱりCentOSで作った方が良いだろうか。

メモ:python2で日本語出力がおかしいとき

前提:

  • ファイルのEncodeはutf-8
  • ファイル先頭に#coding:utf-8が書かれてる
  • マルチバイト文字列にはちゃんとuが付いてる

なのにおかしいときは、pythonのsystem encodingがおかしい? ここ参照

解決策:

.bashrcに次のコードを追加(Windowsなら環境変数)

export PYTHONIOENCODING=UTF-8
source .bashrc

SublimeText3で行った設定について 2

CentOS 7用のrpmを作ってibus-mozcをインストールしてみる

■CentOS7上のSublimeText3で日本語環境の作成
ibus-mozc (Linux)
mozc(Linux)
emacs-mozc (Linux)
SublimeMozcInput (Sublime Text)

  1. Fedoraのリポジトリからsrpmを取ってくる
  2. 必要なモノや依存関係のものを抽出し、ビルド
  3. 試行錯誤し、SPECファイルを修正。リビルド。ibus-mozc,mozc,emacs-mozcインストール
  4. 再起動
  5. SublimeMozcのインストール(SublimeText上)
  6. 実際に入力する

0-1.コンパイル環境の構築(root以外で行う)

sudo yum groupinstall "Development Tools"
sudo yum install rpm-build redhat-rpm-config make gcc
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
cd rpmbuild

0-2.srpmの取得

curl -O ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/19/Everything/source/SRPMS/m/mozc-1.10.1390.102-1.fc19.src.rpm

1-1.必要なモノを割り出すためのビルド

rpmbuild --rebuild mozc-1.10.1390.102-1.fc19.src.rpm

1-2.必要なモノをyumインストール

sudo yum install protobuf-devel glib2-devel qt-devel zinnia-devel gtk2-devel gyp ibus-devel emacs xemacs xemacs-packages-extra

1-3.ビルドできるか確認

rpmbuild --rebuild mozc-1.10.1390.102-1.fc19.src.rpm
sudo yum install --enablerepo=epel zinnia-devel gyp xemacs xemacs-packages-extra
rpmbuild --rebuild mozc-1.10.1390.102-1.fc19.src.rpm

2-1.RPMSに移動してyum localinstall

cd /home/usename/rpmbuild/RPMS/x86_64/
sudo yum localinstall emacs-common-mozc-1.10.1390.102-1.el7.centos.x86_64.rpm ibus-mozc-1.10.1390.102-1.el7.centos.x86_64.rpm mozc-1.10.1390.102-1.el7.centos.x86_64.rpm mozc-debuginfo-1.10.1390.102-1.el7.centos.x86_64.rpm

2-2.zinnia-tomoeが無い

通常のリポジトリにも無いのでepelで探す

sudo yum search --enablerepo=epel zinnia-tomoe

2-3.ソースインストールし、SPECファイルを編集する

cd ~/rpmbuild
rpm -ivh mozc-1.10.1390.102-1.fc19.src.rpm
cd ~/rpmbuild/SPECS/
vim mozc.spec
Requires: zinnia-tomoe <-- 削除
Requires: zinnia-tomoe-ja <-- 追加
Requires: zinnia-tomoe-zh_CN <-- 追加
cd ~/rpmbuild/SPECS/
sudo yum install --enablerepo=epel zinnia-tomoe-ja zinnia-tomoe-zh_CN
rpmbuild -ba mozc.spec
cd /home/usename/rpmbuild/RPMS/x86_64/
sudo yum localinstall emacs-common-mozc-1.10.1390.102-1.el7.centos.x86_64.rpm ibus-mozc-1.10.1390.102-1.el7.centos.x86_64.rpm mozc-1.10.1390.102-1.el7.centos.x86_64.rpm mozc-debuginfo-1.10.1390.102-1.el7.centos.x86_64.rpm
cd ../noarch
sudo yum localinstall *.rpm

3.デスクトップをログアウトし、vncサーバを再起動する

4-1.ctrl+shift+pでパッケージコントロールを呼び出す。

4-2.「Add Repository」を選択してEnter(注意!)

4-3.「https://github.com/yasuyuky/SublimeMozcInput」を入力

4-4.ctrl+shift+pでパッケージコントロールを呼び出す。

4-5.「sublimemozc」を選択してEnter

5-1.[ctrl]+[¥]で日本語入力になるとなっているが……
私の環境ではこの変換キーが上手く行かなかったので、[ctrl]+[space]に割り当てた

5-2.[ctrl]+[shift]+[p] でコマンドパレットを開く

5-3.keydef というように入力し、Preferences: Key Bindings – Userを選択する

Default (Linux).sublime-keymapが開くので、以下のように追記する

[
{ "keys": ["ctrl+space"], "command": "toggle_mozc" },
]

これで完成。
長かった。

SublimeText3で行った設定について1

■SublimeText3をCentOS7(&xfce)にインストール

■PackageControlのインストール

https://packagecontrol.io/installation
上記のURLに入っているページを参考に
1.View>ShowConsole
2.Sublime Text3のコードをコピーアンドペーストでコンソールに貼り付け、Enter。

■文字コード対応

ConverToUTF8
1.ctrl+shift+pでパッケージコントロールを呼び出す。
2.「Install Package」を選択を選択してEnter
3.「ConverToUTF8」を選択して、Enter
これで、UTF8以外の文書を開く事が出来るようになる。
保存するときには、元の文字コードで保存されるので心配しなくても良い。

■全角スペース対応

TralingSpaces
1.[Preference] → [Settings – User]
“draw_white_space”: “all”
(前の項目の最期に”,”を付けるのを忘れないこと)
2.ctrl+shift+pでパッケージコントロールを呼び出す。
3.「Install Package」を選択を選択してEnter
4.「TralingSpaces」を選択して、Enter
5.[Preference] → [PackageSetting] → [TrailingSpaces] → [Setting – User]
{
“trailing_spaces_regexp”: “ |[ \t]+”
}
を入力保存。再起動。

■対応するカッコを強調する

BracketHighlighter
1.ctrl+shift+pでパッケージコントロールを呼び出す。
2.「Install Package」を選択を選択してEnter
3.「BracketHighlighter」を選択して、Enter

■コマンドプロンプトを自動で開く

Terminal
1.ctrl+shift+pでパッケージコントロールを呼び出す。
2.「Install Package」を選択を選択してEnter
3.「Terminal」を選択して、Enter
4.「ctrl+shift+t」でファイルが存在するフォルダを開く

■オートコンプリート強化

All Autocomplete
1.ctrl+shift+pでパッケージコントロールを呼び出す。
2.「Install Package」を選択を選択してEnter
3.「All Autocomplete」を選択して、Enter

■python実行

SublimeREPL(SublimeREPLは多言語のインタープリターを実行するパッケージ)
1.ctrl+shift+pでパッケージコントロールを呼び出す。
2.「Install Package」を選択を選択してEnter
3.「SublimeREPL」を選択して、Enter

 

日本語環境の作成は、CentOSでは簡単にいかなかったので、別記事で。

CentOS7 + xfceでGoogleDrive(google-drive-ocamlfuse)をマウントする

1.opamを入れる(OCamlという関数型言語のパッケージマネージャ)

yum groupinstall "Development Tools"
yum install sqlite-devel fuse fuse-devel libcurl-devel zlib-devel m4
yum install ocaml ocamldoc ocaml-camlp4-devel ncurses-devel
cd /etc/yum.repos.d/
wget http://download.opensuse.org/repositories/home:ocaml/CentOS_7/home:ocaml.repo
yum install opam

2.google-drive-ocamlfuseのインストール(root以外で行う処理)

opam installすると不足しているyumパッケージを教えてくれるので、それを入れた後もう一度コマンドを実行する
opam init
opam update
opam install google-drive-ocamlfuse

3.認証画面が出るので処理する(root以外で、GUI上の端末から行う)

vim ~/.bashrc
PATH=$PATH:$HOME/.opam/system/bin
export PATH
source ~/.bashrc

4.認証を行う。(ブラウザが立ち上がるため、GUI上の端末で行う)

google-drive-ocamlfuse

■マウント処理

1.rootでスクリプトを作成(usernameは実際に使うユーザに置き換えること)

cd /usr/bin

vim gdfuse

#!/bin/bash
su username -l -c "/home/username/.opam/system/bin/google-drive-ocamlfuse -label $1 $*"
exit 0

 

chmod +x /usr/bin/gdfuse

2.マウントポイントの作成($USERになってから行うこと)

sudo mkdir /mnt/gdrive
sudo chown $USER.$USER /mnt/gdrive

sudo vim /etc/fstab 次の行を追加(uid,gidは確認する。)

gdfuse#default /mnt/gdrive fuse uid=1000,gid=1000 0 0

3.マウントの実行($USERになってから行うこと)

sudo mount /mnt/gdrive

 

さくらVPSのCentOS7上にSublimetext3を使った開発環境を建てる2

デスクトップ環境:X-windowとxfce
リモートのサーバ:tigerVNCサーバ
環境:サーバ:さくらVPS 4Gプラン CentOS7 minimal クライアント:Windows10
■xfceを入れる
0.remiリポジトリを入れる(前提のepelを入れるのを忘れないように)
1.epel,remiリポジトリのenabled=0にしておく
2.デスクトップ関連のgroupinstall
yum groupinstall –enablerepo=epel “X Window System” XFCE Desktop Fonts
3.xfce4-terminalのインストール?必要じゃ無いかも
yum install –enablerepo=epel xfce4-terminal xfce-utils
4.iconのインストール
yum install gnome-icon*

■tigervnc
0.tigervncを入れる
yum install tigervnc*
cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service
1.vim /etc/systemd/system/vncserver\@\:2.service を行う
<USER>となっている部分を利用するユーザに変更する

2.自動実行するように変更する
systemctl daemon-reload
systemctl enable vncserver@:2
systemctl restart vncserver@:2

3.ファイアーウォールの設定
firewall-cmd –permanent –zone=public –add-port=5902/tcp
firewall-cmd –reload

■日本語用TTFフォント(Ricty)を入れる
0.gitを入れる
yum install git
1.FontForge のインストール
yum install fontforge
2.Inconsolata(Font) のインストール
git clone https://github.com/google/fonts.git
3.Inconsolataフォントをシステムにコピー
cd fonts/ofl
cp -r inconsolata /usr/share/fonts/inconsolata
4.Migu 1M のインストール
wget https://osdn.jp/projects/mix-mplus-ipa/downloads/63545/migu-1m-20150712.zip
unzip migu-1m-20150712.zip
cd migu-1m-20150712
mkdir /usr/share/fonts/migu-1m
cp migu-1m-*.ttf /usr/share/fonts/migu-1m
5.フォントキャッシュを更新
fc-cache -f -v
6.Rictyスクリプトの入手
git clone https://github.com/yascentur/Ricty.git
7.Rictyスクリプトの実行とインストール
cd Ricty
sh ricty_generator.sh auto
mkdir /usr/share/fonts/Ricty
cp Ricty*.ttf /usr/share/fonts/Ricty
8.フォントキャッシュを更新
fc-cache -f -v

さくらVPSのCentOS7上にSublimetext3を使った開発環境を建てる

今後の方向として、Python使って機械学習を勉強することを目指す。その途中目的地として、Python使ってTwitterbot建てる。できればマルコフ連鎖とか使って。

んで、その開発環境として。VPSのCentOS7上にvncサーバを立てて、リモートデスクトップを使い接続する。んで、そこでSublimetext3を使ってコーディング。

  • デスクトップ環境:X-windowとxfce
  • リモートのサーバ:VNCとxrdpサーバ
  • 日本語環境:ibus-mozc

という感じで進める。進んだら、その状況を記事にする予定。

awstats入れた

その際のLogrotateメモ。

vim /etc/logrotate.d/httpd

 

/var/log/httpd/*log {
    daily
    missingok
    rotate 90
    notifempty
    sharedscripts
    prerotate
        `rpm -ql awstats|grep "awstats_updateall\.pl"` now -confdir="/etc/awstats" \
        -awstatsprog="`rpm -ql awstats|grep "awstats\.pl"`" >/dev/null
    endscript
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}