Windows7(たぶん8も10も)を狭い領域でなんとか動かす方法(1

ちょっとTerrariaをお休みして・・・。

実は以前せまーい領域にWindows7をインストールすることが必要な状況になりました。
その時の知識が何かに役立つのではないかと思ってメモしておこうと思いつつしていなかったので、
ギリギリちょっと覚えているうちにメモしておこうと思いたちました。

私の事情

実はWinPCを知人に譲ってしまったために、その場しのぎでWindowsが必要になりました。
Macbookair(2012mid)がありましたので、利用することにしました。
ところがMacbookairはストレージが128GBですでに利用している部分もありますので、
使える分量最大に設定して25GBしかWindows用に割けませんでした。
15GBほどあればインストールだけならすることができます。
ところが、アップデートするとDiskがたちまちいっぱいになってしまいます。25GBでは全然足りないのです。
まさかこんなに苦労するとは・・・。
幸い外付けのSSD128GBが空いていたので、それを利用できないか考えました。
一番いいのはこの外付けSSDにWindowsをインストールすることです。
そうすればMacの環境を一切変えることなくWindowsを利用できます。

この方法はどちらかと言えばインストールというよりも
外付けディスクにインストールディスクの内容を強制コピーするような感じでした。

何度も何度も試したのですが、

Windows7 → 起動させることができず。ブルー画面
Windows8 → 起動は成功。しかしディスプレイアダプタが当たらず、ブートキャンプのドライバをあてるとブラックアウトしてしまい使い物にならない。

とまあ、こんな感じでした。
ブラックアウトも知られたことでしたが、どんな対策を施してもNG。
気になったのはインストール仕方は同じなのに、
スタート画面が出るときと、それすら出ない時、があることです。とても不安定でした。

結論としてMacbookairの2012midでは外付けディスクからのWindowsの起動は不可、ということのようでした。
2013年以降のMacであれば可能なようです。いつか試してみたいです。

外付けDISKへのインストールが無理なら・・・

いくらやっても外付けDISKへのインストール出来ず、このままでは全く仕事ができません。
そこで方針を変えることにしました。
windowsのコア部分だけをマックの25GB部分にインストールし、肥大化してしまう部分をできるだけ外付けDISKにて運用する
ということができないだろうか?と考えました。
色々検索してみると
usersやtmpやProgram Files、Program Data、アップデート用のフォルダ
を別DISKに移す方法はいくつか見つかりました。

ところが、これもなかなかうまくいかない・・・!
でも、なんとかインストールはでき、その後の数ヶ月をしのぐことができました。

そのやり方をなんとか思い出しておこうと思います

→ その2へ

wordpressでiframeを書くと表示できなくなる不具合発生

実は今日の文の記事を書き上げた。
しかしページが表示できなかった・・・。

エディタの「テキスト」はもちろん、「ビジュアル」ではちゃんとiframeの内容も表示できているのに・・・。

プレビューまたは、投稿後にページを見ようとすると、真っ白になってしまって何も見えなくなってしまうのです。

iframeが無効になるという報告あり

iframeが無効になるという報告はたくさんヒットしました。
これはiframeの中が表示しないという件のようでした。

そうではなく、一切何も表示しなくなってしまうのです。

デバッグモードを使ってみた!

iframeに限定しなければ
画面が真っ白になる!、という不具合報告は結構あるようでした。

その解決策としてデバッグモードがありました。

wp-config.php というファイルを編集します。

define('WP_DEBUG', false);
↓
define('WP_DEBUG', true);

デバッグモードでアクセスしてみると・・・

 

Deprecated: Non-static method WpFileCache::instance() should not be called statically in /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/wp-file-cache/file-cache.php on line 131

Notice: is_feed was called incorrectly. Conditional query tags do not work before the query is run. Before then, they always return false. Please see Debugging in WordPress for more information. (This message was added in version 3.1.0.) in /home/****/www/html/m-ynko.azi2.com/wp-includes/functions.php on line 4139

Fatal error: Uncaught Error: Class ‘DOMDocument’ not found in /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php:246 Stack trace: #0 /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php(154): Filter_Embedded_HTML_Objects::get_attrs(‘<iframe src=”ht…’) #1 [internal function]: Filter_Embedded_HTML_Objects::dispatch(Array) #2 /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php(93): preg_replace_callback(‘%<iframe[^>]*+>…’, Array, ‘PC\xE3\x81\xA7\xE3\x82\xB2\xE3\x83\xBC\xE3\x83\xA0\xE3…’) #3 /home/****/www/html/m-ynko.azi2.com/wp-includes/class-wp-hook.php(300): Filter_Embedded_HTML_Objects::filter(‘PC\xE3\x81\xA7\xE3\x82\xB2\xE3\x83\xBC\xE3\x83\xA0\xE3…’) #4 /home/****/www/html/m-ynko.azi2.com/wp-includes/plugin.php(203): WP_Hook->apply_filters(‘PC\xE3\x81\xA7\xE3\x82\xB2\xE3\x83\xBC\xE3\x83\xA0\xE3…’, Array) #5 /home/****/www/html/m-ynko.azi2.com/wp-includes in /home/****/www/html/m-ynko.azi2.com/wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php on line 246

出たエラーは3つです。

3つ目に、iframeがなんちゃら、って出ていますね。
更にjetpackがなんたら・・・。

もしかしてjetpackのせい??

 

jetpackを無効にすると・・・

とりあえず、jetpackを無効にしてみました・・・
するとあっさり表示しました。

原因はまだはっきりしませんが、DEBUGモード、使えますね!!

((追記))
jetpackを5.0にアップデートしたら表示可能になりました。
不具合だったのかもしれませんね!

 

さくらインターネットで開発中WEB経由でCGIが正常に動かない場合(2)

実行方法が違うとは言え、
同じサーバーであるアプリが動いたり動かなかったりするということは、
環境変数が疑わしいです。

こんなシンプルな環境変数確認スクリプトを使います。

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print <<END_HTML;
<html>
  <head><title>環境変数テスト表示</title></head>
  <body>
$ {
  foreach $key (keys %ENV) {
    print "$key : $ENV{$key}<br>\n";
  }
}
  </body>
</html>
END_HTML

 

SSHでログインしてから実行した結果です。

$ ./env.cgi

みたいにして実行します。

Content-Type: text/html
SSH_CLIENT : 182.170.182.130 54025 22<br>
HOST : www758.sakura.ne.jp<br>
REMOTEHOST : pb6aab682.tubehl00.ap.so-net.ne.jp<br>
BLOCKSIZE : K<br>
OSTYPE : FreeBSD<br>
PWD : /home/****/www/WordPress/kyokigo<br>
LANG : ja_JP.UTF-8<br>
USER : ****<br>
LC_MESSAGES : C<br>
LOGNAME : ****<br>
GROUP : users<br>
SHLVL : 2<br>
PERL5LIB : /home/****/perl5/lib/perl5:/home/****/local/lib/perl5:/home/****/local/lib/perl5/site_perl<br>
PATH : /home/****/perl5/bin:/home/****/.local/bin:/home/****/local/bin:/home/****/local/bin:/home/****/local/bin<br>
FTP_PASSIVE_MODE : YES<br>
HOSTTYPE : FreeBSD<br>
TERM : xterm<br>
SSH_TTY : /dev/pts/0<br>
PAGER : more<br>
HOME : /home/****<br>
LD_LIBRARY_PATH : /home/****/local/lib<br>
SSH_CONNECTION : 182.170.182.130 54025 59.106.19.208 22<br>
PORT_DBDIR : /home/****/local/var/db/pkg<br>
PKG_DBDIR : /home/****/local/var/db/pkg<br>
MAIL : /var/mail/****<br>
EDITOR : jvim3<br>
VENDOR : amd<br>
PERL_CPANM_OPT : --local-lib=~/perl5<br>
OLDPWD : /home/****/www/WordPress<br>
_ : ./env.cgi<br>
SHELL : /bin/csh<br>
MACHTYPE : x86_64<br>
PYTHONPATH : /home/****/local/lib/python:/home/****/local/lib/python/site-packages<br>
<html>
<head><title>環境変数テスト表示</title></head>
<body>

</body>
</html>

 

次にブラウザ経由の結果です。

SCRIPT_NAME : /kyokigo/env.cgi
SERVER_NAME : azi2.com
SERVER_ADMIN : support@sakura.ad.jp
HTTP_ACCEPT_ENCODING : gzip, deflate
HTTP_CONNECTION : keep-alive
REQUEST_METHOD : GET
HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
SCRIPT_FILENAME : /home/****/www/WordPress/kyokigo/env.cgi
SERVER_SOFTWARE : Apache/2.2.31
QUERY_STRING : 
REMOTE_PORT : 54135
HTTP_USER_AGENT : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
SERVER_PORT : 80
SERVER_SIGNATURE : 
HTTP_CACHE_CONTROL : max-age=0
HTTP_UPGRADE_INSECURE_REQUESTS : 1
HTTP_ACCEPT_LANGUAGE : ja,en-US;q=0.8,en;q=0.6
HTTP_COOKIE : tk_tc=1494519311953; tk_ai=jetpack%3AMCzZhyihuZp1GWiGp6icQbIg; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_a3334da665c02922f2d3819a4a81bc86=****%7C1498928562%7COOozksxcFZgKTYwZJgHSZ52mXcjyr88tS7s7yKBA3M2%7C563dabd3211c252e3f0c5ada0cd6da24fd73a8304b4edb2a9c6336d85a2b1392; wp-settings-1=editor%3Dtinymce%26libraryContent%3Dbrowse%26imgsize%3Dmedium; wp-settings-time-1=1498890306
REMOTE_ADDR : 182.170.182.130
SERVER_PROTOCOL : HTTP/1.1
PATH : /usr/local/bin:/usr/bin:/bin
REQUEST_URI : /kyokigo/env.cgi
GATEWAY_INTERFACE : CGI/1.1
SERVER_ADDR : 59.106.19.208
REMOTE_HOST : pb6aab682.tubehl00.ap.so-net.ne.jp
DOCUMENT_ROOT : /home/****/www
HTTP_HOST : azi2.com

かなり少なく、シンプルになっている感じがしますね。
ざっとみた感じでは
ユーザーのPATHが通ってないのと、
HOME、LANG、LD_LIBRARY_PATHがないですね。

環境変数を強引に設定する

もしかするともっと正しいやり方があるような気がしますが、
強引に環境変数を設定してしまいましょう。

$ENV というハッシュのキーを環境変数名にして設定すれば良いです。

こんな風に冒頭に入れ込みます。

$ENV{'HOME'}="/home/****";
$ENV{'LANG'}="ja_JP.UTF-8";
$ENV{'PATH'}="/home/****/perl5/bin:/home/****/local/bin";
$ENV{'LD_LIBRARY_PATH'}="/home/****/local/lib";

もう一度ブラウザ経由で実行してみます。

反映されました!

HOME : /home/****
SCRIPT_NAME : /kyokigo/env.cgi
SERVER_NAME : azi2.com
LD_LIBRARY_PATH : /home/mlin/local/lib
SERVER_ADMIN : support@sakura.ad.jp
HTTP_ACCEPT_ENCODING : gzip, deflate
HTTP_CONNECTION : keep-alive
REQUEST_METHOD : GET
HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
SCRIPT_FILENAME : /home/****/www/WordPress/kyokigo/env.cgi
SERVER_SOFTWARE : Apache/2.2.31
LANG : ja_JP.UTF-8
QUERY_STRING :
REMOTE_PORT : 54374
HTTP_USER_AGENT : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
SERVER_PORT : 80
SERVER_SIGNATURE :
HTTP_CACHE_CONTROL : max-age=0
HTTP_UPGRADE_INSECURE_REQUESTS : 1
HTTP_ACCEPT_LANGUAGE : ja,en-US;q=0.8,en;q=0.6
HTTP_COOKIE : tk_tc=1494519311953; tk_ai=jetpack%3AMCzZhyihuZp1GWiGp6icQbIg; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_a3334da665c02922f2d3819a4a81bc86=****%7C1498928562%7COOozksxcFZgKTYwZJgHSZ52mXcjyr88tS7s7yKBA3M2%7C563dabd3211c252e3f0c5ada0cd6da24fd73a8304b4edb2a9c6336d85a2b1392; wp-settings-1=editor%3Dtinymce%26libraryContent%3Dbrowse%26imgsize%3Dmedium; wp-settings-time-1=1498890306
REMOTE_ADDR : 182.170.182.130
SERVER_PROTOCOL : HTTP/1.1
PATH : /home/****/perl5/bin:/home/****/local/bin
REQUEST_URI : /kyokigo/env.cgi
GATEWAY_INTERFACE : CGI/1.1
SERVER_ADDR : 59.106.19.208
REMOTE_HOST : pb6aab682.tubehl00.ap.so-net.ne.jp
DOCUMENT_ROOT : /home/****/www
HTTP_HOST : azi2.com

これで多分うまくいくはずです!

さくらインターネットで開発中WEB経由でCGIが正常に動かない場合の検証

やっとMecab.pmが動いたと思ったのも束の間・・・

ターミナル上での実行は正常でも
CGIとしてブラウザからアクセスすると文字化けしまくる、という状況でした。

こういうときはひとつづつ潰していくのが良いと思います。

mecabの実行結果はどうなってる?

コマンドラインとブラウザ経由と吐き出す出力を比べるにはテキストファイルに出してみると良いです。

 

#!/usr/bin/perl
use strict;
use warnings;
use MeCab;
my $m = new MeCab::Tagger ("");
my $n = $m->parseToNode ("将来の話をしようじゃないか.");
my $debug;
while ($n = $n->{next}) {
    $debug .= "$n->{surface} $n->{feature} $n->{cost}\n";
}

# debug用の出力
open OUT,">/home/****/www/kyokigo/debug.txt";
print OUT $debug;
close OUT;

# HTMLの表示
print "Content-type: text/html\n\n";
print "<html lang=\"ja\">\n";
print "<head>\n";
print " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
print " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.
0, maximum-scale=1.0, user-scalable=0\">\n";
print " <meta http-equiv=\"Pragma\" content=\"no-cache\" />\n";
print " <meta http-equiv=\"cache-control\" content=\"no-cache\" />\n";
print " <meta http-equiv=\"expires\" content=\"0\" />\n";
print " <link rel=\"apple-touch-icon-precomposed\" href=\"\" />\n";
print " <title>TEST</title>\n";
print "</head>\n";
print "<body>\n";
print "Ready.\n";
print "</body>\n";
print "</html>\n";

 

CGIとしても動かすために、後半にはシンプルなHTMLを書いています
(Ready.と表示するだけ)
出力結果を$debugに代入して、
ファイルをフルパスで指定して書き込んでいます。

 

ターミナルで実行した場合はこのような結果になりました。

将来 名詞,副詞可能,*,*,*,*,将来,ショウライ,ショーライ,, 3644
の 助詞,連体化,*,*,*,*,の,ノ,ノ,, 4286
話 名詞,サ変接続,*,*,*,*,話,ハナシ,ハナシ,, 7266
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ,, 6790
しよ 動詞,自立,*,*,サ変・スル,未然ウ接続,する,シヨ,シヨ,, 9169
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ,, 7777
じゃ 助詞,副助詞,*,*,*,*,じゃ,ジャ,ジャ,, 10731
ない 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ,, 11857
か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ,, 11413
. 記号,句点,*,*,*,*,.,.,.,, 8953
 BOS/EOS,*,*,*,*,*,*,*,* 8351

 

しかし、CGIとして実行した場合はこのような出力となりました。

絨 ?詞,一般,*,*,*,*,* 11143
来 禝?罨一般,*,*,*,*,* 14562
・ ?詞,一般,*,*,*,*,* 25298
・ ?詞,サ変接続,*,*,*,*,* 42326
をしようじゃ 禝?罨一般,*,*,*,*,* 45723
・ ?詞,固有名詞,組織,*,*,*,* 57685
か. 記号,一般,*,*,*,*,* 61031
 BOS/EOS,*,*,*,*,*,*,*,* 59294

 

結果が全然違います!
これは実行方法によって結果が変化してしまうことを示しています。

次回はもう少し確認してみましょう。