[Moocs]Programming Mobil Aplication on Android Platform (1)

前言: 這本來是Moocs上面一系列關於Java/Android課程Mobile Cloud Computing with Android的第二門課程.由於最近我把第二階段的課上完了.也在想說要不要學一下.先開始follow看看… 其實對於Android 我還是處於不是很熟悉的狀態.雖然當初已經把一些簡單的相機功能有寫出來.但是整個還是架構不熟悉.也順便來學習一下. 關於環境使用: 關於Emulator的Shell使用,由於我使用的是Genymotion.稍微玩了一下,發現command幾乎都不太一樣. Genyshell 必須在Genymotion模擬器跑起來之後再用 genymotion capabilities 可以查詢所有支援的指令 就算你查到camera/accleronmeter可以使用,但是其實因為是模擬器.其實是不能用的. battery getlevel/setlevel 來設定電源目前使用量 gps setaltitude/setlatitude 可以來設定目前gps地點資訊 Emulator Call 這個部分使用AVD(Android Virtual Device)可以,但是我還沒找到如何使用Genymotion來做. DDMS Perspective 這個部分我比較沒有在使用,不過這次的教學也會清楚地教導如何使用DDMS.主要在Hierachy View 還有 Methond profiling. 關於Activity Lifecycle 筆記一些我比較沒有注意的部分: OnResume 發生的時間點是最多的,基本上就是Activity 出現前就會發生.所以以下情況都會發生: 第一次執行OnCreate之後 離開App回來之後 OnPause與OnRestart的返回 OnPause 發生在準備要離開Activity的時候,緊接著是OnStop會收到 OnStop 會出現在 OnPause之後,所以不一定會被呼叫到,如果user使用kill app.這時候只會有OnPause 旋轉手機的時候,OnCreate,OnStart跟OnResume都會發生 其他更多可以在這裡看到 http://developer.android.com/training/basics/activity-lifecycle/index.html
繼續閱讀

[GTUG][GDG]#11 Google Tag Manager 介紹

心得: 原本想說要休息一兩個禮拜專心趕Mooc的作業,只是剛好作業進度都超前加上許久不見的Marx也會去,順便去了解一下. 「Google Tag Manager 」對我而言是完全新的東西,雖然我比較常用Google Adsense跟Google Analytics. 簡介GTM 做電子商務的網站的人都了解,如何有效地分析使用者的動作跟流量一直是一個很大的問題.所以這時候會在網頁上面加上許多的JS.但是每次類似的修改都得要動到網頁本身,對於有CDN作為cache的商家而言,是一個很困擾的事情. Google Tag Manager(GTM)本身就是一個異地的library,可以寫在原本的網站的裡面.幫助作為網站分析與電子商務廣告的部分. 原本你想要增加新的功能(比如說增加Google Analytics,或是增加新的追蹤)是需要去修改原本的程式碼. 但是使用了GTM之後,就再也不用去修改原本的網站部分.只需要去管理頁面增加一些標記,規則或是巨集.也不用擔心cache與CDN造成的delay. 速記: 加上GTM前注意: 最後的”dataLayer”要移除掉,因為這個東西很常被其他JS使用. Checking Pixel 利用 1 pixel 的圖片,來帶參數以達到廣告作用.(偵測流量) Google Tag Manager主要有三個可以加入的東西 標記 增加或是搭配其他的服務(Google Analytics) 規則 增加許多規則,可以是網頁參數,可以是JS參數. 巨集 可以使用Regular Expression 來處理更多事情. 標記的”點擊接聽 “ 可以監聽所有網頁上的點擊動作(button 甚至是其他…) 可以利用console 去查看dataLayer網頁上的點擊動作. Google Tag Manager的優點 加上了Google Tag Manager他會加上亂數去破壞cache,對於有 使用CDN的網站而言.這樣才能達到及時更新的效果. 也俱有程式碼最佳化,與瀏覽器的相容性問題 本身也具有版本控管,不過講者建議使用Git(把code自行複製出來再貼到git) Google Analytics的進階使用: 原本使用IP,現在使用session 可以偵測跨網域的使用者 參考資料: GDG活動網頁 http://gdg-taipei.kktix.cc/events/google-tag-manager-intro GTM (Google Tag Manager 官方網頁) http://www.google.com/tagmanager/ GTM 簡單的教學 http://analyticsdavis.blogspot.tw/2013/11/google-tag-manager.html GTM 教學與簡介 http://9i543.com/10665/websys
繼續閱讀

[Golang][CSharp][PHP]寫出備份4image與把資料寫入EXIF的工具

前言: 之前提過買了NAS之後,先把所有的照片全部傳到NAS上面.接下來就要去面對令人不想管的事情.把接近兩百個類別,數萬張的相片名稱與資訊弄出來. 因為我以前的相簿使用的是4images,這是一套挺簡單的PHP相簿. 為了要把4image相簿裡面的資料弄出來.. 想弄個Go MySQL結果Oracle 密碼搞半天~下載個MySQL解開還要6XXMB? 靠~決定換MariaDB 反正在Go上面的Driver都一樣…. 但是似乎發生了一些難以解決得問題. 所以最後使用C#來完成EXIF寫入的動作. 不過似乎最後遇到一些在Windows上面的問題,至於為什麼要用Windows是因為我找到了一個可以修改EXIF的小工具,而他有Windows的. 流程: 先試著把資料庫弄出來到Mac上面 安裝 MariaDB (參考這裡) brew install mariadb mysql_install_db mysqld_safe –datadir=’/usr/local/var/mysql’ 修改密碼 mysqladmin -u root password ‘PASSWORD’ 把資料匯入 mysql -uroot -p DB_NAME —force < File_NAME 關於Golang 針對MariaDB的部分 參考這邊就可以 這邊有範例程式碼 不過對於我而言,問題出現了: 資料庫裡面都是亂碼(如果透過 phpMyAdmin 抓資料出來的話),由PHP直接讀是正確的 發現問題可能出在當初phpAdmin的設定的問題,可以參考這個原因 到這裡先決定暫停Golang與MySQL的工作,先專注把資料弄出來: 最後決定先用PHP把資料匯出,然後把東西放在個別資料夾: 類別名稱與敘述放成檔案 FOLDER_NAME.txt FOLDER_DESC.txt 相片裡面的敘述跟標題放在 pic_NAME.txt pic_DESC.txt 程式放在 4image PHP Dumptool 接下來就要寫一個工具把在文字檔案裡面的EXIF資訊寫回相片本身的EXIF,由於沒有比較好的Go-EXIF工具.這裡我找到的事Exiftool.它是一套Perl寫的工具,本身可以跨平台.而且看起來功能還挺不賴的. 所以要使用Golang 去寫一個Windows 下面裡用command line 操控Exiftool來修改相片的EXIF 這裡又遇到一個問題是,不知道為什麼在Windows下面裡用Golang使用command line 執行的parameter都會多一個 “ 有在Stackoverflow上面詢問,不過其他人都遇不到這樣的問題? 先停住,改成用C#來寫寫看 使用C# 來寫就快多了,大概幾個小時就兜出solution並且可以處理幾萬張照片.不過有幾個東西需要記錄. 需要有短暫的sleep不然太快會讓command line tool failed. 這個工具也放出來,搭配PHP工具一起使用才能正常作用喔.. 參考: MariaDB (MySQL) installation guide https://mariadb.com/kb/en/mariadb/documentation/getting-started/compiling-mariadb-from-source/building-mariadb-on-mac-os-x-using-homebrew/#installing-mariadb How to import SQL to MySQL http://stackoverflow.com/questions/17666249/how-to-import-a-sql-file-using-the-command-line-in-mysql How to connect MariaDB via Go https://mariadb.com/blog/using-go-mariadb PhpMyAdmin 瀏覽資料庫內容會呈現亂碼的解決方法 http://visdacom.com/Website_Design/index.php?load=read&id=28 http://forum.serverzoo.com/showthread.php?t=2416 http://www.chou-it.com/info/infra/db/mysql_01.html
繼續閱讀

[iOS][粉絲相簿更新]更新App版本到XCode6

前言: 雖然我不算是專業App開發者,但是有了新版本的XCode更新還是會更新一下.這裡也記錄一些更新的過程中可能會有的問題. 過程筆記: 是否要保留XCode5,該如何保留? 要不要保留xcode5? 這個見仁見智,不過短時間Apple不會阻擋xcode所submit的App之前.如果不想踩到太多地雷,或是企業外包App可能可以先保留起來. 如何保留? 這個動作必須要在App更新之前. 建議把XCode從 Application 裡面複製出來.如果只是改名字是沒有用的. 模擬器發生錯誤,Simulator Error: “An error was encountered while running (Domain = FBSOpenApplicationErrorDomain, Code = 4)” Fixed: iOS Simulator -> Reset Content And Settings… 可以參考這篇: http://qiita.com/tajihiro/items/f6f50b56162c93d25c90 App Package的大小從5.6MB-> 3.1MB 原因我還沒查清楚,只知道大小縮小接近一半.這倒是可以好好研究看看. 看起來原因是出在Provisioning 不一樣的原因,不過這個會造成大小差異?倒也是很奇怪.
繼續閱讀

[Docker]增加一些跟Docker有關的筆記

前言: 主要是前一篇ELK(Elasticsearch, Logstash and Kibana)文章發表之後,有人在跟我要docker image.雖然馬上就找到了logstash的docker hub.但是還是很認真的玩了一下docker,順便當作複習. 常用工具 這裡記錄一下常用的語法: 停止並且刪除所有的container docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) 刪除所有的images docker rmi $(docker images -q) 關於docker的一些發想 記錄一些這兩天想到關於docker可能有的更多應用. 散佈新的web services/applicaiton 可以隨時把你看過新的web application 或是service利用docker架成一個自成網路然後直接開始給你認識的人.讓他也可以玩玩看,而不用架個老半天,也不擔心雙方OS的問題. Bug reproduce 環境保留 如果某些特殊的環境下,QA可以透過docker建立好具有問題的環境然後交給RD去解決問題.
繼續閱讀

[ELK Stack]利用logstash,elsticsearch與kibana來分析log

前言: 本來只是跟幾個前同事聊天的時候聽到這個軟體,並沒有在意.結果之後就偶然有機會用的到.本來覺得還蠻複雜的,但是看完以下這篇影片好像就簡單多了. https://www.youtube.com/watch?v=Kqs7UcCJqu 簡單的說: logstash: 幫助你去收集各地的log或是資訊~並且根據你的格式,轉換成各種資料欄位. elasticsearch: 根據各種搜尋欄位來尋找資料. kibana: 視覺與圖形化的表示方式來顯示各種log,並且透過這個工具可以幫助你回答許多商業上的問題.比如說: 大部份使用者用那種裝置登入網頁?由哪個國家來?類似這些的問題. 接下來就打算要好好的研究一下,如何使用這套強大的工具. 安裝與執行: 安裝上其實間單到個不行,所以不太需要敘述.唯一需要談的是要記得裝 Openjdk-7-jre . 在執行Kibana的時候,我自己會一直出現連不到elasticsearch.後來我的解決方法是.先連一個不能連的位置.然後再連一次~就莫名其妙好了. Logstash 的簡單介紹: Logstash實在是一個功能很強大的工具,它主要能做的事情有: [抓取]由各種地方抓取相關的資料,不論是標準輸入(stdin),檔案或是監聽一個連線都可以.並且可以把不同的資料來區隔開來作為之後用途. [篩選]抓取到資料之後,這時候可以選擇使用grok去拆解資料.比如說把一串非常長但是沒人看得懂的log拆解成各個相對應得資料欄位. [輸出]可以輸出到各種地方,不論是輸出到stdout印出來,或是直接丟給Elasticsearch拿來做分析用甚至可以直接輸出到資料庫. Elasticsearch的簡單介紹 Elasticsearch是一個很有用處的資料搜尋引擎.只要能把資料餵給他(沒有限制是logstash的),你就可以下參數去搜尋需要的資料.並且他會吐出相關的JSON回復.預設的連接埠是9200. 並且Elasticsarch支援RESTful的API,所以其實有很多的類似的extension 或是 plugin可以使用. 如果一直把資料餵給他,是可以把它當資料庫使用. Kibaba的簡單介紹 Kibana連接著Elasticsearch之後能夠去搜尋與分析資料,並且把分析的資料用圖像的方式來表現.可以記住許多的分析參數來作為BI的用途. 關於Logstash的進階使用 grok是一個強大的工具,可以免去你使用regular expression 的痛苦,不過它的語法還是需要習慣.它的用途主要是可以把一串長長的字串翻譯成你看得懂的JSON格式.不過前提是你得把資料格式敘述好~讓他知道如何對應. grok debugger 是一個好工具可以幫助你來找出你需要的match pattern. https://grokdebug.herokuapp.com/ 使用流程如下: 先把你的Log RAW Data放到Discover的地方,可以幫你找出一些可能的pattern 不然可以到Pattern去查查看常用到的pattern有哪些 建立好基本的pattern之後,拿到Debugger那邊去一步步把它全部翻譯出來. 一些心得分享: grok 的格式其實沒那麼鬆散,前面的資料還是得清楚敘述,連空格都不能少.後面可以用GREEDYDATA一起收下來. 如果要做出 A or B的match需要使用以下的句子 **(?:A B)** 要查詢已經建立好的grok pattern可以去這裡查詢 https://github.com/elasticsearch/logstash/blob/master/patterns/grok-patterns 結論 ELK Stack (Elasticsearch + Logstash + Kibana)可以幫你解決一些問題如下: 太長的Log卻沒有一個方法可以整理跟分析它 太多來源的log,每次查詢一個問題需要打開三四個檔案,但是往往還是不知道原因.得要人工去查詢. 想要透過系統的log去做一些商業智慧(BI)的分析,但是又無從下手. 我覺得這套系統相當的簡單而易學,重點是也容易架設.我想可以作為伺服器要使用得時候,這個是必須要有的. 參考資料 Logstash 相關: Logstash Book http://logstashbook.com/ Elasticsearch 相關 初探Elasticsarch http://ingramchen.io/blog/2014/06/elasticsearch.html Slide: ELasticsearch 實戰介紹 http://www.slideshare.net/gugod/elasticsearch-19877436 Logstash + Elasticsearch + Kibana 綜合簡介 這篇蠻實用的 http://www.slideshare.net/AmazeeAG/2014-0422-loggingwithlogstashbastianwidmercampusbern?qid=efe9afba-8831-4054-a290-d25183de38f2&v=qf1&b=&from_search=1 蠻多基礎介紹 http://www.slideshare.net/ae_bm/logstash-elasticsearch-kibana?qid=efe9afba-8831-4054-a290-d25183de38f2&v=qf1&b=&from_search=2 對於三個工具的角色有一些介紹 http://www.slideshare.net/nickchappell/pdx-devops-logstash-intro?next_slideshow=1
繼續閱讀