CakePHP3のBookmarkerチュートリアルでエラー

MacのEl Capitanに開発環境をこさえて、ようやくCakePHPのチュートリアル始めたと思ったら、手順通りやってたのにMySQLでエラーが。

エラーが出たのは、/bookmarks/tagged/funny/cat/gifsのところ。

Error: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #8 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'cake_bookmarks.Tags.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

手順通りなのにエラーで困ってたら、どうも原因はMySQLのバージョンによるものらしい。HomebrewでMacに入れたのはVersion 5.7.10。

脱!ゆるふわMySQL – Qiita

5.7以降でsql_modeの初期設定が変更されたらしいです。my.cnfを変更して対応してもいいんですが

mysql – Disable ONLY_FULL_GROUP_BY – Stack Overflow

SET sql_mode = ''

でも対応できるようなので、config/app.php内にある

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        ...(省略)
        'init' => ["SET sql_mode = ''"],
    ],

initにセットして対応。無事、Bookmarkerチュートリアルが完了しますた!!

SSHサーバに公開鍵を設定する方法

SSHサーバに鍵を設定

[OpenSSH] SSHサーバにパスワードなしでログインする方法 – Life with IT

ローカルから公開鍵を送信

scp .ssh/id_rsa.pub username@hostname:~/id_rsa.pub

ログインしてから公開鍵を設定

ssh username@hostname

mkdir .ssh
chmod 700 .ssh/
cd .ssh
cat ~/id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
rm ~/id_rsa.pub

scpコマンドでエラーが出た場合

bash: scp: コマンドが見つかりません – リジェクトされました

bash: scp: コマンドが見つかりません
みたいなエラーが出た場合は、openssh-clientsがサーバに入ってないのが原因みたい。

sudo yum install openssh-clients

自分用EC2サーバ設定メモ

AWS EC2 Linux開発環境 構築メモ – Qiita

こちらの記事を参考に設定。

rootパスワード設定

ec2-userでログイン
sudo su –
passwd
新パスワードを設定
確認パスワードを入力
「all authentication tokens updated successfully.」と表示されたらOK

作業用ユーザーを作成

デフォルトのec2-user以外のユーザーを作成
su –
useadd user1
passwd user1
「all authentication tokens updated successfully.」と表示されたらOK
作成ユーザーにsudo権限を与える
usermod -G wheel user1
visudo
以下行のコメントアウトを外す
#%wheel ALL=(ALL) ALL -> %wheel ALL=(ALL) ALL

SSHポート番号変更

SSHポート番号変更

sshのデフォルト22番から変更
vi /etc/ssh/sshd_config
port 22 -> それ以外(3579とか)
service sshd restart #sshd再起動

セキュリティグループの変更

コンソールのセキュリティグループからインバウンド設定にポートを追加(or変更)
タイプ:カスタムTCPルール
プロトコル:TCP
ポート範囲:3579とか
送信元:マイIPなど、接続する用途に応じて

変更後のポートに対してsshログイン可能であることを確認

日本語設定に変更

cp /etc/sysconfig/i18n ~/i18n.org
sudo vi /etc/sysconfig/i18n
LANG=en_US.UTF-8 -> LANG=ja_JP.UTF-8

最新のソフトウェアにアップデート

sudo yum update -y

タイムゾーンの変更

タイムゾーンの変更

date #確認
cp /etc/localtime ~/localtime.org
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
date #変更を確認

再起動時にUTFに戻らないように

cp /etc/sysconfig/clock ~/clock.org
sudo vi /etc/sysconfig/clock
ZONE=”UTC” -> ZONE=Asia/Tokyo”
UTC=true -> UTC=false

システム全体に反映(全てのプロセスに反映するため)

sudo reboot

メール設定

mailコマンドをAmazon Linuxにインストールする方法 – Hive Color

デフォルトでmailコマンドがないのでmailxをインストール
(…ってsendmailで送ればいい?)
sudo yum install -y mailx
echo “body” | mail -s “subj” test@test.com #送信確認

メールアドレス設定

障害時の通知用

cp /etc/aliases ~/aliases.org
sudo vi /etc/aliases
#root: marc -> root: test@test.com #変更
sudo newaliases #反映
cho test|mail root #送信確認

MacにHomebrewでjqをインストール

JSONを超絶に読みやすくする jq コマンド – WebAPIバリバリ使うor開発する人必須

awsコマンドでjsonを返すように設定したので、jsonを何とかしたい。どうやらjqという超絶便利なものがあるらしいので入れてみることに。

MacならHomebrewで入れるのが簡単。

brew update
brew install jq

多分これだけで入るはず…なんですが、自分は中途半端な理解でhomebrewを使っていたので面倒なことに。

以下余談

問題はbrew updateせずにインストールしようとしてエラーが出たこと。どうやらjq-1.4.tar.gzがダウンロードできない(404 Not Found)のが問題。そこで調べたら下記のURLにヒット。

brew で ffmpeg をインストールしようとしたら 404 エラーが出た – KRAKENBEAL RECORDS

なるほどjq.rbを修正するばいいのかと、下記のように修正。

vi /usr/local/Library/Formula/jq.rb

urlとsha1の値を修正して、brew install jqしたら無事(?)入りました。
その後、brew updateをしようとしたら下記のエラー。

brew update

error: Your local changes to the following files would be overwritten by merge:
    Library/Formula/readline.rb
Please, commit your changes or stash them before you can merge.
error: Your local changes to the following files would be overwritten by merge:
    Library/Formula/jq.rb
Please, commit your changes or stash them before you can merge.
Aborting
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

どうやら内容が変更されてしまってることを怒られてる。やっぱり…適当にしちゃいけません。そもそも先にbrew updateしなきゃいけませんよね。

ヾ(o゚ω゚o)ノ゙brew updateでエラーでたった[Homebrew] – Qiita

上記サイトを参考に修正。homebrewのある場所に移動して、
fetchして、ローカルリポジトリをリモートの最新で上書きした。

cd $(brew --prefix) #多分 /usr/local に移動
git fetch origin
git reset --hard origin/master

これでbrew updateを実行したのと同じ状態になっているはず。ふぅ、これからは気をつけよう…というかちゃんと仕組みを理解しよう…

Amazon Web Service CLIのインストール&設定など(Mac)

勉強がてら試してみたかったので。基本的には公式サイトの手順通りですんなり。

OS:Mac OS X 10.9.5 Mavericks

念のためMacに入ってるpythonのバージョン確認。2.7.5でした。

python -V
Python 2.7.5

AWS CLI のインストールと設定 – Amazon Kinesis

pip のウェブサイトからインストールスクリプトをダウンロードして実行

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
sudo python get-pip.py

pip を使用して AWS CLI をインストール

sudo pip install awscli

ここまで手順通り。

AWS CLI の設定

CLIを使うための設定。メールアドレスとパスワードで入るAWSアカウントを普段使いするのは推奨されないらしいので、操作用に全権限を割り当てたIAMユーザーを作成。AWSコンソール画面上から、作成した管理用ユーザーを選択して「アクセスキーの作成」ボタンを押して「アクセスキーID」と「シークレットアクセスキー」を取得しておく。

aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE #アクセスキーID
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY #シークレットアクセスキー
Default region name [None]: ap-northeast-1 #デフォルトの地域。これは東京。下記URL参考
Default output format [None]: json #結果の種類。json/text/tableから選択

Regions and Endpoints – Amazon Web Services

この作業が完了すれば設定OK。コマンドが使えます。

ユーザー一覧を取得してみる

aws iam list-users

{
    "Users": [
        {
            "UserName": "MyUser",
            "PasswordLastUsed": "2015-12-01T09:05:24Z",
            "CreateDate": "2015-11-21T17:51:25Z",
            "UserId": "ABCDEXXXXXXXXXXXXXXXX",
            "Path": "/",
            "Arn": "arn:aws:iam::000001111122:user/MyUser"
        }
    ]
}

こんな感じで設定したjsonで結果が帰ってきます。IAMで使えるコマンドリファレンスは下記を参考にしました。

iam — AWS CLI 1.9.9 Command Reference

ここで、IAMユーザー名をテストで適当につけてしまったけれど、コンソール画面からは変更できず、CLIからしか変更できないようなので丁度いい。変更してみることに。
IAM ユーザーの管理 – AWS Identity and Access Management

aws iam update-user --user-name MyUser --new-user-name hogehoge

–user-nameに現在のUserNameを、–new-user-nameに変更したいUserNameを指定してコマンドを叩けばOK。結果は特に返らず、コンソールから確認したら変更されてました。簡単!

その他使いそうなコマンド(課題)

下記のサイトを思いっきり参考にさせて頂きました。
AWS CLIでサービスの各種コマンドを動かしてみる(EC2編1: インスタンス) | Developers.IO

# インスタンス一覧
aws ec2 describe-instances

# インスタンスを開始
aws ec2 start-instances --instance-ids i-xxxxxxxx

# インスタンスを停止
aws ec2 stop-instances --instance-ids i-xxxxxxxx

# インスタンスを再起動
aws ec2 reboot-instances --instance-ids i-xxxxxxxx

# インスタンスを終了(消去)
aws ec2 terminate-instances --instance-ids i-xxxxxxxx

# インスタンスを作成、起動(指定したimage-idから)
aws ec2 run-instances --image-id ami-xxxxxxxx --min-count 1 --max-count 1

副腎疲労の疑いあり?

「♪もう疲れた誰か助けてよ」Mr.Children – 旅人

最近、胃腸の様子がすこぶる微妙です。日中の眠気も尋常じゃないし、食欲もいまひとつだし、腰もたまにピキっときたりして満身創痍。あかんね…

症状でいうと、背骨の両サイドを押すとイタ気持ちよくて、前にも気になってた副腎疲労と関係あるかも?とアタリをつける。そういえば最近、炭水化物もチョコもコーヒーもお酒も普通に摂取して、ストレスも増えてるし、まさに副腎疲労になるべくしてなってる気が。

普通に摂取してって言っても、自分なりの普通。チョコは6粒、お酒は1合弱は、まぁ平均程度か。コーヒーはちゃんとしたものを1日マグカップ1杯、ご飯は1日で茶碗1.5杯ぐらいは平均以下?とはいえ摂取量なんて個人差で目安にしかならないから、自分にとっては少し多めです。睡眠も短めだし、ちょっと油断してたな…

ちなみに体重は以前から少し下がって55kg台で安定。安定してるから、まぁマシでしょう。

以下、ネットで見つけた副腎疲労などに関する参考記事。

来週は試しに検査することにしたから、ちょっと気をつけなくては。

アイドルの人気と応援のこと

(アイドルに)「がんばれー」
(アイドルが)「お前がなー」

冗談っぽいやりとりでたまにある、これ。地方のライブハウスでやってるうちは、分かりやすく金銭面で支援応援できるし、その実感もあるんだろう。でも、売れるにつれて、全体に占める一人のウェイトは下がってくる。当たり前だけど。

そうなると応援してる実感は薄れてくるし、接触頻度も減るし、応援したい人の出る幕は徐々に減って、応援を必要としているステージにいるアイドルのところに去っていくんだろう。代わりは、そのアイドルに憧れや夢を持つ人たちがファンになってゆくはず。

逆に言うと憧れや夢を見せられなければ、先細りするしかない。人気が落ちてしまえば、応援タイプの人が帰ってくるかもしれないけど、ね。

すぐにブロックしないツイッター

イヤなことばかり呟くフォロワーさん。

すぐにブロックして関係を断つのも一つの方法。だけど、たまにでも賛同できる呟きがあるのなら、それをファボなりリツイなりすることで、「あ、こういう呟きはリアクションあるんだ」って感じてもらうのも一つの方法。

日々の買い物が賛成と拒否のアピールになるのと同じで、プラスにもマイナスにも意思は表明できるよねえ。

情報の食べ過ぎ

Feedlyで興味のある分野やブロガーの記事を片っ端からチェックしていると、「あれも役に立つかな、これもいつか役に立ちそうだ」なんて思って片っ端からSaveしてしまう。

いつか役に立つこともあるかもしれないけれど、大半はそうでもなくってただの暇つぶしでしかないし、読んだからといってトリビアにはなっても体系的に身につけた知識というわけでもない。

うちの母が紙袋やちょっとした容器を役に立ちそうって溜めてることに呆れてたけど、なんだ自分もやってることは同じだった。

タグ管理が苦手

久しぶりにカテゴリ欄みて、多さにひいた。

EvernoteやGmail使ってもそうだけど、カテゴリの使い方がヘタクソだ。
無駄に増やして、管理しきれなくなる。
とどのつまりは整理整頓が苦手なのと繋がってるんだろうな・・・

そう言いながら新たにカテゴリーを追加するのであった。