XAMPP for mac で MySQL Workbenchを動作させる。

Macには標準でapache搭載されているのですが、DBの設定とかその他面倒でしょうがない。
というわけでXAMPPのmac版があったのでインストールしました。

http://www.apachefriends.org/jp/xampp-macosx.html

これは、公式サイトで丁寧に説明してくれているので、何の問題もなくインストール〜動作しました。
DL後にXAMPPのフォルダごと/ApplicationにD&D。以上終了。
この際ホームディレクトリが/Application/以下になる違和感はありますが問題なしです。

さらに、ここから
ER図が簡単にかけてしまったり、そこで作成したモデルをそのままDBと同期させたり出来る便利ツール
MySQL Workbenchを使うときにいろいろ設定が必要でした。

http://www-jp.mysql.com/products/workbench/

といってもMySQLのスタートストップでしかないのですが。

MySQL Workbenchを立ち上げて、一番右下
"Manage Server Instance"から設定画面
"System Profile"タブ内を以下のように設定

System Type:Mac OS X
Installation Type:Custom(なければデフォルト)
Configration File:/Applications/XAMPP/etc/my.cnf
Instance Name:mysqld

Start MySQL:/Applications/XAMPP/xamppfiles/xampp startmysql
Stop MySQL:/Applications/XAMPP/xamppfiles/xampp stopmysql
Check MySQL Stats:ps xa | grep "/Applications/XAMPP/xamppfiles/bin/[m]ysqld"

以上です。
Server Statsは特に変更していませんが動いてます。

Gmailで未読メールのみを表示させる

is:unread

で検索をする。

Gmailには普通のメーラーに標準装備されているような未読のメッセージのみを表示させる
機能がないので、不便をしていましたがこれで解決。

かつ

label:xxx is:unread
で検索をすればラベル内で検索出来ますし

in:inbox is:unread
でinbox内の未読のみを表示出来ます。
 

これは便利ですね。

xmlをパースしてテーブルで表示

xmlデータをphpで表示する方法。
使用するのは

simplexml_load_file($file);

という関数。

例えばこんなxmlファイルがあったとします。

[member.xml]


<?xml version="1.0" encoding="UTF-8" ?>

<data>
  <members>
    <member>
      <kanjiName>高橋真依子</kanjiName>
      <nicname>まいち</nicname>
      <profile>ジェリガです</profile>
    </member>
    <member>
      <kanjiName>山本優希</kanjiName>
      <nicname>ゆうき</nicname>
      <profile>ジェリガ2です</profile>
    </member>
    <member>
      <kanjiName>森摩耶  </kanjiName>
      <nicname>もりまや</nicname>
      <profile>ジェリガ3です</profile>
    </member>
  </members>
</data>

で、これを表示。

<?php
$file = "./member.xml";
$d = simplexml_load_file($file);

echo "<table>";
foreach($d -> members -> member as $data){
  echo "<tr><td>";
  echo $data -> kanjiName;
  echo "</td><td>";
  echo $data -> nicname;
  echo "</td><td>";
  echo $data -> profile;
  echo "</td></tr>";
}
echo "</table>";
?>

ポイントはどこが配列になっているか。
var_dumpして、ループになるところをしっかり把握すること。

配列を改行区切りで表示

<html>
  <script type="text/javascript">
    var ary =  new Array();
    ary.push('maichi');
    ary.push('maya');
    ary.push('yuki');
    
    var a = "\n"
    var b = ary.join( a ); 
  
    alert( b );

  </script>
</html>

とは言ってもOS毎に改行コードは本来違うので、

if(navigator.userAgent.indexOf == "Mac")

みたいなことをしなければならないのですが、
最新技術を結集したOSなので、別に平気なんだそうです。

連想配列を比較して差を求める

前回エントリの配列がハッシュだったとき。

<?php
$ary1 = array('katou'=>1,'shibasaki'=>1,'aoi'=>1,'kitagawa'=>1);
$ary2 = array('katou'=>1,'shibasaki'=>1,'kitagawa'=>1);

$a1 = array_keys($ary1);
$a2 = array_keys($ary2);

foreach ( $a1 as $item ){
  $a = array_search($item, $a2);
  //var_dump(array_search($item, $ary2));
  if ( $a === false ){
    echo ($item);
  }
}
?>
array_keys();

連想配列のkey値だけを取って、それを新しい配列にして比較しました。

って、これは本質的じゃないような気がするなー。

配列を比較して差を求める 2

前回のエントリでarray_diffという関数で配列の差を求めましたが、
これを、別の方法で実現。

<?php
$ary1 = array('katou','shibasaki','aoi','kitagawa');
$ary2 = array('katou','shibasaki','kitagawa');

foreach ( $ary1 as $item ){
  $a = array_search($item, $ary2);
  if ( $a === false ){
    echo ($item);
  }
}
?>


//$ary1を存在する分一つずつ$itemに入れ替えて、
//$ary2の中から$itemを探す。その結果を$aとして
//$aがfalse(つまり見つからなかったとき)
//その時の$item($ary1にあって$ary2になかったもの)をechoする。