トリプルディスプレイにしてみました

職場で PC の一斉買い換えがあり、ディスプレイが余っていたのでトリプルディスプレイにしてみました。

全部 17 インチで、一番右だけアームをつけて縦置きにしています。
解像度はディスプレイの最大設定の1280*1024です。

左ディスプレイ

左のディスプレイでは以下のようなものを使います。

コミュニケーション系のツールをこちらで使っています。
メール受信のアラートがあった時や、IRCのキーワード反応があったときに見るくらい。

中央ディスプレイ

主に文字を書く系は中央で。
写真ではそうでもないですが、目に情報がたくさん入った方がいいという事で上下を最大にのばして使うのが好きです。

右ディスプレイ

右は縦置き。
Firefox を最大化して、それのみを使っています。
縦置きすることで、解像度は1024*1280に。


サイトの横が1000px を超えるものはほとんどないので、
ブラウザ専用のモニタで横幅が1280ある必要はあまりありません。
それだったら、縦を伸ばしたほうがスペースを活用できるだろうということで縦置きにしました。


縦の解像度が1280になる意味というのはものすごくて、
目に飛び込んでくる情報が一気に増えます(GUIをのぞくと実質1000pxくらいですが)。

  • スクロールの回数が減らせる
  • 多くの情報が目に入ってくる
  • ウインドウを動かさなくてすむ

これだけで数秒くらい時間を得している感じ。ライフハック(笑)

トリプルディスプレイを一日使ってみた感想

  • 3枚同時に目に入らないので首振りが増える
    • 上記の用に使い分けることで、この動作を減らすように工夫
    • 常時見るのは中央と右
  • 作業領域がとにかく広い
  • ウインドウを動かす回数が劇的に減った

ということでトリプルディスプレイ結構いいカンジです。


あとは、ブラウザを縦長にできるのがあまりにもすばらしいので、
家用にも20インチの縦置きできる液晶を買いました。
不在届けが入っていたので明日届けてもらおうと思います。

MacBook を使い始めてみました

MacBook を使い始めてみました。

10年近く Windows メインなので、そろそろ違うのも使ってみた方が良いのでは、
ということと Linux もそれなりに使えるようになりたいということで
候補を X61 から Macbook に変更してみました。


いじっていたらすでにファイルとか設定がグチャグチャになってきて微妙なカンジに…。
とりあえず、再インストールする前提でいろいろ試してみようと思います。

最近は、CakePHP はお休みして XHTML + CSS をいじっています。
1.2 の正式版が出るのまだかな。

『XHTML&CSSデザイン |基本原則、これだけ。』と『プログラミングPHP 第2版』を購入

お世話になっているデザイナーのこもりまさあき(cipher)さんが新しい著書『XHTML&CSSデザイン |基本原則、これだけ。』を出されたとのことなのでアマゾンのカートにぶち込みました。
ついでに、『プログラミングPHP 第2版』も投入。


まずは『XHTML&CSSデザイン |基本原則、これだけ。』から読み始めてみた。
XHTMLCSS については本当に基本的な知識しかないのだけど、この本はそんな人向けな本なので解説がバカみたいに丁寧でしかもわかりやすい。
知らないことの方が大半だったけど、サンプルをためしながらやったら基本的なところは押さえられそう。
自分がやっているサイトのデザインをなんとかしたいと思っていたので、参考にしながら試してみたい。


『プログラミングPHP 第2版』はまだページすらめくっていないのでまた後ほど。



プログラミングPHP 第2版

プログラミングPHP 第2版


XHTML&CSSデザイン |基本原則、これだけ。

XHTML&CSSデザイン |基本原則、これだけ。

エイプリルフール企画終了

担当していたエイプリルフール企画がようやく終了。
今回は、Web とモバイル両方で展開。


どこまで書いていいのかわからないけど終わった直後の感想を記録しておきたいのでメモ。

担当したこと

WEB・モバイル共通
  • コンセプト・企画・構成
  • 全ネタ出し
WEB
  • デザイン構成
  • CSS
  • プログラム
  • ページ作成
モバイル
  • デザイン構成
  • プログラム
  • ページ作成

手伝ってもらったこと

  • 画像作成
  • サーバー設置・チューニング・メンテ

画像とサーバーを手助けしてもらえて助かりました。ありがとうございます。
といってもここは見ていないと思うけど。

感想

  • 企画・コンセプトは正解だったと思う
  • 大規模アクセスを想定した準備と公開後の対応が難しい
  • モバイルへの誘導がそれなりにうまくいった
  • これまでは複数人でコンテンツを作っていたけど今年は実質一人でやったので責任が重かった
  • 制作開始から締め切りまで10営業日くらいしかなくて死にそうだった
  • 複数人でネタを出せたらもっと良いものになったと思う
  • 追い詰められないと作業が進まない
  • 追い詰められるとなぜかネタがわいて作業が増える
  • 元コンテンツが強すぎ
  • 公開直前まではすごくつまらないものに見える不思議
  • 公開して反応があるとうれしい
  • 書けないけど解決すべき問題がいろいろ
  • どこまで書いていいかわからない

来年もがんばります。

「P1 Emulator」を試してみた

はてなブックマークで盛り上がっている以下の記事を見て自分も試してみました。

公式のエミュレーターよりもよさげなカンジですね。
個人的には、実機確認が好きなので使うかはわからないですが。


このエミュレーターの機能で、ソースがみれるというのが良いですね。
携帯サイトって、このデザインを実現するのにどうやってXHTML書いているんだろう?みたいなことがあったりしますけど、このエミュを使ったらソースみれちゃうので勉強になります。


ただ、公式サイトはキャリアの IP網以外からのアクセスを制御していると思うので見れないことがほとんどだと思いますが。
いわゆる勝手サイトのカッコイイデザインのサイトはソースみられまくりですよね。
恥ずかしいコメントとか入れているとみられちゃったりしてアレなことに。


時間があるときにでも、iメニューに掲載されている全サイトをチェックしてみたいなあ。
どこかソースをみれちゃったりするサイトはないものだろうか。


CakePHP はいまだに OpenFLP のソースを読みつつ、読書メモのをなんとなく動くところまで作っている感じ。
次は Ajax Helper とかを使ってみたい。

『CakePHP』で読んだ本メモを作る 〜3〜 Amazon Web Serviceを利用して登録する本の候補リストを取得する

登録する本のデータを取得するまでの処理。

登録までの流れ

検索フォームから本のタイトルや著者名を検索し、出てきたリストから選択してそれを登録するという方式。
早い話がはてなの「はまぞう」みたいなカンジ。
はてな認証を通った後の、ログイン後メニューに登録ページへのリンクを追加した。
セッションがない場合は、そこにアクセスしても見ることができないようにする。


  • APP/controllers/search_controller.php
<?php
class SearchController extends AppController
{
	var $name = 'Search';
	var $uses = null;

	function beforeFilter()
	{
		$this->checkSession();
	}

	function checkSession()
	{
		if(!$this->Session->check('user'))
		{
			$this->redirect(FULL_BASE_URL . '/login/');
			exit;
		}
	}
}
?>

beforeFilter でセッションの確認。
セッションがない場合にリダイレクトする先でも同じようにセッションチェックの beforeFilter が動いていると無限ループとなるので注意しましょう、というブログエントリをたくさんみた。なるほど。
AppController に入れちゃう場合とかは特に注意が必要。


リファレンスを参考に「var $beforeFilter」でやってみたけど、
いつものパターンで 1.2 からは beforeFilter() を使うように、と警告が出たことをメモ。

本の検索には PEAR の Services_Amazon を使う

いつもお世話になっている PEAR の Services_Amazon を使うことに。
バージョンが 0.7 まで上がっていて驚いた。
最後に使ったときのバージョンはいくつだろう。ECS3の時くらいかな。
ECS3使えなくなるよ−、ってアマゾンからメールきたけど移行させていないことを思い出した。

検索フォームのビューを作る
  • APP/views/search/index.html
<h3>登録する本を検索</h3>

<p>登録する本を検索します。タイトル名を入力してください。</p>

<?php echo $form->create('', array('action' => 'keyword'));?>
<?php echo $form->input('Search.keyword', array('type' => 'text', 'size' => 40, 'label' => 'タイトル', 'error'=> array('required' => true, 'message'=> '本のタイトルを入力してください。')));?>
<?php echo $form->submit('タイトル検索');?>
<?php echo $form->end()?>


検索フォームのコントローラを作る

「フォームにキーワードを入力して検索する場合」と「リンクから検索する場合」の2パターンで動くようにしてみた。
後者は例えば、「http://books.theworld.jp/search/keyword/CakePHP/2/」みたいな。
これだと「CakePHP」をキーワードにした検索結果の2ページ目ということにしたい。
要は、ページング用のアクセス方法。

  • APP/controllers/search_controller.php
<?php
include_once('Services/AmazonECS4.php');
class SearchController extends AppController
{
	var $name = 'Search';
	var $uses = null;

	function beforeFilter()
	{
		$this->checkSession();
	}

	function checkSession()
	{
		if(!$this->Session->check('user'))
		{
			$this->redirect(FULL_BASE_URL . '/login/');
			exit;
		}
	}

	function keyword($keyword=null, $page=1)
	{
		if($this->data['Search']['keyword'])
		{
			// POST の場合
			$keyword = $this->data['Search']['keyword'];
		}
		else
		{
			// GET の場合。フォームに文字列を表示させるためデータを入れる
			$this->data['Search']['keyword'] = $keyword;
		}
		
		$result = array();
		
		if($keyword)
		{
			$page = ereg("[0-9]", $page) ? $page : 1;

			$amazon = new Services_AmazonECS4(ACCESS_KEY_ID, ASSOC_ID);
			$amazon->setLocale('JP');
			
			$options = array();
			$options['Keywords'] = urlencode($keyword);
			$options['Sort'] = 'daterank';
			$options['ItemPage'] = $page;
			$options['ResponseGroup'] = 'ItemIds,ItemAttributes,Images';
			$result = $amazon->ItemSearch('Books', $options);
		}
	}
}
?>

Search用のデータベースというものはないので、var $uses = nullにしている。
ただ、これだとモデルが使えなくなるので、validateをどうしたらいいのかよくわからない。
未入力でフォームが押された場合は「キーワードを入力してください」とかしたいんだけど。
とりあえず、スルーして先に進むことにして、これで検索結果のリストを表示できるようになった。
自分で使うのをいいことにエラーチェックとか適当。

ページング

ページング処理は CakePHP に用意されていないのか調べてみたら、PaginatorHelperというのをみつけた。


でも、これはデータベースに入っているデータを取るときにページングの処理もしてくれるものらしい。
詳しい使い方解説をしている方がいたのでメモ。


とりあえず、分割してリンクを追加するだけの適当な処理を追加しておいた。

http://books.theworld.jp/search/keyword/%E8%8D%92%E6%9C%A8%E9%A3%9B%E5%91%82%E5%BD%A6/1


次は、選んだ本を登録する処理か。


CakePHP のコードの書き方の参考にと思って OpenFLP のソースを読んでみたらレベルが違いすぎて悶絶した。すごいなあ。
こんな風にコードを書ける日は来るのだろうか。

3月末でやることがアレコレあるけどちょっとずつ CakePHP に慣れていきたい。