因應Android 6.0以後對於手機權限的管理方式(如存取相機、位置、聯絡人、手機、儲存、日曆權限等等),在舊版的開發方式上會導致crash。
必須增加版本判斷來對權限有不同的寫法
權限的簡介
http://developer.android.com/intl/zh-tw/training/permissions/index.html
即時要求權限的範例:
http://developer.android.com/intl/zh-tw/training/permissions/requesting.html
權限列表資訊
http://developer.android.com/intl/zh-tw/guide/topics/security/permissions.html#permission-groups
GCM:
按照之前舊版的方式取得DeviceId在6.0的手機上會crash
所以去爬了一下官方文件
範例參考:
https://developers.google.com/instance-id/guides/android-implementation
2015年12月15日 星期二
2015年12月11日 星期五
[iOS] - Storyboard AutoLayout 初試心得
摸了一天,比想像中的還要簡化,原本以為很麻煩。
不過目前只會固定元件跟元件之間的距離。所以如果在iPhone 6 plus上的空白區域就會很多,在iPhone 4S上的空白區域就會很少。
有時間的話繼續研究...
不過目前只會固定元件跟元件之間的距離。所以如果在iPhone 6 plus上的空白區域就會很多,在iPhone 4S上的空白區域就會很少。
有時間的話繼續研究...
2015年11月27日 星期五
[Android] - 改變ToolBar左側的返回建顏色
final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha); upArrow.setColorFilter(getResources().getColor(R.color.color_name), PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setHomeAsUpIndicator(upArrow);
不過這邊用的getDrawable跟getColor都快被棄用了,
也許以後要改成這樣:
final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha, getApplicationContext().getTheme());
upArrow.setColorFilter(getResources().getColor(R.color.color_name, getApplicationContext().getTheme()), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(upArrow);
參考資料
http://stackoverflow.com/questions/26788464/how-to-change-color-of-the-back-arrow-in-the-new-material-theme
2015年11月24日 星期二
[Android] - 使用Parse + Layer做聊天功能
以我目前的了解
Parse是雲端資料庫
Layer是聊天訊息系統
這篇介紹一下怎麼使用Parse + Layer做即時聊天系統
網路上都有Sample跟介紹,這邊自己再做個紀錄
1. 成為Parse開發者
https://parse.com/
2. 成為Layer開發者
https://layer.com/
3. 下載Android範例
https://github.com/layerhq/Layer-Parse-Android-Example
4. 下載Parse comment 工具
https://github.com/ParsePlatform/parse-cli/releases/tag/release_3.0.1
我的電腦是Windows的所以下載parse.exe執行檔
5. 開啟命令提示字元,輸入{絕對路徑或相對路徑}parse.exe new
之後會要求輸入Parse的帳號密碼
登入成功之後會問要「新開一個Project」還是「使用現有的」
選擇「新開一個Project」要再輸入Project名稱
選擇「使用現有的」之後會選擇哪一個
接著會詢問服務提供商是哪一個,選擇Parse
再來要填寫本地端的資料夾名稱,以當前位置做根目錄,系統會在這兒底下新增該資料夾名稱
然後,會問你要不要設定空專案,這邊直接按下Enter就可以
按下Enter之後的資訊
6.. 下載Layer Parse Module
https://github.com/layerhq/layer-parse-module
解壓縮放在步驟5所開好的資料夾底下
7. 登入layer且開一個Project之後,選擇「Keys」,再到Account: Authentication keys的輸入框填入資訊並按下「Generate a new key」,如下圖
按下「Generate a new key」之後會出現如下圖的彈出視窗,把輸入框的內容複製起來,貼到layer-parse-module\keys\layer-key.js
8. 開啟在專案根目錄底下的main.js
將下列幾行Code貼上
======================Code===================
var fs = require('fs');
var layer = require('cloud/layer-parse-module/layer-module.js');
var layerProviderID = 'layer:///providers/.......'; // Should have the format of layer:///providers/<GUID>
var layerKeyID = 'layer:///keys/......'; // Should have the format of layer:///keys/<GUID>
var privateKey = fs.readFileSync('cloud/layer-parse-module/keys/layer-key.js');
layer.initialize(layerProviderID, layerKeyID, privateKey);
Parse.Cloud.define("generateToken", function(request, response) {
var currentUser = request.user;
if (!currentUser) throw new Error('You need to be logged in!');
var userID = currentUser.id;
var nonce = request.params.nonce;
if (!nonce) throw new Error('Missing nonce parameter');
response.success(layer.layerIdentityToken(userID, nonce));
});
======================End===================
記得把Layer的Account: Provider ID跟Account: Authentication keys改成自己的
這兩個資訊都在Layer的Keys頁面
9. 回到命令提示字元,將當前目錄放到步驟4時建立好的資料夾底下,輸入parse.exe deploy
就把本地端的檔案上傳到Parse的Cloud Code了
10. 開啟Android Studio,將步驟3的範例打開
再把LayerImpl的LayerAppID和ParseImpl的ParseAppID與ParseClientKey改成自己的
11. 安裝到兩台手機上面,註冊兩個帳號就可以好好的聊天了
參考網址:
https://www.parse.com/docs/cloudcode/guide#command-line-installation
https://github.com/layerhq/layer-parse-module
https://github.com/layerhq/Layer-Parse-Android-Example
Parse是雲端資料庫
Layer是聊天訊息系統
這篇介紹一下怎麼使用Parse + Layer做即時聊天系統
網路上都有Sample跟介紹,這邊自己再做個紀錄
1. 成為Parse開發者
https://parse.com/
2. 成為Layer開發者
https://layer.com/
3. 下載Android範例
https://github.com/layerhq/Layer-Parse-Android-Example
4. 下載Parse comment 工具
https://github.com/ParsePlatform/parse-cli/releases/tag/release_3.0.1
我的電腦是Windows的所以下載parse.exe執行檔
5. 開啟命令提示字元,輸入{絕對路徑或相對路徑}parse.exe new
之後會要求輸入Parse的帳號密碼
登入成功之後會問要「新開一個Project」還是「使用現有的」
選擇「新開一個Project」要再輸入Project名稱
選擇「使用現有的」之後會選擇哪一個
接著會詢問服務提供商是哪一個,選擇Parse
再來要填寫本地端的資料夾名稱,以當前位置做根目錄,系統會在這兒底下新增該資料夾名稱
然後,會問你要不要設定空專案,這邊直接按下Enter就可以
按下Enter之後的資訊
6.. 下載Layer Parse Module
https://github.com/layerhq/layer-parse-module
解壓縮放在步驟5所開好的資料夾底下
7. 登入layer且開一個Project之後,選擇「Keys」,再到Account: Authentication keys的輸入框填入資訊並按下「Generate a new key」,如下圖
按下「Generate a new key」之後會出現如下圖的彈出視窗,把輸入框的內容複製起來,貼到layer-parse-module\keys\layer-key.js
8. 開啟在專案根目錄底下的main.js
將下列幾行Code貼上
======================Code===================
var fs = require('fs');
var layer = require('cloud/layer-parse-module/layer-module.js');
var layerProviderID = 'layer:///providers/.......'; // Should have the format of layer:///providers/<GUID>
var layerKeyID = 'layer:///keys/......'; // Should have the format of layer:///keys/<GUID>
var privateKey = fs.readFileSync('cloud/layer-parse-module/keys/layer-key.js');
layer.initialize(layerProviderID, layerKeyID, privateKey);
Parse.Cloud.define("generateToken", function(request, response) {
var currentUser = request.user;
if (!currentUser) throw new Error('You need to be logged in!');
var userID = currentUser.id;
var nonce = request.params.nonce;
if (!nonce) throw new Error('Missing nonce parameter');
response.success(layer.layerIdentityToken(userID, nonce));
});
======================End===================
記得把Layer的Account: Provider ID跟Account: Authentication keys改成自己的
這兩個資訊都在Layer的Keys頁面
9. 回到命令提示字元,將當前目錄放到步驟4時建立好的資料夾底下,輸入parse.exe deploy
就把本地端的檔案上傳到Parse的Cloud Code了
10. 開啟Android Studio,將步驟3的範例打開
再把LayerImpl的LayerAppID和ParseImpl的ParseAppID與ParseClientKey改成自己的
11. 安裝到兩台手機上面,註冊兩個帳號就可以好好的聊天了
參考網址:
https://www.parse.com/docs/cloudcode/guide#command-line-installation
https://github.com/layerhq/layer-parse-module
https://github.com/layerhq/Layer-Parse-Android-Example
2015年11月20日 星期五
[Android] - CardView 介紹
可做出矩形區域的背景圖片
可設定圓角方角、陰影等等
附上原始碼:
可設定圓角方角、陰影等等
附上原始碼:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardPreventCornerOverlap="false"
card_view:cardCornerRadius="10dp"
card_view:cardElevation="5dp"></android.support.v7.widget.CardView>
效果如下圖說明:cardPreventCornerOverlap
CardView內的元件要不要與圓角重疊
cardCornerRadius
CardView的四個角的弧度
cardElevation
CardView的的陰影
2015年11月16日 星期一
[DIY] 針孔式星象儀
某日在購物網站看到這個針孔式星象儀,基於夢想,二話不說就馬上下訂了。
它是一本雜誌的附錄。附上零件讓人自己組合。
可按照喜好組成北半球的星空或是南半球的星空。
組合起來的結果:
晚上實測用Nikon D40隨手拍起來的結果:
就我個人看起來的效果,當然沒有天文館裡面的好,在我房間投影出來的星象沒有想像中清晰。不過這樣子的設備能夠在家使用是蠻不錯的。吃兩顆二號電池。它還有15分鐘定時關閉的功能,跟自動旋轉的功能,一圈15分鐘。
它是一本雜誌的附錄。附上零件讓人自己組合。
可按照喜好組成北半球的星空或是南半球的星空。
組合起來的結果:
晚上實測用Nikon D40隨手拍起來的結果:
就我個人看起來的效果,當然沒有天文館裡面的好,在我房間投影出來的星象沒有想像中清晰。不過這樣子的設備能夠在家使用是蠻不錯的。吃兩顆二號電池。它還有15分鐘定時關閉的功能,跟自動旋轉的功能,一圈15分鐘。
2015年10月27日 星期二
[自言自語] 區權會心得
一整個不知道在趕什麼的節奏。
我以為一個社區裡面,是大家都要能夠一起努力維持這樣子的環境。
將環境營造起來,那自然很多問題自然就解決。
大家都這樣做,那自然下一個進來的人看大家都這樣也都會照做了。
如果真的在意房價,這樣的觀念不是更要有嗎?
沒有一個捷徑可以讓房價變高,但是只要把這些大家生活上面臨到的問題都解決了,房價自然就會慢慢提升。不是把說要讓房價變高變成口號吧。
另外,如果這麼小的社區裡面這麼擔心亂花錢,那反映在這個大社會下大家應該都很節儉阿,怎麼看到我們的政府的開支都這麼的誇張呢,真是弔詭。
我以為一個社區裡面,是大家都要能夠一起努力維持這樣子的環境。
將環境營造起來,那自然很多問題自然就解決。
大家都這樣做,那自然下一個進來的人看大家都這樣也都會照做了。
如果真的在意房價,這樣的觀念不是更要有嗎?
沒有一個捷徑可以讓房價變高,但是只要把這些大家生活上面臨到的問題都解決了,房價自然就會慢慢提升。不是把說要讓房價變高變成口號吧。
另外,如果這麼小的社區裡面這麼擔心亂花錢,那反映在這個大社會下大家應該都很節儉阿,怎麼看到我們的政府的開支都這麼的誇張呢,真是弔詭。
2015年10月13日 星期二
[技術] Ubuntu vsftp 設定
參考網址:
http://lemonup.logdown.com/posts/175031-ubuntu-vsftpd-install-notes
今天按照這篇文章裝設vsftp之後,登入上傳檔案一直出現550 Permission denied,後來是把文章所寫的vsftpd.conf之中的
guest_enable=YES #設定pam的user全使用同一個帳號
guest_username=ftp #設定pam的user所使用的linux帳號
這兩個註解掉重開才可以上傳檔案
http://lemonup.logdown.com/posts/175031-ubuntu-vsftpd-install-notes
今天按照這篇文章裝設vsftp之後,登入上傳檔案一直出現550 Permission denied,後來是把文章所寫的vsftpd.conf之中的
guest_enable=YES #設定pam的user全使用同一個帳號
guest_username=ftp #設定pam的user所使用的linux帳號
這兩個註解掉重開才可以上傳檔案
[自言自語] 自我介紹
工作時曾經摸過:
OS:
Windows, Linux, Ubuntu, Mac
Web:
Java, JSP, Spring, JavaScript, jQuery, JQGrid, Hibernet, iOS, Apache, Tomcat, JMeter, PHP, AWS, MS SQL, MySQL, DB2
Mobile:
Android, iOS, PhoneGap, Titanium, Bluetooth
洋洋灑灑寫了很多,但是其實很多都是一知半解的半調子工程師,也許連師都稱不上吧。
也是從第二份工作開始才正式踏入了程式的工作領域,第一份工作在都還是懵懂階段的時候就離開了。
一切都從那裏開始,踏入Java的不歸路。
現在是一個跟UI橋,跟Android、iOS工程師橋的已婚兩個孩子的爸爸的打雜工。
興趣ACG、天文、布袋戲、騎機車勝過開汽車等等。
遊戲主攻PlayStation平台,很久沒有買新遊戲了。最新的遊戲應該是海賊無雙2。
漫畫這一兩年沒什麼在追新作品。
動畫最近在追MOD上看得到的從零開始的異世界生活。
布袋戲最近跟日本合作了一個新作品,看了第一集後真的蠻佩服日本的聲優們。
最近也買了一本觀星入門的書,還在啃中。也有從同事那邊聽到一個APP可以比對天上的星星。覺得自己的資訊吸收是真的蠻少的,不同地方的人可以吸收到新的消息我想就是人脈的好處。
最近想開始練練人物拍攝,有興趣當我的模特兒的人歡迎與我聯絡。
作品請參考:
Instagram : https://www.instagram.com/zerofinal2002/
Eyeem : https://www.eyeem.com/u/zerofinal
更新於 2016.08.23
OS:
Windows, Linux, Ubuntu, Mac
Web:
Java, JSP, Spring, JavaScript, jQuery, JQGrid, Hibernet, iOS, Apache, Tomcat, JMeter, PHP, AWS, MS SQL, MySQL, DB2
Mobile:
Android, iOS, PhoneGap, Titanium, Bluetooth
洋洋灑灑寫了很多,但是其實很多都是一知半解的半調子工程師,也許連師都稱不上吧。
也是從第二份工作開始才正式踏入了程式的工作領域,第一份工作在都還是懵懂階段的時候就離開了。
一切都從那裏開始,踏入Java的不歸路。
現在是一個跟UI橋,跟Android、iOS工程師橋的已婚兩個孩子的爸爸的打雜工。
興趣ACG、天文、布袋戲、騎機車勝過開汽車等等。
遊戲主攻PlayStation平台,很久沒有買新遊戲了。最新的遊戲應該是海賊無雙2。
漫畫這一兩年沒什麼在追新作品。
動畫最近在追MOD上看得到的從零開始的異世界生活。
布袋戲最近跟日本合作了一個新作品,看了第一集後真的蠻佩服日本的聲優們。
最近也買了一本觀星入門的書,還在啃中。也有從同事那邊聽到一個APP可以比對天上的星星。覺得自己的資訊吸收是真的蠻少的,不同地方的人可以吸收到新的消息我想就是人脈的好處。
最近想開始練練人物拍攝,有興趣當我的模特兒的人歡迎與我聯絡。
作品請參考:
Instagram : https://www.instagram.com/zerofinal2002/
Eyeem : https://www.eyeem.com/u/zerofinal
更新於 2016.08.23
2015年10月11日 星期日
[自言自語] 關於健康
之前小吃店老闆似乎是生病住院,所以小吃店暫停營業了一段時間。
某日經過的時候發現有營業了,今天去彭場一下。
健康讓自己擁有時間去做自己想做、要做的事情。
生病讓自己不自由,也讓照顧你的人不自由,其實還牽連很多跟你相關的許許多多的人。
也許不是影響很大,但是著實改變的其他的...也許是習慣;也許只是微不足道的一個動作。
希望大家都能健健康康。
某日經過的時候發現有營業了,今天去彭場一下。
健康讓自己擁有時間去做自己想做、要做的事情。
生病讓自己不自由,也讓照顧你的人不自由,其實還牽連很多跟你相關的許許多多的人。
也許不是影響很大,但是著實改變的其他的...也許是習慣;也許只是微不足道的一個動作。
希望大家都能健健康康。
2015年9月30日 星期三
[職場] 關於創業的文章
一些覺得內容講的不錯的文章,以供參考。
【創業學】創業初期,團隊最該思考的6個問題
http://www.motive.com.tw/?p=6050
【創業學】創業者和新創公司不該存在的8個迷信
http://www.motive.com.tw/?p=5643
【創業學】創業初期,團隊最該思考的6個問題
http://www.motive.com.tw/?p=6050
【創業學】創業者和新創公司不該存在的8個迷信
http://www.motive.com.tw/?p=5643
2015年9月18日 星期五
[職場] 他UX不好
「他UX不好」。
聽到這句話的時候不知道該說什麼。
之前公司找來的UX設計師不聽人家專業意見、不被重用,然後人家離職了。
現在覺得行銷端的人設計出來的畫面嫌UX不好,
可以擬訂一個公司的UX方向嗎,而不是你一言我一句在那邊吵翻天......。
不過我也只能在這裡抱怨一下而已,唉......。
聽到這句話的時候不知道該說什麼。
之前公司找來的UX設計師不聽人家專業意見、不被重用,然後人家離職了。
現在覺得行銷端的人設計出來的畫面嫌UX不好,
可以擬訂一個公司的UX方向嗎,而不是你一言我一句在那邊吵翻天......。
不過我也只能在這裡抱怨一下而已,唉......。
2015年9月15日 星期二
[ACG] 驚爆危機 - 小說21、22、23讀後感(有雷)
終於騰出了時間來把小說給完結了,
雖然漫畫外傳都出完的樣子,沒有去追後續情況不太曉得。
究竟宗介跟泰莎的後續情況如何呢?(對沒錯我是艦長派的哈哈哈)
好啦前言瞎扯蛋結束。
-------------------------------------------------------------------------------------
一開頭以班上同學的自省切入,回想當初學校成為戰場的時候,
所有人都不諒解宗介。
然而過了一年後同學,都很擔心著小要和宗介。
情緒上來的時候容易失去冷靜,所以我都期許自己就算情緒上來了,
還是要盡量保持冷靜。
再來切入米斯里魯的主線,
才發現原來阿瑪爾干的幕後人員是米斯里魯的核心人員。
聽著他講述的阿瑪爾干和米斯里魯的成立始末,
才了解到又是一個組織、人心崩壞造成的結果。
最近發生的事情,不管是國家、社會、公司、家庭,
每個人都有自己的想法,如果每個人都按照一己之欲來做事,
真的很容易天下大亂。
所以人們希望能夠建立一套倫理規則來規範眾人,
但是如果不是每個人都抱著接近/類似的想法的話,那做法跟結果都會相差甚遠。
如果有力量的人在謀策些什麼,
沒有力量的人究竟有多少力量跟有多少機率能夠成功打倒有力量的人呢?
--
接著就是泰莎嶄露才能的戰役了,好期待這一段能夠動畫化。
第三季什麼時候會出呢~~~?
--
再來,對於逐漸明朗的雷納德的企圖,自己是覺得挺可笑的。
想創造一個自己希望的世界,但是不管是現在這個世界還是轉移過去的那個世界,
在當中活著的人都不會是只有自己。
就算成功轉移到了那個世界,但是難保不會有別人來破壞這個世界。
無法掌握的變因太多了。
身為傾聽者,也許只了解黑科技但是不是很善於了解每個人的心吧...。
--
大戰前夕。
好的頭目帶你躺套房,壞的頭目帶你睡茅房(疑)。
我是說能有泰莎這麼好的艦長真好。
就算帶領大家航向地獄大家也不會有什麼怨言。
--
最後一場戰役拉開了序幕。
AS全部大破。
Tuatha De Danann大破。
奇蹟生還的克魯茲再出喔耶。
--
結果雷納德死在卡力林手上。
卡力林死於墜機傷勢過重。
R成功地變成了人類了(誤)可喜可賀可喜可賀。
兩人在光天化日之下接吻了好結束。
--
短篇集的部分,賀東老師的搞笑點很高興在這最後的時候也仍然發揮它的作用。
泰莎的部分就等到外傳再繼續回味吧...。
謝謝賀東老師與四季老師讓我共遊地獄,謝謝出版社相關的人員與動畫化相關人員。
雖然漫畫外傳都出完的樣子,沒有去追後續情況不太曉得。
究竟宗介跟泰莎的後續情況如何呢?(對沒錯我是艦長派的哈哈哈)
好啦前言瞎扯蛋結束。
-------------------------------------------------------------------------------------
一開頭以班上同學的自省切入,回想當初學校成為戰場的時候,
所有人都不諒解宗介。
然而過了一年後同學,都很擔心著小要和宗介。
情緒上來的時候容易失去冷靜,所以我都期許自己就算情緒上來了,
還是要盡量保持冷靜。
再來切入米斯里魯的主線,
才發現原來阿瑪爾干的幕後人員是米斯里魯的核心人員。
聽著他講述的阿瑪爾干和米斯里魯的成立始末,
才了解到又是一個組織、人心崩壞造成的結果。
最近發生的事情,不管是國家、社會、公司、家庭,
每個人都有自己的想法,如果每個人都按照一己之欲來做事,
真的很容易天下大亂。
所以人們希望能夠建立一套倫理規則來規範眾人,
但是如果不是每個人都抱著接近/類似的想法的話,那做法跟結果都會相差甚遠。
如果有力量的人在謀策些什麼,
沒有力量的人究竟有多少力量跟有多少機率能夠成功打倒有力量的人呢?
--
接著就是泰莎嶄露才能的戰役了,好期待這一段能夠動畫化。
第三季什麼時候會出呢~~~?
--
再來,對於逐漸明朗的雷納德的企圖,自己是覺得挺可笑的。
想創造一個自己希望的世界,但是不管是現在這個世界還是轉移過去的那個世界,
在當中活著的人都不會是只有自己。
就算成功轉移到了那個世界,但是難保不會有別人來破壞這個世界。
無法掌握的變因太多了。
身為傾聽者,也許只了解黑科技但是不是很善於了解每個人的心吧...。
--
大戰前夕。
好的頭目帶你躺套房,壞的頭目帶你睡茅房(疑)。
我是說能有泰莎這麼好的艦長真好。
就算帶領大家航向地獄大家也不會有什麼怨言。
--
最後一場戰役拉開了序幕。
AS全部大破。
Tuatha De Danann大破。
奇蹟生還的克魯茲再出喔耶。
--
結果雷納德死在卡力林手上。
卡力林死於墜機傷勢過重。
R成功地變成了人類了(誤)可喜可賀可喜可賀。
兩人在光天化日之下接吻了好結束。
--
短篇集的部分,賀東老師的搞笑點很高興在這最後的時候也仍然發揮它的作用。
泰莎的部分就等到外傳再繼續回味吧...。
謝謝賀東老師與四季老師讓我共遊地獄,謝謝出版社相關的人員與動畫化相關人員。
20150915 2345 雲霂霆