M4 MacBook Pro 入手

イメージ
 少し前から出る出ると言われていたM4のMacBook Proの噂を、気にしていましたが…。 発表→即発注! 10月30日に発注しましたが、発売日が11月8日で、自宅への配送が11月12日というスケジュールでした。 仕様は、 ・CPU:M4 ・メモリ:32GB ・SSD:1TB ・96W UCB-C電源アダプタ これに、ソフトウエアを追加(学生・教職員向けPro Appバンドル) ・Final Cut Pro ・Motion ・Compressor ・Logic Pro ・MainStage 少々盛ったおかげで、結構な金額になりました。 ただ、これまで使用していたM1 MacBook Proが6万円強で下取り可能ということでしたので、かなり嬉しい状況です。  4年間使用して、20万→6万なので、十分元が取れた気がしますね…。 移行アシスタント稼働 着弾したので、早速起動しました。 移行アシスタントを使えば、Thunderbolt経由なので結構速そう。 ということで、設定し開始! およそ、1時間ほどの予想時間でした。(300GB程度かな…。) 移行後の調整  今の移行アシスタントは、非常にしっかり動作してくれて、これまでの環境をすっかり持っていってくれました。  ただ、一部のWeb系のソフト(slackやsteamなど)で、再認証を行わないといけないものだけ手間がかかりました。 まぁ、全く問題ないレベルの作業です。 開発系の環境は、再設定しようと思い、homebrewを一旦すべて削除した上で、入れ直しを行いました。  バージョンはすべて新しめのものに差し替えて…。  ここまでで、約1日かかってますが、ほぼ運用開始可能な状況に。 とりあえず使った感想  速度は非常に満足なレベルです。  バッテリーの持ちが尋常じゃないです。  昨日、講義でプロジェクタ・外部ディスプレイ・内蔵ディスプレイで表示させながら、午前3時間、午後3時間フルに使用しましたが、帰るときには50%くらい残っていました。  90%以上充電されていれば、通常の使い方であれば丸2日は十分に使えそうです。 ACアダプタを念の為持っていきますが、出番はないです…。 (96Wのアダプタにする必要はなかった気がする) もう少し、色々と試して見ようかと思っています。 ちなみに、単純なBenchmarkの結果は以下の通り

ソースコードを読んで解決

些細なミスでハマった

ある案件で、FuelPHPを使って開発していた。
ローカルマシンのApacheとMySQLを使った標準のWebアプリ。

ただ、今回はじめてまともにFuelPHPを使ったので、若干なれるのに手間取った。

さて、良い感じに仕上がってきて、本番環境に準備してデプロイすることに。
お客さんがこれまで使っているというSAKURA Internetのレンタルサーバを追加で借りてもらい、設定することに。

SAKURAサーバを使ったことがある人は分かると思うんだけど、MySQLが別サーバになっている。
でもって、契約してあるサーバからしか接続が出来ない仕様。
まぁ、これも理解できる。

そこで、FuelPHPのconfigにあるdb.phpを新規に編集する。

config-----------db.php
 +- development--db.php
 +- production---db.php


共通の設定などは、config直下のdb.phpに書いておき、開発用、本番用と別々の設定で運用できる。

共通のdb.php

<?php
return array(
 'default' => array(
   'type' => 'mysqli',
   'connection' => array(
     'host' => 'localhost',
     'port' => '3306',
     'database' => 'dbname',
     'persistent' => false,
     'compress' => true,
   ),
   'identifier' => '`',
   'table_prefix' => '',
   'charset' => 'utf8',
   'enable_cache' => true,
   'profiling' => false,
   'readonly' => false,
 ),
);

developmentのdb.php

<?php
return array(
  'default' => array(
    'connection' => array(
      'username' => 'username',
      'password' => 'password',
    ),
  ),
);


productionのdb.php

<?php
return array(
  'default' => array(
    'connection' => array(
      'host' => 'mysqlxxx.db.sakura.ne.jp',
      'username' => 'userxxxx',
      'password' => 'passxxxx',
      'database' => 'user_dbname',
    ),
  ),
);




と、こんな感じの設定になっていた
まあ、ローカルのテストでは、何も問題なく動作していたので、
本番用の設定を書き足してOverrideすれば問題なく動くはず…。

意味のわからないエラー発生

さて、実際にテストしてみると動かない。
ログを見ると、

Uncaught exception Fuel\Core\Database_Exception: mysqli::real_connect(): (HY000/2002): そのようなファイルやディレクトリはありません

いやいや、別にファイルの読み込みとかしているわけじゃないし…???

ということで、原因を探すも一向に解決しない。

あれやこれや設定を変えてみるが、エラーがなくなることはなく、動作しない。
何かがおかしい…。

そこで、coreにあるフレームワークのソースを読むことに。
fuel/core/classes/database/mysqli/connection.php で起きているので、ここのconnect()あたりを読む。

try
{
  if ($socket != '')
  {
    $port = null;
  }
  elseif ($port != '')
  {
    $socket = null;
  }
  else
  {
    $socket = null;
    $port = null;
  }

  $host = ($persistent) ? 'p:'.$hostname : $hostname;

  // Create a connection and force it to be a new link
  if ($compress)
  {
    $mysqli = mysqli_init();

    $mysqli->real_connect($host, $username, $password, $database, $port, $socket,MYSQLI_CLIENT_COMPRESS);

    $this->_connection = $mysqli;
  }
  else
  {
    $this->_connection = new \MySQLi($host, $username, $password, $database,$port, $socket);
  }
すると、接続に使うための変数をチェックしたりして、実際に接続するところでエラーが起きている。

まずは、各変数をechoで出力して確認してみる。

あれれ? $hostだけがnullになっている。これでは接続できない。
でもって、$hostはというと、
$host = ($persistent) ? 'p:'.$hostname : $hostname;
ここで、hostnameを使って設定…。おや?

先程の、db.phpをよく見てみると

'host' => 'localhost', とか、'host' => 'mysqlxxx.db.sakura.ne.jp',
って書いている。

いや、ここは
'hostname' => 'mysqlxxx.db.sakura.ne.jp'
と書かないと、$hostに設定されないじゃないか…。

そう、ミスはここにあった。
hostnameを拾って、hostを作り、このhostに接続する。
設定がなければ、localhostへ接続するはず。

なので、もともとDBがlocalに存在していれば、書き間違えていても動作する。
しかし、外部のdbサーバに接続するためには、正しく書いていないと動作しない訳だ。


初めからソースを見れば早く気づいたかも…

ここにたどり着くのに、約3時間格闘してしまった。
無駄に、設定変えたり、検索したり、テストコード書いたり…。

早くフレームワークのソースを読めば気づいたかもしれない。
無駄な作業をしたから、結果的に気づいたのかもしれない。
この辺りって、因果関係が微妙な気もするが、ソースが有るって素晴らしいな。


ということで、まさかの設定ファイルの書き損じが、思わぬエラーを引き起こしてくれたという、情けない原因だった…。

2度と起こさないためにも、備忘録として記録。
あ〜恥ずかしいミスだ。


コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ