.box {
  border-radius: 15px;
  -webkit-border-radius: 15px;
  -moz-border-radius: 15px;
}

TwitterもIE諦めてこれ使ってる・・・。

Suppression of double printing by ATM

二重印字防止

問題は、移行期間である。ATM 導入以前の通帳には磁気ストライプがない。取引内容を印刷すべきページと行の検出には、磁気ストライプに頼れない。新型用の通帳でも、旧型の端末で印字すると、磁気ストライプの情報と実際の印字行数が異なる。

既印刷行の上に二重印字すると前の取引の内容が消えるので、銀行としては絶対に許せない。既印刷行の次に空行があると、銀行の信用にかかわる。

したがって、通帳の型いかんに関わらず、最後の既印刷行を確実に検出する必要がある。 検討の結果、通帳の各行を光学的にスキャンして既印刷行をスキップし、最初に現れた空行に印刷するというのが結論だった。

この技術の開発を私が命じられたが、見事に失敗した。私の能力不足もあるが、お偉いさんの一言もかなり関係する。あるお偉いさんは顧客に向かって「端末のインクリボンは百万字まで使えます」と断言したらしい。

ATMでの通帳記入でどうやって最終行から印刷するのかという話。

たしかに少し疑問に思ってた。これ自体かなり昔の話なので最近ではどうなってるのかな?

感心するのは、技師というのは物理的なものもひっくるめて問題を解決する仕事だったんだなあ、ということ。

「未経験のOS/言語/ミドルウェアだから無理」

なんて言ったらぶん殴られそうだな。

# /etc/postfix/master.cf
#smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

smtp行をコメントにして、submission行をコメントを外す。

% /etc/init.d/postfix reload

リロードする。 netstatで587で立ち上がってるか確認する。

ヨドバシカメラで、若い東南アジア系夫婦の夫が、

「高いよー、ハンパなく高いよー、ありえない高いよー」

と漏らしながら売り場を去っていった。テキストじゃ伝わり辛いかもしれんが、その場にいた俺には、どれだけアヴドゥールさん(仮名)の常識から外れた値段が付けられていたのか、その憤慨が伝わってきました。

これまで http://p0t.jp/blog/ にあったこのブログを http://docs.komagata.org/ に引越しました。

旧URLから新URLにはリダイレクトしてるので見てる方にはどうでもいいことですが、何かおかしいところがあれば教えていただけると嬉しいです。

引越しのきっかけはエスパー伊東のブログパーツを張ろうとして、MovableType4.2の難しさの前に挫折したことです。(当時、エスパーのブログパーツを張るとステッカーが貰えるキャンペーンがあった。)

焦るんじゃない

「焦るんじゃない、俺はテンプレを変えたいだけなんだ」

ちょっと飯を入れていく

「俺がちょっとテキストを入れていくようなシステムってもうないのか?」

ネット上でテキストを書くシステムについて考えさせられました。結果、今更一からシステムを構築することに・・・。

それで今回の引越しなわけです。(どうせパーマリンクが大幅に変わるからドメインも変えちゃおうという魂胆)

新しいシステム5つの特徴:

  1. テキストが構造化されてない。
    1. カテゴリー、タグ、日付によるアーカイブなどが無い
    2. 代わりに全文検索が使われる。
    3. テキストのURLは一覧(/)・パーマリンク(/123)・検索結果の3種類(/find?query=foo)
  2. テキストのタイトルが非必須。
    1. つぶやきなどのタイトルを持たないテキストを統合する。
  3. 一覧が更新日時順。
    1. 2chのスレみたいな感じ。
    2. ブログと個人用Wikiを統合する。(個人用Wikiにバージョン管理いらないので)
  4. コメント、トラックバック機能が無い。
    1. はてブやTypepad Connect使う。
  5. 画像などのファイルアップロード機能が無い。
    1. Flickrとか使う

1~3が特に欲しかった機能です。テキスト系ツールの統合と変わらないURLがやりたかったことです。あとは記法がtextileとかRESTfulなAPIと認証とか自分の好みを追加した感じです。

この仕様さえ満たせれば何でもよかったんですが、一般に必要とされなさそうなのと、俺が楽なのでRailsとSqliteで作りました。解凍するだけで使えるようにして公開する予定ですが、完全趣味です。

俺が欲しくない機能とか入れると仕事になっちゃうので・・・。

アクトインディさん内でお隣さんであるイルナさんに(俺たちはただの居候ですが)ミート矢澤の肉を出す焼肉屋大滝のオープンイベントに連れて行ってもらいました。

イルナさんが大滝さんのホームページを制作したのでオープンイベントに行くのはわかるんですが、何故隣で騒いでるだけのガチ鬱達も行ける事になったのかわかりませんが、この肉を食ったときは、

「イルナさん、誘ってくださってありがとうございます!」

と、心から感謝しました。

大滝の肉

「うまぁーい!」

是非また食べたいですが、自腹で行ったらいくらするのかガクブルです。

ビッグママ!

なつかし。

RailsのオススメファイルアップロードプラグインのPaperclipですが、最新版(2.1.4)で嬉しい機能が増えてました。

  • ImageMagick(convertコマンド)に自由にオプションを渡せるようになった。
  • 画像が無いときのパスを指定できるようになった。

これは嬉しい。ソース内のコメントの例では、アップされた画像をlargeとnegativeというstyleに分け、両方にprofileやexif情報を削除する-stripオプションを適応し、negativeには補色で補完する(つまり反転?)-negateオプションを適応してます。

class User < ActiveRecord::Base
  has_attached_file :avatar,
    :styles => {
      :large => "300x300",
      :negative => "100x100"},
    :convert_options => {
      :all => "-strip",
      :negative => "-negate"}
end

RMagickや他のAPIを使わず、直接convert使ってる利点が生かされてますな。 他にも-monochromeオプションでモノクロにしたりとか色々出来そうです。

画像無いときのパス指定は、「あれ?これ指定できないの?」ぐらいだったんで俺がすっきりしただけですが。

以前にも書きましたが、Capistrano利用時にはアップ画像を/public/system以下に置きたいのでオプション指定が必要です。

いちいち指定してたらModelがキモくなるので通常、下記を使ってます。

config/initializers/paperclip.rb:

module Paperclip::ClassMethods
  def has_attached_file_with_default(name, options = {})
    default = {
      :path => ":rails_root/public/system/:class/:attachment/:id/:style/:basename.:extension",
      :url => "/system/:class/:attachment/:id/:style/:basename.:extension",
      :default_style => :normal,
      :default_url => "/images/:class/:attachement/missing_:style.png" 
    }

    has_attached_file_without_default(name, default.update(options))
  end

  alias_method_chain :has_attached_file, :default
end

config/initializers/以下は一番最後(pluginよりあと)に読まれるのでこういうアプリの本質的でない部分の変更には向いてますな。

RMagickインストール地獄にハマってる方はぜひご検討ください! (Debian etch、CentOS 5.2共にimagemagick/ImageMagickパッケージを入れるだけで済みます)

参照: Capistrano利用時のPaperclip

rono23に借りて読んでます。

実践 Rails -強力なWebアプリケーションをすばやく構築するテクニック
外部キーインデックス

(前略)実際、MySQLは外部キーが作成されるときに、参照元の列でインデックスを自動的に生成する。PostgreSQLはインデックスを生成しない。主キーのインデックスを除き、すべてのインデックスを明示的に作成しなければならない。

うわぁぁぁぁああああああああああ

しらなかった・・・。

ポスグレの癖でマイシーコーでも外部キーにインデックスいちいち作ってました・・・。

職業プログラマとしてのキャリア的にはMySQLを使ってる時間の方が長いはずなんですが、初めてスキーマの設計をしたのがPostgreSQLだったのでそのままやってました・・・。(初めて仕事で使ったDBはAccessとOracle8iですが、VBでのクライアント作成だけだった)

慣れで機械的にやっちゃってる作業も定期的にちゃんと見直さないといけないなと思いました。

この業界10年いて何度も!何度も!やってるのに!また!

・・・またSSLの設定で2時間ハマってしまった。

おれの怒りが有頂天になった。

もはや俺に残された手は手順を刺青として彫る以外・・・。

その前に最後のあがきとしてブログに残してみます。(何度となくWikiに残してるのに、それなのにハマるのです。)

CentOS 5.2

privateキー作成。

openssl genrsa -des3 -out /etc/pki/tls/private/example.com.key 1024

パスワード削除版privateキー作成。

openssl rsa -in example.com.key -out example.com-nopass.key

キーからcsr作成。

openssl req -new -key /etc/pki/tls/private/example.com.key -out /etc/pki/tls/certs/example.com.csr

csrの内容を確認。(この出力を保存しておくと安心)

openssl req -text -in /etc/pki/tls/certs/example.com.csr

/etc/pki/tls/certs/example.com.csr を認証局に送る。(ベリサインとかグローバルサインとか)

認証局から送られてきた、「証明書」と「中間証明書」をそれぞれ、 「/etc/pki/tls/certs/example.com.crt」と「/etc/pki/tls/certs/example.com-chain.crt」に保存する。 (べりサインなどの場合は中間証明書は要らない)

/etc/httpd/conf.d/ssl.conf を下記のように変更する。

diff /etc/httpd/conf.d/ssl.conf*
112,113c112
< #SSLCertificateFile /etc/pki/tls/certs/localhost.crt
< SSLCertificateFile /etc/pki/tls/certs/ドメイン名.crt
---
> SSLCertificateFile /etc/pki/tls/certs/localhost.crt
120,121c119
< #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
< SSLCertificateKeyFile /etc/pki/tls/private/ドメイン名.key
---
> SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
130,131c128
< #SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
< SSLCertificateChainFile /etc/pki/tls/certs/ドメイン名-chain.crt

証明書の中身を確認する。

openssl x509 -noout -text -in /etc/pki/tls/certs/ドメイン名.cst

MacPorts

cd /opt/local/apache2/conf
sudo openssl genrsa -des3 -out localhost.key 1024
sudo openssl rsa -in localhost.key -out localhost-nopass.key
sudo openssl req -new -key localhost-nopass.key -out localhost.csr 
sudo openssl x509 -req -in localhost.csr -signkey localhost-nopass.key -out localhost.crt

conf/httpd-ssl.confに追加。

NameVirtualHost *:443

次ハマったらTATOOしかない。

関連:もう二度とハマらない、SSL個人認証局の設定 - p0t