file_get_contents()をcurl化

function getCurl($url,array $opt = []){
    $defaults = [
        CURLOPT_URL => $url,
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_TIMEOUT => 5
    ];
    $ch = curl_init();
    curl_setopt_array($ch, ($opt + $defaults));
    if(!$result = curl_exec($ch)){
        error_log('Curl error: '.curl_error($ch).' url: '.$url);
    }
    curl_close($ch);
    return $result;
}
echo getCurl('https://wp.wkbr.net');

UbuntuにSkypeをインストールする方法

本編に入る前にいくつか失敗したパターン
古いバージョンのskypeをインストール

グループチャットが使えない
web版のskypeを使う

メッセージが受信できないことが頻繁に起こる
chromebookを使っていたのでandroidアプリを使う

動作が安定せずに起動しなくなる

ということでlinux用skypeの新規バージョンのalpha版が公開されたのでそれを使う
Skype for Linux Alpha

Download Skype for Linux Alpha DEB

今までの苦労が嘘のように快適にskypeが使えている

Gnome端末の日本語表示で記号の幅を全角にする(Ubuntu 14.10用)。

Ubuntu 15.04では、プロファイル設定の「互換性」タブで設定できるので不要。この方法は機能しない。

このファイルを、~/.local/share/applications以下に、○○.desktopなどという名前で置き、実行権限をつける。
Nautilus(ファイルブラウザ)から、このファイルを開く。
端末が開いてランチャにアイコンが現れるので、アイコンを右クリック→「Launcherに登録」をクリック。
vimではまた別の問題があるので、.vimrcの中で「set ambiwidth=double」も必要。

cjk-terminal.desktop

[Desktop Entry]
Name=CJK Terminal
Comment=CJK Terminal
TryExec=gnome-terminal
Exec=env VTE_CJK_WIDTH=1 gnome-terminal --disable-factory
Icon=utilities-terminal
Type=Application
Categories=GNOME;GTK;Utility;TerminalEmulator;
StartupNotify=true
OnlyShowIn=GNOME;Unity;
Keywords=Run;
Actions=New
X-Ubuntu-Gettext-Domain=gnome-terminal

[Desktop Action New]
Name=New Terminal
Exec=env VTE_CJK_WIDTH=1 gnome-terminal --disable-factory
OnlyShowIn=Unity

ここから丸写し
https://gist.github.com/sgk/5991138

wordpressでURLに新規パラメータを追加 スマートフォンでページを分ける

例えばスマホページ等でページを分ける
パラメーターsmpがあったらスマホ用のsmp-single.phpを読み込む

// URLへのパラメーター追加を許可
add_action('init',function(){
    add_rewrite_endpoint('smp', EP_PERMALINK);
    //flush_rewrite_rules(); // DBの更新だが初回のみでよいのでコメントアウト
});
// スマホ用テンプレートの選択
add_action('template_redirect',function(){
    if(!is_single()){return;}
    $smp = get_query_var('smp', false);
    if(!$smp){return;}
    include(get_template_directory().'/smp-single.php');
    exit;
});
// パラメーターの追加
add_filter('query_vars',function($vars){
    $vars[] = 'smp';
    return $vars;
});
// urlの場合はパラメーターが空になるのでtrueに上書き
add_filter( 'request',function($vars){
    if ( isset( $vars['smp'] ) && '' === $vars['smp'] ) { 
        $vars['smp'] = 1;
    }   
    return $vars;
});

PHPでOGPを取得する

function getOGP($file,$ogps = ['title','description','image']){
    $html = @file_get_contents($file);
    if(!$html){ return false; }
    $html = mb_convert_encoding($html, 'HTML-ENTITIES','ASCII,JIS,UTF-8,EUC-JP,SJIS');
    $dom = new DOMDocument();
    $err = @$dom->loadHTML($html);
    if(!$err){ return false; }
    $return = (object)[];
    $metas = $dom->getElementsByTagName('meta');
    foreach($metas as $m){
        $prop = str_replace('og:','',$m->getAttribute('property'));
        if(in_array($prop,$ogps)){
            $return->$prop = $m->getAttribute('content');
        }
    }   
    return $return;
}
$ogp = getOGP('https://www.google.co.jp/');