Posts

Showing posts from 2016

[Visual Studio] 使用Team Service進行系統開發心得整理

Image
前言:
身為C#的Code guy仆街當然會有自己私下開發的專案,遇到Versioning Control或者Scrum的時候就比較麻煩。用Github不是不好,不過有些時候專案只是想一個人使用就不行。最近開始試用Microsoft 的Team foundation Service,直接把經驗記錄下來當個筆記。

安裝:


1. 在Team Service建立專案:


首先建立一個Team Service Location (還沒申請的話可以按這裡申請)


在Team Service頁面(https://xxxxx.visualstudio.com)中「Recent Projects & teams」中選擇「New」,彈出視窗後填寫資料,然後按「Create project」。



生成專案需要一點時間,完了以後會出現以下畫面,按「Navigate to project」



順利產生專案



2. 連接Visual Studio

小弟使用的是Visual Studio 2015。先打開VS,按右邊的「Team Explorer」,在「Manage Connections」中選擇「Connect to Team Project」


按下右邊的「Servers」,選擇「Add」,加入Team Service的https路徑


選擇你剛新增的專案,按「Connect」就完成囉
3. Push/Pull

[ASP.NET MVC] Rich Text Editor 安裝心得 (以TinyMce為例)

Image
前言:

最近小弟幫公司開發的系統內需要撰寫郵件及發送,所以要找一個Rich Text Editor放在系統內。網路上找到TinyMCE口碑不錯,決定使用它。還蠻夠隨便
TinyMCE官網:https://www.tinymce.com/


安裝:
先用Visual Studio打開專案,選擇Tools➜Nuget Package Manager➜ Manage NuGet Packages for Solution


在「Browse」中輸入「TinyMCE」按「Search」找到以後在右邊選擇你的Project後按「Install」。
(小弟試過安裝的時候Visual Studio會像當掉一樣持續幾分鐘沒反應,不用最後還是成功嚇死寶寶了)

安裝成功後在「Solution Explorer」中找到「Scripts」資料夾,底下應該會出現一個叫「tinymce」的子資料夾



TinyMCE好處是Model或者ViewModel變化不大。開啟要加入TinyMCE的Model或者VIewModel,把需要變成TinyMCE的欄位加入 [AllowHtml] 的Data Annotations。

再來找出要加入TinyMCE的View,在Section Scripts中加入相對應Reference。
然後在View加入以下Javascript (如果要客制化Editor的話官網有文件可以查) <script type="text/javascript"> // Initialize your tinyMCE Editor with your preferred options tinyMCE.init({ // General options mode: "textareas", theme: "modern", // Theme options theme_advanced_buttons1: "save,newdocument,|,bold,italic,underline,strikethrough,…

[SQL Server] 解決不斷出現 ASYNC_NETWORK_IO 導致TimeOut的問題

Image
病徵:

公司在VMware上的SQL Server最近不斷出現大量的ASYNC_NETWORK_IO錯誤,而且有時候會出現TimeOut的情況。檢查RAM, CPU, IO皆正常沒有異常的情況。

研究:
拜了一下Google大神,如果硬體自我感覺良好,不外乎也是幾個原因[1][2]:

回傳過大的查詢結果。Database網路卡設定有問題,回傳速度很慢。Client端跟Database 端的網路連結出現問題。Linked Server等待遠端資料表的回應。第一個原因可以在Activity monitor裡面Process這一欄找一下出現Error的Process SQL Statement是什麼。小弟發現出現ASYNC_NETWORK_IO的SQL查詢100%來自一個資料表,這個資料表有60萬筆的數據、沒有Primary Key、而且每次回傳也要做Ordering,使用CPU是Top Ten,不過還沒嚴重到影響資料庫的效能。
發現問題的時候打開了效能檢示器,傳輸的量沒有達到網路卡的最大值。跟infra team討論後VMware的實體網路卡也是正常,暫時排除這個可能。
隨機取樣一些出現這個情況的user打電話問看看,沒有發現網路不正常的情況,暫時排除這個可能。
這個資料表不是Linked Server,所以也排除掉。暫時得出的結論
直像告訴我好像是第一個原因比較像。
解決方法 由於還不能100%保證病因,所以今天小弟做了兩件事: 跟programmer溝通一下,發現這些查詢是Delphi 內部的 Data engine產生,所以programmer無法刪除這種回傳全部Data還要Ordering的百痴沒用查詢,也由於這個資料表是公司內部很多系統的log table,因此I/O很高,也無法減少存取次數。
所以最後我把資料表的資料量盡量壓縮,縮成只儲存一個星期,每天把剩下的自動備份到另一個資料表去。看看情況有沒有改善。
加入Cluster Index,不能改SQL至少也讓它快一些。暫時還不太清楚是否有效,過一陣子小弟會在這裡再更新。


reference:
[1] Troubleshooting ASYNC_NETWORK_IO, NETWORKIO
https://blogs.msdn.microsoft.com/joesack/2009/01/08/troubleshooting-asy…

[開箱] Dell P2415Q 4K螢幕開箱

Image
背景: 小弟的22吋IPS 螢幕已經用了六年,右下角出現一團暗暗的不夠光的情況,平常使用還可以,PS的話就很明顯了,剛好我的顯卡是R9 270X有DisplayPort可以支援4K,剛好想換台看文字比較舒服的,又剛好發了薪水交完房貸父母家用上繳女皇後驚見還剩下一點點,好吧說穿了根本就是一堆有的沒的藉口,就打算買一台4K螢幕。小弟房間跟預算有點小,放不下也不夠錢買27吋的4K螢幕。小弟的經驗對DELL筆電的耐用程度有點保留,不過就PC螢幕來說,每台Dell螢幕至少能撐6年,所以這次還是選擇Hell Dell。在網站爬文,跟Sales討論,最後用3300HKD價格買了P2415Q
優點: 小。小弟家貧,在寸金尺土的港澳地區容不下27吋的螢幕。相對便宜。擴充性不錯,1隻HDMI,1 in 1 out DisplayPort,還有N個USB & 1個SS USB。漏光不嚴重。
缺點: 不是LED背版而是LED側光技術,對色彩有嚴格要求的advance used可能有點失望,不過普通老百姓例如我自己不是很感覺到出來。外觀不是跟同期的Dell一樣使用薄邊框,比較老土。支架還是未能乎合一米八幾身高的人的人體工學需求。

研究: 被研究者



被研究者的內觀


有附送一條DP線,不過要注意的是小mini DP


腳架部分使用標準規格,無論是我用了六年的舊螢幕,女皇前年的Full HD螢幕,還是現在的4K,腳架統統可以交換來使用。



面板是防眩光設計,對於我們這種每天寫Code的人是必需的,外觀沒有薄邊框的設計換了螢幕女皇也不容易發現實在是藏於民居攻擊力大的好武器啊


面板本身不是主打最薄,所以不要希望像電視一樣只有一張紙的厚度,不過也大概只有一點幾個厘米,可以接受啦。


擴充性不錯,可以把我的無線滑鼠USB speaker藍牙鍵盤XBox搖桿不是神秘的搖桿驅動程式統統接上去。


完成品。



同場加映 (Dell掛螢幕喇叭)
音質當然比不上衛星喇叭,不過由於空間太小小弟又有點高經常打到腳下的重低音Case,又由於自己對音效沒太大要求好像對什麼東西也沒要求,所以不小心手殘用HKD180買了它回來。

大小聲旋鈕有小高級的質感

用USB取電,音質比想像中好(當然不要跟Bose那種等級比),開很大聲也不會破音。

左側照一張


[SQL Server] 在AG下如何更快匯入資料和Rebuild Index? (使用Import/Export Wizard)

Image
背景: 公司的測試環境需要匯入Production資料庫的所有資料,然後必須Rebuild Index。資料庫規模約150GB;匯入測試環境要求在兩個小時內完成。測試環境使用SQL Server 2012技術,Primary跟Secondary硬體效能上有明顯落差( Secondary差很多 )。之前經驗在測試環境的Primary中使用Import/Export wizard 匯入大量資料發現很慢。測試環境Primary跟Secondary之間使用Sync Commit Mode。

估計匯入資料很慢可能的原因:
發現每次進行資料匯入時,Secondary的I/O出現破表的情況。Rebuild Index時也同樣出現此情況。最大原因是因為選攞了Sync Commit Mode,由於兩台硬體速度上的差異,出現大量HADR_SYNC_COMMIT 拖慢進度。

小弟之解決方案:
先把需要匯入資料的測試環境資料庫從AG中移除。在Primary中使用Import/Export Wizard匯入資料,會明顯發現速度快了接近200%。匯入完畢以後, 在Primary中Rebuild Index。在Primary中進行full backup。把資料庫重新加進AG。

總結:
利用先把資料庫從AG中移除再加回去這種方式匯入資料會比之前速度快了一倍多,對於缺乏預算硬體又不好的測試環境效果比較明顯,後來小弟在Production用同樣方法,由於Production Primary跟Secondary兩台機器也是開外掛的級數,加上Fiber加持所以匯入速度沒有很充分的理據需要這樣弄,畢竟年關將近,Production的設定還是少碰為妙....




[SQL Server] 在Availability Group中同步兩台Replicas中的SQL Logins,Linked Servers

Image
問題:
公司的SQL Server導入了AlwaysOn 技術,當failover發生的時候出現無法登入SQL Server的情況。

研究:
跟Microsoft了解以後AlwaysOn技術Primary跟Secondary兩台伺服器的Database Objects是完全獨立而且不相通的,那就是說無論Logins、 Linked Server、 Agent Jobs也要在兩台伺服器分別建兩份。

解決方法:

Logins:使用Domain account:
可直接解決問題。不過歷史的問題小弟不能選擇這個方案(灑花)使用Contained Database:
原理就是把Database的所有相關東西打包變成一個Object,就不會發生Data同步,Database Object不同步的問題,可是很SAD,我也不能用這個方法。手動同步兩台伺服器的Logins:
由於每一個 Login 有一組獨一無二的SID,所以就算在Secondary建一個使用者名稱跟密碼也一模一樣的Login,當failover發生時也會出現無法登入的情況。要手動同步兩邊的Login可以看Microsoft的官方教學。重點是同步兩台伺服器的Login SID,UserMapping部分不需要手動同步。
不過萬一Primary的Login更改了密碼,就無能為力需要利用以上方法再同步一次了。(哀)Linked Server:很抱歉,你需要手動在Primary那邊的Linked Server一個一個的產生SQL,然後放回Secondary,而且每次增加Linked Server也要這樣做。結論: 顯然AlwaysOn技術集中關注資料的部分,Server Object,包括SQL Logins對於Primary跟Secondary兩台伺服器來說是完全獨立的東西需要分開來建立跟維護,想導入AlwaysOn技術的大大需要注意,不過可分開獨立Storage存放兩份data是小弟選擇它的原因之一。

同場加映:
如何找出已經失效或者沒有連結任何資料庫的使用者帳號?
參考這條SQL