2013-10-14

【備忘録】after コマンド

Tcl/Tk で一定間隔で何かを処理させようと思ったときに after コマンドってどうやって使ったっけ?といつもマニュアルを見て考え込むので、備忘録として簡単なスクリプトにまとめました。今回は短くまとめることにこだわっています。

proc every {ms body} {eval $body; after $ms [info level 0]}
pack [label .l -bg white -textvariable now]
every 1000 {set ::now [clock format [clock seconds] -format %H:%M:%S]}

関連サイト

2013-10-13

OpenCOBOL が GNU Cobol になった!

TIOBE Programming Community Index によると、この記事を投稿した時点では、最も利用されているプログラミング言語の Top 20 ぎりぎりのところに COBOL がランクされています。

普段使用している PC とは直接にはあまり縁がないプログラミング言語ですが、基幹システムでは、いまだに COBOL で記述されているプログラムが稼働している場合があります。自分が勤めている会社でも、基幹システムは COBOL で記述されていて、これをオープンシステムへ移行させるのに IT 部門が頭を悩ませています。

FORTRAN や C/C++ のようなプログラミング言語は、科学技術計算に使うので、また、GNU のコンパイラが利用できることもあって比較的容易に PC で利用できますが、COBOL に関しては個人で簡単に利用できるようなプログラミング言語ではありませんでした。そんな COBOL と関わりを持ったのは、TinyCOBOL のプロジェクトへ Linux RPM のパッケージャとして参加してからです。

その後、ネットワーク応用通信研究所の西田圭介氏が TinyCOBOL プロジェクトからフォークして、OpenCOBOL プロジェクトを立ち上げましたので、こちらにもパッケージャとして参加しました。前述の様に、私は TinyCOBOL のプロジェクトに参加している側からプロジェクトがフォークするという場面に出くわして、しかもフォークしたのが日本人であったこともあり、貴重な場面を経験したと思っています。現実には、OpenCOBOL プロジェクトは 日本医師会が配布しているオープンソースの診療報酬計算ソフト「日医標準レセプトソフト」のための開発プロジェクトで、もともと自分の知らない所であらかじめ具体的なビジネスの目標を持っていたプロジェクトだったのでした。

西田氏は IPA 独立行政法人 情報処理推進機構の平成14年度 未踏ソフトウェア創造事業「未踏ユース」で成果を報告した後、しばらくして(メーリングリストを辿ってみると2004 年 10 月らしい)OpenCOBOL プロジェクトの管理を Roger While 氏に移管してしまいました。その辺のやりとりは、メーリングリストに残されていないので詳しくは判りません。また、この変更の中でいつの間にかプロジェクトのメンバーから削除されてしまっていたので、OpenCOBOL とはすっかり疎遠になってしまってしまいました。😅

さて、この OpenCOBOL は、COBOL 2002 標準に準拠することと、既存の商用 COBOL コンパイラとの互換機能を実現することを目標としている COBOL コンパイラです。OpenCOBOL は、COBOL プログラムを C 言語のコードに変換し、それを GCC でコンパイルします。フォーク元の TinyCOBOL は、C 言語に変換するのではなく、x86 のアセンブリ言語に変換するので、この違いが OpenCOBOL の最大の特徴です。つまり GCCフロントエンドとして使うことが初めから意識されていました。

ちなみに、OpenCOBOL の COPYRIGHT は、現在のところ、以下の様になっています。

Copyright (C) 2001-2009 Keisuke Nishida
Copyright (C) 2007-2012 Roger While

前述の、西田氏の成果報告の今後の課題 (5) において「開発したコンパイラが GCC の一部として日の目を見るのは、まだ先の話となりそうだ。」と述られていますが、ついに 2013 年 9 月 27 日に OpenCOBOL プロジェクトは GNU プロジェクトの一つとして認められ、今後 GNU Cobol と名前を変えることになるようです 2。それはリチャード・ストールマンから最初の GNU の声明が出された 1983 年 9 月 27 日からちょうど 30 年目にあたる記念すべき日でもありました [3]

ところで、もともと「日医標準レセプトソフト」のために開発された OpenCOBOL は、日本ではその後、独自の発展をしたようです。今回の GNU Cobol になるというニュースに関連した情報を調べるうちに判ったことなのですが、シフト JIS や円記号に対応した、日本特有のビジネス環境に対応できるようにカスタマイズされた opensource COBOL なるものがリリースされています(UTF-8 にも対応しているようです)[6] [7]

いやはや、ビジネスの前では Linus Torvalds のようにはいかないのですね [8]。青くさい話ですか?いやいや、かく言う自分はソフトウェア開発とは違う方面で生計を立てていますので、憧れがあるのです。

関連サイト

  1. オープンソースCOBOLコンパイラの開発
  2. GNU Cobol (formerly OpenCOBOL) / Discussion / GNU Cobol:State of the project
  3. 最初の声明 - GNUプロジェクト - フリーソフトウェアファウンデーション
  4. GNU Cobol (formerly OpenCOBOL)
  5. GNU Cobol (formerly OpenCOBOL) | Free Development software downloads at SourceForge.net
  6. ニュース - OSSコンソーシアムが「opensource COBOL」を無償公開、SJISや¥記号に対応:ITpro
  7. ダウンロード - OSSコンソーシアム
  8. それがぼくには楽しかったから - Wikipedia

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

2013-10-12

Tcl/Tk 8.6.1 for Windows (32bit)

9 月 20 日に Tcl/Tk 8.6.1 がリリースされましたので、遅ればせながら Windows 用 Tcl/Tk パッケージを、Linux 上でクロスコンパイルしてビルドしました。最近 Tcl/Tk のスクリプトを業務で少々利用しているので、少し遅れましたが、それでもパッケージの更新はしっかりやらなければならないという責任感みたいなものを感じています。とは言っても、ダウンロードカウンタを見る限り、自分がビルドしたパッケージをダウンロードして利用されている方はほとんどいないように思えるので、単なる自己満足に過ぎませんが…。

ビルドした環境は下記の通りです。ダウンロードは、下記関連サイト 1. からです。

tcltk8.6.1-025-20131012.exe

Tcl/Tk for Windows, bitWalk build #025
released on 2013-10-12

1. Available version of Tcl/Tk and extensions in this package
    - Tcl/Tk 8.6.1
      (cvs)Tcl_Source_Code_2013-10-11_102635_5c6379ab2b
      (cvs)Tk_Source_Code_2013-10-04_112739_a8a2cbf090
      ftp://tcl.tk/pub/tcl/nightly-cvs/
      http://sourceforge.net/projects/tcl

2. build environment for compiling binaries 
    - MinGW64 Cross Compiler on Fedora 19
      mingw32-binutils-2.23.52.0.1-1.fc19.x86_64
      mingw32-cpp-4.8.1-1.fc19.x86_64
      mingw32-filesystem-99-1.fc19.noarch
      mingw32-gcc-4.8.1-1.fc19.x86_64
      mingw32-crt-2.0.999-0.32.trunk.r5969.20130721.fc19.noarch
      mingw32-headers-2.0.999-0.30.trunk.r5969.20130721.fc19.noarch
      http://mingw-w64.sourceforge.net/

3. packaging environment
    - Inno Setup Compiler 5.5.3
      wine-1.6-0.1.rc2.fc19.x86_64 / Fedora Linux 19
      http://www.jrsoftware.org/isinfo.php

下記は、Fedora の Wine でインストーラを起動した例です。

関連サイト

  1. Tcl/Tk for Windows Wiki - SourceForge.JP
  2. Tcl/Tk 8.6.1 Release Announcement

2013-10-05

今度の Fedora 20 は…

Linux のディストリビューションの一つである Fedora の次のリリースは Fedora Core 1 から数えて 20 番目 (Fedora 20) になります。

Fedora 20 の開発コードネームには Haisenbug、「それを調査しようとすると変貌したり消えたりするバグ」と言う名前が付けられています。この Heisenbug は、不確定性原理を提唱したハイゼンベルク (Heisenberg) のもじりだそうです。

今日の時点ではアルファリリースの段階です。試しに 32bit の古いノート PC を fedup でアップグレードしてしまいました。マイルストーンによると、(今のところ)ベータリリースが10 月 29 日、正式版リリースが 12 月 3 日の予定となっています。

今回のリリースの特徴は次の通りです。

10 年目の Fedora

Fedora のリリースサイクルは一年に 2 回です。今度のリリースが 20 番目ということは、2003 年 11 月 6 日に Fedora Core 1 がリリースされてから 10 年経ったことになります。

ARM アーキテクチャのサポート

永い間 Fedora がサポートするデフォルトのアーキテクチャは x86 / x86_64 でしたが、今回から、ほとんどのモバイル機器に搭載されていて、今後のサーバ用途での活用も期待されている ARM が加わりました。

ARM が搭載されたデバイスは、x86 系の CPU を搭載した PC ほど標準化が進んでおらず、このリリースでのインストールイメージは二種類提供されるようです。まず、VFAT パーティション を使用するタイプ(Pandaboard など)、そして、他のデバイスの EXT パーティションから起動するタイプ(Trimslice など)があります。Architectures/ARM/F20/Installation - FedoraProject には、CompuLab TrimSlice, Wandboard (Freescale i.MX6), Versatile Express Emulation with QEMU などに対するインストールの説明があります。

成熟した先進機能

大々的な新しい特徴というわけではありませんが、ユーザーエクスペリエンスを向上させる改善があります。これらは永らく待ち望まれていたほんの僅かな機能拡張であっても、新しいリリースを素晴らしいものに変えます。

NetworkManager の改善
nmcli コマンドラインツールでネットワーク接続を追加、編集、有効化、無効化ができるようになりました。
Sendmail と Syslog をデフォルトのサービスから除外
ほとんどのユーザにとって不要な Sendmail (MTA) のサービスはデフォルトインストールされなくなりました。また Syslog の代わりに systemd journal がデフォルトで採用されました。

クラウドと仮想化技術の改善

このリリースでは仮想化とクラウドコンピューティングをもっと利用しやすくするための数々機能が加えられています。

OS Installer Support for LVM Thin Provisioning
OS のインストール時に LVM の Thin Provisioning を設定できるようになりました。
VM Snapshot UI with virt-manager
virt-manager で仮想マシンのスナップショットを作成する UI が利用できるようになり、スナップショットをとる操作が簡単になりました。
Role based access control with libvirt
libvirt に細かくアクセスコントロールができる API が追加されました。
ARM on x86 with libvirt/virt-manager
ARM の仮想マシンを x86 系のホストに作成できます。

開発者向け情報

開発環境で大きな変更は下記の二点です。

  • Ruby on Rails 4.0
  • Perl 5.18

デスクトップ環境

主要なデスクトップ環境は下記の通りです。その他のデスクトップをデフォルトの環境として利用したい場合はスピンのイメージをご利用下さい。

  • GNOME 3.10
  • KDE Plasma Workspaces 4.11

引用サイト

自分の PC は古いのでパワーが足りず LXDE を使っていますが、Gnome 3.10 のデモが YouTube にあったので、埋め込みました。新しい PC が欲しい…。