2018年6月14日 星期四

[usb] Speend of Version



USB3.0










目前的 USB Type-C 存在了 USB 3.1、3.0 甚至 2.0 三種傳輸規格(速率依序為 10GB/s、5GB/s 與 480Mbps),更不用說還有 Thunderbolt 3 等在後頭,就連影像傳輸的 Displayport 與 HDMI 也都來手插一腳









REF

https://www.kingston.com/en/usb/usb_30
http://www.qacqoc.com/what-is-usb-type-c/
https://technews.tw/2016/06/28/myth-of-usb-type-c/



2018年6月13日 星期三

[C++]中LPCTSTR、CString、char *、string之間的相互轉換


C++中LPCTSTR、CString、char *、string之間的相互轉換

字元集

在VC2012中,字元集默認採用Unicode字元集(Use Unicode Charecter Set選項),其值還可以設置為多位元組字元集(Use Multi-Byte Charecter Set)。

為什麼要使用Unicode

1.     可以很容易地在不同語言之間進行資料交換。

2.    使你能夠分配支援所有語言的單個二進位.exe文件或DLL文件。

3.    提高應用程式的運行效率。

Windows 2000是使用Unicode從頭進行開發的,如果調用任何一個Windows函數並給它傳遞一個ANSI字串,那麼系統首先要將字串轉換成Unicode,然後將Unicode字串傳遞給作業系統。如果希望函數返回ANSI字串,系統就會首先將Unicode字串轉換成ANSI字串,然後將結果返回給你的應用程式。進行這些字串的轉換需要佔用系統的時間和記憶體。通過從頭開始用Unicode來開發應用程式,就能夠使你的應用程式更加有效地運行。
Microsoft
公司將COM從16位Windows轉換成Win32時,公司決定需要字串的所有COM介面方法都只能接受Unicode字串。

Windows定義的Unicode資料類型有哪些

WCHAR Unicode字元;
PWSTR
指向Unicode字串的指標;
PCWSTR
指向一個恒定的Unicode字串的指標;
對應的ANSI資料類型為CHAR,LPSTR和LPCSTR;
ANSI/Unicode
通用資料類型為TCHAR,PTSTR,LPCTSTR。

如何對Unicode進行操作

ANSI 操作函數以str開頭 strcpy
Unicode
操作函數以wcs開頭 wcscpy
MBCS
操作函數以_mbs開頭 _mbscpy
ANSI/Unicode
操作函數以_tcs開頭 _tcscpy(C運行期庫)
ANSI/Unicode
操作函數以lstr開頭 lstrcpy(Windows函數)
所有新的和未過時的函數在Windows2000中都同時擁有ANSI和Unicode兩個版本。ANSI版本函數結尾以A表示;Unicode版本函數結尾以W表示。Windows會如下定義:

[cpp] view plain copy

1.   #ifdef UNICODE  

2.    #define CreateWindowEx CreateWindowExW  

3.    #else  

4.    #define CreateWindowEx CreateWindowExA  

5.    

[python] 靈蟒Python


一邊閱讀文檔,再輔助以相關的理論基礎,持之數日,則大業可成也。


01 靈蛇出現,必有異像

蛇有靈性,蟒蛇更甚。民間關心打死蛇後出現的種種因果報應現象,相信各位也多有耳聞。身邊聽到的一個是,一個老太打死了一條蛇,第二年她女兒便離婚了。

青城山下的一條蟒蛇修行千年終得人生,由此可見,蛇有強大的靈性,而且還告訴我們一個道理:修得人的身體很難啊!

佛法有雲:生中國難,得人身難,聞佛法難,生信心難。(注:中國,原指印度,中心之國。)

Python既是一條大蟒蛇,自然算是程式設計語言中很有靈性的了。

今既得人身,又聞佛法,且學Python,當然得用來做點什麼吧!

當今,Python最熱的領域,估計非資料分析、資料採擷莫屬了!

02 靈蟒Python,事實標準

只要你沒有太久閉關修練絕世神功,只要你用眼睛餘光瞭解過資料分析相關領域,相信你會有個感覺,怎麼處處都有Python的蹤影啊!

每種電腦程式設計語言,似乎都有自己成名或適用的領域。

在這個大家都在談雲計算、大資料、深度學習的時代,讓我們來看看,這些領域裡面的代表吧。

以Docker為代表的雲計算與虛擬化,這是Go的天下。國內使用Go最出名的,當屬七牛了;

以Hadoop為代表的大資料框架,這是java的天下。國內這塊最強的,當然首推阿裡了;

以Spark為代表的記憶體反覆運算框架,這是Scala的天下;

以Scikit-Learn為代表的資料分析領域,從這裡開始,便是Python的天下;

說句不負責任的話,Python已經成為資料分析領域裡事實上的標準語言。

03 Python一出,誰與爭鋒

且來看看,Python在資料分析領域的生態圈吧!

a. 基礎庫

Numpy: 矩陣計算與其它大多數框架的資料處理基礎;

Scipy:科學計算庫,提供了很多科學計算工具包和演算法;

Matplotlab:專業畫圖工具,話說這個單詞還是真是在Matlab之間插入了plot這個詞形成的;

Pandas:提供類似於R語言的DataFrame操作,非常方便;

……

b. 機器學習與深度學習

OpenCV:提供圖像識別的很多方便的操作;

Orange:基於圖形介面的機器學習程式,也可以用Python腳本來操作調用;

Scikit-Learn:前面說了,這是Python在機器學習領域裡面的代表作。尤其是它的文檔,完全可以當成機器學習的參考資料來閱讀了,曾經我向朋友推薦的時候說,說過,把scikit-learn的文檔當成佛經來讀,假以時日,功力定會大增。

Theano:深度學習裡面非常有名的一個框架了,也非常具有代表性。是其它很多框架的基礎。

Keras:基於Theano進行了抽象,建議入門的話使用這個,搭積木一樣地就可以弄個神經網路出來了。

NLTK:自然語言處理,提供的功能也很強大。

國內出品的Mxnet的Python介面

……

c. 分散式機器學習與深度學習

Spark之MLlib的Python介面Pyspark

H2o的Python介面

收費的Graph Create的Python介面

Google最近剛出的TensorFlow的Python介面

三星最近剛出的Veles,目前只提供Python介面

……

也許,新的機器學習或深度學習框架,如果不提供Python介面的話,恐怕會被認為難以推廣吧。

上面列舉的只是其中一部分,還有很多很多。當然,他們很多並非是用Python來實現,但都共同的提供了Python介面,甚至好幾個都把Python當成了頭等公民(First-Class)。

在此並非想說Python這門語言很強大或者複雜,而恰恰相反,得益於Python的簡潔和包容。才讓它在資料採擷領域有如此的地位。

這便是生態圈的力量,不以個人的意志為轉移。

04 書山有路,學海無涯

對於想入門資料分析、資料採擷、機器學習的朋友來說,Python是你值得花時間的選擇。因為,除了上面的工具鏈生態圈,還有書籍和知識傳播的生態圈。

如文章開篇之圖,都是和資料分析相關的書籍,且都是用Python作為示例來講解。

如若有心,且仔細看圖識字!

05 念念不忘,必有迴響

真若有心於資料領域,甚或欲從事資料科學之職業。請對Python有信心,值得你付出時間。想走機器學習之路,Scikit-learn是你最好的選擇,一邊操作實例,一邊閱讀文檔,再輔助以相關的理論基礎,持之數日,則大業可成也。



ref: 

https://www.jianshu.com/p/6e57b4f485fb

 

 


[C++] CreateDirectory




#include <windows.h>
 
if (CreateDirectory("Smart", NULL))
{
    // Directory created
}
else if (ERROR_ALREADY_EXISTS == GetLastError())
{
    // Directory already exists
}
else
{
    // Failed for some other reason
}

REF:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx