動かざることバグの如し

近づきたいよ 君の理想に

初期化せずにHDDのパーティンションテーブルをGPTに変換する

いやー久々にハマった

状況

今まで2TBのHDDで運用してきたが、単価も安くなってきたので今回4TBのHDDを購入。例のクローン機能を使って無事にコピーまではできたが、いざディスクの拡張でコケる。

パーティションを 1.82 TiB から 3.64 TiB に拡大する  00:00:00    ( エラー )
        
以前の開始位置: 2048
以前の終了位置: 3907024064
以前の容量: 3907022017 (1.82 TiB)
要求された開始位置: 2048
要求された終了位置: 7814035455
要求された容量: 7814033408 (3.64 TiB)
libparted のメッセージ    ( 情報 )
        
partition length of 7814033408 sectors exceeds the msdos-partition-table-imposed maximum of 4294967295

sectors exceeds the msdos-partition-table-imposed maximum of 4294967295ってアーーーーーー

解決策

どうもこうもMS-DOSパーティンションテーブルは2TBが限界らしい。ってことで2TB以上対応してるのはGPTというパーティンションテーブルで、それに変換することにした。

最初HDDの中身も飛ぶのかと思ったがそんなことはなかった。オプションで-gをつけるだけ

       -g, --mbrtogpt
              Convert an MBR or BSD disklabel disk to a GPT disk. As a safety measure, use of this
              option is required on MBR or BSD disklabel disks if you intend to save your changes,
              in order to prevent accidentally damaging such disks.

恐る恐るやってみよう

# sgdisk -g /dev/sdc

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************

The operation has completed successfully.

ビビるぐらい一瞬だった。

間違ってgdiskコマンドで-gするとMBRに書き換えるとかいう罠があるので注意

man gdiskより、

g Convert GPT into MBR and exit.

オプション統一しろよ(

教訓

身の丈にあった容量を買え

MacOSをSierraにアップデートしたらbundle install nokogiriでコケる

久々にbundle installでコケた

$bundle
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Using rake 12.3.0
Using concurrent-ruby 1.0.5
Using i18n 0.9.1
Using minitest 5.10.3
Using thread_safe 0.3.6
Using tzinfo 1.2.4
Using activesupport 5.1.4
Using builder 3.2.3
Using erubi 1.7.0
Using mini_portile2 2.3.0
Fetching nokogiri 1.8.1
Installing nokogiri 1.8.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/thr3a/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/nokogiri-1.8.1/ext/nokogiri
/Users/thr3a/.rbenv/versions/2.3.4/bin/ruby -r ./siteconf20171215-25720-z066a2.rb extconf.rb --use-system-libraries
checking if the C compiler accepts ... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/thr3a/.rbenv/versions/2.3.4/bin/$(RUBY_BASE_NAME)
    --help
    --clean

何もしてないのに・・・とか思ってたけど、よく考えたらMacOSSierraに上げたわ(

OSのアップデート後はコマンドライン開発ツールの更新をしなくてはいけないらしい。

xcode-select --install

した後に

brew install libxml2

すでにインストールしてあった場合はbrew uninstall libxml2して再インストール

これでいけた

Jupyter Notebookでサジェストが出るようにする

残念ながらJupyterのデフォルトだと変数や関数のサジェストが出てこない。

でーたさいえんてぃすとの人たちはこんな辛いものを使っているのかと思っていたが、拡張機能をインストールするとできるようになる

拡張機能のインストール

Jupyter notebook extensionsをインストール

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

拡張機能の有効化

Jupyter Notebookを再起動して、 http://localhost:8888/nbextensions にアクセス

たくさんチェックボックスがあるが、「Hinterland」にチェックを入れる。

するとサジェストが出るようになる。やったね!

PHP + utf8mb4のMySQLにDB接続ができないとき

環境

MySQLに接続できない

PHPからPDO経由でMySQLへ接続しようとしてもうまくいかない。

PDOException: SQLSTATE[HY000] [102] Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/) in ****

utf8のDBには正しく接続されるので文字コードが問題っぽいところまではわかったが、そのサーバーからMySQLのコマンド経由だと普通にログインもできるし表示でもできる。むむむ

解決策

どうやらPHPからMySQLに接続するライブラリを変えなきゃいけないらしく、MySQL Native Driverってやつに変えたらいけた

まずは既存のライブラリをアンインストール

yum remove php71w-mysql

MySQL Native Driverのライブラリをインストール

yum install php71w-mysqlnd

service php-fpm restart してphp -mにいればおk

違いは?

今まではlibmysqlclient(MySQL クライアントサーバーライブラリ)が主流だったが、実はPHP 5.3以降はmysqlnd(MySQL ネイティブドライバ)も組み込まれており、今はmysqlndのほうがオススメっぽい。まぁ今時utf8mb4ですし

詳細な比較は公式ドキュメントを参照

http://php.net/manual/ja/mysqlinfo.library.choosing.phpphp.net

参考リンク