[C/C++] [template] concept check的簡單實作
可搭配參閱上篇文章: [insert page=’198′ display=’link’] concept check導入目的,是為了讓template所產生的編譯錯誤能夠及早在概念層中就被發現,而不是等程式執行到問題發生的那一行才一次性的爆發出template具現化的過程。 例如下面的例子(出自於《C++ Templates全覽》): #include <iostream> using namespace std; template <typename T> void clear (T p){ *p = 0; // assumes T is a pointer-like type std::cout << p << std::endl; } template <typename … Continued
[Jenkins][xcode] User interaction is not allowed
http://stackoverflow.com/questions/577750/running-xcodebuild-from-a-forked-terminal/581002#581002 solution : ‧Open the Keychain Access ‧Right click on the private key ‧Select "Get Info" ‧Select "Access Control" tab ‧Click "Allow all applications to access this item" ‧Click "Save Changes" ‧Enter your password ‧Enjoy
[java][maven] maven初探
maven跟ant除了管理的層次不同之外,二個工具的差異點在於前者會提供一組預設的編譯行為及生命週期,後者則是任何步驟都需要指明。 maven預設的各種編譯參數如下: ${basedir}:pom.xml所在地,也就是執行mvn install的地方 source code:位於 ${basedir}/src/main/java resource: 位於${basedir}/src/main/resources test: ${basedir}/src/test 預設產出檔:.jar byte code: ${basedir}/target/classes jar檔產出後位子:${basedir}/target 若使用ant,上面的資訊都需要指明後才能夠編譯。 當然,在maven中上面的資訊都能夠根據專案而客製化。 在整體的功能上,maven並不僅僅只是對於make、ant之類build tool的改進而已,有更大的一部份功能是在於『Project 』的管理功能。其主要分為以下幾類: 1.Dependency Manager:有Transitive Dependencies的功能 2.Remote Repositories 3.Universal Reuse of Build Logic 4.Tool Portability / Integration 5.Easy Searching and Filtering of … Continued
[git] cygwin + git + github + openssh + jenkins除錯過程記錄
1.安裝cygwin,並將Devl跟shell打勾 2.使用openSSH來產生public/private key pair:在cygwin shell底下打入ssh-keygen,之後在C:\Users\yourname\.ssh下會產生id_rsa跟id_rsa.pub二個檔案 3.將id_rsa.pub的內容複製下來,丟到github=>account setting=>ssh keys 4.如果在安裝tortoiseGit的時候沒有選擇openSSH,則:右鍵=>tortoisegit=>setting=>network=>SSH client的選徑選成C:\cygwin\bin\ssh.exe即可 5.在github上創建一個專案,但要pull下來的時候卻遇到Error: Permission denied (publickey):將C:\Users\yourname\.ssh目錄複製到C:\cygwin\home\yourname底下 6.打開cygwin shell 執行ssh -vT git@github.com可以測試跟github的連接。 7.此時應該可以成功的進行pull 8.安裝jenkins的時候,如果打不開的話,則下netstate –no檢查8080 port是否被佔用 通常有skype的話就會發生此情形,解決辦法是先將skype關掉再打開之後,skype就會自己去找其他的port使用 9.在設定jenkins時,如果git路徑指向C:\cygwin\bin\git.exe,則jenkins會去讀取C:\cygwin\.ssh底下的private key。此時我們必須將key複製到此目錄下才行。(一開始設git repositories的時候會產生ailed to connect to repository : Command “C:\cygwin\bin\git.exe ls-remote -h xxxx returned … Continued
[Android] cocos2d-x build_native.sh permission deny
會產生這個問題,是由於權限的關係,除了可以使手動或使用指令去給予權限之外(參閱),還可以寫批次檔來處理。首先先建立一個檔案:get_all_permission.reg,然後內容設置如下: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\runas] @=”get all permission” “NoWorkingDirectory”=”” [HKEY_CLASSES_ROOT\*\shell\runas\command] @=”cmd.exe /c takeown /f \”%1\” && icacls \”%1\” /grant administrators:F” “IsolatedCommand”=”cmd.exe /c takeown /f \”%1\” && icacls \”%1\” /grant administrators:F” [HKEY_CLASSES_ROOT\exefile\shell\runas2] @=”get all permission” “NoWorkingDirectory”=”” [HKEY_CLASSES_ROOT\exefile\shell\runas2\command] @=”cmd.exe … Continued
[Android]NativeActivity:hello world
繼承時把Activity改成NativeActivity,這個類別只適用於Android2.3以及NDKr5以上的版本。 Java: package com.horizon.AndroidHelloWorld; import com.horizon.AndroidHelloWorld.R; import android.os.Bundle; import android.app.NativeActivity; import android.util.Log; import android.view.Menu; public class MyMainNativeActivity extends NativeActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(“MyMainNativeActivity”, “MyMainNativeActivity.onCreate”); } @Override public … Continued
[Android] helloworld: NDK
開發環境下載: JDK cywin eclipse: plugin ADT(for android) + CDT(for C/C++) android sdk android ndk 編輯/home/your_account/.bash_profile,並加入以下環境變數宣告(請依sdk的存放位置改變路徑) ANDROID_TOOLS=/android/android-sdk/tools/ ANDROID_PLATFORM_TOOLS=/android/android-sdk/platform-tools/ NDK_ROOT=/android/android-ndk-r8b/ NDK_SAMPLE=/android/android-ndk-r8b/samples/ export PATH=$PATH:$ANDROID_TOOLS:$ANDROID_PLATFORM_TOOLS:$NDK_ROOT:$NDK_SAMPLE 打開Cygwin Bash Shell,在windows下,因為換行的格式不同(\r\n),因此在存檔後需將格式換回unix,請執行以下指令:dos2unix .bash_profile 這樣子在每次打開Cygwin Bash Shell的時候,因為系統就會自動去執行.bash_profile這個檔案,所以便能夠自動將正確的路徑導入到環境變數之中。 試著執行: adb version,如果可以執行便表示環境變數順利載入,shell可以找到ANDROID_PLATFORM_TOOLS底下的工具。 android hello world: 新建一個android application project,然後run … Continued
[boost] iterator的種類
input iterators:在尋訪container的時候,只能做向前循序的input。 output iterators:在尋訪container的時候,只能做向前循序的output。 forward iterators:在尋訪container的時候,能夠向前循序做input及output bidirectional iterators:在尋訪container的時候,能夠向前或者向後循序做input及output 以上幾種iterator對於container中的元素只能做一次操作,bidirectional iterators在循訪之前也必須要先決定向前或向後的方向才行。 random access iterators:可以任意的向前或向後來做尋訪,並對整個container做input或output。也就是說,這個iterator並沒有任何操作上的限制。 參考 : http://www.cplusplus.com/reference/std/iterator/
[Boost] 初探Concept check
在繼續往下閱讀之前,請先了解何謂泛型機制中的concept及model相關議題,可以參閱以下文章:侯捷觀點(系列書評 2/2)【Genericity/STL 大系】 重點節錄: 『STL 的六大組件 containers, algorithms, iterators, function objects, allocators, adaptors, 全都是 concepts,實作品如 vector, list, sort(), swap() 等等 templates, … 全都是 models。』 『所謂 concept 和 model 所謂 concept,描述某個抽象型別的條件(或說需求,requirements)。concept 並不是一個 class,也不是一個變數或是一個 template 參數;C++ 語言之中沒有任何東西可以直接代表一個concept。然而,在每一個用到泛型程式設計方法的 C++ 程式中,concept 非常重要。由 concepts … Continued
[網路程式設計] 網路服務認證:OAuth
何謂OAuth?依照其官網的定義: 『An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications』 當我們要使用網路上提供的服務時,正常的做法的話,會需要使用者的帳號密碼來做登入的動作才能執行((如Facebook上的各種小遊戲及應用程式需要取得你在facebook上的朋友)。可是,我們並不能保證每個網路上的服務都是正常的,如果是釣魚網站的話該怎麼辦?當我們越頻繁的去傳送這組帳密給不同的服務使用時,就代表使用者帳號被惡意使用的風險越高。--而取得帳號密碼的服務,可以為所欲為的進行任何的事,例如改變使用者密碼。如果這組帳密同樣用在如網路銀行等對使用者而言非常重要的網站的話,那麼後果更是不可設想。 我們所需要的,是讓各種不同的third-party的服務有限度的存取他們所需要的資源。 OAuth的導入,便是為了解決這個問題。 不同於Client-Server的架構,client任何資源的請求都是利用他自己的credentials直接跟server存取。在OAuth裡,其導入了resource owner,將client對資源存取的權限抽離出來。--意即client端想對Server進任何資源的存取,都需要先向resource owner請求permission,例如:在facebook中常常會跳出請求授權的畫面,如下: 請求resource owner的permission 跟resource owner請求額外權限 … Continued