海外通販サイトPimoroniで注文した

ラズベリーパイなど電子機器を販売しているイギリスの通販サイトpimoroniで注文した商品が届いた。注文した時に発送方法を選ぶことができ、一番安いのは追跡無しのRoyalMailというやつでその次がそれに追跡が付加されたもの、そして送料だけで4000円近くかかる謎のサービスが手厚そうな配送手段から選択する。料金は一番安いRoyalMailで900円ぐらい、追跡がつくと約300円ほど高くなって1200円ほどとなる。到着まで5~10営業日で届くと書いてあったので送料はケチって一番安いやつでいいかと思って注文することにした。長くても2週間ほどで届くだろうとのんびり配達されるのを待つことにした。

1ヶ月待ちましたよ。

結論から言うと商品は無事届いた。精密機器だったけど梱包もまともだったので壊れることはなく問題なく動いた。正直郵便事故かなんかで紛失して届かないと諦めてさえいた。もしこれから海外通販する人がこの文章を読んでいたらできるかぎり追跡有りで注文することを薦める。送料が千円ぐらい違ってくるなら話は別だが300円程度で追跡ができるなら安いもの。

Incorrect key file for table ‘./my/table.MYI’; try to repair it

MySQLのテーブルが壊れた。Incorrect keyとかCorruptとかエラーメッセージが出たのでrepairテーブルとかmyisamchkとか色々修復するべく試したがどうやっても直ってくれない。直ることは直るがデータをinsertしようとしたらまたエラーが出てその繰り返し。インデックスのキー位置と実際にテーブルに存在しているレコード数が一致していないのが原因の模様。実際にselect count(*) とかやって見た件数と修復時に表示される件数との間に差が生じているのを確認した。最後の手段として、

  1. show create table targetTable でテーブル定義をメモ
  2. 対象のテーブルデータを select * into outfile ‘/tmp/data.txt’ from targetTable として出力する。
  3. drop table targetTable としてテーブル削除
  4. create table targetTable (略 としてテーブルを再作成
  5. load data infile ‘/tmp/data.txt’ into table targetTable としてデータを流し込む

という手順でやってみて、流石にこれでもエラーが出るようならお手上げだと思っていたがなんとか復旧した。

Raspberry Pi 4 にメモリ8GBモデルが登場

海外のラズベリーパイなどを売っている通販サイトにラズパイ4のメモリ8GBモデルが登場&販売開始した模様。

https://shop.pimoroni.com/products/raspberry-pi-4?variant=31856486416467

スペック的には2GBと4GBモデルと変わりはなく単純にメモリが強化された様子。価格は73.5ユーロ、日本円で9700円ほどとなる。4GBモデルとの価格差は約2600円、2GBモデルとは約5200円もの価格差になる。というか2GBモデル2台分の価格となっている。

個人的にはラズパイでメモリ8GBの必要性は謎。価格差も疑問でコストと性能比で考えたら1万円弱という価格は普通かやや高いかなとも思う。省スペース性と省電力性という他の製品にはない長所を持ってはいるけれども。私もラズパイ4を購入検討していて2GBモデルで十分かな?サーバー用途としても4GBも使わないよなぁ・・・と思っていたところで8GBモデルが登場して困惑。搭載されているメモリはLPDDR4という低電力版のDDR4らしいので特にサーバー向けのメモリというわけではなく、これがもしECCメモリ搭載だったら1万円でも喜んで買うんだけれど。それにしても誰向けの製品なんだろうね。windows10でも動かそうというのなら8GBは必要かもしれんけど。

古いMySQLをインストールした時にlibncursesw.so.5がないと怒られた

MySQL5.087をインストールしてデーモン起動してログインしようとしたら

# ./bin/mysql -u mysql
./bin/mysql: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory

という風に出てログインできない。libncursesw.so.5が見つからないというわけでlibncursesをaptでインストールするも

# apt install libncurses5
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
libncurses5 はすでに最新バージョン (6.1+20181013-2+deb10u2) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

libncurses6がインストールされている。だがlibncurses5がこのアプリは必要らしいのでlibncursesをダウングレードできないものか調べてみたがなんか面倒くさそうなためlibncurses6にシンボリックリンクを張ってlibncurses5にみせかけることにする。(そんなことしていいのか?)

libncurses6がインストールしている場所はというと”/lib/x86_64-linux-gnu/”というわけのわからんディレクトリにインストールされているみたいのなので

ln -s /lib/x86_64-linux-gnu/libncursesw.so.6 /lib/x86_64-linux-gnu/libncursesw.so.5

でリンクを張る。どういうわけかこれでMySQLにログインできるようになった。

mroongaよりsennaの方が検索速度が速い場合がある

DBのレコード件数1800~2000万件程度のテーブルで全文検索した場合に、mroongaを使って検索した時にやたら時間がかかった。大体3秒~10秒ほどselect count(*)を実行するのにかかっていて、レコード件数多いから仕方ないのかな?と思っていたらsennaで運用していたDBの方は1秒もかからずに結果が返ってくる。

マシンのスペックでいうと

mroongaDB CPU:XEON-3430 Storage:NVME SSD READ 3.5GB/s

sennaDB CPU:XEON-3430 Storage:SATA SSD READ 450MB/s

といった具合でmroongaで運用しているマシンの方が読み書き性能は圧倒的に上。DBの検索スピードに影響するのはCPUよりもストレージの読み込み速度だと思うのでこの結果はちょっと悩ましい。

explainで調べてみたところ、

explain select count(*) from table where match(column) against(‘D+ 1s103 ‘ IN BOOLEAN MODE);

+—-+————-+——-+——+—————+——+———+——+——+——————————+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+——-+——+—————+——+———+——+——+——————————+
| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Select tables optimized away |
+—-+————-+——-+——+—————+——+———+——+——+——————————+
1 row in set (2.32 sec)

これがmroongaDBで検索した結果。次にsennaDBで検索すると

explain select count(*) from table_name where match(column) against(‘D+1s103′ IN BOOLEAN MODE);
+—-+————-+——————-+———-+—————+———-+———+——+——+————-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+——————-+———-+—————+———-+———+——+——+————-+
| 1 | SIMPLE | table_name | fulltext | column | column | 0 | | 1 | Using where |
+—-+————-+——————-+———-+—————+———-+———+——+——+————-+
1 row in set (0.00 sec)

という違いがある。mroongaの方は「
Select tables optimized away 」とあるので一応インデックスは働いているようだが、検索の遅さには納得できない。検索に使ったキーワードは
「1s103 」という特に変わっているワードでもないがやたら時間がかかった。他の「alaedad」とか「akaweea」とかは結果がないならないで高速に検索を終えるのに「adk323」とか「132334323」みたいな数字が多い検索だとやたら時間がかかる。mroongaは数字の検索が苦手とかそういうことがあるんだろうか。sennaだと別にそういうようなことはなく割と速く0.1秒以内に結果を返してくれる。

sennaは検索をしている間はテーブルロックがかかってしまうという弱点があり、mroongaはそれがないらしい。あとsennaは割とメモリを喰うんでテーブルロックの件もあってmysqlデーモンが落ちることが結構あるがmroongaは私の経験上では不思議とメモリ不足で落ちたことがほとんどない。検索の速度でいうと後継だからmroongaが速いのだろうと勝手に思っていたが大差ないのかもしれない。私の参照オンリーな使い方だとむしろsennaの方が速い。デーモン落ちるのは怖いがcronで見張って自動復帰設定とかやりようはあるので今更ながらsennaに戻そうかと思案中。

IdeaPad s145 注文してみた

パソコンに詳しくない知人に頼まれてIdeaPad s145を注文した。パソコンが欲しいという相談を受けて、ならどんなパソコン?って聞いたら安いパソコンが欲しいとしか条件を言われなかったのでLenovo IdeaPad s145がまあ割といいんじゃないと思って注文することにした。

一番安いモデルの AMD Athlon 300U,MEM4GB,SSD128GBというスペックで
34,036 円。他に検討したものとしてはデルのノートパソコンとかアマゾンで売ってる怪しげな中華製のノートパソコンとか安いだけという条件なら3万以下でも見つかるかもしれないが、一応大手のレノボだし、発売日も今年の4月に出たモデルらしいしで それに決めた。+4000円だせばCPUが
AMD Ryzen 3 3200U になるらしいが調べてみたところベンチマーク的に大した差はないみたいなのでだったらその分のお金をメモリ増設に充てたほうがいいだろうと判断。+12000円だせばCPUとメモリとSSD全て一回り上のスペックのものになるが、注文主はパソコン初心者なので使い道に違いはそんな体感できないだろうと思って最低スペックのやつで十分、それに予算も5万弱までなってしまうので却下。(5万弱でも十分すぎる安いパソコンといえるが)

s145の個人的にいいと思うところは4月に発売されたということでストレージが高速なM.2 NVMe SSD であるということ。試用したことないがおそらくかなり速いんじゃないだろうかと勝手に予想。他になにかこれはと思うところは・・・ない。3万4千円の超格安ノートPCに一つでも優れたところがあるのはすごいことだと思う。安いPCが欲しいとだけしか条件がなかったので割と良さそうなノートPCが見つかったが、CPUが速いやつとかストレージ容量の多いやつとか条件をつけられたらもっと微妙なノートPCを買うことになったかもしれない。

10年ほど前にデルのノートPCを12万ほどで購入して現在も動いているが、PC性能の進化は速いものでこのs145の最低スペックにも到底かなわなくなっているのに気づいてしまった。3万4千円だったら自分用に注文してもいいかなとさえ思い始めた。

一つ問題があるとすれば納期がやたら長いということ。2週間ほどの予定だったが1ヶ月を超えそうな状況になってしまっている。

raspberry pi zero の usb gadget mode 接続できない・見つからない

raspberry pi zeroをwin10とusbのデータ接続してssh接続ができなかったのでメモ。初めのラズパイゼロの設定は他のサイトと同じ(config.txtの最後に追記とcmdline.txtのrootwaitの後に追記など)。それら設定を終えた後、再起動してwin10とusbでデータ接続するとwin10側でラズパイゼロを認識することができる。このとき、ラズパイゼロをUSB Ethernet/RNDIS Gadget として認識しなければならない。win10にラズパイゼロをusb接続したときいつもの接続音がなると思うが、その後デバイスマネージャーからネットワークアダプターの一覧にUSB Ethernet/RNDIS Gadgetがあれば問題ない。なければおそらくポート(COMとLPT)のところにUSBのシリアル接続した項目があると思うのでそれに対してドライバーを適用する(私の場合はそうだった)。ドライバーは

検索結果 “USB RNDIS Gadget”
https://www.catalog.update.microsoft.com/Search.aspx?q=USB%20RNDIS%20Gadget

→ Acer Incorporated. – Other hardware – USB Ethernet/RNDIS Gadget Windows 7,Windows 8,Windows 8.1 and later drivers

という項目のドライバーをダウンロードしてフォルダに解凍しておく。そして先程のデバイスマネージャーのポートのところにあるシリアルUSBの項目を右クリック→ドライバーの更新→コンピュータを参照してドライバーソフトウェアを検索 で先程解凍・展開したドライバーのフォルダを選択する。正しくドライバーが適用されればUSBシリアル接続の項目はUSB Ethernet/RNDIS Gadgetと変わり、ラズパイゼロに対してSSH接続できるようになる。ホストはraspberrypi.local で ユーザーは初期状態ならpi パスワードはraspberryで接続できるようになる。

raspberry pi zero に固定ipを割り当てる

上記のようにすることでとりあえずはラズパイゼロとssh接続ができるようになった。次にラズパイゼロに固定ipを割り当ててraspberrypi.localではなくipアドレスでssh接続できるようにする。

ネットワークアダプタの設定

ネットワークアダプタ一覧にあるラズパイゼロのアダプタ名をわかりやすいようにpizeroに変える。

次にwin10でインターネット接続するアダプタを右クリックして、プロパティから共有タブを開き、pizeroを選択する。

次にpizeroのネットワークアダプターのアイコンを右クリックしプロパティからインターネットプロトコルバージョン4(TCP/IPv4)のプロパティを開く。

“次のIPアドレスを使う”を選択して、IPアドレスとサブネットマスクを入力する。(デフォルトゲートウェイは空白)

ネットワーク接続一覧の画面でネットワークアダプタを最新の状態に更新してコマンドプロンプトからipconfigを実行する。pizeroのIPv4アドレスに先程入力したIPアドレスが入っているのを確認する。

今度はラズパイゼロ側で、raspberry.localにSSH接続しifconfigを実行する。usb0のinetの値に192.168.137.xxというipアドレスが入っていることを確認する。そのipアドレスでラズパイゼロにssh接続できるかどうかも一応確認する。

次にようやくラズパイゼロに固定ipの設定をするために/etc/dhcpcd.confのファイルを編集する。下記の記述を挿入する。意味はラズパイゼロに192.168.137.10というipアドレスを設定する。192.168.137.1は母艦のwin10のことを指す。domain_name_servers=8.8.8.8はグーグルのdnsサーバアドレス。ちなみに母艦のwindowsは固定ipとして192.168.24.xxのアドレス空間に属していて、ラズパイゼロは192.168.137.xxのアドレス空間に属している。下記を保存後に再起動して固定ipで接続ができるかどうかを確認する。ここまで問題なくできていれば接続できるはず。
# vi /etc/dhcpcd.conf

interface usb0
static ip_address=192.168.137.10
static routers=192.168.137.1
static domain_name_servers=8.8.8.8

ちなみに/etc/network/interfacesのファイルの中身も参考までに。
# vi /etc/network/interfaces

auto lo usb0
allow-hotplug usb0
iface usb0 inet manual

source-directory /etc/network/interfaces.d

まとめ

ここまででusbケーブルでwin10と接続したラズパイゼロは固定ipを設定して母艦からSSH接続し、ラズパイゼロからインターネットアクセスができるようになった。母艦と同じアドレス空間にいるマシン(私の環境では192.168.24.xx)へもラズパイゼロ(192.168.137.10)からSSH接続できることを確認した。だが、なぜか逆はできなかった。pingも通らない。そのへんは課題としておく。

上記手順は割と細かく説明しているが、それでもその通りにやってみたがうまくいかなかったということはありえる(私自身かなりつまづいた)。ハマったときの対処法はipconfigとifconfigを実行してマシンに割り当てられているipアドレスをよく確認することと再起動もしっかりとやること。

ラズパイゼロがusb接続でインターネットできるとき

ネットワークと共有センターの画面でusb接続したpizeroのアダプターがインターネットアクセスできる状態になっているときは画像のようになっている。前述の母艦のイーサネットの共有でpizeroに対して共有しておくとこうなる。インターネットアクセスなしになっていると当然接続できないし何かしら設定がおかしくなっている。そうなった場合正直私にもよくわからない。再起動したら直る場合もあるし、うまく接続できていても次の日になったら原因不明で接続できなくなったとかもあった。

母艦のイーサネットアダプタを更新するとインターネット接続ができるようになる場合もある。プロパティから共有タブを開き、現在pizeroと共有しているチェックを外して保存し、再度チェックを入れて保存というようなことをやったらインターネットアクセスができるようになった(付け焼き刃だが)

最新のraspberry piのCPU性能がintel Atomの性能を超えていた件

超小型なシングルボードPCであるraspberry piの性能について、結構前からその存在は知っていたのだけれどまだまだ普通のデスクトップPCとかで使われるIntel Atomプロセッサにはかなわないよなと思っていたらいつのまにか追い抜いていた。

raspberry pi 4に使われているCPUはARM Cortex-A72という型番でクアッドコア1.5GHzで動作する。で、それがどれほどの性能かというと

ARMの次期CPUコア「Cortex-A72」はIntelのCore M以上の超絶性能であることが判明
https://gigazine.net/news/20150427-cortex-a72/

ARM Cortex-A72 vs Intel Atom x5-Z8500
https://versus.com/ja/arm-cortex-a72-vs-intel-atom-x5-z8500
ARM Cortex-A72が4コアのAtomプロセッサよりも若干上回っている模様

私が所有しているIntel Atom 330 が乗っているマシンとAtom x5-Z8500を比較してみると、
https://www.cpubenchmark.net/compare/Intel-Atom-x5-Z8500-vs-Intel-Core-i3-330M/2581vs742
という感じでZ8500はatom330よりも10~20%ほど処理性能がよいということらしい。

https://cpu.userbenchmark.com/Compare/Intel-Atom-x5-Z8500-vs-Intel-Atom-330/m38612vsm1917という感じでZ8500はatom330よりもかなり性能が良いらしい。

Intel Atom 330というプロセッサとはどういうものかというとAtomの第一世代に登場したCPUでmini-itxサイズのマザーボードにオンボードとして発売されたりあとはベアボーンキットとして発売されたCPUである。性能はというと2コア4スレッドのなんちゃって4コアCPUとして鳴り物入りで登場したが実際はWindows XPならなんとかサクサク動かせることができるという程度の性能でその上のVistaや7は現実的ではないといったところだった。中には無線LANやGPU性能に凝ったものもあったがコストパフォーマンス的には疑問符がつくようなシロモノばかり。(Intel Atom 330をネガったような表現になっているが私自身はAtom330マシンのことを割と気に入っている)

で、いろいろ調べてみたがraspberry pi 4 > Intel Atom 330 ということで結論づけてもいいような気がする。これの何が凄いかというとその省スペースさ。Atom330の乗ったマシンなら大体は分厚い電話帳1~2冊分ぐらいの容積のマシンが必要になるが、raspberry piはトランプの箱ほどの大きさで済んでしまう。今まではいくら小さくて省電力でもARMプロセッサだから性能がな~と思っていがAtom330よりも普通に高性能であるなら使う理由はほとんどなくなってしまう。あるとしたら愛着ぐらい。

raspberry pi 4 と atom 330 マシン参考までに画像のマシンが私の所有するラズベリーパイ4とAtom330マシン。言うまでもなく白い筐体のデカいのがAtom330マシン。ストレージにはWinXPがインストールされていて今はもうネットに繋いでも主要ウェブブラウザがサポート外で警告が出まくって不便なためオフラインで運用するだけの計算機となっている。どうでもいいことだがこのMSI製のAtom330マシンのマザーボードは少し変わったところがあって、基板上にCFカードスロットが存在していてBiosで起動ディスクに設定することができるという誰得の謎仕様がある。

見た目でラズベリーパイ4の方が省スペースで省電力そうなのはわかるが性能まで上回ってるというのは実物を前にすると信じがたいものがある。(あと価格もラズベリーパイ4の方が大分安く済む)

Raspberry pi zero と Banana pi の比較

小型のシングルボードコンピュータであるRaspberry piは割とパソコン好きには有名だが、Banana piというラズパイのパクリのようなものが存在するらしい。スペックを比較してみる。

名称 Raspberry pi zero W Banana Pi BPI-M2 ZERO
画像
CPU ARM1176JZF-S 1コア 1GHz Allwinner H2+, Quad-core Cortex-A7 1.2 GHz
RAM 512MB 512MB DDR3 SDRAM
storage microSD microSD
network wlan b/g/n,Bluetooth 4.1 SDIO AP6212(wlan b/g/n , Bluetooth 4.0)
interface Mini HDMI,
MicroUSB-b(Data,Power),
MicroSD
専用カメラインターフェースMIPI CSI-2
Mini HDMI,
MicroUSB-b(Data,Power),
MicroSD,
power button,
reset button
カメラインターフェース
GPU Broadcom VideoCore IV 250MHz Mali400MP2 GPU 600MHz, OpenGL 2.0 support
消費電力 1.2 A (6W) 2A
サイズ 65mm * 30mm 65mm × 30mm
価格 $25~(執筆時点で調べた価格) $21~(執筆時点で調べた価格)

比較してみるとBanana piの方が性能は勝っているような気もする。クアッドコアでしかも1.2GHzとなっているのでおおーっと思ったけど中国製っぽいからなんともいえない。パワーとリセットボタンという物理ボタンが基盤にあるというのもユニークな印象(個人的にはいらないが)。Banana pi割といいかもしれないと思ったけど、ラズパイのパチもん雰囲気丸出しだし構成されてるパーツも得体もしれないし何より発熱が絶対やばそうでちょっとないかなと今は思っている。用途にもよるけど信頼性って大事だと思うんだ。パーツの画像を見る限りラズパイのメモリはELPIDAやMicron製が使われてて、Banana piのほうはSamsungの表記が見られ、そのメモリメーカーの違いが個人的に重視している。パチもんにはELPIDA製のメモリは乗っからないよなぁという経験則から。

WebARENAの月額360円サーバを契約してみた

WebARENAのVPSクラウドの月額360円コースを契約してみた。初期費用はいらないみたいだしテスト環境にちょうどいいかなと思って。必要なくなれば解約するつもりだけれど気に入ったらそのまま使い続けてもいいし。安いから気軽に始められる。

で、契約して決済してサーバー管理画面に入ってUbuntuサーバでインスタンスを作成するところまではスムーズに行った。マニュアル(PDF)を見ながら設定していたのだけれどSSH接続でつまづく。ログインのやり方がユーザー名を入力して秘密鍵をパスワード代わりに認証するらしいのだけれどどうしてもログインできない。マニュアルを見る限りではユーザ名はrootで秘密鍵を使ってログインしろとしか書いてない。SSH接続でログインできないと始まらないのでどうしたものかとググっていたら

https://www.mubit.co.jp/pb-blog/?p=9368

teraterm などを利用してCentOSのVPSへアクセス

centosのデフォルトユーザーは、centos です

ユーザー名 centos を入力
秘密鍵の key file 指定 例 webarena-indigo-ssh

という情報を見つけた。同じWebARENAのIndigoというサービスについての記事だが、こちらはOSをCentOS選択していて「centosのデフォルトユーザーは、centos です」この部分、もしかしてUbuntuでサーバを立てたらデフォルトユーザ名はubuntuになるのでは・・・・と思ってログインを試してみたらまさかのログインできてしまった。マニュアルにははっきりrootでログインしろと書いてあってubuntuとか一切書いてないのだが。頼むよ・・・

ユーザーのログインパスワードにもハマる

sshにログインしたら次はroot権限を自由に操るためsuに昇格する必要があるが、パスワードがわからない。調べていたら上述のマニュアル以外にこちらにもマニュアルページが存在している。一つにしてもらえないだろうか・・・。で、そのページをみてみると今度はubuntuでログインとしっかり書いてある。あの、大手一流企業のNTTのサービスですよねこれ。いろいろクオリティ低くないですかね。それはいいとして初期パスワードについて、

※ubuntuの場合、初期パスワードはインスタンス名の「i-」を除いた文字列です。

これがまたよくわからない。インスタンス名とは管理画面のインスタンスページにあるIDのことかと思って、私のインスタンスは「wmi-ubuntu1804kvmSSDx20g」という名称になっていてここから[i-]を除いたのがパスワードだと思って(ひどいパスワードだ)トライしてみるも認証できない。

WebArena VPSの初期設定でハマるところ
https://qiita.com/yujimny/items/bdc6c51c8c891f42795c

なんだけど、実際はコンパネからインスタンスの編集画面に行くと書いてある

「インスタンスID」の「i-」以降
なのね。

普通、これはわからない。わざとハマらせようとしているとしか思えないぐらい。

サーバを使ってみて

1日ほど使ってみての感想は、非常に良い。サーバスペックは1コア(Xeon E312xx 2.2GHz),メモリ1GB,SSD20GBといった構成だが、動作にもたつきもなくレスポンスもサクサクしていて実に快適に動く。実際にこのブログサイトも現在はこの360円の格安サーバに移行して稼働中となっている。別のサービス会社でvpsを月1000円ほど支払って借りているがそっちと遜色ないパフォーマンスを発揮しているような印象。導入部分では微妙な感じだったがサーバの快適さでは現時点では文句のつけようがない。