網頁

2017年9月1日 星期五

[C++] constant of pointer

身為一個專業的C/C++工程師如果不懂 constant of pointer 真的就太鳥了。

各位大神肯定了解,就容小弟整理出來。

If I write,

char     *const *const *const test1 = ppstr;

only ***test1 can be modified.

so,

char           *const *const *const test1 = ppstr;
char  const *         *const *const test2 = ppstr;
char  const *const *         *const test3 = ppstr;
char  const *const *const *         test4 = ppstr;

***test1 = NULL; //OK
**test2 = NULL; //OK
*test3 = NULL; //OK
test4 = NULL; //OK

//**test1 = NULL; //compile error
...

The method is viewing from right to left, and see if any const in the lefthand of to modified obj, if there is, this obj can not be modified or compile error.

e.g.
char  const *const *const *         test4 = ppstr;
                 ^4       ^3      ^2       ^1
// test4 can be modified, due to there is no 'const' in the lefthand of ^1.
// This also means test4 is pointer of pointer of pointer of char which can be modified


2017年7月21日 星期五

[AWS] run dynamodb example locally on macOS

目標:

run dynamodb example locally on macOS

環境:

macOS Sierra 10.12.5
node js

步驟:

1. install aws-sdk for node
npm install aws-sdk

2. install java (do not use oracle website to install or fail)
brew update;brew cask install java;

3. download dynamodb jar file
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

4. run dynamodb locally
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

5. edit js file named MoviesCreateTable.js
http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.01.html

6. run js
node MoviesCreateTable.js

來源:

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

遇到的問題:
some api will not work

2017年6月2日 星期五

how to use synology docker gitlab and use xcode to commit and push code ?

step1. on Synology DSM, install "docker gitlab"
step2. login "docker gitlab"
step3. create project in "docker gitlab" (e.g. xxxx)
step4. open xcode and "source control > xxxx - master > configure xxxx > Remote (+)":
         [your DSM IP]:3000/root/xxxx.git

step5. commit code in xcode: "source control > commit..."
step6. push code in xcode: "source control > push..."

2017年4月17日 星期一

git grep for a pattern

假如想要找某一行 code 這樣的 pattern 在某個 commit 的 log
可以這樣下:

git grep '[pattern]' [sha]

如果想要找全 history 可以這樣下:

git grep '[pattern]' [sha] $(git rev-list --all)


如果還想要檢查前面 20 行 可以這樣下:

git grep -B20 '[pattern]' [sha] $(git rev-list --all)

2017年4月15日 星期六

[C++] Any input type template function

主題 : Any input type template function

引言 : C++ 11 引入了此功能,讓 function 可以吃同類型任何型態的參數進來,並且還保持原來 type 的樣子。

描述 :
這名字我亂取的,我只是想要說明這樣的 pattern 的寫法可以讓你寫出一個 template function 可以吃所有同類型的 TYPE, TYPE&, TYPE&& ...

這真的很強大,不必再 for reference input 寫一個 function,for right value input 再寫一個 function。

已經有文章寫得很好了,請參照
http://thbecker.net/articles/rvalue_references/section_01.html
~
http://thbecker.net/articles/rvalue_references/section_08.html

一句話解釋,"當你想把 type 忠實的傳入到 func 內使用請使用以下的 pattern"
細節請讀 section_01~section_08

以下是 section_01~section_08 給的 factory design pattern 的範例,
這個 factory template function 的 arg 可能吃 1. value 2. reference 3. right value ...
因為 C++ 很在意 type,type 不對就 compile error
那我們要怎麼寫一個任何 type 都能傳入的 function 呢 ? 如下 function,


template<typename T, typename Arg> 
shared_ptr<T> factory(Arg&& arg)
{ 
  return shared_ptr<T>(new T(std::forward<Arg>(arg)));
} 

當 Arg 是 X 則 new T(X)
當 Arg 是 X& 則 new T(X&)
當 Arg 是 X&& 則 new T(X&&)

很神奇吧,我的說明肯定不會比 section_01~section_08 還好。
如果你想知道為什麼,耐著性子看完你就會知道為什麼了。

2017年4月14日 星期五

[App] iTunes Connect Screenshot Sizes for iPhone and iPad

image:
iPhone 6 Plus(5.5 Inch): 1242 x 2208 px

iPad Pro (12.9 Inch): 2732 x 2048 px

video: (in 15 or 30 seconds)
iPhone 6 Plus(5.5 Inch): 1080 x 1920 (Portrait)

https://developer.apple.com/support/app-previews/

2017年4月8日 星期六

[App] 如何一鍵刪除 iPhone/iPad 裡面所有的照片 ?

【軟體名稱】Photo Trash Can
【程式開發】Chun-Pai Yang
【軟體類別】工具
【軟體大小】13.5MB
【軟體售價】0.99 鎂
【下載連結】點我


【Photo Trash Can 介紹】如何一鍵刪除 iPhone/iPad 裡面所有的照片 ?

Photo Trash Can 是一款刪除所有照片/影像的 App。許多用戶在使用完一些備份軟體如: Synology DS Photo 或是 dropbox .. 將 iPhone/iPad 裡面的照片/影片全部備份完後,這些軟體並不會自動地將 iPhone/iPad 裡面的照片/影片刪除。此時就是使用此軟體的時機。

 若沒有此軟體在相片備份完後必須使用 Mac Book 的 Photo App 匯入並且一次刪除所有照片。
相當的麻煩 ...
Inline image 7
Inline image 5

▼ Photo Trash Can 一開始的畫面,意思就是你真的要想清楚才按下此鍵:
Inline image 1▼ 當點下這個紅色的按鈕後,會要求你輸入你 iPhone/Ipad 裡的 相片:影片 數目,以避免誤操作:
Inline image 3

▼ 當做完一些最終的確認後,你所有的照片和影片就全數被刪除了:
Inline image 4

 刪除後其實全部的照片都可以從 Apple 的內建 Photos App 的 "最近刪除" (Recently Deleted) 相簿中。
若想要回復可要一張張的救回來了。
所以在使用此軟體前可要先確保你所有的照片都已經備份了喲。

但對於像是作者平時很懶,會有幾千張照片才會用 Synology DS Photo 備份一次並在備份完想要刪除所有照片的人真的是相當的方便。


如果您喜歡 Photo Trash Can的話,還請您不吝於給予我們五顆星的評價 (馬上前往)
有任何疑問/功能建議,都歡迎聯絡我們喔!
Photo Trash Can Facebook粉絲團:https://www.facebook.com/Photo-Trash-Can-716543165173369
Photo Trash Can 聯絡Email:phototrashcan@gmail.com
Inline image 2