Hatena::ブログ(Diary)

uncertain world

2016-02-18

FadaCandyことはじめ(Mac OS X Yosemiteにて)

23:46 | FadaCandyことはじめ(Mac OS X Yosemiteにて)を含むブックマーク FadaCandyことはじめ(Mac OS X Yosemiteにて)のブックマークコメント

f:id:rin1024:20120207132506j:image:medium

ふつう、USBをさしたらlsコマンドで一覧に出てくるものだと思うし、

ましてやUSBをさしたらジャックの隣のLEDは点灯するもんだと思ってたのだけど、

いずれも反応せず動かない!?って焦ったんだけど、

ちゃんと手順をふんでインストールすると、無事動作を確認できた。

ジャックの隣のLEDは疎通ができてるって意味のLEDだった様子。


手順、メモ。

git clone git://github.com/scanlime/fadecandy
cd fadecandy/server
make submodules
make
sudo mv fcserver /usr/local/bin
fcserver

これをやってから、ブラウザで「http://localhost:7890/」を開いてFadeCandyが接続されてると一覧に出てくる。


チュートリアルはちゃんと読みましょう、ということで。

参考: https://learn.adafruit.com/1500-neopixel-led-curtain-with-raspberry-pi-fadecandy/fadecandy-server-setup


D

動作テスト

2016-01-03

Facebookを1日1時間しかみれないようにしてみた

| 01:22 | Facebookを1日1時間しかみれないようにしてみたを含むブックマーク Facebookを1日1時間しかみれないようにしてみたのブックマークコメント

年明けのリハビリにChromeのExtension書いてみた。

内容は、タイトルの通り「Facebookを1日1時間以上見れないようにする」もの。


ExtensionをDLする

ここにあります → http://sorauta.net/files/fbFilter.crx


△もむろにGoogle Chromeをひらき、アドレスバーに「chrome://extensions」とうちこむ。

f:id:rin1024:20160104011720j:image:w360

こんなページが出てくるはず


DLしたExtensionをDrag & Dropする

f:id:rin1024:20160104011835j:image:w360

ファイル名は「fbFilter.crx」です。

Dropすると、上記のようなアラートがでるので、Add Extensionをおす


インストールされたか確認するために、おもむろにfacebookをひらいてみる

f:id:rin1024:20160104012115j:image:w360

SSのとおり、残り時間が表示されていればインストール完了です!

おめでとうございます。



経過秒数後どうなるかって?

それは、やってみてのおたのしみということで(特にそんな大したことしてない)




ソースは下記。


manifest.json

{
  "name": "Internet filter",
  "version": "0.1",
  "manifest_version": 2,
  "description": "This Extension is intended to limit the viewing time of Facebook.",
  "icons": {
      "48": "icon128.jpg",
      "128": "icon128.jpg"
  },
  "content_scripts": [{
    "matches": ["https://www.facebook.com/*"],
    "js": ["script.js"]
  }]
}


script.js

var STOP_THRESHOLD = 3600; // 1日あたり、この秒数以上Facebookをみていたら閲覧制限がかかる
var TIMER_INTERVAL = 1000; // loop関数を実行する周期、ミリ秒で表記

var watchTimer;
var fbClosed = false;
var isViewer = false;

/**
 * 初期処理を行う関数
 *  ページをひらくとまずこの関数が実行されます
 */
var setup = function() {
  console.log('setup fbTiler');

  // ブラウザ上に保存されていたデータを読みだす
  var storedTimestamp = Number(localStorage.getItem("storedTimestamp"));
  // もしブラウザ上にデータが保存されていなかった場合、初期化する
  if (storedTimestamp == null) {
    console.log("initialize local storage");

    var cDate = new Date();
    storedTimestamp = Math.floor(cDate.getTime() / 1000);
    saveToStorage(storedTimestamp, 0);
  }

  // loop関数を定期的に実行するようにセット
  watchTimer = setInterval(loop, TIMER_INTERVAL);

  // 残り時間をFacebook上に表示するようにする
  var mPattern = location.href.match("/messages/([0-9a-z\.\_\-]+)");
  if ((location.pathname == "/" || (mPattern.length > 0 && mPattern[1].length > 0)) &&
      document.title && document.title.length > 0) {
    var element = document.createElement('div');
    element.id = "timeLimitView";
    element.innerHTML = " ";
    element.style.position = 'fixed';
    element.style.bottom = '5px';
    element.style.left = '5px';
    document.body.appendChild(element);

    isViewer = true;
  }
}

/**
 * 定期的に実行される関数
 *  閲覧時間の確認、表示制限の処理などを行う
 */
var loop = function() {
  // タイムスタンプ(long型)を、処理しやすいように連想配列に整形する
  var cDate = new Date();
  var cHash = getDateHash(Math.floor(cDate.getTime() / 1000));
  var storedTimestamp = Number(localStorage.getItem("storedTimestamp"));
  var sHash = getDateHash(storedTimestamp);

  // 日付が更新されたか確認
  var keys = ['Y', 'M', 'D'];
  var isDifferentDate = false;
  for (var i in keys) {
    if (cHash[keys[i]] != sHash[keys[i]]) {
      isDifferentDate = true;
      break;
    }
  }

  // 日付が更新されていた場合、閲覧秒数のカウントをリセット
  if (isDifferentDate == true) {
    cTimestamp = Math.floor(cDate.getTime() / 1000);
    console.log("update stored data", cTimestamp);
    saveToStorage(cTimestamp, 0);
  }
  // 経過時間をチェックする
  else {
    var storedViewSec = Number(localStorage.getItem("storedViewSec"));

    // 閲覧時間が、本日の制限時間を超えていた場合、表示をブロック
    if (storedViewSec > STOP_THRESHOLD) {
      //console.log("shut down facebook");
      document.body.innerHTML = '<center><img src="http://serif.hatelabo.jp/images/cache/2b0a04a1636b501e0ad202e672039491b05690d9/f9d7755e1c8f7abead4c76b1a4c5e2225aba1080.gif" style="margin:10px auto;text-align:center;" /></center>';
      fbClosed = true;
    }
    // 残り時間を更新
    else {
      if (isViewer == true) {
        document.getElementById('timeLimitView').innerHTML = (STOP_THRESHOLD - storedViewSec) + " sec";
      }
      //console.log("only " + (STOP_THRESHOLD - storedViewSec) + " second, you can enjoy facebook");
      saveToStorage(storedTimestamp, storedViewSec + (TIMER_INTERVAL / 1000));

      // TODO: test here
      //if (fbClosed == true) {
      //  location.reload();
      //}
    }
  }
}

/**
 * タイムスタンプを処理しやすいように連想配列に変換する
 */
var getDateHash = function(timestamp) {
  var d = new Date(timestamp * 1000);

  var hash = {
    Y  : d.getFullYear(), // year
    M  : d.getMonth() + 1, // month
    D  : d.getDate(), // date
    h  : d.getHours(), // hour
    m  : d.getMinutes(), // min
    s  : d.getSeconds(), // sec
    t  : Math.floor( d.getTime() / 1000 ), // unix time
  };

  for (var k in hash) {
    if (k != 'Y' && k != 't') {
      hash[k] = ('0' + hash[k]).slice(-2);
    }
  }

  return hash;
}

/**
 * ブラウザ上に現在の閲覧時間などを保存する
 */
var saveToStorage = function(st, sv) {
  localStorage.setItem("storedTimestamp", st); // unix time
  localStorage.setItem("storedViewSec", sv); // sec
}

///////////////////////////////////
// 初期化する関数を実行
setup();


gitにもあげたので、なにか更新があればこちらのリポジトリでやってきます

https://github.com/rin1024/Internet-filter-on-Chrome

2015-12-31 2015年のまとめ

今年は、リリースのペースは少し落ちているけど、

大規模なものや仕込み期間が長いプロジェクトが多かったなという感じでした。

とはいっても、

もう少し時間の使い方うまくできただろうなぁという時期が多くて、

使うべきばしょ、使うものをもっと考えていかないとなぁと

毎年のごとくですが反省した一年でした。



以下、それぞれの月ごとのまとめ。

1月

14:16 | 1月を含むブックマーク 1月のブックマークコメント

f:id:rin1024:20151231145958j:image:w360

大分合同新聞に取材していただいた

大分出身で、県外で活動する人たちを特集する「My ふるさと」という連載記事で取り上げていただきました。

大分の仕事を作りたいー!って色んな人に言って回ってたらこんな形で取材いただき、

恐縮しつつも、これで何か始まればいいなーとぼんやり考えていました。

ちなみに、情報商材っぽい写真になっているのは仕様です。

大分合同新聞さんの記事はこちらからご覧いただけます


f:id:rin1024:20150712163544j:image:w360

■ メグスリノキにインタビュー記事掲載

記事内容は、こちらからご覧いただけます。

前編:http://nikkomaple.net/ja/yuki-anai-interview-1/

後編:http://nikkomaple.net/ja/yuki-anai-interview-2/


f:id:rin1024:20151231145926j:image:w360

■ まごチャンネルのプロト開発をお手伝いさせてもらった

今年の11月に、Makuakeで目標金額の571%超えという驚異的な数値を叩きだした

まごチャンネルの試作開発をお手伝いさせていただいていました。

遠く離れた両親やおばあちゃんに何かできないかと個人的に試作をしていた頃に

まさにそれをビジネスとして実行しようとしていた代表のカジケンさんにお会いして、

やりましょう!ということに。

一緒にモニターしてくださっているおばあちゃんのお家にいったり、

画面はあーでもないとか、機能これ要らないんじゃない、とか日々試行錯誤していました。

製品化まで持っていけたのは、ひとえにカジケンさんの思いの強さが勝ったのだろうな。

本当に楽しくやらせてもらって、自分もあんな一緒に仕事したい人になりたいなーと思いました。

(でもイケメンずるい)


■ メーカーの試作開発

これは、都合上公開できないものですが、

ある大手メーカーの試作開発をお手伝いさせてもらっていました。

未来のデバイスとはなんぞやとか、

製品開発のプロの方々とご一緒できて、超面白かったです。

試作品は、ありがたいことに好評だったようで、

もしかしたらそのうち製品化するかもかも?、です。

こううご期待。

2月

13:44 | 2月を含むブックマーク 2月のブックマークコメント

f:id:rin1024:20151231174917j:image:w360

■ こども向けおもちゃの試作開発

今年、とても悔しかったプロジェクトの一つ。

某所に、子供向けのデジタル玩具の試作導入を進めていたのですが、

なかなか思うように進まず、止まってしまった。

止まった理由が不明瞭なのが、一番悔しい理由なのかも。

こういうデバイスは、いかに試作とモニターテストを繰り返すかが大事な気がするので、

なんとか来年もう一度回したいと思ってたり。

画像は、試作してた基板レイアウト

これから一体何が生まれようとしてたのか、、、


f:id:rin1024:20151231151229j:image:w360

奈良の学校でプログラミング授業

ラボ時代の先輩にお声がけいただいて、

奈良の中学校にてプログラミング講座を開講しました。

プログラムといっても、CとかJavaではなく、Moon Blockという、

あらかじめブロック単位で機能が実装されたものを組み合わせていく、

Max / MSPやvvvvのようなものをつかって行いました。

若いという表現にしてしまうと陳腐な感じがしますが、

みんなもの覚えが早すぎて、

用意していた授業のスライドの半分くらいは要らなくなるくらいでした。笑

子どものフィルターなしの素直な反応って、難しい部分もありますが、

やっぱり楽しい。

3月

13:45 | 3月を含むブックマーク 3月のブックマークコメント

f:id:rin1024:20151231151805j:image:w360

■ ChAir、ライティング・フェアに出展

昨年、スマートイルミネーション横浜にて最優秀賞を受賞したChAirを、

スマートイルミネーション事務局の方からお声がけいただき、

ライティング・フェアというイベントに出展させていただきました。

このイベントは、メーカーが最新の照明技術を持ち寄る見本市のようなもので、

指向性のあるピンスポットライトや、最新の有機ELが展示してあったりと、

来場者としてまわるだけでも純粋に楽しかったです。

4月

13:45 | 4月を含むブックマーク 4月のブックマークコメント

f:id:rin1024:20151231152424j:image:w360

■ ChAir、渋谷ヒカリエに設置

大学院時代の友人からのご紹介から、

渋谷駅直結の大型商業施設ヒカリエに、

ChAirを設置させていただきました。

屋外かつ駅の真横なのでビル風が台風並みに激しかったりと中々課題が沢山な場所でしたが、

去年展示した作品がまさかこんなスピードで商業施設に取り入れてもらえるとは、という感じで、

手塚くんと日々夜なべしつつ設置させていただきました。

いつも無茶ぶりしてもしっかりこたえてくれる手塚くんは本当にすごいやつだと思います。


この展示では、5月がヒカリエの3周年記念ということもあり、

それに合わせて、3周年をイメージしたこれまでのChAirとはちょっと違う、

渋谷に光が満ちていくような、カラフルな演出を行いました。


新宿伊勢丹 ステージ#2に、移動型のディスプレー設置

大人の都合により写真掲載ができないのですが、

新宿伊勢丹の3Fに、

ショーウィンドーの中に自立移動型のディスプレーを作成させていただきました。

ロボットAPIをつかって、定時になるとディスプレーが動き出す、

ちょっとアホだけどかわいいロボットを目指して作りました。

シンプルだけど、かわいい、って大事だなと。

5月

13:45 | 5月を含むブックマーク 5月のブックマークコメント

f:id:rin1024:20151231153703p:image

■ 月間事業構想に取材記事掲載

月間事業構想という雑誌に、インタビュー記事を掲載いただきました

クリエイターの発想術」という連載の中で、

普段どんなことを考えながら作品をつくっているかについてのお話をさせていただきました。

読み返して、たいてい僕はぼーっとしてるんだろーなと思った。


■ 某外車のクローズドイベントの空間演出

(こちらも)大人の都合により写真は掲載できませんが、

某外車のクローズドイベントの空間演出を一部担当させていただきました。

この車を買うクラスタの人は、こういう人たちが集まるんだなーというのを、

イベント通して観察していました。

6〜9月

13:45 | 6〜9月を含むブックマーク 6〜9月のブックマークコメント

色々と仕込みやデモなどはしてはいたのだけど、

この期間は表に出せるリリースが特になかったかも。

来年は、この時期を勉強にあてるでもいいので、うまく使えるようにしたい。


f:id:rin1024:20151231175454p:image

■ うまログ リリース(7月)

むかーし、大山さんと適当に作って適当に個人的に遊んでいたサービスを、

リニューアルした。

サービス内容は、ワンタップで自分がいる場所の美味しいお店を

スコアが高い順にだしてくれるというもの。

サービスはこちら

スマホから見ると良いです。


f:id:rin1024:20150721123417j:image:w360

■ Art Hack Day(8月)

Art Hack Dayという3日間で、異なる分野のアーティストやデザイナーと即興的に作品を作り上げるハッカソンに参加。

今まで、どんな満足できなかったものでも作ったものは発表するようにしてきたのですが、

今回のは悔しい通り越して、

ちょっと反省ってレベルじゃすまねーぞって感じのものになってしまい、

発表できずじまいでした。

素敵な人が集まっていた分、もったいないコトしたなーと。


f:id:rin1024:20151231162536j:image:w360

■ SENSORSにて「あ」が放映(9月)

大学院時代に制作していた「あ」という作品が、

SENSORSというテレビ番組の「SENSORS WONDER」という、

「なんだかよくわからないけど、将来世の中で役に立つかも!?」な

研究などを特集している企画で放映いただきました。

担当のディレクターさんがとても情熱的な方で、

より正確に「あ」のよさが伝わるようにと、きめ細かく熱心に取材していただきました。

良いものを作ろうとしてる人って、余計なことを語らずとも、

その姿勢で伝わってくる。これもタイトだったけど、楽しかった。

ちなみに、番組放映後に開発秘話についてまでまとめていただきました。感謝。

10月

13:45 | 10月を含むブックマーク 10月のブックマークコメント

f:id:rin1024:20151231162555j:image:w360

■ スマートイルミネーション横浜にて「ある海辺」展示

昨年ChAirを展示したスマートイルミネーション横浜にて、

今年も再び手塚くんと参戦。

今回は、そのむかし、横浜が海だったころの景色を彷彿させるようなサウンドインスタレーションで、

「ある海辺」というタイトルで出展しました。

象の鼻にある石のベンチ全てをつかった、

規模でいうと50m x 50mの個人製作では過去最大のサイズでの展示を行いました。


相変わらず、めんどくさがりなのに真面目な手塚くんの根性は凄いなーと感心しつつ、

今回楽曲制作で携わってくださった野口さんも、

展示期間中もほぼ毎日足を運んでくださって、常に楽曲のアップデートをしまくってました。

音響に関しても、

超有名なアーティストのレコーディングなどを行っている方に参加していただいたり、

記録撮影も、いつもお世話になってる方に来ていただいたりと、

割りとオールスターな感じで制作を行うことができました。

個人ワークは、自分たちの裁量でどこまでもアレンジできて、作り込めるのがいいとこだなと。

相変わらず、10月末の横浜は寒かったけれども、楽しく作品制作できました。


あとは展示期間中、東京から足を運んで来てくれたり、

神戸に隔離されてた大学院時代の友人とかが来てくれたりと、久々に再開ができたしたのも嬉しかった。

作品展示のいいところは、

作品を通して色んな人とコミュニケーションとれることなんだろうなーと。

ある種の、冠婚葬祭みたいな感じがする。

11月

13:45 | 11月を含むブックマーク 11月のブックマークコメント

f:id:rin1024:20151231163149j:image:w360

タカシマヤ タイムズスクウェアのイルミネーション演出

新宿高島屋のイルミネーションを総合演出させていただきました。

なんだかで、これも3月くらいから提案していたので、

半年以上かけて実現したプロジェクトでした(長い...)。

名も無きベンチャーがまさか新宿高島屋のイルミネーションやれるとか

数年前までは想像すらしてませんでしたが、

世の中何が起きるかわからないなぁと。笑

イルミネーションはおかげさまで好評なようで、

来年はもっとアップデートしていきたいです。


f:id:rin1024:20151231163147j:image:w360

■ 大分 イルミネーション

間違いなく、今年を総括するであろう一大プロジェクト。

ラボをやめてから、大分で仕事したい!って言ってまわっていたら、

まさかの一発目に滅茶苦茶デカイ仕事きてしまったパターン(良い意味で)。


これまで、大規模なイルミネーションが行われてこなかった 大分での「初」開催。

更に、今年、新たに開業した大分駅の「初」となるイルミネーション。

地元のばーちゃん達に、自分がやってる仕事を見てもらえる絶好の機会。


普段から作品を作るときも、これ失敗したら死ぬなーとか

超ビビリながらやっているのですが、

今回は、失敗したらマジで地元帰れなくなるなーとか思って、

いつもとはまた違った感覚のなか、お仕事してました。


企画内容もかたまり、

11月に入り、施工が始まるにつれ、

これ実際に間に合うの!?みたいなレベルで出てくる山のような問題。

それらと日々格闘しつつ、演出プログラム調整を開始できたのは、

イルミネーション点灯式のほんの数日前。。。

本当は調整期間3週間で見てたんだけど、、、

いつもソフトは最後の尻拭いするとはいえ、、、

今回の規模では死ぬ、、、、

とか思いながら、ひたすら楽曲から演出イメージを膨らませながら、

深夜の誰もいない駅前で、テスト、テスト、またテスト。

そして迎えた点灯式。

。。。個人的には、全然満足できなくて、

もう死にたいくらいに課題だらけでしたが、

結果をどうこういってもしょうがないので、

この悔しさと反省点は全て洗い出して、

来年への改善に向けてまた一から進んでいこうと思います。


このお仕事も、本当に色んな人からのご好意で、

つながって、つながって、形になりました。


このお仕事に関わってくれた皆さん、

直接ではなくとも、応援してくださっていたみなさまが、

少しでも笑顔になってくれるような形にできていたのであれば、

幸いです。





今年も本当に多くの素敵な方々に会えて、

(Facebook上だけでも95人つながりが増えておりました。笑)

たくさんのお仕事に恵まれて感謝の1年でした。


相変わらず、空間演出から基板設計、スマホアプリとか、

ひろーくあさーくやっておりますが、

来年はもう少し絞れてくるといいなぁと。


また今年とは一歩、生活形態を変えて、

2016年も引き続き楽しいことやっていけたらなーと思っています!


それでは、良いお年を。

2015-10-23

ディップスイッチによるアドレス計算

14:16 | ディップスイッチによるアドレス計算を含むブックマーク ディップスイッチによるアドレス計算のブックマークコメント

f:id:rin1024:20151023154532j:image

2進数くらい計算すればいいじゃんと言われそうですが、

ぱっと計算して試せるプログラムProcessingで書いてみた。

数字の下の■をクリックすると、on / offをトグルして計算される。


final int NUM_LEDS = 150;

RectButton rect1, rect2, rect3, rect4, rect5, rect6, rect7, rect8, rect9;//, rect10;
int address = 0;

void setup() {
  size(320, 200);
  smooth();

  rect1 = new RectButton(20, 40, 10);
  rect2 = new RectButton(40, 40, 10);
  rect3 = new RectButton(60, 40, 10);
  rect4 = new RectButton(80, 40, 10);
  rect5 = new RectButton(100, 40, 10);
  rect6 = new RectButton(120, 40, 10);
  rect7 = new RectButton(140, 40, 10);
  rect8 = new RectButton(160, 40, 10);
  rect9 = new RectButton(180, 40, 10);
  //rect10 = new RectButton(200, 40, 10);
}

void draw() {
  background(0);

  fill(255);
  text("1", 20, 30);
  text("2", 40, 30);
  text("3", 60, 30);
  text("4", 80, 30);
  text("5", 100, 30);
  text("6", 120, 30);
  text("7", 140, 30);
  text("8", 160, 30);
  text("9", 180, 30);
  //text("10", 197, 30);
  text("Address : " + address + " ~ " + (address + NUM_LEDS), 60, 80);

  stroke(255);
  rect1.display();
  rect2.display();
  rect3.display();
  rect4.display();
  rect5.display();
  rect6.display();
  rect7.display();
  rect8.display();
  rect9.display();
  //rect10.display();
}

void mouseClicked() {
  address = 0;
  if (rect1.getPN()) {
    address += 1;
  }
  if (rect2.getPN()) {
    address += 2;
  }
  if (rect3.getPN()) {
    address += 4;
  }
  if (rect4.getPN()) {
    address += 8;
  }
  if (rect5.getPN()) {
    address += 16;
  }
  if (rect6.getPN()) {
    address += 32;
  }
  if (rect7.getPN()) {
    address += 64;
  }
  if (rect8.getPN()) {
    address += 128;
  }
  if (rect9.getPN()) {
    address += 256;
  }
  /*if (rect10.getPN()) {
    address += 512;
  }*/
}

class RectButton {
  int x, y;
  int size;
  boolean activated = false;

  RectButton(int ix, int iy, int isize) {
    x = ix;
    y = iy;
    size = isize;
  }

  boolean getPN() {
    if(overRect(x, y, size, size)) {
      activated = !activated;
    } 
    
    return activated;
  }

  boolean overRect(int x, int y, int width, int height) {
    if (mouseX >= x && mouseX <= x+width && 
      mouseY >= y && mouseY <= y+height) {
      return true;
    } 
    else {
      return false;
    }
  }

  void display() {
    stroke(255);
    fill(activated ? color(255, 0, 0) : color(102));
    rect(x, y, size, size);
  }
}

2015-09-29

今更MacのOSをYosemiteにUpdateしてApache起動で死んだ件

| 23:42 | 今更MacのOSをYosemiteにUpdateしてApache起動で死んだ件を含むブックマーク 今更MacのOSをYosemiteにUpdateしてApache起動で死んだ件のブックマークコメント

元凶としては、Apache2.2をYosemiteになると勝手に2.4にUpdateされていることが原因だった様子。


大枠は、下記のサイト見ながら対応する部分をしらみつぶししていった。

http://qiita.com/DQNEO/items/1556a8e85af4bc40aad6


「User」まわりのエラーは下記を読み込んだ。

LoadModule unixd_module libexec/apache2/mod_unixd.so

「Order」が使えなくなった件については、下記モジュールを入れた。

「Require」なんとかはまだ触っていない。

LoadModule access_compat_module libexec/apache2/mod_access_compat.so

「configuration error: couldn't check user: /」とかでるエラーについては、以下をロードして解決

# http://damelog.com/computer/server-administration/apache/gentoo%E3%81%AEamd64%E3%81%ABapache-2-4-1%E3%81%8C%E6%9D%A5%E3%81%9F%E3%81%AE%E3%81%A7%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/

LoadModule authz_core_module libexec/apache2/mod_authz_core.so



これでだいたい起動出来た。

その後PHPでテストしようとしたらMySQL周りで「SQLSTATE[HY000] [2002] No such file or directory」のエラーがでた。

sockの指定がズレていたようなので、php.iniの下記を変えた。

- pdo_mysql.default_socket = 
+ pdo_mysql.default_socket = /tmp/mysql.sock

- mysql.default_socket = 
+ mysql.default_socket = /tmp/mysql.sock