【MySQL】GROUP BY句に複数のカラムを指定する方法

MySQLで、GROUP BY句を使う場合に、複数のカラムを指定できるのか?が疑問でしたが、特に問題ないようです。

つまり、GROUP BY句に複数のカラムを指定できるということです。

この点について、MySQLの公式マニュアルを確認しましたが、直接的に言及している箇所は見つかりませんでした。

ただ、間接的ながら次のページで言及されています。

http://dev.mysql.com/doc/refman/5.1/ja/group-by-modifiers.html

11.11.2. GROUP BY 修飾子

SELECT year, country, product, SUM(profit)
FROM sales
GROUP BY year, country, product;

上記のように、複数のカラムを指定できます。

ただ、複数カラムを指定する場合には、その順序に注意が必要なようです。たいていの場合、大カテゴリーを先に、小カテゴリーを後に指定すると上手くいくはずです。

カテゴリー: SQL | コメントする

【書評】最初のキホンがやさしくわかる 絵で学ぶPHP入門

最初のキホンがやさしくわかる 絵で学ぶPHP入門 (オフィス加減)の書評です。

■ 良い点

・ タイトルどおり絵が多く、わかりやすい。

・ ページにゆとりがあり、読む負担が少ない。

・ 二色刷り(オレンジ系)で見やすい。

■ 悪い点

・ 解説範囲が、入門レベルの半分ほど。(データベースは無い)

・ 解説が大まか過ぎる箇所もある。

・ 後の範囲である未読の知識が先に散見される。

■ 総評

全体として、PHP入門者(プログラミング未経験者)向けの初歩の解説書となっています。70ほどの項目を順序よく、理解しながら学べます。PHP学習の最初に読む本として、なかなかのお勧めです。

読みやすく、分かりやすい反面、詳細は省かれているところもあるので、この本だけで、PHPを実際に動かせるかというと足りない部分もあります。

データベースは扱っておらず、セキュリティは薄いので、更に、PHP本を読む必要があります。

なお、この「オフィス加減」の書籍には、つくって覚えるPHP入門  という本があるので、これとセットにして読むと、効果が最大限に発揮されると思います。

基本の文法をこの「最初のキホンがやさしくわかる 絵で学ぶPHP入門」でざっくり学び、次に、「つくって覚えるPHP入門」と進むのがオススメです。

ちなみに、自分的には、「もう少し知っておこう」という項目ごとにあるコラム欄が良かったです。

最初のキホンがやさしくわかる 絵で学ぶPHP入門

つくって覚えるPHP入門

カテゴリー: BOOK, PHP | コメントする

【HDMI】TSdrena製HAM-CHIC2を使ってみた感想とレビュー【コンポジット変換器】

HDMIコンバーターTSdrena製HAM-CHIC2の感想とレビュー。
購入後、2ヶ月ほど使ってみてのレビューになります。

■ 対象製品: TSdrena  HAM-CHIC2

■ 購入目的

HDMI出力機能のあるノートパソコン上で再生した動画を、コンポジット入力端子(赤白黄色端子)しかないテレビにつないで見るためです。

■ 満足度

おおむね満足です。点数をつけると85点くらい。

パソコンからテレビに出力した動画の映像は、期待以上に良いものでした。あまり画質にこだわらない人なら十分です。

ただし、欠点もありました。それは、テレビ上だと、文字が見えづらくなる現象です。
画像は綺麗に見えるが、文字は見づらくなります。これは、テレビの解像度が低いことが原因だと思われます。

もっとも、この問題は、DVDや動画目的で使用するのであれば、あまり問題にならないでしょう。

■ 使用環境について

まず、使用したノートパソコンですが、5年間ほど使用している、Windows Vista です。もう結構古いですね。画像出力は、HDMI端子しかありません。

そして、PC上で再生するのに用いたソフトは、次の2つです。
・ InterVideo WinDVD
・ Windows Media Player

この2つのどちらでも、問題なく使用できました。ちなみに、Windows Media Player でも動画を再生できます。

次に、テレビの方ですが、こちらも古く2006年製のブラウン管テレビ(15型テレビデオ)です。入力は、コンポジット入力端子(赤白黄色端子)しかありません。

■ 接続方法

今回の目的での接続方法は、主に2つあります。一つ目は、直接テレビにつなぐ方法、二つ目は、レコーダーを経由する方法。結論を言うと、どちらも上手くいきました。

1. パソコン →①→ HAM-CHIC2 →②→ テレビ

2. パソコン →①→ HAM-CHIC2 →②→ DVDレコーダー →②→ テレビ

矢印の①は、HDMIケーブルを表してます。②はコンポジットケーブル(赤白黄色)です。
今回は、HDMIケーブルは1m、コンポジットケーブルは1.5mを使用。
(使ったHDMIケーブル:
PLANEX ハイスピードHDMI Ver1.4ケーブル 1m 

ちなみに、DVDレコーダーを経由する方法では、ライン入力となり、再生動画を録画することができました。アナログ画質ながら、動画のバックアップ等に利用できます。

■ 上手く使うコツ

HAM-CHIC2を利用して、パソコン上の映像をテレビに映すことは、実質的に、パソコンがデュアルモニターになることを意味します。

始めは戸惑いますが、デュアルモニターとしての画面の使い方を覚えれば、すぐに慣れます。たしか、「ディスプレイの拡張」とかの設定をしたと思います。

また、音声についてですが、初期設定では音が出ませんでした。音がHDMIから出ない場合には、設定にて変更する必要があります。

パソコンの「サウンドマネージャー」でデフォルトの出力を「HDMI出力」に設定します。なお、ソフトの側では変更は不要でした。
蛇足かもしれませんが、動画ソフトを立ち上げる前に、設定を変更した方がよいかもしれません。

■ その他

補助電源: HAM-CHIC2 の商品説明では、補助電源の要否に触れられていますが、今回の使用方法では、補助電源は不要でした。

サイズ: 商品の大きさは、コンパクトで扱いやすく良いと思います。

温度: 2時間ほど利用しても、本体の熱はそれほど出ませんでした。少し暖かい程度です。

■ 今回のレビューの対象商品

TSdrena HDMI → アナログ(コンポジット) 小型コンバーター HAM-CHIC2

なお、2月ほど前に、次のような記事を書いて、TSdrena製HAM-CHIC2以外の製品についても言及しています。参考まで。
HDMI出力からコンポジット入力(ビデオ端子赤白黄色)への接続方法

(参考過去記事)
【Vista】HDMI接続すると音が出なくなる場合の対処法

カテゴリー: ガジェット | コメントする

【PSR】コーディング規約【PHP】

PHPのコーディング規約「PSR」についての覚書です。

そもそも、コーディング規約とは、「コードの書き方に関する決まりごと。プログラミング言語の文法とは異なり、様々な書き方が可能な場合にどういった書き方にするかを集団内の約束として決めたもの。」(IT用語辞典e-Words)

上記定義を見るとわかるように、「集団内の約束」としてコーディング規約は役に立つのですが、個人で一人だけでコードを書いていても、汎用的な規約に従うことは、可読性や保守性の向上などのメリットがあります。

そうした理由から、前々からコーディング規約について、それなりに気にしてはいたのですが、PHPにおいては、様々な規約があり一つに絞れませんでした。

しかし、最近になって、これが統一的な規約になりうるであろうコーディング規約を知ったので、書き留めておきます。その規約とは。

PSR(Propising a Standards Recommendation)
http://www.php-fig.org/

PSR-0  オートローディング規約
PSR-1  基本コーディング規約
PSR-2  コーディングスタイルガイド

上記サイトのものが公式なのですが、英語サイトで読むのが大変です。

そこで、
新標準PSRに学ぶきれいなPHP
http://www.slideshare.net/yandod/psrphp

スライドで、PSRの内容がわかりやくす解説されていてオススメです。

PSRの詳細は、公式や上記スライドを見ればわかるので、ここでは紹介しませんが、いずれにしても、学習の早い段階で目を通して、PSR、もしくはその他のコーディング規約に従う習慣をつけておいた方が良さそうです。

カテゴリー: PHP | コメントする

【JavaScript】window.onloadのエラー【実装されていません】

JavaScriptの window.onload で、はまったので覚書しておきます。

window.onload は、ページの読み込みをイベントとして関数を実行するためのものですが、気をつける点が一つあります。

それは、window.onload に代入する関数に引数をつけては駄目ということです。

(具体例)

//これは、エラーになる。 
window.onload = my_func(100);

//これは、エラーにならない。 
window.onload = function(){my_func(100)};

上記2つの違いは、直接、ユーザー定義関数を代入しているか、無名関数でラップしているかの違いです。

ユーザー定義関数を直接代入している場合に、引数を与えてしまうと、関数を実行した結果、すなわち、返り値が代入されてしまうため、JavaScriptの挙動がおかしくなりエラーとなります。すなわち、「実装されていません」となるわけです。

引数を与えた関数においてエラーを出さないためには、無名関数でラップしてやると上手くいきます。この場合には、関数の返り値ではなく、関数を代入することになるからです。

以上です。

カテゴリー: JavaScript | コメントする