SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Curlで構築する長崎電子県庁システム(ポータル・スケジューラー編)(AD)

Curlで構築する電子県庁システム(ポータル・スケジューラー編)
RSSリーダーとメッセンジャー

  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (2.6 KB)

 今回は、長崎県庁グループウェアポータルサイトのトップ画面にあるRSSリーダーと、スケジューラーに実装したメッセージャーについて書いていきます。RSSリーダーは、RSS情報を非同期で取得して、記事を表示する際は文字をスクロールさせて表示しています。メッセンジャーは、CurlのUDPソケットの機能を使用して実装しています。

  • このエントリーをはてなブックマークに追加

はじめに

 今回は、ポータルサイトのトップ画面にあるRSSリーダーと、スケジューラーに実装したメッセージャーについて書いていきます。RSSリーダーは、RSS情報を非同期で取得して、記事を表示する際は文字をスクロールさせて表示しています。メッセンジャーは、CurlのUDPソケットの機能を使用して実装しています。

これまでの記事

RSSリーダー

 RSSリーダーには、主に以下の機能があります。

  • ヘッドラインをティッカー表示
  • ヘッドラインの一覧表示
  • ヘッドラインをクリックすると目的の記事をブラウザを起動して表示
  • フィードの登録・削除、記事の更新間隔・文字のスクロール速度の設定
ヘッドラインをティッカー表示
ヘッドラインをティッカー表示
ヘッドラインの一覧表示
ヘッドラインの一覧表示
フィードの登録・削除
フィードの登録・削除
記事の更新間隔・文字のスクロール速度の設定
記事の更新間隔・文字のスクロール速度の設定

 ポータルサイトを起動すると、RSS情報を一定時間ごとに自動的にダウンロードして、記事をティッカー表示するようにしました。RSS情報をダウンロードする際は、非同期で取得するようにして、ダウンロード中に画面が固まらないようにしています。

非同期でRSS情報を取得する
{define-proc public {my-async-read-open
                      p_src: Url,
                      p_after-access-proc: {proc-type {#TextInputStream}: void},
                      error-proc: #{proc-type {Exception}: void} = null
                    }: void
  let v_file: HttpFile =
        {p_src.instantiate-File} asa HttpFile
  {with-file-caching-style FileCachingStyle.resynchronize do
    let v_async-file-opener: AsyncFileOpener =
          {v_file.async-read-open
            {on t: AsyncFileOpenEvent do
              let v_stream: #TextInputStream = null
              {try
                {if-non-null t.exception then
                  {if-non-null error-proc then
                    {error-proc t.exception asa Exception}
                  }
                else
                  {if v_async-file-opener.done? and
                      not t.canceled? then
                    set v_stream = t.stream asa TextInputStream
                  }
                  {p_after-access-proc v_stream}
                }
              finally
                {if v_stream != null and
                    v_stream.open? then
                  {v_stream.close}
                }
              }
            }
          }
  }
}

||RSS情報を非同期で取得する
{my-async-read-open
  {url "http://rss.rssad.jp/rss/codezine/new/20/index.xml"},
  {proc {p_in: #TextInputStream}: void
    ||取得完了したときに呼ばれる
    {if-non-null p_in then
      let (v_buf: StringBuf,
           v_num: int) = {p_in.read-one-string}
              :
            省 略
              :
    }
  },
  error-proc =
    {proc {e: Exception}: void
      ||エラーが発生したときに呼ばれる
    }
}

次のページ
RSSリーダーの表示

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Curlで構築する長崎電子県庁システム(ポータル・スケジューラー編)連載記事一覧

もっと読む

この記事の著者

株式会社ドゥアイネット 前田慎治(マエダシンジ)

株式会社ドゥアイネットに勤務するプログラマーです。制御系から事務系まで様々な開発を経験し、現在はCurlやOpenLaszloを使ってRIAの開発を担当しています。OpenLaszloで開発した「スマートスケジューラー」http://www.dinss.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3470 2009/02/18 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング