Posts
mozjpeg encoder - smaller jpegs for everyone
筆者在 Mozjpeg - Improved JPEG encoder - Level Up 這篇稍稍的介紹了一下 Mozilla 的 Mozjpeg 專案及其用法。但需要進行檔案的編譯或是下載,取得檔案後要再下命令才能轉換。對於只是想要做個體驗,或是臨時要做處理的,我們應該不會想這麼做。
因此這篇要稍稍的介紹一下 mozjpeg encoder 這個線上服務。它能讓我們直接將圖片上傳,上傳後該服務會用 Mozjpeg 進行壓縮後讓我們下載回來。
使用上只要先設定所要使用的圖片品質,或是選取無失真的處理方式…
{% img /images/posts/MozjpegEncoder/1.png %}
然後將要處理的檔案用拖曳的方式放至網站上…
{% img /images/posts/MozjpegEncoder/2.png %}
拖曳完成,圖片會進行上傳的動作,並做壓縮的處理。處理完後網站會有處理前後的比對,可以清楚知道圖片壓縮為我們省下了多少。若要將壓縮後的圖檔下載下來使用,這邊也可直接點擊 download image 按鈕進行下載…
{% img /images/posts/MozjpegEncoder/3.png %}
最後一提,該網站上方的 binaries 頁面有提供 Mozjpeg 的 Binary 檔,有需要的可直接從該頁面下載使用,就不需要自行將 Mozjpeg 編譯。
Link mozjpeg encoder
read morePosts
Mozjpeg - Improved JPEG encoder
Mozjpeg 是 Mozilla 在維持相容性的前提下,為了改善 JPEG 壓縮能力,以減少檔案大小並加速網頁傳輸所開的專案。
目前現階段已發行到了 2.1 版,以數據來說平均約可減少 5% 的檔案大小。
有興趣的可至 mozilla/mozjpeg · GitHub 這邊下載編譯來使用,編譯方式可參閱 BUILDING.txt 文件。
如果不會編譯的也沒關係,可到 mozjpeg | binaries 這邊直接下載別人編譯好的檔案來用。
{% img /images/posts/Mozjpeg/1.png %}
檔案取得後,我們會看到裡面有四個執行檔,一個Dll。四個執行檔各自有不同的功用,像是壓縮、解壓縮、轉換…之類的,使用上可參閱 usage.txt。
不過基本上我們多半只會需要做些圖檔壓縮或無失真的減肥處理動作,因此我們通常只需要熟悉 cjpeg 以及 jpegtran 的使用。
使用方式我們可直接呼叫 cjpeg 命令,並帶入參數 -? 查詢。
cjpeg -? {% img /images/posts/Mozjpeg/2.png %}
使用上大概是遵循下面這樣的方式去叫用: cjpeg [switches] -outfile jpegfile imagefile ’ Support all systems cjpeg [switches] [imagefile] >jpegfile ’ Support Unix-like systems cjpeg [switches] imagefile jpegfile ’ Support non-Unix systems
read morePosts
SlowCheetah - XML Transforms extension
Web.Config Transformation 功能在我們有多個環境需要部署時很方便,但預設只支援 Web.config 的轉換,且發佈時才會做轉換的動作,開發上總是有些不便。
要對 Web.config 以外的設定檔案做轉換,或是要在建置時做轉換,可以參考 Web.Config Transformation - Transform on build 這篇,修改專案檔讓 Microsoft.WebApplication.targets 幫我們做設定檔的轉換。但這樣的處理方式轉換檔需要自行手動加上去,設定起來是有點費工。
若是使用 SlowCheetah 這個 Visual Studio 擴充套件相較起來就簡單了許多,可以很輕易的為設定檔加上建置時轉換。
{% img /images/posts/SlowCheetah/1.png %}
SlowCheetah 可直接透過 Extension Manager 進行安裝。
{% img /images/posts/SlowCheetah/2.png %}
{% img /images/posts/SlowCheetah/3.png %}
{% img /images/posts/SlowCheetah/4.png %}
{% img /images/posts/SlowCheetah/5.png %}
使用時只要在方案總管中找到欲加入建置轉換的設定檔,按下滑鼠右鍵,在彈出的滑鼠右鍵選單中選取 Add Transform 滑鼠右鍵選單選項。
{% img /images/posts/SlowCheetah/6.png %}
在彈出的確認視窗中按下 Yes 按鈕繼續。
{% img /images/posts/SlowCheetah/7.png %}
對應的轉換檔即會幫我們產生。
{% img /images/posts/SlowCheetah/8.png %}
專案檔中也會做對應的修改,會加入 SlowCheetah 自己的 Targets 去做轉換,而非使用現成的 Microsoft.
read morePosts
Dos - Execute multiple commands in a single line
要將多行 Dos 命令寫在同一行,依據不同的使用情境,有著不同的寫法。
像是要在運行 Command A 完後接著運行 Command B,可以用 & 串接。
Command A & Command B 要在運行 Command A 後接著運行 Command B,並將 Command A 的運行輸出導到 Command B 的輸入,可以用 | 串接。
Command A | Command B 要在運行 Command A 後,判別 ErrorLevel 為 0 才繼續運行 Command B 的話,可以用 && 串接。
Command A && Command B 要在運行 Command A 後,判別 ErrorLevel 不為 0 才繼續運行 Command B 的話,可以用 || 串接。
Command A || Command B Link dos - How to execute multiple commands in a single line - Stack Overflow
read morePosts
MediaWiki - Auto-number headings
MediaWiki 在使用標頭時,預設是不會有自動編號的,這樣的呈現方式在瀏覽時我們會不易知道是哪個章節。當然你也可以自己在撰寫標頭時附上編號,但總是比較麻煩點,如果沒有太特殊的需求,我們是可以直接將 MediaWiki 的標頭自動編號功能給開啟。
要將自動編號功能給開啟,首先要先將 LocalSettings.php 檔案開啟。
{% img /images/posts/MediaWikiAutoNumberHeadings/1.png %}
找到 $wgDefaultUserOptions['numberheadings'] 設定,將其值設定為 1。
$wgDefaultUserOptions['numberheadings'] = 1; {% img /images/posts/MediaWikiAutoNumberHeadings/2.png %}
這樣 MediaWiki 的標頭前面就會自動編號。
{% img /images/posts/MediaWikiAutoNumberHeadings/3.png %}
Link Auto-number headings - MediaWiki
read morePosts
Web.config Transformation Tester
Web.config Transformation Tester 是可用來測試 Web.Config Transformation 的線上服務,若要學習 Web.Config Transformation 或是要驗證轉換這是個不錯的服務。
使用上也很簡單,將要做轉換的 Web.Config 檔內容放入 Web.Config 區塊。
{% img /images/posts/ConfigTransformationTester/1.png %}
轉換的設定檔內容放入 Transform (eg. Web.Debug.config) 區塊。
{% img /images/posts/ConfigTransformationTester/2.png %}
接著按下 Transform 按鈕,轉換後的結果即會出現在 Result 區塊。
{% img /images/posts/ConfigTransformationTester/3.png %}
Link Web.config Transformation Tester
read morePosts
C# 6.0 - Nameof expressions
Nameof expressions 是預計要在 C# 6.0 釋出的新功能,目前已可在 Visual Studio 14 CTP3 中透過設定將功能開啟進行體驗,只要在方案檔中加上:
<LangVersion>experimental</LangVersion> Nameof expressions 能讓開發人員輕易的在程式中取得變數或是類別名稱。
以往我們是無法取得變數名稱的,所以像是在撰寫參數檢查,當丟出的例外需要帶入參數名稱時,多半是自己填入字串帶入。但這樣的做法不是很恰當,因為拼錯時並不容易發現,且當重構參數名稱時很容易遺漏要配合修改。
至於類別名稱的取得,相較於變數名稱的取得是簡單了許多。但是名稱的取得需要 Runtime 進行解析,這樣的做法有時又多了一些無謂的耗費。
Nameof expressions 的出現能幫助開發人員解決這樣的問題,使用上只要叫用nameof,並帶入欲取得名稱的類別或變數即可。
nameof( 欲取得名稱的類別或變數 ) 這邊直接看個完整的使用範例:
using System; namespace ConsoleApplication10 { class Program { static void Main(string[] args) { var blog = new Blog { Name = "Level Up" , Url = "http://larrynung.github.io/" }; DumpBlogInfo(blog); DumpBlogInfo(null); } static void DumpBlogInfo(Blog blog) { Console.WriteLine( string.Format( "Dump data (Type is {0})..." , nameof(Blog ))); if (blog == null) throw new ArgumentNullException(nameof (blog)); Console.
read morePosts
Visual Studio 14 CTP 3 - PerfTips in the Debugger
PerfTips 是 Visual Studio 14 (CTP3 以後釋出)的新功能,能讓開發人員在除錯的同時了解程式的耗時與 CPU 的耗用。
以往我們為了觀測程式的耗時我們需要做程式碼的修改,用 Stopwatch 去監測。在 Visual Studio 14 CTP3 後,我們不需要修改程式就可以很輕易的監測程式的效能,只要透過 PerfTips 功能就可以了。
PerfTips 使用上很簡單,只要設定斷點進行除錯,看你是要 Step Into、Step Over、Step Out、或是直接 F5 跳到下一個斷點,PerfTips 都會自動在後面跳出上一步到這一步之間的耗時。
{% img /images/posts/PerfTips/1.png %}
預設這邊只有開啟耗時的部份,若要查閱 CPU 的耗費,我們可以將滑鼠移至 PerfTips 上面,彈出的 ToolTip 會有這方面的資訊。
{% img /images/posts/PerfTips/2.png %}
或者也可以點擊 PerfTips 叫出對應的選項設定。
{% img /images/posts/PerfTips/3.png %}
將 CPU 耗費的顯示給開啟,或是設定 PerfTips 要大於等於多少才顯示。
{% img /images/posts/PerfTips/4.png %}
{% img /images/posts/PerfTips/5.png %}
Link Visual Studio “14” CTP 3 Released - The Visual Studio Blog - Site Home - MSDN Blogs PerfTips: Performance Information at-a-glance while Debugging with Visual Studio - Microsoft Application Lifecycle Management - Site Home - MSDN Blogs
read morePosts
C# 6.0 - Null propagation
— layout: post title: “C# 6.0 - Null propagation” date: 2014-08-21 00:03:00 comments: true tags: [CSharp, CSharp 6.0] keywords: “C#” description: “C# 6.0 - Null propagation”
read morePosts
Visual Studio 14 CTP 2 - Light Bulb Editor Adornment
Light Bulb Editor Adornment 是Visual Studio 14 的新功能,能讓開發人員快速識別及修正程式的錯誤。
當程式錯誤時,Visual Studio 會在編輯區前方,或是在錯誤列的下方出現發亮的燈泡,用以提示程式有錯誤發生。
{% img /images/posts/LightBulbEditorAdornment/1.png %}
{% img /images/posts/LightBulbEditorAdornment/2.png %}
點擊燈泡展開選單,選單會嘗試提供對應的修正。
{% img /images/posts/LightBulbEditorAdornment/3.png %}
{% img /images/posts/LightBulbEditorAdornment/4.png %}
該功能相信很多人都很熟悉,很多知名外掛都有類似的功能。只是 Visual Studio 將之整併成內建的功能,並提供擴充的彈性,允許開發人員撰寫擴充套件自行擴充。
read more