<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-17205525</id><updated>2011-04-22T10:52:39.347+09:00</updated><title type='text'>Star Atlas 開発日誌</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://staratlas.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://staratlas.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Star Atlas</name><uri>http://www.blogger.com/profile/17193605284111867221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17205525.post-112943474729154106</id><published>2005-11-06T00:30:00.000+09:00</published><updated>2005-11-06T00:34:29.816+09:00</updated><title type='text'>Javaのお勉強 (3)</title><content type='html'>「Essential Java Classes」の勉強の続き。&lt;br /&gt;&lt;ol start="3"&gt;   &lt;li&gt;java.ioパッケージは入出力 ストリームを提供する。Character StreamとByte Streamがある。Character StreamではUnicodeが使える。Byte StreamはISO-Latin-1のみ。File, Pipe, Filter, Object Serializationなど。DataInputStreamなどが便利。&lt;br /&gt;RandomAccessFileクラスを用いるとランダムアクセスが可能。&lt;br /&gt;java.ioでは他にFile, FileDescripter, StreamTokenizer, FilenameFilterなどのクラスが使える。java.util.zipにはZipInputStream, ZipOutputStreamなど。&lt;/li&gt; &lt;li&gt;プログラム起動時の初期設定などを扱うクラスにPropertiesがある。アプレットの場合はセキュリティ上の制約に注意。&lt;a href="http://java.sun.com/sfaq/"&gt;Applet Security FAQ&lt;/a&gt;を参照。Propertiesの使用例としてBINGOの例題を参照。&lt;br /&gt;コマンドラインの引数もStringアレイのargsで扱える。C, C++とは違ってプログラム名は渡されない。Stringからの型変換はInteger.parseInt(args[0])など。&lt;/li&gt;&lt;li&gt;シ ステムリソースへのアクセスにはSystemクラスやRuntimeオブジェクトを用いるとプログラムがポータブルになる。Systemクラスは instantiateする必要は無く、直接使える。標準入出力変数としてSystem.in, System.out, System.errがあり、print, println, writeメソッドが使える。システムの環境はSystem.getProperty(name)で得られる。Propertiesオブジェクトで System.setProperties(object)を使ってシステム環境をそのプログラムの実行中だけ再定義することもできる。&lt;br /&gt;Javaではオブジェクトを使用しなくなったらメモリ解放のため自動的にfinalizeされるが、明示的にfinalizeすることも可能。同様に明示的にGarbage Collectionをすることも可能。&lt;br /&gt;プ ログラムのセキュリティ向上のためにSecurity Managerを定義することができる。プログラム中で定義できるのは１回のみ。System.getSecurityManager()で利用可能。 checkExit(), checkAccess()などでプログラムの終了やオブジェクト、スレッドへのアクセスをチェックすることができる。&lt;br /&gt;その他、System.arraycopy(), System.currentTimeMillis()などが便利。System.exit(-1)はそのプログラムだけでなく、Java Runtime Environmentも終了させる。&lt;br /&gt;RumtimeオブジェクトはJava VM, Java Interpreter, Host OSのインスタンス。それぞれの実装によって仕様が異なる。&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;次は&lt;a href="http://www.blogger.com/docs/tutorial/uiswing/index.html"&gt;Creating a GUI with JFC/Swing&lt;/a&gt;を読むべし。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17205525-112943474729154106?l=staratlas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://staratlas.blogspot.com/feeds/112943474729154106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17205525&amp;postID=112943474729154106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112943474729154106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112943474729154106'/><link rel='alternate' type='text/html' href='http://staratlas.blogspot.com/2005/11/java-3.html' title='Javaのお勉強 (3)'/><author><name>Star Atlas</name><uri>http://www.blogger.com/profile/17193605284111867221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17205525.post-113080024082196726</id><published>2005-11-01T08:01:00.000+09:00</published><updated>2005-11-01T08:14:59.003+09:00</updated><title type='text'>IEで見えない不具合が解消</title><content type='html'>＞不具合といえば、このサイトのトップページをWindowsの&lt;br /&gt;＞InternetExplorerで見ると空白になってしまうことが&lt;br /&gt;＞判明。個別の記事のページは見えるので、Templateを&lt;br /&gt;＞変えたせいではないと思うのだけど... ヘルプデスクに&lt;br /&gt;＞メールを出してみた。&lt;br /&gt;&lt;br /&gt;と書いた件。IEで見えない原因が分かった。このブログのタイトルを「Star Atlas 開発日誌」と名付けたので、&amp;lt;TITLE&amp;gt;タグに日本語が入る。ところがデフォルトのテンプレート設定では&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;  &amp;lt;title&amp;gt;&amp;lt;$BlogPageTitle$&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;$BlogMetaData$&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;&lt;br /&gt;となっていて、&amp;lt;TITLE&amp;gt;タグが&amp;lt;$BlogMetaData$&amp;gt;の手前に表示される。この&amp;lt;$BlogMetaData$&amp;gt;タグには&lt;br /&gt;&lt;br /&gt;  &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&amp;gt;&lt;br /&gt;&lt;br /&gt;という文字コード指定のMETAタグがある。&lt;br /&gt;&lt;br /&gt;IEはこのUTF-8指定のMETAタグの前に日本語のタイトルタグを解釈した結果、このサイトをShift-JISだと誤判定している。結果、ページが見えずに真っ白になる。&lt;br /&gt;&lt;br /&gt;テンプレート指定を&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;  &amp;lt;$BlogMetaData$&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;title&amp;gt;&amp;lt;$BlogPageTitle$&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;&lt;br /&gt;と並び替えたら解決した。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17205525-113080024082196726?l=staratlas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://staratlas.blogspot.com/feeds/113080024082196726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17205525&amp;postID=113080024082196726' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/113080024082196726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/113080024082196726'/><link rel='alternate' type='text/html' href='http://staratlas.blogspot.com/2005/11/ie.html' title='IEで見えない不具合が解消'/><author><name>Star Atlas</name><uri>http://www.blogger.com/profile/17193605284111867221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17205525.post-112935177762913296</id><published>2005-10-16T01:39:00.000+09:00</published><updated>2005-10-16T01:38:54.696+09:00</updated><title type='text'>Javaのお勉強 (2)</title><content type='html'>Sun MicrosystemsのサイトからJava Tutorial一式を&lt;a href="http://java.sun.com/docs/books/tutorial/information/download.html"&gt;ダウンロード&lt;/a&gt;して、「Essential Java Classes」を勉強中。&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;Exceptionの扱い。他のメソッドが返すExceptionを&lt;span style="font-weight: bold;"&gt;try, catch, finally&lt;/span&gt;で扱うとコードがすっきりする。自分で処理せずに自分を呼んだメソッドにExceptionを渡すこともできる。メソッドの定義時に &lt;b&gt;throws ＜exceptionクラス名＞&lt;/b&gt; を宣言し、Exception発生時に &lt;b&gt;throw ＜exceptionオブジェクト＞&lt;/b&gt; で返す。RuntimeExceptionの場合は明示的に宣言しなくてもよい。catchではなるべくspecificなExceptionのみを捉え て、 recovery strategyがはっきりしている場合のみを処理するようにする。1.4からchained exceptionが扱えるようになった。ThrowableクラスにはExceptionの他にErrorがあるが、JVMのfatalなエラーなどに 用いられるので、ユーザープログラムでは処理する必要が無い（処理するべきでない）。&lt;/li&gt;&lt;li&gt;Threadを使うと一つのプログラム中で複数の処理を同時並列的に実行できる。java.util.Timerなど。Swingを使う場合はjavax.swing.TimerやSwingWorkerなどが便利。Threadのクラスは&lt;span style="font-weight: bold;"&gt;run()&lt;/span&gt;メ ソッドの中に一連の処理を記述する。TimerTaskを継承してクラスを作り、オブジェクトをTimer.schedule()でスケジューリングす る。親スレッドの終了はtimer.cancel()、ただしAWTを使った場合はSystem.exit(0)とする。timer = new Timer(true)でdaemonスレッドを作った時は、子スレッドが無くなるとプログラムは終了する。&lt;br /&gt;生にスレッドを使うにはThreadクラスを 継承してrun()を上書き定義する方法と、Runnableインターフェースを実装する方法がある。Appletを作る場合はRunnableを 使う。&lt;br /&gt;スレッドがstart()で実行可能状態になっている時、sleep(), wait(), IOブロッキングのいずれかによってスレッドの状態は実行不可に遷移する。wait()を解消するにはnotify(), notifyAll()を使う。&lt;br /&gt;Threadクラスを終了するにはrun()を平常に終了させればよい。Threadのstop()は古くて危険なので今後は使わないこと。Appletの終了時にはユーザー定義クラスのstop()が呼ばれるので、変数などを利用してrun()に終了を伝える。&lt;br /&gt;リリース5.0ではスレッドの状態の検知にThread.getStateが使えるようになった。それ以前のバージョンではisAlive()を使う。&lt;br /&gt;大量の計算を必要とするrun()を持つスレッドでは、CPU資源を独占しないようにyield()を適宜呼ぶことが望ましい。&lt;br /&gt;複 数のスレッドであるオブジェクトのデータを共有する場合、そのオブジェクトをロック・解放した上で、データの受け渡しを互いに知らせる仕組みが必要と なる。共有オブジェクトをロックするには、そのメソッド宣言時にsynchronizedを使う。あるオブジェクトがsynchronizedメソッドを 読んでいる時、同じ共有オブジェクトの他のsynchronizedメソッドを別のオブジェクトが呼び出すことはできない（ロックされる）。共有されるオ ブジェクトはあるデータが共有できるタイミングになるまでwait()で他のメソッドを呼んだスレッドのロックを解除する。データの準備が終わったメソッ ドはnotifyAll()を使って他のメソッドを呼んでいる全てのスレッドにwait()解除を知らせる。&lt;br /&gt;データ構造の共有の場合、BlockingQueueの派生クラスを使えばコードが簡単になる。&lt;br /&gt;Threadの替りにThreadPoolを使えば、RunnableやCallableを実装した複数のタスクのキュー制御がさらに簡単になる。&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;StarAtlasでスレッドを使うとしたら、プラネタリウム表示の際に、バックグラウンドで実時間で星空を再描画する、くらいか。sleepさせて数十秒に1回ほど再計算させるとか。後は太陽系の惑星の動きを加速表示させてみるとか。&lt;br /&gt;&lt;br /&gt;ところでこのチュートリアル、今年の4月15日にアップデートされて、J2SE 5.0の機能が取り込まれたのらしいけれど、Firefoxで見るとデモAppletが見えなかったり、CPU負荷が100%まで上昇したりする。JRE 5.0を&lt;a href="http://java.sun.com/j2se/1.5.0/download.jsp"&gt;ダウンロード&lt;/a&gt;して対応しよう、と思ったら、Mac版が提供されていない。やれやれ。&lt;br /&gt;&lt;br /&gt;不具合といえば、このサイトのトップページをWindowsのInternetExplorerで見ると空白になってしまうことが判明。個別の記事のページは見えるので、Templateを変えたせいではないと思うのだけど... ヘルプデスクにメールを出してみた。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17205525-112935177762913296?l=staratlas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://staratlas.blogspot.com/feeds/112935177762913296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17205525&amp;postID=112935177762913296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112935177762913296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112935177762913296'/><link rel='alternate' type='text/html' href='http://staratlas.blogspot.com/2005/10/java-2.html' title='Javaのお勉強 (2)'/><author><name>Star Atlas</name><uri>http://www.blogger.com/profile/17193605284111867221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17205525.post-112789176333917295</id><published>2005-10-15T02:36:00.000+09:00</published><updated>2005-10-15T02:42:35.390+09:00</updated><title type='text'>うるう秒の廃止にイギリス王立科学アカデミーが反対</title><content type='html'>イギリス王立アカデミーがうるう秒の廃止の提案に反対だという話。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ras.org.uk/index.php?option=com_content&amp;task=view&amp;id=830&amp;Itemid=2"&gt;RAS STATEMENT ON THE PROPOSED ABOLITION OF LEAP SECONDS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;うるう秒の導入は不規則だから、プログラムでは扱いづらい。ITUがうるう秒を廃止する提案を決めたのもおそらくそのあたりが原因かもしれない。そういえば StarAtlasでもうるう秒は考慮していない。StarAtlasが扱う程度の精度であれば問題にはならないけど、GPSなどでは扱いがやっかいで しょうね。&lt;br /&gt;&lt;br /&gt;でも、アカデミー側の主張も納得できる。&lt;br /&gt;&lt;br /&gt;スマトラ沖の地震で地球の自転速度が変わったことなどを考えると、今後もうるう秒の規則的な実施はできないだろう。天体の運行というものは、あんがい気まぐれなものだ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17205525-112789176333917295?l=staratlas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://staratlas.blogspot.com/feeds/112789176333917295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17205525&amp;postID=112789176333917295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112789176333917295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112789176333917295'/><link rel='alternate' type='text/html' href='http://staratlas.blogspot.com/2005/10/blog-post_15.html' title='うるう秒の廃止にイギリス王立科学アカデミーが反対'/><author><name>Star Atlas</name><uri>http://www.blogger.com/profile/17193605284111867221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17205525.post-112916168036159723</id><published>2005-10-13T23:22:00.000+09:00</published><updated>2005-10-16T15:40:55.706+09:00</updated><title type='text'>マウスの挙動</title><content type='html'>StarAtlasでは星図、プラネタリウム、太陽系の三つのモードの表示を切り替えられる。現行バージョンではこのうち星図のモードだけ、マウスでクリックをするとその場所を中心に再描画を行う。&lt;br /&gt;&lt;br /&gt;当時のCPUパワーでは星の座標を再計算しての画面再描画にあまり余力がなかった、ということもあるのだけど、新版ではこのマウスの挙動を見直して、様々な操作を行えるようにしたい。&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2" style="background-color: rgb(17, 17, 17);"&gt;【星図モード】&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;シングルクリック時：&lt;/td&gt;&lt;td&gt;十字カーソルを表示。再度のシングルクリック でトグルする。カーソル点の赤緯赤経の表示、カーソル点を中心とした再描画、最も近い天体の名前表示など。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ダブルクリック時：&lt;/td&gt;&lt;td&gt;クリック点を中心に再描画。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ドラッグ時：&lt;/td&gt;&lt;td&gt;選択範囲を長方形で表示。onMouseUpで選択範囲へズームイン。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+クリック時：&lt;/td&gt;&lt;td&gt;直近の正規倍率までズームアウト。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control+クリック時（右クリック時）：&lt;/td&gt;&lt;td&gt;ポップアップメニューの表示。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+ドラッグ時：&lt;/td&gt;&lt;td&gt;画面をスクロール。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ホィール：&lt;/td&gt;&lt;td&gt;画面を上下にスクロール。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+ホィール：&lt;/td&gt;&lt;td&gt;画面を左右にスクロール。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control+ホィール：&lt;/td&gt;&lt;td&gt;拡大縮小。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2" style="background-color: rgb(17, 17, 17);"&gt;【プラネタリウムモード】&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;シングルクリック時：&lt;/td&gt;&lt;td&gt;十字カーソルを表示。再度のシングルクリックでトグルする。カーソル点の赤緯赤経の表示、最も近い天体の名前表示など。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ダブルクリック時：&lt;/td&gt;&lt;td&gt;       &lt;pre&gt;&lt;b&gt;toolkit = Toolkit.getDefaultToolkit();&lt;br /&gt;toolkit.beep();&lt;/b&gt;&lt;/pre&gt;何もしない。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ドラッグ時：&lt;/td&gt;&lt;td&gt;選択範囲を長方形で表示。onMouseUpで選択範囲へズームイン。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+クリック時：&lt;/td&gt;&lt;td&gt;正規倍率までズームアウト。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control+クリック時（右クリック時）：&lt;/td&gt;&lt;td&gt;ポップアップメニューの表示。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+ドラッグ時：&lt;/td&gt;&lt;td&gt;表示時間をスクロール。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ホィール：&lt;/td&gt;&lt;td&gt;上下にスクロール。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+ホィール：&lt;/td&gt;&lt;td&gt;左右にスクロール。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control+ホィール：&lt;/td&gt;&lt;td&gt;拡大縮小。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2" style="background-color: rgb(17, 17, 17);"&gt;【太陽系モード】&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;シングルクリック時：&lt;/td&gt;&lt;td&gt;toolkit.beep(); 何もしない。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ダブルクリック時：&lt;/td&gt;&lt;td&gt;toolkit.beep(); 何もしない。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ドラッグ時：&lt;/td&gt;&lt;td&gt;選択範囲を長方形で表示。onMouseUpで選択範囲へズームイン。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+クリック時：&lt;/td&gt;&lt;td&gt;正規倍率までズームアウト。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control+クリック時（右クリック時）：&lt;/td&gt;&lt;td&gt;ポップアップメニューの表示。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+ドラッグ時：&lt;/td&gt;&lt;td&gt;表示時間をスクロール。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ホィール：&lt;/td&gt;&lt;td&gt;視点を上下に移動。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Option+ホィール：&lt;/td&gt;&lt;td&gt;視点を左右に移動。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Control+ホィール：&lt;/td&gt;&lt;td&gt;視点を前後に移動。&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17205525-112916168036159723?l=staratlas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://staratlas.blogspot.com/feeds/112916168036159723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17205525&amp;postID=112916168036159723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112916168036159723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112916168036159723'/><link rel='alternate' type='text/html' href='http://staratlas.blogspot.com/2005/10/blog-post_13.html' title='マウスの挙動'/><author><name>Star Atlas</name><uri>http://www.blogger.com/profile/17193605284111867221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17205525.post-112913004980438831</id><published>2005-10-12T23:23:00.000+09:00</published><updated>2005-10-16T15:40:39.000+09:00</updated><title type='text'>Javaのお勉強</title><content type='html'>StarAtlasの新版をJavaで書くと決めてはみたものの、プログラミングの現役を離れてからだいぶ経ってしまったので、少しおさらい。「Java入門」でぐぐってみると、&lt;a href="http://www.nextindex.net/java2/index.html"&gt;こんなページ&lt;/a&gt;が見つかる。&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/"&gt;JDK 5.0&lt;/a&gt;は、2004年9月30日に、「Java史上最大の機能強化」を謳ってリリースされました。開発コード名は "Tiger"。&lt;/blockquote&gt;JDKはもう5.0までいってるのか。新しいJDKをダウンロードしようと、Sun Microsystemsの&lt;a href="http://www.java.com/ja/download/apple_manual.jsp"&gt;サイト&lt;/a&gt;にまで行ってからはたと気づく。そうか、今使っているMacOS Xは、そのままで立派なJava開発環境じゃないか。native2asciiなんてツールまでそのまんまサポートされている！ すばらしい。&lt;br /&gt;&lt;br /&gt;Appleのサイトに行くと、&lt;a href="http://www.apple.com/macosx/features/xcode/"&gt;Xcode&lt;/a&gt;なんていうすばらしい開発環境まで整っている。なんのことはない、.javaの拡張子のファイルをダブルクリックするとXcodeが立ち上がる。いい時代ですねぇ。Apple Developper Connectionの&lt;a href="http://developer.apple.com/macosx/"&gt;入り口&lt;/a&gt;まで行ってから引き返すことにする。もっと詳しい情報が必要になったらまたこよう。とりあえずメモ。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tohoho-web.com/java/index.htm"&gt;杜甫々さんのサイト&lt;/a&gt;に行ってGUIまわりのライブラリをチェック。&lt;a href="http://www.tohoho-web.com/java/awt.htm"&gt;AWT&lt;/a&gt;の他に&lt;a href="http://www.tohoho-web.com/java/swing.htm"&gt;Swing&lt;/a&gt;なんてものがあるらしい。&lt;br /&gt;&lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Swing&lt;/b&gt;（&lt;b&gt;スィング&lt;/b&gt;）は、JDK1.2 でサポートされた AWT よりも新しい GUIコンポーネントです。AWT に対して以下のような特徴があります。&lt;/p&gt;    &lt;ul&gt; &lt;li&gt;OSが変わっても見栄えが変わらない。 &lt;/li&gt;&lt;li&gt;AWTよりも重い。 &lt;/li&gt;&lt;li&gt;AWT での部品名に J をつけたものが多い。&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;&lt;a href="http://www.tohoho-web.com/java/swing.htm#JMenuBar"&gt;JMenuBarTest.java&lt;/a&gt;という、お手ごろなサンプルプログラムがあるので、拾って遊んでみる。GUIのとっかかりとしてはこれがよさそう。Look &amp;amp; FeelがちょっとMacっぽくないのが気にはなるけれど。&lt;br /&gt;&lt;br /&gt;... てか、Xcodeで新規プロジェクト作成して"Java Swing Application"を選べば、Macライクなひな形アプリが一発でできるんじゃん。なぁんだ。てか、スティーブ・ジョブスってやっぱり偉大だ。&lt;br /&gt;&lt;br /&gt;あとは、&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;パソコンの現在時刻とタイムゾーンの取得&lt;br /&gt;→ &lt;a href="http://www.ed.noda.tus.ac.jp/j-takeda/api/java.util.Date.html#_top_"&gt;java.util.Date&lt;/a&gt;, &lt;a href="http://www.ed.noda.tus.ac.jp/j-takeda/api/java.util.TimeZone.html#_top_"&gt;java.util.TimeZone&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;パソコンの緯度経度情報の取得&lt;/li&gt;   &lt;ul&gt;&lt;li&gt;取得できない場合の初期設定&lt;/li&gt;&lt;/ul&gt;   &lt;li&gt;設定情報の読み込み・書き出し&lt;/li&gt;&lt;li&gt;スクリーンサイズの取得&lt;br /&gt;→ this.getWidth(), this.getHeight()&lt;br /&gt;→ &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JFrame.html"&gt;javax.swing.JFrame&lt;/a&gt; → java.awt.Component&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;（オプション）フルスクリーンモード&lt;br /&gt;→ &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/awt/DisplayMode.html" title="class in java.awt"&gt;java.awt.DisplayMode&lt;/a&gt;  &lt;/li&gt;  &lt;/ul&gt;などについて調べること。&lt;br /&gt;&lt;br /&gt;Sunのサイトのチュートリアル&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;a href="http://java.sun.com/docs/books/tutorial/essential/index.html"&gt;Essential Java Classes&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://java.sun.com/docs/books/tutorial/uiswing/index.html"&gt;Creating a GUI with JFC/Swing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_top" href="http://java.sun.com/docs/books/tutorial/extra/fullscreen/index.html"&gt;Full-Screen Exclusive Mode API&lt;/a&gt;&lt;/li&gt;  &lt;/ul&gt; を読んでおくべし。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17205525-112913004980438831?l=staratlas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://staratlas.blogspot.com/feeds/112913004980438831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17205525&amp;postID=112913004980438831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112913004980438831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112913004980438831'/><link rel='alternate' type='text/html' href='http://staratlas.blogspot.com/2005/10/java.html' title='Javaのお勉強'/><author><name>Star Atlas</name><uri>http://www.blogger.com/profile/17193605284111867221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17205525.post-112787471273828790</id><published>2005-10-01T00:00:00.000+09:00</published><updated>2005-10-16T15:40:15.140+09:00</updated><title type='text'>はじめに</title><content type='html'>今見えている星空がどんなふうになっているかを知りたい。&lt;br /&gt;太陽の動きから、建物の影が季節によってどう変化するかを知りたい。&lt;br /&gt;月や土星は今どっちの方向に見えるの？&lt;br /&gt;&lt;br /&gt;こんな動機からMacintoshで動作する&lt;a href="http://www.vector.co.jp/soft/mac/edu/se033310.html"&gt;StarAtlas&lt;/a&gt;を開発してからもう12年になる。&lt;br /&gt;&lt;br /&gt;子供の頃から天文学が好きで、大学に入って初めて買ったプログラマブル電卓を使って、中野主一さんが４半世紀前に執筆された「マイコン宇宙講座入門」を読みながら、徹夜で万年カレンダーのプログラムを組んだり、彗星の軌道計算のプログラムを組んだりしていた。&lt;br /&gt;&lt;br /&gt;Mac 用に書いたStarAtlasは、Motorola 68000を搭載したMacPlusやMacSEでもかろうじて動作する。当時のシステムは 6.0.7 だった。ありがたいことにMacOS Xの時代になっても、Classic環境で動作してくれる。Dog yearといわれる世の中にあって、これだけ長く一つのプログラムが動作するのは驚嘆に値する。Macintosh万歳！&lt;br /&gt;&lt;br /&gt;その後、忙しくなってしまったこともあって、プログラムをアップデートしないまますっかり放置してしまった。しかし時代は変わって、MacintoshにもIntelのCPUを搭載したモデルが&lt;a href="http://www.itmedia.co.jp/news/articles/0509/20/news077.html"&gt;来年６月には登場&lt;/a&gt;してくるらしい。2007年末にはMotorolaのMacの発売が終了するともいう。&lt;br /&gt;&lt;br /&gt;ということで、StarAtlasもそろそろ次のプラットフォームに向けて準備しておかなきゃね、でも、自分は天文学のプロでもないし、日曜プログラマだし、ということで、開発のあれやこれやを日誌として残しておくことに決めた。&lt;br /&gt;&lt;br /&gt;いろいろ考えて、次の開発は勉強もかねてJavaで行ないたいと思う。と同時に、中野主一さんの本がBasicで書かれているので、Javaの天文計算入門、みたいな話題も扱ってみたい。&lt;br /&gt;&lt;br /&gt;と、希望ばかりが膨らむけれど、どこまで手を付けられるものか。まずは気長におつきあいくださいませ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17205525-112787471273828790?l=staratlas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://staratlas.blogspot.com/feeds/112787471273828790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17205525&amp;postID=112787471273828790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112787471273828790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17205525/posts/default/112787471273828790'/><link rel='alternate' type='text/html' href='http://staratlas.blogspot.com/2005/10/blog-post.html' title='はじめに'/><author><name>Star Atlas</name><uri>http://www.blogger.com/profile/17193605284111867221</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
