Home

memo-space

札幌市営地下鉄について考える SQL

札幌の地下鉄東西線新札幌方面からさっぽろ駅又は南北線麻生方面へ 通勤している人は共感してくれるのではないかというネタ。

ちょっと遅い時間帯に帰宅時するとき非常に腹が立つのは、 大通り駅での乗り継ぎのタイミングが、 どの列車のやたらとシビアなのだ。 なので、南北線真駒内方面から東西線新札幌方面へ 乗り継ぐ人時に大通り駅の中を走っている人をよく見かける。 (また走ると大抵間に合ってしまうところが腹立たしい)。

で、実際どの程度シビアなのかを調べてみた。 まあ SQL なんか使わなくてもいいんだけどネタとして。

札幌市営地下鉄のサイトから 時刻表をとってくる。PDF なんだけどこれから大通り駅の 時刻表をコピペしてテキストにする。 平日と休日の時刻表が左右に並んじゃってるけど、 休日分は手で削除してこんなデータができる。

6 10 20 30 41 51 58
7 5 12 20 27 34 41 45 49 53 56
...

で、時刻っぽくするために perl で処理。

$ perl -ane '$h = shift @F; print "$h:$_\n" foreach (@F)' sn_s.txt > sn_s.data
$ cat sn_s.data
6:10
6:20
6:30
6:41

ちなみに sn_s は南北線の南方面行き。あとはこれを PostgreSQL にいれる。

ishida=# create table sn_s (t time primary key);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "sn_s_pkey" for t
able "sn_s"
CREATE TABLE
ishida=# \copy sn_s from 'sn_s.data'
\.
ishida=# SELECT * from sn_s;
    t     
----------
 06:10:00
 06:20:00
...

ew_e (東西線東方面) も同様に処理して、 さて、求めるべきは、「南北線南方面行きの各時刻に対して、 それより大きい東西線東方面行きの時刻の中で最小のものとその差」だ。 例を 2 つ挙げておこう。大抵の人は前者の方が好きなんじゃないかな。

例1)
SELECT sn_s.t
     , (SELECT min(t) - sn_s.t
          FROM ew_e WHERE t > sn_s.t)
       FROM sn_s;

例2)
SELECT sn_s.t
     , min(ew_e.t) - sn_s.t
  FROM sn_s
       JOIN ew_e ON (sn_s.t < ew_e.t)
 GROUP BY 1;

結果、 やはり 20 時以降はやたらと 1 分乗り継ぎが多い。 調子にのって平均値を出してみる。

例1)
SELECT date_part('hour', t)
     , avg(t_diff)
  FROM (SELECT sn_s.t
             , (SELECT min(t) - sn_s.t
                  FROM ew_e WHERE t > sn_s.t) AS t_diff
          FROM sn_s) AS t_sub
 GROUP BY 1
 ORDER BY 1;

例2)
SELECT date_part('hour', t)
     , avg(t_diff)
  FROM (SELECT sn_s.t
             , min(ew_e.t) - sn_s.t AS t_diff
          FROM sn_s
               JOIN ew_e ON (sn_s.t < ew_e.t)
         GROUP BY 1) AS t_sub
  GROUP BY 1
  ORDER BY 1;

結果

 date_part |       avg
-----------+-----------------
         0 | 00:05:30
         6 | 00:04:40
         7 | 00:03:48
         8 | 00:02:07.058824
         9 | 00:03:15
        10 | 00:04:06
        11 | 00:03:40
        12 | 00:05:36
        13 | 00:01:46.666667
        14 | 00:03:46.666667
        15 | 00:06:00
        16 | 00:02:26.666667
        17 | 00:02:32.727273
        18 | 00:02:16.363636
        19 | 00:02:45
        20 | 00:02:00
        21 | 00:02:45
        22 | 00:02:45
        23 | 00:03:30
(19 rows)

13 時が一番シビアだということが判明。 でも 20 時以降は 8 分 とか 9 分とかあるにもかかわらず この平均値だもんなぁ。 同じことを東西線宮の沢方面(西方面)についてやってみる。

 date_part |       avg       
-----------+-----------------
         0 | 00:08:30
         6 | 00:05:50
         7 | 00:02:12
         8 | 00:02:00
         9 | 00:03:30
        10 | 00:03:00
        11 | 00:04:20
        12 | 00:02:24
        13 | 00:04:26.666667
        14 | 00:05:13.333333
        15 | 00:02:36
        16 | 00:04:13.333333
        17 | 00:02:54.545455
        18 | 00:03:54.545455
        19 | 00:04:50
        20 | 00:04:34.285714
        21 | 00:04:30
        22 | 00:04:30
        23 | 00:05:20
(19 rows)

やっぱ反対方向の方が余裕あるような気がする。

Wikipediaで知る北海道弁

北海道方言(Wikipedia)

大方の人は、自分の話す言葉が、共通語アクセント(東京式アクセント)であると位置づけているが、実際には独特の「北海道式アクセント」とも言えるものが存在している。

なんかイヤな言い方だな。まあ僕が神奈川あたりに住んでいたころは、 北海道に住む兄と電話で話しながら「こいつ訛ってんな」と思ったりもしたがw。 確かに、「アクセント・イントネーションなど」の部分は、そんな気もするというところもある。

でもさぁー

  • 主に札幌市で、住所の地番を示す「南○条 西△丁目」などの「西(にし)」で、「に」が高い独特のアクセントが現れることがある。
  • 札幌市の、中心街・駅名・住所としての「大通(おおどおり)」で、語頭の「お」にアクセントを置くことがある。特に札幌市民がそう発音する。
  • それってたしかに耳に覚えがあるけど、たぶん地下鉄のアナウンスだけだと思うよ。

    ところで Wikipedia には タッチ のエントリもあるのね。堀内沙織 は無いのか?

    順調です

    というわけで、順調に回復しています。 先日まで見えていなかったことを忘れるくらいよく見えています。

    手術の当日は、まず脈や血圧などを測ってから五分おきくらいに目薬をさし、 それを数十分続けてからいよいよ手術。その直前にまた血圧を測ったんだけど、 「緊張してます?」との看護婦さんの問いに「まあ、ちょっと」 と答えたものの、血圧は最初と全く同じ。「全然緊張してないですね」 と笑われた。まあ初めての手術じゃないし。

    今日は日曜日で病院は休みなんだけど、術後の経過を見るのに病院にいってきました。 病院は先生一人だけ。普段はわりと淡々としている先生なんだけど、 今日はゆっくり話すことができました。

    終始笑顔で、僕の経過が順調なことをとても喜んでいる様子が印象的でした。

    メガネメガネ

    右目が白内障で小狼君状態だということは 以前 にもちょっと書いた。この頃はまだ 「目は全く形を認識できないので、焦点を合わせることができない。」 とか書いてるけど、今は「今右目開いてる?」と思うぐらい ほとんど見えていないので、焦点なんて気にならないくらいだ。

    で、手術をすることになった。

    手術の後は、目を保護するために当分メガネをかける必要があるらしい。 サングラスでも良いとのことだったが、一日中かけなければいけないと 思うと厳しい。 別に一日中サングラスをしている人に対してどうこう言うつもりはない。 しかし仕事中でも、客先でもサングラス、寝る直前までサングラス、 朝起きたらサングラスという生活は僕にとっては厳しい。

    しかたがないのでメガネを作ることにした。 とはいえ、今までメガネなんてかけたことないし、 どう選んで良いものかわからん。 ちょっと試してみると、あまりの似合わなさに気が遠くなりそうになった。 メガネっつーのはもうちょっと人を賢そうに見せるもんじゃなかったっけ? どう見ても犯罪者です。ありがとうございました。

    結局店員に適当に選んでもらう。 はぁ、、、当分これをかけて生活するのかぁ、、、

    gonzui -> code ブックマークレット

    CODE blog を書いてない人にはまるで関係の無い話。

    CODE blog を書く時に gonzui の中のコードを引用するときは、 tDiary の code 引用プラグインを使っている。

    CODE blog 利用のてびき

    これはなかなか便利なんだけれど、 3 ケタの数字を暗記できないという非常識な短期記憶力を持つ僕にとっては、 この code プラグインのタグを書くのがかなりツラい。 「432行目から448行目っと、、、」とか思って画面を tDiary に切り替えた瞬間にもう忘れてしまうわけです。

    なんで、必死でブックマークレット作ってみました。使い方は、 下のアンカーをブックマークツールバーに DnD して、gonzui のソースを マウスで範囲選択した状態でそのブックマークを押す。 すると、なんと code タグが JavaScript の winodw.prompt で出てきますw。 あ、FireFox 限定です。

    CODEtag ← これをブックマークに登録

    (久々に) codeblog 書きました

    こんな blog を RSS リーダーに登録してしまうような熱狂的な俺ファンのみなさんの為に、また、 俺ファンではあるものの codeblog は RSS 登録できなくてお困りの方の為に、codeblog 更新情報をお届けします。

    今回もあんまりセキュリティには関係無いですw。あと ROLE 方面が書きかけで 一ヶ月ほどほったらかしてあるんでどうにかせねば。

    しかしコレ書くの疲れるなぁ、、、

    PostgreSQL のコードを読んでみたいと思ってる人は、やっぱちょとは yacc 勉強した方が楽しめると思うよ。

    春だからといって

    はしゃぎすぎだと思うよ。はっきりいって。

    なんか輪になってるし、、、

    いろいろ

    夢は見ても、たいてい起きてすぐに忘れてしまう。 が、先日のは印象的だった(あれが夢だったとすれば)。

    壁側を向いて寝ていたら、背中の方にかすかな気配を感じた。 足音はほとんどしない。ああ、猫か。もうろうとしながらそう思った。 少しずつ近づいてきて、ベッドの上にあがる。眠くて振り返る気にもなれない。 ふとんに入りにきたのかな、噛んだりひっかかれたりしないだろうか、

    と思ったあたりで少し正気にかえる。うちに猫なんかいない。 僕が猫と暮らしていたのはもう十数年前のことだ。

    夢だったのか、あるいは久しぶりに遊びにきたのかな。

    + + +

    本当にいまさらなんだけどバレンタインネタ。

    枡野浩一のかんたん短歌blog の中でひさしぶりにグッときたのがあった。 短歌バカ言一代の中の人ので、 選ばれたのがこれ

    + + +

    ちょっと前まで重度のコード書きたい病をわずらっていたが、すこしおちついてきた。 まあ発症しているうちにもっといろいろ片付ければよかったんだけど。

    + + +

    1998年のリリース以降、世間の状況に追従出来ていないqmailは捨てるべき(オレンジニュース)

    いっそ SMTP 捨てませんか?

    mod_perl など

    mod_perl といえば cgi が速くなるやつ、くらいの認識しかなかったんだけど 全然ちがったよ。 apache モジュール相当のことを perl で書けるんだ。 正直スマンかった。これすげーじゃん。 いや、mod_python も mod_ruby もそうなんだけどさ。

    これなら、perl でプロトタイプ書いておいてあとで C で実装 するというのもアリだな。

    あと、mod_python のマニュアルが素敵すぎる。やっぱ python 方面はドキュメントが しっかりしてる印象があるなぁ。

    psql のヒストリ機能(8.1.3用)

    もう自然に使っちゃってるので気がつかなかったが、以前に書いた、 psql のヒストリ機能で 複数行の SQL を扱えるようにするパッチが自分でかなり気にいっている。 前に書いたのは 8.0.いくつか用だったので、8.1.3 用も書いておいた。

    psql_addhistory_8.1.3.patch

    しかし、このヒストリ機能以外にもごちゃごちゃいじってるうちに 何いじったかわけわかんなくなってきちゃたよ。 やっぱローカルな CVS にブランチでも切ってやったほうがよいんだろうか、、、

    以前のはこちら。

    psqlのヒストリ機能(その2)

    分散トランザクション勉強中

    PostgreSQL 8.1 の新機能の一つに二相コミットがあるわけだけど、 実際これを使ってどうこうしている例はあるんだろうか。

    どうやら jdbc ドライバは実装してるらしい。 ソースツリー内の xa というディレクトリに何やらそれっぽいものがある。 PGXAConnection.java の中で PREPARE TRANSACTION も呼んでるっぽいぞ。

    時間があったらいじってみたい。そもそも分散トランザクションに 関する基礎知識がないからなぁ。JTA とか調べてみよう。

    改善型開発

    改善型開発 〜 システムを作るのではなく育てるという発想 - kuranukiの日記

    先日、焼肉屋でボヤいたこと。

    作る側にとっての"価値"とは、納期に動くものを作りあげることだ。

    でも使う側にとっての本当の"価値"はどうだろう。そのシステムを使って、 ビジネスモデルの変更があればただちに変更できたり、 規模が大きくなったときにデータベースやハードウェアを別のものに変更できたりとか、 そういうことが本当の"価値"なんじゃないのか。

    そこがくいちがっている間は、エンジニアは寿命を削りながら ロクでもないシステムを量産し続けることになるだろう。

    で、まあシステム開発っていうのはまずお金を出すところがあるわけで、 そこに"価値"を理解してもらえないとどうしようもない。エンジニアが 「人月の神話」とか読んだって(僕はちょっと読んですぐ売っちゃったけど) あるある本にしかならない。 アジャイルだって本当は使う側に"価値"を提供するもののはずだ。

    まあその問題について僕がどうこうしようとは思っていないわけだが。 ジャンジャン作るよ!ロクでもないシステム!!(怒られそうだw)

    Home

    Search
    Feeds
    Profile
    石田@苫小牧市と名乗りつつ札幌の某社に勤務するプログラマ
    書いた本
    Links

    Page Top