2006-01-01から1年間の記事一覧

Curlソフトウェア開発という難題に立ち向かう

IBM developerWorksの記事です。 Ajax と REST、第 2 回 http://www-06.ibm.com/jp/developerworks/web/library/wa-ajaxarch2.shtml Ajaxなアプリケーションの開発に取り組もうとする組織に対して警告や助言をしています。 それらの多くは、curlについてもそ…

Curlとアーキテクチャ(2)〜レイヤアーキテクチャ〜

今回は、レイヤアーキテクチャの観点からシンクライアント(Webアプリケーション)とリッチクライアントの位置付けを確認してみます。 レイヤアーキテクチャとして現在もっともベーシックなのは、おそらく3階層としての説明でしょう。すなわち、(用語は様…

Curlとアーキテクチャ(1)〜リッチクライアント〜

curlアプリケーションの設計方法などといったテーマについてなかなか書けずにいます。その理由が、自分にとって単に難し過ぎるからなのか、それともただ億劫なだけなのか、はっきり自覚のないまましばらくモヤモヤしていました。しかし最近徐々に、別の大き…

Curl Application Award 2006

curlのアプリケーションを一般個人から募集するコンテストが開催されています。 無償版の開発環境「Curl/Personal」で開発したアプリケーションが対象で、最高賞金は50万円ということです。 Curl Application Award 2006 http://www.curlap.com/award2006/in…

Curlシンタックスで設定ファイル

アプリケーションに設定ファイルを用意して、ソースコードを変更せずにアプリケーションの動作を変更できるようにしたい場合があります。例えば以下のようにXMLで設定ファイルを用意する方法が考えられます。 <config> <mode>maintenance</mode> <log_level>debug</log_level> </config> アプリケーションは起動時…

Curlプログラミングの落とし穴

curlでいざアプリケーションを開発するとなった際に戸惑う人は少なくありません。新しく覚える言語で馴染みがなかったり、書籍やネット上の情報が少ないといった原因が考えられますが、もうひとつ大きな別の原因があります。 それは、UIがHTMLであるシンクラ…

Curlプログラミングの始め方

今回はcurlプログラミングの始め方です。 バージョン5.0から提供されている無償版の開発環境Curl/Personal IDEのWindows版のインストールと、インストール後の設定について紹介します。 (1)IDEのインストール以下のサイトからCurl/Personal IDEをダウンロ…

type-switch

実行時の値のデータ型によって処理を分岐する場合にはisaプリミティブが使用できます。 {if x isa Foo then ||xがFoo型だった場合の処理 elseif x isa Bar then ||xがBar型だった場合の処理 }データ型によって分岐した後の処理はキャストを伴うことが多いで…

オーバーロードはできません?(5)〜残余引数〜

残余引数を使うと、プロシージャやメソッドにおいて任意の数の引数を受け取ることができるようになります。 例えば、以下のように引数に任意の数のdouble値を受け取ってその合計を返すプロシージャを定義できます。 {define-proc {sum ...:double}:double le…

if-non-null

以下はnullチェックを行うコードの例です。 let str:#String = {get-possibly-null-string} {if str != null then {use-non-null-string {non-null str}} } このコードはif-non-nullマクロを使えば以下のように書けます。 non-nullマクロを使った非null型へ…

オーバーロードはできません?(4)〜any型+type-switch〜

今回はany型とtype-switchマクロを使用して、引数の型に応じて異なる処理を行わせる方法を紹介します。 any型とは、任意のデータ型を保持する変数に指定するデータ型です。any型として指定された変数*1には、クラス型だけでなくプリミティブ型、プロシージャ…

オーバーロードはできません?(3)〜暗黙の型変換〜

popup-messageとゆうプロシージャがあります。手軽にポップアップを表示できるため、デバッグなどに活用したりとご存知の方も多いことでしょう。今更説明の必要もないプロシージャだと思われますが、敢えてその使い方を見ていこうと思います。 以下のような…

オーバーロードはできません?(2)〜キーワード引数〜

オーバーロードを代替するcurlの機能紹介の第一回目はキーワード引数です。キーワード引数とは、引数の名前と値のペアを指定して任意の順番で渡すことのできる仕組みです。そして、その引数は省略でき、省略された場合は決められた初期値が用いられます。 以…

オーバーロードはできません?(1)

curlではメソッドやプロシージャのオーバーロードを許していません。 例えば {define-class Foo {method {do i:int}:void ... } {method {do s:String}:void ... } {method {do i:int, s:String}:void ... } }のように同じクラス(もしくはサブクラス)に引…

デフォルトのコントロールUIを管理するLookAndFeel

前回はコントロールとコントロールUIについて概観しました。 そして以下のクラスをコントロールUIの例として挙げました。 TextFieldUI DropdownListUI CheckButtonUI CommandButtonUI しかしこれらのクラスは実は全て抽象クラスとなっています。 実際には、…

コントロールとコントロールUI

今回はコントロールとコントロールUI*1について説明します。 コントロールとは、アプリケーションがユーザと対話できるようcurlが提供する以下のようなクラスのことを指します。 TextField DropdownList CheckButton CommandButton コントロールはこの他にも…

はじめます

curlの開発者、主にプログラマの方々向けのブログをはじめます。 curlは最新のversion5.0が先日リリースされ、続いて待望の無償版「Curl/Personal」の提供も開始されました*1。 今まで有償だからと敬遠されていた方もこれを機に是非curlプログラミングを始め…