PHPでクラスを多重継承したいなって思ったらトレイトを使用しよう!

レガシーな環境を引きずって開発している人なんかはずっと「PHPはクラスの多重継承が出来ないよね」って思っているのではないでしょうか。あ、僕もそう思っていましたけどね。

なんとPHP5.4からはトレイトという機能を使って多重継承をすることが出来るようになったんです!ってクラス自体を継承するわけではないので多重継承ではないのですが、多重継承でやりたかったあんなことやこんなことが出来るようになったよと言うことなので試してみました。

この記事を読む ≫

これは便利!Sublime Text3 でマークダウンのプレビューを表示させる方法

以前の記事で紹介したEvernoteとSublime Text3を連携してマークダウン方式で入力する方法を紹介しましたが、アップデートしてEvernoteに反映するまでどのように表示されるのかわかりませんでした。

しかしSublime Textにマークダウンのプレビュー機能を追加すれば、リアルタイムに編集内容を確認できるようになるとのこと!早速試してみましたので、その設定方法を紹介します!

この記事を読む ≫

爆速でWordPressのテーマを作成する方法

WordPressのオリジナルテーマ作ってみたい!でも、覚えることも多そうだしなんか難しそう。自分にはムリなんじゃないかとか、そう思ったことは無いでしょうか。

確かにWordPressは機能豊富で一からしっかり理解することはハードルが高いです。しかし、割りきって必要最小限の基本的な機能のみのテーマであれば、爆速(10分以内)でオリジナルテーマ作成することができるんです!

この記事を読む ≫

セッションハイジャックを防ぐ7つの方法

会社のブログに寄稿させていただきました。
PHPのセッション情報をデータベース(MySQL)に保存するぜ!

こちらの記事ではセッション情報をDBサーバーに保存させて、ロードバランサーで接続するサーバーが切り替わってもセッションが維持される方法について記載しましたが、セッションハイジャックについては言及しておりません。ということで今回はセッションハイジャックを防ぐ方法について紹介します。

この記事を読む ≫

MySQLで使ってないインデックスを調べる方法

MySQL5.5から統計情報を収集するperformance_schemaというテータベースが利用できるようになりました。そしてMySQL5.6ではperformance_schemaデータベース内にtable_io_waits_summary_by_index_usageというテーブルが追加されていました。

え!?これってもしかしてインテックスの使用状況がわかるんじゃない?って期待が頭をよぎりましたので調べてみました。

この記事を読む ≫

InnoDBの8KBの壁にぶち当たったら。

InnoDBの行の最大長は約8KBらしい。

意外と少ない。。。

運用中のサービスがこんなエラーを吐いていました。。。

Got error 139 from storage engine

マジですか。これが噂の「InnoDB 8KBの壁」ですか。。。

設計段階であればテーブル縦分割とかテーブル構造自体を変えちゃえ!ってなるかもしれないですが、運用中のサービスですし、できるだけ全体へのインパクトは少なくしたい(アプリケーションは改修したくない)。って時にテーブルのROW_FORMATを変更して対応しましたよ、って話です。

この記事を読む ≫

MySQLのログに InnoDB: Error: Table “mysql”.”innodb_table_stats” not found. て出てた時の対処法

MySQLのログにエラーが出力されておりました。

2014-11-12 20:58:34 7ff0ac4fb700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
2014-11-12 20:58:34 7ff0ac4fb700 InnoDB: Recalculation of persistent statistics requested for table "wordpress"."wp_commentmeta" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.

まあ、Wordpressは問題無く動いているし、「Wordpressのアップデートミスったかなぁ。ストレージエンジン変更しまくってたし、またいつかリストアでもしよ。」なんて考えていたのですが、同じ問題にぶち当たっている人がいたので、見てみたところMySQL5.6のバグらしいとのこと。

この記事を読む ≫