配列の要素をフィルタリングする[PHP]

配列が空かどうかの判定でつかう

変数ならisset()やenpty()で中身が空か判定できますが、配列ではこれらの関数がつかえません
そこでarray_filter()をつかいます
値がない要素は返さない関数です
つかったあとにisset()やenpty()と組み合わせて使用すると便利です

特定の文字列であるかどうかの判定でつかう

function hyphen($result) {
  if ($result != "--") {
    return true;
  }
}

print_r(array_filter($sample_arr, "hyphen"));

functionをつくます
この例でいきますと値に"--"がある要素は削除されます

マニュアルには「奇数のみ取り出す」「偶数のみ取り出す」といった例がありますので、その都度 function をつくることによって処理のバリエーションが増やせます

PHP: array_filter - Manual

Railsのインストール[Ruby][Rails]

環境

ConoHa メモリ1GBプラン
CentOS 6.5(64bit)
Ruby 2.1.2

導入方法

今回はGemfileがある場合のやりかたです
アプリケーションを置くディレクトリを設置し、移動します

(追記)
公式のチュートリアルはみてないです
自己流です
次回はrailsの公式をみてやります

% mkdir sample_app
% cd sample_app

下記Gemfileを設置する

Gemfile

bundle installします
これで必要なgemが入ります

bundle install --path=vendor/bundle

アプリケーションを作成します
途中Gemfileを上書きするか聞かれるのですが、私は"no"にしました

% bundle exec rails new .

Overwrite /home/boll/src/study_rails/helloworld/Gemfile? (enter "h" for help) [Ynaqdh] n

ローカルでサーバを起動します

% bundle exec rails s -b [VPSのグローバルIPアドレス]

http://[VPSグローバルIPアドレス]:3000にアクセスします
これでページにアクセスできれば成功となります

配列の値から文字列を取り除く[PHP]

数値にカンマが混ざっている場合があります
入力フォームから値を得たときなどです
DBの型が数値型の場合、カンマなどがあるとエラーになります

そこで配列内の任意の項目からカンマを取り除く処理をしたいと思います

$smaple_arr = array("id"=>"100", "item"=>"book", "price"=>"1,500", "amount"=>"30,000");
print_r($smaple_arr);
// Array ( [id] => 100 [item] => book [price] => 1,500 [amount] => 30,000 ) 

// カンマを取り除く
$numeric = array("price","amount");
foreach($numeric as $k){
  $smaple_arr[$k] = str_replace(",", "", $smaple_arr[$k]);
}
print_r($smaple_arr);
// Array ( [id] => 100 [item] => book [price] => 1500 [amount] => 30000 )

str_replace()は置換をする関数です
","を""に置換することにより、カンマを取り除くことができました

PHP: str_replace - Manual

条件分岐をワンライナーでかく[PHP]

条件分岐分岐をかくと{}のような中括弧だらけになりますし、行数が増えます
単純な処理でしたらワンライナーでかけばすっきりします

しかし、可読性が著しく低下しますので個人でつかうときは便利ではないでしょうか

前回の記事をサンプルにやってみます

catoidrobo.hatenablog.com

if($sample_str != ""){
  foreach(explode(",",$sample_str) as $k=>$v){
    $str_arr[] = explode("|",$v);
  }
}

if($sample_str != "") foreach(explode(",",$sample_str) as $k=>$v) $str_arr[] = explode("|",$v);

このようになります
ほかにも下記のようなこともできます

$num = 10;
if($num > 20){
  $msg = "bigger than 20";
}else{
  $msg = "smaller than 20";
}
echo $msg; //smaller than 20

$num = 30;
$msg = $num > 20 ? "bigger than 20" : "smaller than 20";
echo $msg; //bigger than 20

ifとelseでもワンライナーでかけます
かけますが、私は最初をみたときに構文が理解できませんでしたので、誰かとやるときはおすすめできません

文字列を配列に変換したいとき[PHP]

カンマ区切りやパイプ区切りの文字列を配列に変換したいときがあります
今回はkeyとvalueにしたいものをパイプで区切り、個別にはカンマで区切る配列をつくりたいと思います

$sample_str = "apple|1, orange|2, banana|3";
$sample_arr = array();

// カンマとパイプを取り除く
$str_arr = array();
if($sample_str != ""){
  foreach(explode(",",$sample_str) as $k=>$v){
    $str_arr[] = explode("|",$v);
  }
}

// 文字列から配列になる
foreach($str_arr as $k=>$v){
  if(isset($str_arr[$k])){
    $sample_arr[$v[0]] = $v[1];
  }
}

出力結果は以下のとおりです

echo $sample_str;
// apple|1, orange|2, banana|3

print_r($sample_arr);
// Array ( [apple] => 1 [ orange] => 2 [ banana] => 3 )

explode()は文字列を指定の文字で区切り配列にします
非常に便利なのでよくつかう関数です

PHP: explode - Manual

WordPressのCSSをカスタマイズするときは小テーマをつかおう

いってみよう!

WordPressの背景色を変えたいとします
ダッシュボードのテーマから背景色を変更できないテーマもあるようです

WordPressはめっちゃ複雑なのであまりテーマを弄りたくないものです
そこで便利なのが 子テーマ です
一時期WordPressのテーマをつくっていた時期があったので、そのとき知りました
詳しく知りたいひとはgoogle先生に聞きましょう

今回は下記ページを参考にさせていただきました

【重要】WordPressテンプレートのカスタマイズ前に子テーマをつくる方法CSS篇|ThePresentNote

wordpress子テーマの作り方!style.css・各テンプレートファイル・function.php の設定手順

以下スタイルシートをカスタマイズするときの手順となります

  • 子テーマのディレクトリを作成する
  • 子テーマディレクトリにてstyle.cssを作成する
  • style.cssに変更内容を書き込む
  • WordPressにログイン
  • 子テーマを適応する

子テーマをつくろう!

wp-content/themes/以下に任意の子テーマのディレクトリを作成します
子テーマのディレクトリ名を「親テーマ名_child」にすると、どのテーマの子テーマかわかるのでおすすめです

作成した子テーマのディレクトリの中にstyle.cssを作成し以下のように記述します

/*
Theme Name: 子テーマのディレクトリ名
Template: 親テーマのディレクトリ名
*/

これで子テーマでのスタイルシートの完成です
WordPressのダッシュボードへいき、外観からテーマへいきます
そうすると先ほど作成した子テーマが一覧に表示されますので適応しましょう

レイアウトが崩れる

ページを表示するとレイアウトが崩れていると思います
これは親テーマでなく子テーマのスタイルシートの内容のみが適応されているからです

これを解決するには親テーマのスタイルシートの内容をコピペするか、インポートする必要があります
今回はインポートでいこうと思うので下記のようにstyle.cssに追記します

@import url('../親テーマのディレクトリ名/style.css');

再度ページへアクセスすると正しいレイアウトが表示されると思います
これでテーマのコピーもどきができました

あとは自分でカスタマイズしたい内容をゴリゴリ書いていきます
今回の場合ですと背景色の指定ですね
子テーマの内容がインポートした親テーマのスタイルシートより優先されます

まとまってない

スタイルシート以外にも各種テンプレートファイルとfunctions.phpも、子テーマとして扱えます

指定通りの背景色へ変更しましたが、依頼主はしっくりこなかったようです

iPhoneの復元でハマった話

そうiPhoneならね

つい先日iPhone6しました
そのときの復元で時間がかかったのでそのときのメモをシェアします

復元中iPhoneをいじる

バックアップは予めとっていた
MaciPhoneをつないで復元開始
iPhoneいじってiCloudとかタッチIDとかSiriとかの初期設定を済ます
iTunesでのステップが終わるのを待つ
ステップが終わったらリンゴマークの代わりに「適応するまで待ってください」的なのが出る
アプリが全く入らない
数時間待つ

キレてバッテン押して復元をやり直す

最新版にしようぜとiTunesにいわれたので復元の前にiPhone6のiOSを8.1.1から8.1.3にする
iPhone6は8.1.1でバックアップは8.1.3だった
ステップが終わるまでiPhoneの初期設定は我慢する
なんかアプリが入ってるっぽい

復元できた

アップルマークになったのでiPhoneの初期設定
初期設定中にiCloudの設定あたりで邪魔しないように前のiPhoneの電源を切ってみる
初期設定完了
アプリが入ってることを確認
関係ないアプリがめゃくちゃ入ってておこ
古いほうのiPhoneのLINEをとりあえず削除
プロファイルの一括設定をする

復元メモ

失敗したときにやりとりしてたSMSがない
SMSは復元されるらしいく、前のiPhoneにはあるやつがなかったりする
使用したバックアップは昨日の夜はのものなので帰宅してからはしていない
LINEは無事だった

(追記)
ここでの「なかったSMS」とはバックアップに含まれていないSMSのこと
バックアップ後に受信したけど、復元後に新たに受信するだろうと思っていたがそんなことはなかった

iPhone6に対する所感

幅があって片手だと持ちにくい
iPhone5に比べてかなりでかいので「iPhone6 plusかな」ってなる
角が丸いので持ちにくいというか滑り落ちそう
角張ってるほうがすきかも

前のiPhoneに入ってないアプリ群が3ページ分入ってたのは何故なのか

復元とは関係ないけどiPhoneには入ってなかったアプリがなんか勝手に複数入る
iTunesから消したらいいのかな
さっき削除したのにまた勝手に入ってるのイタチごっこ
ダウンロードする瞬間をみてしまった
夜にはおさまった

まとまってない

復元が完了するまでiPhoneは触らない
iOSは合わせる

画像はiCloudをつかえばiPhone間で共有できて便利
iPhoneと旧iPhoneに同時に着信がきたときは怖かった
iPhoneで通話に出てみた
1日を無駄にした

iPhoneでは以前はこんなこともあった catoidrobo.hatenablog.com