Archive for 2010年11月|Monthly archive page

newLISP v10.2.17 の翻訳マニュアル

 newLISP の開発バージョンが v10.2.17 にバージョンアップされたので、このバージョンのマニュアルの翻訳を up しました。

newLISP マニュアル & リファレンス v10.2.17

 もちろん、目次も日本語併記にしてあります。
 newLISP 本体は、組込関数 mod が改良されています。詳細はマニュアルでどうぞ。
 また、同梱されている guiserver v1.43 のマニュアルも翻訳版を up しています。

guiserver マニュアル v1.43

 いつものように、間違いやおかしな点が有りましたら、こちらの blog までご一報下さい。

 以上、如何でしょうか?

newLISP マニュアル・アップデート v.10.2.8 rev-21

 newLISP のマニュアルが rev-21 のバージョンアップされたので、それに合わせたアップデートです。

 newLISP マニュアル & リファレンス 全訳のリリースで、現在のバージョンは、v.10.2.8 rev 21 です。

日本語併記 newLISP ユーザー マニュアル

 目次も含め日本語併記にしてあります。

 同時に、“newLISP 関数リファレンス・スクリプト” もアップデートしました。変更したのは、SJIS.hlp のみです。

 “newLISP 関数リファレンス・スクリプト” は、newLISP 関数リファレンスを表示するスクリプトです。newLISP v10.2.7 以降で動作します。

newLISP 関数リファレンス・スクリプト

 いつものように、間違いやおかしな点が有りましたら、こちらの blog までご一報下さい。

 以上、如何でしょうか?

newLISP 翻訳マニュアル のアップデート

 newLISP 翻訳マニュアルの翻訳部の修正です。
 オリジナルのマニュアル自体は、変わっていません。

newLISP マニュアル & リファレンス v10.2. 8 rev 19

newLISP マニュアル & リファレンス v10.2.16

 newLISP の現行バージョンは v10.2. 8 で、v10.2.16 は、開発バージョンです。
 開発バージョンでは、gs:table が使える guiserver v1.42 が同梱されているのでお薦めです。

 いつものように、翻訳に間違いやおかしな点が有りましたら、こちらの blog までご一報下さい。

 以上、如何でしょうか?

newLISP で GUI する。。。または、天気予報を表示する。

以下のスクリプトには、UTF-8 版 newLISP が必要です。

 今回は、guiserver を使って、天気予報を表示させます。使う天気予報は、日本気象協会の tenki.jp のものです。
 具体的には、例えば、仙台市なら

http://tenki.jp/forecast/point-326.html

 からデータを取り出し、gs:text-pane の “text/html” モードで表示させます。
 上記 URL から分かりますように、326 が仙台市の番号です。ちなみに 1 は、札幌市です。
 ということで、スクリプトを、

; utility
(define *newlispDir* (env "NEWLISPDIR"))
(load (append *newlispDir* "/guiserver.lsp"))

; define global variable
;(define point 1) ; 札幌市
(define point 326) ; 仙台市
;(define point 744) ; 横浜市
;(define point 1974) ; 与那国町
(define tenki-url (string "http://tenki.jp/forecast/point-" point ".html"))

; define handler
(define (delete-tag html)
  (replace "<[^>]+>" html "" 1))
(define (delete-comment html)
  (replace "<!--[^>]+-->" html "" 0))
(define (button-handler id)
  (let (weather (get-url tenki-url))
    (regex {<div class="titleBgLong">(([^v]*)*(v+[^>][^v]*)*)</div>} weather 0)
    (gs:set-text 'leftTitle (append (delete-tag $0) (dup " " 4)))
    (letn (tmp (regex {(<table(([^e]*)*(e+[^>][^e]*)*)*/table>)} weather (+ 2048 4))
          today $1
          i (apply + (-2 tmp)))
      (gs:set-text 'TodayArea today)
      (regex {<div class="titleBgLong">(([^v]*)*(v+[^>][^v]*)*)</div>} (i weather) 0)
      (gs:set-text 'rightTitle (append (dup " " 4) (delete-tag $0)))
      (regex {(<table.+/table>)+} (i weather) (+ 2048 4))
      (gs:set-text 'WeekArea (delete-comment $0))
    )))

; initialization
(gs:init)
(define FPosX 50)
(define FPosY 50)
(define FWidth 1000)
(define FHeight 480)
(gs:frame 'Frame FPosX FPosY FWidth FHeight "天気情報 from tenki.jp")
(gs:panel 'ButtonPanel)
(gs:label 'leftTitle "")
(gs:label 'rightTitle "")
(gs:button 'Button1 'button-handler "renew")
(gs:text-pane 'TodayArea 'gs:no-action "text/html")
;(gs:set-editable 'TodayArea 'nil)
(gs:text-pane 'WeekArea 'gs:no-action "text/html")
;(gs:set-editable 'WeekArea 'nil)
(button-handler)
(gs:split-pane 'SplitPanel "vertical" 0.55)
(gs:add-to 'SplitPanel 'TodayArea 'WeekArea)
(gs:add-to 'ButtonPanel 'leftTitle 'Button1 'rightTitle)

; mount all on frame
(gs:set-border-layout 'Frame)
(gs:set-flow-layout 'ButtonPanel "center")
(gs:add-to 'Frame 'ButtonPanel "north" 'SplitPanel "center")
(gs:set-visible 'Frame true)

; main routine
(gs:listen)
(exit)

 このスクリプトを UTF-8 版 newLISP で起動すると、

 こんな感じで表示されます。
 tenki.jp の文字コードは UTF-8 ですから、UTF-8 版 newLISP は必須です。
 Windows でも、UTF-8 版 newLISP が使えるようになっているので、この程度のスクリプトで済みました。
 UTF-8 コード使っていない Linux では、文字コード変換が必要ですけどね。
 私は、puppy Linux なので、問題ないですが。
 地域にを変えるには、

(define point 326) ; 仙台市

 の 326 を表示させたい地域の番号に変えるだけ。

 以上、如何でしょうか?