Android Studio – put project into BitBucket step by step

1.Change project setting

Android Studio -> Preferences -> Version Control

Change 「VCS」value for <Project> from <none> to Git.

2.Create local repository

VCS -> Import into Version Control -> Create Git Repository

Choose the PROJECT root directory , NOT the APP directory.

2.5 Create remote repository in BitBucket

New -> Repository

Repository name : Necessary to fill

Include a README ? : Choose No (choose Yes will cause error later)

Create Repository and you’ll see this

There’s an URL you should copy (https://yourname@bitbucket.org/your-team/your-repository-name.git).

And to use the URL in Step 3.

3.Create remote repository in Android Studio

VCS -> Git -> Remotes

Create a remote Git repository with the URI from BitBucket like the following:

https://yourname@bitbucket.org/your-team/your-repository-name.git

4.Commit to local repository

VCS -> Commit

5.Push to remote repository

VCS -> Git -> Push

6.Get project from remote repository

You are sucessful when you finished STEP 5.

Yet it is better to check out from remote repository to verify that everything necessary was pushed.

VCS -> Checkout from Version Control -> Git

Paste the same URL in step 3,

Select the local project directory (NOT the same directory in previous steps, create a whole new empty directory),

Then wait the project to be downloaded.

7.Run the app sucessfully means everything

Run the app to verify that everything was ok.

Although everything was downloaded successfully, the Android studio rejected to run the app with a prompt message 「please select the SDK version」.

File -> Project Structure -> Modules(app) -> Compile Sdk Verison

Dropdown the list menu , select the newest one SDK version, press OK button on the bottom-right corner.

Congratulations ! You’re ready to go.

Posted in Android, Android development | Comments Off on Android Studio – put project into BitBucket step by step

滑雪中毒者 行程 心得分享 2018 01

在網路上看了很多滑雪中毒者的行程資料

直到今年才下定決心報名參加

簡單結論就是「肯定,推,對初學者很友善安心的行程」

底下就以流水帳式記錄一些心得

第一天 成田機場-苗場王子飯店

* 成田機場集合

由於沒有領隊,原本有點擔心機場出關再到第二航廈集合點會很趕,結果還好。成田機場的效率很不錯,人一過移民署就看到行李已經上轉盤了。拿了行李照著地上的標線走很容易找得到(為求安心,我還是找人問了一下,確認「 Terminal 2」的方向),到了集合點跟接機人員報到,上個廁所買個飲料,就差不多到集合時間了。

* 巴士直達苗場王子飯店

一班巴士直達不用轉車,對拉行李的人而言算是最方便的選擇,只是付出的代價就是較多的時間。出發前就知道要三四個小時的車程,只是,在坐了兩個半小時的飛機之後,還是希望能快點到達目的地。

下圖就是巴士走的路線(藍色),休息吃晚飯的地方大約就在中間那個轉彎(V字型彎)的地方。中間休息站上廁所、吃飯合計三十分鐘,其實有點趕,幾乎是狼吞虎嚥的速度才吃得完。不過休息時間如果越多,到達飯店休息的時間也就越晚,所以也沒什麼可以抱怨的。結果還真的是如預期的「兩小時車程、休息半小時、兩小時車程」到飯店,比坐飛機從台灣到東京還久,真是夠折騰人的。

* 苗場王子飯店

接待人員收集大家的護照去集中 checkin,接著很快地就發給所有人護照和一個信封(裡面有房卡、早餐券、泡湯券、Locker 卡….),很快地說明了幾個集合時間、地點,就解散各自回房休息了。

第二天 全日滑雪

* 早餐

沒有照網路上說的「早餐自己買,然後拿早餐券去抵用午晚餐使用」,起床就到一樓吃早餐 buffet,東西不算很豐盛,就是一般日本飯店早餐。

由於太興奮睡不著,七點餐廳一開門就跑去吃,也因此坐到了景觀較好的位子,拿東西也還不用排隊。越晚人越多,拿東西得排隊,尤其是那個現煎的歐姆蛋,我是不懂歐姆蛋有什麼好排隊的。

(早餐餐廳的 view)

* 換裝

在王子6館二樓的一個大房間裡換裝,工作人員很貼心的將每個人的裝備,放在貼有個人姓名的椅子上,換起裝來有條不紊,很有效率,猜想應該是累積多次下來的經驗吧。

(圖片轉載自 https://aikolife.com/naeba-prince-hotel/)

* 上午課

換完裝之後,教練帶著走出飯店之前,在飯店出口處才領取貼有個人姓名的雪板。不用從飯店裡一路拿出來,很方便。

每一班的學生人數都不一定,而我們這班的教練:學生比是1:6,算是小班制。教練上起課來很用心,先教學、示範、然後指導每一個人輪流練習。教練不斷地鼓勵,讓每個人上起課來都很開心。

* 午餐

中午休息兩個小時,大家各自解散吃飯。雪板不必帶進飯店,就放在飯店出入口外的雪具架上即可,(網路上說大概日本治安好),雪板上貼名字不是怕丟掉,只是怕拿錯。

午餐找了一家拉麵/丼飯的食堂,跟高速公路休息站餐廳差不多的,簡單打發掉一頓,一個人餐費大概都在1000 元日幣上下,蠻平實的價格。

* 下午課

教練會看大家的學習進度決定,不過看網路上和我們這一班的情形,都是「上午在飯店門外的斜坡上課,下午就搭纜車(4號 Pair Lift No. 4)到山上(Trail No. 4)上課」。

原則上,上下纜車椅都是只固定一隻腳在雪板上。而對於有些不會或不敢的學生,還是有變通的方法,就是「走上纜車椅,下纜車椅時抱著板子用跑的」。用跑的有兩個問題:一個是「真的也沒有比較簡單」;另一個是,「有些纜車不允許抱著板子用跑的(有可能是怕程度不夠上那個滑雪道)」。

下午課比起上午課更是輕鬆愉快。因為上午課要不斷地自己「走上坡」然後滑下來,很累人,下午只要「站起來滑」和「坐下來休息」。

* 下課收裝備

每個人就把雪板收到 Lobby 層的 Locker (每個房間一個)中,不必集中繳回或帶回房間。我們是連雪鞋都收在 Locker 裡,穿拖鞋回房間。

(圖片轉載自 https://aikolife.com/naeba-prince-hotel/)

* 晚餐

向教練訂了oka 旅館的火鍋晚餐,每人1500元日幣的餐費(飲用水免費,飲料則要另外付費),平實的一餐。

晚上六點左右 oka 派車來王子飯店接人,用餐後 oka 也會派車送客回王子飯店,不必擔心交通問題。

oka 老闆會說華語,店裡也有部份會說華語的服務人員,不必擔心語言不通的問題。

第三天 全日滑雪

* 早餐

懶得自己買早餐(便利店裡也沒什麼想吃的早餐),還是到一樓餐廳吃早餐。

早餐餐廳有個蠻不錯的服務,就是在餐廳門口準備了一大桶的咖啡和外帶用的杯子,吃飽了要外帶咖啡就自己裝,要幾杯就裝幾杯,糖包奶精也一應俱全。

* 上午課

直接坐車廂型纜車(Prince Gondola No. 2)上更高的山,如果在下纜車處就滑下山是中級雪道(不是我們),我們則是再搭纜車(Takenokodaira Pair Lift)再往上一點點,有段綠線雪道(Takenokodaira Trail),才是我們上課的地方。

* 午餐

在纜車下車旁邊,有廁所(有暖氣)和唯一的一家餐廳(咖哩飯 GO! GO! CURRY),中午就吃這家咖哩飯,在裡面坐著休息等下午上課。

原本擔心沒有位子可以休息,後來發現許多人都坐不住,下午的上課時間還沒到,就自己跑去坐纜車滑雪去了。

* 下午課

教完了 Heel side/Toe side,下午著重在 S turn。兩天的課程即將結束,教練都是以教學、示範,再一個一個輪流練習的方式進行課程,大家都學得很開心也有收獲。

* 繳回裝備

雪板和身上的裝備要分別拿到不同的地方繳回。繳回後就結束了這次愉快的滑雪課程。

第三天 苗場王子-品川王子

* Checkout

由於懶得收拾行李,第一天早上我們掛了「請勿打擾」的牌子(第二天才打掃房間),結果 checkout 時櫃台人員就給了我們500元日幣(每個房間)的購物券(網路上有提到這點,我不在意也忘了)。

往品川王子的巴士預計 8:15 發車,而伴手禮的店8:00才開門,於是我們便以迅雷不及掩耳的速度,在伴手禮店開門的 5 分鐘內,把購物券通通用掉。(還好 checkout 櫃台/巴士上車處/伴手禮店就在同一個地方)

其他心得

* 還好沒買的東西

原本想買一組無線電對講機做為連絡之用,結果還好沒買,因為初學者滑雪時身上東西越少越好,省得每次摔倒時都要擔心東西掉了或壞了。

而在山上也比想像中的安靜,稍微大聲一點講話就聽得到了。如果不是熟手分開滑的話,是用不到對講機的。

* 手機電量掉得很快?

出發前在網路上看到許多篇提到「低溫環境下3C產品電量會掉得很快」,我帶了兩個滿電的行動電源,結果兩天下來完全沒用到,手機只有在晚上回房間時充電就夠撐過一天。

或許是天氣不夠冷還是其他原因我不曉得,這裡提供一些數據供參考,氣溫 -2 到 8 度c/iPhone 8/只照相和拍影片。

* 會不會很冷?

第一天照網路上說的:「外層雪衣、最裡層排汗衣、中層帽T」,也許剛好是天氣好,上課的時侯不但不會冷,還一直流汗,中午一進飯店吃飯每個人第一個動作都是把雪衣脫掉(因為飯店放暖氣,更熱)。

第二天我就只穿外層雪衣和最裡層排汗衣,連中層帽T都不穿了。全天只有在坐纜車時,臉吹到風覺得冷而已,也可能是當時沒太陽又下雪的緣故。

結論就是:「台灣比日本還冷」,讓你冷的並不是雪場的「雪」,要注意的還是當天的天氣是「晴天」還是「陰天」,如果出大太陽,就幾乎不會冷;如果沒有太陽,就有可能比較冷。萬一真的冷到受不了,就回飯店裡,馬上就有暖氣可以吹,不必太擔心冷的問題。

Posted in Life | Tagged | Leave a comment

AdMob force to adapt newest SDK version

I used to adpat current available AdMob SDK version for new project.

Because it works and I am lazy.

Today I found that AdMob won’t display AD Banner when I adapt old version (7.25.0).

After I download the newest verion (7.27.0) and the AD Banner showed.

Maybe it is the good time for me to think about to use POD to adapt AdMob instead of using STANDALONE sdk download.

Posted in iOS development | Leave a comment

Interface Builder high CPU usage hang Mac OS X

The MacBook Pro almost hang the other day, press a key or click some function then the cursor turned into spinning rainbow.

Check the cpu usage in terminal console and find that “Interface Builder” was the highest cpu usage process.

Google and found the solution and it worked for me. It might work for you if there’re “Toolbar” component in your storyboard.

1.Open storyboard as “Source

2.Change “translatedAutoresizingMaskIntoConstraints” attribute of “Toolbar” from “NO” to “YES”

Ref: https://stackoverflow.com/questions/46922321/xcode-9-0-1-interface-builder-100-cpu-opening-ios-storyboard

Posted in iOS development | Leave a comment

2017/12 iPhone X/iOS 11 改版記錄

每次 Apple 出新機或是新版 iOS 我就頭痛

幾乎所有的app都得要拿出來renew一遍

再加上Google Admob沒事就改版

這個月光是把一些還活著的app Refresh一下就飽了

以下是 Refresh App 過程中碰到的問題及解決方法

記錄下來以免以後又重覆碰到

1.git – Commit Failed – cannot communicate to the command line helper

在 Project 目錄(有 .git 檔案那層)下指令 git commit -a -m “commit message”

2.iTunes Connect 送審問題

送審前先指定 Image Assets 裡的 AppIcon

3.iTunes Connect 送審問題

提交以供審核找不到原因,畫面也沒提示錯誤欄位,檢查是否「4.7″的螢幕截圖未設定」

4.iTunes Connect 送審問題

送審前檢查 4.7″ 的 5.5″ 的螢幕截圖是否一致

5.iTunes Connect 參考資訊

iPhone 螢幕截圖尺寸大小 1242 x 2208

iPad 螢幕截圖尺寸大小 2048 x 2732

6.Admob 測試環境

#if defined(DEBUG)

request.testDevices = @[ @”7f302cce306432767a104960a98761b6″ ];     //for 真機測試
request.testDevices = @[ kGADSimulatorID ];    //for Simulator 測試

#endif

Posted in iOS development | Leave a comment

XCode from SVN to Git (BitBucket), Step by Step

1.(Terminal) git svn clone http://svn.domain.com/svnroot/

2.(BitBucket) Create repository, get repository url

3.(XCode) Open project (cloned in step 1)

4.(XCode) Add Existing Remote

The Location was the URL you got in step 2 (on top right corner)

5.(XCode) Source Control -> Push

Posted in iOS development | Leave a comment

Android Studio from SVN to Git (BitBucket), step by step

1.(Terminal) git svn clone http://svn.domain.com/svnroot/

2.(BitBucket) Create repository, get repository url

3.(Android Studio) Open project (cloned in step 1)

4.(Android Studio) Android Studio -> Preferences -> Version Control -> Change none/SVN to Git

5.(Android Studio) VCS -> Commit

6.(Android Studio Terminal) git remote add origin http://abc.com/def/ghi.git
The URL was what you got in step 2.

7.(Android Studio) VCS -> git -> Push

Posted in Android | Leave a comment

薇閣 全家福 拍攝心得(有挑片技巧分享) 2017 7月

今年(2017)對我而言,是個蠻特殊的年份

於是想拍個全家福做為紀念

在網路上搜尋拍攝全家福的公司資訊

最後選定了台北市靠近松江南京的薇閣攝影

以下是一些拍攝心得供網友參考

 

1.拍攝費用

跟網頁上講的一模一樣,截圖如下

我最早選的是7,500的方案

結果因為意志不堅定

一下子就被說服改成 13,500 的方案

 

2.拍攝時間

原本預計是拍攝一個上午

後來實際拍攝完大概要到下午一兩點

中午有休息吃午飯的時間

 

真心建議選平日而非假日去拍

因為同時拍攝的客戶比較少

拍攝起來比較不會有擁擠感和壓力感

 

3.選擇相片(重要!這篇最重要的部份!必看!)

即使是拍全家福,但跟拍婚紗一樣

要從幾百張挑出你要的幾十張

而在挑片的過程中

隔一段時間就有人遊說「這張很好看」「這張不挑可惜」「這張非選不可」blah blah blah

越多人看就越多意見,猶豫不決,甚至會不高興

以下是我的挑片技巧

技巧一:看片之前先決定配額,例:四人合照x6, 三人合照x4, 兩人合照x6, 個人獨照x4

一定要在看片之前決定
否則一看片就很容易因為捨不得決定不了,然後多挑了組數
技巧二:挑片就是挑片,不是刪片。

攝影公司會教你操作軟體,要的相片在左邊的視窗,不要的相片在右邊的視窗。
一開始全部相片都在左邊,得刪掉幾百張,工程浩大又費時。
這裡有個技巧,就是「先把所有相片都刪掉,再挑要的部份」。
先把全部相片全部刪掉(即移到右邊(註1))
接著在每個「相同場景+相同的人組合」只挑一張到左邊
(不管照得多好多美,相同的場景+人的組合都只挑一張)
這樣子挑下來
就只剩下幾十張在左邊了(原始有幾百張)
接著再看左邊的幾十張
並且參照技巧一的配額
就可以決定最後的20組了

註1:攝影公司只會教刪一張的方法,就是「點一張相片,再點垃圾桶按鈕」
這裡告訴你全刪的方法,就是
「點第一張相片,滑鼠捲到最底下,(按著Shift鍵)點最後一張相片
(如果選成功的話,你會看到所有相片都有被選取的框框)
這時再點垃圾桶按鈕」
等一段時間(看相片組數多或少,可能會超過一分鐘),
然後就會全部移到右側的刪除區
技巧三:自己要有定見,不要耳根子軟

要拍幾組就幾組
挑片時要挑幾組就幾組
不要被話術影響,什麼「紀念價值」「機會難得」「男帥女美」...blah blah blah
只要是拍過婚紗的人
都聽過這套話術
就看自己能不能堅持住

(註二)
技巧四:最重要的一點,不要弄得不愉快

拍攝幾個小時下來,全部的人都會累,在拍攝過程中,不管任何問題,一定要忍住性子,
保持愉快的心情才能拍好相片。
挑片的時侯也是,一開始大家興緻勃勃,後來累了之後就會開始不耐煩。再加上攝影公司
的人在旁邊建議東建議西,就更容易弄得不愉快。

註二:

我一開始就是沒有堅定意志

就從 7,500 改成 13,500 的方案

接著在挑片時我就打定主意

拒絕了加價加組數的方案(忘了,好像加20幾組,加 10,000 還是 15,000 左右)

等到攝影公司覺得確定我不會再加組數了

就提出最後的方案

「拍攝所有的500多張相片的電子檔」,只要5,000元

當下實在很誘人

不過我仍然堅持不買(還有後續,見註三)

 

4.看修圖

挑完相片後大概過一兩個禮拜

攝影公司會通知去看修圖

讓客戶有最後調整修圖結果的機會

我是看不出來什麼問題,就全部確認了

註三:此時攝影公司那張電子檔光碟由5,000降價至3,000元,我出價0元和1,000元,

議價失敗,仍沒買光碟(還有後續,見註四)

 

5.拿成果

攝影公司通知取件

我去拿洗出來的相片和放大相片

註四:攝影公司提到:會保留我們電子檔一個月的時間,期間之內都可以回去買光碟,之後就刪掉

結論:

薇閣的服務、拍攝的過程和成果都令人滿意。

下次我不會加組數,我只會拍最少組數,或許加買電子檔光碟。

Posted in Life | Tagged , , , , , , , , | Leave a comment

SVN command line usage sample

1.To checkout a verison in date 2017/12/25

svn co -r {2017-12-25} http://mydomin.com/svntree

2.To checkout a revision 168 in date 2017/12/25

svn co -r 168 http://mydomin.com/svntree

 

Posted in Android development, iOS development | Leave a comment

iOS – Click view to dismiss the keyboard

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(endEditing:)];
    tap.cancelsTouchesInView = FALSE;
    tap.delegate = self;
    [self.view addGestureRecognizer:tap];
Posted in iOS development | Leave a comment