バックミラーつけた。 on Flickr

はじめに

※ 注:「aquaさん」とは,私が現在乗っている自転車「ORBEA aqua」のことを指します.さっき,そう呼ぶように決めたり決めなかったり.

先日の西岡さんとのロングライドの時に教えてもらったロードバイク用のバックミラー。 これがとてつもなく便利品☆彡 これを付けていれば、走行時に後ろを見なくても背後からの車や走行者の様子がばっちりわかるd(・・〃)
-hiro’s taste-: 551:自転車のバックミラー

きっかけは,自転車関連で何かを検索していたときにふと見つけたこちらのエントリ.

これは便利そう

路上左端を走行時,後方の自動車なんかの状況を確認するため,右後ろを振り向いていますが,けっこうフラついて危ないです.

で,このバックミラーをドロップハンドルのエンド部分に取り付けることで,少し下を向くだけで後方の状況を把握できる,というわけです.なるほど!

購入,取り付け

Amazonさんに置いてあった ので迷うことなく購入しました.ドロップハンドル用,フラットハンドル用,それぞれ向けのものがあるので,そこだけは注意が必要ですが.

取り付けは特に難しいところなどありません.付属のヘックスレンチ1つでできてしまいます.強いて言うならば,ハンドルのエンドキャップを外すのがいちばん苦労した,といったところでしょうかw

少し走ってみて

角度調整は簡単にできます.かといって,振動で角度がずれるほど緩くもなさげです.まぁ膝とか当たれば動きますが.

小さめの面積で少しでも多くを捉えるためだと思いますが,反射面が少しカーブしています.そのため,距離感がつかみにくい感がありました.といってもまだ1回,しかも数kmしか走っていないので,すぐに慣れてくることでしょう.

おわりに

ということで,aquaさんにバックミラーを取り付けましたよー,というお話でした.

交通量がそれなりにあるような道路を走行する,そんなケースが多いときにかなり重宝するのではないかな,と思います.価格も手頃ですし.

ちなみに

手元にもう1つあったりなかったり.布教用ってわけではありませんが,よろしければどなたかつk(ry

P1370292 on Flickr

iPhone 3GS に乗り換えました.

$電話番号 = $以前の電話番号;  # そのまま
( $メールアドレス = $以前のメールアドレス )  =~ s/auドメイン/ソフトバンクドメイン/;  # キャリアだけ変更

とりあえず一報まで.

2009-06-21 15:03 追記,thanks to @samurai20000
コメントをいただいたので,以下の点に追記しました.

  • *.el を置く場所
  • ことえりで日本語入力時に必ず全角スペースになる件
  • ウィンドウの透明化

062001

はじめに

MacBookと暮らし初めてひと月半ほど経ちました.

Macでは,テキストエディタとして Carbon Emacs (以下,emacs)を使っています.それまで使ってきた(現在もときどき使ってますが) xyzzy との微妙な差異に最初は多少悩まされましたが,ここ最近で,ようやく慣れてきた感があります.

その間,自分が使いやすいようにと,先人の記録を参考に,emcas 設定を追加・変更してきました.

以下,そんな設定の現状についてメモ的にまとめてみました.特に目新しいものなどはありませんが.

設定の前に

*.el を置く場所

拡張する際,先人が書かれた emacs lisp ファイルを特定の場所に置く必要が出ることがありますが,その場所がまったくわからなかったので,参考にさせていただいたものが以下.

また、MacOSXでメジャーなCarbon Emacsのsite-lispディレクトリの位置は非常にわかりにくく、パッケージ内となっている。Carbon Emacsをアプリケーションフォルダ内に入れている場合、パスは「/Applications/Emacs.app/Contents/Resources/site-lisp」となる。
Emacsの初期設定ファイル (Kanasansoft Web Lab.)

そんなわけで,

/Applications/Emacs.app/Contents/Resources/site-lisp/

に置きましょう,ということになります.

2009-06-21 15:03 追記,thanks to @samurai20000

次のような 1行を追加することで,任意の場所におけるようですね.

(setq load-path (cons "/Users/iwata/site-lisp/" load-path))

なるほど,この方が,デフォルトのものと追加したものとの住み分けができてメンテナンス的にもよさげですね.

複数起動する

先日参加した Kanasan.JS の懇親会で,次のようにするといいよ,という話をいただきました.

% open -n /Applications/Emacs.app

現在は,これを cemacs という名前で alias して使っています.

alias cemacs="open -n /Applications/Emacs.app"

毎回(Visorで)ターミナルを呼び出して起動していますが,なかなかメンドイ.ランチャからコマンドをたたける方法とかないのかな,と思い始めている今日この頃です.

見た目に関する設定

ウィンドウサイズの位置とかサイズとか

062002

できるだけモニタいっぱいに,左のDockにはかからないように...で試行錯誤の結果が以下です.

(if window-system (progn
  (setq initial-frame-alist '((width . 202)(height . 58)(top . 0)(left . 48)))
  (set-background-color "Black")
  (set-foreground-color "White")
  (set-cursor-color "Gray")
))

フォント

「Options → Show/Hide → Font Panel」メニューでフォント選択なGUIを呼び出して「どのフォントにしようかな?」といった感じで1つ1つ切り替えながら選んでたので,それがはき出したコードかな?

(if (eq window-system 'mac)(require 'carbon-font))
(fixed-width-set-fontset "hirakaku_w3" 10)

キーバインド

改行後にインデント

(global-set-key "\C-m" 'newline-and-indent)

効果があるのかないのか,最初から有効になっているのか...あまりよくわかってません ><

Ctrl-H でヘルプを表示させずに Backspace を機能させる

linuxとか使っていると,Ctrl-HBackspace の役割を果たすものだと体が覚えてしまいます(ですよね?)(Windows でも XKeymacs を使ってそのように割り当てています),「あ,間違えた → Ctrl-H Ctrl-H Ctrl-H...」といった感じで.Windows でも XKeymacs というツールを使って,そのようにキーバインドを変更しています.

しかし,emacs のデフォルトでは,Ctrl-H (を2回?)すると,ヘルプっぽいもの(?)が出てきてしまいます.これはうざい.

次の2行を追加することで,そんなストレスから解放されます.

(load "term/bobcat")
(when (fboundp 'terminal-init-bobcat) (terminal-init-bobcat))

行カーソル

062006

カーソルの点滅のみだとどうも位置を見失うので,現在の行をハイライトするようなものが欲しくて,検索して見つけたエントリ(後述)を参考に,次のようなスクリプトになりました.

(defface hlline-face
  '((((class color)
      (background dark))
     ;;(:background "dark state gray"))
     (:background "gray10"
                  :underline "gray24"))
    (((class color)
      (background light))
     (:background "ForestGreen"
                  :underline nil))
    (t ()))
  "*Face used by hl-line.")
(setq hl-line-face 'hlline-face)
;;(setq hl-line-face 'underline)
(global-hl-line-mode)

参考

js2-mode

062009

デフォルトで入っている javascript-mode がなんだか残念なので,それにとって代わる JavaScript 用のモードを探してみたところ,js2-mode なるものが評判いいようで.

コーディング中にリアルタイムで文法チェックなどを行ってくれたりします,ちょっとお節介と感じるくらいに.

コンパイル

js2-mode のサイトにある js2-*.el(現時点では js2-20080616a.el)をダウンロードし,js2.el などとして先で触れたパスに置きます.

そして,M-x byte-compile-file を実行,置いたファイル(この場合,/Applications/Emacs.app/Contents/Resources/site-lisp/js2.el のようになります)を指定することで,コンパイルが行われます.

.emacs に追記

コンパイルが完了したら,.emacs に次のようなスクリプトを追加します.

(autoload 'js2-mode "js2" nil t)
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
(add-to-list 'auto-mode-alist '("\\.json$" . js2-mode))
;; http://8-p.info/emacs-javascript.html
(setq-default c-basic-offset 4)
 
(when (load "js2" t)
  (setq js2-cleanup-whitespace nil
        js2-mirror-mode nil
        js2-bounce-indent-flag nil)
 
  (defun indent-and-back-to-indentation ()
    (interactive)
    (indent-for-tab-command)
    (let ((point-of-indentation
           (save-excursion
             (back-to-indentation)
             (point))))
      (skip-chars-forward "\s " point-of-indentation)))
 
      (define-key js2-mode-map "\C-i" 'indent-and-back-to-indentation)
      (define-key js2-mode-map "\C-m" nil))

この場合,jsjson を拡張子に持つファイルを読み込んだ場合に js2-mode が起動するようになります.

参考

tt-mode

062010

Template Toolkit 向けテンプレートの記述向けのモードです.[% ... %] な表記がハイライトなどされます.

コンパイル

次のサイトから tt-mode.el をダウンロード,例のパスに置きます.そして,M-x byte-compile-file します.

.emacs に追記

拡張子に連動してモードを起動したい場合,その拡張子に合わせて次のようなものを .emacs に追記します.

(autoload 'tt-mode "tt-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.tt$" . tt-mode))
;;(add-to-list 'auto-mode-alist '("\\.tpl$" . tt-mode))

参考

jaspace-mode

062007

Mac デフォルトの IME である「ことえり」では,日本語入力時,スペースは必ず全角となり,これを半角に設定することもできないっぽいです.

そのため,ソースコードを書いているときなどに,意図せず全角スペースが混入することがときたま発生してくれちゃったりします.しかも見えません.カーソルを乗せないと判別できません.


全角スペースを入力した場合,デフォルトでの表示単なる「空白」であり,特に見えるわけでもありません.カーソルを乗せたときにそれが全角かどうかがわかるくらいです.

これでは体に悪いので,何かないかと探してみたところ,全角スペースやタブを可視化してくれる jaspace-mode の存在を知りました.

コンパイル

次のサイトから jaspace-mode.el をダウンロード,例のパスに置き,M-x byte-compile-file します.

.emacs に追記

以下のスクリプトを .emacs に追記します.

(when (require 'jaspace nil t)
  (when jaspace-modes (append jaspace-modes
                              (list 'lisp-mode
                                    'yaml-mode
                                    'perl-mode
                                    'js2-mode
                                    'javascript-mode
                                    'python-mode
                                    'ruby-mode
                                    'php-mode
                                    'xml-mode
                                    'html-mode
                                    'css-mode
                                    'text-mode
                                    'tt-mode
                                    'fundamental-mode
                                    ))))
(when (boundp 'jaspace-alternate-jaspace-string)
  (setq jaspace-alternate-jaspace-string "□"))
(when (boundp 'jaspace-highlight-tabs)
  (setq jaspace-highlight-tabs ?^))
(add-hook 'jaspace-mode-off-hook
          (lambda()
            (when (boundp 'show-trailing-whitespace)
              (setq show-trailing-whitespace nil))))
(add-hook 'jaspace-mode-hook
          (lambda()
            (progn
              (when (boundp 'show-trailing-whitespace)
                (setq show-trailing-whitespace t))
              (face-spec-set 'jaspace-highlight-jaspace-face
                             '((((class color) (background light))
                                (:foreground "blue"))
                               ;;(t (:foreground "green"))))
                               (t (:foreground "gray32"))))
              (face-spec-set 'jaspace-highlight-tab-face
                             '((((class color) (background light))
                                (:foreground "red"
                                             :background "unspecified"
                                             :strike-through nil
                                             :underline t))
                               ;;(t (:foreground "purple"
                               (t (:foreground "gray16"
                                               :background "unspecified"
                                               :strike-through nil
                                               :underline t))))
              (face-spec-set 'trailing-whitespace
                             '((((class color) (background light))
                                (:foreground "red"
                                             :background "unspecified"
                                             :strike-through nil
                                             :underline t))
                               ;;(t (:foreground "purple"
                               (t (:foreground "gray16"
                                               :background "unspecified"
                                               :strike-through nil
                                               :underline t)))))))

一部のモードで自動的に起動しない

このスクリプトの冒頭ですが,「このモードでは jaspace-mode も起動してね」的なことと解釈していろいろなモードを追加してみました.

しかし,一部のモードでは自動的に起動してくれません.自分で M-x jaspace-mode すればちゃんと起動してくれるのですが...

この辺, lisp(emacs lisp)がわかっていればきっと修正できるんでしょうけど,現状さっぱりです.しばらく手動で起動するしかなさげですかね ><

ちなみに

本エントリを書いている現在,ATOKが入ってますw

参考

2009-06-21 15:03 追記,thanks to @samurai20000

当時は知らなかったのですが、実はことえりでも、日本語入力モードで常時「半角スペース」にする事ができます。
Macはじめました。: ことえりで、常に「半角スペース」が入力されるようにする方法

こちらのエントリにあるとおり,

% defaults write com.apple.inputmethod.Kotoeri zhsy -dict-add " " -bool no
% killall Kotoeri

とすることで日本語入力時でも半角スペースを入力できるようになるみたいですね.

私の環境でも入力を確認できました.Space のみで全角,Shift + Space で半角,となるのは,ATOKが混じっているからでしょうか...

その他こまごましたもの

保存時にバックアップファイルを作らない

バージョン管理していれば,まず要りませんよね.

(setq backup-inhibited t)
(setq make-backup-files nil)

拡張子がhtml,tplなファイルをxml-modeでロード

Webなアプリ開発とかでテンプレートファイルとして tpl という拡張子をよく使っているので.

(setq auto-mode-alist (append '(("\\.html$" . xml-mode)) auto-mode-alist))
(setq auto-mode-alist (append '(("\\.tpl$" . xml-mode)) auto-mode-alist))

バッテリの残量を表示する

062003

お出かけ先での開発には重宝するかも? (まぁ,メニューバーに最初からバッテリの残量が表示されてますけどね...)

(display-battery-mode t)

起動時のアレを表示しない

062004

毎回要りません.

(setq inhibit-startup-message t)

タイトルバーに現在のファイル名を表示する

062005

現在開いているファイルのフルパスがすぐに確認できるのでありがたいです.

(setq frame-title-format (format "%%f - Emacs@%s" (system-name)))

動作していないっぽい

ウィンドウ(フレーム?)の透明化


ウィンドウが透明化してくれるらしいのですが...

(setq default-frame-alist
  (append (list '(active-alpha . 0.90)
                '(inactive-alpha . 0.75)
          ) default-frame-alist))

2009-06-21 15:03 追記,thanks to @samurai20000

062011

透明化できました.(画像は75%のものです.)

;;(setq default-frame-alist
;;  (append (list '(active-alpha . 0.90)
;;                '(inactive-alpha . 0.75)
;;          ) default-frame-alist))
(set-frame-parameter nil 'alpha 80)

yaml-modeでのインデントが変?

設定関係ではありませんが...

062008

yaml-mode使用時,Tabキーでインデントすると通常は数個のスペースが入ります.しかし,データの構造によって,ときどきタブが入っちゃうんですよね.

これを YAML::Syck とかで読むと,エラーが出てしまうので,毎回スペースに置き換えたりと,なかなか困りものです.

こちらのものを入れてみたのですが,この件については特に変わらず,です.

文法的に問題あるのかなぁ,でも,スペース使っていればちゃんと読んでくれるし...

おわりに

以上,私が追加などしている Carbon Emacs の設定の現状についてまとめてみました.

emacs lisp とかわかっていると,もっと細かいレベルでの設定なんかも可能なんでしょうね.まぁ時間があったら勉強してみたいところではあります.

参考

先であげた以外に,以下のサイト・エントリも参考にさせていただいてます.

本エントリは書きかけです.が,公開しています.随時追記予定です.
P1370234 on Flickr

はじめに

去る 6月 7日(日),Kanasan.JS JSDeferred Code Reading へ参加してきました.

以前,1月17日(土)に Roppongi.JS でも開催されました が,後輩の結婚式に出席していたために参加できず,それ以来機会がありませんでした.(一人で読めたらまぁ苦労はしませんよね><)

そんなわけで,ぜひこの機会に,というのが参加に至る背景,とでもいいましょうかね.

それでは以下,当日の流れをざっと振り返ってみることにします.

なお,現在もソースコードに少し目を通しながら本エントリを書いているため,コードリーディングに関する記述が当時のものと現在のものと混在しているかも,ということを加えておきます.

会場まで

会場は 大阪府私学教育文化会館 というところ.今回は新幹線で京都駅まで,七条駅まで徒歩,京阪本線で最寄り(のひとつ)である京橋駅まで,という感じで向かいました.

京橋駅到着直前にマクドナルドが見えたので,そこで昼食...のつもりが,改札を出たとたん 京阪モール に入ってしまい,しばらく出られずにウロウロしていましたorz

結局,マクドナルドに寄るには時間が足りなくなってきたので,直接会場に向かいました.

会場

P1370227 on Flickr P1370232 on Flickr

ドキュメントチェックと簡単なコーディング

まずは JSDeferred がどんなものか,というのを確認すべく,ドキュメントを読みながら実際に動かしてみることから始まりました.

一行書いて確認してもう一行つなげて...を繰り返したのが次のコードです.物覚えが遅いので,3つのメソッドくらいしか使えていませんが><

Deferred.define();
 
next( function() {
     alert( 'hoge' );
})
 
.wait(1)
 
.next( function() {
     alert( 'fuga' );
})
;
 
parallel([
     next( function() {
          alert('hoge');
     })
     .wait(1)
     .next( function() {
          alert('hogehoge');
     })
     ,
     next( function() {
          alert('fuga');
     })
])
.next( function() {
     alert( 'piyo' );
})
 
.next( function() {
     loop( 5, function( n ) {
          alert(n);
     })
 
     .loop( {begin:1, end:10, step:3}, function(n, o) {
          alert( [n, o.step] );
     });
})
;

コードリーディング

これを書いている現在ソースコードに再度目を通しもしているので,当日の記録というよりは,実装のメモというか覚え書きというか...そんなものになりそうです.

ちなみに,対象のバージョンは 0.2.2 です.

コンストラクタ

83
function Deferred() = { return (this instanceof Deferred)  ?  this.init()  :  new Deferred() }

Deferred() としても new Deferred() としても同じものが返る,というか,どちらの形にしろ最後は this.init() が呼ばれる,ということですね.

私にとっては,しょっぱなの1行から勉強になります.

Deferred.ok

引数をそのまま返す.

Deferred.ng

引数とともに例外を投げる.

メソッド

86
Deferred.prototype = {

この書き方で始めると,constructor プロパティがなくなるよね,というお話が出てましたね.

init
  • _nextプロパティ
  • callbackプロパティ
next

※ 先に _post メソッドを把握した方がよさげ

  • 第1引数 fun:関数.
  • callback プロパティの ok プロパティに,第1引数の関数が割り当てられた Deferred オブジェクトを返す.
  • つまり,callback プロパティが指すオブジェクトの ok メソッドが第1引数の関数であるような Deferred オブジェクトを返す,ということ?
error

※ 先に _post メソッドを把握した方がよさげ.

  • 第1引数 fun:関数
  • next メソッドの記述を s/ok/ng/g; した感じ.
call

※ 先に _fire メソッドを把握した方がよさげ.

  • 第1引数 val:値?何の?
  • 'ok'val を引数に,_fireメソッドを呼び出す.
fail

※ 先に _fire メソッドを把握した方がよさげ.

  • 第1引数 err:エラーオブジェクト?
  • 'ng'err を引数に,_fireメソッドを呼び出す.
cancel
102
  (this.canceller || function () {})();
  • canceller メソッドが定義されていればそれを実行,そうでなければなにもしない,
  • そうか,こういう書き方もできるのね.
102
  return this.init();
  • そして初期化して自身を返す,でいいのかな?
  • つまり,_nextプロパティにDeferredオブジェクトが登録されていて実行予定だった処理を「キャンセルする」ということかな?
_post
  • 第1引数:’ok’ or ‘ng’.
  • 第2引数:関数
  • _next プロパティに新しい Deferred オブジェクトを生成.
  • _next プロパティの _callback プロパティの ok または ng プロパティに,第2引数で指定した関数を割り当てる.
  • _next プロパティが指す Deferred オブジェクトを返す.
_fire
  • 第1引数 okng:’ok’ or ‘ng’.
  • 第2引数 value:何の値?
113
114
115
116
117
118
119
next = "ok";
try {
    value = this.callback[okng].call(this, value);
} catch (e) {
    next  = "ng";
    value = e;
}
  • callbackプロパティが指すオブジェクトのokもしくはngメソッドを,自身のメソッドとして呼ぶ.この際,第2引数で与えられたものをメソッドの引数としている.このメソッドの返り値で value を置き換える.
  • 第1引数が ng のとき,例外が発生する場合がある.
  • 例外が発生した場合,value にはエラーオブジェクトが入る.
120
121
122
123
124
125
if (value instanceof Deferred) {
    value._next = this._next;
} else {
    if (this._next) this._next._fire(next, value);
}
retturn this;
  • valueDeferred オブジェクトの場合,自身の _next プロパティを value_next プロパティとする.???
  • valueDeferred オブジェクトでない場合,_nextプロパティが指すDeferredオブジェクトの_fireメソッドを,nextvalue を引数に呼び出す.
  • 最後に,自身を返す.

まとめると,callbackプロパティに登録されている,登録されていなければデフォルトの,関数を自身のメソッドとして呼び出し,その結果を次の Deferred オブジェクトに伝えて,その callbackプロパティに登録さr(ry ...といった,処理実行の連鎖を引き起こす,といった感じになるのかなぁ...

Deferred.parallel

  • 第1引数 dlDeferredオブジェクトの配列,もしくは,同オブジェクトを値に持つハッシュ(オブジェクト).

[あとで読み直す]
[あとで書く]

Deferred.wait

[あとで読み直す]
[あとで書く]

Deferred.next

私が少々読み遅れていたため,ここまでたどり着けなかったです orz

[2009/06/07 15:11:44] 37to: nextについては、205行目のnext_defaultだけ見ておくとよいそうです
[2009/06/07 15:12:19] 37to: その他のnext系関数は、高速化の為の関数との事です
チャットログ JSDefferred コードリーディング ( Kanasan.JS : JavaScript Workshop in Kansai)

Deferred.next_default

[あとで読み直す]
[あとで書く]

Deferred.next_faster_way_readystatechange

※ Kanasan.JS では未読.

[あとで読む]
[あとで書く]

Deferred.next_faster_way_Image

※ Kanasan.JS では未読.

[あとで読む]
[あとで書く]

Deferred.call

[あとで書く]

Deferred.loop

※ Kanasan.JS では未読.

[あとで読む]
[あとで書く]

Deferred.register

[あとで書く]

すごく混乱.

[あとで書く]

388行 - 389行

388
389
Deferred.register("loop", Deferred.loop);
Deferred.register("wait", Deferred.wait);

[あとで書く]

Deferred.define

※ Kanasan.JS では未読.

[あとで読む]
[あとで書く]

ゆるふわTechTalk

P1370237 on Flickr

flickr の写真をブログとかで掲載するためのHTMLを簡単にコピペするためのgreasemonkey

P1370240 on Flickr

生comet

P1370242 on Flickr

stack stock books api + jquery

私は半年以上放置で恐縮ながら,DQWindowManager について少々.

懇親会・帰り道

P1370248 on Flickr
  • XULって「ずーる」って読むんだ.
  • 言語の教養的な意味で,smalltalkについて勉強してみるといいよ.
  • carbon emacs を複数起動するには

    open -n /Applications/Emacs.app

    とかするといいよ.

などなど.

帰りは,行きの真逆を辿ってきました.途中,京都タワーが光っていたので撮ってみました.三脚がなかったのでブレてますかね...

P1370260 on Flickr

おわりに

以上,Kanasan.JS JSDeferred Code Reading の参加報告でした.

今回の進捗としては,全体の半分くらい,でしょうか.

JSDeferred は行数こそそんなに多くはないものの,メソッド 1つ 1つの内容がかなり濃ゆいです.JavaScript のエッセンスが詰まっています...といろいろなところでさんざん言われていますが,それを身をもって知ることができました.(現在進行形ですが><)

個人的には,読み進める中で前の方で定義されたメソッドが目に入るたびに,定義部分へ戻って挙動を再確認する,ということを何度も何度も繰り返してしまい,なかなか進められませんでした.

コード中で呼び出される頻度の高いメソッド・関数を把握して,それらから順に理解していくと効率がいいのかな..

今回学んだことは,JSDeferred のような濃ゆいライブラリを書かないまでも,普段から書くちょっとした JavaScript コードにも十分に反映でき得るものだったと思います.(自分が過去に書いたコードをリファクタリングするとどうなるんでしょうねw)

...あーっと,DeLLa.JS も再開しないとですね.7月にはなんとか...

参考

060401

Twitter のタイムラインでなんだか目に入ったので流れに乗ってジェネレートしてみました.

「みな...なんとか」ぽいロゴを作成できます.

…完成したロゴっぽいそれはスクリーンショットを撮ってみましょう
みな…なんとか

「ジェネレータ」とありますが,画像を生成する機能はないようですw シンプルです.

使用可能な文字数は4文字まで.アノ辺のものを思い出しますね.

060402
1 of 59  1  2  3  4  5 » ...  59