先日、東京メトロで一日券を買おうとしたら、ない。代わりに24時間券というものになっていた。利用開始から24時間有効、というもの。

従来は朝に購入しようが、夕方に購入しようが、その日の終電までしか使えなかった。それが「東京を一泊する出張がある」というような方にも有り難いだろう。


昔は目で確認する切符、それが磁気になり、ICへと移り変わった。
阪急電鉄だったかがまず磁気にどこの駅から乗ったかの記録をするようにして不正利用(いわゆるキセル)を防止するしくみを導入し効果が高かったらしく、それが各電鉄会社に普及していった。記憶では2000年前後だったように思う。
そのときに時分秒の記録も改札機に入れていたのかは分からないが、JRのイオカードというプリペイド方式で改札機を通せる磁気カードには入札、出札の駅とその年月と時まで(分はなかったかと)カードにプリントされていたように思う。

時はICカードではJR東日本が出入りの駅とその時刻(秒まであったかは定かではない)を外部利用できるようにしようとして問題になったことがあるが、つまりはその時点でかなり細かい情報を吸い上げて溜め込む仕組みはできていた、ということで、改札機はネットワークで接続されているということに「そうだろうな」と思いつつも「どのくらいの規模のネットワークなんだろう?」と思ったことを覚えている。

さて、今回の24時間券は磁気券であるが、改札機側に使用開始を記録する、使用終了をチェックする、の機能を備えていることになる。
システム的にはそれほど難しくないようにも思うが、機器にプログラムを組み込んでいたら対応する改札機がそろうまでサービスできない。そうすると、このシステムって組み込みではないだろう。
では、クライアントサーバーやWebなんだろうか?いや、遅延は許されないだろうから配信されているのでは?と考えたりしている。

どこの鉄道会社のでもいいので、知っている人が居たら教えて欲しい。あ、もちろん、機密ならいいです。
AD
Excelシート 印刷時の微妙なずれの調整

2001.11.15

Excelの印刷プレビューで余白ボタンを押し、余白の境界線を動かすと、0.1 きざみで調整ができる。
ところが、その値が同じであっても出力結果が異なることがある。
どういうことだろう?と余白を調整してみた。すると
・余白を調整し、ページ改行位置が変更になったが、設定値は変わらない
という事象が出た。原因はこれだろう。

こういう事象はVBAで解決することが可能だ。
VBAだと、0.1より細かい値を設定/取得することが可能である。

つまりは「画面UIでは四捨五入なりして調整した値を表示している」ということだろう。

もし、「余白を画面上でこの値になるよう調整する」という指示を出すのなら、そういうことも考慮する必要があるだろう。
印刷ページ数を取得する Excel編 Part1

2001.11.15

データベースのテーブル定義書を生成するツールを作った際のことである。それまでは手作業で作成していて、チェックのため数週間会議室を占有/数人を作業にあてがう、ということを毎年行っていた。
これを、データベース自身の定義から取得し、Excelの表にまとめていくツールを作成するようにした。
このときに見つけた問題。

納品物には通しのページ番号を振る必要があった。当初、Excelに標準であるフッタにページ数を付与する方法で対応しようとしていたが、うまくいかないケースがあった。その原因を追及した際のメモ。

---------------------

Excelで印刷プレビューをした後は、シート上に垂直/水平の改ページ位置が線で表示されるようになる。
この改ページの線の数のうち、印刷範囲のものは、シート名のプロパティで取得できる。
[シート名].VPage 縦の改ページの線の数
[シート名].HPage 横の改ページの線の数

1ページに収まる場合は VPage, HPage とも 0 になる。

よって、ページ数は
( VPage + 1 ) と ( HPage + 1 ) の積
で求まる、と書籍やネット等で紹介されている。

しかし、試してみると間違った値にあるケースがあった。

データベースよりレコードを取得し、その結果をExeclシートに貼り付け、そのレコードが出力された行まで書式を調整(罫線や行の高さ)するものを作ったことがある。

このとき、印刷プレビューをしたとき、ページからぎりぎりあふれないが、後ほんの少しであふれるぞ、というページがあると、上記の ( VPage + 1 ) と ( HPage + 1 ) の積 では想定より数字が大きくなることがあった。つまり、「実ページ数より計算されたページ数が大きい」という状態だ。


やむなくほかの方法を使ったのだが、それはこの記事の Part 2 にて紹介する。
Excelのファイルサイズが大きくなっていく対策

2001.11.14

Excel97においてVBAの修正を繰り返すと、ファイルサイズがどんどん膨らんでいく事象がある。
以下の手順で対応可能である
・Excel2002 SR2 以降でファイルを開く
・VBAを少し修正する(空白をひとつ削除、でもよい)
・保存する

なお、Excel2002 SR2 より前のバージョンで、VBAにてブックを開く/閉じるを繰り返すとリソース不足が発生したことがあった。メモリ管理も含め、Excel2002 SR2 以降は改善されたようだ。

Accessのファイルサイズが大きくなっていく対策

2001.11.15

Access97 でInsert/Delete を繰り返すとファイルサイズがどんどん大きくなる。全く件数がなくても2Mを超えていたるする事象がある。
この場合「データベースの最適化」を行うと良い。
Access2002(Office XP)では「最適化の強化」が謳われていたが、この事象は発生する。
ExcelからAccessを呼び出す

2001.11.14

ExcelからAccessを呼び出すとき、接続方法を比較した。
1.Jet
2.ODBC(MS-Accessドライバ)

結果、Jetの方が高速であるが、空白値を認めない項目へ空白を設定しようとしたとき、Jetではエラーが戻らないがODBCではエラーが戻ってくる。

デバッグ時はODBCの方がよいようだ。

開発の準備

テーマ:
部屋を片付けていると古い資料が出てきた。手書きのVBAの資料だ。紙は処分したいのでこちらのブログに若干修正しつつ展開する。なお、書いた日付も記載している場合はそれも掲載する。


開発準備(基本の規約)

2006.3.7

現場、経験言語により若干個々人の常識が違う。統一しておくことがメンテナンス性の向上に役立つ。

変数のハンガリアン記法を揃える
・long は lVal なのか lngVal なのか。
・Const 値はどう表記するか。
・変数のスコープがグローバル、モジュール/クラス内の共有、プロシージャやファンクションのローカルでプリフィクスをどう分けるか。
・long や int の範囲を確認しておく。

win 8.1 トラブル

テーマ:
Opera(私の利用しているブラウザ)で「プライベートウィンドウ」がどんなモノかと思い使ってみた。要するに、キャッシュが残ったりしたいモノ。

使い出して少しするとブルースクリーンに。
電源OFFとか、起動をセーフモードにしてみたりとか、いろいろやったが安定せず。

エラーとしては
・CRITICAL_PROCESS_DIED
・BAD_SYSTEM_CONFIG_INFO
・KERNEL_DATA_INPAGE_ERROR
とかが出ていた。
エラーメッセージは結構ひどいモノで、上記を検索してみてください、とか・・。正しいけれどびっくりした。
で、それぞれ検索したところ、KERNEL_DATA_INPAGE_ERROR の対応が結構効果があったようだ。
http://gigazine.net/news/20140818-ms14-045-blue-screen-of-death/
要するに、Windows Update でのパッチに何か不具合があったらしく、削除してくれとのこと。

具体的には以下のパッチだ。
https://support.microsoft.com/ja-jp/kb/2982791


・CRITICAL_PROCESS_DIED
・BAD_SYSTEM_CONFIG_INFO
は別の原因かもしれないのだが、今のところであるが、これで安定はしているようだ。