2007年2月7日 星期三

Brand new

美國那麼大國家,而我這是如此小的夢。





不知道在什麼地方,好像回到了十幾年以前。



來~做這邊,這好位子



風景超棒的,雖然是下大雨



那,三包大薯,不要吃光喔,留我的分(開NB,尋找無線網路)



才不會吃光呢,食量很小又不是豬



哈,那我就多吃點啦,嘿,看來是找到了耶



我找你來,是想請你幫個忙~



(開啟網頁,登入MSN)



YA~成功登入了耶!太好了,嘿,告訴我你哥的帳號吧



啊??



其實我對你哥很感興趣,哈,不要想歪,我很正常的



只是我身邊的人都沒有那麼高的學歷,有的我也不熟



能跟聰明的人講話,一定很有意思吧



哈,我不是那個意思,就算我能考上交大台大,我也不會去唸



因為我知道,我不唸的書,說什麼都不會去唸,怎麼苦苦哀求都沒用



呵,扯遠了,這不是我找你來的目的



我是想請你幫我刪掉腦裡面的東西



哈?電腦?



不是電腦,是人腦,不是什麼病,沒有什麼腫瘤啦



是一種意識



意思??



不是啦,簡單的說,是一種想法、思想



那要怎麼刪掉?



嗯…好吃好吃,來,吃薯條,啊~





(現在是什麼情形?)



為什麼你會閉上眼睛?為什麼不說話?為什麼不說話…



(差一點點)



呵呵,你好有趣喔



啊?



這個方法,都還沒看別人用過,沒有書上提到過



好好玩喔,呵



好玩!?@@



換你,來,吃~



啊…(怎麼連我也閉上眼睛了)



(…親到了,糟糕…)

2007年1月27日 星期六

接收,還有RTP媒體串流的呈現

JMF Players and Processors provide the presentation, capture, and data conversion mechanisms for RTP streams.

JMF播放器與處理機提供了畫面呈現、擷取與RTP串流的資料轉換裝置。



A separate player is used for each stream received by the session manager.

You construct a Player for an RTP stream through the standard Manager createPlayer mechanism.

You can either:

每個被接收的串流使用個別的播放器都要靠session manager

你要建構一個透過標準Manager createPlayer轉換的RTP串流播放器,可以試著:



• Use a MediaLocator that has the parameters of the RTP session and construct a Player by calling Manager.

createPlayer(MediaLocator)

• Construct a Player for a particular ReceiveStream by retrieving the DataSource from the stream and passing it to Manager.

createPlayer(DataSource).

使用一個有RTP session的MediaLocator參數且藉著呼叫Manager建構一個播放器

給特定的ReceiveStream建構一個藉由重新取得資料來源串流且通過Manager的播放器





If you use a MediaLocator to construct a Player, you can only present the first RTP stream that’s detected in the session.

If you want to play back multiple RTP streams in a session, you need to use the SessionManager directly and construct a Player for each ReceiveStream.

如果你用MediaLocator去建構一個播放器,你可以只呈現第一個在session偵測到的RTP串流。

如果你要錄音再重放多個session裡的RTP串流,你需要立即用到SessionManager且為每個ReceiveStream建構播放器。



Creating a Player for an RTP Session

為RTP Session創造一個播放器



When you use a MediaLocator to construct a Player for an RTP session, the Manager creates a Player for the first stream detected in the session.

This Player posts a RealizeCompleteEvent once data has been detected in the session.



當你用MediaLocator去建構一個RTP session播放器的時候,Manager會為第一個偵測到的串流創造一個播放器。

這個播放器公佈了在session裡頭曾被偵測過的RealizeCompleteEvent資料。



By listening for the RealizeCompleteEvent, you can determine whether or not any data has arrived and if the Player is capable of presenting any data.

Once the Player posts this event, you can retrieve its visual and control components.

藉由RealizeCompleteEvent的傾聽,你可以決定否有任何資料抵達並且當此播放器是可以呈現任何資料的。

當播放器發佈一次本事件時,你可以重新取回他的可見與控制元件。



Note: Because a Player for an RTP media stream doesn’t finish realizing until data is detected in the session, you shouldn’t try to use Manager.

createRealizedPlayer to construct a Player for an RTP media stream. No Player would be returned until data arrives and if no data is detected, attempting to create a Realized Player would block indefinitely.

注意:因為RTP媒體串流格式的播放器無法完成實體化,除非在此session裡頭資料是已經被偵測到的,你應該試著去用Manager.createRealizedPlayer來建構一個RTP媒體串流的播放器。

沒有播放器會被傳回除非資料抵達時沒有資料被偵測到,而試圖去創一個實體播放器的話應該會碰到非預期的阻礙。



A Player can export one RTP-specific control, RTPControl , which provides overall session statistics and can be used for registering dynamic payloads with the SessionManager.

播放器可以輸出一個RTP指定的控制碼(RTPControl),那個提供整體的session統計資料就可以被用來當作是SessionManager的動態暫存承載。



Listening for Format Changes

格式改變的傾聽



When a Player posts a FormatChangeEvent, it might indicate that a payload change has occurred.

Players constructed with a MediaLocator automatically process payload changes.

In most cases, this processing involves constructing a new Player to handle the new format.

Applications that present RTP media streams need to listen for FormatChangeEvents so that they can respond if a new Player is created.

當播放器發佈FormatChangeEvent時,他可能會指示那個承載產生改變。

播放器自動的建構了一個MediaLocator來處理承載的改變。

在主要的案子中,這個處理過程包含了建構一個新的播放器去操作那新的格式。

應用那個呈現RTP媒體串流需要去傾聽FormatChangeEvents為了他們那些當一個新的播放器被創時以至於可以回應。



When a FormatChangeEvent is posted, check whether or not the Player object’s control and visual components have changed.

If they have, a new Player has been constructed and you need to remove references to the old Player object’s components and get the new Player object’s components.

當一個FormatChangeEvent被發佈時,無論播放器物件的控制或可見元件都要檢查是否有被改過

有的話,一個新的播放器將會被建構且還需要去移除參照到舊的播放器物件的元件然後得到新的播放器物件的元件。

 



Creating an RTP Player for Each New Receive Stream

 



創造一個RTP播放器給每個新的接收串流

 




 



To play all of the ReceiveStreams in a session, you need to create a separate Player for each stream. When a new stream is created, the session manager posts a NewReceiveStreamEvent. Generally, you register as a ReceiveStreamListener and construct a Player for each new ReceiveStream. To construct the Player, you retrieve the DataSource from the ReceiveStream and pass it to Manager.createPlayer.

 



為了在一個session裡面播放全部的ReceiveStreams,你需要一一去開播放器給每個串流。

 



當一個新的串流被開啟時,session manager會公佈NewReceiveStreamEvent

 



通常,你暫存成一個ReceiveStreamListener且一一建構播放器給每個新的ReceiveStream

 



為了建構播放器,你從ReceiveStream存取DataSource而且把他傳到Manager.createPlayer

 




 



 



To create a Player for each new receive stream in a session:

 



session裡頭一一開播放器給每個新的接收串流

 




 



1. Set up the RTP session:

 



設立RTP session

 




 



a. Create a SessionManager. For example, construct an instance of com.sun.media.rtp.RTPSessionMgr.

 



(RTPSessionMgr is an implementation of SessionManager provided with the JMF reference implementation.)

 



開一個SessionManager。就像是建構一個com.sun.media.rtp.RTPSessionMgr的實例。

 



RTPSessionMgr工具是SessionManager提供來參考JMF的工具)

 




 



b. Call RTPSessionMgr addReceiveStreamListener to register as a listener.

 



呼叫RTPSessionMgr addReceiveStreamListener到暫存當傾聽者。

 




 



c. Initialize the RTP session by calling RTPSessionMgr initSession.

 



藉著呼叫RTPSessionMgr initSession來初始化RTP session

 




 



d. Start the RTP session by calling RTPSessionMgr startSession.

 



藉著呼叫RTPSessionMgr startSession來啟動RTP session

 




 



2. In your ReceiveStreamListener update method, watch for NewReceiveStreamEvent, which indicates that a new data stream has been detected.

 



在你的ReceiveStreamListener更新方法裡面,等待NewReceiveStreamEvent,表示新的資料串流有要被偵測

 




 



3. When a NewReceiveStreamEvent is detected, retrieve the ReceiveStream from the NewReceiveStreamEvent by calling getReceiveStream.

 



NewReceiveStreamEvent被偵測到了,藉由呼叫getReceiveStreamNewReceiveStreamEvent重新取得ReceiveStream

 




 



4. Retrieve the RTP DataSource from the ReceiveStream by calling getDataSource. This is a PushBufferDataSource with an RTP-specific Format. For example, the encoding for a DVI audio player will be DVI_RTP.

 



藉由呼叫getDataSourceReceiveStream重新取得RTP DataSource。這是一個PushBufferDataSourceRTP特定的格式。就像是編譯過的DVI聲音播放器會成為DVI_RTP

 




 






5. Pass the DataSource to Manager.createPlayer to construct a Player. For the Player to be successfully constructed, the necessary plug-ins for decoding and depacketizing the RTP-formatted data must be available.

 



經過DataSourceManager.createPlayer而建構一個播放器。為了成功的建構播放器,必要用外掛來為了編譯與有效的包裝RTP格式的資料。

 




 



Handling RTP Payload Changes

 



處理RTP承載的改變

 




 



If the payload of a stream in the RTP session changes, the ReceiveStream posts a RemotePayloadChangeEvent. Generally, when the payload changes, the existing Player will not be able to handle the new format and JMF will throw an error if you attempt to present the new payload. To avoid this, your ReceiveStreamListener needs to watch for RemotePayloadChangeEvents. When a RemotePayloadChangeEvent is detected, you need to:

 



如果串流在RTP session的承載裡改變了,ReceiveStream會公佈一個RemotePayloadChangeEvent

 



通常呢,當承載起了變化,現行的播放器將不能去處理新的格式且JMF將會在你試圖去呈現那新的承載時丟出錯誤訊息。

 




 



1. Close the existing Player.

 



2. Remove all listeners for the removed Player.

 



3. Create a new Player with the same RTP DataSource.

 



4. Get the visual and control Components for the new Player.

 



5. Add the necessary listeners to the new Player.

 



關閉使用中的播放器

 



為那被移除的播放器移除全部的傾聽者

 



給相同的RTP DataSource開一個新的播放器

 



給新的播放器取得可視及控制元件

 



增加必要的傾聽者去給新的播放器

 




 



Controlling Buffering of Incoming RTP Streams

 



控制進來的RTP串流緩衝區

 




 



You can control the RTP receiver buffer through the BufferControl exported by the SessionManager. This control enables you to set two parameters, buffer length and threshold.

 



你可以控制RTP接收者的緩衝經由BufferControl藉著SessionManager輸出。這項控制使你要去設立兩個參數,緩衝區的長度跟門檻。

 




 



The buffer length is the size of the buffer maintained by the receiver.

 



The threshold is the minimum amount of data that is to be buffered by the control before pushing data out or allowing data to be pulled out (jitter buffer).

 



Data will only be available from this object when this minimum threshold has been reached. If the amount of data buffered falls below this threshold, data will again be buffered until the threshold is reached.

 



緩衝區的長度大小是依據保持在接收者的緩衝區大小。

 



門檻的最低限度相當於是資料在藉著控制之前的推進資料或允取資料被拉出的緩衝區

 



資料只能在這個物件的極小值門檻有達到的話才可以用。

 



如果資料的緩衝大小降到門檻以下,資料將再次的被緩衝直到抵達門檻。

 




 



The buffer length and threshold values are specified in milliseconds. The number of audio packets or video frames buffered depends on the format of the incoming stream. Each receive stream maintains its own default and maximum values for both the buffer length and minimum threshold. (The default and maximum buffer lengths are implementation dependent.)

 



緩衝區的長度跟門檻值是定在毫秒為單位。聲音或影像訊框的緩衝值依靠進入串流的格式。每個接收串流維持他自己的預設值而且最大值給定為長度跟門檻的總和。(預設值與緩衝長度的最大值是工具的依靠)

 




 



To get the BufferControl for a session, you call getControl on the SessionManager. You can retrieve a GUI Component for the BufferControl by calling getControlComponent.

 



BufferControlsession,你在SessionManager呼叫getControl。你可以藉由呼叫getControlComponent來給BufferControl重新取得一個GUI的元件。

 




 



Presenting RTP Streams with RTPSocket

 



呈現RTP串流與RTPSocket

 




 



RTP is transport-protocol independent. By using RTPSocket, you can stream RTP from any underlying network.

 



The format of the RTP socket is designed to have both a data and a control channel.

 



Each channel has an input and output stream to stream data into and out of the underlying network.

 



RTP是個獨立的傳輸協定。藉由使用RTPSocket,你可以串流RTP從任何的基層網路。

 



RTPSocket的格式是設計成有資料和控制通道。

 



每個通道有一個輸入和輸出的串流用來去串流資料進入與離開基層網路。

 




 



SessionManager expects to receive individual RTP packets from the RTPSocket. Users are responsible for streaming individual RTP packets to the RTPSocket.

 



SessionManager期望從RTPSocket去接收特別的RTP封包。使用者負責去串流獨特的RTP封包給RTPSocket

 




 



 



To play an RTP stream from the RTPSocket, you pass the socket to Manager.createPlayer to construct the Player. Alternatively, you could construct a Player by calling createPlayer(MediaLocator) and passing in a MediaLocator with a new protocol that is a variant of RTP,  “rtpraw”. For example:

 



RTPSocket播放一個RTP串流,你透過sockerManager.createPlayer來建構播放者。

 



二選一的話,你可以呼叫createPlayer(MediaLocator)來建構一個播放者且透過MediaLocator與一個新的跟RTP有差異的協定,『rtpraw』,就像是:

 




 



Manager.createPlayer(new MediaLocator("rtpraw://"));

 


2007年1月25日 星期四

start me up

Wieviel Uhr ist es?



halb Vier.



Guten Abend!



Hallo, Ich spreche nur wenig Deutsch. Entschuldigung, Können Sie mir helfen?



Ja... Ich möchte spreche Deutsch.



Können Sie mir einen guten Englisch Sprechenden Arzt empgehlen?



Vielen Dank! Es schmeckt sehr gut!

2006年12月5日 星期二

新竹咖哩食記

新竹咖哩食記


撰稿於 2006/12/06   00:00


 



序:


為什麼要寫有關於咖哩的食記呢?


其實只是因為筆者從小就愛吃菜市場的一家老黃咖哩飯


所以對咖哩情有獨鍾、戀戀不忘、紙醉金迷、霧裡探花



 



來到新竹,當然忘不了那意亂情迷的口感,四處尋覓有關咖哩的招牌


當然要是沒有同樣對美食有獨到見解的同學陪襯,那終究是吳剛伐木



 



開動:



 



「新豐-咖哩炒麵」


這是一家位於新豐明新科大校門口正對面的快炒店,以客家小炒為主軸


招牌「咖哩炒麵」就是像油麵下去摻了咖哩粉、花枝、蛤蠣、鳥蛋等等


一盤香味四溢的炒麵跟平常吃得海鮮炒麵就大相逕庭



 



「新豐-蕎麥國」


打著蕎麥的招牌以全麥牛肉麵、全麥水餃為賣點的麵店,裝潢別有用心


菜單上的「咖哩飯」是一小碗咖哩醬和一般便當菜色相互呼應


不過咖哩醬料會讓人感到意猶未盡,飲料也常有麥茶與綠茶相敬如賓。



 



「新竹國賓-八方燴」


一道「綠咖哩」又辣又急,才上舌頭逕上喉嚨,眉開眼笑不絕於耳


副餐一片硬土司沾著吃、跳著吃都好吃



 



「新竹女中-咖哩番」


菜單上的花色讓人莞爾、又眉頭深鎖不懂為何如此多款多口味的咖哩


又不知該如何選擇,不過相信「印度咖哩」不適合是個好選擇


過多的香料累綴,將躍躍欲試的嘴大打折扣,不如歸去



 



「新竹市區-家竹亭」


平常人滿為患,以日式風味主打,連服務生都走日系裝扮


「咖哩豬排」用料為java咖哩醬,口感十足食指大動


不過座位緊迫逼人,味噌湯稍微重鹹,應該是日本人的口味



 



「新竹市區-南門小政」


應該是家日式料理的專門店,可惜海鮮不在我的強項內


咖哩不敵一份馬鈴薯泥,譁眾取寵


但也不全然無用武之地,作為開胃前菜實至名歸



 



「新竹市區-洛印」


採用現煮的咖哩豬肉飯,還打上一顆半熟荷包蛋


樂趣無窮,可惜醬汁太稀,實在是沒有咖哩該有的濃稠


店內裝飾懷舊復古,少一點煙味會更好



 



「竹北家樂福-美國mimi


一個人298吃到飽實在是教人印象深刻,還可以追加咖哩醬


環境舒適、燈光優美、還具備無線網路!


要不是飲料都那麼大杯,恨不得每天下午都來這開會。



 



「新竹清夜-印度咖哩」


絕了竟然有人把各種口味的咖哩醬設成自助餐在賣...


這種沒有飯可配的咖哩吃起來辣的我心花怒放!


看在沒啥人氣的慘淡,給他一點加油鼓勵吧!(加油鼓勵!)



 



「新竹市-馬丁藝術食堂」


「南印度風味咖哩飯」很長的一串名字,不只是如此而已


還有「南洋風味椰香雞咖哩飯」,實在是一整個藝術


不過好像都敵不過另一道「香菇雞肉飯」的樣子



 



「新竹市-英太郎咖哩工坊」


空間頗小,不過老闆娘推薦的蓋飯聽說要等三十分鐘


看樣子是必須再去一趟的,咖哩雖然溼了點但還能接受


電視的位子會讓某些地方的人看的臉紅脖子粗

 




 



後記:


論個人口感,還是偏好濃稠膠著的咖哩醬


不過像java咖哩醬的調配還是分身乏術

 



看來最後還是竹北的美國mimi拔得頭籌



停筆於2006/12/06  01:37

2006年11月26日 星期日

德國 慶祝用 歌曲

如果對象是男性-



Hoch soll er leben,hoch soll er leben

drei mal hoch~



如果對象是女性-



Hoch soll sie leben,hoch soll sie leben

drei mal hoch~





還有.就是.德國人從來不提前慶生(反而會被罵)

但是補慶生是ok的

2006年11月15日 星期三

KTV精神

以下收錄e蝶網頁社期中考夜唱所點歌曲清單



(未按照當時點歌順序排)

1.我沒讀書

2.丟丟銅

3.我是你的誰

4.冷水澡

5.circus monkey

6.狀元

7.音浪

8.看不清

9.垃圾車

10.分開旅行

11.yes!today!

12.奇蹟

13.針線情

14.癡情台西港

15.轉吧!七彩霓虹燈

16.how do i live

17.i want to hold your hand

18.沿海地帶

19.那女孩愛過我

20.年輕時代(誰點的?)

21.this is

22.外樂是自找的

23.close to you

24.綠光

25.我要錢

26.mr.q

27.戒不掉

28.嗆司嗆司

29.小姐,這是我的名片(歌名沒錯吧?)

30.耍花樣

31.寶貝對不起

32.對你愛不完

33.飛龍在天

34.青龍好漢

35.你的甜蜜(沒出來)

36.tack me home country load

37.我相信

38.印第安老斑鳩

39.多好汝乾甘知

40.跳

41.妙妙妙

42.讓我想一想

43.愛我久久

44.天亮以後說分手

45.wake up

46.阿姆斯壯

47.我是我

48.靜止

49.戀愛ing

50.終結孤單

51.一隻小雨傘

52.忍者

53.yellow submarine

54.秒殺

55.自由

56.一樣的月光

57.挫冰進行曲

58.十分鐘的戀愛

59.超快感

60.桃花朵朵開



一共點了9x首歌曲,部份略,如jolin跟fir歌曲略,部份jay的歌曲略

2006年10月18日 星期三

羚羊跳躍

積極而友善是你最大的特色。在工作上你有著強烈的好奇心,而且積極地把握每個機會去學習及展現能力。



你也是個友善的工作夥伴,是同事心中的模範teamplayer。



在愛情方面,你勇於示愛,而且善體人意,是個不可多得的愛情EQ高手。



優點:即使叢林的生活不時有些險惡,你仍不改心中那股生活熱情。



面對周遭的人事物,你總是用正面而體諒的方式詮釋,因而你鮮少憤世嫉俗,更不易庸人自擾。



你的熱情活力感染了周圍的人,跟你在一起工作會是很愉快的經驗。



同時,在愛情中,你很注意對方的情緒需求,也有著極佳的衝突處理能力,是個體貼而懂得尊重另一半的好情人。



提醒:你對人總是心無防備,在你眼中,每個人都是好人,然而叢林中有時危機四伏,難免有人會不懷好意,提醒你在必要時也該發揮警覺心,嗅出異樣就該掉頭,用你優雅的羚羊跳躍,遠離叢林中的危險。