Windows10からVPN接続できないときに、MacOSからブリッジ接続する。

こんにちは。あゆたやです。このブログ2年ぶりだけど挨拶も早々に本題に行くね!

MacOSユーザーで固められた環境のVPNサーバーへ接続する際に、接続設定は正しくてもWindows10からつながらない事がありました…。
とても困った。

んで。

家には先代の仕事用PCであるMacBook Air(Mid 2012)があります。
退役後はCubaseを入れて趣味方面で活躍中なのですが、そちらで試すとすんなりとつながるのです。

というわけで、Windows10→MacOSでブリッジ接続をします。
今回は、Bluetooth経由で接続するよ。

使うもの:

  • BluetoothのついたWindows10マシン(ぎりぎり未Creators Update)
  • BluetoothのついたMacOSマシン(現行最新のMacOS v10.11.6にちゃんとアップデートしてあった)
  • ネットワーク構築済みルーター

下ごしらえ:

  1. MacOSマシンは、別途無線なり有線なりでルーターに接続し、インターネットが使用できる状態にしておく。
    システム環境設定>ネットワークからVPN接続設定を作成し、MacOS単体では正しく接続できるかを確認して、一旦接続解除しておく。
  2. Windowsマシンは、自力でルーターに接続出来ないように有線・無線をオフ。
  3. スムーズに接続するため、可能であれば両マシン共にBluetoothを一旦オフにしておく。
    (やらなくてもつながるだろうけど念のため)

MacOSでの操作:

  1. システム環境設定>共有から、「インターネット共有」のチェックをつける前に設定を変更する
  2. 共有する接続経路はVPN接続名を選択
  3. 相手のコンピュータでのポートは「Bluetooth PAN」
    ちなみにPANはPrivate Area Networkの略。
  4. 「インターネット共有」にチェックを入れる。
  5. 設定を保存して、システム環境設定>Bluetooth からBluetoothをONにする。

Windowsでの操作:

  1. スタートメニュー>設定>デバイス>Bluetooth で、BluetoothをON
  2. 接続対象にMacOSのマシン名が出るので、ペアリングを行う。
  3. スタートメニュー>設定>デバイス>Bluetoothのウィンドウ左メニュー上にある検索ボックスに「デバイスとプリンター」と入力
  4. デバイスとプリンターの画面を開き、MacOSマシンのアイコンで右クリック、接続方法>アドホックネットワーク
  5. これで、Windows→MacOSへのブリッジが完成。
  6. IPアドレスが取れているか等を確認する

MacOSでの操作:

VPN接続をONにする

Windowsでの操作:

VPN接続が必要な操作が問題なく行えるか確認して終了。

感想

すんなりつながればこんな事しなくていいんだけれども、
Web製作でWindows使ってますっていうと肩身が狭いね…(個人の感想です)

Passenger+ApacheのRedmineで、ファイルサイズが大きくなると添付できない対策

状況

  • Redmineの設定パネルから添付ファイルのアップロード上限サイズを設定しても、反映されない。
  • スクリーンショットなど5MB未満のファイルはアップロードできる。
    (そのためアップロード処理/パーミッションには問題がない)

原因

Apacheにmod_security入れてて、デフォルトのリクエスト上限が5MB程度だった。

例)/etc/httpd/conf.d/mod_security.conf

<IfModule mod_security2.c>

..略..
#SecRequestBodyLimit 5242880 #5MBを

SecRequestBodyLimit 52428800 #50MBに

..略..

</IfModule>

バーチャルホスト設定内で上書き定義できるので、
Redmineをサブドメイン運用しておけばよかったと反省するなど。

LiveReloadの便利さを手軽に非Gruntプロジェクトでも使う方法

Grunt+LiveReloadが便利なのだけど、サーバサイドがメインのもので、
concat/cssmin/jsmin/htmlminしないのにGrunt watchするのめんどくさいですね?

と思ったら公式のReload発火アプリケーションがありました。

http://livereload.com/

LiveReload.com
LiveReload.com

2014/7/22現在WindowsはAlpha版なので無料ですが、Mac用は$9.99なんですね…。

ともかくインストーラを手に入れて実行。

リロードの設定をする

にょろにょろとインストール実行後、

LiveReload
+addから監視したいディレクトリを指定するだけ。

例えばVagrantで共有してるhtdocsディレクトリとか。

後は、Google ChromeでリロードしたいURLを開いてから、
Gruntと連携するときにも使っていたGoogle Chrome用LiveReloadプラグインをONにすると、
指定したディレクトリ内のファイルが上書きされたタイミングでリロードされます。

試したのはWindows(v0.9.2.0 – Alpha)版なので、ディレクトリとリロードするURLの関連などは設定できないようですね。

PHP5.4.30 + MySQL5.6.19で文字化けに対応。

ちなみに、PHPからは以下のようにつないでいます。

// PDO接続(PHP 5.3.6以降だとcharsetが使えます
$dsn="mysql:dbname=%s;host=%s;charset=utf8";

文字化けする環境と、/etc/my.cnfに対応したもの

$ cat /etc/redhat-release
CentOS release 6.5 (Final)

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.19, for Linux (x86_64) using  EditLine wrapper

$ php -v
PHP 5.4.30 (cli) (built: Jun 25 2014 15:27:51)

$ yum list installed | grep mysql
mysql-community-client.x86_64        5.6.19-2.el6    @mysql56-community
mysql-community-common.x86_64        5.6.19-2.el6    @mysql56-community
mysql-community-devel.x86_64         5.6.19-2.el6    @mysql56-community
mysql-community-libs.x86_64          5.6.19-2.el6    @mysql56-community
mysql-community-server.x86_64        5.6.19-2.el6    @mysql56-community

$ find / -name libmysql*
/usr/lib64/mysql/libmysqlclient_r.so.18.1.0
/usr/lib64/mysql/libmysqlclient_r.a
/usr/lib64/mysql/libmysqlclient_r.so
/usr/lib64/mysql/libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.a
/usr/lib64/mysql/libmysqlclient_r.so.18
/usr/lib64/mysql/libmysqlservices.a
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so.18.1.0

$ php -r "phpinfo();" | grep "PDO"
PDO
PDO support => enabled
PDO drivers => mysql, sqlite
PDO Driver for MySQL, client library version => 5.6.19
PDO Driver for SQLite 3.x => enabled

こっちでは

# /etc/my.cnfの文字コード
character-set-server=utf8
skip-character-set-client-handshake #超だいじ

普通に文字化けしない環境の設定情報

$ cat /etc/redhat-release
CentOS release 6.5 (Final)

$ mysql --version
mysql Ver 14.14 Distrib 5.6.12, for Linux (x86_64) using EditLine wrapper

$ php -v
PHP 5.4.29 (cli) (built: Jun 5 2014 16:07:48)

$ yum list installed | grep mysql
mysql-libs.x86_64 5.5.32-1.el6.remi @remi
php-mysql.x86_64 5.4.29-3.el6.remi @remi

$ find / -name libmysql*
/usr/lib64/libmysqlclient_r.so.12
/usr/lib64/libmysqlclient_r.so.18.0.0
/usr/lib64/mysql/libmysqlclient_r.a
/usr/lib64/mysql/libmysqlservices.a
/usr/lib64/mysql/libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.a
/usr/lib64/mysql/libmysqlclient.so.18.0.0
/usr/lib64/libmysqlclient.so.16
/usr/lib64/libmysqlclient.so
/usr/lib64/libmysqlclient.so.15.0.0
/usr/lib64/libmysqlclient_r.so.15
/usr/lib64/libmysqlclient_r.so.14
/usr/lib64/libmysqlclient_r.so.14.0.0
/usr/lib64/libmysqlclient_r.so.16.0.0
/usr/lib64/libmysqlclient.so.15
/usr/lib64/libmysqlclient_r.so.18
/usr/lib64/libmysqlclient_r.so
/usr/lib64/libmysqlclient.so.16.0.0
/usr/lib64/libmysqlclient_r.so.16
/usr/lib64/libmysqlclient.so.14.0.0
/usr/lib64/libmysqlclient.so.18
/usr/lib64/libmysqlclient_r.so.15.0.0
/usr/lib64/libmysqlclient.so.14
/usr/lib64/libmysqlclient.so.12.0.0
/usr/lib64/libmysqlclient.so.18.0.0
/usr/lib64/libmysqlclient_r.so.12.0.0
/usr/lib64/libmysqlclient.so.12

$ php -r "phpinfo();" | grep "PDO"
PDO
PDO support => enabled
PDO drivers => mysql, sqlite
PDO Driver for MySQL => enabled
PDO Driver for SQLite 3.x => enabled

PDO Driver for MySQL => enabled…? でも動いているんですよねー…。 ↓ ↓ ↓

# /etc/my.cnfの文字コード
character-set-server = utf8

ちなみに、両方ともMySQL Workbenchやコマンドラインから見るとこうなんだけど
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
文字化けするほうをPHP通して出力すると以下のようになってました。
character_set_client | <strong>latin1</strong>
character_set_connection | <strong>latin1</strong>
character_set_database | utf8
character_set_filesystem | binary
character_set_results | <strong>latin1</strong>
character_set_server | utf8
character_set_system | utf8
character_sets_dir | /usr/share/mysql/charsets/

//化けた文字をmb_detect_encodingしたもの
index.php#37string(8) "SJIS-win"

インストールしたときにシステムのタイムゾーンUTCだったのとかが関係あるのだろうか。
(途中から/usr/share/zoneinfo/Japanや、/usr/share/zoneinfo/Asia/Tokyoに変更したりした)

やれやれだぜ。

Windows8.1でMacbook Air(だけじゃないかも)が熱暴走する件

状態

ひどいときは起動直後イベントビューアを見ようとしている間に死んでいる。
本体ファンが全力で回っている。
起動中のアプリケーションは終了できるのに、新しく起動はできない。
壁紙真っ白になる。
S.M.A.R.TによるとSSDが60度近くになっていた。(でもこれは部品近いしね)
電源以外のデバイスがつながっていてもいなくてもなる。
Wifiがオフラインかどうかも関係なし。

入力を受け付けないので、電源ボタンを長押しするよりほかに方法がありません。

※ちなみにセーフモードも試したかったけどうまく起動してくれなくて積んでました。

確認事項

Windows7→Windows8アップグレード版→8.1
Bootcampはv5.0

かろうじて電プチ前のログをたどれた時に、システムログで警告が出ていました。

デバイス ACPI\ACPI0008\4&178f8e12&0 のドライバー \Driver\WudfRd を読み込めませんでした。

対処

http://y188ra.blogspot.jp/2013/11/driverwudfrd.html

こちらを参考にサービスの設定を変更します。

Windows Driver Foundation - User-mode Driver Frameworkを探す
Windows Driver Foundation – User-mode Driver Frameworkを探す
手動(イベント起動)から「自動」に変更
手動(イベント起動)から「自動」に変更

これだけ。

二度見するぐらいこれだけ。

なお、設定変更のOKボタンを押すまでに2回症状が出て電プチしてます。
プチると内蔵ファンも止まり熱が逃げないので、リトライの際には良く冷ましてから挑むことです。

メモ

Windows8→8.1にアップデート失敗、リトライで成功した直後に、デバイスドライバ周りのトラブルが頻発しました。
でもって、この設定を行って安定していました。

いつ設定値が変わった(戻っていた)のか謎です。
うっかり復元でもしたのか、少し前のアップデート時に勝手に変更され、一時期安定してただけなのでしょうか…。

心当たりといえば、前日くらいに間違って休止状態にしたような…(未検証です

ちなみに、8.1にした直後にはこんなのもありました。