2018年10月13日 星期六

visual studio MVC 的javascript前端編輯,如何Debug

試了一下在javascript前端的.cshtml副檔中插入debug的中斷點
cshtml中插入debug的中斷點
cshtml中插入debug的中斷點

按下F5進行偵錯,確沒有效果。

查詢網路上的資料後,必須寫debugger指令讓網頁執行時進入中斷點
寫debugger指令讓網頁執行時進入中斷點

寫debugger指令讓網頁執行時進入中斷點

寫入debugger指令後,即可正常執行中斷,並可以查看物件資訊
正常執行中斷,並可以查看物件資訊
可Debug看前端物件






使用NHtmlUnit瀏覽某些網站會出現java.net.SocketException: 'Connection reset'錯誤訊息的問題

  2年前曾經有做過一個C# MVC專案要去單字網站爬下想背的單字來做資料庫,最近心血來潮也想重啟專案來使用(準備考TOEIC)。

發現之前專案(NHtmlUnit)可以爬的網頁竟然會彈跳java.net.SocketException: 'Connection reset',這問題讓我想不出所以然。

java.net.SocketException: 'Connection reset'
java.net.SocketException: 'Connection reset'


搜尋了這篇(文章)討論區的結果後發現,可能的問題是出在NHtmlUnit預設沒有設定TLS的版本

NHtmlUnit.WebClient client = new NHtmlUnit.WebClient(BrowserVersion.CHROME);
client.Options.AppletEnabled = true;
client.Options.RedirectEnabled = true;
client.Options.JavaScriptEnabled = true;
client.Options.ActiveXNative = true;
client.Options.CssEnabled = true;
client.Options.ThrowExceptionOnScriptError = false;
client.Options.ThrowExceptionOnFailingStatusCode = false;
client.WaitForBackgroundJavaScript(1000);
client.Options.Timeout = 100000;
HtmlPage page = client.GetHtmlPage("https://dictionary.cambridge.org/");

因此在程式碼中,加入TLS協定,就可以正常爬站了。

client.Options.SSLClientProtocols = new String[] { "TLSv1.2", "TLSv1.1" };

完整的程式碼如下:
NHtmlUnit.WebClient client = new NHtmlUnit.WebClient(BrowserVersion.CHROME);
client.Options.AppletEnabled = true;
client.Options.RedirectEnabled = true;
client.Options.JavaScriptEnabled = true;
client.Options.ActiveXNative = true;
client.Options.CssEnabled = true;
client.Options.ThrowExceptionOnScriptError = false;
client.Options.ThrowExceptionOnFailingStatusCode = false;
client.Options.SSLClientProtocols = new String[] { "TLSv1.2", "TLSv1.1" };
client.WaitForBackgroundJavaScript(1000);
client.Options.Timeout = 100000;
HtmlPage page = client.GetHtmlPage("https://dictionary.cambridge.org/");

Chrome 瀏覽器查看SSL/TLS方法

今天遇到爬蟲(crawler )程式在解析網頁彈跳錯誤的問題,在懷疑是不是TLS的版本問題,
又遇到Chrome到底要怎麼知道SSL/TLS版本要在那裡看的問題?
1. 首先呢,必須要到目標網站,以https://dictionary.cambridge.org/為例
2. Chrome瀏覽器要打開開發者模式(F12)
3. 查看Security的頁籤,就可以看到TLS的版本認証資訊了
Security的頁籤,可以看到加密版本資訊
Security的頁籤,可以看到加密版本資訊



2015年8月16日 星期日

Interface & Implements

interface(介面)
  介面於程式中,如同學生的情緒與期末成績單關係,當學生的情緒與期末成績有連動關係,彼此相互影響,但又不一定會有相同的反應時,可以使用實作介面來模擬。
如成績不及格被當,學生情緒可能失望。反之,也可能開心,這種二個事件可以不太有關聯(如果對一個成績如何不在乎的學生就無關緊要),也可以有關聯效應的比喻。在實務程式中可能會依二種類別做處理,這二個類別的交互影響關係,可實作成為一個interface(介面)。

implements(實作)

2015年8月15日 星期六

實作介面(Interface)及類別(Class)思維速記法

  以往,在物介導向教學書藉中,都會提到介面(Interface)的觀念,雖然已有許多的開發經驗,但實在是使用介面(Interface)的設計很少,幾乎沒使用過。今天閱讀了幾本晝,約略又提到了實作介面(Interface)的方法及觀念,但仍是很令我強記在心,因為不夠生活化。

  因此,我想了一個例子來幫助我自己強記這個介面(Interface)的設計用法,非常方便的可以用生活中我們所遇到的事物,就是蓋房子所必需使用的水管管線,水管的管線口徑也是需要計算依據人口使用數量來決定口徑的大小(Link),使用人口越多,口徑就要越大;相同的,人口越少,所需的口徑也相同小。但上述的原理,以類型來說大樓及平房,就是一個例子。

  同樣地,根據建築物的類型不同,但都需要使用水管,延伸到系統設計的角度上來說,一個系統平台的規劃,也會有固定會使用到的方法(Method),就如同水管一樣,建築物一定需要有水管。這些必要的規格,意指系統規劃中必要的方法(Method),會依據系統類型的不同(如大樓、公寓、平房等等),都會讓方法(Method)的計算方式有了些變化,就如同水管大小的計算方式,可能有所不同,這樣的思維就可以讓我們強記了介面(Interface)的使用邏輯。

  我們可以在系統規劃的初期,模擬列示出必要的方法(Method),在將此方法(Method)粹取成一個介面(Interface)設計,讓類別(Class)依據自己的類型不同,實作介面(Interface)及方法(Method)。如同上述所舉的例子:我們可以在蓋房子的初期,模擬列示出必要的項目(水管...),在將此項目(水管...)粹取成一個共同觀念(蓋房之類大家共同要有的觀念),讓房子可以依據自己的類型不同,實作共同觀念及項目(水管...)。以這樣的例子,確實讓我可以強記介面的使用情境....
很久沒有回顧舊案件的程式了,

今天安裝了新版的Eclipse,看著操作文件(Link),但發現找不到CVS Repository,
新版的都變成Git了.....

找了一段時間,發現原來要另外額外安裝....
好吧~只好記錄一下了,以免未來又忘了..

開啟Eclipse市場,尋找CVS套件
開啟Eclipse市集,準備找尋CVS套件
開啟Eclipse市場,尋找CVS套件

選擇此次要安裝的CVS整合套件
選擇此次要安裝的CVS整合套件
選擇此次要安裝的CVS整合套件