WLW Plurk 相關資訊

幾經尋找~總算找到一個好用的plurk API使用軟體。不過在此之前還是有一些事情得先做。

  1. 申請Plurk API Key: 到此去申請一個你自己使用的plurk API key.

  2. NPlurk去下載相關source code吧~ 這個超好用的

測試過後,已經可以正常的把文章發不到Plurk去。算是好用吧(?)

測試結果: http://www.plurk.com/p/7qp2eq 是成功發文。

不過由於login架構尚未完成,現在整個plugin 也只有我自己可以使用。感覺有點弱。還有以下的工作項目需要完成:

不過有人需要我也是可以幫你客制一個先給你用

工作日誌2010/09/08: 關於PublishNotificationHook

自從寫完第一個Hello World之後,本來緊接著就打算繼續把PublishNotificationHook放入原來的第一個Hello World之中。

參考網路這篇文章(The New Live Writer SDK)裡面的source code,單純的把code加入之後,就像以下的狀態。

<div><!--<br></br><br></br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br></br>http://www.CodeHighlighter.com/<br></br><br></br>--><span style="color:#008080;"> 1</span> <span style="color:#0000ff;">using</span><span style="color:#000000;"> WindowsLive.Writer.Api;<br></br></span><span style="color:#008080;"> 2</span> <span style="color:#000000;"><br></br></span><span style="color:#008080;"> 3</span> <span style="color:#000000;"></span><span style="color:#0000ff;">namespace</span><span style="color:#000000;"> LiveWriterHelloWorld<br></br></span><span style="color:#008080;"> 4</span> <span style="color:#000000;">{<br></br></span><span style="color:#008080;"> 5</span> <span style="color:#000000;">    [WriterPluginAttribute<br></br></span><span style="color:#008080;"> 6</span> <span style="color:#000000;">      (</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;2f437bf1</span><span style="color:#000000;">-</span><span style="color:#000000;">fe57</span><span style="color:#000000;">-</span><span style="color:#000000;">41c8</span><span style="color:#000000;">-</span><span style="color:#000000;">931a</span><span style="color:#000000;">-</span><span style="color:#000000;">d20066ea174e</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;, </span><span style="color:#000000;">&</span><span style="color:#000000;">quot;Hello World</span><span style="color:#000000;">!</span><span style="color:#800080;">2</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;,<br></br></span><span style="color:#008080;"> 7</span> <span style="color:#000000;">        PublisherUrl </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">&</span><span style="color:#000000;">quot;http:</span><span style="color:#008000;">//</span><span style="color:#008000;">wlwextensionlearning.blogspot.com/&quot;,</span><span style="color:#008000;"><br></br></span><span style="color:#008080;"> 8</span> <span style="color:#008000;"></span><span style="color:#000000;">        Description </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">&</span><span style="color:#000000;">quot;Going to 2nd testing code</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;)]<br></br></span><span style="color:#008080;"> 9</span> <span style="color:#000000;">    [InsertableContentSourceAttribute(</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;Hello World</span><span style="color:#000000;">!&</span><span style="color:#000000;">quot;, SidebarText </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">&</span><span style="color:#000000;">quot;Hello World</span><span style="color:#000000;">!&</span><span style="color:#000000;">quot;)]<br></br></span><span style="color:#008080;">10</span> <span style="color:#000000;">    </span><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">class</span><span style="color:#000000;"> HelloWorldPlugin : ContentSource<br></br></span><span style="color:#008080;">11</span> <span style="color:#000000;">    {<br></br></span><span style="color:#008080;">12</span> <span style="color:#000000;">        </span><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">override</span><span style="color:#000000;"> DialogResult CreateContent(IWin32Window dialogOwner, </span><span style="color:#0000ff;">ref</span><span style="color:#000000;"> </span><span style="color:#0000ff;">string</span><span style="color:#000000;"> content)<br></br></span><span style="color:#008080;">13</span> <span style="color:#000000;">        {<br></br></span><span style="color:#008080;">14</span> <span style="color:#000000;">            content </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#000000;">&</span><span style="color:#000000;">quot;</span><span style="color:#000000;">&</span><span style="color:#000000;">lt;b</span><span style="color:#000000;">&</span><span style="color:#000000;">gt;Hello World</span><span style="color:#000000;">!&</span><span style="color:#000000;">lt;</span><span style="color:#000000;">/</span><span style="color:#000000;">b</span><span style="color:#000000;">&</span><span style="color:#000000;">gt;</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;;<br></br></span><span style="color:#008080;">15</span> <span style="color:#000000;"><br></br></span><span style="color:#008080;">16</span> <span style="color:#000000;">            </span><span style="color:#0000ff;">return</span><span style="color:#000000;"> DialogResult.OK;<br></br></span><span style="color:#008080;">17</span> <span style="color:#000000;">        }<br></br></span><span style="color:#008080;">18</span> <span style="color:#000000;">    }<br></br></span><span style="color:#008080;">19</span> <span style="color:#000000;">    </span><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">class</span><span style="color:#000000;"> PublishNotificationExample : PublishNotificationHook<br></br></span><span style="color:#008080;">20</span> <span style="color:#000000;">    {<br></br></span><span style="color:#008080;">21</span> <span style="color:#000000;">        </span><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">override</span><span style="color:#000000;"> </span><span style="color:#0000ff;">bool</span><span style="color:#000000;"> OnPrePublish(IWin32Window dialogOwner,<br></br></span><span style="color:#008080;">22</span> <span style="color:#000000;">        IProperties properties, IPublishingContext publishingContext,<br></br></span><span style="color:#008080;">23</span> <span style="color:#000000;">        </span><span style="color:#0000ff;">bool</span><span style="color:#000000;"> publish)<br></br></span><span style="color:#008080;">24</span> <span style="color:#000000;">        {<br></br></span><span style="color:#008080;">25</span> <span style="color:#000000;">            </span><span style="color:#008000;">//</span><span style="color:#008000;"> Check the post contents to see if liveside appears, if it does,             </span><span style="color:#008000;">//</span><span style="color:#008000;"> return true (publish), <br></br></span><span style="color:#008080;">26</span> <span style="color:#008000;">            </span><span style="color:#008000;">//</span><span style="color:#008000;"> if it doesn't, return false (cancel publish)</span><span style="color:#008000;"><br></br></span><span style="color:#008080;">27</span> <span style="color:#008000;"></span><span style="color:#000000;">            </span><span style="color:#0000ff;">return</span><span style="color:#000000;"> publishingContext.PostInfo.Contents.ToLower().Contains(</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;liveside</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;)
;<br></br></span><span style="color:#008080;">28</span> <span style="color:#000000;">        }<br></br></span><span style="color:#008080;">29</span> <span style="color:#000000;">        </span><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">override</span><span style="color:#000000;"> </span><span style="color:#0000ff;">void</span><span style="color:#000000;"> OnPostPublish(IWin32Window dialogOwner,<br></br></span><span style="color:#008080;">30</span> <span style="color:#000000;">               IProperties properties, IPublishingContext publishingContext,<br></br></span><span style="color:#008080;">31</span> <span style="color:#000000;">                </span><span style="color:#0000ff;">bool</span><span style="color:#000000;"> publish)<br></br></span><span style="color:#008080;">32</span> <span style="color:#000000;">        {<br></br></span><span style="color:#008080;">33</span> <span style="color:#000000;">            </span><span style="color:#008000;">//</span><span style="color:#008000;"> If this post is a draft (false), don't do anything<br></br></span><span style="color:#008080;">34</span> <span style="color:#008000;">            </span><span style="color:#008000;">//</span><span style="color:#008000;"> if it's an actual publish, then publish = true;</span><span style="color:#008000;"><br></br></span><span style="color:#008080;">35</span> <span style="color:#008000;"></span><span style="color:#000000;">            </span><span style="color:#0000ff;">if</span><span style="color:#000000;"> (</span><span style="color:#000000;">!</span><span style="color:#000000;">publish)<br></br></span><span style="color:#008080;">36</span> <span style="color:#000000;">                </span><span style="color:#0000ff;">return</span><span style="color:#000000;">;<br></br></span><span style="color:#008080;">37</span> <span style="color:#000000;"><br></br></span><span style="color:#008080;">38</span> <span style="color:#000000;">            </span><span style="color:#0000ff;">string</span><span style="color:#000000;"> updateTwitter </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#0000ff;">string</span><span style="color:#000000;">.Format(</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;{</span><span style="color:#800080;">0</span><span style="color:#000000;">} </span><span style="color:#000000;">-</span><span style="color:#000000;"> {</span><span style="color:#800080;">1</span><span style="color:#000000;">}</span><span style="color:#000000;">&</span><span style="color:#000000;">quot;,<br></br></span><span style="color:#008080;">39</span> <span style="color:#000000;">                publishingContext.PostInfo.Title,<br></br></span><span style="color:#008080;">40</span> <span style="color:#000000;">                publishingContext.PostInfo.Permalink);<br></br></span><span style="color:#008080;">41</span> <span style="color:#000000;"><br></br></span><span style="color:#008080;">42</span> <span style="color:#000000;">            </span><span style="color:#008000;">//</span><span style="color:#008000;"> Code to update Twitter</span><span style="color:#008000;"><br></br></span><span style="color:#008080;">43</span> <span style="color:#008000;"></span><span style="color:#000000;">        }<br></br></span><span style="color:#008080;">44</span> <span style="color:#000000;">    }<br></br></span><span style="color:#008080;">45</span> <span style="color:#000000;">}</span></div>

編譯完之後,會發現無法收到callback event… 持續探討(The New Live Writer SDK) 的原始碼之後。 發現問題可能出在

<div><!--<br></br><br></br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br></br>http://www.CodeHighlighter.com/<br></br><br></br>--><span style="color:#008080;"> 1</span> <span style="color:#000000;">    </span><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">class</span><span style="color:#000000;"> HelloWorldPlugin : ContentSource<br></br></span><span style="color:#008080;"> 2</span> <span style="color:#000000;">    {<br></br></span><span style="color:#008080;"> 3</span> <span style="color:#000000;">        </span><span style="color:#0000ff;">public</span><span style="color:#000000;"> </span><span style="color:#0000ff;">override</span><span style="color:#000000;"> DialogResult CreateContent(IWin32Window dialogOwner, </span><span style="color:#0000ff;">ref</span><span style="color:#000000;"> </span><span style="color:#0000ff;">string</span><span style="color:#000000;"> content)<br></br></span><span style="color:#008080;"> 4</span> <span style="color:#000000;">        {<br></br></span><span style="color:#008080;"> 5</span> <span style="color:#000000;">            content </span><span style="color:#000000;">=</span><span style="color:#000000;"> </span><span style="color:#800000;">"</span><span style="color:#800000;"><b>Hello World!</b></span><span style="color:#800000;">"</span><span style="color:#000000;">;<br></br></span><span style="color:#008080;"> 6</span> <span style="color:#000000;"><br></br></span><span style="color:#008080;"> 7</span> <span style="color:#000000;">            </span><span style="color:#0000ff;">return</span><span style="color:#000000;"> DialogResult.OK;<br></br></span><span style="color:#008080;"> 8</span> <span style="color:#000000;">        }<br></br></span><span style="color:#008080;"> 9</span> <span style="color:#000000;">    }<br></br></span><span style="color:#008080;">10</span> <span style="color:#000000;"></span></div>

也就是主要是因為有implement ContentSource 的關係,造成無法收到相關的event。 這個主要原因可能有待詳細查看。當你改好並且把DLL 複製好之後你就會在你的blog 的plugin上面查看到。

WLW0908.jpg

以上..

第一個Windows Live Writer plugin "Hello World" (sample code)

這裡敘述的Hello Wolrd主要是利用Ben Hall的一篇文章Windows Live Writer Plugin - Hello World!。 (Related code and article refer from this)

必要工具:

  • Visual Studio (這裡用的是2005)

  • 安裝過的Window Live Writer (這裡裝的是最新版B14.0.8089)

詳細流程:

  • 開啟Visual Studio(2005),選取C# Project的Class Library。

WLW_01.jpg

  • 講兩個需要用的reference 加入參考,首先打開”References” 按下右鍵。”Add References”

WLW_02.jpg

  • 加入一個”System.Windows.Forms”在COM裡面,此外再加入一個額外Windows Live Writer API DLL。選取”Browse”然後點選C:Program FilesWindows LiveWriterWindowsLive.Writer.Api.dll。

WLW_03.jpg

  • 加入以下的source code. (This source modify from Ben Hall’s article)

    using System.Windows.Forms;
    </br>using WindowsLive.Writer.Api;
    </br>
    </br>namespace LiveWriterHelloWorld
    </br>{
    </br> [WriterPluginAttribute
    </br> (“2f437bf1-fe57-41c8-931a-d20066ea174e”, “Hello World!”,
    </br> PublisherUrl = “http://wlwextensionlearning.blogspot.com/”,
    </br> Description = “Insert Hello World! into the blog post”)]
    </br> [InsertableContentSourceAttribute(“Hello World!”, SidebarText = “Hello World!”)]
    </br> public class HelloWorldPlugin : ContentSource
    </br> {
    </br> public override DialogResult CreateContent(IWin32Window dialogOwner, ref string content)
    </br> {
    </br> content = “Hello World!”;
    </br>
    </br> return DialogResult.OK;
    </br> }
    </br> }
    </br>}
    </br>

  • 複製DLL到C:Program FilesWindows LiveWriterPlugins 然後重新啟動Windows Live Writer應該就會看到這個新的plugin.

WLW_04.jpg

  • 直接按下去就會跑出 “Hello World”

參考文章:

讀書心得-自慢2:主管私房學─小職員出頭天

> > 暢銷書《自慢---社長的成長學習筆記》一書作者何飛鵬的最新力作,也是何飛鵬人生三部曲:工作者、主管、創業者的第二部曲:《自慢2:主管私房學》 > > > > 小職員永遠被人管,主管才可以縱情發揮;小職員受制於人,主管則可以領團隊的薪水,因此,升成主管,是小職員出頭天的最佳途徑。本書內容涵括從工作者到主管的態度與學習、格局與遠見、用人與團隊、專業能力及技術、決策的能力,以及一些最核心的價值與觀念。 > > > > 資料來自: [博客來網路書店](http://www.books.com.tw/exep/prod/booksfile.php?item=0010396270) > >

讀書心得:

最近把這本書拿出來整個看,雖然何飛鵬的寫法與一些國外撰寫管理書籍的人不太一樣。 怎麼說呢~~~~ 你會覺得這本書像是何飛鵬在你面前跟你談到關於管理、關於當經理人的一些技巧。這本書主要是談到何飛鵬再當經理人的一些過程。當然沒有人一生下來就是當經理人的,大家都是升上了經理人才學習當經理人;就像是當了老爸~才開始學習當老爸是一樣的。

整本就是圍繞著~經過不斷的努力之後。如果你不好容易升上當經理人,帶領著一批人,你要如何去帶領它們走向更美好的路呢? 這本書有列出一些作者曾經犯過的錯誤~ 我看了感觸相當的深~ 分享給大家。

將帥無能,累死三軍:

既然~你能夠帶領那群人,當然你的工作能力是比他們強的。但是由於很多剛升上經理人的人,一開始還無法領會帶領團隊的經理人~~ 往往會因為太過著急~ 不是變成會不斷的催促屬下;就是會自己跳下來做。這往往是一開始身為經理人的最大忌諱。 不過經常在職場上,我們都會看到一開始的經理人都會自己跳下來幫屬下做事。

不然就是經理接了太多事情回來,但是給屬下的時間~~ 卻是依照自己的工作能力來給予期限~ 搞得每個部屬都做得要死要活。

今日你做、明日我想:

經理對於整個團隊的影響,應該是在規畫整個團隊的走向;而不應該去管今天團隊的細節。所以如果整個團隊的走向無法確切的規畫出來,那麼帶領團隊的經理就責無旁貸。也就是說~ 經理應該要專心的去規畫整個部門的走向,而不要一直介意著你的員工今天幾點下班,他在做些甚麼?

這裡列出一些書上提出的概念~

> > 【主管必修十堂課】—將帥無能、累死三軍;大碗喝酒、大塊吃肉;給錢爽快、分贓公平;寶相莊嚴、香火綿延;今日你做、明日我想等主管必學的課程。 > > > > 資料來自: [http://www.books.com.tw/exep/prod/booksfile.php?item=0010396270](http://www.books.com.tw/exep/prod/booksfile.php?item=0010396270) > >

蠻推薦這本書的,已經當主管的可以拿來審視自己;還沒當主管的可以拿來對照你的主管~拿來警惕自己。

讀書心得-動機、單純的力量(DRIVE: The Surprising Truth About What Motivates Us)

動機,單純的力量:把工作做得像投入嗜好一樣有最單純的動機,才有最棒的表現

過去,我們大部分的人都遵循著如下的行為模式:老闆答應我們加薪,我們工作就格外賣力;用功可望拿到好分數,我們就花更多時間讀書;遲到要扣薪水,我們就乖乖準時上班……這一切係由外在動機所構築出的回報系統──只是我們所有人都是追著棍子上的胡蘿蔔跑的驢子。這種動機論在大量生產的工業時代或許行之有效,但隨著資訊時代取代工業時代以降,短期獎勵和依據績效計酬的薪資制度往往效果不彰甚至弊多於利,而外在動機論也往往讓有關創意的問題解決陷入困境。人類天生就有追求新奇與挑戰、延伸並鍛鍊自己能力、主動探索與學習的內在傾向,如今我們所從事的那些非制式化、藝術創意,或是宏大遠景的工作,在在需要經由內在動機來達成目標。這種內在動機論已然超越外在動機論,成為現代生活最有希望的一種力量,不僅是個人轉型圖進最有力的一個工具,同時也是你我必須瞭解並活用的最新人才趨勢。

資料來源: 博客來網路書局

讀書心得:

YouTube

最近看過一個短片,講的是如何激勵人的方式。於是好奇的把這本書買回來看,好好的了解。一直以來在公司裡面擔任的是專案管理工作的我,其實日常工作中就是不斷的追所有專案中的進度,不論是新東西的研發、RD的研發部分以致於到測試工程的進行,都是我們要進行的部分。 但是常常也會聽人同仁們發出許多負面的情緒,於是當然會想把這本書想要表達的事情好好的了解。

這本書講解最令人驚奇的概念,就是以往我們以為任何能夠增加生產力的方式。不外乎就是

> > "當你表現得相當優異、我就會給你更多的報酬;相反的,如果你表現的不夠好,我就會給你處罰"。 > >

這樣的準則看起來相當的正常,但是根據這本書的研究發現,往往這樣的準則會讓例行性人員拼命衝刺。(這裡指的例行性人員指的就是像是作業員、組裝人員…等等不需要創造力的工作。)但是如果這樣的準則施行到研發人員的身上,本書發現那樣會使研發人員的目光變的狹隘、無法對於更寬廣、更有效率的思索與進行研究。 沒錯”獎賞”與”懲罰”,在這裡的狀況下,會讓馬(員工)跑得更快,但是也會狹隘了他的視野~ 所以當你需要衝刺的時候,這才是能夠使用的方式。

那如果我希望我公司的RD都能夠有寬廣的思考模式與更棒的研究成果呢? 本書提出了幾個方式,希望能夠由員工內向的激勵方式來增加更好的工作效率。

自主: 就是讓員工自己對自己負責,裡面有提到有些軟體公司每過幾個月會有所謂特別一天讓員工自己做自己的事情,只是你需要報告你與你的伙伴們做了一些甚麼,慢慢這間公司老闆發現,這間公司有超過一半的營收都是來自於那些自主性的發明。

專精: WIKI是全世界有最多GURU(指的是導師、達人)的網站,讓你的員工能夠專精在某些事務上,他們會更願意付出、甚至願意廢寢忘食。

目的: 我想這也是許多書裡面都會敘述的願景,當公司能夠規劃出更好的願景,員工就會為了這樣的目的去貢獻自己的心力。

這本書其實有很多好的想法,相當適合腦力專精的公司經理人來看。不過員工可能不愛看了~ 因為老闆看完就不一定會給你更高的薪水啦~~~ 哈哈

NBA Elite11打掉重練、背水一戰~~~~

NBA ELITE 11,NBA Elite 11

EA Sport 的NBA遊戲一直都是使用NBA LIVE 系列~ 但是自從Live 09 大敗給 2K sport Game 的 2K9 之後~~~之後就越來越慘了~~~

後來他們總算決定要砍掉重練之後~ 現在總算要好好的練出一些新功能~~

[youtube http://www.youtube.com/watch?v=KUbNEBd-u5Q&hl;=en]

> >

第一個是: 更好的畫面

我自己感覺是~ 跟LIVE 07一樣~ engine 完全是依樣的~~~~ 只能說不期不待~ 感覺是硬擠出來的新功能~~

第二個是: 更好的操控

這個我很期待~ 基本上概念是 左邊蘑菇是操控腳~~~ 右邊蘑菇是手~~~~ 其實跟2K的有點像。2K的是運球可以帶起來~~~ 換手與加速, 右蘑菇一樣是投球相關~~~ 可以參考以下的圖片

http://www.gamespot.com/xbox360/sports/nbalive11/images/0/3/

Image 3

到底這樣打掉重練會不會有成果呢~~~ 而且EA 還把 NBA JAM 也加進去了~~~ 不過我個人還是覺得 2K的 MP(My Player)模式依然是主打點~~~~ 畢竟2K10 的MP實在太好玩了~~~~~~ 其實我個人還是喜歡Live系列的(畢竟我買了好幾片) 不過只能說2K真的太好玩了~~~~~~~