2014年11月30日日曜日

WordPress: 親を持たないタームだけを取り出す

階層構造を持つタクソノミーで親を持たないタームを取り出す方法。
トップレベルだけが取得できる。
$top_level_terms = get_terms('my_taxonomy', array(
    'parent' => 0
));

2014年11月29日土曜日

WordPress: エラー判定

WordPress の関数はエラー発生時に WP_Error クラスのデータを返す。
http://wpdocs.sourceforge.jp/クラスリファレンス/WP_Error

これは is_wp_error() 関数で判定できる。
http://wpdocs.sourceforge.jp/関数リファレンス/is_wp_error

2014年11月28日金曜日

WordPress: wp_editor() の高さ

wp_editor() の第3引数のオプションとして editor_height を指定すると、
WYSIWYG エディタの高さを調節できる。

wp_editor('', 'editor', array('editor_height'=>100));

wp_editor | WordPress Codex
http://codex.wordpress.org/Function_Reference/wp_editor

2014年11月27日木曜日

WordPress: 現在表示しているページのタクソノミーを取得

WordPress ループ内で wp_get_post_terms() で取得できる。
結果は配列で返される。
// カスタムタクソノミー 'taxonomy_type' にセットされた値(ターム)を取得
$term = wp_get_post_terms($post->ID, 'taxonomy_type')[0]->name;

2014年11月26日水曜日

JSON の文字列にシングルクォートが使えない

JavaScript のオブジェクトではシングルクォートでもよいが、
JSON ではダブルクォートのみ使用できる。
{
    "key1": "value1",  // これは OK
    'key2': 'value2'   // これは NG
}

2014年11月25日火曜日

PHP: short_open_tag と が衝突する場合

<?xml ~ ?> を echo すればよい。

echo '<?xml version="1.0" encoding="utf8"?>';

php.ini の設定を変える場合は short_open_tag を On にする。
ただし php.ini の設定を変える場合は他のスクリプトに影響が出る可能性があるので要注意。

2014年11月24日月曜日

WordPress: 特定の固定ページだけテンプレートを変える

固定ページのテンプレートは、通常 page.php (なければ index.php)が使われる。

特定の固定ページだけ専用のテンプレートを使う場合はスラッグを使うのが簡単。

まず、固定ページ作成画面の右上「表示オプション」から、
「スラッグ」にチェックを入れる。


最下部にスラッグ入力欄が表示されるので、
半角英数字でわかり易い名前を入力する。


テンプレートディレクトリに page-[スラッグ名].php を作成すると、
それを page.php の代わりに使用してくれる。

2014年11月23日日曜日

WordPress: パーマリンク設定で 404 エラーが出る場合

.htaccess が有効になっていない可能性が高い。
apache の設定ファイル(httpd.conf) で対象ディレクトリが

AllowOverride All

になっていることを確認する。

2014年11月22日土曜日

WordPress: 困ったら読むドキュメント

WordPress では Codex という、Wiki 形式のドキュメントが存在する。
http://codex.wordpress.org

ほとんどの言語は公式サイト内に設置されているが、
日本語版は別途こちらで作成されている。
http://wpdocs.sourceforge.jp

基礎的な内容からカバーされているので最初はこちらから読んでいくのが良い。

2014年11月21日金曜日

WordPress: style.css のコメント(ヘッダー)

テーマフォルダに入れる style.css の先頭にテーマの説明を書く。

Theme: テーマ名
Theme URI: テーマのURL
Description: テーマの説明
Author: 作者名
Version: テーマのバージョン
License: テーマのライセンス
License URI: ライセンス本文へのリンク
Tags: テーマ検索で参照されるタグ

テーマで使用できる項目は以下のとおり。
  • Author (テーマ)
  • Author URI (テーマ)
  • Description (テーマ)
  • Status (テーマ)
  • Tags (テーマ)
  • Template (テーマ)
  • Theme Name (テーマ)
  • Theme URI (テーマ)
  • Version (テーマ)

詳細はこちら
http://wpdocs.sourceforge.jp/File_Header

2014年11月20日木曜日

PHP: コロン( : )を使った制御文の書き方

PHP では if, while, for, foreach で {} の代わりに : を使った書き方がある。

http://php.net/manual/ja/control-structures.alternative-syntax.php

// if 文の書き方2通り
if(true) {
    echo 'yes';
}

if(true) :
    echo 'yes';
endif;

// while 文の書き方2通り
$i = 0;
while($i++ < 5) {
    echo $i;
}

$i = 0;
while($i++ < 5) :
    echo $i;
endwhile;


// for 文の書き方2通り
for($i = 0; $i < 5; $i++) {
    echo $i;
}

for($i = 0; $i < 5; $i++) :
    echo $i;
endfor;

// foreach 文の書き方2通り
$numbers = array(1, 2, 3, 4, 5);
foreach($numbers as $number) {
    echo $i;
}

$numbers = array(1, 2, 3, 4, 5);
foreach($numbers as $number) {
    echo $number;
}

// switch 文の書き方2通り
$i = 2;
switch($i) {
    case 1:
        echo '1';
        break;
    case 2:
        echo '2';
        break;
    case 3:
        echo '3';
        break;
}

$i = 2;
switch($i) :
    case 1:
        echo '1';
        break;
    case 2:
        echo '2';
        break;
    case 3:
        echo '3';
        break;
endswitch;
それぞれ { が : へ
} が endif; endwhile; などへ変わる。
動作は全く同じ。

2014年11月19日水曜日

Apple Watch 向けの開発キットが配布

https://developer.apple.com/watchkit/
Apple Watch 向けのアプリデザインガイドと、
開発キットが含まれた Xcode 6.2 のベータ版が配布開始。

ユーザインタフェースのガイドラインなども出ている。 https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Conceptual/WatchHumanInterfaceGuidelines/index.html

2014年11月18日火曜日

PHP: crypt() で SHA-256 を使う

PHP でユーザのパスワードをハッシュ化して保存する場合は、
password_hash() が推奨されているが、
PHP 5.5 以上でなければ使用できない。

PHP 5.4 以下では crypt() を使用できる。
crypt() ではハッシュ関数として MD5 や SHA-256 などいくつか使用できる。
SHA-256 以上が現在推奨されているようなので、SHA-256 を使用する。

crypt() ではソルトの先頭のパターンによってハッシュ関数が決まる。
SHA-256 でソルトの先頭を "$5$" にすればよい。


2014年11月17日月曜日

PDO: 接続するDBの指定

PDO では DSN(Data Source Name) で接続先の DB を指定する。
http://php.net/manual/ja/pdo.construct.php

MySQL の場合の DSN は
mysql:ホスト名;ポート;DB名;文字コード

のようになる。
詳細はこちら
http://php.net/manual/ja/ref.pdo-mysql.connection.php


その他、対応しているDBはこちら
http://php.net/manual/ja/pdo.drivers.php

2014年11月16日日曜日

JavaScript: 小数点の計算の誤差対策

JavaScript では少数の計算時に丸め誤差が発生する。
例えば
var result = 4.225 * 100;
console.log(result); // 422.49999999999994

自動見積もりなど計算ツールを作成する際には注意が必要。
上記の場合は Number.toFixed() で一旦文字列に変更すると誤差を回避できる。
var result = (4.225 * 100).toFixed(1);
console.log(result); // 422.5

少数の計算箇所に toFixed() を挟むようにする。

2014年11月15日土曜日

PDO: テーブルから 1 つのカラムを配列で取得

fetchAll() に PDO::FETCH_COLUMN を渡すと、
1つのカラムを配列にして返してくれる。

function get_names() {
    $pdo = new PDO($dsn, $config['dbuser'], $config['dbpass']);
    $sth = $pdo->preapre('SELECT `name` FROM `my_table`');
    if(!$sth->execute()) {
        return false;
    }
    return $sth->fetchAll(PDO::FETCH_COLUMN);
}

get_names(); // ['tanaka', 'satou', 'suzuki', ...]

2014年11月14日金曜日

チャットワーク:不要なファイルの削除

チャットワークは無料会員の場合、デフォルトで 10 GB までファイルをアップロードできる。
アップロードしたファイルは、画面右上の「ファイル管理」ボタンで確認・削除可能。


2014年11月13日木曜日

MacPorts: php56 + apache2.2 で PHP が動作しない場合

まず php56 の他に、 php56-apache2handler が必要。
これを入れると apache2/modules に PHP のモジュールが作成される。
$ sudo port install php56-apache2handler

その後、インストールログにしたがって以下を実行する。
$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php56.so

Apache を再起動して .php ファイルが動作するか確認。
$ sudo apachectl restart

これでも実行されない場合は、httpd.conf に以下を追加すれば動くはず。
AddType application/x-httpd-php .php

2014年11月12日水曜日

Bootstrap: 枠付のテーブル

通常のテーブル
<table class="table">
    <tr>
        <td>りんご</td>
        <td>¥100</td>
    </tr>
    <tr>
        <td>みかん</td>
        <td>¥200</td>
    </tr>
</table>


枠付のテーブル
<table class="table">
    <tr>
        <td>りんご</td>
        <td>¥100</td>
    </tr>
    <tr>
        <td>みかん</td>
        <td>¥200</td>
    </tr>
</table>

2014年11月11日火曜日

iPhone + Mac の Wifi デザリング

手持ちの iPhone を 4G 回線などに接続した状態で、
Mac の右上メニューの Wifi をクリック。
自分の iPhone が表示されるので、選択。

接続後、自動的にパスワードが設定されて通信できるようになる。


2014年11月10日月曜日

Mac: BNicoAlert にログイン出来ない場合

アプリケーションから「キーチェーンアクセス」を起動
ログイン、iCloud で nicovideo で検索すると secure.nicovideo.jp が引っかかる

ダブルクリックして、パスワードを表示をON。
ここへ古いパスワードが入力されいる場合はログイン出来ない。
新しいパスワードを入力して「変更内容を保存」をクリック。

すべての secure.nicovideo.jp のパスワードを変更するとログイン出来るようになる。

2014年11月9日日曜日

Blogger の jp ドメインが表示されなくなった

ここ2日間ほどこのブログが表示されていませんでした。
サーバの障害が発生していた模様です。


2014年11月8日土曜日

SQL: テーブル内の最初・最後の日付取得

レコード(行)内に日付が含まれるテーブルから、
最初の日付と最後の日付を取得するサンプル。

my_table の date_column が Date 型の場合

SELECT MIN(`date_column`) AS first_date MAX(`date_column`) AS last_date FROM `my_table`'

2014年11月7日金曜日

PHP: PDO ではカラム名に変数をバインドできない

PHP の PDO では bindParam() や bindValue() で、
SQL に安全に値を埋め込むことができる。

しかし ORDER BY や GROUP BY などで、
上記の関数のようにカラム名を変数で指定するための関数は準備されていない。

カラム名を変数からセットしたい場合は、
以下の様な感じで、許可するカラム名リストを作っておき、
その中のいずれかであれば直接埋め込むという形式がよさそう。
http://stackoverflow.com/questions/2542410/how-do-i-set-order-by-params-using-prepared-pdo-statement

値チェックせずに直接埋め込まないように注意。

2014年11月6日木曜日

MacPorts: PHP5.6 をデフォルトの PHP として使う

PHP5.6 をインストール
$ sudo port install php56

デフォルトのバージョンを 5.6 にする
$ sudo port select php php56

バージョンが変わったことを確認
$ php -v
PHP 5.6.2 (cli) (built: Nov  7 2014 02:29:59) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

2014年11月5日水曜日

Xcode: 余計なインデントがされる

メニュー > Preferences > Text Editing > Indentation タブ

で下の方にある Automatic indent for: のチェックをすべて外す
とりあえず余計なインデントはされなくなる。

その状態で必要なものだけチェックを入れればOK。


2014年11月4日火曜日

phpMyAdmin: #2002 MySQLサーバにログインできません

MacPorts でインストールした phpMyAdmin がタイトルのエラーを出力してログインできなかった。

原因は MySQL の skip-networking が ON になっていたこと。
$ sudo vim /opt/local/share/mysql56/support-files/macports/my.cnf

skip-networking の行を削除して MySQL を再起動するとログインできるようになった。

$ sudo /opt/local/share/mysql56/support-files/mysql.server restart

2014年11月3日月曜日

iPhone6: 2本目の指紋を登録

設定 → Touch ID とパスコード → 指紋を追加
で2本目以降の指紋も登録しておける。

両手の親指&人差し指を登録しておけば足りそう。

参考

2014年11月2日日曜日

Mac:デフォルトで入っている読み上げ音声

システム環境設定 → 音声入力と読み上げ → テキスト読み上げ → システムの声 → カスタマイズ




英語(アメリカ合衆国) ー その他
に登録されている声は面白いものが多い。



Good News  は選択した英語をリズムに合わせて読み上げる、
Bubbles は水の中でしゃべっているような声、
他にもいろいろ。

チェックを入れて OK ボタンを押すと、
システムの声で選択できるようになる。

「キーを押したときに選択しているテキストを読み上げる」にチェックを入れた状態で、
英文を選択後、 alt + Esc で読み上げてくれる。

2014年11月1日土曜日

Yosemite: Safari の辞書から Wikipedia を削除

Magic Trackpad を使っている場合は、
3本指タップで単語の意味を調べることができる。
(日本語、英語問わず)

デフォルトだと英単語を調べた時に、
英語版の Wikipedia の内容も表示される。



Wikipedia の方は使わないのでオフにしてみる。

アプリケーションから「辞書」を起動。


メニューから環境設定を開く。
Wikipedia のチェックを外すと、Wikiepdia が表示されなくなる。