忍者ブログ
淡々とお仕事のお勉強をするよ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Outline Processor Markup Language - Wikipedia

ブックマークの書きだし形式としてなじみ深いアレです。なんだか小説なんて単語が見えたりするけど、要はこれと言った、特定の種類のアプリケーションに強く関連付けられた使い道はまだ明確じゃないということなんでしょうか。これはもう少し後から振り返ってみてもいいかも。

PR
たまに探し物をしにきた人の足跡があるので嬉しい。

自分好みのガジェットを作る! Windowsサイドバーガジェット作り入門:第1回 Windowsサイドバーの概要|gihyo.jp … 技術評論社

普通の html なんだ…じゃあ、凝ったことをするには www サーバを使わなきゃいけないのか。
flash を使えばいいんだろうけど、オーサリングツールは持ってないし詳しくもない。

Java において NaN != NaN は常に真になるという話を小耳にはさんだので調べてみた。

Java: Double.NaN の比較 | 裏表(Phinloda のもう裏だか表だか分からないページ)

double d = hoge();
    if (d != d) {
        // d が Double.NaN のときに実行される
    }

Double.NaN はどのような double 値と比較しても false となる唯一の double の定数である。

おそらく Double でなくても事情は同じだろう。
では Java 以外では何が起こるのか。C (C++) ではエラーになったような記憶がある。で、検索していたら Flash 8 の ActionScript に関するこんな記事を見つけた。

F-site | NaNはNaNと等しい?!

通常偽かエラーになると踏んでいたらそうならず、しかも定められた仕様とは違うと。これは気をつけねば。

18日の記事は手元の Python で試せばよかったんだけど、まだコンソールでソースコードを指定して実行するパターンしか試して成功したことがなかったりする。

リファレンスでは 20章で触れられている。
20. Tkを用いたグラフィカルユーザインターフェイス
import Tkinter または from Tkinter import * を宣言して Tkinter のモジュールを読み込む。

Python で Tkinter を使って MessageBox を表示する。 - Cassiopeiaの日記を参考にまず書いてみた。

#!/usr/bin/env python
# Windows なので shebang はなくてもいいが、一応

import Tkinter
import tkMessageBox

root = Tkinter.Tk()
root.withdraw()

tkMessageBox.showinfo('test','Hello world!')

BOM をつけるか shebang の真下に # -*- coding: encoding -*- で文字コードの種類を明記しなければならない。(参考 : 2.2.3 ソースコードの文字コード方式 (encoding)) ここは xyzzy を信じて UTF-8・改行コード LF (\n) のみで保存。

しかし…

緊急事態です

コンソールからファイルに書かれたプログラムを起動する方法が分からん。
hello world は普通に出来たので、何となく当たりはついてるんだけど、どこかにコンソールのコマンドを網羅したページはないものか。パスを通してないので、何度も試すのは面倒だし。

やっぱり Java のパッケージ名って、所属する組織のドメイン名をひっくり返したもので決まるんだ…

7.7 Unique Package Names

You form a unique package name by first having (or belonging to an organization that has) an Internet domain name, such as sun.com. You then reverse this name, component by component, to obtain, in this example, com.sun, and use this as a prefix for your package names, using a convention developed within your organization to further administer package names.

よく見たらこの文書、Java 言語仕様第3版の原書だ。こういう時は太っ腹だなあ SUN。認定試験はお高いけど。
しかし、ドメインを持ってないし、職場で作ったものでもない場合はどうすればいいんだ。登録すれば jp.gr.java_conf で始まるパッケージ名を使わせてくれるサービスがあるようだけれど、もしかして jp じゃここだけ ?

Package BOF
jp.gr.java_conf - Google 検索

細かく調べるはずだったのに、以前 Java の道で見た以上の情報はなかった件。まあいいんだけども。

ソースコードの最初の一行は shebang というらしい。今更知った。
sharp-bang を縮めたもので、シバンと読むのが主流らしい。

Windows における shebang

前出の Wikipedia 記事にあるように UNIX のシステム上でインタプリタを呼び出すための記述なんだけど、Windows の場合はどのような扱いになるんだろうか。

小人さんへの置き手紙: shebang とは

Windows の shell は shebang を解釈せず、関連付けやコマンドラインにより実行する。

どうでもいいけど、もう 4年も前の記事か。
Scala の場合、Windows では若干特殊になるようだ。

scala man page

Here is a complete Scala script for Unix:

#!/bin/sh
exec scala "$0" "$@"
!#
Console.println("Hello, world!")
argv.toList foreach Console.println

Here is a complete Scala script for MS Windows:

::#!
@echo off
call scala %0 %*
goto :eof
::!#
Console.println("Hello, world!")
argv.toList foreach Console.println

また、Apache では Windows 上でも shebang を解釈するようである。httpd.conf に変更を加えないならば、以下のように Windows らしく書かねばならない。

#!c:/Python2.5/python.exe -u

もちろんこれではクロスプラットフォームな記述にならないので、Apache がいいように補完してくれることを見越して

#!/usr/bin/env python

と書くこともできる。言うまでもなくこんなパスが Windows 上に用意されているとも限らないので、shebang を無視、あるいは PYTHONPATH を流用するように設定しすることも可能。(A Python for Windows Tutorial より)

/usr/bin/env

shebang として env コマンドのフルパス /usr/bin/env を指定すれば、環境変数から適宜インタプリタを見つけ出すことが可能になる。もちろん、性質上 *nix 系環境限定ではある。
ただ、実際どんな値が入っているかは分からないため、結局環境依存ではある。

はまりやすいポイント

  1. 改行コード
  2. BOM (この2つに関しては shebang 関係ないような気もするが、一応)
  3. 因数の解釈 (#! /usr/bin/env perl -T って書けないんだ - hoag の日記)
忍者ブログ [PR]


Designed by A.com
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新TB
バーコード
ブログ内検索
アクセス解析
プロフィール
HN:
tnmt
性別:
非公開
(image created by E-Mail Icon Generator)