WordPressブログのインポートで苦労した話

経緯

今日ブログのレイアウトを大幅に変更した。変更するに当たりいきなりネット上で変更するのは怖かったので一旦ローカル環境にうつしてからアップロードする作戦にしたら、Wordpressのインポートでいきなり苦労したので内容を報告します。

以前ローカルに”local”で環境を作り、All-in-One WP Migrationを使用して、バックアップしPHPのバージョンアップしたことがあった。その時はインポート容量に制限があることがわからなかったが、今回改めてやってみると300MBの制限があった。

容量の上げ方はこのサイトに書いてあった。

how-to-increase-maximum-upload-file-size-in-wordpress/

方法は以下の2つ

① Edit .htaccess file

php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

② Edit wp-config.php file

@ini_set( 'upload_max_filesize' , '128M' );
@ini_set( 'post_max_size', '128M');
@ini_set( 'memory_limit', '256M' );
@ini_set( 'max_execution_time', '300' );
@ini_set( 'max_input_time', '300' );

local だとどちらの方法もダメだった。①の場合、エラーでサイトが開かなくなる。②の場合、変化なし。
直接php.iniを書き換えてもダメ。

結局localでやるのは諦めた。localはWordpressの環境を作るのが簡単なので気に入ってたのに。

対応策

MAMPでWordpressの環境を作った。MAMPの場合、アップロードの初期値は8MB。①の方法で変更できた。

.htaccess

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>

# END WordPress

# ここから下を追加
php_value upload_max_filesize 1000M
php_value post_max_size 1000M
php_value memory_limit 1000M
php_value max_execution_time 300
php_value max_input_time 300

②の方法は変化なかった。

参考

WordPressのバックアップの仕方とローカルサイトでの試し方などは、このサイトが非常に良かったので紹介しておく。


WordPressのPHPを安全にバージョンアップする方法
WordPressのバックアップをかんたん確実に取る方法【初心者向け】
WordPressをローカル環境(パソコン)にインストールする方法

サイコロを転がす問題

Aize On Judgeの問題解きは結構続いています。もう少しでIntroduction To Programming Iが完了しそうです。今回はサイコロの問題。今まではサイコロを決まったとおりに転がしたときの目のを求める問題で迷いました。

問題は下記のリンクにあります。
Aizu Online Judge Dice I

サイコロの6面にそれぞれ数字が割り当てられて、N,S,W,E(東西南北)にサイコロを回転させたときに上に来る数値を回答するような内容です。しかも今後のためにクラスや構造体で作成しておくとのこと。

実際にサイコロを作成して、N,S,W,Eへそれぞれ回転させたときに、どこに移動するか確認し、配列を受け渡すプログラムを作成しました。

こんな感じで、S,W,Eの場合も考えると。

コードは以下のようになりました。

#include <iostream>
#include <string>
#include <array>
using namespace std;

struct Dice
{
    array<int, 6> roll;
    void toNorth()
    {
        array<int, 6> t = roll;
        roll[4] = t[0];
        roll[0] = t[1];
        roll[5] = t[4];
        roll[1] = t[5];
    }
    void toSouth()
    {
        array<int, 6> t = roll;
        roll[1] = t[0];
        roll[5] = t[1];
        roll[0] = t[4];
        roll[4] = t[5];
    }
    void toWest()
    {
        array<int, 6> t = roll;
        roll[3] = t[0];
        roll[0] = t[2];
        roll[5] = t[3];
        roll[2] = t[5];
    }
    void toEast()
    {
        array<int, 6> t = roll;
        roll[2] = t[0];
        roll[5] = t[2];
        roll[0] = t[3];
        roll[3] = t[5];
    }
};

int main()
{
    int num;
    string commands;
    Dice dice;
    for (int i=0; i<6; i++) {
        cin >> dice.roll[i];
    }
    cin >> commands;
    size_t size = commands.size();
    for (size_t i=0; i<=size; i++ ) {
        if (commands[i]=='N')
            dice.toNorth();
        else if (commands[i]=='S')
            dice.toSouth();
        else if (commands[i]=='E')
            dice.toEast();
        else if (commands[i]=='W')
            dice.toWest();
    }
    cout << dice.roll[0] << endl;
    
    return 0;
}

http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=3407308#1

mac OS mojave で前と変わったこと

telnetができない

あまりよく使うコマンドでは無いから気がつくまで時間がかかったが、telnetができなくなっていた 。telnetはTCPポートが開いているかどうかの確認の時によく使う。使い方としては次のような感じ。
$ telnet 192.168.0.2 80
いつからだろう。思い当たるのはOSをアップデートした頃ぐらいかな。inetutilsをインストールして解決できた。
brew install inetutils

pingができない

そしていつの間にかpingもできなくなった。

ping 192.168.20.2
ping: Lacking privilege for raw socket.

whichで調べてみると、下記のファイルになってた。
$ which ping
/usr/local/opt/inetutils/libexec/gnubin/ping

inetutilsをインストールしてからか?
解決策として管理者としてやるか、別のpingプログラムを使うか。
$ sudo ping 192.168.0.2
$ /sbin/ping 192.168.0.2

どちらでもそんなに手間ではない。

コンピュータ名でping

pingで思い出したが、windowsのpingは ping <コンピュータ名>のようにコンピュータ名を打って、pingができる。macはWindowsみたくコンピュータ名でpingは打てないようだ。同じようにできないかと調べたが見つからなかった。しかし、一つだけ名前からip アドレスを調べるコマンドは分かった。sumutilだ。使い方はこう。
$ smbutil lookup <PC name>

TP-Link スマートコンセントHS-105をAPIから操作(3)

昨日の続きでPython3で通信できるようにやってみた。まだPython2系が無くなったわけではないし、緊急性はなかったが、動作しないのを見たらどうしても直してみたくなった。ちなみにPythonバージョンは3.6.4。

実行してまず、実行エラーで引っかかったのはprint関数。
Python2 ・・・ print ‘文字列’
Python3 ・・・  print(‘文字列’)
これはすぐに分かった。
もう一つ大きなものは、文字列とバイト列の関係だ。変わったのはわかってたので、単純にbytes関数で変換したら、エラーは消えたが全く返答が帰ってこない。

わけが分からずに使っていたが、bytes()関数は大きさを指定してbytesオブジェクトを作る関数だったようだ。

bytes(10)
b’\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00’

Python3は文字列はデフォルトでUnicodeになって、その代りbytes型ができた。
下記のような感じである

PYTHON3PYTHON2
byte列bytes (b”)str (”)
通常の文字列str (”)str (”)

要するに文字列をbyte列に直せば良い。
変更箇所は下記の通り
まずは暗号化関数

整数をからbyte列に変換するにはto_bytes()関数を使用する。動作は下記の通り。

i=ord(‘a’)
i.to_bytes(1,’big’)
b’a’

Python3.2から使用可能。標準関数なのでimportする必要はない。
これがわかるまで結構時間がかかってしまった。
次に復号化

受信する時に、byte列で入ってくるので、Python2のようにord() 関数で整数に戻す必要がないので、記入としては減る方向になった。

無事にPython2のファイルと同じことができた。

Adobe Acrobat Reader DC のものさし機能が便利

仕事では電気設計の仕事をしていて、設備のハード図を書いて、モータケーブルの長さを決めて手配することもしている。装置内のケーブルの長さはメカ設計に相談し、メカ設計がCADでケーブルをはわす経路の長さを測って教えてもらうのだが、メカ設計が忙しいときはなかなか聞きにくい。PDFベースの図面はもらっていてこれで何かできないかと探していたら、なんとPDFを見るのに使っているAdobe Acrobat Reader DCにものさしがあることが分かった。

使い方は簡単。ツールタブからものさしをクリックするとツールバーが表示されるのでものさしを選択するだけ。寸法線のところで計ってみると長さが全然違って表示された。縮尺が全然合ってないようだ。

そんな時は縮尺を合わせることもできる。測定タイプのツールバー以外のところで右クリックし、「測定比率と精度を変更」をクリックする。寸法測定中でも、右クリックをすれば3段目に表示される。ものさしツールを選択してないと表示しないので注意していただきたい。

右クリックメニューに「測定比率と精度の変更」がある

測定比率は電卓を使って計算する。図面上の表示寸法が300mmで、ものさしでの測定寸法が59.99mmなので単純に割り算をすればよい。300 ÷ 59.99 ≒ 5 。なので5と言う数値を入力する。入力欄がグレー色になっているので分かりにくいが入力することができる。計算結果が小数点の場合は小数点第5位まで入力できるので入力した方がよい。あまり小数点第1位ぐらいで四捨五入すると、正確な数値にならない。また、精度は1に設定。ここで細かく小数点まで表示してしまうと、切りのいい数字で表示されずに見ずらい。

測定比率と精度を変更ウィンドウ

実際に測定して確かめてみると正確に寸法が表示される。

測定結果

円も測定することが出来る。

ただ測るだけではなく、ファイルを保存すれば寸法線をそのまま保存することもできる。このやり方を見つけてからは、メカ設計の手を止めることもなくじっくりと測ることが出来るようになった。

XCYベアボーンキットにWindows10インストール(2)

Windows10を諦められない

DebianでやっていたがWindows10が諦められない。できないままで終わるのは嫌だ。それにWindowsのデスクトップアプリを試す環境がどうしても欲しい。前回は起動ディスクをUSBメモリーで作ったが、DVDにしてみてはどうか。イメージファイルをDVDに焼いてインストールすることにした。

イメージDVDを作成

MACでイメージファイルを焼くのはすごく簡単。外付けのDVDドライブを取り付けて、新しいDVD-Rをセットし、Finderでイメージファイルを右クリックして「ディスクイメージファイルを・・・.iso をディスクに書き込む」だけ。書き込みにかかる時間はUSBメモリーに作成するよりずっと早い。

XCYベアボーンへインストール

外付けDVDドライブを取り外し、そのままXCYベアボーンへ取り付け、F11を押しながら起動し、起動後、何かキーを押せばインストールが開始する。後はウィザードに従うだけ。思ったより簡単にできた。

Wi-Fiは問題なし

Debian 9で苦労したWi-Fiの設定はWindows10では全く苦労せずに設定できた。さすがWindowsだ。

画面が真っ暗に

しかし問題が起きた、一度シャットダウンして再び電源を入れたら、ログイン画面は表示するが、ログイン後に画面が真っ暗でマウスポインタだけ映るようになった。Ctrl+Shift+Delete メニューは問題なく表示する。調べてみるとグラフィックでエラーが出ているとのことだった。コントロールパネルのデバイス設定を見るとエラーになっていた。そのままドライバーを更新たところ解消した。次からはシャットダウンして立ち上げても全然問題なかった。

Macからリモートディスクトップ

Macからリモートデスクトップで接続して作業したかったので、Windows 以前使用したことがある、Remote Disktop Ver8で接続することを確認。しかし画像ファイルのコピペができないから使い勝手が悪いと思った。調べるとVer10では出来るらしい。早速ダウンロードして接続しようとしたが、ログインするところで接続できなかった。いろいろ調べて試してみた。結果的に言えば通常しているログインIDではなく、Windows ID でログインすることが出来た。 画像のコピペができることも確認した。

XCYベアボーンキットでDebian9 セットアップ Wi-Fiに苦労

前回、Windows10は起動すらしなかったが、Debian 9は問題なくインストールが開始した。ウィザードに沿ってクリックしていくだけなので、通常のセットアップは全然問題なかった。

Wi-fiが全然つながらない

1つだけ苦労した点がある。Wi-Fiが全然つながらない。有線Lanはあるので、そちらからはつながることは確認した。
下記コマンドで確認。

lmjs@debian:~$ lspci -vvnn | grep -A 9 Network
02:00.0 Network controller [0280]: Broadcom Limited BCM43224 802.11a/b/g/n [14e4:4353] (rev 01)
Subsystem: Broadcom Limited BCM43224 802.11a/b/g/n [14e4:04d8] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 18
Region 0: Memory at f7c00000 (64-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: bcma-pci-bridge
Kernel modules: bcma

これを見ると、XCYベアボーンキットのWi-FiドライバBroadcom Limited BCM43224が認識してそうなかんじだ。

いろいろ調べているうちにdebianページにのやり方が書いてあった。DebianではBroadcomのドライバは初期でインストールされていないようだ。
brcm80211 – Debian Wiki

まずは、/etc/apt/sources.list の最後の方に書きを追加
“`
deb http://deb.debian.org/debian/ stretch main contrib non-free

インストールと反映

lmjs@debian:~$ sudo apt update
lmjs@debian:~$ sudo apt install firmware-brcm80211
lmjs@debian:~$ sudo modprobe -r brcmsmac
lmjs@debian:~$ sudo modprobe brcmsmac
“`

余談 Minecraftは動くか

数年前に買ったAcer製のネットブックにMinecraft PC版をインストールしたときは全然動かなかったので、試しにインストールしたところ、全然問題なくプレイすることができた。

ちなみにAcer製のネットブックでもWindows10バージョンは問題なく動作した。

XCYベアボーンキットにWindows10インストール(1)

メモリカードからのOS起動

早速OSをインストールことにした。8GBメモリーだから64bitOSでないと意味が無い。Windowsデスクトップアプリを作って試す環境がほしかったのでWindows10 64bit版にした。Windows10はインターネットサイトからダウンロードした。

USBメモリーへ書き込み

macからの書き込みはターミナルでコマンドラインから実行した。

diskutil eraseDisk MS-DOS UNTITLED /dev/disk4
diskutil unmountDisk /dev/disk4
sudo dd if=/Users/username/Win10_1803_Japanese_x64.iso of=/dev/disk4 bs=1m
diskutil eject /dev/disk4

ddコマンドには1時間半ぐらいかかるので気長にやるしかない。途中進んでいるか不安になるが、ctrl+tで現在の容量を確認することができる。

XCYベアボーンキットから起動

電源ボタンを押したらF11キーを押しすと、外部から読み込みが始まる。しかしうんともすんとも言わない。Biosから読み込みドライブの順番を変えてもダメだった。

64bit版だからダメなのだと思い、USBメモリに32bit版を書いて実行したがダメだった。このインテルCPUは64bitだということは知っていたが、もしかしたらと思い試して見た。何度か試してもダメだったので、諦めて他のOSで試そうと思った。Linuxでまた使ったことのないDebian 64bit版にすることにした。早速Debianで試してみたら難なくインストールが開始した。せっかくだからこのままDebianをインストールして試すことにした。

この日はDebianに落ち着いたけれど、USBメモリに、OSを3回も書き込んだのでかなり時間がかかった。

XCYベアボーンキットのメモリーとSSDの交換をした

前回、XYCベアボーンキットが起動することを確認して、メモリーとSSDを交換することにした。

中身を確認しようとしたら意外に苦労

まずは中がどうなっている確認。底面のカバーを開けて中身を確認しようとしたところで最初につまづいた。どうやって開けるんだ?見る限り皿ビスが2箇所しかない。よくよく見てみると皿ビスがあるべき場所にシールが貼ってあった。この下にビスがありそうだ。早速はがすとビスはあったが、文字が転写された。故障し、メーカへ出した時にフタを開けたかどうか分かるようにしているのだろう。

皿ビスを4箇所外してフタを取り外そうとしたら外せない。他に止まっているところがあるのか? しかし全然見当たらない。どうやらしっかりとハマっているだけのようだ。長孔に引っ掛けて取ろうと思ったけれど曲がってしまいそうだったのでやめた。外した皿ビスを、カバーのビス穴に付けて、ラジペンで引っ張ってフタを取り外すことができた。

裏面画像

ようやく中身を確認できた。

中身の画像


部品はAmazonで購入

SSDは2.5インチタイプ、メモリーはSO-DIMM(DDR3L)と取説に書いてあったので早速Amazonでなるべく安いものを探がした。

Amazon | シリコンパワー ノートPC用メモリ 1.35V (低電圧) DDR3L 1600 PC3L-12800 8GB×1枚 204Pin Mac 対応 永久保証 SP008GLSTU160N02 | シリコンパワー | メモリ 通販

Amazon | KingDian mSATA mini PCIE 32GB 60GB 120GB 240GB SSD Solid State Drive (30mm50mm) (M280 240GB) | KingDian | 外付SSD 通販

注文して翌日発送。さすがAmazonだ。早速取り付けた。部品の交換自体は。ノートパソコンの部品交換と同じような感じ。特に問題なくすんなり交換することができた。

次回はOSインストールだ