なんやかんやでエディタ宗旨変え

いろいろあって転職を思案中。持病持ち・身障者オッサンの転職は正直厳しく難しい。後片付けしながら就活するか、雇用保険もらいながらダラダラとやるか・・・。年度内で一区切りしようと思っているけど、どっちにしろメンドっちーなー。

そんなことはともかく。。。

10数年以上、テキストエディタはxyzzyを使っていました。
なんの不満もなく、僕的には最強のエディタだと、自分に言い聞かせ(^^;使っていました。ここ最近は Linuxなどの非WindowsなOSをいじることが多くなって、そういう時は操作感が非常に似通っているEmacsを、と使い分けていたのですが・・・Emacsを使えないサーバーが多々あり、やむなく 端末上で vim を使う練習・・・というか修行をここ1年ほどしてました。

最近・・・xyzzy で CTRL-N,CTRL-P,CTRL-B,CTRL-F でカーソル移動するところを・・・気付けば J,K,H,L と、打ち間違うことが多発 トホホ(笑)

で!、なんの気なしに『Windows版のGUIなvim ってあるのかな・・・?』と探している自分が居まして・・・、Kaoriya版のWindows向けvimをインストールして、まずはシェルスクリプトを編集するときだけ、gvim を極たまに使っておりました。
この頃はまだ、xyzzy 最強ー、と思ってました。vimってやっぱ、使いにくい!!! なんだ、あの、ノーマルモードやら挿入モードやらコマンドモードやらを行ったり来たりめんどくせーーーー、って。

でも、amazonで買ったkindle版の解説本で紹介されていた、vim-surroundというプラグインを知り、このプラグイン、すげー、カッコやら引用符やら、波カッコの挿入、変更、削除が一発でできるやん!!!ってことにコロッと一目ぼれして、気づけば、ソースコードファイルの拡張子をレジストリいじって gvim に関連付けしてた(ーー;

僕的に↓良書。
思考のスピードで編集しよう! (アスキー書籍)

でもWindows版 だと外部コマンド実行の時、コンソールウィンドウが開いてダサーーってなる。
んー、まぁ、このダサさもWindowsの味なんで・・・(^^;

あと、エディタで使うフォントでしっくりくるものが未だに見つからない。

それに英語配列以外のキーボードだと激しく使いづらい。。。まぁこれは慣れの問題だけども。

それと、vim使ってない時の他のアプリでテキスト入力するとき時で、入力が終わった後なんでもかんでもCTRL-[ をタイプしてしまうという謎の癖がついてしまった・・・orz

オプションの超手抜きパース

今日は親戚のお葬式に出席。「生きる」意味って何なんだろうな?と、葬式に出る度にいつも考えてします。まぁ、日々の雑務に追われてすぐ忘れてしまうんですけどね(^^;

そんなことはともかく。

最近、シェルスクリプトを書く機会が多くなってきました。OSにほぼ標準で入っている小さいコマンドを組み合わせて目的の処理を実現するというUNIX?の思想っていうWindowsとは全く相容れない考え方をようやく理解しつつあります(^^;

で、やっぱり最初につまづいてしまうのが、コマンドラインからのオプション引数のパース。
最初は泥臭くshift, if ,case とか駆使しなんとかやってたんですが、もっと効率のいい方法を試行錯誤した結果下記に行きついた。

僕の書くシェルスクリプトの用途ではオプションで指定した値をオプションの名前の変数にそのまま変格納してくれれば十分なので、”-A xxx” みたいなショートオプションは捨て、”–optionA=xxxx” のようなロングオプションだけ対応することで手抜きパースすることにした。

$ parse.sh --opta=xxx --optb=yyy

これをパース。

#!/bin/sh
# parse.sh
#デフォルト値
opta=.
optb=1

#パース
if [ -n "$*" ] ; then
	for arg in "$@"
	do
		eval `echo "$arg" | sed -nr 's/^--(opta|optb)=(.+)$/\1=\"\2\"/p'` 
	done
fi

#確認
for var in opta optb
do
	eval echo $var = \$$var
done

デフォルト値を定義しといて、オプションで得られる値を上書きすることにした。
最初は、”grep -P -o” でオプションを一個づつ食わせてたんですが・・・2重ループになるのでかなり遅い。
で、結局 sed で抽出して eval で手抜きした(^^; getoptってのがあるみたいですが、正直よくわからん。

でも、このコードだとオプションの数が10個も20個も必要な場合かなりダサいコードになるのは、素人まるだし(^^;;;
まぁ、いいや。

開発環境見直し for WORDPRESS on WSL

2017/12/21 追記:
bashを終了すると、立ち上げたデーモン全部落ちてしまいますが、Windows10の次のなんちゃら UPDATE で、bashを終了してもデーモンが生き残るようになるとのこと。朗報ですな。うんうん(^▽^)/ っていうか、僕的に、もうWindows要らね、って・・・。 Apple iTunesと Adobe Creative Cloud が linux 対応してくれたらももうWindows使うの終わりかもw

2017/11/09 追記:
LAN内の他のPCからアクセスするには、コントロールパネル ≫ Windows Defender ファイヤーウォール の新規受信規則で、ポート80番を開けないといけません。


ちょっと前に今の仕事の開発環境を新しくしたのですが、Windows 10 Fall Creators Update(以下、FCU)で、Windows Subsystem for Linux(WSL)がベータ版から正式版に変わったんで、また見直し。見直しというか、Wordpress用。

HyperVを使った前のやつは、こっち、でCIFSマウントしているディレクトリへのアクセスがたまにエラー?で読み取れなくなるぐらいで、特に不自由もなかったんですが、WSLの記事をググると、思いの他進化しているので、WORDPRESSでのお手軽サイト構築用の環境として整備することにした。

Windows10 FCU からは、限定的ですが、ネットワークフォルダをマウントすることができて、WSLはかなり実用的な開発ツールセットになってきています。しぶしぶMac使っている人(そんな奴いるのか?)は、やっと大好きな(笑) 使い慣れたWindowsでウェブ系のお仕事ができます!( ̄▽ ̄)

BoWそのものは、マイクロソフトストアからインストールできるので、もう説明要らないでしょう。Windows10 FCUから開発者モードにする必要もなくなったし。

手順を記録しとこう、という備忘録です。特にこれといって新しいことが書かれているわけではなく、グーグル先生に聞いた内容を自分用にまとめたものなので、あまり参考にはなりません。あしからず。

>>以下の手順を全自動で行うシェルスクリプト

■ パッケージのインストール
apt コマンドで、必要なパッケージをインストールしていきます。sudo するのがかったるいので、全部 root で作業します。
の、前に・・・、まず、/etc/apt/source.list の中のリポジトリを日本のものに差し替えるのが定石だそうですので、変更してからにします。
また、mysql-serverをインストールする最中に、root パスワードを入力するように促されるので適当に。

sudo su -

sed -i.orig -e 's%http://archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g' /etc/apt/sources.list
apt update
apt -y upgrade

apt -y install apache2 apache2-doc mysql-server mysql-client
apt -y install php php-mbstring php-mysql php-sqlite3 php-gd php-mcrypt libapache2-mod-php 

php の方は、必要なモジュールを別途 apt でインストールする必要があります。・・・その辺はまぁ適当に。

■ Apache2 設定
まず、そのまま “service apache2 start” とかやると、ワーニングがでます。まぁ、無視すりゃいいんですが、気になるので・・・。
/etc/apache2/apache2.conf を開いて下記2行を追記します。

AcceptFilter http none
AcceptFilter https none

あと、開発するファイル等が入った、ドライブなり、フォルダなりを apacheから見えるようにしないといけません。
windows.confは、僕の環境では、下記のような感じ

#
# /etc/apache2/sites-available/windows.conf
#
<Directory "/mnt/d/devel">
AllowOverride All
Options All
Require all granted
</Directory>
Alias /devel /mnt/d/devel

で、有効化します。

a2ensite windows

php.iniの修正も若干必要ですかね。デフォルトで2MBしかアップロードできませんし、開発環境なんで、memory_limitは無制限にしたい。
ってなわけで、/etc/php/7.0/apache2/php.ini で、以下の項目を修正

  • date.timezone
  • memory_limit
  • post_max_size
  • upload_max_filesize

それと、まぁ、ほとんど使わないと思いますが・・・DocumentRootが /var/www/html で設定されているのですが、これのオーナーとグループを自分のユーザーにしときましょう。いちいち sudo してコピーするのメンドクサイでしょう。ついでにホームディレクトリにリンクを作っときましょう。

#一度 root を exit して・・・
exit
#myuserは自分のアカウントで置き換える
sudo chown -R myuser:myuser /var/www/html
ln -s /var/www/html ~/wwwroot
# root に戻る
sudo su -

■ MySQL 設定
次、mysql。apacheと同じく、”service mysql start” とかやると、僕の環境ではワーニングが出ます。これも無視すればいいんでしょうけど・・・。
mysqlユーザーのホームディレクトリを作ってやります。すでにあればやる必要なし。

mkdir /home/mysql
chown mysql:mysql /home/mysql
usermod -d /home/mysql mysql

mysql の 文字コードを UTF8にしときます。
/etc/mysql/my.cnf を開いて、下記を追記

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
character-set-server = utf8

ここで、一旦 mysql を起動して、mysqlクライアントからユーザー、データベースを作っちゃいましょう。

service mysql start
mysql -u root -p

ここから mysql シェル

まずユーザー(wpuser)を作成。パスワードは適当に 0000 とか。
> CREATE USER wpuser IDENTIFIED BY '0000';

WORDPRESS用のデータベースを作っときます。
> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;

作ったユーザーに、データベースの権限を全許可します。
> GRANT all privileges ON wordpress.* TO wpuser

> quit

あと、phpMyAdmin は必須っすね。aptコマンドでインストールしてもいいんですが、最新のものをマニュアルで入れときます。

#一旦rootを抜けて、一気に片付けましょう。
exit
cd /var/www/html
wget -O - https://files.phpmyadmin.net/phpMyAdmin/4.7.5/phpMyAdmin-4.7.5-all-languages.tar.gz | tar xvzf -
mv phpMyAdmin-4.7.5-all-languages phpMyAdmin
cd phpMyAdmin
cat config.inc.sample.php | sed -r 's/^(\$cfg\['\''blowfish_secret'\''\]) *= *'\''.*'\''/\1 = '\''32_moji_no_randamu_na_ei_suuji_x'\''/g' > config.inc.php

WSLではサービスとして動かすことができないので、bash を終わらせるとapache,mysqlのデーモンが全部落ちます。まぁバックグラウンドで走らせてしまうと、Windows Serverの顔が立たない(^^;ので致し方ありません。
bashを立ち上げるたびに、

sudo sh -c 'service mysql start; service apache2 start' 

とかやる必要があります。まぁこれは、alias 一個作っとけばいいだけなんすけどね。

WORDPRESSでのサイト構築ではもう十分な感じ。でも WSLのubuntuで docker が動いたらこんなメンドクサイことしないで済むのになぁ・・・。いずれ対応してくれることを祈る。

実際にはシェルスクリプトにすることで、インストールしてコマンド一発で、LAMP環境をセットアップできるようしています。
そのスクリプトは、こっち。

ドメイン変更

ORGからJPに変更。。。

IPアドレスが同じの場合、HTTPSでのドメイン転送はどうすればいいんだろう・・・。
う~む、勢いで変更しちゃったから、HTTPSでリンク貼られたところは軒並み、「プライバシーエラー」が出てしまう。

んー、ま、いいか。

xkeymacs + Windows10

2018年4月8日 追記
ようやく設定プロパティダイアログの修正が入ったものがリリースされた模様。待ってました!ってなわけでここに置いてあるのは削除しました。


そろそろプロパティダイアログの修正入っているのかなぁ・・・と思って久しぶりにxkeymacsのページを覗いたけど、現状で安定しているのかsnapshotが6年前で止まってた。まぁ、Windows10でもちゃんと動いているんだし(^^;
snapshotのリリースは止まっていたけど、ソース自体は更新されていたので、最新のソースをダウンロードしてVisual Studio 2015 Community でビルドした。
ビルドする前に設定ダイアログのサイズをちょっと伸ばしてプロパティシートが切れないのようにちょっとだけ伸ばす。これは↓と同じ(^^;

Windows8.1用にxkeymacsをビルド

スクリーンテキストのサイズは100%でしか使わないのでOK。
プロパティの部分だけ(GUIの部分だけ)C# .Net Frameworkとかで書けば多分解決するんでしょうけど、いかんせん、MFCのソースは僕には皆目読めません。。。読む気ありません。。。ただでさえC++忘れかけてるのに・・・。C++ TR1ぐらいがギリついてけるが、C++11規格とかもうサッパリ・・・。Cに至ってはもうC90ぐらいでも今となってはついていけるかも怪しい。。。

ってなわけで、どこからでもダウンロードできるように、リンク貼っておこう。
Rev.8799a18のものをVisual Studio 2015 Community Editionでビルドしたやつ