2010年12月13日 星期一

C++ Vector

晚上11:09
同事問了一個問題,就是要連續輸入String...

然後,將這些String存在array裡面,直到輸入0 才結束輸入...。


剛開始想說用dynamic array去存string

後來開始寫 就想到C++可以用Vector去做到這個需求~


以下為程式碼的部分:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

template <typename>

class Stack{
};

template <class>
void PrintVector(T vec ,U iteral)
{
    cout << "vector data: " ;
    for( iteral = vec.begin(); iteral < vec.end(); iteral++ )
    {
        cout << *iteral << ", ";  // 取值,印出
    }
    cout << endl;
}


int main()
{
    try
    {
        string input = "";
        vector<string> v1;
        vector<string>::iterator iter;

        cout << "### input string until 0 to exit ...### " << endl ;

        do
        {
            cout << "input : " ;
            getline( cin , input );
            v1.push_back( input );
        } while( input.compare("0")!=0 );

        cout << "### end ###" << endl ;

        // 印出Vector的所有值
        PrintVector( v1, iter);
    }
    catch(exception ex)
    {
        cout << "Error !!" << endl;
        return EXIT_FAILURE;
    }
}




...結束!

2010年12月7日 星期二

Java 解析XML ( dom4j )

下午6:03
使用dom4j parsing xml
這裡是用dom4j去parse XML的資料...

首先可以先到http://www.dom4j.org/dom4j-1.6.1/ 或是 http://dom4j.sourceforge.net/dom4j-1.6.1/download.html

下載使用,目前應該是用1.6.1的版本


然後,還需要下面的jaxen
http://jaxen.codehaus.org/releases.html
目前應該是1.1.4版本


用Yahoo的RSS來實作範例
Dom4jTest.java
package fux.xml.dom4j;

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class Dom4jTest {

    private static Element root;
    private static List<String> name = new ArrayList<String>();
    private static Document document;

    public static void main(String args[]){
        // 建立連線的物件
        URLConnectionUtil urlc = new URLConnectionUtil() ;
        // URL
        String urlStr = "http://hk.news.yahoo.com/rss/business/rss.xml";

        Map<String,Object> map = new HashMap<String,Object>(); 
        InputStream res = null ;

        try {
            // 連線取得資料
            res = URLConnectionUtil.doGet(urlStr, map);

            // 讀取XML檔案
            SAXReader reader = new SAXReader();
            document = reader.read(res);

            // 取得XML Root Node
            root = document.getRootElement();
            // Root Node NAME
            System.out.println( root.getName() );
            System.out.println(  );

            // 印出所有XML DATA
            printXMLTree();

            // print data => /rss/channel/item/title
            name = getAllDataByPath("/rss/channel/item/title");

        }catch (Exception e) {

        }   
    }



    /** print all xml data */
    public static void printXMLTree(){
        printElement(root, 0);
        return;
    }

    private static void printElement(Element element, int level){
        // 依照階層print
        for(int i = 0; i < level; i++){
            System.out.print("\t");
        }
        System.out.print( "<" + element.getQualifiedName() + ">" );
        // 取得該TAG的Attr
        List attributes = element.attributes();
        for(int i = 0; i < attributes.size(); i++){
            Attribute a = ((Attribute)attributes.get(i));
            System.out.print(" (Attr:\"" + a.getName() + "\"==" + a.getValue() + ")");
        }
        System.out.println( " "+element.getTextTrim());

        Iterator iter = element.elementIterator();
        while(iter.hasNext()){
            Element sub = (Element)iter.next();
            printElement(sub, level+1 );
        }
        return;
    }

    /** 從指定的檔案路徑 讀取XML檔案 */
    public static Document loadXMLFile(String filename) {
        Document document = null;
        try {
            SAXReader saxReader = new SAXReader();
            document = saxReader.read(new File(filename));
        }
        catch (Exception ex) {
            ex.printStackTrace();
        } 
        return document;
    }   

    /** 依照Path  印出所有data
    *  example: String path="/rss/channel/item/title"
    *  @param path
    */
    public static List<String> getAllDataByPath( String path ){
        List<String> data = new ArrayList<String>();
        Iterator it = document.selectNodes( path ).iterator();
        while(it.hasNext()) {  
            Element ele = (Element)it.next();
            System.out.println( path + " = "+ele.getStringValue());
            data.add(ele.getStringValue());
        }    
        return data;
    }   
}
範例程式裡面用到了...
URLConnectionUtil urlc = new URLConnectionUtil();
可以從 URLConnectionUtil.java 取得。


需要Include dom4j + jaxen 這兩個jar!


讀取XML檔案、指向XML的第一個Tag:
讀取XML檔案區要用到 org.dom4j.io.SAXReader 裡面的 read( InputStream is );

將檔案存到org.dom4j.Document document,

然後用 root = document.getRootElement(); 取得XML的第一個TAG,

可以把 root 相關的資訊print出來:
System.out.println( root.getName() );


印出XML所有的Tag、Attribute、Data:
這裡是用了下面這行來印出xml的所有資料:
printXMLTree();


其中要從 root 節點開始往下一個個跑,所以需要剛剛這行 root = document.getRootElement();

這是把該Tag裡面,所有的Attribute印出來:
List<String> data = new ArrayList<String>();
Iterator it = document.selectNodes( path ).iterator();
while(it.hasNext()) {  
    Element ele = (Element)it.next();
    System.out.println( path + " = "+ele.getStringValue());
    data.add(ele.getStringValue());
}



指定路徑,取得該TAG:
以下這行,表是用指定的路徑來指定該TAG:
name = getAllDataByPath("/rss/channel/item/title");



這個字串path是用到xpath,這就是jaxen裡的東西了,
List<string> data = new ArrayList<string>();
Iterator it = document.selectNodes( path ).iterator();
while(it.hasNext()) { 
    Element ele = (Element)it.next();
    System.out.println( path + " = "+ele.getStringValue());
    data.add(ele.getStringValue());
}




...


先寫到這裡,有其它的會再補上來!

2010年9月8日 星期三

絕版極品...ATH A9X

清晨7:31
公司裡面...有位同事也是神手級

某天竟然帶來了這支耳機...ATH A9X!!!

上網查了一下有關這耳機的資訊...

沒想到是很久以前生產的耳機啊!!!!


不多說...有圖有真相XD

ATH A9X:











...
....
.....

這支聽起的感覺和A900有一些不同...

感覺在聲音的飽滿度不及A900...

在女聲的表現上已就不失小鐵的強項XD

整體的聲音比較偏亮...但也不失去低頻的味道

不過手頭上沒有A900可以互相比較

所以...也沒辦法寫很多Orz

但是能聽到這隻耳機...真的是心滿意足阿~~~!!!

2010年9月6日 星期一

[不專業開箱] Weston UM1+Fireye I

上午9:18
在總幹事還在台灣的時候,

一起出最後的品嘉敗家試聽團...

不過,我只帶著Kenwood F504的訊源+Grado SR125
(我有帶NB...但是總幹事的uDAC不知怎樣...找不到驅動程式Orz)

那天本來想說買個一千左右的耳機來用用...

問過品嘉老闆後...就拿出Denon C260深海蛇某款(...我忘了)
(本來是要聽C252的...不過好像停產+沒貨了...)

聽完後的感想...C260低頻量真的是很多

深海蛇那隻總幹事拿去聽了...我就沒聽到XD


後來問了一下有沒有AKG K314P...

結果...停產+沒貨

所以就拿出K315P...

很特殊的是...耳機上有開小小的孔(OS:這是半開放嗎XD)

用我的元祖K14P來比較一下...

低頻的部份多出很多...似乎是要補足K14P原先低頻的不足

K315P聽起來感覺比較平均...感覺也失去了部份解析力
(後來手賤...把那個孔用手指蓋住...天阿!!聲音整個變了...有機會可以試看看XD)


後來,又聽了Weston UM1ATH A900...

UM1的隔音真的很不錯,加上又是用海綿的耳塞

一整個舒適度破表!!!(OS:突然讓我很想買下來...)

在聲音和樂器的表現上也很平均...

蠻符合我的口味...XD


A900的耳罩戴起來也很舒適...

聲音也很暖...在人聲的表現上果然只能用""來形容!!!
(OS:害我也想存錢買一隻回去享受XD)



然後,中途還有聽了一台萬元的LIBBY...

說實在的...不知道是訊源不好還是怎樣的

這台讓我沒有很心動...也沒想要成為將來升級的目標...XD



不知不覺...試聽完後就到了晚餐時間

所以,只好先去吃飯...等吃飽後再回來做選擇...

在這吃飯的途中...

一直和我心中的惡魔做掙扎奮鬥...

一方面是耳朵上享受...一方面是錢包中的銀彈怕會短缺

...
....
.....

掙扎了很久...走回品嘉後......

我還是直接買了UM1

然後也有加購火眼的活動

就順便把火眼I...一起帶回去了Orz


回到家後...老樣子先拍幾張照片

Weston UM1的盒子:


內容物:


說明書:


耳機:




海綿耳塞:


收納小盒子:






接著是加購的火眼一:


收納用小袋子:


正面外觀:


底部:



就這樣子拉...享受音樂去XD

2010年8月23日 星期一

X JAPAN周邊護腕!!

上午9:20
在這禮拜一.....睽違已久的X-JAPAN護腕終於來了

趕緊看看新貨...XD

最後,我只買一個...兩個是總幹事的
(還有一個我弟他先拿走了)


三個護腕:


正面:


內側:



可惜...總幹事目前人在米國

沒辦法拿到新鮮貨...

Cute Beyond 體驗

上午8:54
今天從同事那邊借來了這台玩具~!!

THE...Cute Beyond耳擴~~!!


外觀如下(正面):


背面:


在公司的時候,手邊只有F504可以聽

所以只好將就一下,接上來聽看看...


個人感覺...由於我的F504算比較偏暖+解析較好的Beyond後

然後搭配隨身耳機um1...

表現的聲音並不會有很大的改變

在樂器的呈現上,感覺有比較細膩...聲音也比較亮

樂器+人聲整體下來還算很平衡...

不至於某一邊會完全壓過去。



然後,回到家後...

馬上接EMU0404 -> Cute Beyond -> Grado SR-125 來體驗一下

然後,選了幾首歌來聽...

一整個覺得...天啊~樓上張爸(誤)

樂器的聲音變超亮的...高頻的部份超級刺

我完全聽不下去阿~~(感覺耳朵被強姦了...orz)



然後改換 EMU0404 -> Cute Beyond -> AKG K14P

聲音變的好乾冷...解析的部份依舊不錯

但是,人聲表現上就不和我的口味啦...



接著換成 EMU0404 -> Cute Beyond -> UM1

基本上差別不會很大,也是樂器的部份聲音變亮了

高頻的部份也比較顯著...人聲的部份感覺比較弱



再來換成 EMU0404 -> Cute Beyond -> HD681

天阿~ 樓上XXX(消音XD)

聲音超級冷...而且受到這支耳機原本音場的影響

覺得樂器和人聲...你們怎麼離我這麼遠阿~~!!(大喊)


--------------------

總結...這台果然是比較邊向解析方面

也不適合我這種雜食性愛好者XD

果然還是要中性偏暖的比較合我胃口(笑)

2010年8月15日 星期日

[不專業開箱] Kenwood MG-F504

凌晨12:17
(=====事前摘要=====)
本來,心中已經有幾台想要的隨身播放器來做選擇...

選了三台出來...分別是I9、Spinn、和F504

但是,去龍山商場裡面的小叮噹,

已經沒有F504和Spinn了...(崩潰)

只剩下i9可以拿來試聽...

聽完i9的感想是...他的人聲真的很悲慘

樂器的解析度不錯...可惜不合我的口味

聽了一下子就...聽不下去了.....Orz

然後又隨便選了三爽和sony的差不多價位的來聽聽...

其實,聲音感覺很普通...所以那天就沒買了...(汗)

後來,就直接從拍賣直接下單買F504這台!(OS:不想再花時間找拉!!!!!)

(=====回想結束=====)

好啦!
讓我來看看他的盒子外觀吧:

看起來還蠻不錯的!

盒子裡面所有的東西:

有說明書、光碟、保固書、耳機(有附耳罩)、傳輸線、F504播放器

F504看起來不錯www


按鍵部分:


下方的傳輸孔和耳機孔:(我已經用了幾天,補拍上面會有指紋(汗))


右方的音量控制和HOLD功能鍵:

(PS:左邊的圖片沒補拍到,可以插microSD的記憶卡及RESET鍵)

耳機和送的耳罩:


耳機:(基本上不會用這個來聽,我有K14P和UM1了(笑))


USB傳輸線:


實際播放時:



這台聽過後的感像是...聲音真的很暖,

在女聲的部分算是不錯...,

反倒是在樂器的解析上就沒這麼理想了,

用UM1會聽到Snare的聲音很糊...,
(可能是UM1新買的,還沒RUN開)

用K14P去聽就不會有樂器聲音糊掉的問題,只是完全沒低頻。
(可見耳機的影響也很大啊~~!!)


我的音樂檔案,基本上都是轉WAV來聽,

然後編輯歌手、專輯的話...,

WAV似乎沒像MP3可以編輯TAG,

要編輯WAV的話,目前我研究出來的方法,

是用它裡面光碟的BeatJam來編輯,

把要傳到F504的音樂,先丟到BeatJam裡面編輯,

然後,再用這程式傳到F504裡面。

顯示專輯和歌手的那邊就會出現了~~!
(但是我電腦是用日文的XP...目前沒遇過亂碼的問題)
(也許MP3的TAG就會有這問題...)

2010年7月29日 星期四

ACM488

晚上11:10
import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.Scanner;

class Main
{
public static void main(String args[]) throws IOException
{
Scanner cin = new Scanner(new BufferedInputStream(System.in));
int input,wave,times;

input = cin.nextInt();
while(input>0)
{
wave = cin.nextInt();
times = cin.nextInt();
while(times>0)
{
int a;
for(a=1;a<=wave;a++){
for(int b=1;b<=a;b++){
System.out.print(b);
}
System.out.println();
}
for(a=a-2;a>0;a--){
for(int b=a;b>0;b--){
System.out.print(b);
}
System.out.println();
}
times--;
if(times>0)
System.out.println();
}
input--;
if(input>0)
System.out.println();
}
}
}

2010年7月27日 星期二

ACM Q113 with Java

上午8:51
import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.Scanner;

class Main
{
public static void main(String args[]) throws IOException
{
Scanner cin = new Scanner(new BufferedInputStream(System.in));
while (cin.hasNext())
{
double v = cin.nextDouble();
double t = cin.nextDouble();
double a = Math.pow(t,1/v);
System.out.printf("%.0f\n", a);
}
}
}

2010年7月22日 星期四

日本三大妖怪

上午8:39
喀嗯~!

這邊絕對不是因為看了おまもりひまり才聊到的喔(笑)



好啦~回歸正題!

相信這相關資料在google上有很多了,

不然,也可以去翻日文wiki也很多資料。



基本上,三大妖怪是哪三大勒?

分別為:
酒吞童子(しゅてんどうじ) 日文wiki
玉藻前(たまものまえ) 日文wiki
崇徳天皇(すとくてんのう) 日文wiki


這樣說也許很陌生,換個說法,

玉藻前也就是所謂的九尾狐

崇徳天皇也就是所謂的大天狗

這樣子就不陌生了吧,畢竟很多故事小說,

甚至到漫畫動畫都會用到這題材(瞧那精美的鳴人!(被毆))



畢竟,我對這方面接觸也不多,

只能找找網路上的一些資料來整理,

以後有機會的話,也許可以翻到相關傳說的書本

再來做一些心得感想好了。(茶)



若是wiki懶得看的話,下面有一個低調連結

小心食用!!

http://www.wahas.com/archiver/?tid-1310624.html

2010年7月16日 星期五

川口千里

下午4:50
一個國中生...

cover一些動畫歌曲

我覺得超強的...將來的目標!

以下為nico上相關的影片,不妨去看一下www

川口千里ちゃんが けいおん!!「GO! GO! MANIAC」を叩いてみた


川口千里ちゃんがDon't say ”lazy”を叩いてみたようです


川口千里ちゃんがCagayake! GIRLSを叩いてみたようです


川口千里ちゃんが手数王の"Something Like This"を叩いてみた


【けいおん!!】川口千里ちゃんがListen!!を叩いてみた【ドラム】


川口千里ちゃんがふわふわ時間も叩いてみたようです


川口千里ちゃんが唯のキャラソン「ギー太に首ったけ」を叩いてみた


川口千里ちゃんが「Girly Storm 疾走 Stick」を叩いてみた

QR Code

清晨7:53
今天上班時,寫好code更新到server後,

就拿公司裡面測試用的手機來看看修改的功能有沒有問題~

無意間發現這手機竟然有QR Code的解碼器~

如下圖:


酷!! 剛好公司linux server裡面有放QR Code的產生器
(隨便打了"123456"產生一張圖片)


接著,來實際拍照測試看看囉~!!


喀嚓!這日系手機的拍照聲音還真是夠大聲的!

來看看結果如何~


酷啊~! 成功解碼了~而且抓圖聽其他同事說還蠻準的

其他非日系手機就沒這麼厲害,還會拍下去解不出來...囧

這功能似乎在日系手機都內建這功能的樣子!

看來可以考慮買一台來玩玩(喂!)

2010年7月8日 星期四

SyntaxHighlighter 1.x版本 ( 3.0版本不同 )

上午8:27
忘了說,

我的BLOGGER可以用插入標籤,

把code複製上來,還能幫你排版+highlight

我是裝了SyntaxHighlighter,不過是舊版本1.5.1的

>網址<

下載後解壓縮,把script和styles的檔案

找個"可用"空間上傳,

我是用google sites,原先的google page已經停掉了

上傳完後,去修改BLOGGER的設計版面

點進HTML修改,把 展開小型範本 打勾

然後把所有上傳的檔案路徑都加到"<head>"裡面
...


<link href='yourURL/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/>
<script language='javascript' src='yourURL/shCore.js'/>
<script language='javascript' src='yourURL/shBrushCpp.js'/>
<script language='javascript' src='yourURL/shBrushCSharp.js'/>
<script language='javascript' src='yourURL/shBrushCss.js'/>
<script language='javascript' src='yourURL/shBrushDelphi.js'/>
<script language='javascript' src='yourURL/shBrushJava.js'/>
<script language='javascript' src='yourURL/shBrushJScript.js'/>
<script language='javascript' src='yourURL/shBrushPhp.js'/>
<script language='javascript' src='yourURL/shBrushPython.js'/>
<script language='javascript' src='yourURL/shBrushRuby.js'/>
<script language='javascript' src='yourURL/shBrushSql.js'/>
<script language='javascript' src='yourURL/shBrushVb.js'/>
<script language='javascript' src='yourURL/shBrushXml.js'/>




然後,以後把code貼上來,


利用


<class="java" name="code">
...
code
...
</pre>


如下:



public class HelloWorld{
public static void main(String args[]){
System.out.println("Hello World!");
}
}



註解:

在寫文章時,把code包在pre裡面時,

存檔時,會因為html對於 左箭頭的誤判,

會自動補上右箭頭,

所以在弄得時候,可以把左箭頭用下面方法來取代:

用 &#60; 取代 '<'

用 &#62; 取代 '>'

或是用 postable ,先把程式碼轉換後,直接放進來就可以拉!


------------------------------------------------------

備註:
以上是用1.X版本,若是用3.0版本的話,使用方法可能不同

可以參考下面改法!


1.
先到: http://alexgorbatchev.com/SyntaxHighlighter/download/ 下載檔案
2.
把需要用到的檔案傳到可以用的空間(例如:Google site)
3.
在你的blogger設計範本加入以下:

<link rel="stylesheet" type="text/css" href="yourURL/shCore.css" />
<link rel="stylesheet" type="text/css" href="yourURL/shThemeDefault.css" />

<script src='yourURL/shCore.js' type='text/javascript'/>
<script src='yourURL/shBrushCpp.js' type='text/javascript'/>
<script src='yourURL/shBrushCSharp.js' type='text/javascript'/>

<script type='text/javascript'>
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all()
</script>

可以把你需要的.js檔案放上去,放一些需要的就好了!

4.
用法上,也有一些改變(如下)

<pre class="brush: cpp">
你的程式碼!
</pre>



剛試過了,還是會有tag沒對其的小問題,

只好先用取代的吧,看看之後有沒有好方法解決囉!