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

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

気になる~と言って忙しさを口実に一言だけ日記を書いて放置する悪いパターンだ…
PR

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と等しい?!

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

ソースコードの最初の一行は 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 の日記)

昨日の記事ではタイトルにしたくせに詳しく書かなかった DDL について覚書。

  • 別にデータベースに限ったものではない
  • さらに言えば SQL のことでもない。SQL の仕様で定義されている機能の一部でしかない

ところで

現在一般的なバージョンってどれなんだろう。データベースの種類によっていろいろ方言があるようなので、そちらに準拠して学んだ方がいいかな。

せっかく GUI についてまとめたのに、こんないいものを見逃していたなんて。

Simple DirectMedia Layer

SDL - Wikipedia

SDL (Simple DirectMedia Layer) はゲームなどのマルチメディア関係のソフトウェアを開発するための、グラフィックやサウンド等のAPIを提供するライブラリの一つ。Linuxを中心に、Windows、Mac OS、BeOSなど主要なOSで使用可能である。

我々の世代で IT 業界を目指した人間にとっては、やはりゲーム開発というのは頭に思い浮かべやすい目標だと思う。様々な環境で動くことを意図しているというのもポイントが高い。

ライセンス

基本的に LGPL だが、1.3 以降は商業ライセンスも可能になる予定らしい。(参考)

ドキュメント

開発環境

C で書かれているが、他の言語からも利用できるようにするためのライブラリがいくつか存在する。

周辺にあるテクノロジインスタント Python 辺りを読んで、そういえば多くの言語や環境では GUI インタフェースってどう作るのだろうと思って調べてみた。

Tk

Tk (ツールキット) - Wikipedia

Python には Tkinter という標準ライブラリがある。

Qt

主に C++ だけど、他にも様々な言語に対応している。一番ポピュラーそうだけど、ライセンスの途中切り替えができないのが難点か。ライセンスは開発者単位で付与されるが、組み込み版はさらに端末毎にライセンス料が必要となる模様。

GTK+

こちらは C 言語。しかしやはり多言語での開発にも対応。動作プラットフォームは GNOME がメインだけど、他の環境でも動かないことはない。

SWT

Java プラットフォーム用。何故か Eclipse 財団が管理している。

Shoes

(via InfoQ: 軽量なGUI、グラフィックス、アニメーション向けライブラリRuby Shoes)

Ruby 用 GUI ライブラリ。割合単純な記述で様々なことが可能らしい。

実際は ?

何をどの言語で作るかに依存する。この中で一番ご縁がありそうなのは Qt とSWT か。web アプリケーションが仕事の主流になればあんまり関係ない。

subversion での履歴の継承についてまだ考えていた。
確証はないけど、svnsync synchronize を使えばいいのかもしれない。まずは svnsync initialize 、コピー先 (つまり、この場合でのプロジェクト用の共用サーバ) のリポジトリに読み書き両方の権限があること、とりわけリビジョン属性を変更できること、履歴がばっちり残ってしまうこと、1.4.0 以降でないと使えないこと、コピー先はリビジョン番号ゼロのまっさらなリポジトリであること (!) に注意せねばならない。
本来この手法はミラーリポジトリを作るものであり、本当はコピー先はミラー読み取り専用にすべきらしい。結局確認と根回しは必要になるということか。

忍者ブログ [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)