2010年12月13日 星期一

C++ Vector

同事問了一個問題,就是要連續輸入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 )

使用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

公司裡面...有位同事也是神手級

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

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

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


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

ATH A9X:











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

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

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

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

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

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

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

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

2010年9月6日 星期一

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

在總幹事還在台灣的時候,

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

不過,我只帶著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周邊護腕!!

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

趕緊看看新貨...XD

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


三個護腕:


正面:


內側:



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

沒辦法拿到新鮮貨...

Cute Beyond 體驗

今天從同事那邊借來了這台玩具~!!

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

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

選了三台出來...分別是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

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

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日 星期四

日本三大妖怪

喀嗯~!

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



好啦~回歸正題!

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

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



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

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


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

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

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

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

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



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

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

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

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



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

小心食用!!

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

2010年7月16日 星期五

川口千里

一個國中生...

cover一些動畫歌曲

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

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

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


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


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


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


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


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


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


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

QR Code

今天上班時,寫好code更新到server後,

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

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

如下圖:


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


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


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

來看看結果如何~


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

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

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

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

2010年7月8日 星期四

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

忘了說,

我的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沒對其的小問題,

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