gvim(+kaoriya) + WSL

ちょっと躓いたので、備忘録。

gvim(+Kaoriya)で特に何も設定しないと、シェルは cmd.exe が使われますよね。8.1から:terminalが使えるようになったので、とりあえず %USERPROFILE%\_gvimrc に 以下の記述をつけてシェルをWSLのbashにしました・・・。

set shell=C:\WINDOWS\System32\bash.exe

一瞬だけ自己満に浸ってしまいましたが・・・コマンドラインモードで次を実行すると・・・

:r !date

テンポラリファイルがオープンできない旨のエラーが出て撃沈。

困ったときのグーグル先生で検索するも探し方が悪いのか解決できない。基本に立ち戻り、vimのヘルプを参照(^^; ( :help options )

shell を変更する場合は、shellcmdflag,shellquote,shellxquote等も変更してね・・・ということらしい。
はじめからこちらを見てれば問題なかった・・・。
ヘルプのとおりに以下のように設定すると、問題なくでけた!

set shell=C:\WINDOWS\System32\bash.exe
set shellcmdflag=-c
set shellquote=\"
set shellxescape=
set shellxquote=

※修正:shellxquoteを空にすると perl のファイルを開く時に ftplugin/perl.vim で標準入力待ちになって帰ってこなくなったので、よくわからないけど 引用符をいれたらなんか治った・・・よくわからん。まぁいいや。
※修正の修正:shellxquoteを設定したら今度は !command が動かなくなった・・・ということで戻す・・・。該当ファイル(ftplugin/perl.vim)を見たら perlpath = system('perl -e "join ....");の部分で perlpath を設定しているみたいなので、仕方ないので _gvimrc に let g:perlpath = “ほにゃららら” とかでお茶を濁して切り抜けた。

紆余曲折がありましたが・・・:terminal のおかげで、なかなかスマートに事を為しとげることができ、いとをかし。。。

スクリプトをせっせと書きつつ、コード片を スクリプトに流し込み、動作確認、CTRL-W N で端末ノーマルモードに移行しコピって、スクリプトにペーストとかもうキーボードから手を放さず全部できちゃう!

今までのようにコンソール画面をマウスでチマチマ選択しながらコピペ・・・とかもうおさらばさ!もうWindowsはダサいとか言わせないぜ!・・・・とかいいつつ、使ってるツール、環境は全部Linux由来なんだけど・・・(^^;;; WSLのおかげで、gvimの端末からフツーのWindowsアプリも起動できるし、いうことなし。\(^o^)/。

ただ、一点惜しむらくは、:term command とすると、当然環境変数PATHからcommandを探そうとします。これを WSL の中で行わせるには、:term bash -c command とかやらないと無理っぽい。この “bash -c “っていうのはイチイチ打つのはメンドイ。しかし、初心者のおいらにはこれまた解決方法が分からず、一向に初心者からなかなか抜け出せないな・・・。

:continue
つづきは part2で

開発環境見直し 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環境をセットアップできるようしています。
そのスクリプトは、こっち。

Microsoft Edge がまともに設定できない件

2016年5月12日
解決できました。。。


Windows7からWindows10にアップグレードしたパソコン。アカウントのタイプはローカルアカウント。
プライバシー設定をデフォルトからガシガシ変えたせいなのかどうか分かりませんが、Edgeが思うようにならない。

1つ目。
Edgeで既定の検索エンジンをGoogleに変えようと、ちゃんと手順に従って変えようとしたんですが、下記のようなメッセージが出て設定できない!!!
edge-settings
ちゃんと後でやり直したけど、同じだった。。。

2つ目
Windows7 + IE11で正常に動作していたスクリプトがエラーになってしまった。window.localStorageにアクセスすると、問答無用でエラーになってしまう。。。分からないのは、inPrivateタブで開くとちゃんと動くところ・・・。なんで??? ちなみにWindows10に残っている Internet Explorer 11では正常に動く。
edge-debug
※注記) window[storage] っていうところは、window[‘localStorage’]と読みかえてね・・・

たぶんなんかの設定が引っかかっているせいだと思うんですが・・・ググっても解決方法どころか、同じような現象が検索にほとんど引っかからない。

不思議なことですが、おなじWindows10でも Surface3で稼働しているWindows10は、上記2つの現象は出ていない。設定もほとんど同じにしているはずなんですが・・・。違うところは、Surface3はマイクロソフトアカウントで運用している事ぐらい。

もしかして、ローカルアカウントで運用しているのがダメなのかな~? う~む・・・(ーー;;;

まぁ、Microsoft Edge は常用しないのでさしあたって実害は無いのですが・・・何の設定が抜けているんだろうか・・・???

そして、OneNoteは起動しなくなった・・・

標準でついてる、ストア版のアプリの方の話です。

つい、1週間前までは、Surface3 + Windows10 は機嫌良く動作していたのですが、この間からOneDrive上にある特定のノートと同期が全くされないようになりまして・・・。デスクトップ版のOneNote 2013は正常に使える。

なんだかんだ、しているうちに、タブレットモードでOneNoteをタップすると、延々とサインインに問題が発生しました、とかなんとかのメッセージが出て何もできなくなった(゚Д゚)
どうにもこうにもならなかったので、グーグル先生に問い合わせると、Powershellから一度OneNoteをアンインストールし、アプリストアから再度インストールすれば良い、という情報を得て、試してみました。

上手くいきました。。。のも、束の間、今度はOneNoteのアイコンをタップしても、全く反応なし。今度はメッセージもでません。再度アンインストールしてインストールしても一緒。

解決方法を探すと、一度のそのアカウントを削除して新たにアカウントを作れと・・・こんなん解決方法じゃねーよ。

仕方ないので、もうバンドルされているストア版のOneNoteを使うのを諦め、デスクトップ版のOneNote2013を使うことにした。

あーーーーー、もうなんかイライラする! Windows10アプリは完全に使えない。

さらにイライラするのが、バンドルされている動画プレーヤー。一時停止して、しばらくして再開させると100%落ちてしまう。なんじゃこりゃ。

Windows10アプリに、少しでも期待した、おいらがバカだった(゚Д゚)

タブレット的な使い方をしたい人はSurface3 + Windows10 の組み合わせは不幸になりますので、絶対止めましょう。素直にiPadで幸せになりましょう(笑)Office Mobileがタダで使えますしね。

Surface3 + Windows10

若干加筆。


先週、Windows10に早速アップグレードしました。僕的にはいい感じです。Windows8.1に感じた不満点がゴッソリなくなってます。

Windows10・・・というわけではないのですが、Surface3での気になって眠れない点。

  1. スリープから復帰すると、たまにスクリーンキーボードがどうやっても出てこない時がある。結果ログインもできず途方にくれる。
  2. スリープから復帰すると、高確率でMicroSDカードが認識せず、エクスプローラが固まる。カードを抜き差しすると正常に認識されるが、その後の挙動がめっちゃ不安定になる。メモリカードが粗悪なのかも。でもトランセンドだし・・・。
  3. スリープから復帰するとたまに全体的にモッサリになって再起動を余儀なくされることがある。
  4. Windows10にアップグレードしたらOnenoteの機能がなんか貧弱になった?Windows8.1のときはペンの太さとかもっと柔軟に選べたと思うんだけど・・・気のせい?ペンのUIが変わってちょっとガッカリ。
  5. デフォルトの動画閲覧アプリがとにかく使いにくい。
  6. サーフェスペンの利き手の設定はどこでやればいいの?
    bluetoothデバイスからSurfaceペンを削除したら設定に出てきました。ん?
  7. US配列版のタイプカバーを使って、ドライバをAX配列のものにして半角・全角トグルを右ALTに割り当てたんだけど・・・無視されるようになった。もうこの方法は駄目なの?
  8. Microsoft Edgeで、全画面表示はないの? タブ切替はWindows8.1の時の方がよかったなー。
  9. 解像度を150%にすると、フォントがモヤっとするのはなんでや?
  10. 「映画&テレビ」と表示されているアプリで、動画ファイルが入っているフォルダーを追加したが、一向に現れない。5分ほどあーでもない、こーでもない、としてたら突然現れた。
    しかも、後からその追加したフォルダに動画ファイルを追加しても全く更新されず一覧に出てこない。なんじゃこれ? 純正のアプリが「ふざけてんのか?」レベル。こんなアプリ作ったやつはとっととクビにしてくれ、レベル。
  11. 今更だが、ストアアプリに「使える」アプリが一つもない。っていうか、Officeアプリぐらいしか使えるものがない上、有料ときた。マイクロソフトが率先してアプリをガンガン作ってラインナップをそろえるべきじゃないのか? いくら開発者に作れ、作れ、と開発ツールを無料にしても、だめでしょ? やり方が違うでしょ? 作ってほしいのなら、まず、自分らが率先して使えるアプリを作らんかい!
  12. その他、眠れなくなる点は随時追加予定。。。

総じてSurface3+Windows10は、パソコンとして使う分には良い組み合わせだと思います。Windows7からのアップグレードならば、納得いくと思います。

ですが、Windows8/8.1を使い込んでいる人は暫く待った方がいいと思います。

そもそも

  1. ウェブ閲覧
  2. 動画の視聴
  3. テキストエディタでの編集作業
  4. スクリプト実行環境
  5. TeraTermの利用

の5つをどこでも出来るようにと、買ったSurface3ですが・・・スリープ復帰時の不安定さが気になって、夜も眠れません(..;)  ま、再起動すりゃ直るので、ま、いいか。

Windows10をしばらく触ってみて、・・Windowsって、こんな難しいOSだったのかな・・・と思った。とにかく、知らないと何もできない。調べないと使えない。調べるツールとして、左下にデカデカと検索ボックスはあるが、何を入れていいのかわからない。何か入れると「問題が発生しました」となる。なんじゃこれ?

長年Windowsを使ってきたけど、そろそろWindowsを使うのやめようかな。。。と一瞬思った。