2013年12月16日 星期一

不要用 jQuery Template

今天有看到公司的「合作夥伴」在使用 jQuery Template。
這是2010年微軟向 jQuery 提交的建議,但很快地就被否決了。

可在 這裡看到jQuery template 的歷史
微軟的 CDN 也一直停留在 beta 1好幾年了

所以,不要再用它了。

如果有相同的需求 ,請使用相對活著的

總之,不要用已經是過去式的東西。

2013年11月1日 星期五

「TFS 上取不到新版的程式」的解決方式

問題:

你好,有一個問題請你參詳一下,我在這邊的確是有看到一個現象,就是TFS的版本的確是最新的。但Local的版本是舊的,取得最新版還是舊的程式,請問這可能是甚麼原因?
如下圖

SNAGHTML39b195a

原因

取得新版本後,TFS Server 會記錄您已經取得對應的版本號(如 8172),但因故本機的檔案因異動而並不是最新的。
例如在檔案總管刪除檔案,此時 TFS 並不知道您手動刪除。

解決方式

強迫取得最新版本,即使本機已有最新版本也要以伺服器版本覆蓋本機檔案。
下圖以 VS2013 為例。在指定的目錄上,按右鍵,取得「指定的版本」

SNAGHTML39d1932

勾選選項「覆寫本機可寫但未簽出的檔案」,「即使與伺服器版本相同,也要覆蓋本機檔案」(<== 我自己翻的,正確的中文請自行比對)

SNAGHTML39db1a9

2013年10月18日 星期五

ASP.NET MVC 5 預設會設定 X-Frame-Options 為 SAMEORIGIN

如標題。

X-Frame-Options 是一個新的瀏覽器特色。請參考http://tools.ietf.org/html/draft-ietf-websec-x-frame-options-10

MVC 5 在 final 時,看來加上了這個預設選項。因此使用 F12 開發工具時,可以看到 MVC 5的網頁會多出 X-Frame-Options: 的 Header

image

VS2013 RC 時澴沒有這個事情呢。

而且,目前(2013-10-18) 網路上可參考的 ASP.NET MVC 5 文件並沒有說到這個事情。

偏偏,我就有這個需求,要讓我的網頁鑲在別人的網頁中。不得已,只好在 Global.axsx.cs 內加上這一段,解決這個困擾。

private void Application_EndRequest()
{
    Response.Headers.Remove("X-Frame-Options");
    Response.Headers["X-Frame-Options"] = "ALLOW-FROM http://aaa.test.domain/Main/";
}

其中,aaa.test.domain 就是我的另一個開發機器啦。

2014-02-06 Update:

後來找到更簡單的方法:

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

2013年9月4日 星期三

AnyCPU, x86, x64, ARM

今天終於稍微了解了 AnyCPU的用意了。特地記錄下來,避免記憶體 reset 的老問題。

Visual Studio.NET 2003

在這個年代之前,並沒有64位元的 CPU(應該說不普及)。此時 Visual Studio 並不提供 CPU 相關的選項。回想一下,這是多麼美好的事。

Visual Studio 2005,2008

也才再過個兩年,64 位元的 CPU 開始在伺服器上普遍了起來。到了2007年前後,連桌上電腦也愈來愈普及。為了面對問題,微軟 Visual Studio 2005 開始有了 AnyCPU 的平台目標選項。

image

那到底使用 AnyCPU 的 assembly 會如何的被地行呢?此時的決策是非常簡單,而且看來也十分有效:

當 assembly 使用的是 AnyCPU 平台目標時,且

  • 執行在 32 位元Windows作業系統時,會以 32 位元的方式執行,IL 會被編譯成 x86 的 native code。
  • 執行在 64 位元Windows作業系統時,會以 64 位元的方式執行,IL 會被編譯成 x64 的 native code。

問題

由於目前的64位元電腦 (Windows) 都是32位元相容的,因此一個 assembly 在64位元的電腦只能以 64 位元的方式來執行,恐怕不妙。我常碰到的例子是 Oracle Client。

當我們的存取 Oracle 資料庫的程式以 AnyCPU 編譯後,執行在 64 位元的電腦,會以 64 位元的方式來執行。但如果安裝的 Oracle Client 是32位元的呢?32 位元的 Oracle Client 載入 64 位元的程式,就會拋出 System.BadImageFormatException 例外。

Visual Studio 2010

上面的問題持續了3~4年,到底 32 位元與 64位元應用程式好壞也漸漸地有了較明確的選擇。

除非明確地需要大量的記憶體,或者需要長整數,否則32位元就已經足夠。64位元的效能還會有一些些下降。

因此,在 Visual Studio 2010,建立新專案時,Target Platform(平台目標) 預設就是 x86。
但是,AnyCPU 的assembly 執行方式仍然沒有變。

Visual Studio 2012

到了 Visual Studio 2012又有變化。這個時間點,正巧 ARM CPU (也是32bits)也要進來,因此 32bit === x86 時代正式終結。

Visual Studio 2012 建立新專案後的預設選項為 AnyCPU32BitPreferred。
注意一下, Prefer 32-bit 被 disable 掉,是指不能修改,但在.NET Framework 4.5 就可以設定了!

image

當 assembly 使用的是 AnyCPU 平台目標時,且

  • 執行在 32 位元Windows作業系統時,會以 32 位元的方式執行,IL 會被編譯成 x86 的 native code。
  • 執行在 64 位元Windows作業系統時,會以 64 位元的方式執行,IL 會被編譯成 x64 的 native code。
  • 執行在 ARM Windows作業系統時,會以 32 位元的方式執行,IL 會被編譯成 ARM 的 native code。

因此,Perfer 32-bit 可以說是特地為 ARM 設計的。

結論

AnyCPU 從一開始,到目前其定義仍然沒有變動過。也就是「碰到ppp的作業系統,就執行成ppp的程式」,其中 ppp 可以是 32bit, 64bit, ARM。

改變的是「建立專案時的預設選項」。

也因此,上述 Oracle Client 的問題還是很可能會發生。建議儘可能地明確地指定平台目標(Target Platform),以減少不確定性。

2013年6月14日 星期五

System.Transactions 裡的 Timeouts 與 Azure 中的設定

在進行交易的過程中,主要有三個 Timeout 時間。而真正的可交易時間,是取下面三者的最小值。

Command.CommandTimeout

這個 timeout 是最基本的 Timeout 時間,預設為 30 秒。這個設定是執行sql指令的可執行時間。

TransactionScope 的Timeout

在執行交易時,TransactionScope 也有一個 Timeout 時間。這個時間是由 TransactionScope 的建構子中的參數來指定的。預設值是60秒,可由 TransactionManager.DefaultTimeout 取得設定值。

TransactionManager 的  MaximumTimeout

TransactionManager 裡頭也有一個 timeout。這個 timeout 時間是是全機的交易管理員的最大可交易的時間。在 .NET 2.0 預設可由子層的 config 或程式來覆寫。但在 .NET 4.0,就不能被子層來覆寫了,如果需要修改,則必須到 %windir%\Microsoft.NET\Framework\v4.0.30319\Config\machine.config (32 位元),或 %windir%\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 中以管理員的權限進行修改。

<system.transactions>
    <machineSettings maxTimeout="02:00:00" />
</system.transactions>

Azure 中設定

微軟的 Windows Azure Cloud Service 環境中,當然我們可以使用遠端桌面的方式,連線到每個伺服器進行上述的修改。但是一旦重新掛載作業系統後,這些人工設定又全部跑掉必須重設,非常不人道。幸好部署時有 Start Task 的機制, 可以執行 cmd 的指令。cmd 指令如下

windir%\system32\inetsrv\appcmd set config /commit:MACHINE /clr:4 -section:machineSettings -maxTimeout:02:00:00

此指令必須寫成 .cmd 檔,放在 WebRole 或 WorkerRole 的 project 內,以 content/Always copy to Output Directory 的型式加入專案

image   image

接著,在Azure 專案的 ServiceDefinition.csdef 中加上 Startup Task 的指令

<Startup>
  <Task commandLine="timeout.cmd" executionContext="elevated" taskType="simple" />
</Startup>

如下圖

image

其中 executeContext=”elevated” 指的是必須以管理員的權限進行修改

結論

TransactionScope 的 Timeout 設定有點複雜,除了.NET 版本,32/64 版本,%windir%\system32\ 與 %windir%\SysWOW64\ 的不同外,現在又增加了雲端的設定。真是不太容易。

參考

  1. http://stackoverflow.com/questions/1348191/default-transaction-timeout
  2. https://github.com/Aaronontheweb/azure-webroleperformance-scripts
  3. http://blogs.inkeysolutions.com/2012/01/managing-timeouts-while-using.html

2013年6月13日 星期四

jQuery 取得 checkbox 至少有一個選取

客戶的需求中,「當使用者至少要選取一筆資料才能進行下一個動作」。常見的 UI 設計,當然是使用 checkbox。

而我的 case,是資料有一萬多筆,此時整個網頁非常痴肥而難以接受。問題是,客戶就是要這樣的網頁,客戶拒絕分頁

jQuery length

問題來了,此時我使用了如下的 jQuery 語法查詢是否有選取一個 checkbox

var isChecked = $('input[name=chk]:checked').length > 0;

相當然爾,網頁就硬生生當在那裡,動也不能動。效能不好

jQuery is

根據我「多年」「 .NET」的經驗,使用 length 等同於計算所有被勾選的項目,然後再計算出總筆數,這樣的效能當然不好啊。於是趕快找一找 jQuery document,很快的就發現了 jQuery is 非常符合我的需求。於是馬上改了程式

   1: var isChecked = $('input[name=chk]')is(':checked');

滿心期待效能飛快,但「更慢了」。怎麼會…

效能比較

找到一個測試,也證實了這樣的結果。怎麼會這樣…

另外,又找了一個 checkboxtests,這次加入了自己寫的 .each() 來測試是否會比較快?結論是:不會。

心得

到了 javascript 的世界,以前許多經驗值就必須大打折扣了。

2013年6月3日 星期一

將 Visual Studio 打包好的 package 佈署到 IIS 6

之前的許多經驗,都是把打包好的 package 佈署到 IIS 7 以上的版本。此中又依據權限,再分成管理員權限的佈署及非管理員權限的佈署方式

這次,我被要求佈署到 IIS 6 上了。

IIS 6

我之前的態度,是一味地以「Windows Server 2003 大舊了,現在沒有人在用了」來推託一翻。雖然言之有理,但其是一大部份原因是:懶!
然而,債還是要還的。客戶出錢,我們做人家小的還是要出力,即使入不敷出。

IIS 6 與之後的 IIS 7有個根本上的不同,是IIS 7 對 metabase 的全面改版,並且 IIS 7 可支援非管理員來管理 IIS。在 Visual Studio 發行的結果,是對 Web Deploy 是再包裝過精簡後的工具,處理的對象是  IIS 7 的 metabase。對於 IIS 6,只能自行尋找文件。

如果直接使用 Visual Studio 所產出的 cmd 指令執行到 IIS 6,會出現如下的錯誤訊息。

SNAGHTML243900aa

使用 MSDeployAgentService

在同一個目錄中,可以找到 Visual Studio 為我們寫好的 readme 檔案,其實裡面已經寫的很清楚了,是可以使用這些工具部署到 IIS 6的。

The service URL can also be in the following format:
        http://<DestinationServer>/MSDeployAgentService 
    This format requires administrative rights on the destination server, and it requires that Web Deploy Remote Service (MsDepSvc) be installed on the destination server. IIS 7 does not have to be installed on the destination server.

也就是說, 我們必須使用 http://serverName/MSDeployAgentService 使用管理員權限來進行部署。

改一下指令,如下

package.cmd /T /M:http://localhost/MSDeploymentService

結果不如人願,非常類似的錯誤訊息還是打擊了我一下。

SNAGHTML2429b1de

解法

注意到了問題了嗎?另一個重點在於 Metabase 路徑,新舊版本不一樣。所以,我偷偷修改了SetParameters.xml,由原來的

<setParameter name="IIS Web Application Name" value="Default Web Site/myApp" />

改成

<setParameter name="IIS Web Application Name" value="/lm/w3svc/1/ROOT/myApp" />

再執行相同的指令

package.cmd /T /M:http://localhost/MSDeploymentService

就完成了我的需求了。

其實,如果是在本機的話,指定機器的 /M 指令也不用加了。只需要

package.cmd /T 即可

進階

由於使用了 MSDeploymentService,就必須使用管理員的權限。既然是管理員權限,在別台機器(只需要安裝 Web Deploy Tool)當然也可以下指令,不必遠端桌面登入到該伺服器。

package.cmd /Y /M:http://serverIpOrHostName/msdeployagentService /U:administrator /P:Password

PS: 對部署來說,這個權限要求實在大到不行,對於無限上綱的資訊安全管理說,就是很好發揮的題材。誰叫你還要用 Windows Server 2003 呢?

2013年5月10日 星期五

IE8 與 Knockout js

客戶抱怨網頁呈現不正確。資料出不來。

看了一下,客戶使用的是 IE8 on Windows 7。天啊!算很新的系統,但就是不肯更新 IE 版本。

問題在 Knockoutjs

我用IE 10 按F12 開發者工具,檢查一下錯誤的 javascript

image

SCRIPT5022: Unable to parse bindings.
Message: SyntaxError: Expected identifier, string or number;
Bindings value: text: CompanyName, attr: { for: 'c' + TaxNo()}

binding 的 html 如下

<label data-bind="attr:{for: 'r' + ReportHeaderId()}, text: ReportName"></label>

原因

舊版本IE 會將 for: 當成 javascript 的保留字,想把它當成 javascript 來跑,因而錯誤。

解法

加上單引號,變成字串即可

<label data-bind="attr:{'for': 'r' + ReportHeaderId()}, text: ReportName"></label>

2013年5月8日 星期三

There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference

問題

使用Visual Studio 2012 建置專案時,出現了如下的錯誤

Warning    6    There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "msshrtmi, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=AMD64", "AMD64". This mismatch may cause runtime failures. Please consider changing the targeted processor architecture of your project through the Configuration Manager so as to align the processor architectures between your project and references, or take a dependency on references with a processor architecture that matches the targeted processor architecture of your project.   

原因

我在這個專案使用了 Windows Azure的雲端 assembly msshrtmi,並且指定了 x64的版本。但在建置的設定上,卻指定為 Any CPU。雖然編譯會過,但一定要部署到 x64 的作業系統才能正常運作。

在 .NET 4.5 後 ,編譯會多出這樣的警告。

解決

一直出現這樣的警告實在很惱人。把該專案的 Platform target 設成 x64 就解決了這個問題

image

解決 TFS Build 時 出現 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (983) 的警告

問題

當我在 Team Foundation Server 上佇列一個新的組建後,組鍵的結果常常跑出一堆的警告。如下

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (983): The reference assemblies for framework ".NETFramework,Version=v4.5" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend.

不處理,好像也沒什麼事。只是,一直覺得怪怪的。

解法

原來,雖然我在 Build Server 上有安裝了 .NET Framework V4.5, 可以順利的建置,仍然會出現上述的警告。在Build Server 上安裝  Windows Software Development Kit (SDK) for Windows 8 後,就不會再出現這些惱人的警告了。

2013年3月15日 星期五

WCF Data Services 使用 JSON 格式

好久沒有使用 WCF Data Services 了。

這次 Demo 時,意外發現 WCF Data Services 在 5.3 時(其實更早)已經內建支援 JSON 格式,只是瀏覽器上不太容易試出來。下面,我們就一步步寫出來吧!

STEP1 資料

找一個資料庫吧。我使用 VS2012,隨便開一個 SQL Server (不能是 LocalDB,否則掛在 IIS 上會有問題)。

CREATE TABLE [dbo].[Users](
    [EmpNo] [char](8) NOT NULL,
    [EmpName] [nvarchar](10) NOT NULL,
    [Password] [varchar](64) NOT NULL,
 CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED 
(
    [EmpNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

寫入一兩筆料吧。

image

STEP2 EDMX

建立一個Empty ASP.NET application專案(使用 IIS,為了後面Fiddler 能錄到 json 格式)後,再建立一個  ado.net entity model,並且加入剛剛的 Table 作為測試的 Entity Set

image  image

並且,IIS 對應的 Application Pool 先改用 LocalSystem

SNAGHTML56e33f7

 

STEP3 建立 Data Service

建立一個名為 DemoWcfDataService.svc,並且修改對應的程式如下

SNAGHTML548f7d1

public class DemoWcfDataService : DataService<DemoEntities>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
    }
}

執行

http://localhost/DS5Service/DemoWcfDataService.svc/Users 

果然是 xml 格式

image

但如果執行 http://localhost/DS5Service/DemoWcfDataService.svc/Users/?$format=json,則會回傳 400 的 http status code,意思就是不支援。

image

STEP4 更新成 DS 5.3

在專案上使用 NuGet,更新成 DS 5.3

SNAGHTML5559799

再執行一下相同的 URL, 就得到了 JSON格式的資料了

image

image

嗯!感覺真好。

STEP5 Client Side

那 Client side 如何取得 json 的資料呢?建立一個 Console Application ,並且 Add Service Reference,如下

SNAGHTML56307aa

程式如下

static void Main(string[] args)
{
    var context = new DemoEntities(new Uri("http://myhost/DS5Service/DemoWcfDataService.svc"));
    var users = context.Users;
    foreach (var user in users)
    Console.WriteLine(user.EmpName);
}

程式可正常執行。但使用的並不是JSON 格式

STEP6 Client 更新成 DS 5.3

SNAGHTML57d15ae

接下來,要將 System.Data.Services.Client 移除,因為這已經被 Microsoft.Data.Services.Client 取代了

image

增加下面兩行程式,說明我們要使用 JSON 格式

context.Format.LoadServiceModel();
            context.Format.UseJson();

image

執行結果竟是:System.NullReferenceException: Object reference not set to an instance of an object.

image

STEP7 安裝 DS Tools 5.3

找到 WCF Data Services 5.3.0 RTM Tools Installer, 先關掉 Visual Studio 2012 後安裝 WcfDataServices.exe。

再打開solution,  刪除舊的 Service Reference,重新執行 STEP5 後,重新執行程式。就正常了 。

image

結論

使用 Fiddler 錄一下 Request / Response,使用JSON 格式的資料遠小於 xml 格式 (253 vs. 2044) 真的省好多哦!

image

2013年2月27日 星期三

假 Facebook email 攻擊使用者電腦的 java 的漏泂

今天早上我收到兩封信,其中一封假裝有人給了我照片的意見,如下

SNAGHTML18d44ebd

連結指向的網址,當然不是 Facebook 的官網。

我找了一台虛擬機(之後可再還原)試了一下該網址,看了一下 html code.

果然是攻擊時下最夯的 java 漏洞。美指JAVA有安全漏洞籲停用。這可是通過美國政府認證的哦!

即使後來 Oracle 出了 Java 7 Update 11, 但Java更新補漏洞 美國土安全部仍說勿用

clip_image004

反正現在很少網站使用 Java Applet 了,將它關掉或移除吧!

 

ps: 不知道現在最新的 update 15 解決了這個問題沒有?

2013/3/10 : 兩次更新徒勞無功,Java再爆嚴重漏洞 ,所以目前(2013/3/13) 還是不安全

2013年2月19日 星期二

ASP.NET and Web Tools 2012.2 Release

http://www.hanselman.com/blog/ReleasedASPNETAndWebTools20122InContext.aspx

超強!微軟開發工具的更新週期愈來愈快了!

一堆我超想要的功能,一次都出來了。

例如:

Intellisense for Knockout.js bindings!

JsRender Syntax Highlighting

ASP.NET

· OData support in ASP.NET Web API

· SignalR included out of the box and fully supported

· Web Forms now supports Friendly URLs (no more .aspx extension)

· Web Forms supports device (mobile) specific pages, so product.aspx can also have product.mobile.aspx.

· Updated Single Page Application template

· MVC Facebook Application Template

· Web Sites get the same publishing tools as Web Projects

Single Page Application (SPA) templates

使用 Visual Studio 2012 的就快去下載!

Ref.

 http://aspnet.codeplex.com/

ASP.NET and Web Tools 2012.2 Release Notes

http://www.johnpapa.net/knockout-intellisense-in-visual-studio-2012/

http://www.johnpapa.net/inside-the-asp-net-single-page-apps-template/

.NET Framework 也是有技術支援週期的哦!

微軟的產品有支援迥期。.NET Framework 也有,見 http://support.microsoft.com/lifecycle/?c2=548

名詞解譯:

主流支援:會有 Service Pack(增加新功能),Bug fix 等。

延伸支援:是指微軟會負責修正 bug,資安問題等。

過了延伸支援,還使用過了生命週期的產品,代表您因此產生任何損失,請自行負責,一律不關微軟的事。

需要注意的是:

1. .NET Framework 1.0, 1.1, 2.0 請不要再使用了。微軟已經不支援(主流),代表不再支援新的功能,以軟體開發商來說,使用這些舊版的framework來開發新專案是自找麻煩。

2. .NET Framework 3.5 SP1 之後的版本,內建在 Windows 平台,視為 Windows 的元件,故與 Windows 平台生命週期一致

clip_image002

我的建議:新專案,一律使用最新的 Windows 及 .NET Framework 版本。

2013年2月8日 星期五

還在使用 IE6, IE7? 升級一下瀏覽器吧

問題:我們企業還有相當比例在用Windows XP,所以我們還是得用 IE6.

現況

http://gs.statcounter.com/#os-TW-monthly-201201-201301

目前 Windows XP 在台灣還有 40%

http://gs.statcounter.com/#browser_version-TW-monthly-201201-201301

但在瀏覽器的使用上,IE 6, IE 7 的使用比例已經非常少了

因此,如果您還在使用 IE6, IE7 ,建議升級一下瀏覽器吧!(即使還是在用 XP)

結論

現在很少人在用 IE6, IE7 了。請升級吧!

Date

IE 8.0

IE 9.0

Chrome 23.0

Chrome 21.0

Chrome 22.0

Chrome 17.0

Chrome 18.0

Chrome 19.0

Safari iPad

Chrome 20.0

IE 7.0

IE 6.0

Chrome 24.0

Chrome 16.0

Firefox 16.0

Firefox 14.0

Firefox 15.0

Firefox 12.0

Firefox 17.0

Firefox 11.0

Other

2012-01

41.61

13.33

0

0

0

0.15

0.09

0

1.32

0

4.65

4.87

0

18.6

0

0

0

0.03

0

0.01

15.34

2012-02

41.27

14.6

0

0

0

9.99

0.11

0.08

1.3

0

4.2

4.39

0

9.17

0

0

0

0.01

0

0.09

14.79

2012-03

37.39

15.06

0

0

0

22.01

0.34

0.13

1.14

0

3.93

3.7

0

0.35

0

0

0

0.08

0

3.67

12.19

2012-04

37.97

17.1

0

0

0

1.64

19.69

0.11

1.29

0.08

3.48

3.15

0

0.24

0

0.01

0

0.72

0

7.99

6.53

2012-05

37.63

19.68

0

0.04

0

0.64

11.46

9.83

1.47

0.12

1.94

1.69

0

0.21

0

0.01

0

8

0

1.03

6.23

2012-06

34.72

20.57

0

0.14

0

0.56

0.36

21.99

1.77

0.35

1.75

1.74

0

0.18

0.01

0.12

0.01

4.7

0

0.27

10.75

2012-07

32.56

20.78

0

0.1

0.09

0.48

0.27

1.1

1.98

23.72

1.55

1.38

0

0.17

0.01

3.57

0.07

0.73

0

0.21

11.23

2012-08

28.42

20.18

0.04

26.68

0.13

0.48

0.28

0.35

2.25

2.78

1.25

1.11

0

0.17

0.01

8.64

0.48

0.44

0.01

0.16

6.17

2012-09

28.33

20.46

0.14

26.71

2.69

0.28

0.39

0.29

2.38

0.37

1.2

1.06

0

0.15

0.16

1.24

7.77

0.34

0.01

0.13

5.9

2012-10

27.3

20.47

0.09

0.85

29.87

0.23

0.38

0.25

2.41

0.3

1.03

0.98

0.13

0.13

4.37

0.3

4.43

0.32

0.1

0.12

5.93

2012-11

26.29

20.32

21.78

0.64

9.66

0.2

0.37

0.2

2.4

0.24

0.95

1.05

0.12

0.12

8.16

0.19

0.32

0.28

0.48

0.09

6.13

2012-12

25.44

19.98

32.35

0.47

0.52

0.12

0.12

0.08

2.55

0.08

0.89

0.9

0.1

0.06

2.05

0.16

0.21

0.28

6.7

0.09

6.87

2013-01

23.28

19.1

15.89

0.35

0.35

0.11

0.11

0.07

2.59

0.06

0.8

0.81

19.57

0.05

0.43

0.14

0.17

0.25

3.57

0.08

12.23

Share with Facebook