學習日誌-LINQ心得

最近再研究如何寫出一個aggregator, 首先把LINQ跟JSON都看了一下。試著想找出一可以方便在各大相片網站找資料的共通語言,由於codeplex上面有Linq.Flickr這個open source 的library,也開始試著研究。

參考: 使用linq.flickr搜尋相片

Note:

  1. 由於改WLWPlurk,稱這次機會把手邊平台由VS2008改成VS2010。也裝了Visual Studio Achievements

  2. 為了開發快一點也把順手語言改成C#,不過後來發現Linq.Flickr是.Net3.5的~ 竟然也踩到了3.5 與 4.0 不共通的弊病。 所以也在Add reference 卡了一下。

  3. Flickr user name 不是URL上面的userID 而是user definded 的名字,為了這個我還以為是我安裝有問題~ 認真的trace 下Linq.Flickr去。

如何把寫好的 Windows Live Writer plugin包裝成安裝檔 (How to package your Windows Live writer plugin?)

(copy from my another site)

由於要修改去年寫給自己用的小工具 (WLWPlurk),看到其他在Codeplex上面的人都是用WIX(Windows Installer XML)來做包裝plugin的動作。

所以也去好好的搜尋一下有沒有相關可以用的東西。 由於我自己也不是專業在做Installer的人~ 裡面的一些設定也真的把我搞糊塗,才了解前因後果。還好找到了相關的文件WiX Script for installing Live Writer Plugins,雖然他上面的sample是針對 WIX 2.0,不過我也把它修改過後分享給大家。

希望有需要的人就拿去用吧。

  1. Install WIX 3.6 from http://wix.sourceforge.net/downloadv3.html

  2. Setup your path setting to your install path.

  3. Inser follow code (it should be XXX.WXS)
    (refer from http://wlwextensionlearning.blogspot.com/2012/02/windows-live-writer-plugin-how-to.html)

  4. You might need repace follow string as follows:
    1. {$Plugin Name$} : your plugin name

2. {$InstallGUID$}: A GUID for your installation program 
   
3. {$Manufacturer$}: Manufacturer name 
   
4. {$PluginGUID$}: A GUID for your plugin 
   
5. {$Description$}: A description for your plugin 
   
6. {$FILE_ID$}: ID for your binary which need install. (could be multiple file) 
   
7. {$FILE_NAME$}: Name for your binary which need install. (could be multiple file) 
   
8. {$FILE_Address$}: File address for your binary which need install. (could be multiple file) 
  1. Compiler your WIX source code
    1. candle XXX.wxs
2. light -ext WixUIExtension XXX.wixobj 

WLWPlurk 2.0 installer release

這幾天弄了好久~ 好不容易把Windows Installer XML (WIX) 3.6給搞懂。
等等寫另外一篇來記錄詳細資料,在這裡先請有需要安裝檔的去下載吧。

http://wlwplurk.codeplex.com/releases/52834/download/342411

有任何需要改進的麻煩留言告訴我!!

WLWPlurk 第二版發布

欠了好久~ 總算一口氣把它寫完:
請到這裡下載: http://wlwplurk.codeplex.com/

  1. Upgrade code with VS2010.
  2. Add login page for change account. Using registry to save your login information.
    WLWPlurk_1.jpg
  3. Add post content page to let you modify your plurk before post it.
    WLWPlurk_2.jpg

How to use it:
Just download this binary, extract it and put on your Windows Live Writer plugin folder such as C:Program FilesWindows LiveWriterPlugins

This project implement base on two major component:

  1. Json.net (http://json.codeplex.com/)
  2. NPlurk (http://nplurk.codeplex.com/)
    You need plurk API key from http://www.plurk.com/API/ to use this source code.

MICROSOFT WINDOWS 8 BUILD STUDY NOTE (4)

HW-59T - Improving performance with the Windows Performance Toolkit

refer: http://channel9.msdn.com/Events/BUILD/BUILD2011/HW-59T

Note:

  • Motivation for performance analysis:

    • Performance related to multiple layered impact such as : hardware, OS, other application and process impact.
  • Stage of performance improvement:

    • Preception –> Measurement –> Analysis.

    • It will be back and forth after analysis and re-preception.

  • Tool list:

    • Trace Capture: Windows Performance Recorder

    • Tacce Analysis: Windows Performance Analizer

  • Things to look out:

    • Don’t assume you know what’s wrong.

    • Don’t enable too much instrumentation

    • Don’t trace longer than you need.

PLAT-203T Async everywhere: creating responsive APIs & apps

refer: http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-203T

Note:

  • Async only support on some API:

    • XAML, Tile on UI

    • GPS and portable debice on Device

    • All network and communicate

    • Applifetime, Authentication, Crytography on Fundamental

  • Await

    • Await is a simple way to against async API.

    • Await will make the async highest priority and let the compiler know here need to wait the result come back. Code will run as sequencial.

  • Error handling

try { FileOpenPicker p = new FileOpenPicker(); p.FileTypeFilter.Add(".jpg");ry var operation = p.PickSingleFileAsync(); operation.Completed = (IAsyncOperation f) => { MyButton.Content = f.GetResults().FileName; }; operation.Start(); catch(...) {}</blockquote> * try catch will only cover RED one, it need refine code to cover whole scope
try { FileOpenPicker p = new FileOpenPicker(); p.FileTypeFilter.Add(".jpg"); MyButton.Content = (await p.PickSingleFileAsync()).FileName; } catch(Exception e) {}
* It will separate into “RED” and “Green” one but still cover on try catch. * 5 top tips from presenter. * Don’t worry about the COM apartment. * Remember to start your operation. * File picker cancel != Async Cancel * It will complete but return NULL. * “use exception for exceptional things” * Don’t worry about Dispatcher.Invoke… * Don’t worry about the concurrency Refer: [http://blogs.msdn.com/b/ericlippert/archive/2010/10/29/asynchronous-programming-in-c-5-0-part-two-whence-await.aspx](http://blogs.msdn.com/b/ericlippert/archive/2010/10/29/asynchronous-programming-in-c-5-0-part-two-whence-await.aspx)

MICROSOFT WINDOWS 8 BUILD STUDY NOTE (3) ABOUT touch

APP-186T - Build advanced touch apps in Windows 8

refer: http://channel9.msdn.com/Events/BUILD/BUILD2011/APP-186T

  • Major point of touch app design:

    • Unify pen and touch into PointerPoint

    • Get mouse and pen for free

    • performance performance and performance

  • Touch and Gesture support in framework

    • Metro app with HTML or XAML—> Gesture event

    • ICoreWindow –> Using point (touch simulate mouse click)

    • Windows Runtime –> PointerPoint with GestureRecognizer

  • PointerPoint:

    • Whole related point implement is here, HID data also can get using PointerPoint.
  • GestureRecognizer:

    • It just like the Win7 multiple touch support on MSFT, it support kind of gesture such as:

      • Tap, Hold, rotate and Scale
    • But more support on Win8 such as:

      • HoldWithMouse?

      • RightTap

        • To simulate with right click on mouse, such your finger about right click here.

        • mmmm….. it should be MSFT patent here for right click.

  • For desktop developer, MSFT also support full Windows Runtime about Gesture support –> Great!

    • WM_Point –> the same as usual

    • InteractionContexts –> mirror GestureRecognizer. Don’t forget WM_TOUCH and WM_GESTURE still support here.

    • Pointer device –> identify source device (touch panel, mouse or other.)