28/01/2014 MCAFEE SECURE 認證的網站

https://www.mcafeesecure.com/RatingVerify?ref=www.HongKongCupid.com

2013年7月11日 星期四

**等待數分鐘仍出現*瀏覽器出現無法顯示網頁**?!)))

**等待數分鐘仍出現*瀏覽器出現無法顯示網頁**?!)

****>按完-->某個按鈕後超過五分鐘才會有回應的網頁))

***( 註: 屬錯誤示範*)改善方式請參考 ( 耗時Stored Procedure的ASP.NET Postback ---
---進度回報寫法 ),在測試台測試OK,移到正式台後,按鈕後五分鐘就會---
----出現無法顯示網頁錯誤?!))

***(

((
  • 使用IE、Chrome、Firefox測試,IE與Firefox都是超過5分鐘---
  • -----就發生無法顯示網頁錯誤,Chrome卻可正常運作。
  • 若由正式台伺服器同一網段的IE測試,則無逾時錯誤問題 )**
  • ***Microsoft Network Monitor---側錄一段IE連正式台重現錯誤的--
    ---封包往來,很快找到原因:                                                           **
    ***



    ***可看到300秒後Server端抛回一個TCP封包,
    紅框中的R為TCP RST Flag,表示伺服器端要求中止連線**) /
    ***在IE接到此封包的時間,則好就是彈出無法顯示網頁的時機,
    一秒不差*)>

    ***把同樣實驗搬回本機VM,等待時間即使拉長到7分鐘,
    也不會有連線中斷狀況*   
    ))資訊最後一點,從正式機同網段以IE測試不會出現逾時。
    推測問題出在Client與正式台間的網路設備,而該負載平衡設備
    曾有強切Oracle Session的前科  >/    ***
    ***
    ASP.NET網站伺服器遷移後,查詢Oracle資料庫時偶爾會--
    --出現"ORA-12571: TNS:封包寫入器失敗(TNS:packet writer failure)",
    但重新整理網頁後則又正常。
    Oracle.DataAccess.Client.OracleException.HandleErrorHelper
    (Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlVarCtx* pOpoSqlVarCtx, Object src, String procedure) at Oracle.DataAccess.Client.OracleCommand.ExecuteReader
    (Boolean requrey, Boolean fillRequest, CommandBehavior behavior)
    at Oracle.DataAccess.Client.OracleCommand.

    經爬文發現此錯誤多屬網路傳輸層次問題,多因網路品質、
    傳輸設備、防火牆... 等因素導致與Oracle伺服器網路連線---
    ---發生中斷引起。而新近ASP.NET伺服器環境的主要變動是--
    --納入負載平衡設備(Load Balancer, NLB)管轄, 
    因此與Oracle資料庫的連線預設也會經過NLB設備,
    有可能是造成問題的原因。
    試著將伺服器移出NLB,問題就消失了;配合網管人員由NLB觀察,
    確認NLB的Session管理機制會導致Oracle連線Session中斷 
    (但SQL Server的連線則不會)。
    將Oracle連線排除在NLB管理範圍外,問題排除     ~!*))    
    ***(((最後的疑問,為什麼Chrome不會出錯 ? 就用Firefox、IE、
    Chrome的封包分析來說明吧  !)  
    **Firefox*
    **
    **IE**
    **
    **Chrome**

    ))***由往來封包可知,IE及Firefox在送出HTTP Request後,
    只會靜待HTTP Response回傳資料,而Chrome不同,
    在等待期間每隔45秒就會丟出一個TCP Keep Alive封包   *)
    ***依我推測,每45秒一次的TCP Keep Alive活動讓網路設備--
    ---認定該連線仍在活動中,免除被強制斷線的命運   *))>

    ***~而修改測試ASP.NET網頁,每一分鐘以Response.Flush()方式_----
    ------抛回一個字元,IE/Firefox便不會在五分鐘時出錯   ))>/

    **至此,謎團都解開~!!**

    **這個案例的建議是: 修改ASP.NET程式****
    ***加入耗時Stored Procedure的ASP.NET Postback進度回報寫法 ***
    ***如此等待過程使用者能持續收到進度回饋改善使用體驗***>
    ****))也不會讓網路設備看不下去誤判閒置而強切連線,是較佳的解法****))

    )>
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     

    2013年7月10日 星期三

    **一個性能測試工具的破解補丁**ANTS Performance Profiler 8 Improve application performance: profile .NET code and database calls**~!**>螞蟻性能分析器提高應用程序的性能:配置文件。NET代碼和數據庫調用>***!

    *一個性能測試的包包補丁*ANTS Performance Profiler 8  Improve application performance: profile .NET code and database calls**
    **螞蟻性能分析器提高應用程序的性能:配置文件.NET代碼和數據庫調用**)))~/

    >*Solve .NET performance problems with ANTS Performance Profiler**))
    **解決.NET用螞蟻性能分析器性能問題**/

    )))前段時間由於項目出了性能上的問題,所以需要對代碼進行優化,
    找出其中最耗時的部分,於是想到了工具ANTS Profiler,這個工具比較強大,
    可以跟踪顯示出每個函數所使用的時間,下載頁面為)                   ~!!!

    *下載**http://www.red-gate.com/products/ants_profiler/index.htm       **這個共享軟件只能使用14天,這麼好的東西怎麼能只用14天就罷休,由於是.net寫的**~
    **Download free trial   *)
    ANTS Performance Profiler is a code profiler 
     for .NET desktop, ASP.NET, and ASP.NET 
    MVC applications. It helps you debug your 
     application quickly by giving you a complete 
     picture of your application's performance.

    Identify performance bottlenecks within minutes  
     and optimize .NET application performance.

    Drill down to slow lines of code with  
     line-level timings.

    View all the contextual information you need,
     from incoming HTTP requests, to .NET code, 
     through to SQL queries, outgoing web --
    --requests and disk access.  
     Quickly understand the relationship between 
     your code and its data access, all in one view.)*

    *性能Profiler是一個NET桌面ASP.NETASP.NET MVC應用--
    --程序代碼分析器它可以幫助你快速調試你的應用程序
    你完全了解應用程序的性能

    確定性能瓶頸並在幾分鐘內優化NET應用程序的性能
    向下鑽取行代碼時序
    •查看所有你需要的上下文信息從傳入HTTP請求。NET代碼

    通過SQL查詢,傳出Web請求和磁盤訪問快速了解你的代碼數據--
    --訪問之間的關係在一個視圖中  ~**
    >**

    Key Features


    **
    Compares and synchronizes SQL Server info schemas
     SQL information Compare professional
     Compares and synchronizes SQL Server info contents
     SQL supply management
     Connect your existing supply system to SQL Server
     SQL professionalmpt Pro
     Write, edit, and explore SQL effortlessly
     SQL Connect
     Ingeniously easy info development in Visual Studio
     SQL Test
     Unit take a look at databases in SQL Server Management Studio
     SQL information Generator
     take a look at information generator for SQL Server databases
     SQL Packager
     Packages a info for readying or update
     SQL Dependency huntsman
     Visualizes SQL Server object dependencies
     SQL Doc
     Document SQL Server databases
     SQL Multi Script Unlimited
     Single-click script execution on multiple servers
     SQL Backup professional
     Compress, firmly write and strengthen backups – quick
     SQL Monitor
     SQL Server performance watching and alerting
     SQL Comparison SDK
     change comparison and synchronization tasks
     SQL Object Level Recovery Native
     Recover info objects from SQL Server backups

    Read more: http://downloadsoftwaredownload.blogspot.com/
    2013/04/red-gate-sql-toolbelt-2013182238-full.html#ixzz2YhJcXwhe        ***
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

    **>如何輸出安裝於電腦內之軟體(*PDF\)全清單*~!!>\



    **>如何輸出安裝於電腦內之軟體(*PDF\)全清單*~!!>\

    **來教大家一個不一定會用到但也很實用的電腦小技巧***是如何輸出電腦內已經安裝的軟體清單,一般都是可以在「新增/移除」裡看到全部的程式列表,不過通常會有需要列出需求都是為了要印出來或是將清單儲到檔案>/*
    **三種簡單的方式,請大家任選一種就可以達成需求囉**>!*
    *>想要輸出清單方法其實很多~有內建的指令也有第三方工具,各位看可以
    依照自己的習慣或需求選擇方法哦!!)
    **~

    方法一:透過 CMD 指令

    最基本的當然就是可以透過 CMD 的指令來完成,先依序輸入下列指令
    WMIC
    product get name,version
    然後就可以直接在畫面上列出,不過這樣跟看控制台裡的程式列表有
    什麼兩樣,所以大部份有這樣需求的朋友應該都是需要輸出到檔案--
    --方便查看,往下來看***>))
    )))***

    ***))那麼我們可以換個指令,一樣先輸入 WMIC 後,再下指令將程式 
    列表輸出到指令的儲存位置)**~
    ))**
    WMIC
    /output:E:\install.txt product get name,version
    比如我儲存到 E 槽下的 install.txt,再到那裡去查看就可以囉))**~
    ***
    *
    ***方法二:透過 PowerShell 指令
    第二個方法其實和第一個差不多,只是使用的工具不同,
    很多人應該不知道 Windows 除了 CMD 可以用之外,
    01
    後來的版本也加入了 PowerShell 可以用,安裝的
     Windows 8 就已經有內建,搜尋就可以看到**)
    ****)
    **然後如果只是單要查看列表,直接輸入就可以**
    (  
    Get-WmiObject -Class Win32_Product | Select-Object -Property Name     *

    (**如果想要輸出到檔案,則改成以下指令即可,就會輸出到指令的儲存位置)))

    **    Get-WmiObject -Class Win32_Product | Select-Object -Property Name > D:\install.txt                                                          **
    )))


    **輸出的內容會長的像這樣***
    )))*
    ***))

    方法三:透過軟體,例如 – CCleaner

    最後一個方法就是透過第三方工具啦~~ CCleaner 就可以辦到,
    其它還有很多款工具都可以,CCleaner 介紹:***相當知名的系統
    清理工具「CCleaner」終於出新版3.0囉,比起先前2.X版本多了 
    一點點的功能,雖然清理系統檔案的軟體那麼多,不過CCleaner 
    一直都能保有高市佔率,主要就是因為穩定、快速、易用, 
    這次在新版上其實和舊本相差不多,除了更穩定,掃描更快速之外,
    還加入了自動判別「登入資訊」,可以保留住我們常用的登入資訊,
    省的清除過後又要輸入一大堆帳號密碼,另外還有「磁碟抹除器」
    可以將磁碟深層的資料清除乾淨,這電腦清道夫可是愈來愈專業了**~!!*

    **在工具→移除程式→右下方「儲存到文字檔」就可以了**)
    ***~
















    ***不過從 CCleaner 匯出的檔案資訊比較多,看起來會比較--
    --雜一點,就看個人需求選擇輸出的方式**
    ***
    **copy...>/*
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     

    2013年7月9日 星期二

    **>Bootstrap/的精要及懶人包包))~!!*

    **>Bootstrap/的精要及懶人包包))~!!**
    **近來紅透半邊天的網頁設計無敵懶人包,
    號稱是網頁攻城獅的救星**只要下載 
    安裝CSS及JS檔,照著範例三兩下--
    --就可以打造出質感頗佳的網頁**
    **說化腐朽為神奇,莫此為甚**)/>.*
    ))**(還沒見識過Bootstrap的朋友,可以看這篇介紹Bootstrap網站上有--
    --頗為詳細的示範與教學**
    **好消息是MVP Bruce已將全站翻成正體中文版,要入手的同學切勿錯過。
    另外Bootstrap網站也有人翻成簡體中文版,例如: Bootstrap中文網)
    在NuGet搜尋一下bootstrap,由下載項目及次數不難想像其熱門程度!
    *.
    ****
    **讓我把Bootstrap當成"緊急又重要需立即學會"項目**
    **未來ASP.NET專案範本將會以Bootstrap為基底 ~!**>
    *>.
  • Visual Studio 2013 Preview - ASP.NET,
  •  MVC 5, Web API 2新功能搶先看
  • [Visual Studio] Visual Studio 2013 ASP.NET
  • 開發預覽
  • 既然Bootstrap跟jQuery一樣被採納成為ASP.NET
    的標準配備*>.**
    **套件組—Kendo UI的相容性,查了文章發現擔心是多餘的,2013.1.319版裡已經有個kendo.bootstrap.min.css,換裝之後,Kendo UI就跟Bootstrap融為一體囉! (見最下方的數字欄位及日期選擇器)
    ))
    )可以放心向Bootstrap邁進^>
    完整程式碼:  
    * (請使用NuGet下載Bootstrap及KendoUIWeb)/*
    **
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Kendo UI + Bootstrap</title>
        <link href="Content/kendo/2013.1.319/kendo.common.min.css" rel="stylesheet" />
        <link href="Content/kendo/2013.1.319/kendo.bootstrap.min.css" rel="stylesheet" />
        <link href="Content/bootstrap.min.css" rel="stylesheet" />
        <script src="Scripts/jquery-1.9.1.min.js"></script>
        <script src="Scripts/bootstrap.min.js"></script>
        <script src="Scripts/kendo/2013.1.319/kendo.web.min.js"></script>
    </head>
    <body>
        <div class="navbar">
            <div class="navbar-inner">
                <div class="container">
                    <!-- brand class is from bootstrap.css -->
                    <a class="brand" href="#">My Brand</a>
                    <div class="nav-collapse">
                        <ul class="nav">
                            <li class="active"><a href="#">Home</a></li>
                            <li class="dropdown">
                                <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                                    Dropdown <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    <li><a href="#">Action 1</a></li>
                                    <li><a href="#">Action 2</a></li>
                                    <li class="divider"></li>
                                    <li class="nav-header">Header</li>
                                    <li><a href="#">Separated action</a></li>
                                </ul>
                            </li>
                        </ul>
                        <form class="navbar-search pull-left">
                            <input type="text" class="search-query" placeholder="Search">
                        </form>
     
                    </div>
                    <!-- /.nav-collapse -->
                </div>
            </div>
            <!-- /navbar-inner -->
        </div>
        <!-- /navbar -->
     
     
        <div style="width: 500px; margin-top: 10px;">
            <table id="kGrid">
                <thead>
                    <tr>
                        <th data-field="make">Car Make</th>
                        <th data-field="model">Car Model</th>
                        <th data-field="year">Year</th>
                        <th data-field="category">Category</th>
                        <th data-field="airconditioner">Air Conditioner</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Volvo</td>
                        <td>S60</td>
                        <td>2010</td>
                        <td>Saloon</td>
                        <td>Yes</td>
                    </tr>
                    <tr>
                        <td>Audi</td>
                        <td>A4</td>
                        <td>2002</td>
                        <td>Saloon</td>
                        <td>Yes</td>
                    </tr>
                    <tr>
                        <td>BMW</td>
                        <td>535d</td>
                        <td>2006</td>
                        <td>Saloon</td>
                        <td>Yes</td>
                    </tr>
                    <tr>
                        <td>BMW</td>
                        <td>320d</td>
                        <td>2006</td>
                        <td>Saloon</td>
                        <td>No</td>
                    </tr>
                </tbody>
            </table>
        </div>
        <div class="btn-group" style="margin: 9px 0;">
            <button class="btn">Left</button>
            <button class="btn">Middle</button>
            <button class="btn">Right</button>
        </div>
        <input type="text" id="kNumText" />
        <input type="text" id="kDatePicker" />
        <script>
            $("#kDatePicker").kendoDatePicker();
            $("#kNumText").kendoNumericTextBox();
            $("#kGrid").kendoGrid({ height: 150 });
        </script>
    </body>
    </html>                                                                  *
     
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

    **))SamartAssembly.net**小測功~混淆之功具下測試**~/>

    ****SamartAssembly.net***SamartAssembly.net  
    ))>* 小測功~混淆之功具**~!
    ****反組譯是採用中介語言(.NET, Java)平台的
    共有特性,也是實務應用的資安隱憂,
    面對這個問題,最有效的解決方案--
    是 -- 混淆器(Obfuscator)~*


    **混淆器的運作原因,是解析編譯好的DLL或EXE檔,將其轉換成執行
    結果相同的組件,差別在於私有類別、屬性、方法、欄位、參數名稱
    都已改到面目全非,難以閱讀理解;更進一步還可以打亂程式碼的排列
    流程(執行順序不變)、加密程式碼中的字串常數...*

    ))~讓反組譯的程式碼亂如咒語天書,令有意破解者卻步,至少要讓對方
    追程式追到流涕痛哭。天下沒有破解不了的程式,混淆器的目標在於逼迫
    絕大部分的破解者儘早放棄,即使被破解也要對方付出極其可觀--
    --(甚至難以想像)的高昂代價**

    ****專業等級的.NET混淆器價格不斐,甚至如PreEmptive限定由銷售團隊)))
    ))再決定報價**
    **最近在估評其他軟體時看到Red Gate的SmartAssembly,標準版 
    約1,000 USD、專業版約1,500 USD,價格****貼近公司採購的其他開發元件,
    便決定實測看看**!!

    **>註: SmartAssembly有個有趣的開發者版本,不到200 USD,限制混淆後
    的程式只能在開發者自己的機器上執行,且程式會在七天後爆炸失效,
    目的是讓開發者測試混淆後的程式是否執行正常(某些混淆技巧可能導致程式
    不正常,記得要實測及適度調整混淆參數),故實務上全公司可共用一套 
    標準版/專業版,再視需要採購開發版,若不用開發版,每次上測試台前再
    統一混淆亦是可行策略**

    **SmartAssembly的 
    操作還算簡單**選取DLL或EXE,
    設定混淆參數,建置就可以--
    --得到混淆版 >>**
    **>
    SmartAssembly可混淆--
    --對象包含: Windows Form,
     WPF, Console, Silverlight XAP,
     程式庫(DLL),
     .NET Web Service,
     ASP.NET Web bin下的DLL… 等,
    原則上只要是.NET編譯出的組件(Assembly,DLL或EXE)都--
    --可以處理。除了混淆功能外,SmartAssembly還有 
    一些"額外"功能,例如:  
      ***
    1. Strong Name Siging
      為混淆後的元件加上強式簽名防止變造
    2. Automated Error Reporting
      程式當掉時蒐集錯誤資訊建立當機報告(背後會送到Red Gate的Web Service,
    3. 並可透過SmartAssembly UI瀏覽,見前圖左側選單的Reporting項目)
    ***一旦程式出錯,會彈出以下對話框(透過SDK,對話框可以客製化)*******

  • Feature Usage Reporting
    可以統計程式執行環境、各功能被使用的次數(也是透過Red Gate的
    Web Service蒐集,第一次執行前徵求使用者同意可傳送統計
    資訊較不會有爭議)

    Dependencies Merging
    1. 將參照的DLL也合併起來混淆(可提高混淆程度),並非所有DLL都適用,
    2. 3rd Party的元件可考慮改用嵌入(Embedding)做法
    3. Dependencies Embedding
      將參照DLL嵌入程式中(預設會加密、壓縮)但不進行混淆,
    4. 第一次執行時解密、解壓縮還原,能減少部署檔案數目。
    5. Pruning
      移除沒用到的Metadata,例如事件名稱、屬性、方法參數等,
    6. 讓程式碼更難解讀,也有助於減少程式檔體積。[參考]
    7. Resource Compression and Encryption
      資源壓縮及加密,第一次執行時還原,能縮小檔案體積。
    8. Other Optimization
      減少保留但未使用的記憶體、自動seal所有類別禁止繼承
    9. 回到重點 -- 混淆,SmartAssembly透過以下技巧讓反組譯的程式碼
      難以解讀,包含:
      1. 將類別、方法名稱改成看不懂的怪字
      2. 把類別的欄位名稱亂改一通,甚至讓不同類別用相同的欄位名稱
      3. 將類別A的方法搬到類別B底下,但風險較高,有時會出錯,
      4. 宜斟酌使用Control Flow Obfuscation,把程式碼的先後
      5. 順序調亂,但執行順序
      6. 保持不變 題外話: 以上四招我曾見過有人能徒手運用,直接寫出
      7. 沒人看得懂的程式碼,堪稱"人體混淆"大絕 orz   **
      8. 動態Proxy: 一律透過執行期間產生的Proxy呼叫參照DLL,
      9. 如此Assembly一旦被篡改,程式就會壞掉無法執行
      10. 字串加密: 預設.NET組件中的字串被直接儲存,檢視檔案
      11. 二進位內容時就看得到,SmartAssembly支援將字串內容加密混淆
      12. 加上註記禁止MSIL Disassembler(ildasm)對檔案進行反組譯
      13. 如果有pdb的話,混淆StackTrace中出現的原始碼檔案路徑
      接著來實測一番,以下是簡單的Console程式:
      using System;
      using System.Reflection;
      using Boo;
      using Foo;
       
      namespace ObfuscationTest
      {
          class Program
          {
              static string dllPath = @"d:\Newtonsoft.Melody.dll";
              static void Main(string[] args)
              {
                  Assembly asm = Assembly.LoadFile(dllPath);
                  Type t = asm.GetType("Newtonsoft.Melody.MelodyConverter", true);
                  foreach (var pi in t.GetProperties())
                  {
                      Console.WriteLine(pi.Name);
                  }
                  BooClass boo = new BooClass() { Name = "MelodyRO" };
                  FooClass foo = new FooClass() { Name = "MelodyROhread" };
                  Console.WriteLine("{0} / {1}", boo.Name, foo.Name);
                  string res = Console.ReadLine();
                  if (!string.IsNullOrEmpty(res))
                      throw new ApplicationException("My Bad! XD");
              }
          }
      
      

    *********
    使用反組譯工具解析ObfuscationTest.exe檔,可以看到幾乎原汁
    原味的原始程式碼:
    接著我們透過SmartAssembly惡搞一番,
    另外Build成ObfuscationTestSA.exe,
    再用反組譯工具試著打開。嗯,很好,程式碼已經被整到*都不認得*!!


    **選擇不加密字串常數,好不容易才透過程式碼中**
    **透過程式碼中( Melody ) **( MelodyROhread )**
    **找到main()的所在位置,試過連字串都加密,我選擇直接投降**
    **SmartAssembly看來是值得考慮的.NET混淆器解決方案。如果擔心專案中的程式經混淆會出問題,倒是可以先用試用版(功能完整,但編譯結果只能在有安裝程式的機器執行,七天後失效)實測評估後再考量**

    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&