WordPressサーバの引っ越し。ロリポップからエックスサーバーに移転してみた

ロリポップにあるWordPressをエックスサーバーに移行しました。

ドメイン名も変更しました。

  • 旧ドメイン:XXX.com
  • 新ドメイン:YYY.xsrv.jp/ZZZ

下位ディレクトリにするなんてちょっと特殊かもしれませんが、ともかく変更することになりました。

準備

WordPressは、原稿や画像などの「ファイル」と、連携しているデータベースの中身(のデータ)から成り立っているので両方とも移動させる必要があります。

しかし、ファイルの移動とデータベースの中身の移動は同時にはできないので別々に行いました。

WordPressのファイルの移動

旧サーバのファイル → FTPソフトを使ってダウンロード→
wp-config.phpを修正してから(後述)新サーバにアップロード

FTPソフトは、FireFoxのプラグインであるFireFTPを使いました。

WordPressが使っているデータベースの中身の移動

旧サーバのデータベース → 旧サーバにあるphpMyAdminを使ってエクスポート → 新サーバにあるphpMyAdminを使ってインポート

phpMyAdminは旧サーバのロリポップにも新サーバのエックスサーバーにも用意されています。

まずは旧サーバで作業

データをバックアップ

下位のデータも全部コピーする

旧サーバのWordPressが入っているフォルダの中身をFTPソフトを使って全部ローカルにコピーします。けっこう時間がかかりました。

データベースをエクスポート

旧サーバ(ロリポップ)が提供しているphpMyAdminを利用して行います。

phpMyAdminを開く

ロリポップにログインして、移動するWordPressが使っているデータベースを選択してからphpMyAdminを開きます。

データベースを選択

データベースを開く

控えていたデータを入力

左側からデータベース名を選択すると、右側にテーブル名が表示されます。

データベースを選んでエクスポート

上のメニューから「エクスポート」を選びます。

エクスポートを選ぶ

エクスポートの方法は「詳細」で行いました。

詳細を選択する

全選択になってるのを確認してから、生成オプションでは「DROP TABLE / VIEW / PROCEDURE / FUNCTIONコマンドを追加する」をチェックをします。

チェックを追加する

あとはデフォルトのままで「実行」します。

実行ボタン

エクスポートが完了すると「AAAA.sql」(AAAAはファイル名)のファイルがダウンロードされます。

新サーバで作業

データベースを作成する

ロリポップからダウンロードしたデータベースのデータを新サーバにインポートするために、新サーバにデータベースを作っておきます。

エックスサーバーは、サーバーパネルでログインして、データベース項目のMySQL設定から「MySQL追加」を選んで作成しました。

データベースの作成

MySQLユーザも作りました。

MySQLユーザを作成

これから必要な情報は、データベース、MySQLユーザID、パスワード、それにMySQLの一覧の下に表示されるMySQL5.7 ホスト名なのでメモしておきます。

データを入れるフォルダを作る

FTPソフトで移動するWordPressのデータを入れるフォルダを作りました。今回は「YYY.xsrv.jp/ZZZ」なので

YYY.xsrv.jp/public_htmlの下に「ZZZ」を作りました。

YYY.xsrv.jp/public_html/ZZZ

こうすると

http://YYY.xsrv.jp/ZZZ

でページが表示されます。

アップロードインポートの前にwp-config.phpを修正します

wp-config.phpの書き換える部分

.htaccessも書き換えます

新サーバのディレクトリはルートディレクトリではなく、サブディレクトリ(YYY.xsrv.jp/ZZZ)にインストールされているので、.htaccessを書き換えてZZZを指すようにしました。

.htaccessを書き換える

新サーバにアップロード(ファイル)

FireFTPを使って「YYY.xserv.jp/ZZZ」にアップしました。

新サーバにインポート(データベース)

サーバーパネルからデータベースの「phpmyadmin(MySQL5.7)をクリックして、ユーザ名とパスワードを入れてログインします。

左側から作成したデータベースを選びます。

データベース名を選ぶ

右上のタブから「インポート」を選択。 

インポートを選択

「ファイルの選択」から先ほどダウンロードしたファイル.sqlを選んで「実行」します。

ファイルを選んで実行

データベースの中のURLを書き換える

インポートしたデータベースの中には前のドメインが残っているので表示されないか前のサイトに飛んでしまいます。

searchreplacedb2.phpのダウンロード

searchreplacedb2.phpを使ってこれを自動的に書き換えることにしました。

このサイトが提供しているphpファイルを使うのですが、最新のバージョンは面倒そうなので、古いバージョンを使うことにしました。

上のサイトの下のほうから古いバージョン(v 2.1.0)をダウンロードします。

古いバージョンをダウンロード

ダウンロードしたsearchreplacedb2.phpを新サーバのWordPressのフォルダにアップロードします。同じ名前だと誰でもアクセスできてしまうので、xxx-searchreplacedb2.phpとリネームしました(ほとんど意味をなしませんが)。

searchreplacedb2.phpを実行

ブラウザから「xxx-searchreplacedb2.php」を実行します。

xxx-searchreplacedb2.phpを実行

Submiteで次に進む

そのまま「Submit」で次に進むとデータベースの情報が出るので確認して「Submit DB details」に進みます。

次に進む

書き換えられるテーブルが表示されているので、全部選択されているのを確認して「Continue」します。

書き換えられるテーブルを確認

旧ドメイン(XXX.com)と新ドメイン(YYY.xsrv.jp/ZZZ)を入力しました。

新旧ドメインを入力

これで「Submit Search string」をクリックすればデータベースの中身が新ドメインに書き換えられます。

これでWordPressの移管が終わりました。

けっこう手順が多かった。

マニラで買ったGlobe Traveler SIM

マニラで買ったGlobe Traveler SIM

フィリピンのマニラの空港で買ったSIMです。
フィリピンでは、smart, globe, sunが大手のキャリアだそうですが、その中でどれがいちばn良いのか、Webで調べてもそれほど情報が多くないので、はっきりしません。
で、適当に選んだのがglobeのTraveler SIM。プリペイドSIMカードです。

cebu-lsim

3週間滞在すると告げると30日間有効なタイプ(容量5GB)を勧められました。料金は、パッケージに表示されているとおり1,000ペソ(約2,600円)。

大部分をセブ島で過ごしたので他の地域は分かりませんが、
ほとんどLETにつながっていたようです。

ときには、遅くなったり、「?」となることもありましたが、実用上問題なく使えました。

フィリピン(や東南アジア)の通信事情は日々変化しているので、すぐにこの情報も古くなるかもしれません。

Affinity Designer:レイヤー間の移動

買ったままほとんど使わなかったAffinity Designerを、少し使う機会がありました。簡単なことくらいさっさと使えるようになりたいと思っています。

とりあえず、オブジェクトを別のレイヤーに移動する方法です。

たんにオブジェクトのサブレイヤーを選択して別のレイヤーに移動すればいいんですね。

スクリーンショット 2015-09-25 10.53.12

これとは別にカットアンドペーストで移動できる方法もありました。

オブジェクトをカットして、貼り付けたいレイヤーを選択してペーストするだけ、元のオブジェクトのあった位置(で目的のレイヤー)にペーストされました。これは簡単。

Emacs Listpのsort-regexp-fields

Emacsで以下のような行を、先頭のアスタリスクを無視してソートできないかな、と思って探したらsort-regexp-fieldsが見つかりました。

**ccc zzz
aaa yyy
*bbb xxx

のような行を、

aaa yyy
*bbb xxx
**ccc zzz

のようにソートしたいわけです。

使い方は、こんな感じ(Emacsの画面上で、リージョンを指定して実行する場合)。

(sort-regexp-fields nil "正規表現"
                     (region-beginning)
                     (region-end))

わたしの場合は、rubyなんかの普通の?正規表現で書くと

/^\**\s*(\w+).*$/

でマッチした$1の部分でソートすることになります。Emacs Lispの文字列で表す場合は、

"^\\** *\(\\w+\).*$"

になりました。()の中を表すのは”\1″です。

というわけで、

(defun sort-alpha ()
  (interactive)
  (sort-regexp-fields nil "^\\** *\\(\\w+\\).*$" "\\1"
                      (region-beginning)
                      (region-end)))

というのを作ってみました。「nil」の部分をマイナスの数字「-1」にすると逆順にソートされます。

ちなみに「^ 〜 $」として行頭から行末まで全部マッチさせているのが大事なようです。
たとえば、

...
  (sort-regexp-fields nil "\\(\\w+\\)$" "\\1"
...

のように一部分だけ指定して以下をソートすると

ソート前

aaa yyy
bbb xxx
**ccc zzz

ソート後

aaa xxx
bbb yyy
**ccc zzz

のように2カラム目だけがソートされて行の要素がバラバラになってしまいます。

バンコクの歯科に行ってみた—その後

前回紹介した歯科医の予約は取り消しました。

初回の診断ではクリーニングして様子をみたほうが良さそうとのことだったのでクリーニングの担当医を予約して2回めの診察に行きました。

するとこんどは根管治療をしたほうが良さそうに変更。腫れているところから白く細い何かを入れて再びレントゲン撮影。おそら腫れの元を探すために入れたのだと思うのですが、レントゲンにはうまく写っていないみたいなんです。なのにそれを撮り直すわけでもなく根管治療の予約をしますか?ということになってしまいました。

まぁ、自分でも根管治療かもしれないと思っていたので予約を入れたのですが、なんとなく腑に落ちないんですよね。治療によって担当医が替わるのはいいのですが、最初の所見が共有されているんだか、いないんだか分かりません。

なんとなく各自がゆるゆるという感じなので(タイらしいんでしょうが)、日本に行く予定もあったので、今後の予約をキャンセルしてしまいました。

日本でかかりつけだった歯科医(ふつうの保険医です)に相談して2枚レントゲンを撮ってたところ、「(根管治療をするといった)歯の根本には異常は見られない、むしろその隣の歯に少し歯周病になっているかもしれないし、もしかしたら隣の歯にヒビが入っているのかもしれない。いずれにしても様子をみてからでもいいだろう」という意見をもらいました。

結局、スケーリングとクリーニングしてもらって終了。

腫れているところはそのままですが、痛みもないし、しばらく放置することにします。

ほんとうはどうなんでしょうか。数カ月後には分かるかもしれません。

バンコクの歯科に行ってみた

行った歯医者はBIDC(Bangkok International Dental Center)です。なんとも大きく出た感じの名前です。7階だてのビル全部が歯科医院になっています。といっても、各フロアの面積はさほど大きくないので、写真の印象ほどではありせんが、それでも日本の歯科とくらべると巨大です。

IMG_9656

ここ3週間くらい前に歯ぐきが腫れてしまい、デンタルフロスを使ったり、歯間ブラシを使ったりまめにチェックしていたのですが、2週間くらい前に腫れた先にぷくっと白いものができてしまいました。

これはもう歯の根や歯ぐきの中に何かができて、白い所が出口になっているに違いありません。ブラッシングくらいでは治らなそうです。そもそも、この歯は5年前に激痛のあげく鏡でみても分かるくらい腫れてしまたった部分です。もう歯科に行くしかありません。

バンコクには日本語で通じる歯科医院も複数あるし、日本ほどではないかもしれませんが町中にも多くの歯科があります。どこがいいのか、実際のところは分かりません。担当の医師によっても対応が違うでしょうし。

そんなわけで、Webサイトに表示されている価格と写真でとりあえずBIDCに決めなした。初回は診断と治療方針の提示なので、気に入らなければそこで中断すればいいだけです。

Webサイトのフォームから問い合わせると、1時間くらいで返信が来ました。提案された診療時間がオッケーだったので、返信。メールでの予約は2日後以降で、急ぎの場合は電話での予約が必要です。
Webサイトには日本語のページもありますが、使えるのはタイ語と英語だけでしょう。私は英語で送りました。

当日、病院の入り口を入ると受付があってテキパキと診察券などを発行してくれます。登録にはパスポートが必要です(私はタイの運転免許証を提出しました)。

その後、ナースに血圧と体重を測ってもらい、アレルギーや既往症などの確認後、3階の別受付に行きました。ここから各ドクターに呼ばれるのを待ちました。患者は主に白人のようです。

診察室は個室で、モニタのある机と診療台があります。日本の保険医なら、この部屋だけで診療台が3台はおけそうです。

簡単に症状を説明したら、診察台で患部を確認。その後4階でレントゲンを2枚撮影して戻ると、机の上のモニタにレントゲンの画像がでっかく表示されていました。

歯の状態と治療の方針について説明を受けました。わたしの場合は根には異常がなさそうなので、まずクラウンの周りを掃除してみて、それでダメなら根管治療をしましょう、ということになりました。クラウン周りの掃除の治療費は3000バーツだそうです。

治療を受けることにしたので、次回の予約をして初回の診察は終わり。同じ階の受付に戻って今回の診療代(部分レントゲン2枚:400バーツ、ナーシング料:150バーツ)を支払って、病院をあとにしました。

Android StudioのEmacsキーマップのundo

MacにAndroid Studioを再インストールしてキーマップをEmacsに設定したところ Control + Shift + _ でUndoが効きませんでした。

Add Keyboard Shortcut画面を開いて Control + Shift + _ と入力してみると、画面には

0608a

のように、3種類が表示されてしまいました。なぜか _ が – になっています。キーマップが間違っているのでしょうか。もとのEmacsに戻したら、こんどは

0608b

になってしまいました。でも Control + Shift + _ でundoできる、と思ったら再起動後は Control + Shift + – じゃないとundoできなくなるし。

再インストールするまでは有効だったのですが何ででしょうね。とりあえず ⌘Z でも設定しておこうかな。

Mac「このアプリケーションで開く」が遅くなった

Finderからファイルを選択して「このアプリケーションで開く」の表示に時間がかかるようになってしまいました。
毎回のように「取得中…」が表示されてしまいます。しばらくすると一覧が表示されるのですが、この待ち時間だとストレスがたまるのは間違いありません。

0501

解決策ははっきりしませんが、とりあえずLaunchServicesデータベースをリセットしてみることにしました。
「このアプリケーションで開く」で表示されるアプリケーション名が重複したりするときの解決法ですが、試してみることにしました。

方法はターミナルから以下の長い1行のコマンドを入力するだけ。

/System/Library/Frameworks/CoreServices.framework/Frameworks/
LaunchServices.framework/Support/lsregister -kill -r -domain local
-domain system -domain user

そしたらFinderを再起動。

killall Finder

わたしの場合はXtraFinderを使っているので、それも起動しました。
とりあえずこれで、「取得中…」は表示されなくなりました。

ちなみに、

~/Library/Preferences/com.apple.LaunchServices.plist

を削除して再起動してもいいようですし、編集する方法もあるようです。

kotlin : もういちどAndroid Studioプロジェクト

前回よりちょこっとだけマシなプロジェクトを作ってみました。といってもディレクトリをjavaからkotlinにリネームする部分を追加しただけですが。

ふつうにプロジェクトを作ってから、javaのコードをkotlinに変換します。メニューのCode => いちばん下のConvert Java File to Kotlin Fille。

0412a

javaディレクトリ名をkotlinに変更します。ここだけが前回と異なるところです。

Projectに変更してからjavaディレクトリを選んでリネームします。

0412b

Refactor => Renameと進んでkotlinと入力しました。

0412c

そのままRefactorボタンを押せば、javaからkotlinディレクトリに変更されました。

0402de

赤い文字の部分はビルドの設定を自分でやってね、ということですから、前回と同じく、メニューのTool => Configure Kotlin in Projectとして終了です。

0412f

Kotlin:Android Studioにインストール

Android Stuidoもたいして使ったことがないのにKotlinをインストールしてみました。

Kotlinは、Android Studioのプラグインとしてインストールされます。Android Studio上でKotolinのファイル(*.kt)を作成すると自動的にプラグインを読み込んでくれるという説明も見つけたのですが、わたしの場合はうまくいかないようなので、メニューから読み込むことにしました。

Kotlinプラグインのインストール

Android StudioのPreferenceからPlug-inを選択して検索からKotlinを検索します。

0406a

表示されたKotlinを選択して「Install plugin」として、最後にAndroid Studioを再起動すれば終了です。

0406b

プロジェクトを作成してKotlin用に変換

最初にjavaのAndroid Studioのプロジェクトを作成します。

File => New Project …

作成されたMainActivity.javaをKotlinに変換します。

メニューCodeからConvert Java File to Kotlin Fileを選べば、MainActivity.javaからMainActivity.ktに変換されます。

最後にプロジェクトファイルをKotlin用に直す必要があるようです。これにはShiftを2回押して表示されたマドで「Configure ko…」とするかメニューTools => Kotlin => Configure Kotlin in Projectを選んで実行し、Syncすればできあがり(のようです)。

0406c

実行すれば「Hello World」が表示されました。とりあえず最低限の設定ですね。

参考:http://kotlinlang.org/docs/tutorials/kotlin-android.html