2008年11月25日

自製無用小工具 - part 1

年底大家都在趕結案
不過坎尼這段時間內倒是做了不少東西就是
只是一直沒時間上來寫心得
沒想到 blogger 的版面都有點小改變了 囧rz

這次介紹一個坎尼自己寫的沒啥用小工具 -- 副檔名自動修改程式
先來看一下程式執行畫面吧!
首先是啟動畫面及要修改副檔名檔案所在資料夾

大家可以看到
瀏覽資料夾之後,程式會列出資料夾下的所有檔案的副檔名

接著可以在左方選取要修改之副檔名
右方的輸入框可填入要更改的新副檔名 (記得要加上. 例如 .doc
這邊的設定是 新副檔名若未填寫 則是消掉原本的副檔名
輸入完條件之後就點選轉換按鈕

噹噹噹噹噹 .jpg 的副檔名都被消掉了
要繼續體驗修改快感的人 請點 這裡 下載 (記得檔案先備份啊 XD

程式的寫作流程是
利用 System.IO.Directory.GetFiles("PathHere") 取得檔案名稱
再利用 string 的 lastIndexOf 取得副檔名
接著放入 System.Windows.Forms.CheckedListBox

要修改時 利用 System.IO.File.Move("OldFileName","NewFileName")
來作到 rename 的動作 (坎尼找不到 rename 的函數 orz

以上大概是流程 這邊就不放 source code 上來了
有需要的人再跟我要吧 XD

這是坎尼因為對於要一直改副檔的動作覺得很麻煩所做的
防呆還是一些使用上都是以坎尼使用需求為主
有不好用的地方請提意見吧 :p 坎尼視情況做下一版本的推出 XDDDD

2008年11月10日

Microsoft TechEd 2008 補完 -- 技術篇 (Oslo, Rosario)

呼 ... 接下來這篇是 MS TechEd 2008 Taiwan 系列的最後一篇了,主要記錄的是之前漏掉的細節,還有一些新的技術架構的相關資料。因為最後發現要補完太吃力累了,而且沒有實務經驗容易淪為嘴炮,因此以下是之前寫好的部份內容,暫時就先這樣囉!希望明年可以寫比較深入的文章 ...
  1. 第一天早上的主題演講:by Steve Guggenheimer (OEM事業群全球副總裁),主題是「IT Heroes: Changing the World of Information Technology」,有些報導可以參考 iTHome 這篇,裡面提到「Model Driven Development」和「Virtualization」是非常重要的主題之一,關於 MDD 下面會有一些資料,而虛擬化的部分,從2008年10月份的TechNer Magazine以虛擬化為主題就可以看出其重要性,其中這篇講到如何利用「Offline Virtual Machine Servicing Tool」來進行大規模的 VM 升級,還蠻有趣的,不曉得 VMWare 那邊相對應的 Solution 是甚麼。
  2. Oslo (官方網站
    Oslo 是一個全新的塑模平台 (Modeling Platform),涵蓋的範圍遠超過 UML,
    一方面微軟也不認為 UML 有取得非常顯著的成功。它將融合Visual Studio Team System和System Center,讓它們可以彼此協同運用,將應用程式與日常IT作業進一步整合在模型(Model)之下。

    .NET Framework則是企圖擴充WCF和WF這兩種環境,使它們也能具備以模型驅動的程式開發能力。

    SDK CTP下載,其中用來寫「M」的intellipad是個還頗有趣的工具。
  3. Rosario (Overview
    後來仔細讀了一下資料之後發現,Rosario 是下一代 VSTS 的  code-name,至於不是 VSTS 的版本應該還是統稱為 VS2010 吧。 (CTP Download

    (1) 正式支援五個 UML Diagram 
         包括 Activity, Component, Logical Class, Use Case, and Sequence.

    (2) 加強應用程式生命週期管理 (Application Lifecycle Management)
         參考 iTHome 的這篇報導,還有這篇。目標是讓所有貢獻軟體開發的核心開發人員、測試人員到專案經理人、設計人員及企業分析師都能夠參與整個ALM管理,讓參與軟體開發的各式成員將更容易在開發過程中進行協作。包括新的架構檢視工具(Architecture Explorer),Visual Studio 2010 Architecture提供技術人員或非技術人員都能以模型透過圖形化的方式協作,以及定義企業與系統功能。新版本同時支援統一建模語言(Unified Modeling Language,UML)及特定領域語言(Domain Specific Language,DSL)。

    (3) 增強對平行運算的支援

    在簡化平行運算方面,為了善加利用目前流行(且未來會更普遍)的多核心架構
    .NET Frameowrk 4.0將強化對平行運算開發的支援(見參考資料3, TPL, PLINQ),
    在 core library 中新增如 "AsParallel"、"Parallel.For"、"Parallel.Invoke"等語法,
    讓被包覆在其中的程式能夠交由System.Threading.Tasks中的類別來負責,
    有效的將底層複雜的實作隱藏起來,讓開發人員能更快上手。

    但就如同微軟之前將複雜的實作包裝起來的結果(e.g. MS Ajax),
    雖然有效降低開發的進入門檻,但也讓因粗心或不了解細節的開發人員寫出bug的機率大增(如果你根本不會寫,那麼你就不可能寫錯),因此在 tooling 上提供完整的 debug 支援也是很重要的,而這個工作理所當然的落到了 Visual Studio 身上。

    在將平行運算的複雜運作交給 .NET Framework 這個 black box 去執行後,
    底層會自動將運算切割為task,並交由多個CPU來執行,為了能夠更有效的在這樣的環境下 debug,VS debugger 新增了幾種View,包括 "MultiStack", "Task List" 和 "MultiWatch" 等,大致上就是用圖形化的方式讓開發人員能夠快速了解此運算 overall 的執行狀況。此外最重要的 Profiling 工具也沒有缺席。

    其他參考資料:
    (1) Microsoft Unveils Next Version of Visual Studio and .NET Framework
    (2) Improved Support For Parallelism In The Next Version Of Visual Studio
    (3) Microsoft Parallel Computing Developer Center
PDC中有許多更深入的探討,相關資源請參考這裡

雜記: MS PDC 2008 Content & .NET Framework 4.0

話說十一月的文章數量似乎很少:p 最近關於 PDC 的資料實在太多了,
而且只是看看而已也沒什麼特別的心得,so ... 先用這篇文章紀錄一下哪裡可以找到 PDC 完整的內容,還有哪裡可以找到最新版的 .NET Framework 4.0 海報吧!

2008年11月3日

Gridview 自訂分頁2

坎尼在 Gridview 自訂分頁 中講到了分頁的作法
剛好有人看到這篇 然後提出了以下疑問
(其他程式部分請參照上篇 這邊只挑重點部分來講)

HI~坎尼 我想請問 如果想讓上下方同時都有分頁的效果 是要設定 Gridview.PagerSettings.
Position = PagerPosition.TopAndBottom;

上方的下拉選單跳頁SelectedIndexChanged 該如何指定

因為上方的DropDownList 是要取TopPagerRow的FindControl 就無法共用同一個SelectedIndexChanged

而我目前測試的結果Grid 似乎不能有兩個PagerTemplate來區分上下的下拉選單

麻煩坎尼解答一下~3q

這邊的解法算還蠻簡單的 (其實是坎尼之前的寫法不太對
首先 先將 Gridview 裡 Page SettingsPosition 設定為 TopAndBottom

在設計畫面上就會看到以下的畫面

再來就是 PageSet 方法裡 加入 TopPagerRow DropDownList 相關設定
這邊要注意一下 如果沒開啟 TopPagerRow 可是會出現 Exception




最後是坎尼當時沒寫好的地方 跳頁事件
這邊只要很簡單的把傳進來的 sender 轉型即可
再將 Gridview 的 PageIndex 設定為所選的 index

大功告成


這邊可以看到 上下的自訂分頁長的不太一樣
這是坎尼故意做的區別 如果要做到上下都相同的話
則要把下圖圈起來的地方 加上找尋 TopPagerRow 裡的 Label 的動作



另外坎尼還是不曉得 直接回意見能不能貼圖? 囧>
坎尼對 blog 的撰寫還是沒啥 sense

owasp Day2 下

週末和閃光出門去慶祝記念日
本來想趕在萬聖節結束前多寫個一篇的
可惜.....最後還是沒趕上 XDD
今天來把剩下的 owasp 心得補完

兩天的行程終於到了最後半天
所謂行百里者半九十 可是坎尼在第75公里時就覺得撐不下去了
吃完好吃的便當後 坎尼逛了逛廠商的攤位
(經濟部做的檢測軟體坎尼還覺得蠻厲害的
回座位時已經快開始下半場 此時坎尼才驚覺...還沒休息啊 orz

下午第一場的 Dhruv & Pukhraj Singh 兩人所講的瀏覽器威脅
坎尼完全在昏睡中渡過 真是覺得很對不住他們兩位

第二場是來自 owasp Thailand分會的 Tim Bass
坎尼覺得他演講很有技巧 而且不會趕 讓聽眾不會覺得有壓力
他以 Google Docs 為例 來說明 proxy cache 所可能造成的資安威脅
起因是他某天不小心看到了別人的 Google Docs文件
經研究之後 發現是 proxy cache 造成 而且這威脅無法被避免 (要和ISP配合才可能
要是這種事情發生在重要的機密文件上 造成的損失可能就很難預估了

第三場是 Alexander Meisel所講的 Web Application Firewalls (WAF)
說真的 坎尼現在看著筆記 卻想不起那時 Alex 講的是什麼
不過坎尼有個印象比較深的就是
惡意的指令是可以用2進位編碼的方式 將之編成圖片格式
只要使用者讀取到圖片的內容 就會進行惡意行為

第四場是 Steven Adair 所講的 BotnetDdos 研究
Botnet (僵屍網路) 坎尼最近才知道這個名詞
DDoS 則是 Distributed DoS 的縮寫

坎尼以前寫過一支程式 專門用來抓取一些網路上的資訊
沒想到卻不小心對某網站造成 Denied Of Service 導致一下午該網站都連不上去
坎尼當時只是用單一台電腦 對單一台Server做不斷存取的動作
可是這DDoS可不同 它利用了被控制的眾多電腦 (也就是 Botnet) 來對目標進行攻擊
再強大的Server 面對這樣的攻勢 (如果又沒建白名單) 應該很難繼續有所動作

另外 Steven 還有提到 Botnet 還會自動變形
讓使用者防不勝防 更何況還有一堆人不曉得這東西的存在

最後是講師們的綜合會談
由聽眾提問題 再由台上的講師們提出看法
這邊坎尼就沒做筆記了

這兩天坎尼聽了很多以前沒接觸過的領域
也了解資安不能只依靠軟體 更要有良好的規劃
程設師更要有良好的寫作習慣 先讓風險從自己手上降低一半
接著才是從硬體及軟體上著手

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D