Thunderbirdさんにディスクを超食われてた件
おかしいとは思ってたんだけど、そんなわけないと思ってたんだ。長い付き合いゆえの思い込みってやつ。
「覚えがないのになんかディスクの空き容量が減っていく」
いくらなんでもおかしいと調べたらThunderbirdさんに160GB超もっていかれてました。
どうもIMAP使用時「同期とディスク領域」のデフォルト設定が「すべてのメッセージをローカルに同期する」に変更になったらしい。しばらく前にトラブルがあって再インストールしたのでその後に設定が変わってしまっていたようだ。たぶん。
こうなってました。
サーバーに蓄積したメール(とたぶん添付ファイルも)ローカルにダウンロードしつづけていたわけで。
設定変えて、
「ファイル」メニューから「フォルダを最適化」したら160GB空き容量が増えましたヽ(´ー`)ノ
OpenCOBOLで任意の日付を返す機能追加
月末のバッチを今のうちに流して検証したい、過去に流したバッチを再現させたい。そんな事ありますよね?しかし、プログラム中に現在日時を取得する処理が入ってるプログラムがあると色々面倒です。例えば、検証したい日時にサーバの日付を設定し直して流す…とかだと他の色々なサービスが正しく動作しなくなったりします。実行時の日付から処理年度を推測しているプログラムがあったりして、処理結果が以前バッチを流したときと違う…という事があるわけです。
また、対応するプログラム箇所を探し出して、都度書き替えていく…だと大変な工数がかかりますし元のロジックと変わったり変更漏れもあるかもしれません。なるべくプログラムでスマートに対応したいところです。
実際に、汎用機などでは同様の機能を持つ物があり、JCL中で処理DATEを設定しておくとその設定にしたがって以降の日付処理をおこなってくれます。
そこで、OpenCOBOLに任意の日付を返す機能を追加してみました。コードの概略としては、libc の time関数をフックしておいてCOB_DATE環境変数に値がセットされていたらこの値を現在日付として返すという内容になります。time関数を使っている箇所が libcob中に結構多く散らばっていますし、サブルーチンでも有効に効かせたいのでこのような方法を採ってみました。
static time_t (*time0)(time_t *t);
time_t time(time_t *t);
#define COB_DATE_ENVNAME "COB_DATE"
time_t time(time_t *t)
{
if (t == NULL && getenv(COB_DATE_ENVNAME)) {
char cob_date_envval[512];
long fake_t = 0;
struct tm tm;
strncpy(&cob_date_envval[0],
getenv(COB_DATE_ENVNAME),
sizeof(cob_date_envval));
fake_t = atol(&cob_date_envval[0]);
tm.tm_sec = 0;
tm.tm_min = 0;
tm.tm_hour = 0;
tm.tm_mday = fake_t % 100;
tm.tm_mon = ((fake_t / 100) % 100) - 1;
tm.tm_year = fake_t / 10000 - 1900;
tm.tm_wday = 0;
tm.tm_yday = 0;
tm.tm_isdst = 0;
/* you must set validated value */
fake_t = (long)mktime(&tm);
return (time_t)fake_t;
}else{
return time0(t);
}
}
int
main (int argc, char **argv)
{
/* 略 */
time0 = dlsym(RTLD_NEXT, "time");
/* 略 */
}
上記コードでは値のチェック等色々とサボってて荒いのですが、やりたい内容はだいたい伝わると思います。COB_DATE環境変数に20121231等設定してある状態で上記コードが走ると、time関数は常に 2012年12月31日 00時00分00秒を返します。
これで年末年始での処理を先に検証しておくことが出来ますね。
やって来ました OSC2012広島
広島国際学院大学の入口、心臓破りの坂すぎる。
おはようございます。
いきなり汗ダラダラでゼーハーしましたがブース設営後はまったりムードです。
11時をまわってぼちぼち人が増えてきたかな〜って感じ。
今回はセミナーも私がします。104D教室で13時からです。
『県庁並行稼働中!OpenCOBOL汎用機ダウンサイジングでのハマりどころ』
「元ネタを知ってるひとが少なすぎる」という理由で封印したネタ復活させました。
元ネタの映画公開記念です。知っている人が増えていると期待。
諸般の事情でスライドは公開できません。 来てね★
CEATEC JAPAN 2012 4日目
初投稿です、kosugiです。ピカピカじゃない新入社員です。
CEATEC JAPAN 2012、いよいよ4日目!明日が最終日となります。
今回の千葉出張で運命の出会いを果たしました。
その名も。。。
チーバくん!!!!!
なんたる可愛さ!スタイリッシュさ!舌のペロリ具合!
興奮を抑えきれず、何度も追いかけて写真を撮りました(///∇//)
チーバくんは千葉県の形から作られたそうで、つまりこんな感じ
会場のトイレでも、おもてなし宣言!
まんまとチーバくんの虜になってしまい、キーホルダーをゲットするべく
千葉県のブースで、無意味にアンケートを書いてきたりと大忙しです。
もちろん「千葉県に興味がある」に丸を付けてきました。
正確には千葉県ではなく「チーバくんに興味がある」ですが、細かい事は気にしません。
このキーホルダー貰っていいんですよね!!と、そこそこな勢いで念押ししたので
職員の方も若干引き気味でしたが、そんなことも気にしません。
なぜならチーバくんキーホルダーが手に入るのだから。
本来の目的を見失ってますが、たとえ非県民と言われようとも
チーバくんを追いかけたいと思います(笑)
CEATEC JAPAN 2012 3日目
朝一番でざっと一周回ってみました。
ソニーさんのヘッドマウントディスプレイ。開場直後なのに120分待ち!
ヘッドマウントディスプレイをしてるひとたちが並んで立ってるとなんか怖い。
Pioneerさん(主観的判断により大きめの画像にしましたのでクリックで拡大します)。
今回、試乗スペースとか車関係のデモスペースがやたらと広いです。
個人的におもしろかったモノ。
KYOCERAさんの新感覚タッチパネル。ボタン(アイコン)の場所をタッチするとフィードバックが来てクリック感があります。タッチパネルの操作がとても直感的に。一般化するといいなぁ。
おまけ。
となりのブースで Angry Birds に興じる弊社代表っぽい感じの後ろ姿。