2/24/2012

「Web Icon Fonts」という便利過ぎるフォント

昨日、友達が作った「Web Icon Fonts」のご紹介です。
Twitter や Facebook を初めとした各種 SNS のアイコンや、戻る・リロード・ホームと言った画面上で使えるアイコンをウェブフォントとして配布しています。

これは...便利過ぎる...!!!

Web Icon Fonts
※IE8 以下と iOS4.1 以下では表示できない、とのことです。

2/17/2012

Messages を入れてみた

Messages を Mac でも使えるようになったので、早速インストールしてみた!
Apple - Mac OS X - Download the free Messages Beta.

ダウンロードしたあと、できたパッケージファイルをインストール。


※インストールには Mac OS X Lion が必須、インストール後は再起動が必要です。

その後、立ち上げると Apple ID の認証が必要になる。私の場合は「環境設定 - アカウント」でも認証する必要があったので、ここでも手続きを行い、メールを登録すると、使えるようになった。

ということで、テストしてみた。画像も送れるし、リンクもそのまま表示される。


レスポンスも早いし、これはいい!

なお、会話の内容はウィンドウ内では保存されてないように見えるが、マシン内の以下の場所に保存されてる。これをクイックルックで見るとプレビューできるし、ダブルクリックではウィンドウが立ち上がり、リンクを押せたり文字を選択できる状態になる。
書類 -> iChats -> 日付 -> 相手-日付.ichat

2/15/2012

youtubePlayCtrl(Safari/Chrome 機能拡張)を公開しました

Safari/Chrome 機能拡張 youtubePlayCtrl を公開しました。別のタブで開いている YouTube 動画を、現在開いているタブで Play/Pause の操作をできる拡張です。

操作画面は、右クリックによるメニュー(Safari)、オムニボックスのアイコン(Chrome)から呼び出すことができ、YouTube 動画を別タブで開いている場合に、以下のような操作画面が出現します。



興味のある方は、以下からどうぞ。

説明ページ

youtubePlayCtrl: Google Chrome 機能拡張

youtubePlayCtrl: Safari 機能拡張

2/03/2012

IE と Outlook がなくなることのメリット

MS は IE と Outlook に割いてる部隊を全部、OS 部隊に組み込むといいと思うんですよ。
以下、IE と Outlook がなくなることで産まれるメリット。

  1. WIndows OS 開発に着手できるリソースが増えるのでマシな OS になる
  2. IE がなくなることでコーダとデザイナの陰鬱な時間がなくなる
  3. 2. を受け、工期短縮、経費節減が可能になる
  4. ユーザも IE 由来のバグに遭遇しなくなる
  5. ActiveX がなくなるため、ウィルスに冒されるパソコンが激減
  6. Mac 開発者は、IE 確認のためにわざわざ Win 機を買わなくて済む
  7. Outlook がなくなることで、Shift_JIS や ISO-2022-JP と言ったクソ文字コードの駆逐が可能になる
  8. 7. を受け、エンジニアは文字化け対応の陰鬱な時間がなくなる
  9. 8. を受け、工期短縮、経費節減が可能になる
  10. ユーザも文字化けに遭遇しなくなる
  11. html5 と css3 によるリッチコンテンツの開発が加速する
  12. 11. の影響で Flash が退化し、Flash 由来のウィルスにも冒されなくなる

ほら、未来が明るいじゃないですか(^ω^)

2/01/2012

multipart/form-data でデータを Javascript で encode して cookie に送り、php で decode する

form の enctype が multipart/form-data の場合、Javascript で送ったデータが php では文字化けしてしまう(しかも au の android のみという噂あり。Android au を謳ってるのに...)ので、なんとかならないかと思い、cookie へ突っ込んで処理をすると回避できた。

ただ、Javascript と php では encode/decode が違うので、方法を合わせないとやっぱりおかしくなる。

☆Javascript 側
// expires は 2030 年にしてある
document.cookie = 'str=' + encodeURIComponent('化け化け') + '; expires=Tue, 1-Jan-2030 00:00:00 GMT';

☆php 側
$status = rawurldecode($_COOKIE[str]);

1/31/2012

[php で OAuth を使ってみる:第十一回] 4square でチェックインする

4square で OAuth を使ってチェックインしてみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

OAuth を使った認証〜チェックインスポットの流れは 前のエントリー を参照。

チェックインする
<?php
$status = '**にチェックイン!'; // チェックインと一緒に post する文字列
$placeId = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの ID
$lat = ''xxxxxxxxxxxxxxxx''; // 前エントリーで取得したチェックインスポットの緯度
$lon = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの経度
$name = 'xxxxxxxxxxxxxxxx'; // 前エントリーで取得したチェックインスポットの名前

$checkin_url = 'https://api.foursquare.com/v2/checkins/add';
$data = array(
  'oauth_token' => $_COOKIE['4sqToken'], // 前エントリーの「3.」で cookie に保存した access_token
  'venueId' => $placeId,
  'venue' => $name,
  'shout' => $status,
  'broadcast' => 'public',
  'll' => $lat. ','. $lon
);
$data = http_build_query($data, '', '&');
$options = array(
  'http' => array(
    'method' => 'POST',
    'content' => $data
  )
);
$result = file_get_contents($checkin_url, false, stream_context_create($options));
?>

1/30/2012

[php で OAuth を使ってみる:第十回] 4square のチェックインスポットを取得する

4square のチェックインスポットを OAuth を使って取得してみる。
※この情報は 2012 年 1 月現在のものです。仕様が変更される可能性は充分にあるので、ご了承ください。

1. アプリを登録する
OAuth Consumer Registration にアクセスし、アプリの登録を行う。
APPLICATION NAME: アプリ名
APPLICATION WEB SITE: アプリ本体の URL
CALLBACK URL: ユーザによる認証動作後にリダイレクトする URL(「4.」でアップする php)

※全ての情報は登録後でも変更できるので、気楽に。

2. 使うキーを確認する
My OAuth Consumers にある「Client ID」と、「Client Secret」を確認する。これが今後必要となるキー。

3. 認証受け渡し用の php を用意する
下記に必要な事項を埋め、アプリのディレクトリにアップする。
<?php
$consumer_key = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Client ID」
$consumer_secret = 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Client Secret」
$callback = 'callback する URL'; // この場合はこの php 本体

if (empty($_GET['code'])) {
// ユーザの認証前、4square にリダイレクトする
  $auth_url = 'https://foursquare.com/oauth2/authenticate?';
  $auth_url .= 'client_id='. $consumer_key;
  $auth_url .= '&response_type=code';
  $auth_url .= '&redirect_uri='. $callback;

  header('Location: '. $auth_url);
} else {
// ユーザの認証後、リダイレクトで帰ってきた後
  $accees_token_url = 'https://foursquare.com/oauth2/access_token?';
  $accees_token_url .= 'client_id='. $consumer_key;
  $accees_token_url .= '&client_secret='. $consumer_secret;
  $accees_token_url .= '&grant_type=authorization_code';
  $accees_token_url .= '&redirect_uri='. $callback;
  $accees_token_url .= '&code='. $_GET['code'];

  $result = json_decode(file_get_contents($accees_token_url), true);
  $access_token = $result['access_token'];

  echo "<script type='text/javascript'>location.href = 'アプリ本体の URL';</script>";
}
?>

4. チェックインスポットを検索して表示する
<?php
// php の文字コードが utf-8 であっても文字化けしたので記載
header('Content-type: application/json; charset=utf-8');

$query = 'モスバーガー'; // 検索語句

$spot_url = 'https://api.foursquare.com/v2/venues/search?';
$spot_url .= 'client_id='. 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Client ID」
$spot_url .= '&client_secret='. 'xxxxxxxxxxxxxxxx'; // 「2.」で確認した「Client Secret」
$spot_url .= '&access_token='. 'xxxxxxxxxxxxxxxx'; // 「4.」で取得した access_token
$spot_url .= '&ll=34.985214,135.758593'; // 任意の緯度経度
$spot_url .= '&llAcc=1000'; // 1,000m 四方が対象
$spot_url .= '&limit=20'; // 20 件取得
// スポット名で検索する場合
if ($_COOKIE['query']) $spot_url .= '&query='. urlencode($query); // urlencode しないと取得できない
// 結果は json で返ってくるので、そのまま echo してやる
echo file_get_contents($spot_url);
?>
例えばこの php をアプリ本体の Javascript で読み込み、結果で出た json を Javascript で解析してレイアウト後に表示する、などができる。