2009年10月15日 星期四

[Note] Scanf and fget


char temp[100];
scanf("%s",temp);
printf("%s",temp);

在c裡頭,scanf遇到空格就會結束。
所以,如果輸入"abc efg",
結果就只會顯示"abc"

要用fget(temp,100,stdin)

2009年10月13日 星期二

[Skill] About Carriage Return & Line Feed

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
c语言编程时(windows系统)
\r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉
如:

int main() {
cout << "hahaha" << "\r" << "xixi" ;
}

最后只显示 xixi 而 hahaha 背覆盖了
\n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉

int main() {

cout << "hahaha" << "\n" << "xixi" ;

}

则 显示

hahaha

xixi

2009年10月11日 星期日

[Skill] FIX MBR For Vista

拔掉移动硬盘,用Vista安装盘启动电脑, 单击“修复计算机”, 单击要修复的操作系统,然后单击“下一步”,在“系统恢复选项”对话框中,单击“命令提示符”(command),进入DOS界面,键入 Bootrec.exe,然后按 Enter,出现很多选项,我是选了键入 Bootrec /FixMbr 然后回车。

修复完毕,重启电脑,顺利进入Vista 64位。

2009年9月3日 星期四

[Temp]老師交待要看的Paper類型

老師交待要看的Pape類型:
記錄一下

IEEE Transaction on MM
IEEE MM Magzine
IEEE Transaction on Video Technology
ACM MM System

IEEE MM Expo. ICME
ACM MM config.

2009年6月13日 星期六

[Skill]設定Textarea內文字的格式(顏色或大小)


2009年4月18日 星期六

[Song] 容祖兒 - 心淡(莫拉維亞交響樂團音樂會)



想不起 怎麼會病到不分好歹
連受苦都甜美 我每日捱著 不睬不理
但卻捱不死 又去痴纏你
難道終此一生 都要這麼
不可爭一口氣

*很謙卑 只不過是我太過愛你
連自尊都忘記 跌到極麻木 只好相信
又再爬得起 就會有轉机
若我不懂憎你 如何離別你
亦怕不會飛

#由這一分鐘開始計起 春風秋雨間
恨〔限〕我對你以半年時間
慢慢的心淡 付清 賬單
平靜的對你熱度退減

+一天一點傷心過 這一百數十晚
大概也夠我送我來回地獄又接返人間
春天分手 秋天會習慣
苦沖開了便淡

重唱 *,#,+

說甚麼再平反 只怕被迫一起更礙眼
往後這半年間 只愛自己
雖說不太習慣 畢竟有限
就當 過關

2009年4月17日 星期五

[Use] 酷站推薦集合

酷站推薦
http://pic.yesky.com
http://www.yiitoo.com/picfr.aspx
http://www.desktopography.net
http://sc.citk.net
http://www.design63.com.cn
http://www.photoshop.org.cn
http://www.68design.net
http://cool.citk.net
http://www.zcool.com.cn

教學網站
http://www.tutorialized.com/


1、收錄了很多主題配色的方案

http://www.print100.com/hk/html/csi.aspx

2、選定你的主題色,輕輕一按就能幫你搭配合適的顏色,還能調節亮度與飽和度,非常專業喔
http://colorschemedesigner.com/
http://wellstyled.com/tools/colorscheme/index-en.html

3、只要輸入一個物品名稱(例如tree)就能產生相關顏色

http://colr.org/

4、選擇你的基調色,馬上給你16種配色

http://www.colorschemer.com/online.html

2009年4月11日 星期六

[Skill] 取消系統發生錯誤時,直接重新開機的設定方式

取消系統發生錯誤時,直接重新開機的設定方式:

在 "我的電腦"按右鍵 >選 "內容" > 在左方的欄位選項中選 "進階系統設定" > 會跳出授權視窗,按"繼續" > 選"進階" > 找到"啟動及修復" > 按 "設定" > 在 "系統失敗" 欄位中將"自動重新啟動"的勾勾拿掉 > 按 "確定" 。

設定完成。

2009年4月7日 星期二

[Skill] 解決Adobe cs3不能移除的問題

問題:
想移除adobe cs3,但卻移除不了。想要重新安裝時,安裝程式也跑不動。

解決方法:
到微軟官方下載:msicuu2.exe windows installer cleanup,下載完成後直接安裝。

安裝完成後,啟動此程式,把adobe CS3有關的文件全選,然後全部Remove。
完整移除後,又可以安裝了!它可以把所有不能移除的軟體徹底刪除乾淨。

2009年4月3日 星期五

[Note][轉] ASP、PHP、JSP的比較與分析

目前,最常用的三種動態網頁語言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。

ASP:
全名Active Server Pages,是一個WEB服務器端的開發環境,利用它可以產生和執行動態的、互動的、高性能的WEB服務應用程序。ASP採用腳本語言VBScript(Java script)作為自己的開發語言。

PHP:
是 一種跨平臺的服務器端的嵌入式腳本語言。它大量地借用C,Java和 Perl語言的語法, 並耦合PHP自己的特性,使WEB開發者能夠快速地寫出動態產生頁面。它支持目前絕大多數數據庫。還有一點,PHP是完全免費的,不用花錢,你可以從 PHP官方站點(http: //www.php.net)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進你自己需要的特色。

JSP:
是 Sun公司推出的新一代網站開發語言,Sun公司借助自己在Java 上的不凡造詣,將Java從Java應用程序和Java Applet之外,又有新的碩果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序。

-------------------------------------------------------------------------------------------------------------------------------------
三者都提供在 HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。但JSP代碼被編譯成 Servlet並由Java虛擬機解釋執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。在ASP 、PHP、JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的 HTML頁面只依賴于Web服務器,而ASP 、PHP、JSP頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器。ASP 、PHP、JSP三者都是面向Web服務器的技術,客戶端瀏覽器不需要任何附加的軟件支持。

技術特點:

ASP:
1. 使用VBScript 、 JScript等簡單易懂的腳本語言,結合HTML代碼,
即可快速地完成網站的應用程序。
2. 無須compile編譯,容易編寫,可在服務器端直接執行。
3. 使用普通的文本編輯器,如Windows的記事本,即可進行編輯設計。
4. 與瀏覽器無關(Browser Independence), 客戶端只要使用可執行HTML碼的瀏覽器,即可瀏覽
Active Server Pages所設計的網頁內容。Active ServerPages 所使用的腳本語言(VBScript 、
Jscript)均在WEB服務器端執行,客戶端的瀏覽器不需要能夠執行這些腳本語言。
5.Active Server Pages能與任何ActiveX scripting語言兼容。除了可使用VB Script或JScript語言來設
計外,還通過plug-in的方式,使用由第三方所提供的其它腳本語言,譬如REXX 、Perl 、Tcl等。
腳本引擎是處理腳本程序的COM(Component Object Model) 對象。
6.可使用服務器端的腳本來產生客戶端的腳本。
7. ActiveX Server Components(ActiveX 服務器組件 )具有無限可擴充性。可以使用Visual Basic 、
Java 、Visual C++、COBOL等程序設計語言來編寫你所需要的ActiveX Server Component 。

PHP:
1.數據庫連接
PHP可以編譯成具有與許多數據庫相連接的函數。PHP與MySQL是現在絕佳的群組合。你還可以自
己編寫外圍的函數去間接存取數據庫。通過這樣的途徑當你更換使用的數據庫時,可以輕松地修改
編碼以適應這樣的變化。PHPLIB就是最常用的可以提供一般事務需要的一係列基庫。但PHP提供的
數據庫接口支持彼此不統一,比如對Oracle, MySQL,Sybase的接口,彼此都不一樣。這也是PHP
的一個弱點。

JSP:
1.將內容的產生和顯示進行分離
使用JSP技術,Web頁面開發人員可以使用HTML或者XML標識來設計和格式化最終頁面。使用JSP
標識或者小腳本來產生頁面上的動態內容。產生內容的邏輯被封裝在標識和JavaBeans群組件中,
並且捆綁在小腳本中,所有的腳本在服務器端執行。如果核心邏輯被封裝在標識和Beans中,那麼
其它人,如Web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的產生。在服務
器端,JSP引擎解釋JSP標識,產生所請求的內容(例如,通過存取JavaBeans群組件,使用JDBC技
術存取數據庫),並且將結果以 HTML(或者XML)頁面的形式發送回瀏覽器。這有助于作者保護
自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。

2.強調可重用的群組件
絕大多數JSP頁面依賴于可重用且跨平臺的組件(如:JavaBeans或者 Enterprise JavaBeans)來執
行應用程序所要求的更為復雜的處理。開發人員能夠共享和交換執行普通操作的組件,或者使得這
些組件為更多的使用者或者用戶團體所使用。基于組件的方法加速了總體開發過程,並且使得各種
群組織在他們現有的技能和優化結果的開發努力中得到平衡。

3.採用標識簡化頁面開發
Web頁面開發人員不會都是熟悉腳本語言的程序設計人員。JavaServer Page技術封裝了許多功
能,這些功能是在易用的、與JSP相關的XML標識中進行動態內容產生所需要的。標準的JSP標識
能夠存取和實例化 JavaBeans組件,設定或者檢索群組件屬性,下載Applet,以及執行用其它方法
更難于編碼和耗時的功能。通過開發定制化標識庫,JSP技術是可以擴展的。今後,第三方開發人
員和其它人員可以為常用功能建立自己的標識庫。這使得Web頁面開發人員能夠使用熟悉的工具
和如同標識一樣的執行特定功能的構件來工作。 JSP技術很容易整合到多種應用體係結構中,以利
用現存的工具和技巧,並且擴展到能夠支持企業級的分布式應用。作為採用Java技術家族的一部
分,以及 Java 2EE的一個成員,JSP技術能夠支持高度復雜的基于Web的應用。由于JSP頁面的內
置腳本語言是基于Java程序設計語言的,而且所有的JSP頁面都被編譯成為Java Servlet,JSP頁面
就具有Java技術的所有好處,包括健壯的存儲管理和安全性。作為Java平臺的一部分,JSP擁有
Java程序設計語言“一次編寫,各處執行”的特點。隨著越來越多的供貨商將JSP支持加入到他們的
產品中,您可以使用自己所選擇的服務器和工具,修改工具或服務器並不影響目前的應用。

應用范圍:
ASP是Microsoft開發的動態網頁語言,也繼承了微軟產品的一貫傳統,只能執行于微軟的服務器產品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的組件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的群組合來擴充,Unix下的COM 實現起來非常困難。

PHP3可在Windows,Unix,Linux的Web服務器上正常執行,還支持IIS,Apache等一般的Web服務器,用戶更換平臺時,無需變換PHP3代碼,可即拿即用。

JSP同PHP3類似,幾乎可以執行于所有平臺。如Win NT,Linux,Unix。在NT下IIS通過一個外加服務器,例如JRUN或者ServletExec,就能支持JSP。知名的Web服務器 Apache已經能夠支持JSP。由于Apache廣泛應用在NT、Unix和Linux上,因此JSP有更廣泛的執行平臺。雖然現在NT操作係統佔了很 大的市場份額,但是在服務器方面Unix的優勢仍然很大,而新崛起的Linux更是來勢不小。從一個平臺移植到另外一個平臺,JSP和JavaBean甚 至不用重新編譯,因為Java字節碼都是標準的與平臺無關的。

性能比較:
有人做過試驗,對這三種語言分別做回圈性能測試及存取Oracle數據庫測試。在循環性能測試中,JSP只用了令人吃驚的四秒鐘就結束了 20000*20000的回圈。而ASP、PHP測試的是2000*2000循環(少一個數量級),卻分別用了63秒和84秒。(參考PHPLIB)。 數據庫測試中,三者分別對 Oracle 8 進行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒,ASP則 需要 73 秒。

前景分析:
目前在國內PHP與ASP應用最為廣泛。而JSP由于是一種較新的技術,國內採用的較少。但在國外,JSP已經是比較流行的一種技術,尤其是電子商務類的 網站,多採用JSP。採用PHP的網站如新浪網(sina)、中國人(Chinaren)等,但由于PHP本身存在的一些缺點,使得它不適合應用于大型電 子商務站點,而更適合一些小型的商業站點。首先,PHP缺乏規模支持。其次,缺乏多層結構支持。對于大負荷站點,解決方法只有一個:分布計算。數據庫、應 用邏輯層、表示邏輯層彼此分開,而且同層也可以根據流量分開,群組成二維數組。而PHP則缺乏這種支持。還有上面提到過的一點,PHP提供的數據庫接口支 持不統一,這就使得它不適合運用在電子商務中。

ASP和JSP則沒有以上缺陷,ASP可以通過Microsoft Windowsd的COM/DCOM獲得ActiveX規模支持,通過DCOM和Transcation Server獲得結構支持;JSP可以通過SUN Java的Java Class和EJB獲得規模支持,通過EJB/CORBA以及眾多廠商的Application Server獲得結構支持。三者中,JSP應該是未來發展的趨勢。世界上一些大的電子商務解決方案提供商都採用JSP/Servlet。比較出名的如 IBM的E-business,它的核心是採用JSP/Servlet的Web Sphere。它們都是通過CGI來提供支持的。但去年10月後它推出了Enfinity,一個採用JSP/Servlet的電子商務 Application Server,而且聲言不再開發傳統軟件。

總之,ASP,PHP,JSP三者都有相當數量的支持者,由此也可以看出三者各有所長。正在學習或使用動態頁面的朋友可根據三者的特點選擇一種適合自己的語言。

轉自:新華博客

2009年3月22日 星期日

[Practice] Photoshop CS - Practice

Library Life


NCKU




Lorry


Purple Style


Rock

Blog Style

2009年3月19日 星期四

[Skill][轉]Word 檔以每一頁另存的方法

Question:
請問一下,如果有一個WORD檔,總共有47頁,請問我要如何讓這47頁,每一頁另存新檔呢?那如果二頁另存一個檔呢?可以嗎?或如果有一些要三頁一個檔,有一些要四頁一個檔也可以嗎?要用什麼方法呢?今天老闆問我的問題。

Answer:

在 Microsoft 官方技術支援網頁中,有這樣的 Word VBA 「儲存每個頁(逐頁)或節的文件為另一個檔案」,請逕自前往以下網址參閱:
http://support.microsoft.com/kb/306348/zh-tw?spid=3253&sid=251

[REF]http://blog.yam.com/trump/article/12516833

2009年3月7日 星期六

[轉][Java]Gmail- POP3 & SMTP

Gmail目前已經啟用了POP3和SMTP服務,
與其他郵箱不同的是Gmail提供的POP3和SMTP是使用安全套接字層SSL的,
因此常規的JavaMail程序是無法收發郵件的,
下面是使用JavaMail如何收取Gmail郵件以及發送郵件的代碼:

1. 郵件收取

import java.io.UnsupportedEncodingException;
import java.security.*;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeUtility;

/**
* 用於收取Gmail郵件
* @author Winter Lau
*/
public class GmailFetch {

public static void main(String argv[]) throws Exception {

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

// Get a Properties object
Properties props = System.getProperties();
props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.pop3.socketFactory.fallback", "false");
props.setProperty("mail.pop3.port", "995");
props.setProperty("mail.pop3.socketFactory.port", "995");

//以下步驟跟一般的JavaMail操作相同
Session session = Session.getDefaultInstance(props,null);

//請將紅色部分對應替換成你的郵箱帳號和密碼
URLName urln = new URLName("pop3","pop.gmail.com",995,null,
"[郵箱帳號]", "[郵箱密碼]");
Store store = session.getStore(urln);
Folder inbox = null;
try {
store.connect();
inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
FetchProfile profile = new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);
Message[] messages = inbox.getMessages();
inbox.fetch(messages, profile);
System.out.println("收件箱的郵件數:" + messages.length);
for (int i = 0; i < messages.length; i++) {
//郵件發送者
String from = decodeText(messages[i].getFrom()[0].toString());
InternetAddress ia = new InternetAddress(from);
System.out.println("FROM:" + ia.getPersonal()+'('+ia.getAddress()+')');
//郵件標題
System.out.println("TITLE:" + messages[i].getSubject());
//郵件大小
System.out.println("SIZE:" + messages[i].getSize());
//郵件發送時間
System.out.println("DATE:" + messages[i].getSentDate());
}
} finally {
try {
inbox.close(false);
} catch (Exception e) {}
try {
store.close();
} catch (Exception e) {}
}
}

protected static String decodeText(String text)
throws UnsupportedEncodingException {
if (text == null)
return null;
if (text.startsWith("=?GB") || text.startsWith("=?gb"))
text = MimeUtility.decodeText(text);
else
text = new String(text.getBytes("ISO8859_1"));
return text;
}
}


2. 發送郵件

import java.security.Security;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
* 使用Gmail發送郵件
* @author Winter Lau
*/
public class GmailSender {

public static void main(String[] args) throws AddressException, MessagingException {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
// Get a Properties object
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
final String username = "[郵箱帳號]";
final String password = "[郵箱密碼]";
Session session = Session.getDefaultInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}});

// -- Create a new message --
Message msg = new MimeMessage(session);

// -- Set the FROM and TO fields --
msg.setFrom(new InternetAddress(username + "@mo168.com"));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[收件人地址]",false));
msg.setSubject("Hello");
msg.setText("How are you");
msg.setSentDate(new Date());
Transport.send(msg);

System.out.println("Message sent.");
}
}


[REF]:http://balafish.blogspot.com/2007/10/javamailgmailssl.html