2009年8月2日 星期日

JSP實作MD5

有用過PHP的人都知道,如果要做Hash的話,本身就有Function可以執行,很方便,但在JSP中卻沒有,需要手動來處理:

<%@page contentType="text/html" pageEncoding="UTF-8" import="java.security.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
String plainText = "123456";
MessageDigest mdAlgorithm = MessageDigest.getInstance("MD5");
mdAlgorithm.update(plainText.getBytes());
byte[] digest = mdAlgorithm.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
plainText = Integer.toHexString(0xFF & digest[i]);

if (plainText.length() < 2) {
plainText = "0" + plainText;
}
hexString.append(plainText);
}
out.print(hexString.toString());
%>
</body>
</html>

資料來源:
http://snook.ca/archives/java/create_md5_hash/
http://blog.xuite.net/jameschih/java/5089658

2009年7月15日 星期三

JSP+MultiPartRequest實作FileUpload

JSP要實作檔案上傳的方法很多,例如:jspSmart/O'Reilly/Jakarta等等,不過小弟找不到jspSmart的官網,在此以O'Reilly所提供的API為例:
1.先到http://www.servlets.com/cos/index.html下載套件(cos-26Dec2008.zip)
2.將ZIP檔unzip,然後將lib資料夾全都COPY到Web應用程式的WEB-INF下
3.先撰寫一個fileUpload.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>

<h1>Hello World!</h1>
<form action="implementUpLoad.jsp" method="POST" enctype="multipart/form-data">
<input type="file" name="files" value="" width="20" />
<input type="hidden" name="fileupload" value="go" /><br>
<input type="submit" value="Upload" />
</form>

</body>
</html>

注意:<form>中一定要加enctype="multipart/form-data"
4.再選寫一個implementUpLoad.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8" import="com.oreilly.servlet.MultipartRequest" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%
try {
String saveDirectory = "C:\\htdocs\\JSP\\jsp\\web\\files\\";
int maxPostSize = 5 * 1024 * 1024;
MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "UTF-8");

//MultipartRequest m=new MutipartRequest();
out.println(multi.getFileNames().nextElement());
out.println(multi.getFilesystemName((String)multi.getFileNames().nextElement()));
} catch (Exception e) {
out.println(e.getMessage());
}
%>
</body>
</html>

資料來源:http://caterpillar.onlyfun.net/Gossip/JSPServlet/FileUpload.htm

2009年7月9日 星期四

JSP+JavaBeans

JavaBeans這玩意很神奇,也不錯玩,不過小弟我可也是玩了一星期才終於能使用:
1.先建立一個新的(我是建立C:\htdocs\JSP\jsp)
2.到C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf(因人而異)底下有個server.xml檔,並在之間加入
註:"path"是虛擬的路徑名稱(http://localhost:8080/jsp)
 "docBase"是Web Application的原始路徑
 "reloadable"若為true,則當你的*.class有所變動時,可以不必將Tomcat重開
3.先建立JavaBeans:

//setData.java
package company;

public class setData {

private String name = null;
private int age = 0;

public setData() {
}

public void setName(String in) {
this.name = in;
}

public String getName() {
return this.name;
}

public void setAge(int age) {
this.age = age;
}

public int getAge() {
return this.age;
}
}

之後在建立setData.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
if(request.getParameter("action").equalsIgnoreCase("go")){
%>
<jsp:useBean id="setData" class="company.setData" />
<jsp:setProperty name="setData" property="name" param="name" />
<jsp:setProperty name="setData" property="age" param="age" />
<jsp:getProperty name="setData" property="name" />
<jsp:getProperty name="setData" property="age" />
<%
}
%>
<h1>Hello World!</h1>
<form action="setData.jsp" method="POST">
名字:<input type="text" name="name" value="" /><br>
年齡:<input type="text" name="age" value="" />
<input type="hidden" name="action" value="go" />
<input type="submit" value="Go" />
</form>
</body>
</html>

註:"property"的部份如果小寫不行請將其改成和所要呼叫的方法名稱同樣大小寫
4.將setData.java compiler後,把setData.class COPY到WEB-INF\classes\company底下
完成後即可用Brower進行測試,請注意,在JSP 2.0中,*.java必需要有package的指定.

2009年7月5日 星期日

簡意的WEB版SQL練習程式

看了許久,JSP終於看了一半上下了,雖然MySQL的基本應用大致上都會了,但多看一次就多一次收獲,所以就少稍為K一下,書附範例中,有附簡單的WEB版的練習介面,不過老是用別人的,自己怎麼會進步,所以我自己也寫了一個,我是用JNDI的方式去寫的:

<%@page contentType="text/html" pageEncoding="UTF-8" import="java.sql.*, javax.sql.*, javax.naming.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%! Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;

public void jspInit() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}

public void jspDestory() {
try {
stmt.close();
rs.close();
con.close();
} catch (Exception e) {
}
}
%>
<% request.setCharacterEncoding("UTF-8");%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<table border="1">
<tbody>
<tr>
<td><center>[Result]</center>
<%
if (request.getParameter("client") != null) {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?user=root&password=111111");
stmt = con.createStatement();
rs = stmt.executeQuery(request.getParameter("client"));
rsmd = rs.getMetaData();
%>
<table border="1">
<thead>
<tr>
<%
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
%>
<th><%=rsmd.getColumnLabel(i)%></th>
<%
}
%>
</tr>
</thead>
<tbody>
<%
while (rs.next()) {
%>
<tr>
<%
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
%>
<td><%=rs.getString(i)%></td>
<%
}
%>
</tr>
<%
}
%>
</tbody>
</table>
<%
}
%>
</td>
</tr>
<tr>
<td><form action="sqlTool.jsp" method="POST">
Practice area:<br>
<textarea name="client" rows="10" cols="50"><%=request.getParameter("client")%></textarea>
<input type="submit" value="Test" name="OK" /></form></td>
</tr>
</tbody>
</table>
</body>
</html>

讓JSP連MySQL設定過程 for WIN

在執行以下動作時,請確定以可以執行JSP的網頁:
1.至MySQL的網站中找到MySQL Connectors
2.將JDBC Driver for MySQL (Connector/J)下載下來
3.將抓下來的檔案放在Tomcat/lib/底下(以我的PC為例:C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib)
4.在"環境變數"中,將該檔加入即可

2009年6月23日 星期二

MySQL for Windows啟動教學

近日在Win XP上裝了MySQL,但問題來了,透過[開始]->[程式集]->[MySQL]->[MySQL Server 5.1],並無任何的Start、Stop之類的選項,所以每當我一重開機,可能就要重新透過"精靈"來安裝一次,還好,在網路上找了許久,終於找到Command指令了,如下:(以下動作皆在DOS下操作(命令提式字元))

//Start MySQL
net start mysql

//Stop MySQL
net stop mysql

2009年6月15日 星期一

簡易的掃Port程式

小弟最近在學Java Socket,而Socket主要就是在做網路的相關操作,而以下是一個簡單的檢查電腦Port是否開啟的小程式:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

import java.net.*;
import java.io.*;

/**
*
* @author 111
*/
public class ScanPort_DOS {

public ScanPort_DOS() {
for (int i = 0; i < 1025; i++) {
try {
Socket sk = new Socket("127.0.0.1", i);
System.out.println("Port:" + i + " Open");
} catch (IOException e) {
}
}
}

public static void main(String[] args) {
new ScanPort_DOS();
}
}

執行畫面如下:

2009年5月9日 星期六

如何解lhgjyit0.dll?

近日小弟的PC某名奇妙的中了這種Virus,本來想說"小紅傘"刪掉了,應該就OK了!結果隔天開機,就完了,不斷跳出抓到Virus的視窗,後來在網路上找了一下解法,試了之後,PC就沒什麼問題了,在此分想我找到的解法:
LHGJYIT0.DLL
檢查方式:
[開始/所有程式/附屬應用程式/命令提示字元]開啟一個「DOS視窗」。
輸入
c:
attrib *.*
檢查是否中毒。

刪除方式:
[一]
[開始/執行]
輸入「regedit」開啟「登錄編輯式」,
依序找到「HCU\Software\Microsoft\Windows\CurrentVersion\Run」,在「dorfgwe」這個機碼按右鍵〔刪除〕機碼。

[二]
[開始/所有程式/附屬應用程式/命令提示字元]開啟一個「DOS視窗」。
c:
cd \windows\system32
attrib -s -h -r uret*.exe
del uret*.exe
attrib -s -h -r lhg*.dll
del lhg*.dll
cd \
attrib -s -h -r autorun.inf
del autorun.inf

attrib -s -h -r 6vu*.com
del 6vu*.com

6VU*.COM DGF.EXE 等都是其病毒名稱。

d: 同以上c:作法刪除autorun.inf和xxxx.com
e: f: g: 如果還有的話也一樣

資料來源:
搖滾吧靈魂
f19870421

2009年2月24日 星期二

傳Windows7 RC版官方發佈時間4月10日

作業系統一直是電腦使用者的關心焦點,軟在今年1月29日釋出Windows 7全民測試版後,這段期間並未有其他任何版本,最新傳出最終的RC版(release candidate)官方發佈日期為2009年4月10日,消息來源是來自微軟內部人員。
領導Windows 7開發工作的執行總裁Steven Sinofsky一直對外表示,微軟現正專注於RC階段的研發,但沒有具體時間表。
不過,微軟內部消息人士說,RC版正在測試當中,雖然2月底仍無法定型,但是如果不出現重大問題,則會按照官方內定的4月10日正常發布。
到目前為止,微軟仍然堅持2010年第一季出貨Windows 7,但是根據報導,beta版非常穩定,優於Vista,因此市場仍是預估,Windows 7 RTM正式版將於今年底前上市,最快是在聖誕購物旺季前發布。
此外,有網友使用Windows 7測試版後發現,Windows 7使用者帳戶管理系統(UAC)其中的一個訊息管理功能存有安全漏洞問題,可輕易被惡意程式以Visual Basic編碼發送假按鍵訊息的方式來開啟UAC介面,然後可關閉保護設定,甚至重新開機,進而取得系統帳戶最高權限。
不過,微軟的回應是,這是從Vista使用UAC以來的更新,原本設計概念就是如此,並非所謂的安全漏洞,如果要如其所指那樣可不知不覺地關閉UAC,那麼駭客必須已經透過其他漏洞入侵電腦並植入惡意程式
資料來源:http://tw.news.yahoo.com/article/url/d/a/090224/17/1f0cv.html

PDF檔案近來不要直接線上開啟 當機時就遭駭客植入木馬

趨勢科技今發佈一線上文件的駭客攻擊事件緊急提出警告,趨勢科技指出,駭客近來針對Adobe Acrobat相關系列產品展開安全漏洞攻擊,如果使用者在線上直接開啟PDF檔的文件,就可能造成電腦當機的現象,PDF檔案也無法開啟,在這個當下,就可能遭受駭客植入BKDR_NETCL.A、EXPL_EXECOD、AJS_SHELLCOD.JS、TROJ_AGENT.ZWQA、 TROJ_FAKEAV.LKQQ 等五隻惡意程式,要使用者格外小心,最近千萬不要直接在線上開啟PDF檔案。
趨勢科技發現有關安全漏洞的產品包括Adobe Acrobat Pro 9.0.0、Adobe Acrobat Reader 9.0.0、Adobe Acrobat Pro Extended 9.0.0、Adobe Acrobat Standard 9.0.0等產品,除了9.0版本之外,更早期的版本也都在安全漏洞的攻擊之中。
使用者的電腦一旦被植入木馬,除了可能被盜竊個人資料之外,使用者的電腦更可能成為駭客發送垃圾郵件的僵屍電腦。
趨勢科技也提醒使用者,除了近期不要在線上直接開啟PDF文件檔之外,也盡快用掃毒軟體進行掃毒,並且隨時留意Adobe官方所釋出的安全漏洞修補程式,以隨時更新。
資料來源:http://tw.news.yahoo.com/article/url/d/a/090224/35/1ezt9.html

2009年2月21日 星期六

Excel的圖表無法移動?

今日女友問我一個問題,主要就是她在練乙檢的時候,為什麼所產生的圖表無法移動?好比說"圖例無法移動",不過我和Excel不太熟,經過幾次嘗試後,我決定上網找解法,後來在微軟的網站上找到了答案:
當您建立圖表,以根據樞紐分析表報表時,您無法移動或調整某些樞紐分析圖物件。
所以我的方法是將資料COPY出來,再用COPY出來的資料當成圖表的Data Source,這樣就解決了.
資料來源:http://support.microsoft.com/kb/199201/zh-tw

2009年2月7日 星期六

PHP寄信亂碼如何處理?

日前被老師告知,線上回覆系統的寄信功能,主旨部份出現了亂碼,這在PHP中是個麻煩的問題,但既然出現了問題,總是要解決,於是在網路上找了一段時間,終於被我找到了,主要是透過以下兩個函式:

mb_internal_encoding();
mb_send_mail();//寄出信件

以下是一般的寄件方式:

$to=$addredd;
$subject = "Re:XXX";
$message = "Your PASSWORD is:".$ps." Please change your PASSWORD.";
$from = "admin@project.com";
$headers = "From: $from";
mail($to,$subject,$message,$headers);

用以上的方法會出有亂碼產生,只要修改一下,就OK了:

$to=$addredd;
$subject = "Re:XXX";
$message = "Your PASSWORD is:".$ps." Please change your PASSWORD.";
$from = "admin@project.com";
$headers = "From: $from";
mb_internal_encoding("BIG-5");//設定編碼方式
mb_send_mail($to,$subject,$message,$headers);//寄出信件

資料來源:http://www.wretch.cc/blog/Linpy/10919198

2009年1月24日 星期六

MSN Web Messenger

最近小弟發現微軟推出了Web版的MSN,經小弟試用,還不錯,但用FireFox似乎無法打字,不過用IE就沒問題了:
Web Messenger 和 Messenger 有什麼不同?
MSN Messenger 是擁有完整功能的即時傳訊軟體。您可以安裝在自己或您有權限安裝的電腦上。MSN Web Messenger 則是讓您不必安裝任何軟體就可以在瀏覽器上迅速簡單地使用即時傳訊的基本功能。
資料來源:http://webmessenger.msn.com/default.aspx?R=1

2009年1月18日 星期日

快速刪除kavo.exe!

之前因無法登入Yahoo即時通,上網查了一下,發現是中了kavo的病毒,而小弟我有找到一位大大所寫出來的小程式,很方便,它會不定期更新:
書維的部落格
資料來源:書維的部落格

2009年1月11日 星期日

Google雲端運算的關鍵:從軟體層突破硬體限制

文/王宏仁 (記者) 2008-05-19
Google與Yahoo相繼在臺灣推廣雲端運算,培養平行運算的開發人力。Google建議中小企業應該善用雲端運算的服務,而Yahoo也建議企業可使用雲端運算處理大量批次資料。
繼上個月Yahoo來臺推廣雲端運算之後,Google全球副總裁李開復也趁Google臺灣辦公室落成的同時,發表演講介紹Google的雲端運算服務。
李開復表示,雲端運算的特色是以服務為中心來創造軟體應用。他說:「包括6項特性:以用戶為中心、任務為中心、性能強大、智慧化、廉價硬體、平行處理。」他進一步解釋,當使用者透過瀏覽器使用Google服務時,Google透過平行處理技術,將使用者的指令分派到上千臺電腦上執行,讓使用者存取大量資料時,又能有很高的效率,例如Gmail使用雲端運算的技術,即使有上百萬使用者,登入不用幾秒鐘就能完成密碼確認。
為了能讓網路應用服務處理大量使用者和大量資訊,Google雲端運算的前提,假定每個系統每天都有可能故障,再利用軟體層來創造容錯,並且將機器設備標準化,隨著資料量增加,只需要不斷擴充機器,幾乎不需要修改原來的應用程式。這個軟體層包括3項技術:Google文件系統(GFS)、分散式資料庫Google BigTable,以及MapReduce。
透過雲端運算技術,Google能做出供全球使用的服務,這也讓Google找到產品免費的營運模式。李開復認為中小企業可以善用這些免費產品,將繁瑣的IT日常服務,例如企業郵件轉移到Google或其他服務供應商,不需要自行維護系統。
這並非是Google第一次在臺灣介紹雲端技術,今年初Google已經舉辦過雲端運算技術的研討會,同時也和臺灣大學、交通大學的教授合作,在大學部課程中,教授相關技術。
除了Google在臺推廣雲端運算技術之外,稍早在四月初時,Yahoo也從印度分公司派出雲端運算的開源平臺Hadoop作者之一Vivek Ratan,來臺向開發人員介紹雲端運算技術與Hadoop使用經驗。Vivek說:「任何企業有需要批次處理的巨量資料,都可以利用Hadoop,自行建置一套雲端運算平臺來作資料探勘的分析。」目前最大規模的Hadoop應用,是Yahoo結合上千臺伺服器,使用1萬多個Linux核心來處理5 Petabytes的網頁索引資料,不過,Vivek表示目前使用的企業,大多使用20~100臺伺服器,就可以建置出夠用的雲端運算環境。
Google和Yahoo還將在臺灣舉辦開發者日,更進一步的介紹更多雲端運算技術的細節。Google將於6月14日在臺北國際會議中心舉辦臺北程式開發日,Yahoo則預定於今年下半年舉辦。文⊙王宏仁
資料來源:
http://www.ithome.com.tw/itadm/article.php?c=48970

雲端運算

文 / 蔡學鏞

★ 這是舊文章的改版

雲(Cloud)是網路的象徵,所以雲端運算(Cloud Computing),最廣義的解釋就是「網路運算」。這恐怕是目前大家對於雲端運算的最大公約數,在這之外,大家對於雲端運算的理解和定義,都不太一樣。這篇文章試圖用最淺顯的方式,向大家說明我所知道的雲端運算。

【雲端的組成與架構】
網路是由許多伺服器所組成,雲端運算的基礎是大量的伺服器。如果只用一部超級電腦當伺服器,一樣可以提供相當大的運算威力,這樣可以算是雲端嗎?恐怕不行,因為雲端運算強調的是許多伺服器聯合起來提供強大的運算能力。只有一部超級電腦或少數幾部電腦,恐怕太薄弱,無法形成雲,充其量是「水蒸氣」。

良好的雲端運算架構方式,必須具備規模彈性、容錯、平衡負載:
1 當運算規模增加,雲端要可以彈性變大,只要加上新的節點就可以了,這樣的能力稱為水準擴充(horizontal scalability)。
2 資料重複(redundancy)存放在不同位置,確保資料安全。
3 讓伺服器之間的負載盡量平衡,免得某些伺服器太忙,某些卻太悠閒。

【雲端的前世今生】
既然雲端運算是將許多電腦聯合起來提供運算能力,那麼就會用到網格運算(grid computing)。比較知名的網格運算應該是SETI(尋找外星人)計畫,幾年前SETI流行時,許多人的電腦都下載安裝了SETI程式,奉獻出電腦多餘的運算能力,為尋找外星人這種無聊之舉貢獻心力。

以往的網格運算似乎是供專家使用居多,著重在需要複雜運算的「單一任務」,例如基因定序、核爆模擬。但雲端運算則比較偏大眾應用,相當高比例的大眾應用其實不需要進行複雜的運算,但是由於「大眾」相當多,所以累積起來的運算需求也相當可觀。所以在應用上,雲端運算可以被視為平民化的網格運算。

除了上述的差別,雲端運算和網格運算的差別還有兩點。第一,為了方便管理,並充分運用伺服器的效能,雲端運算也經常會使用到「虛擬化」技術。第二,以往的網格運算通常也只使用專屬的應用協定和資料格式,但雲端運算則受到近年Web潮流的影響很深。

【雲端的操作介面】
雲端運算的願景是以Web為前端,資料全都放在後端,不放在使用者手上。如此一來使用者可以不用擔心不同裝置上資料同步化的問題,也可以隨時取用資料(如果網路沒斷線的話)。既然資料都放在雲端,運算都在雲端進行也就理所當然。因為這樣的效率最好,可以減少資料在使用者和雲端之間的傳輸。

至於Web前端,微軟和Adobe等公司會希望你使用他們各自的RIA技術,但IBM、Google、Apple等沒有RIA技術的廠商,則會希望你使用Web瀏覽器(JavaScript/CSS/HTML),以免被(其他)廠商綁死。

操作介面的程式碼透過Web Browser動態地送到客戶端執行,重要的邏輯部分放在Web伺服器上。這樣的運作方式,其實就是SaaS。所以雲端運算和SaaS是相輔相成的技術概念。

除了Web瀏覽器和RIA之外,許多標準的應用也會隨著雲端運算的興起,開始支援從雲端開啟文件,或寫入文件到雲端,這些讀寫的動作會透過標準的HTTP協定、FTP協定、或WebDAV來達成。說不定以後軟體在「File」選單中,除了「Save」、「Save As」之外,還會多出一個「Save To Cloud」。

【雲端的隱憂】
但是雲端畢竟是在遠方,資料的存取速度自然遠比不上自己電腦上的硬碟。所以除非客戶端連線到雲端的速度夠快,否則這會成為推廣雲端運算的障礙。更不用提萬一像Google App Engine來個大斷線、或者太平洋海底光纖斷線,頓時白雲變烏雲,你可就求救無門了。

在雲端的廠商會將服務列在網頁上,讓你選擇要執行的程式。這些雲端上的程式都可以設定參數,以記錄你的名稱、喜好,以提供更好的服務。甚至過去的一舉一動,也會被記錄下來,你的隱私資料成為廠商的資產。如果公司利用雲端處理ERP/CRM等資料,那麼公司的運作機密以及客戶資料也都會被雲端的廠商知道。是的,雲端廠商都會強調他們重視顧客的權益,這就看你信不信了。

除了可以使用廠商原本就提供的雲端程式,利用參數設定來符合自己需求之外,你也可以上傳程式到雲端。Google App Engine允許你將程式上傳到雲端,在雲端執行。使用Google App Engine,可以省去你建置與管理伺服器的困擾。上傳程式一樣有暴露機密的可能,如果你是一家搜尋引擎的公司,你發明瞭比Google更準確的搜尋演算法,你敢把這樣的服務放到Google的雲端上,只是為了省去「建置與管理伺服器的困擾」嗎?

【雲端對軟體開發者的影響】
你想用什麼方式實踐你的雲端系統,會受到雲端供應商(Cloud Provider)的平台限制。

雲端供應商提供這類的服務,都會限定所使用的語言和框架。Google目前只支援Python和相關的Web框架。以後才會支援其他語言和框架。Python是最適合雲端的語言嗎?恐怕不是,但應該已經符合大眾的需求。

你的Python程式會被Google複製到不同的伺服器上各自執行,這樣的程式無法協同完成一件複雜的任務(例如基因定序)。比較適合雲端的語言其實是函數式語言,例如Erlang。而微軟預計會以F#當作雲端運算的語言。

另外,最厲害的雲端運算設計方式,甚至會向Mobile Agent技術借鏡,讓程式碼可以流動。我認為能結合Mobile Agent的雲端,才是真正先進的雲端。

【雲端的商業模式】
雲端運算會讓軟體產業由原本的「銷售套裝軟體」改成「銷售服務與租賃軟體」。在這樣的商業模式之下,牽涉到的業者包括了ISP(Internet Service Provider)、ASP(Application Service Procider)、DSP(Data Service Provider)、以及Cloud Provider,形成一個緊密的產業結構,由ISP提供網路(例如ADSL)、ASP提供軟件、DSP提供資料、Cloud Provider提供運算能力。

【為何雲端紅了】
雲端運算「這個名詞」在這兩年會這麼紅,主要是因為Web的興起所帶動的。近年Web化的趨勢是將資料都放在伺服器上,既然資料都在伺服器上,運算最好要在接近資料的地方進行,所以運算也在伺服器上才是比較好的作法。運算完成之後,將運算後的結果傳遞到客戶端即可。伺服器需要龐大的運算能力才能應付眾多使用者所提出的運算需求,所以需要將許多伺服器串接起來。

剛剛提到,運算必須要是在伺服器上進行,而不是在客戶端進行。把所有的資料都送到客戶端,然後才在客戶端進行處理,這是不合理的,因為:
1. 資料量相當大,傳輸的速度會相當慢
2. 客戶端的電腦不見得有運行此程式的能力
3. 有資料保密和程式邏輯保密的風險。
從這個角度來看,雲端運算勢在必行,要紅是遲早的事。儘管目前雲端運算有一點渾沌不明,但我不認為雲端運算會是曇花一現。

【雲端何時成熟】
儘管雲端運算不會只是曇花一現,但是要多久的時間才能成熟,就相當難以估計。我個人認為目前雲端運算還只是在萌發時期,要到達成熟還有很長的一段時間,雲端運算需要企業做出相當多改變,加上目前的國際經濟局勢相當糟糕,可能會持續好幾年的時間,在這段時間內,多數企業會保守因應新技術和新市場,所以沒有幾年以上的時間,我們很難看到雲端運算的實際成績。

綜觀目前的狀況,雲端運算正在一團雲霧之中,渾沌未明。雲端運算目前充滿不確定因素,太多事情的發展很難預料。我認為,妄想漫步在雲端,而太早踏入,小心你一腳踩空。

當經濟局勢穩定,且提倡雲端運算的這些廠商能夠彼此坐下來談,定義出一套雲端運算的標準時(Protocol、API…),或許才是大多數的企業應該投入雲端運算的時候。
資料來源:
http://jerrylovesrebol.blogspot.com/2008/12/blog-post_02.html

如何從第X頁插入頁碼

1.將游標移到第1頁的最後
2.點選目錄列的 [插入]-->[ 分隔設定]
3.在分節符號類型中選擇 [自下頁起]
4.[確定]
5.點選目錄列 [檢視]-->[頁首/頁尾]
6.點選頁首及頁尾工具列中的 [顯示下一個] icon, 切換到 節2
7.點選頁首及頁尾工具列中的 [同前] icon, 使右上角的 [同前] 字樣消失
8.切換到頁尾, 重覆第7步
9.點選頁首及頁尾工具列中的 [格式化頁碼] icon, 在 [起始頁碼] 中可以設定本節要開始的頁碼
10.在頁首或頁尾插入頁碼
資料來源:
http://tw.knowledge.yahoo.com/question/question?qid=1507032708572

2009年1月8日 星期四

寫程式辨膚色 大學生攔A片

「讀國小女兒上網找資料寫作業,都會連結上色情網站」,教授抱怨色情影片氾濫的閒聊,觸動國立高雄大學資訊管理學系六位應屆畢業生靈感,利用A片「肉搏戰」肉體膚色面積大的特色,設計出「AV OUT!」辨識程式,能有效攔阻七成以上的A片。
王方巍、林修平、魏兆言、黃明陽、譚惠心、沈妤平等資管系六人研究發現,大多數的網站過濾程式,都是針對帶有色情關鍵字的部落格、網路相簿等加以封鎖,但許多色情片名根本與色情無關,而成為漏網之魚。
[兩女生加入研究 看A片很尷尬]
為了找新的攔阻方法,六人看了數十支A片,兩位女學生譚惠心、沈妤平起初有些尷尬,但想到是學術研究又可阻擋色情氾濫戕害兒童就釋懷了。
他們分析A片共通性就是裸露面積較正常影片大、多、時間長,於是建立樣本,上傳影片必須經過資料庫的「膚色畫素」比對,高過設定參數者便被定義為A片而被攔下。
反覆測試後,攔阻效果逾七成,每則影片只需二至三秒便可完成判讀,而且使用免費的開放程式碼軟體架設網站及撰寫,沒有成本且能夠外掛在任何作業平台。
[充實資料庫 杜絕漏「網」之魚]
面對千奇百怪的A片,「AV OUT!」正持續增加資料庫範本,把「網眼」再織密些,降低系統誤判機率,減少漏網之魚。
不過「AV OUT!」也有罩門,若是黑人A片就無法辨識,因此他們正研發加入「輪廓」辨識功能,透過身體曲線、器官的判讀,提升過濾精準度,達到滴水不漏。
「AV OUT!」外掛在「純影音分享網站」,網址:http://140.127.220.98/ostube21/,歡迎大家使用。
資料來源:
http://tw.news.yahoo.com/article/url/d/a/090108/4/1cm3x.html