メイン

やりくりする アーカイブ

2006年08月25日

とりあえず MT のカスタマイズから。

まず、StyleCatcher を入れてスタイルを変えてみた。

http://www.sixapart.com/pronet/docs/powertools
xhtml は共通で、CSS (とか画像など)だけ切替える方式のようで、
テーマのリポジトリでは、CSS(とか画像など)が配布されている。
StyleCatcher を使うと色々試しながら選べる。

なるほどこれは面白い…ブログ流行ったのもうなずける。

追々、カスタマイズやら、mod_perl 導入やら、やっていきますよ。

2006年08月29日

VMWarePlayer で FreeBSD 5.5

ムチャしても良い開発専用サーバが自宅に欲しくなったので、
ちょうど手近に空いていた PC
(3年以上前に買って、一回故障した ThinkPad R40 ,Win XP 入り)
に、仮想開発サーバを導入した。

最初は、coLinux を試したが、ネットワーク接続などの設定が面倒なのと、
自宅の無線 LAN に、普通に参加させるのが難し(無理?)そうだったので、
結局、VMWarePlayer にした。

続きを読む "VMWarePlayer で FreeBSD 5.5" »

XMLHttpRequest と セッション

PHP におけるセッション管理では、
$_GET ではなく、$_POST でもなく、$_COOKIE からセッションID を受け取り、
さらに、$_COOKIE 以外で半券(チケット)を受け取って、
セッションID と照合して正当性を確かめるのが定石だ。

1. $_COOKIE による受け取りが必要な理由:
1.1 悪意の第三者は、あなたのリクエストに含まれる $_GET, $_POST を、自由自在に変更する罠を作れる。
1.2 PHP ではリクエスト変数($_GET, $_POST, $_COOKIE)によってセッションID を指定できる。

したがって、
$_GET, $_POST でセッションIDを受け取るようなシステムでは、
悪意の第三者が仕掛けた罠によって、
悪意の第三者が指定したセッションID で、
あなたのセッションが開始される可能性がある。

2. $_COOKIE 以外での半券の受け取りが必要な理由:
2.1 悪意の第三者は、あなたのリクエストに含まれる $_GET, $_POST を、自由自在に変更する罠を作れる。
2.2 ブラウザは、リクエストの際に、ドメイン・パスが一致する Cookie を、自動的に付加する。

したがって、
半券による照合のないシステムでは、
$_COOKIE だけでセッションが再開してしまい、
悪意の第三者が仕掛けた罠によって、
悪意の $_GET, $_POST が、あなたのセッションに混入する可能性がある。

続きを読む "XMLHttpRequest と セッション" »

2006年09月18日

JSONP / JSONScriptRequest

最近 JSONP って呼ばれているものは:

1. JavaScript で script タグを生成する。

この例の場合は、script タグが生成されたタイミングで、

がリクエストされ、リクエスト変数に応じた動的な結果が返ってくる。
2. 結果は JSON で返す。

3. どうせなら…という事で、コールバック関数で wrap して返す。


…で、showResult は別途実装…という一連の考え方のようだ。
XMLHttpRequest になぞらえて JSONScriptRequest と呼ばれたりもしている。

続きを読む "JSONP / JSONScriptRequest" »

2006年11月16日

svn 入門

  1. 運用中の最新ファイルでローカルの作業コピーを更新
  2. emacs(meadow) で編集
  3. ediff で差分確認
  4. 更新

というのを手作業で繰り返すのはもうイヤだ。
いい加減バージョン管理システムが必要だ。

つーわけで、Subversion にスムーズに移行すべく調査、検討した。

続きを読む "svn 入門" »

2006年11月30日

svn 入門(その2)

前エントリから続き。

前の構成では、衝突の解消がうまく扱えてなかったので、
「極力フロントエンドで調整する」という方針にしたがって、
フロントエンドを変えてみた。

現在の構成は以下の通り、
  • Subversion 1.3.2 (cygwin 版)
  • meadow 3.00 (based on GNU Emacs 22.0.90.1)
  • vc-svn.el (FSF 版)

.emacs の変更などはほとんど必要なかったはずだが、結局いろいろいじった。
使っていないのに JDE やら、ECB までも最新にした(汗)。
#
# meadow の変更点について、蛇足。
#
# MULE-UCS は使わない前提になったようなので、該当部分をコメントにした。
#
# ;;; (load "un-define");; unicode
# ;;; (load "un-tools");; unicode
#
#
# ファイルを dired バッファにドロップすると、そのディレクトリにコピーされる!
# (meadow 2 系までは、ドロップしたファイルが開いていた)
# で、undo すると、dired 上でだけ消えるが、実際は消えない。
# 逆に dired からはドラッグできない(一方通行)。
# ちょっとキモイので、前の挙動に戻す設定がきっとあるはず。
#
#
# w32-symlinks( Windows のショートカットを良きに計らってくれるやつ)
# が無効っぽくなってたけど、w32-symlinks.el のコメント読んだりして、
# 結局 (load ) の前に (setq ) したら上手くいった。
#
# (setq w32-symlinks-handle-shortcuts t)
# (load "w32-symlinks")
#

これで、vc 経由の svn が、満足できるレベルで使えるようになった。

続きを読む "svn 入門(その2)" »

2006年12月03日

MT をもう少しちゃんと使ってみる。

MT を使って何本かエントリを書いてみて:
  1. 本文中の改行の br タグへの変換が直感に反する。
    でも、そういうものとして定着してしまったのでしょう。
    郷に従います。
  2. サイドバーとかに表示させる、
    汎用性のある HTML のブロックを 'module' と呼び、
    その 'module' をまとめたものを 'widget' と呼ぶらしい。
    'widget' 単位で管理することにした。

MT は、使い勝手よりも、カスタマイズの自由度が優先された、玄人向けの設計だと思う。
それが、結局は、受け入れられたんだろうなぁ…と、いまさら思う。

で、Vox は、そうじゃない市場向け、と。

2006年12月08日

Firebug Lite の console.*(); の出力が改行されて欲しい件。

早速、IE で Firebug Lite を使ってみているのだけれど、
console.log(); などによる、コンソールへの出力が、改行されない。
オシイ。とりあえず応急処置。

追記: 12/25
コメントでご連絡いただいた、 WebOS Goodiesの歩行者さんによる
firebug Lite ブックマークレットでの修正箇所を参考に、以下のように変更した。

WebOS Goodiesの歩行者さんは、
var row = consoleBody.ownerDocument.createElement("pre");
としているのだけど、
これだと row.className に指定されているであろうスタイル等と干渉する気がしたので、
innerHTML だけ、pre で囲んでみた。
結果として IE6 でも改行反映された。

2007年03月23日

Apollo 雑感

Adobe Labs - Apollo 面白そうなので、HTML + JavaScript + CSS なウィジェットを作ってみた。

まずは普通に、HTML + JavaScript + CSS で、
GoogleBase のデータを JSONP で展開して入力を補完するっていう単純なものを作った。
https://tonextone.com/neta/GDataCompletions/

で、これをウィジェットにする。
全く変更なしで、さくっとウィジェット化できた!
https://tonextone.com/neta/GDataCompletions/GDataCompletions.air

↑この .air ファイルの実体は zip 書庫で、
展開すると、HTML, JavaScript, CSS がそっくり入っている。
確か Konfabulator(現 Y! widget) も、こういう設計だったと思う。
(今は違うみたいですね)

端的に言えば、Apollo は、
これまでもいろいろあった Flash 系、HTML 系ウィジェット実行環境を統合する、
Yet Another なウィジェット実行環境、という印象。

2007年09月23日

UserPrivateGroup の使いどころ

unix 系のサーバにアカウントを作成する際に、

というように 'someone' のプライマリグループとして 'someone' を設定する事がある。
このようなポリシー、またはこのような 'someone' グループを User Private Group というらしい。

なんか意味無くグループ増えるだけじゃん…と思って、ここ最近では避けるようにしていたんだけど、
本日ようやく使いどころがわかった。

プロジェクトチームでファイルを共有する場合、

  1. 同じグループ 'project' に 'someone1', 'someone2' が参加している状態にして、
  2. 共有したいファイルの所有グループを 'project' にし、
  3. グループ読み書き権限を付与しておく
…というのは良くあるケースだと思う。
2,3 を実現するためには、それぞれ、 setGID, umask(002) を使ったりする。

このようなケースで、
User Private Group ポリシーを採用していない場合、つまり

のような場合、共有したくないファイルを作成するのが難しい。
普通にファイルを作成するだけで someone1:project の所有物となり、
umask(002) の効果で、自動的に project グループで共有されてしまう。

一方、User Private Group ポリシーを採用していれば、
普通にファイルを作成した場合は、 someone1:someone1 の所有物となり誰とも共有されず、
project グループで共有されるのは setGID されたディレクトリ内だけになる。

この違いが、重要な場合もあるだろう。
例えば、共有レンタルサーバの管理とかする場合は必須だろうと思う。

# umask のほうをディレクトリ毎に設定するのも一案だが、その方法は、まだ知らない。

2007年10月02日

Google Maps API を SSL で使えるようにしてみる。

2008/03 : /maps?file=api を書き換えるための正規表現のパターンを微調整しました。

2008/05/15 : 通りすがりさんの報告を受けて、正規表現のパターンをさらに微調整しました。

2008/07/25 : Google 側のコードに変更があったようで、機能しなくなったので、 正規表現のパターンを緩めに調整しました。

2009/07/19 : kobuchi さんの報告を受けて、修正しました。
Google 側のコードの変更により /maps?file=api だけではなく、そこから先で動的にロードされる JS ファイルの内部も書き換えることが必要になったので、そのように変更しました。

Google Maps API は HTTPS では提供されていないらしい。
(Google Analytics には HTTPS 版もある。というのは先日知りました。)

しかし、HTTPS なページに、HTTP なリソースを読み込むと IE 曰く、
「このページにはセキュリティで保護されている項目と保護されていない項目が含まれています」と。

この問題を何とかしなければならない機会があったので、
HTTPS な proxy をかまして何とかしてみた。

要するに、 Google Maps API を使うためには、普通

http://maps.google.com/maps?file=api&v=2&key=...

っていう JavaScript を読み込むけれども、
まずこの JavaScript を https://(自前の proxy )経由でリクエストし、
この JavaScript にハードコードされている http://... を
https://(自前の proxy )経由でリクエストするように書き換えれば良いだけ。
以下は PHP での例。

デモ: https://ssl.tonextone.com/neta/gmap_over_ssl/

# SSL の証明書を買っていないので、その旨の警告は出ます。

./rewrite_gmaps_api.php


./proxy.php

2008年01月03日

和訳してみた

"Higher-Order JavaScript" by Sean M. Burke を和訳した。 "Higher-Order JavaScript"(ja)

"Higher-Order" という表現に何か高尚なものを感じ、 JavaScript のすごいことが書いてあると期待し del.icio.us したものの、それっきりになっていたので。

最初に斜め読みした段階で、実は、期待していたものではなく、 Perl の人が「JavaScript で Perl を書く」ためのものであることがわかったのだが、
trivial なことでも良いので、何か吸収できるだろうと信じて、区切りの良いところまで訳してしまうことにした。
以下、その過程で脳裏をよぎった物事:
  • x.func = function() { return this; } ならば、
    x.func() の this は x 。
    x.func.apply(y) の this は y 。
    Function#apply(object, [arg, ..]) は、 prototype.js でいうと、Function#bind(object, arg, ...)
  • Prototype API Documentation を読もう。要所でソースコードも。
  • Perl のリストという概念とか、 $arrayref = \@arrayref; $hashref = \%hashref とか、やっぱり変態的。
  • lisp のリストは俺的にしっくりくるか? emacs lisp で hello world してみるか。

2008年07月18日

Re: Emacs の moccur-grep-find で特定のファイルを無視したい

ずっと dmoccur を使ってたんだけど、
( moccur-grep(-find)は、) find-file でファイルを開くことをしないので,dmoccur よりもはやく検索できますし,バッファが氾濫することもありません.
だそうで試してみることにしました。

で、まずは .svn/* とかを検索対象から省いてから速さを比較しようと思ったんだけれど、この「省き方」の情報が無い。

そんな中、 id:higepon さんが moccur を愛用しているようだったので質問させていただいたところ、
elisp を書いていただきました。ありがとうございました!!!

で、結論を言うと、
どうやら、 moccur-grep(-find) でも、 dmoccur の設定(dmoccur-exclusion-mask)を、利用してくれるようです。
color-moccur.el を読めないなりに読んでみると、どうもそのようです。

現在、以下のような設定で、試用中です。

もともと dmoccur の設定があったせい(おかげ)で、
id:higepon さんから教えていただいた設定を追加しても(しなくても)状況が変化せず、ちょっと混乱してしまいましたが、
id:higepon さんの elisp も、期待どおりの動作をしています。

まだ、試用を開始したばかりなので、もしかしたら、この結論も正しくないかもしれません。
間違いなどあれば、ご指摘いただければ幸いです。

2008年09月15日

The Art of SQL「4 章 策略」から読み取ったこと。

  1. 効果的なフィルターとして働くカラムを見つける。
  2. なるべく早い段階で、そのフィルターを適用する。

例1: 結合する前にフィルター

結合する前にフィルタリングできるならば、そうしたほうが速いに決まっている。

旧来の結合構文でも、同様。

例2: IN か EXISTS か?

サブクエリの内側のフィルターが効果的な場合は IN (非相関サブクエリ)
サブクエリの外側のフィルターが効果的な場合は EXISTS (相関サブクエリ)
ただし、相関サブクエリの結合キーには、インデックスを張るべし。

2008年10月05日

The Art of SQL「10 章 戦力の結集」「11章 計略」から読み取ったこと。

  1. スキーマのモデリング技法のうち重要なものは、以下の 2 つ。
    第3正規形(3NF)
    汎用的な(最適化されていない、中立的な)スキーマ。
    マスター/ディテールもこっち。
    スタースキーマ
    データ・ウェアハウス用スキーマ。
    分類のキーとなる「ディメンジョン」表。
    各種「ディメンジョン」の組み合わせに対応する集計可能な値「メジャー」だけを含む「ファクト」表。
  2. メタ設計よりも、サブタイプを使おう。
    まだ、ピンと来ないので、引き続き、調べ中。
参考URL:
スキーマのモデリング化技法
データウェアハウス関連用語 解説

2008年11月29日

店舗情報の版管理 (skypefind の場合)

1.search_result
2.spot_detail
3.spot_try_to_conflict
4.spot_conflict
5.spot_revise
6.spot_revision_log
7.spot_review
8.spot_flag

2009年01月31日

FreeBSD リモートアップデート 5.4-RELEASE => 6.4-RELEASE

さくらで借りている専用サーバー(このブログも入ってる)の OS を、
リモートアップデートした。

FreeBSD 5.4-RELEASE => 6.4-RELEASE

5.4 用の ports のリポジトリが更新されなくなって来ている気がしたのが理由。

OS のアップデート自体は、ほぼ無問題で、
ただ locale の調整が必要そうなので、それを今から解消する。

ports のアップデートも、無問題。

ports で、不用意に perl をアップデートしたので、少しはまった。

locale 問題を解消したら、
一連の詳細を trac に作業記録を書いて、このエントリからリンクする予定。
# trac も locale の問題でエラーを吐いているので。

ということで、 作業記録

2009年03月08日

Jester is ActiveResource client lib. for Javascript.

JavaScript で REST API をたたく場合、
XMLHttpRequest, IFRAMEHttpRequest, JSONScriptRequest(JSONP) などを使うわけだが、
Jesterは、 これを抽象化して、xx.find(), xx.save() とかいうカッコいい API を提供してくれる。

そもそも、REST を抽象化して ActiveRecord パターン似の API でやりましょう、
という ActiveResource がRails で提唱・実装されている。
その後、この ActiveResource の実装がいくつか公開されている中で、
クライアントライブラリの JavaScript 実装として有名なのが Jester 。

prototype.js, jQuery なんかの Ajax.foobar() を使ってゴリゴリやるのが今の日本の主流だと思うが、
WebOSGoodies で ActiveResource が絶賛されていることもあり、Jester で軽く試してみた。

Firebug <=> Twitter API

とにかく手軽に試したいので、
  • Firebug のコンソール上で Jester を利用
  • 既存の REST API である Twitter API を操作
というプランで。

prototype.js, jester.js をロードするだけの HTML を書く。
1.load

おもむろに使ってみる。find('all' {username: 'tonextone'}, console.log);
2.find_by_username

DONE!
3.done

レスポンスの中を見てみる。
4.inspect

find(1274085406, console.log);
5.find_by_id

レスポンスの中を見てみる。
6.inspect_again

サーバとのやりとりを確認。
7.transports

要するに JSONP です。
8.jsonp

簡単です。お試しあれ。

2009年04月04日

ウェブサイトのイメージを共有するためのツール

職場で、これから作成するウェブサイトのワイヤーフレーム + サイトマップを作りたくなって、いろいろ調べた際のメモ。

ワイヤーフレーム

pencilは、ワイヤーフレームというには、ちょっと具体的過ぎる感じ。
結局、ER図作成でお世話になっている gliffy を選択した。

gliffy は、矩形選択してコピーとか移動とかすると、
操作対象の中のレイヤーの z-index が維持されなかったりグルーピングがおかしなことになったりするけれど、
そういうクセを許容させるくらい使い勝手が良い。

また、今回の目的はイメージを共有することなので、
オンラインで共有できて、さらにコラボレーション(共同編集)できるのも良い。

サイトマップ

writemapsは、見た目キレイで良いのだが、機能が足りないので、却下。
dot -> graphviz も試したが、コラボレーションに向かないので、却下。
結局、マインドマップツールの、MINDOMOを使ってみた。
SERENA Prototype Composer も気になったが、ちょっと高機能過ぎる気がするのと、Windows アプリなのでコラボレーション的な制限を感じたので、保留。
今から触ってみます。

以上、とりあえずのメモ。

2010年06月20日

Google Documents List Data API v3.0 を python から利用してみた。

今更ながら、地味に便利なんじゃないかと思って試してみたら...

...すごい。
Google Docs と統合されたアプリを作ったり、単に HTML -> PDF などの変換に使えますね。

アーカイブ

フィード

このブログ

RSS 2.0 / ATOM

このカテゴリ

RSS 2.0 / ATOM

AdSense

del.icio.us

flickr