2005年11月アーカイブ

前回のエントリーで紹介した本が読み終わったので(後半、数理計画問題とか知らなかったから読むのつらかったー。とりあえず近似解方のあたりが特に知りたかったので後半は斜め読み(;´Д`))、とりあえず自分に関係ありそうなところだけまとめておく。

:近似解法
nearest neighbor method
とりあえず最も近い拠点からどんどん繋げていきましょうと言う古典的な方法。途中まではイイ感じに進むが、最後ら辺でコスト大な経路が発生する。

:改善法
2-opt,3-opt
経路をいくつか(2or3本)選んで繋ぎ変える。

opt.png

もし繋ぎ変えた結果、全体の経路が短くなってればそれ採用。
が、図を書いて気づいたのだが、繋ぎ変えてない箇所の順路の向きが変わる場合があるのね。図の2-optの例で言うと3→4だったのが繋ぎ変えた後だと4→3になる。

ちなみにもっと繋ぎ変える本数を大きくしたのをλ-optと言うらしい。が、3より大きくなると繋ぎ変えるパターンを把握するのが大変なのでプログラミングしづらい。なので実用的な範囲は2~3らしい。

ちなみにλを動的に変化させる手法もあり(LinとKernighanの算法)、こちらは改善する前の巡回路の影響を受けにくい性質を持つため、よく使われる。(これをベースとして改良した様々な手法が出てるがこれは後々調べることにする。)

---

んでさっきのnearest neighbor methodの話に戻るけど、この手法で求められた巡回路は最適巡回路と多くの枝を共有していると言われているので改善法と組み合わせれば最後の詰めで発生したコスト大な経路が無くなり、ナイスな答えになる。

個人的に知りたかったnearest insertion methodについての話がなかったのが残念(´・ω・`)
とりあえずそろそろプログラムの方に取りかかることにしよう。

友人の後輩からJButtonが押されたときにJButtonを点滅させたいができないという話を聞き、暇つぶしに実装してました。(本当はCのソースを読まなきゃイカンのだが...逃避)

テキトーにactionPerformedメソッド内でThread.sleep()とか使って再描写すればいいんじゃないかと思ったがどうもうまくいかん。最終的な出力結果が表示されるだけ。うまくいった人の例を見たが

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7415&forum=12&4

ちと複雑そうだし、しかもちらつくらしい。

んで同ページを読んでやっと分かったのだが、点滅等の定期処理をSwingでする場合、javax.swing.Timerを使うらしい。

以下、汚いソースをはっつける。

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Timer;
/**
* BlinkButton
*
* ボタンの点滅test
*/
public class BlinkButton extends JFrame implements ActionListener {
    /**
     * serialVersionUID のコメント
     */
    private static final long serialVersionUID = 1L;
    private boolean blinkFlag = true;
    private JButton testButton = new JButton("test");
    /**
     * 初期設定を行います
     *
     * @param title
     * タイトルバーにつける名前を設定します
     */
    public BlinkButton(String title) {
        super(title);
        // 終了ボタン
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        // リスナーの追加
        testButton.addActionListener(this);
        getContentPane().add(testButton);
        pack();
        setVisible(true);
    }
    /**
    * @param args
    */
    public static void main(String[] args) {
        new BlinkButton("blink");
    }
    /**
    * ボタンが押されたら点滅スタート
    */
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == testButton) {
            Timer t = new Timer(1000, new TimerListener());
            t.start();
        }
    }
    //実際に点滅を行うクラス
    private class TimerListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            if (blinkFlag) {
                changeColorPink();
            } else {
                changeColorWhite();
            }
            blinkFlag = !blinkFlag;
        }
    }
    private void changeColorPink() {
        testButton.setBackground(new Color(238, 145, 238));
    }
    private void changeColorWhite() {
        testButton.setBackground(new Color(238, 238, 238));
    }
}

インナークラスは切り分けちゃった方が綺麗かなぁ....。まぁやっつけ仕事ということで(;´Д`)
#ちなみにこの例だとボタンを押すたびにリスナーが生まれるのでクリックしまくるともの凄い勢いで点滅する。

コレの応用でアニメーション作成も可能

最近はブラインドタッチじゃなくタッチタイピングって言わなきゃいかんらしい。まぁそんな話はおいて。

---
内容・・・キーボードを見ず、携帯の人は親指を見ずに答えを入力してください! 誤字・脱字はそのまま、「BackSpace」や「クリア」はご法度です。

Q1:生年月日を教えてください。
1084年5がる27日

Q2:TV番組と言えば何?
ガキのるかい

Q3:カッコイイ(かわいい)有名人といえば誰?
きあびう りーにす

Q4:辛い食べ物と言えば何?
とうがらし

Q5:あなたのチャームポイントを教えてください。
へろへろなたおかくでようか

Q6:あなたの虫に対する思いを教えてください。
基本的に節足動物は苦手fれす

Q7:カラオケの十八番は何?歌手も教えてください
キンキキッズのガラスのすおうねんかな、ジャニ0ズ系は歌いやすい

Q8:5秒で「ブラインドタッチなんか余裕だぜ!」と入力してみましょう
ぶrたいんどたっりなんかう

Q9:バトンを回す5人を教えてください。
( ´・ω・`)つ[ごみばl子]

昨日、無謀にも研究室のサーバC3 600MHzにKDE3を入れてようとしてリモートでportupgradeしてみたんですが
大方の予想通り、帰宅時間になっても全然終わらなかった。んでターミナルを切るのもどうかと思い、そのままwinマシンも放置して帰って(今思えばリモートでするべきじゃなかったかも)、昼研究室に来たらputtyしんでました...orz。

しょうがないのでputtyで再接続したらインストールが止まってる状態。
fgコマンドでフォアグランドjobにしたくてもターミナルが別扱いなので無理(´・ω・`)

fg [jobID]なんだよねぇ...。fg [PID]とかならいいのにぃと思った。(が、実際にこんなん使えたら恐ろしいことになりそうだ。)


---
某先生にscreenというソフトを教えてもらった。
コレ使えばプロセスが吐き出した内容を他の端末にも表示できる。便利そうなのでめもっとく。

とりあえずportupgrade -N misc/screenでインスト。
#追記[2006/10/27]:sysutils/screenに移動したようだ。

[使い方]
2つ端末を起動させて(ここではa,bとしておこう)
a:screen[enter]で起動。
時間のかかりそうなコマンドを打って(ここではtopと打ってみた)C-a,C-dと押してdetache。

b:screen -lsでプロセス番号調べましょう。
んで表示したいプロセス(さっきdetacheしたヤツ)を選んでscreen -r [PID]
ちゃんとtopコマンドで表示された内容が出てくるはず。

共有を切りたい場合はexitでscreenのターミナルを終了させる。


ん~、これ便利だなぁ。次回からリモートで時間のかかりそうなportupgradeするときはコレ使おう。
今回は...もう一回portupgradeしますλ...

某友人から昨日聞かされて初めて存在を知ったのだが、HODの続編が出るんだね。(segaの公式サイト)

sega_hod15.gif


てっきり3で終了かと思ってた。新基盤のおかげでゾンビの数が大量になったとか。
一番嬉しいのはコントローラーが小型化されたことか。

sega_hod12.gif

3のでっかいショットガンだと腕が疲れてくるからなぁ....。

とりあえずゲーセンに早くでまわって欲しいなぁ。

今日のトリビアの種で、冷や飯に一番合うカップラーメンの残り汁は....「日清麺職人 醤油」(次点はカップヌードル系だっけな)

という内容だったので早速買ってきた。

mensyoku_syo-yu_0.jpeg

とりあえず湯を沸かしながらご飯の用意をしておきましょう。

mensyoku_syo-yu_1.jpeg

通常通り、まず麺をおいしく食します。

mensyoku_syo-yu_2.jpeg

んでご飯投下!ヽ( ・∀・)ノ
ごはん in 麺職人 醤油(and add 日本酒。もはや一人勤労感謝祭*)

んで食します。

...やばい、普通にいけるなコレ。(´Д`*)
カップラーメンの麺だけじゃ足んないよ!っていう人にはかなりおすすめな技かもしれん。

*...本日バイトでしたorz

一体どのぐらい待てばいいのかなーと思ったら...

analytics_0.png

遂にレポート表示キタァ━━(゜∀゜*)━━!!!


それにしても機能多すぎますなこれ。使いこなす自信がない。
とりあえず多くの機能の中でも、どの検索ワードでこのページにたどり着いたかっていうレポートが興味深い。
ちなみに当blogはというと、この前書いた【A8N-VM CSM】という検索ワードで来る人が今のところ多いそうな。ほへぇ。

昨日てか、今日の深夜か、charanger's ROOM [training center] でまたーり遊ぼうかなぁと思ったらオレと同じ名前のヤツが通路でナイフを振り回し暴れてました_| ̄|.......((○

注意しても口の悪いこと悪いこと。( ノ∀`)タハーですよ。

最近、他のプレーヤーと同じ名前を使用してTKを繰り返すっていう輩が居るのはしってたケド、まさか自分と同じ名前のヤツが現れるとはおもわんかったわぁ(´Д`;;


同じ名前は取れないっていうシステムがあればいんだろうけど、TKerが居なくならない限り根本的な解決にはならんしねぇ。しばらくは殺伐としたTC:Eになりそうです(´・ω・`)

恐れ多くもGodから詫びが入りました。

データの待機中: hoge.sub.jp
Analytics を正常にインストールし、データの収集を開始しました。 The demand for Google Analytics surpassed even our highest expectations and as a result some customers may temporarily experience report-update delays. All data continues to be collected and no data has been lost. We are currently adding resources to ensure high-quality service. We apologize for any inconvenience.

こりゃーかなり気長に待たないとだめっぽい(´・ω・`)

3週間ぐらい前に後輩のMAから教えてもらって以来はまりまくっているのでココでも紹介しておく。

基本的に一人称視点のガンシューティング(FPS)ゲーム。もちろん無料。テロリスト側と特殊部隊側に分かれて戦います。リアル指向らしく、そう生身の人間がマシンガンに耐えられるわけがないので、割とすぐ倒れる系。

[味方と共に侵攻中の図]

tce_SS_0.jpeg

射撃するときに一回構えの姿勢に入らないとうまく打てないのでちょっとクセがあるかもしれないが慣れちゃえば余裕。

クラスは3つあり、戦闘員と偵察兵、後スナイパー。

戦闘員と偵察兵は基本的に【ガンガン逝こうぜ】みたいなノリなのだがスナイパーは後方支援で基本的に待ちが多くなる。

tce_SS_3.jpeg

スナイパーライフルで突撃はお勧めできない。回り込まれて ( ・∀・)y=-( ゜Д゜)・∵.∵ガハッ ってことになります。スナイパーで前線に行くときは基本的に小銃か。

最近は偵察兵が好み(*´・ω・)
mapも割と多い。SS結構取ったのではっつけておくか。

[dem_Northport]

tce_SS_1.jpeg

: バランスよしの公式map

---

[dem_DEPOT]

tce_SS_2.jpeg

: 有志の方が作ったカスタムマップ。公式mapでもいいのではないかというぐらいの出来。残念ながら最近はこのmapを見なくなった。(´Д`)
配置を色々変え、ちょっと進化したDEPOT_xpというのが出たが、雰囲気はこっちの方が好き。(xpは空が晴れてるので全体的に明るい)


しっかしこーゆうのやってると中学時代、クラスの10人以上と狂ったように遊んだN64:ゴールデンアイを思い出します。マジでアレは楽しかったなぁ...。と感慨に耽っていたら......

tce_SS_4.jpeg

出た図書館!!(`Д´*)残念ながら地下はまだないようだったがこのmapプロジェクト頑張って貰いたいなぁ...。

[参考リンク]
http://www.truecombat.jp/ 興味をもった方はまずこちらから。
http://www3.atwiki.jp/tce_vip/説明が分かりやすくてイイ!(・∀・)
プレイ動画

ちなみにオレはgiloって名前で初心者系サーバによくいます。全然うまくなれません(´Д`ι)

ぅぅ

| コメント(0) | トラックバック(0)

レポートがらみでintelの資料(この辺[PDF]とかこの辺[PDF]とか)を読んでるのですが量が多すぎ(´Д`;)

レポ間に合いそうにないやぁ_| ̄|...((○

あれれ...


データの待機中
Analytics を正常にインストールし、データの収集を開始しました。 最初のレポートは 12 時間以内に表示できます。

どうやらトラッキングコードの検出にもラグが発生するらしい。データの待機中からレポートの表示までに時間がかかるというのは知っていたのだが...。
とりあえず、コードの埋め込みには成功したらしいので更に放置してみます(´・ω・`)

Google Analytics

| コメント(0) | トラックバック(0)

http://www.google.com/analytics/ja-JP/

流行にのってやってみた。
要はGoogleが提供する高機能アクセス解析ツール。

サイトにちょっとだけJavaScriptコード埋めればいいだけなのだが...

不明なトラッキングです
ウェブ サイトのホームページで、Google Analytics のトラッキング コードが検出されませんでした。 Analytics を実行するには、ご自身またはウェブ管理者がウェブ サイトの各ページにトラッキング コードを追加する必要があります。

動かない...(;´Д`)何故検出すらされんのだぁ。
とりあえずheadタグ内にscriptを載せるのもなんだし、body内に置いてほったらかしてみることにした。(´・ω・`)

webサーバの移行が終わったのでもうちょっとセキュアにsshでも使うかぁと思い、前回RedHatでやった作業を思い出しながらやったら見事にはまったのでメモっておく。


FreeBSDだと前回の記事の通りじゃパスワード認証ができてしまった。これじゃ鍵作った意味ないし、困った困った。
というわけでGoogleで調べてみると...やっぱり同じく困ってる人が居たッ(・∀・ )

http://www.koka-in.org/~haruyama/ssh_koka-in_org/200/254.htmlより

蛇足ですが,UsePAM yes な環境だと PasswordAuthentication no にしてても,
ChallengeResponseAuthentication no にしとかないとパスワード認証が有効
になっちゃいますね。

確かにsshd_config見てみると#UsePAM yesになってるのでFreeBSDだとデフォルトじゃUsePAM yesな環境になってるらしい。(RedHatの時はPasswordAuthentication noにするだけでパスワード認証を無効する事が出来たが、これはたまたまUsePAM noだったからか...。)

早速ChallengeResponseAuthentication noにしてみたら...お~見事に遮断。


ちなみにFedora や Gentoo もデフォルトで UsePAM yes になってるそうな。
(参考:http://www.koka-in.org/~haruyama/ssh_koka-in_org/200/255.html)

coregaの2代目が逝きました。
現在、研究室のwebサーバをC3マシンの方に移行してるところなのですが(Xeonマシンうるさいし...)
アドレス変換の設定をいじって更新したらイキナリ不安定に...orz

結局何回再起動しても断続的に切れるので初期化してファームウェア更新したら途中で止まりました。
直すつもりがトドメをさす形になってしまった...( ;´・ω・)


netが使えなくては何もできないのでとりあえず近くの山田電機に行ってルータ購入。
BUFFALOのBBR-4MGっていう型番。\3880也

かえって設定してみてビックリ。最近のルーターは色んな設定が出来るのねぇ~。

とりあえずcoregaのヤツと比べるとカナリ快適になったかな。ircのログインがメッチャ早くなったような...

BrokenPen.jpg

昨日のバイト中に殉職しました。
中学時代からのつき合いだったので動揺を隠せません。


とりあえずこれから接着剤使ってザオラル試してみます。

飲み会!

| コメント(0) | トラックバック(0)

いやー今回も色々面白い話が聞けてよかったです。


でも飲んだ後にクレープはダメね(´Д`;;)
胃がもたれまくるので激しく反省。

前回の続き

とりあえず現時点の状態で見積もってみた。(まだマザーを何にするのかハッキリと決めてはいないのだが...)
まざー BIOSTAR TForce/6100-939 \9,418
CPU athlon64 3200+ \18,980
メモリ PC3200(DDR400) 1GB DDR SDRAM \9,980
HDD HITACHI Deskstar T7K250 160GB \9,080
電源 EVERGREEN SilentKing4 350W \4,742
CPUクーラー CoolerMaster Hyper 48 \6,171
DVD PLEXTOR PX-740A/JPOS \7,470
winXP Home OME \10,943

計\76,784也
しかし、最近夏休みのバイト代と言うことで研究室から思いもよらぬ臨時収入\32,000がでたので
76,784-32,000=\44,784也
だいたいあと4万5千ぐらいで一台組めそーだ。

ちないみケースは最近近所のサトームセンで在庫処分品のヤツを買いました。7-8000円しそうなヤツが2980で買えたのでちょっとウマーでした。

先日出来たNodeviewerを教授にメールに添付する際、JGraphも一緒に送ったんだけど、ふとコレって再配布しちゃっていいんだろうか?と思いはじめたのでライセンスについて調べてみたのでメモっとく。

調べてみるとJGraphのライセンスはThe GNU Lesser Public License(略してLGPL)というものだった。

e-wordsより

オープンソースソフトウェアのライセンス体系の一つで、GNUプロジェクトが推進するGPLの派生形。当初は「Library GPL」の略だったが、現在では「Lesser GPL」の略とされる。

んじゃGPLってなんだということでGPLについて調べてみた。
wikipediaより

大まかに言えば、GPLとは著作権者が利用者に対し次のような許可を与える契約である。

1. このソフトウェアを誰でも自由に複製してよい。
2. このソフトウェアを誰でも自由に改変してよい。
3. このソフトウェアやそれを改変したものを誰でも自由に頒布してよい。有償で販売しても良い。ただし、その際には頒布を受けた者に対し1から3の許可を与えなければならない。
(中略)
また、頒布に際してソースコードの公開を伴わないバイナリ形式のみでの頒布は認めていない。実用的なソフトウェアをソースコード無しで改変することは不可能に近く、ソースコードが入手できないと言うことは事実上、改変を制限しているに等しいからである。

1~3の前半を見る限りやりたい放題okだなんて、スゲー素敵なライセンス!(´Д`人)と思ってしまうのだが、3の後半がくせ者。つまりGPLライセンスなプログラムをちょびっとでも利用したプログラムはGPLライセンスになってしまうのだ。つまりソースコードをおおっぴらに公開しなければならないというおまけがくっつく。

この前エレコムがGPLライセンスに違反したのはこの辺の話が原因。


んでちょっとでもGPLライセンスなプログラムを使ったらそれもGPLっていうのはキツいからもう少し緩めた方がいいんじゃないのって言うのがLGPLらしい。

元々頭文字のLはLibraryだったそうな。確かにちょこっと使うプログラムっていうのはライブラリが圧倒的に多いだろう。だけどライブラリじゃなくてもLGPLにしたい場合やライブラリだけどもLGPLに適さない場合もあるらしくLesserになったとか。(別に劣ってるわけじゃないと思うが。)

LGPLライセンスなプログラムを改変せず使用したプログラムは別にGPLやLGPLにしなくてもいいらしい。
なので例えばNodeViewerを仮にココで公開しようとしたとき、別にNodeViewerのソースを公開する必要はないわけである。(JGraphのソースは必要らしいが。)

.....敢えてNodeViewerにGPL適用させてメタメタなソースをバイナリと共にココで晒してみようかしら(´A`)

講演会

| コメント(0) | トラックバック(0)

今日(といってももう昨日か)Shapeのエライ方がウチのキャンパスに来られまして、その方の講演参加してました。
話の内容は携帯端末の進化や開発時の苦労話。中でも個人的に感銘を受けたのがユーザーインターフェースの話。

その方曰く、携帯の日本語入力はかなり打ちやすいように改良されてきたけどPCの方は携帯に比べると少し遅れているとのこと。

確かに携帯だと1文字打った時点で候補が挙がる。ちょうどEclipseで1文字入力した時点で自動でCtrl+Spaceしたような感じ。オレが持ってる携帯はauの少し古いタイプだけど、それでも予測した候補はストレス無く一瞬で出てくる。

それに対しPCだと一回一回Spaceで変換して文章を書き進めていかねばならない。(まぁでも携帯は10ボタンだけで平仮名入力しなきゃいけないというハンデがあるからどっちもどっこいどっこいだけど)


---
でもこの機能、最近のIMEなら突いてるんじゃないかと思い、前々から欲しいなぁと思ってるATOK最新版にこれに当たる機能が付いてるのか調べてみた
ぉぉ、あるじゃん(*´ω`)!と思ったのだが候補一個しか出てこんのか。毎回候補がちっちゃなスペースに5個程度出てくれればありがたいんだけどなぁ。いちいちtabおさなきゃいかんのかしら。設定できればいいんだけども。

後は表示されるのにかかる時間かな。プログラミングでもないのにEclipseみたいにちょっと表示に時間がかかるのは勘弁して欲しい。

ものは試しという言葉もあるし、そろそろATOK更新しようかな。

NodeViewer(6)

| コメント(0) | トラックバック(0)

ボタンの実装終わり!とりあえず一段落か?

NodeViewer_b.png

現在の状態で直したいところがあるとすれば、再描写すると選択された状態になってるのでこれを自動で解除したい。JGraphの英語マニュアルとちょっと格闘することになりそうだぁ...。これはマターリやります。

これからすべきこと。
・別プロジェクトでこれのパッケージ使うらしいのでjavadocコメントを見直す
・これのクラス図仕上げる _| ̄|○
・そろそろ発表用のスライドも取りかからないと..._|\○_


とりあえずプロジェクト系2科目の内、1科目は光がカナリ見えてきたので一安心。(*´Д`)-3

バイト帰りに上半身が女子高生の制服、下半身は半ズボン姿のおっさんを見た。

・・・なんかの間違いだと思いたい(´A`)

GAについての知識はある程度持っていると自負しているのだが、巡回セールスマン問題そのものについてはまだ勉強不足だなぁと感じたので...

生協で見つけた「巡回セールスマン問題への招待 シリーズ「現代人の数理」」(Amazon)
を研究室で購入しまして、今現在この本を読んでます。

途中まで読んでるんだけど、この本結構お勧めです。
1行だけ引用すると...

だから大和言葉にせえへんと読者さんから苦情が出るといってまっしゃろ.

と書いてあるように英語嫌いな技術屋さんにも大変優しい本となっております。(´Д`*)
内容も上の1文見てくれれば分かると思うけど堅苦しくなく、軽い感じ。

NodeViewer(5)

| コメント(0) | トラックバック(0)

コツコツ基幹部分を作って1週間。ようやく形になるものができた━━(゜∀゜*)━━!!!

早速前の記事に書いた近似解法を用いたCのプログラムが吐き出したデータと乱数を頼りに作ったデータを比べてみた。

[近似解法を用いた場合]
NodeViewer_C_Data.png

[乱数のみで初期化した場合]
NodeViewer_Random.png

   ||
   ||     ⊂⊃
   ||    ∧ ∧
   ||    (  ⌒ ヽ
 ∧||∧   ∪  ノ
(  ⌒ ヽ 彡  V
 ∪  ノ  フワーリ
  ∪∪

どちらも初期世代の遺伝子である。なので乱数のみの方がぐっちゃぐっちゃなのは理解できるが、近似解法を用いた方は想像以上の性能だなぁ。初期世代だし、近似解法使ってもひどいルート通るんじゃないの?と思っていたのだが。こりゃぁ、ちゃんと近似解法も取り入れないと元々のプログラムに絶対勝てなさそうだ(;´Д`)

とりあえずボタンの部分の実装をさっさとやってしまうかぁ。SWTのときのように白く化けないことを祈りながら(´Д`;)

このアーカイブについて

このページには、2005年11月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2005年10月です。

次のアーカイブは2005年12月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 7.9.3