犬ターネット

Archive : 2012年11月

もろもろ引っ越し

atpages においてたおもちゃをこっちに引っ越し。

http://mgng.aws.af.cm/apw

http://mgng.aws.af.cm/dasite

http://mgng.aws.af.cm/gal

http://mgng.aws.af.cm/kaidan

http://mgng.aws.af.cm/kobaian

http://mgng.aws.af.cm/twicon

http://mgng.aws.af.cm/zenkaku

これでやっと atpages と手が切れる...かな。しばらくしたらあっちは閉じよう。


ブログ見ましたよ

先日お客さんに「そういやブログ見ましたよ、ちゃんとまとまっててすごいなあ」って言われて「あ?え?あっ」ってなったんだけど、このブログ見ましたよじゃなくて会社ブログ見ましたよってことだった。

いやー焦った。はーちんぽちんぽ


つぶやき怪談移動した

atpages にあったのをこっちに移動してきた。atpages からもこっちにリダイレクトかけてる。

つぶやき怪談

atpages では各怪談をファイル管理してたんだけど、appfog 移行に伴い mysql 管理に変更した。


soundcloud API + PHP で検索したり認証したり

前準備

http://developers.soundcloud.com/ から API の登録をして、Client ID、Client Secret をメモ、Redirect URI を設定。

https://github.com/mptre/php-soundcloud から php-soundcloud をダウンロード、適当な場所に展開。

API使って検索してみる

soundcloud 上にアップされた楽曲で「meshuggah」が含まれるものを検索してみる。

実行結果。

API使ってユーザの情報を取得してみる(認証必要)

ユーザの情報を取得するには認証処理が必要。

上記ソースをwebサーバのどっかにおいてブラウザでアクセスすると、soundcloud.com の認証画面が表示される。twitterやfacebookの認証のアレと同じ感じ。

「connect」を押すと API で設定した Redirect URI にリダイレクトされて、こんな感じの結果が表示される。

ハマったところ

Windows環境のPHPのCURLがヘボくて、上記ソースのように setCurlOptions で cacert.pem を設定しておかないとちゃんと接続できない。Linux系だったら大丈夫かも。


留守電

先日飲み会で帰りが遅くなったとき、ケータイに留守電が入ってたので再生してみたら、

「(エグッ... エグッ... )ぱぱ~、はやくかえってきてよお~、うわああああああん」

と娘から伝言が残っており、次の日娘に聞いてみたらちゃんと覚えてて、

「ぱぱ、よるのおさんぽ、はやくかえってこなくちゃだめよ」

と懇願されたため、今後は遅くとも21時頃には帰らせていただきます申し訳ございません。

どうせあと5,6年もしたらウザがられるんだから、せめて今だけはこの親子関係を大切にしたい。


友人たちに会った

結婚したり子どもができたり会社がつぶれたりハゲたり太ったりまあいろいろあるけど、いつものメンツで当時と同じ感じでバカ話ができるってのはすごく幸せだ。


サムネイルをでかく表示する

みたいにしてもあんまり意味ないけどなんかアイディアが浮かびそうなのでメモっておく。


デザイン変えたい

シンプルなデザインが好きで、究極はやっぱり .txt とか Content-Type: text/plain なんだけど、リンクできないし画像貼れないし利便性に欠けるから却下。

となるとやはり往年のエイチティーエムエルSTYLEになっちゃうんだけど、なかなかシンプルでいいデザインが思い浮かばない。

今のこの感じも悪くはないと思ってるんだけど、もっとシンプルに見やすくできそうな気がする...はてさて困った。


appfog 上に作った mysql を SSHトンネリングしてコマンドラインから直接操作する

appfog 上に作った mysql は SSHトンネリングすればコマンドラインから直接参照できるとのこと。

Tunneling - AppFog Documentation

ってことでさっそく試す。環境は以下。

  • Windows 7
  • Ruby、af インストール済(参考
  • MySQL インストール済(mysql.exe と mysqldump.exe にPATHが通ってること)

まず http://rubyinstaller.org/downloads から「Development Kit」をダウンロード、適当なディレクトリに展開。ここでは C:\Ruby193\devkit\ に展開した。

次にコマンドプロンプトから以下実行して caldecott をインストール(最初の2行はRubyとDevelopment Kit のパス通すコマンド)。

> C:\Ruby193\bin\setrbvars.bat
> C:\Ruby193\devkit\devkitvars.bat
> gem install caldecott

トンネリングは10000ポートを使うので事前に開けておく。で、さっそく実行。まずはログイン。

> af login
Attempting login to [https://api.appfog.com]
Email: **********
Password: **********
Successfully logged into [https://api.appfog.com]

次にトンネリング実行。どのサービスをトンネリングするか聞かれるので、ここでは1のmysqlを選択。

> af tunnel
1: mgng_mysql
2: mgng_chimpo
Which service to tunnel to?: 1

すると接続情報が表示され、トンネリングが開始されて、どの操作を実行するか聞かれる。

Getting tunnel connection info: OK

Service connection info:
  username : ******
  password : ******
  name     : ******
  infra    : aws

Starting tunnel to mgng_mysql on port 10000.
1: none
2: mysql
3: mysqldump
Which client would you like to start?: 2

1はトンネリングのみ(MySQL WorkBench みたいなツール専用)、2はコマンドラインで接続、3はdump取得。

コマンドラインから直接操作したいので 2 を選択。すると以下のように勝手に接続しにいく。

Launching 'mysql --protocol=TCP --host=localhost --port=10000 --user=****** --password=****** ******'

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20110661
Server version: 5.5.8-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

接続できたので、試しにクエリキャッシュの状態を確認してみる。

mysql> show variables like 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+
1 row in set (0.81 sec)

あとはよしなに。


先頭8文字しか使わないって聞くとこれ思い出す

ある条件下で、PHPのcrypt関数使ってパスワードハッシュ作ると、8文字以上は何入力しても意味ないってやつ。

まあいまどきこんな実装してるところなんてないと思うけど。


WEBを学ぶには

「フルスクラッチでブログ構築してインターネットに公開する」っつうのがWEB系理解する最短ルートだと思ってるんだけど、あまり同意を得られない。

cgi・データベース・Webサーバのバックエンド、HTML・javascript・css・Flashのフロントエンド、そして脆弱性対策の仕方もまとめて学べるからすごくオススメなのに。

系統だてて勉強するのはその後で十分。何もわからんまま本読み始めたてもちんぷんかんぷんだろ。

ひたすらGoogle検索しろ。そしてひたすらアウトプットしろ。脆弱性突かれろ。失敗から学べ。


バカか

てめえが今日の10時が都合いいっつうからこっちもスケジュール調整&資料作成して先週金曜午後イチにもろもろ全部送ったのに、今日になって「いやー、資料まだ解凍してなくって、へへ、ええと、解凍パスワードなんでしたっけ、はは」ってなんだこら笑うところじゃねえだろ、そもそも先日の動作試験だってテメエんとこの開発が遅れてたせいでうちも割を食ったんじゃねえか、キックオフんときの打ち合わせで「うちはノウハウあるんで、まあ大丈夫ですけど、オタクんとこの開発間に合います?(ドヤ顔)」って言ってたくせになんだそりゃ、挙句動作試験票は御社で作成いただきたいだと?おめえんとこの試験票をなんでおれが作んなきゃならねえんだハゲオヤジしねやカス糞老害カントン包茎

ってことが現在進行中で、やっぱり仕事って楽しいし勉強になるなあと思います。


sqlite エクスポート → mysql インポート

以前使ってた atpages では DB に sqlite 使ってたんだけど、appfog は sqlite が使えない(?)ので、以下の手順で sqlite エクスポート → mysql インポートした。

まず sqlite の中身を dump.sql にエクスポート、

# sqlite3 db.sqlite
sqlite> .output dump.sql
sqlite> .dump
(Ctrl+C)

# cat dump.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE entry(
  id INTEGER PRIMARY KEY,
  title text NOT NULL,
  date text NOT NULL,
  tags text,
  contents text NOT NULL
);
INSERT INTO ...

これを mysql用 に書き換える。

sqliteではテキスト型でなんでもぶっこめたけど、mysqlの場合BLOB型にしないと入らないデータがあったので、id以外はBLOBで定義した。あと「BEGIN TRANSACTION」を「START TRANSACTION」に変更。

-- DB作成
CREATE DATABASE mgng CHARACTER SET utf8;
use mgng;
set character_set_client = utf8;
set character_set_connection = utf8;
set character_set_results = utf8;

-- text ではなく BLOB 型で定義
CREATE TABLE entry (
  id       MEDIUMINT NOT NULL AUTO_INCREMENT,
  title    BLOB NOT NULL,
  date     BLOB NOT NULL,
  tags     BLOB,
  contents MEDIUMBLOB NOT NULL,
  primary key (id)
);

-- BEGIN ではなく START
START TRANSACTION;

INSERT INTO ...

最後に dump.sql を実行して終了。

# mysql -u mgng -h hostname -p < /path/to/dump.sql

ちなみに START TRANSACTION ~ COMMIT しないと INSERT に死ぬほど時間かかる。大量に INSERT する場合はトランザクション内で行うっつうのは定石。これは sqlite でも同じ。


atpages から appfog に移行

atpages がなんかよくわかんない広告だらけになってきたから、日記だけこっち(appfog)に移行してきた。

httpsでのアクセスもOKだし、広告つかないし、FFFTPは使えないけどとても便利なので、しばらくここに住まうことにする。

無料プランだとディスク容量512Mしかないけど、容量全部使い切るまでに俺かappfogが死ぬから、問題ない。


iTunesで曲のプロパティ変えたらiPhoneでバグった

「デフトーンズ」って表記がダサかったから、iTunesで曲選択→右クリック→プロパティ表示、「デフトーンズ」を「Deftones」に変更、「同期」したんだけど、一部「デフトーンズ」のままでアルバム名が「不明」になった。

iPhone側でいったん曲削除してiTunesつないで同期したら治った。


なんかatpagesが

だんだん使いにくくなってきたから移行考えてる。


SNSじゃなくてメーリングリストっていう

こんだけSNSが流行ってるのに、極親しい友達数人とは未だにメーリングリストでのやりとりっつうね。時代錯誤も甚だしい。

ブブブーつってケータイ見ると、メーリングリストから広告だらけのメール届いてて、内容はというと「明日無理かも」だけ、みたいな。

でも楽しい。不便であるからこそ、味わい深さがあるんだと思う。tcupにgeocitiesに忍者ツールズ。あの頃のインターネットが大好きだ。


圧縮されたIPv6アドレスを展開するやつ

PHPなら関数一発で展開できるだろ、と思ったらできなかったので作った。第2引数にtrueを渡すと strtoupper して返す。

結果。

IPv6が未だにあんまりよくわかってない。


おおおおおおおおお

おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお


ナスカカー中屋さん臨死体験

ご養生ください。


UTF-8以外の文字コードでもphpDocumentor2使いたい

phpDocumentor2、ソース文字コードが UTF-8 以外だとうまくパースできないけど、以下ファイルを修正して読込時に文字コード変換かければ大丈夫。

phpDocumentor2/src/phpDocumentor/Reflection/FileReflector.php
public function __construct 内 の以下を修正
$this->contents = file_get_contents($file);
↓
// ソースコードが EUC-JP の場合
$this->contents = mb_convert_encoding( file_get_contents($file), 'UTF-8', 'EUC-JP' );

あとは普通にコマンド叩けばOK。

時間見つけてコマンドライン引数に文字コード渡せるように改造したい。


大阪

初めて大阪に行った。とても綺麗な街だった。

大阪駅、弐瓶作品に出てきそうな威圧感がある。かっこいい。


妻がいよいよスマホに

するらしく、スマホつったらTwitterにFacebookにLINEにSNSだし、おれのアカウントが妻にばれたら嫌だから、インターネット自殺を考えている。


夜のインターネット

を最近全然しなくなっちゃって、理由はいくつかあって

  • 寒い
  • 寒いから布団が気持ちいい
  • 寒いから布団が気持ちよくて娘と一緒に寝てるんだけど娘がかわいいしいい匂い

つまりインターネットより娘がかわいい。


ボタン記念日

娘がパジャマのボタンを自分ではずして自分でとめられた記念日。あ、ちなみに昨日。