javascript 擷取文檔所有圖片
function updateUI(){
var imgs = document.getElementsByTagName("img");
for(var i=0, len=imgs.length; i < len; i++){
imgs[i].title = document.title + " image " + i;
}
var msg = document.getElementById("msg");
msg.innerHTML = "Update complete.";
}
這個函數可能看起來完全沒有問題,但它有三個參考全球文檔對象。如果有一個頁面上的映像人數眾多,在迴圈參考檔案可以得到執行的幾十或幾百次,每次需要尋找的範圍鏈。通過建立一個局部變數的文檔對象點,您可以增加限制了一些全球尋找只有一個此函數的效能:
function updateUI(){
var doc = document;
var imgs = doc.getElementsByTagName("img");
for(var i=0, len=imgs.length; i < len; i++){
imgs[i].title = doc.title + " image " + i;
}
在這裡,第一個文檔對象是儲存在本地文檔變數。該文檔變數,然後用檔案地點在整個代碼的其餘部分。只有一個全球在此函數尋找,比以前的版本,保證了它會運行得更快。一個好的經驗法則是任何全球儲存物件,用於在一個函數不止一次作為一個局部變數。
避免與聲明
with語句應避免在效能很重要。類似的功能,具有語句建立自己的範圍,因此增加了它在執行的代碼的範圍鏈的長度。在執行的代碼的語句是保證代碼的運行速度比執行外,是因為在尋找範圍鏈的額外步驟。這是罕見的語句是必需的,因為它主要是用來消除多餘的字元。在大多數情況下,局部變數可以用來完成不引入一個新的範圍,同樣的事情。下面是一個例子:
function updateBody(){
with(document.body){
alert(tagName);
innerHTML = "Hello world!";
}
}
function updateBody(){
var body = document.body
alert(body.tagName);
body.innerHTML = "Hello world!";
}
此代碼使用使用document.body更輕鬆地與發言。同樣的效果可以通過使用一個局部變數,如下:
var msg = doc.getElementById("msg");
msg.innerHTML = "Update complete.";
}
asp.net ui 工具測試
當你測試的使用者介面,你正在測試人類活動。正因為如此,你應該讓電腦執行的任務是很好的,你應該執行的任務的類型,你是好惹的。當開發人員和測試人員首先對可用於測試的UI工具學習,他們往往認為一切都可以實現自動化,這是很遠的現實。第7章本書的測試ASP.NET Web應用程式[,由傑夫McWherter和本廳(書號:978-0-470-49664-0,Wrox出版社,2009年,著作權威利出版公司)]關於深入會談,手工測試但現在重要的是我們瞭解,手動測試仍是一個測試周期非常重要的測試紀律。
弗雷德裡克布魯克斯教授在題為“沒有銀彈 - 本質和軟體工程事故,”1987年的軟體開發人員的檔案,沒有在軟體開發銀彈,這意味著,沒有一個工具,可以解決整個工作你希望完成。介面測試不應該被認為是最終所有即將所有的測試。當使用者介面進行適當的測試是一個非常強大的測試載入器。
在您實現使用者介面自動化測試的重要性,下一個最重要的決定提出的,是你的工具將使用建立的測試。有三種思想流派如何測試使用者介面。
類比瀏覽器
這是一個無頭一套指令碼發送的請求來類比瀏覽器相同類型的,但措施的回應時間,而不內容表述,被送回。這種類型的UI測試是偉大的發現在Web應用的瓶頸。這一類型的測試的缺點是,你不是研究和驗證實驗的反應情況。這種類型的測試只能用於量,壓力和負載測試情節。
網路容量分析工具(冷原子捕集)是一個輕量級的HTTP負載產生工具,目的是類比的並發使用者數,提出請求到一個網站。冷原子捕集用簡單的指令碼來類比瀏覽器和充分行使一個網站:
新的交易
的classid = 1
新請求的HTTP
動詞=“獲得”
網址=“http://www.google.com”
using NUnit.Framework;
using System.Net;
using System.IO;
namespace ParseHttp
{
[TestFixture]
public class ParseHttp
{
[Test]
public void Should_Navigate_To_Google_And_Return_Results_For_AspNet()
{
string urlToTest =
"http://www.google.com/search?hl=en&rlz=1G1GGLQ_ENUS295&q=asp.net&btnG=Search";
string result = GetPage(urlToTest);
Assert.IsTrue(result.IndexOf("The Official") >0, "Asp.net Page ");
}
private string GetPage(string urlToTest)
{
// create a web client object to load the page from local server
WebClient client = new WebClient();
string result = string.Empty;
// dump the contents of the page we navigated to into a stream
using (StreamReader reader = new
StreamReader(client.OpenRead(urlToTest)))
{
result = reader.ReadToEnd();
}
return result;
}
}
}
瀏覽器
在這個介面測試方法(如在未來上市),該測試將開啟一個物理瀏覽器,執行的行為,然後該測試將在測實驗證您輸入的標準為基礎的HTML。這種自動介面測試類型是手動測試最接近你會得到。由於測試需要開啟瀏覽器,執行測試,並報告結果支援這一類型的測試非常脆弱。這些類型的測試往往是複雜的,如果你的計劃是只壓力測試您的應用程式這種類型的測試將是矯枉過正:
using NUnit.Framework;
using WatiN.Core;
using WatiN.Core.Interfaces;
namespace SimpleWatinTest
{
[TestFixture]
public class SimpleWatinTests
{
[Test]
public void Should_Click_Search_On_Google_And_Return_Results_For_AspNet()
{
using (IBrowser ie =
BrowserFactory.Create(BrowserType.InternetExplorer))
{
ie.GoTo("http://www.google.com");
ie.TextField(Find.ByName("q")).Value = "asp.net";
ie.Button(Find.ByName("btnG")).Click();
Assert.IsTrue(ie.ContainsText
("The Official Microsoft ASP.NET Site"));
}
}
}
}
using NUnit.Framework;
using WatiN.Core;
using WatiN.Core.Interfaces;
namespace SimpleWatinTest
{
[TestFixture]
public class SimpleWatinTests
{
[Test]
public void Should_Click_Search_On_Google_And_Return_Results_For_AspNet()
{
using (IBrowser ie =
BrowserFactory.Create(BrowserType.InternetExplorer))
{
ie.GoTo("http://www.google.com");
ie.TextField(Find.ByName("q")).Value = "asp.net";
ie.Button(Find.ByName("btnG")).Click();
Assert.IsTrue(ie.ContainsText
("The Official Microsoft ASP.NET Site"));
}
}
}
}
Below is a table of how HTML elements can be obtained using the WatiN framework.WatiN HTML Mapping:
HTML ELEMENT WatiN Class Example
<a /> Link Ie.Link(linkId)
<button /> Button Ie.Button(buttonId)
<div /> Div Ie.Div(divId)
<form /> Form Ie.Form(formId)
<frame /> Frame
Ie.Frame(frameId)
<iframe /> Frame Ie.Frame(iframeId)
<img /> Image Ie.Image(imageId)
<input type=button/> Button Ie.Button(buttonId)
<input type=checkbox/> CheckBox Ie.CheckBox(checkboxId)
<input type=file/> FileUpload Ie.FileUpload(fileuploadId)
<input type=image/> Image Ie.Image(imageId)
<input type=password/> TextField Ie.TextField(passwordId)
<input type=radio/> RadioButton Ie.RadioButton(radioId)
<input type=submit/> Button Ie.Button(submitId)
<input type=text/> TextField Ie.TextField(textId)
<label /> Label
Ie.Label(elementId)
<option /> Option Ie.Select(selectId).Options
<p /> Para Ie.Para(pId)
<select /> Select Ie.Select(selectId)
<span />
<table /> Table Ie.Table(tableId)
<tbody /> TableBody Ie.TableBody(tablebodyId)
Ie.Table(tableid).TableBodies
<td /> TableCell Ie.TableCell(tablecellId)
Ie.Table(TableId).TableRows[0].TableCells[0]
<textarea /> TextField Ie.TextField(textareaId)
<tr /> TableRow Ie.TableRow(tablerowId)
Ie.Table(TableId).TableRows[0]
All elements, also the ones not mentioned in this list Element and
ElementsContainer Ie.Element(elementId)
Ie.Element(tagname, elementId)
java 線上拍照代碼
在數位相機的普及(尤其是在電話手機),導致其價格下降就像他們的規模大幅縮水。它現在越來越難找到,即使沒有網路攝影機的手機,和機器人裝置不可能例外。要訪問相機的硬體,你需要添加到您的照相機許可應用程式資訊清單,如下所示:
<uses-permission android:name="android.permission.CAMERA"/>
這授予訪問相機服務。該相機類可以調整相機設定,拍照,攝像和處理流媒體預覽。要訪問照相機服務,使用相機的靜態類的open方法。當您的應用程式與相機後,記得致電放棄後釋放的簡單使用模式的程式碼片段所示您對服務進行:
Camera camera = Camera.open();
[ … Do things with the camera … ]
camera.release();
控制網路攝影機設定
目前的相機設定可以作為Camera.Parameters對象。呼籲相機的getParameters方法來訪問當前的參數。您可以使用設定在返回的參數*方法修改設定。以應用更改,請setParameters,作為修改後的價值的承傳如下:
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);
該相機的參數可以用來指定圖片和預覽的大小,映像格式和預覽畫面播放速率。
使用相機預覽
進入相機的流式視頻意味著您可以合并到應用現場視頻。最令人興奮的早期機器人應用一些用作充實的現實基礎,此功能。該相機可顯示預覽即時到一個表面,如下面的程式碼片段所示:
camera.setPreviewDisplay(mySurface);
camera.startPreview();
[ … ]
camera.stopPreview();
您將瞭解在下一章表面多,雖然機器人包括一個用SurfaceView顯示即時網路攝影機預覽很好的例子。這個例子可以在圖形/ CameraPreview在SDK API的示範項目。
您也可以指定一個PreviewCallback被解僱每個預覽框,讓您操作或顯示每個單獨幀預覽。調用對象的照相機setPreviewCallback方法,在新的PreviewCallback覆蓋onPreviewFrame方法傳遞的執行情況如下所示:
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {
// TODO Do something with the preview image.
}
});
過調用一個Camera對象takePicture圖片,在ShutterCallback和RAW和JPEG PictureCallback實現通過編碼的映像。每個圖片回調將收到的位元組數組代表以適當的格式的映像,而快門回調觸發快門後立即關閉
private void takePicture() {
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
// TODO Do something when the shutter closes.
}
};
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
// TODO Do something with the image RAW data.
}
};
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
// TODO Do something with the image JPEG data.
}
};
asp.net 在SQL Server 2008整合服務(SSIS)
指令碼任務允許您訪問的Microsoft Visual為應用程式(VSTA版)Studio工具環境,寫和執行指令碼使用VB和C#語言。在華擎的環境是新的SSIS的最新版本,取代從2005年的版本的應用程式的Visual Studio儀(VSA)環境。指令碼現在幾乎是不適當的,因為最新版本的SSIS鞏固串連到充分。為VB和C#NET庫。最近除了一般的華擎環境和指令碼任務的SSIS還提供這些額外的功能優勢:
阿同智能優勢編碼環境
一個整合的Visual Studio設計環境內的SSIS
一個易於傳遞到指令碼參數的使用方法
能夠添加到您的代碼進行測試和調試斷點(只用一個指令碼任務每包)
自動編譯成二進位格式的指令碼的速度優勢(這是配置在早期版本的SSIS。)
指令碼任務是通過在配置指令碼任務編輯器指令碼選項卡(如圖3-6所示)。
圖3-6
該ScriptLanguage屬性是您選擇。NET語言你,喜歡用在任務欣慰。請注意,預設語言設定為C#,所以如果你是編碼VB.NET,唐時,通過這些設定你的指令碼任務的設定下,AOT奇才。如果你做任何與以前的版本的SSIS的發展,你??ll也注意到PreCompileScriptIntoBinaryCode屬性已被永久刪除。其結果是,所有的指令碼代碼將自動編譯並持續到包。這個速度,並降低執行階段錯誤的任務顯著。
對於EntryPoint屬性使您可以提供另一種函數調用開始時ScriptMain類執行個體化。通常,您,??ll離開這個設定為預設的Main()函數。在ReadOnlyVariables和ReadWriteVariables屬性允許您傳遞到作為一個由逗號分隔的變數名上市指令碼SSIS的變數。打字變數的名字來,是一個小的SSIS中的早期版本不合常規,但最新版本提供了瀏覽到變數的收集和選擇能力的變數。有了這些變數提供了一個重要的優勢編碼。你只需要提及的序號位置或在變數集合的名字向他們能夠訪問鎖定擔心不用擔心他們的價值觀,開鎖,或阻止在讀寫操作變數。您只要確定有您想要的變數寫回在ReadWriteVariables財產,或者你,??ll得到一個在指令碼中的錯誤。
另外還有改變變數阿倫下,AOT設定過程中提供了在這些藏品是在第9章上展示指令碼的替代方法。當您按一下按鈕,可操作的編輯指令碼,對應用程式的Visual Studio工具環境,開放,允許編碼類別ScriptMain直接。在這個IDE中,您可以訪問所有先進的調試策略,斷點,並在Visual Studio環境中智能感知。如果您建立一個變數包含字串“Hello World”,並設定如圖3-7,下面的樣本指令碼任務myValue一包告訴您如何編寫代碼,使用傳入的myValue變數:
publicvoid Main()
{
if(Dts.Variables.Contains(“User::MyValue”))
{
System.Windows.Forms.MessageBox.Show("MyValue=" + Dts.Variables
[“User::MyValue”].Value.ToString());
}
Dts.TaskResult = (int)ScriptResults.Success;
}
vbnet Code:
PublicSub Main()
If Dts.Variables.Contains(“User::MyValue”) = TrueThen
System.Windows.Forms.MessageBox.Show("myValue=" & Dts.Variables
(“User::MyValue).Value.ToString())
EndIf
Dts.TaskResult = ScriptResults.Success
EndSub
ASP.NET AJAX in ASP.NET 3.5 and Visual Studio 2008
在此之前的Visual Studio 2008,ASP.NET AJAX的產品曾經是一個獨立的安裝,你需要安裝在您的機器和Web伺服器,您正在使用。這個版本獲得了較快的普及,現在是在Visual Studio 2008產品的一部分。它不僅是一個在Visual Studio 2008 IDE中的一部分,在ASP.NET AJAX的產品也是烤到。NET架構3.5。這意味著要使用ASP.NET AJAX,您不需要安裝任何軟體,如果您正在使用ASP.NET 3.5工作。
ASP.NET AJAX是現在只是在ASP.NET架構的一部分。當您建立一個新的Web應用程式,您不必建立一個ASP.NET應用程式的不同類型。相反,所有的ASP.NET應用程式建立的,你現在AJAX的。
如果你已經使用ASP.NET AJAX的工作在此之前3.5版本,您會發現實在沒有什麼新的學習。整個技術無縫地整合到全面發展的經驗。
總體而言,微軟已經完全整合在整個ASP.NET AJAX的體驗,使您可以輕鬆地使用Visual Studio及其可視化設計,與你的支援AJAX的網頁,甚至有完全的調試故事,你會願意與你的應用程式。使用Visual Studio 2008,你現在可以調試的JavaScript,您是在頁面上使用。
此外,重要的是要著重指出,微軟的跨矚目平台與ASP.NET AJAX的相容性。你會發現,AJAX的應用程式,你呼籲。NET Framework 3.5中建立可以在所有主要的增長水平瀏覽器本身有(如Firefox和Opera)。
使用ASP.NET AJAX開發
有許多類型的Web開發人員的夫婦在那裡。有網路誰是用來與ASP.NET和誰有經驗的工作與伺服器端的控制和操縱的伺服器端開發這些控制項。還有一些開發誰集中在用戶端和DHTML和JavaScript的工作,操縱和控制的頁面及其行為。
雖這麼說,重要的是要認識到ASP.NET AJAX的是為兩種類型的開發設計。如果你想在伺服器上工作,更多的ASP.NET AJAX端,您可以使用新的ScriptManager控制項和新的UpdatePanel控制項到AJAX啟用您與您做一些工作當前ASP.NET應用程式。所有這些工作可以做到使用相同的編程模型,你很熟悉,在ASP.NET。
反過來,你也可以使用用戶端指令碼庫直接獲得更大了什麼是用戶端的機器發生的控制。接下來,本文將著眼於建立一個簡單的Web應用軟體使使用者對AJAX的使用。
ASP.NET AJAX應用
下一步是建立一個基本的樣本利用這一新的架構。首先建立一個新的ASP.NET Web網站應用程式使用的新網站對話方塊。將項目命名為AJAXWebSite。您會發現(如下圖所示圖1),有沒有一個ASP.NET項目,建立一個ASP.NET AJAX應用程式,因為每個ASP.NET應用程式,您現在建立獨立的類型是AJAX的。
圖1
在建立應用程式,您將會看到了現在的一個標準的Web網站項目。但是,您可能會注意到在Web.config檔案是新的ASP.NET 3.5一些額外的設定。在Web.config檔案的頂端,有新的配置,註冊部分,負責處理與AJAX。本節的web.config中提出清單1