The Hit Listの使い方を日本語訳してみる

ショートカットとか書いてあるけど、英語だと分かりづらいので
忘れないように翻訳します。

原文

和訳

- 基本的な使い方
・Returnキーを押して、タスクを追加します
・'@'キーを押して、コンテキストを設定します
・'/'キーを押して、タグを追加します
・サブタスクの追加するには、Returnキーを押してタスクを追加し、タブキーを押します
・'T'キーを押して開始日を'本日'に設定します。タスクは'Today list'に表示されます
・1〜9のキーを押して優先順位を設定します。0キーは解除
・スペースキーを押すと、タスクが完了になります
・'X'キーを押すとタスクをキャンセルし、Deleteキーで削除します
・w,a,s,dキーでタスクが移動します。w(上) a(左) s(下) d(右)
・カード表示では、1つのタスクに集中することができます。⌘-2でカードビューに切り替え、⌘-1でアウトラインビューに戻ります
・一度完了したタスクは'Archive'ボタンを押してタスクを非表示にすることができます

- 高度な使い方
・コンテキストは'@'文字で始まるタグです
・スペースの後に'/'で文字列を囲むと、タグになります
・テキストをTheHitList(THL)に貼付けると、各行がタスクになります
・他のリストや他のタブにタスクをドラッグ&ドロップすることができます
・URLやファイルをTheHitListのドックアイコンにドラッグ&ドロップして素早くタスクを作る事ができます
・'B'キーを押すとタスクタイムを計測します
・アウトラインビューでは、viのカーソル移動でタスクが選択できます(j,k,h.l)またはEmacsスタイル(control-n,p,f,b)
・キーを離すことなく、他のリストやフォルダから選択する場合は'G'を押して'移動パネル'を使います。これはQuickSilverと同じように動作します。名前の一部だけを入力することもできますし、矢印キーを使って候補を選択することもできます。タグの入力には'/'の後にタグ名を入力します
・すぐにタスクを他のリストに移動するには'F'キーを押します。この機能は'移動パネル'と同じ使い方です
・タスクの開始日と終了日を素早く変更できるショートカットは、-,=, [, and].
・タブバーの空白エリアでダブルクリックして、新しいタブを作成することができます
参考になれば良いです。 間違ってたらごめんなさい。

ロディア No.11

タスクや、走り書きに。


あとで使えそうな情報はMoleskineのポケットに入れておいて、
その日の終わりにテープ糊で張り付けたり、追記して保存します。

d48399df643b880176ffd7c48325b2da

No.11は大きすぎず、小さすぎずでMoleskineと相性はバッチリ。
貼付けても余白にいろいろ追記できます。


結構使うので、まとめて10冊オーダーしました。


レザーが余っているので、ベルトループに付けられるホルダーを作りたいと思います。

ビューをXmlで出力したい場合の注意

$Model->findの結果をxml形式で出力したい場合

セットアップ

// routes.php
Router::parseExtensions('xml');

~/:controller/:action.xmlにアクセスすると
/views/コントローラ名/xml/アクション名.ctpのviewが使われる。

コントローラ

// これがないとViewが見つからないエラーになる。
var $components = array('RequestHandler');

// アクション
public function xmlTest() {
    // 通常通りにビューに渡したいデータをセットする
    $this->set('data', $this->TestModel->find('all'));
}

ビューテンプレート

/views/layouts/xml/default.ctp

<?php header("content-type: text/xml"); ?>
<?php echo $xml->header(); ?>
<?php echo $content_for_layout; ?>

ビュー実装

<hoges>
<?php echo $xml->serialize($data);?>
</hoges>


var $components = array('RequestHandler');を忘れずに。

LAMY Safari と Moleskine

LAMY Safari L18-EF買いました。

IMG_0289


早速、モレスキンに試し書き

IMG_0291

左がLAMYで、右がプレピー0.3mmブルーブラック


プレピーは書いていると、すぐ擦れます(画像下のグルグルはプレピー)

太さは同じ感じ。
写真では分かりづらいですが、LAMYのブルーの方が明るいです。
個人的にはLAMYのインク色の方が好き。


Safariは「すらすらーー」っと書けます。

良い買い物しました。

CakePHPにてGoogleMapにリアルタイムプロット!!! その3

pointsコントローラのセットアップ

コンソールにてbake

cake bake controller points

しまった、最初にbake allしておくべきだった。


コントローラ単体をbakeすると、scaffoldのみの実装になるので

まずは、GoogleMapを表示してユーザーの位置を確認する為にindexメソッドを実装。

// points_controller.php
function index($lat=130.709744, $lng=32.803303, $meters=5000) {
	$activeUsers = $this->Point->activeUsers($lat, $lng, $meters);
	$this->set('activeUsers', $activeUsers);
}

pointsビューのセットアップ

ビューもbake

cake bake view points

index.ctpの実装

<?php echo $html->script('http://maps.google.co.jp/maps/api/js?sensor=false', false)?>
<div id="mapArea">
	<div id="mapcanvas" style="width:100%;height:600px;"></div>
</div>


ここからjavascriptでindexに位置情報をプロットしていく
クライアントからの位置情報の通知があった場合はcakeで処理。
mapcanvasの動的書き換えはAjaxで。


詳細は次回で

MOLESKINE

私のモレスキン


私の・・・なんて偉そうに言ってますけど、まだ1冊目。
とりあえず、思いついたことは全てここに書き込みます。

IMG_0228

書き込んだら時間を作ってPOSCAでカテゴリーで色分けして、
後で参照したい内容であれば最終ページのインデックスへリンクを追加。


内容にTaskが含まれる場合は、iPhoneからtoodledoへ。


名刺をもらったら、即スキャンしてEvernoteへ送って
メモとイラストを添えてモレスキンに貼付けています。


万年筆はpreppy(プレピー?)のブルー・ブラック
ペンループはミドリ

CakePHPにてGoogleMapにリアルタイムプロット!!! その2

前回に引き続き、まずは一時DBの構造から

DBスキーマ

コマンドラインからDDLで生成
スキーマは以下のような感じに。


CREATE TABLE `points` (
`id` int(11) NOT NULL,
`uid` varchar(32) NOT NULL,
`latlng` geometry NOT NULL,
`created` datetime,
`modified` datetime,
PRIMARY KEY (`id`),
SPATIAL KEY `latlng`
) ENGINE=MyISAM

データベースエンジンはMyISAMでないと、SPATIAL INDEXが使えないので注意!


bakeコマンドでPointモデルを焼く。

モデルのvirtualFieldsを設定


var $virtualFields = array(
'longitude' => 'X(latlng)',
'latitude' => 'Y(latlng)'
);

これで、普通にCakeで$model->findした時にlongitude, latitudeが取得できる。


詳しくは、http://book.cakephp.org/ja/view/1608/Virtual-fieldsを参照。

Modelにメソッドを定義

ちなみに、今回は指定した範囲の検索を行いたいので、Pointモデルにメソッドを定義した。


const METER = 0.000009; // クラス内定数として定義する

function activeUsers($lat, $lng, $meters = 10000) {

$r = $meters * self::METER;
$limit = 50; //とりあえず。

$queryRet = $this->query("SELECT SQL_NO_CACHE uid, (Y(latlng)) AS Point__latitude ,(X(latlng)) AS Point__longitude
FROM points AS Point
WHERE MBRContains(
GeomFromText(
Concat('LineString(',
".$lng." + ".$r." , ' ',
".$lat." + ".$r." , ',',
".$lng." - ".$r." , ' ',
".$lat." - ".$r." , ')'
)
),
latlng
)
ORDER BY GLength(
GeomFromText(
CONCAT(
'LineString(".$lng." ".$lat.",',
X( `latlng` ) , ' ',
Y( `latlng` ) , ')'
)
)
) LIMIT ".$limit);

return $queryRet;

}

Cake_logのSQLを見ると、virtualFieldsはModel__fieldでクエリを投げているようで、
この書式だと結果セットがきちんと、配列で取得できるみたい。


今回はとりあえずこの辺で。