Archive

‘專業技術’ 分類過的Archive

JSON & JSONP 簡介

2009年1月4日 尚無評論

最近在學習Jquery,就常看到JSON及JSONP,只知道他是資料的集合,其它都不太瞭解,所以上網搜尋了一下,整了名詞解釋,希望能更瞭解一點。

JSON(Javascript Object Notation)
JSON(Javascript Object Notation)是一種輕量級的資料交換語言,以文字為基礎,且易於讓人閱讀。
他本來就算在javascript標準裡,JSON是獨立於語言的文字格式,並且採用了類似於C語言家族的一些習慣。JSON格式是1999年JavaScript
Programming Language, Standard ECMA-262 3rd Edition
》的子集合,所以可以在JavaScripteval()函式(javascript通過eval()調用解釋器)讀入。不過這並不代表JSON無法使用於其他語言,目前幾乎所有與網頁開發相關的語言都有JSON函式庫。

JSON,是一種描述javascript裡物件還有陣列(js的陣列其實也是物件啦)的一種簡略表示方法,用於描述數據結構,其結構有名稱/值 及陣列,像是下面這個範例就是JSON格式:

//Javascript
var test={
"x":1,
"y":2,
"str":"test",
"a":[
"array value 1",
"array value 2",
3
],
obj_array:[{
xx:0,
xxx:2
},{
xx:3,
xxx:5
}
]
};

由於JSON在語法上是JavaScript的子集合,所以一般都會使用eval()作為讀取資料的方式,這在JSON資料提供站台與使用站台都屬於可信賴時並不會有問題。但如果資料提供站台不在信任範圍內,將JavaScript程式碼嵌入JSON,則會造成安全上的問題。

另外一個安全上的問題則是跨站存取(Cross-site request
forgery,簡稱CSRF或XSRF)。這個問題在Javascript中的狀況是,由於Javascript採用了稱為「沙盒」的機制,這種機制限制Javascript引擎僅能引入同一個站點的代碼,因而某種程度上提高了安全性。

官方網站:http://www.json.org

JSONP(JSON with Padding)
什麼是JSONP:JSONP(JSON with Padding)是一個非官方的協議,它允許在服務器端集成Script
tags返回至客戶端,通過javascript
callback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。
由於 JSON 只是一種含有簡單括號結構的純文本,因此許多通道都可以交換 JSON
消息。因為同源策略的限制(上述提到的安全性問題),我們不能在與外部服務器進行通信的時候使用
XMLHttpRequest。而JSONP是一種可以繞過同源策略的方法
,即通過使用 JSON 與 <script>
標記相結合的方法
,從服務端直接返回可執行的JavaScript函數調用或者
JavaScript對象。

JSONP的原理很簡單,但需要服務器端給予相應配合。大致來說,JSONP的實現思路就是在客戶端編程時作好使用JSON數據的準備,然後再通過圓括號將這些數據括起來以創建一條有效的JavaScript語句(可能是一次有效的函數調用)。

也就是說,客戶端可以使用一個用於命名jsonp的查詢參數來決定可以獲取的數據。最簡單的情況下,如果jsonp參數為空,則返回的數據就是被括在圓括號中的JSON。

目前已經有很多open的framework 有採用JSONP:dojoJQueryYoutube
GData API
Google Social Graph API Digg APIGeoNames webservice豆瓣APIDel.icio.us JSON API

JSONP只是解決了標準化的問題,但假如遠程主機想通過script標籤向頁面中注入惡意代碼,而不是返回JSON數據,那麼網站還是可能會隨時受到威脅。不過,一旦實現了JSONP,那麼對開發人員來說肯定是一件省時省力的大好事,在此基礎上各種一般化的抽像、教程及文檔也會應運而生的。 我們可以使用若干種方法在 JavaScript 程序中動態地生成代碼。因此在要進行eval()前,可以利用下面的正則表達式檢查 JSON 字符串看是不是有危安成份:


var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
           text.replace(/"(\\.|[^"\\])*"/g, '' ''))) &&
           eval(''('' + text + '')'');


參考資料:
http://diary.tw/tim/22
http://zh.wikipedia.org/wiki/JSON#.E8.B7.A8.E7.AB.99.E5.AD.98.E5.8F.96.E5.95.8F.E9.A1.8C
http://www.cn-cuckoo.com/2008/09/13/the-origin-of-jsonp-262.html
http://www.matrix.org.cn/resource/article/2008-03-06/b2e0ea4e-eb69-11dc-91da-b599c3ba16ef.html

Categories: Java Script Tags: , ,

sendmail 被CBL阻檔的排除法

2009年1月3日 尚無評論
  • 目前客戶有台主機是使用sendmail 寄信,但最近發現有退信的狀況,經查看,客戶的IP被設進去CBL了..

去查了一下,看來是sendmail 的設定要調整才行,sendmail 預設使用localhost.localdomain 在寄信,
有部份的Mail Server加入了CBL 認證,會認為這個有問題而將寄信的IP列管,所以導致被列入CBL黑名單,要查看的方式很簡單,先前就有提到可以 到spamhaus 把IP 輸入進去查查看就知有沒有被列入黑名單,指令如下:

http://www.spamhaus.org/query/bl?ip=168.95.1.1

當我們想查查看是不是如我上面說的目前主機名稱為localhost.localdomain ,很簡單的測試方式就是使用 telnet指令,如下:

telnet localhost 25

即可看到提示訊息會顯示你目前主機的名稱

220 localhost.localdomain ESMTP Sendmail 8.13.6/8.13.6; Mon, 05 Jun 2009
15:10:5
7 +0800

調整方式為:

解決方法:

  1. 知道自己正確的 hostname 為何 (通常是: 主機名稱.網域名稱, 如: myserver.idv.tw, 其中 myserver
    是主機名稱; abc.idv.tw 是網域名稱)
  2. 執行 hostname 指令, 查看 hostname 是否正確
  3. cat /etc/sysconfig/network, 查看 hostname 是否設定正確, 若不正確請修改後,
    執行:

    hostname= 正確的hostname
     

  4. cat /etc/hosts 檢查 127.0.0.1 那一行是否只有 localhost 與 localhost.localdomain 這兩種敘述.
    若否, 請清除不相干的敘述, 並確定是否有如: 192.168.1.1 myserver.idv.tw 描述正確 hostname 的文字列. 若無,
    請新增空白行加入該敘述.
  5. /etc/init.d/sendmail restart 重新啟動 Sendmail
  6. telnet localhost 25 檢查是否出現正確的 hostname


參考資料:

  • http://cha.homeip.net/blog/archives/2004/12/sendmail_localh.html
  • http://www.linuxfans.org/bbs/thread-158875-1-28.html
Categories: 系統設定 Tags: ,

CSS 特效 – 表格透明,內容不透明

2008年12月31日 尚無評論

CSS有個透明化的參數,調整後可以讓你所指定的物件可以淡化,但因為淡化了,所以該物件裡的文字或圖片也都淡掉了,上網找了一下,有人利用DIV 設定position:absolute; 就可以讓內容不隨著指定的物件淡化掉,不過因為這個參數是變成是以絕對路徑,所以你的內容會跑掉,因此,改調整為 position:relative;就行啦!!

style type=”text/css”>
/*—DW8 www.DW8.ORG—*/
<!–
body {
background-color: #0066FF;
}
#div1
{
position:relative;
/*—這裡定義層不隨表格透明而透明
這樣就可以使表格透明的時候表格裡的
內容和圖片不跟著透明了—*/
}
table
{
background-color:#FFFFFF;
filter:alpha(opacity=50,Style=0);
/*—定義透明度,和淡化的風格
opacity為透明度,值越大透明度越小
style是透明淡化的風格
0 普通透明
1 從左到右漸變淡化
2 圓形像兩邊淡化
3 星狀漸變淡化
默認不設置style參數為0
這個效果同樣可以用再圖片上
—*/
width:300;
height:300;
/*—這裡一定要定義寬度和高度—*/
}
–>
</style>
<body>
<table bgcolor=”#0000FF” style=”display:” id=”tab1″>
<tr>
<td>
<div id=”div1″>
<p>DIV層裡的內容</p>
<p><img src=”http://www.baidu.com/img/logo.gif” width=”174″ height=”59″ /></p>
</div>
</td>
</tr>
</table>
</body>

資料來源:http://www.xker.com/page/e2008/0923/61725.html

Categories: WebDesign Tags:

jQuery 學習筆記(一) -hello world

2008年12月29日 2 則評論

先前有稍為看了一下jQuery,因為目前愈來愈需要美感的網頁,所以還是認真點學習這些簡化Javascript 的framework吧!

歷程
jQuery 由美國人John Resig創建,至今已吸引了來自世界各地的眾多javascript高手加入,到目前為止(2008-12-29)最新的release 版本為 v1.2.6 , 最小化後的檔案約30.3KB,以下為相關jquery基本連結。


jQuery是繼prototype之後又一個優秀的Javascrīpt框架。其宗旨是WRITE LESS,DO MORE,寫更少的代碼,做更多的事情。它能快速,簡潔的使用HTML documents, handle events, perform animations,並且能把Ajax交互應用到網頁, jQuery 能夠改變並減化你寫JavaScript的方式及程式碼。
它是輕量級的 js 庫(壓縮後只有30k) ,這是其它的 js 庫所不jquery及的,它兼容 CSS3,還兼容各種瀏覽器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。

而目前在網路上,jQuery的使用案例及教學手冊文件等都非常充足,而學習jQuery前最好對xml力Css,Javascript,Html,DOM都有基本概念,這樣上手才會快一點。

小弟評估了jQuery及Prototype之後,才想把主力放在jQuery上,理由改天有空再寫囉!!

基本使用方式 :

1.要記得載入jQuery的函式庫
2.jQuery程式碼必須在以下的地方撰寫
 
A.$(document).ready() 就像是jQuery的window.onload()

$(document).ready(function(){
  將jQuery 程式碼寫在這
});


B.這種方式也可以,但同時寫時A會先執行

$(function(){
將jQuery 程式碼寫在這
});


3.如何取得物件

A.抓取所有的<a /> tag物件

$(”a”)


B.此為抓取指定的ID,只要ID或NAME為this_id都會被抓出來

$(”#this_id”)


C. 此為抓取指定的class,只要css 裡有包含指定的sytle名稱就會被抓出來

$(”.this_style”)


D. 先小結A+B+C,他們還可以結合使用喔!!

$(”a#this_id”)   //找出 <a />tag,物件名稱為this_id的

$(”a.this_style”)   //找出 <a />tag,calss 名稱為this_style的 (感謝shian指導修正)


E.還有比較不容易搞混的取得物件方式,下例是為抓取this_id名稱的input物件

$(”input[@name:this_id]“)


F.也可以用這種方式取得,此為抓取type=checkbox的物件

$(”input[@type=checkbox]“)


G.還有一種叫層級的取法,以這個div > p會得到<p>two</p>

HTML Code:     <p>one</p> <div><p>two</p></div> <p>three</p>
$(”div > p“)

還有很多種取得方式,詳細請再去參考文件除了官網的文件蠻充足的(可惜都英文的)外;這裡還有簡體版的jQuery API 使用手冊 ,對DOM操作不太熟悉的,可以看一下jQuery 學習筆記 (6) — 操作 DOM 物件這篇,寫的淺顯易懂,應該很容易可以上手

再來當然要寫一個hello world囉:
先瞭解一下如何讀取及加入html code
在<body>裡加入一段html碼

$(”<div><p>Hello</p></div>”).appendTo(”body”);

結果會在<body>加入<div><p>Hello</p></div></body>
再來我們要取得物(div)裡的html,以上述例子再繼續執行$(”div”).html() 結果會取得:<p>Hello</p>

而我們也可以在已知物件加入html code

$(”div”).html(”<p>Hello World</p>”)

這樣我們想要的結果就會顯示出來啦,完整如以下範例

<html>
  <script src=”js/jquery-1.2.6.js” type=”text/javascript”></script>
<script type=”text/javascript”>
$(document).ready(function(){
       $(“div”).html(“<p>Hello World</p>”);
});
</script>
</head>
<body>
<div><p>two</p></div>
</body>
</html>

參考資訊:
http://www.hudong.com/versionview/DdncDAFtRA3V,XA,ndwfwoBUw
http://blog.shian.tw/jquery-base.html
http://wiki.jquery.org.cn/doku.php?id=jquery%E4%B8%AD%E6%96%87%E6%8C%87%E5%AF%BC:15%E5%A4%A9%E5%AD%A6%E4%BC%9Ajquery

Categories: Java Script Tags: , ,

周龍鴻 催生PMP法案

2008年12月29日 尚無評論

這樣的法案有意義嗎?  
沒有.小弟認為這是市場機制啦!!  如果真的有用,那企業在徵求建議書時一定會要求放入..像先前幾年說政府推的軟體專案,只能有通過CMMI的廠商去投標,當時就有被說是對特定廠商設法,有缺公平會惹爭議….如果真的通過,以後應該也是會有公司借牌去投案的,或是PMP的人一個掛數十個案子..呵 (台灣生態..)

能真的降低風險嗎?
一定能,但很多理論是無法落實的,台灣的環境及台灣人的重情重義..所以降低風險有限但一定有用啦!至少可以讓客戶聽話點….^^

看了這則,應該找時間準備去考一考這張才是… =.= ||

周龍鴻 催生PMP法案

2008-12-29 經濟日報
  專業加上一顆熱忱的心,推動著台灣國際專案管理師協會周龍鴻馬不停蹄為國內「專案管理師法案」催生,常見他或揹或提三個公事包,在高鐵站進出南北奔波著,但他一點都不覺得苦,一心只想著要提升台灣專案管理界的國際競爭力。

  周龍鴻是成大第一屆EMBA最年輕的學員,他原為日月光知識管理處經理,取得專案管理師證照(PMP,Project Management Professional),且經歷二次實務證明後,認為專案管理可以讓企業降低風險、節省成本、提高成功率,因此全力推廣PMP。

  目前國內專案管理師(PMP)人數持續增加,但卻沒有專屬的「專案管理師法」,周龍鴻發下宏願,要催生立法,希望未來台灣也能比照歐美先進國家,在各項重大建設或工程都需有二位專案管理師參與,政府發包給民間工程與重要專案,也需有二位PMP參與方能展開。

  根據資料,澳洲政府早在11年前就規定,公共工程承包商提供的專業人才包括工程師、建築師、土木技師等,每個領域都要求有一定比例的PMP,否則無法承攬大型公共工程,但台灣並沒有這些規範,增加許多成本。

  周龍鴻認為,國內不少重大工程都有與承包商對簿公堂,若這些重大工程有專案管理師協助,能夠在簽約時使用PMP專業協助,即可避免很多管理缺失,將風險轉移,可替納稅人減省數億元的損失。

資料來源:http://udn.com/NEWS/FINANCE/FIN12/4663416.shtml


Categories: Project Management Tags:
分頁: 上一頁 1 2 3 ... 13 14 15 16 17 18 19 ... 26 27 28 下一頁