February
19th,
2014
其實應該是不難,只是一直很難找到正確的解答.可能是WPF,Windows Phone與Store App會有不同的結果,稍微記錄一下.
需求:
在Windows Store App中,有些圖片,希望可以用程式的方式來決定讀取的方式.
解法:
找了半天,不論是
<code style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;font-family:Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;" class="pln">img1</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;" class="pun">.</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;color:#2b91af;background-position:initial initial;background-repeat:initial initial;" class="typ">Source</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;" class="pun">=</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;color:#00008b;background-position:initial initial;background-repeat:initial initial;" class="kwd">new</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;color:#2b91af;background-position:initial initial;background-repeat:initial initial;" class="typ">BitmapImage</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;" class="pun">(</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;color:#00008b;background-position:initial initial;background-repeat:initial initial;" class="kwd">new</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;color:#2b91af;background-position:initial initial;background-repeat:initial initial;" class="typ">Uri</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;" class="pun">(</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;color:#800000;background-position:initial initial;background-repeat:initial initial;" class="str">"ms-appx:///Assets/Common_Pic/image2.png"</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;" class="pun">,</span><span style="margin:0;padding:0;border:0;font-size:13.63636302948px;vertical-align:baseline;background-color:transparent;color:#2b91af;background-position:initial initial;background-repeat:initial initial;" class="typ">UriKi</span></code>
甚至也把URI 換成 System.Uri也是不行.
後來找到這篇文章才終於搞定Load Image Dynamically From Application Uri in Windows Store Apps
步驟寫一下:
首先千萬記得把你要變動的圖片記得讀進project 中,內容可以設定為 content. 檔案方式可以用成copy if newer
之前主要失敗的原因是,檔案在那個時候其實還沒有完全讀完畢,所以需要用 StorageFile 來讀取
記得讀取檔案是 async 的動作,所以得用 await 強制它讀完繼續執行
最後再把檔案用BitmpImage包起來並且傳給 image.Source
完整程式碼可參考底下~或是去看鏈結
參考:
主要解法: http://www.c-sharpcorner.com/UploadFile/99bb20/load-image-dynamically-from-application-uri-in-windows-store/
其他問相關問題~當做參考吧
http://stackoverflow.com/questions/21283400/how-to-change-images-source-windows-store-app-with-code/21881311#21881311
http://stackoverflow.com/questions/12450906/metro-windows-store-app-relative-image-source-binding-does-not-work
http://stackoverflow.com/questions/11836032/setting-image-source-programatically-in-metro-app-image-doesnt-appear/21881098#21881098
繼續閱讀
February
15th,
2014
繼續不斷地學習,不斷的回復自己的記憶
#define 在compiler階段就會展開,所以要確認清楚他的展開方式,比如
#define M1(x) X5+3
M1(5)5 ==> 55+35 => (55)+(35) = 40
他可以不止一行~對於只有一行的if 判斷要小心 if(a) staement Macro(b) , Macro(b) b++; b—; 在此~ b–將會跑不到. 怕失誤要加上 {} 或是改成 inline function
參數有 # 會加上 escape character,也就是 “ —> ”
#define值並不會有值~也就是
#define FOO1
#ifdef FOO1
.. statement1
#endif
跟 if (FOO1 == 0) 是不同 (其實這樣會compiler error)
如果要#define 一個數字~要換成常數 (constant) exam: #define FOO 5.3
如果只有一個檔案要用,改成 static const FOO = 5.3;
多個檔案 extern const FOO= 5.3;
CPP裡面 const FOO=5.3;
當專案大的時候,由於 .h 會被很多的檔案載入~所以define macro 不建議放在 .h 容易被其他人用到(或是override)
http://qualitycoding.org/precompiled-headers/
建議寫在.c 或是 .cpp 並且在用完之後馬上 #undef 避免被蓋掉(override)
詳細code整理我放這裡: https://gist.github.com/kkdai/9014911
參考資料:
http://bbs.nsysu.edu.tw/txtVersion/treasure/program/M.855729774.C/M.948127113.E.html
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Preprocessor_Macros#Preprocessor_Macros
http://openhome.cc/Gossip/CppGossip/inlineFunction.html
http://web2.fg.tp.edu.tw/~cc/blog/wp-content/uploads/2010/06/20100715advanceC.pdf
http://anna-zr.iteye.com/blog/510368
Include guard about define http://en.wikipedia.org/wiki/Include_guard
http://qualitycoding.org/precompiled-headers/
9 Code Smells of Preprocessor Use http://qualitycoding.org/preprocessor/
繼續閱讀
February
13th,
2014
主要注意到這個是因為meetup上面的活動
開始去查一下關於Docker的內容,但是由於它能做的事情太多了.我也只貼出一些我所了解的部分
Docker可以將PAAS裡面的OS或是App拆解成container並且快速讀取或是執行
整個速度大概是一秒就載入完成
Docker 也可以run某一種單一app的結果~比如ping或是 bash
Docker的 image在寫回去前都會保持原樣~所以可以快速地使用並且安全得保存
如同下面影片,你可以載入bash大膽的把 /etc /bin 都刪除~然後離開~馬上再載入..
甚至可以把整個PAAS載入後加上你的修改來看結果.
這裡可以去官方網站玩demo
相關資料:
官方網站: https://www.docker.io
Present 影片 http://www.youtube.com/watch?v=Q5POuMHxW-0
中文介紹: http://tiewei.github.io/cloud/Docker-Getting-Start/
繼續閱讀
February
12th,
2014
記錄一下,最近的一些小筆記
關於Android App安裝到device上面:(在Win8上面)
如果要註冊非官方授權的device(比如說大陸貼牌device)
需要去[裝置管理員]把裝置例項路徑中把VID抄起來(ex:1D06)
把資料抄到 ADT裡面的 SDKExtragoogleusb_driverandroid_winusb.inf
滑鼠移到右下角,選擇[變更電腦設定]
[更新與復原]->[復原]->[進階啟動] 來重開機
將裝置管理員裡面無法認識的裝置驅動程式選到 剛剛那個檔案android_winusb.inf
如此一來可以把裝置識別出來為 [Android通用裝置]
到 user_data/.android/adb_usb.ini
注意: 如果因為android SDK 更新這個動作需要重新做一次
把裝置新增上去起來 比如 0x1D06
重啟Eclipse~就能正常讀取
用Eclipse 把App裝到android裝置上面(手機/平板)
使用Adb command line
[File]->[Export] 成 api
這時候會設定你的私密金鑰
輸出後使用 adb來安裝
adb install helloworld.apk
可以先用 adb devices 確認裝置有讀取到
或是使用 adb kill-server 來強迫重新讀取裝置
開啟Android 專案出現 [invalid project description]
這時候不能使用 Add Android using exist code
using [import]->[general]->[Existing Project into workspace]來載入
相關資料:
How to install android app into android device: http://readandplay.pixnet.net/blog/post/139916128
About project loading error: http://www.itkee.com/developer/detail-725.html
Camera sample code: http://simonxanderandroid.blogspot.tw/2011/02/android-camera.html
Using full size camera surface http://stackoverflow.com/questions/11278253/stretching-camera-preview-to-full-screen-in-android
繼續閱讀
February
9th,
2014
圖片: 使用iPhone Client當遙控器或是遠端選取影片來播放,目前播放的是LETV上面的電視劇
之前去上課回來後一直沒有弄,趁開工的空擋前把它弄好了.
這裡備註一下一些note:
網路設定中,Wifi 的密碼屬於 WEP或是WPA要確定好~這個弄不好就一定連不到.
由於我當初安裝的時候選擇英文當主要語系,所以PPS/LETV中文都無法顯示~不過使用iPhone Client 就好了
不得不誇獎,iPhone XBMC Client “Constellation”寫的真好,我都想付錢買完整功能:
可以自動配對,對於你忘記電腦網路IP超好用..
可以用 手指頭當選當選擇
可以直接選擇所有功能,電影,音樂甚至是Plugin
中文顯示看起來不錯(有些人說有亂碼)
Android Client 我也看了一下~不過還沒有看到很好用的,如果有好用的請推薦
關於中文影片播放部分,不知道是不是種花電信的問題,我這裡比較順暢的事 Youku, LETV跟PPS都不算順
參考資料:
http://blog.changyy.org/2013/07/raspberry-pi-raspbmc-ppstream.html
http://gsyan888.blogspot.tw/2013/05/raspberry-pi-raspbmc.html
http://raspberrypi.stackexchange.com/questions/2169/how-do-i-force-the-raspberry-pi-to-turn-on-hdmi
http://elinux.org/RPiconfig
http://elinux.org/R-Pi_ConfigurationFile
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=5&t=5851
http://www.element14.com/community/thread/18205/l/how-to-get-sound-over-hdmi-working-when-using-a-tv?tstart=0
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=28&t=23624
繼續閱讀
February
8th,
2014
Virtual Base Class
多重繼承如下圖的時候
如果要使用
D *dptr = new D();
D->L::para1
會有compiler error :: Ambiguous conversion
因為實際的的compiler 會把 B1與B2 個編譯出一個L 為實體(class table)
所以要取用D 中的 L會有兩個目標出現
==> 解法: 使用virtual base class 在 B1 與 B2
class L { /* ... */ }; // indirect base class
class B1 : virtual public L { /* ... */ };
class B2 : virtual public L { /* ... */ };
class D : public B1, public B2 { /* … */ }; // valid
Ambiguous Base Class:
一樣的Case但是在 B1 與 B2裡面都有命名 變數 nB
若是要使用
D *dptr = new D();
D->nB
則會出現 compiler error
==>解法: 必須將要使用的 nB 定義清楚, 比如說 D->B1::nB 或是 D->B2::nB
詳細程式如下:
參考資料:
https://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr135.htm
https://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr135.htm
繼續閱讀