星期四, 5月 11, 2017

Ptt 杜奕瑾的演講

今天公司邀請Ptt來演講,在這邊做個筆記。

















為什麼建立ptt會成功?
當初學網剛出來,他就拿open source的東西在玩,
覺得好玩就架了ptt(做別人沒做過的事,而且是要第一個做)
1995的年代,父母親會說,怎麼會把時間都放在網路上?
被嘲笑、批評也沒有關係,重點是經驗。
另外一點是,要先有錢挹注的環境先練習,類似一個培養皿上面做事。
這樣第一手經驗都是自已的。


後來去美國微軟發展。

剛到美國,有些工作要求美國公民,甚至要身家調察到符合安全。
如何進去這樣子的工作? 缺少資格的話,就先做你認為對的事情
重點是把技術應用在一個專門的地方
到後面碩士跟PhD學歷只是保證你不會被人事過濾掉。
人家會問你之前實際做過了什麼。

為什麼要回台灣?
沒有明講,只是說對台灣有深厚的感情。
希望把小孩留在美國接受Informative的教育,而不是台灣的填壓式教育。


軟體工程師在乎的是環境,因為軟體的移動性很高。
到哪裡做都一樣,只要有網路跟雲就好。
剩下的就是考慮生活環境的問題。
其實不管是軟體工程師,其它的工作也一樣。
要善待人才

在微軟做過許多項目,其中Cortana是比較多可以講的。
Cortana就是微軟的Siri
語音辨識不是AI,裡面沒有智慧的東西。
重點是東西做出來之後,如何幫助傳統產業把問題解決(最後一哩)
機器要徹底了解人的潛在需求
Apply to business logic.

微軟幫麥當勞做自動點餐系統(得來速)
一個人對著麥克風講,系統就邊講邊分析(展開語意樹),自動點餐。很酷
OS 不重要,重要的是一個對的體驗
做對體驗,全世界就會跟著你轉。
去想如何增進自己周圍的使用體驗,是一個最好的練習機會。

不是說有了搜索引擎就不用背書
不是說有了人工智慧就不用判斷
不是說有了掃地阿姨就不要老婆

瀏覽器廣告
擋廣告的人就是各大廣告商想要找的對象。
尤其是找出對的廣告來推銷

提到大數據。
資料只要夠多就好,過多的資料只會造成over fitting

提到台灣是不是有人才可以做AI
台灣的大學,有高質量的教授與實驗室可以培養人才。

是不是人口多才可以做AI?
新加玻都要投錢做AI了,人口少不是問題。

AI不是為了只是某個問題而已,而是要用想像力去看整個面向的事情。

總結

Big data
Model
Experience

團隊有在找人,不過他不想找VC不想要有老闆(自由無價)

提問
一個講話都不太清楚的老頭:「你知道最近的補教業的事情嗎? 如何看待這裡面的Disorder?
:知道,我有看八卦版()
正反兩面都有辦法闡述意見時其實就是好的
因為在Ground truth 不知的情況就不知怎麼做Leveling


星期一, 5月 08, 2017

使用Maven jboss plugin 進行佈署

Maven 有很多的外掛軟體可以使用,能夠幫助管理專案的建置與佈署。

這邊介紹的是Maven jboss plugin。

先將 jboss eap 6 打開。

設定值為:


<plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<version>7.9.Final</version>
<configuration>
<hostname>127.0.0.1</hostname>
<port>9999</port>
</configuration>
</plugin>

把這個設定值加入到POM檔之後,輸入Maven指令。

mvn jboss-as:deploy-only

啟動後,就會發現jboss會跳出正在deploy的訊息,而且它會把舊的專案更新成新的專案。

底下這個是由Maven產生出的訊息,Build Success表示沒有錯誤,WAR檔更新成功。

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building xxx0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- jboss-as-maven-plugin:7.9.Final:deploy-only (default-cli)
五月 08, 2017 9:48:46 上午 org.xnio.Xnio <clinit>
INFO: XNIO Version 3.0.7.GA
五月 08, 2017 9:48:46 上午 org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.0.7.GA
五月 08, 2017 9:48:47 上午 org.jboss.remoting3.EndpointImpl <clinit>
INFO: JBoss Remoting version 3.2.12.GA
Authenticating against security realm: ManagementRealm
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.156 s
[INFO] Finished at: 2017-05-08T09:48:53+08:00
[INFO] Final Memory: 12M/190M
[INFO] ------------------------------------------------------------------------

git 無法推送到遠端git lab 的問題

由於自己架git 的repository 沒有像svn來的方便,但是又不能將客戶的程式碼放到github作為公開使用,所以我選了gitlab使用。但是當我用git push 時得到下面的訊息,程式碼就沒有推送上去。

$ git push
Counting objects: 9292, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2136/2136), done.
error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
Writing objects: 100% (8222/8222), 1.27 MiB | 837 KiB/s, done.
Total 8222 (delta 6060), reused 8181 (delta 6033)
fatal: The remote end hung up unexpectedly
Everything up-to-date

輸入以下指令,調整git系統使用的buffer size

git config http.postBuffer 524288000


之後再下git push 就可以確實將程式碼上傳到gitlab上。 

Android Wear Preview 使用注意事項

1.必須要用gmail帳號申請一個Preview用的sample code 程式碼。

2.必須要有一個可以跑android 版本 4.4.2的手機或是平板。

3.要下載google android wear preview專用的一個app。

4.啟動後的android wear 裝置不支援聲音輸入。

5.將手機裝置與android wear裝置連線後可以用preview app 對wear 裝置發送訊息。

6.訊息有很多種,有文字訊息、圖片訊息、可回復的訊息......等。  

星期四, 5月 04, 2017

MySQL Universal date format transform

由於一開始沒有控管日期的格式如何,資料蒐集起來有點雜亂。

但是MySQL沒有像Oracle資料庫系統有比較好用的日期處理Function,在經過不斷嘗試後終於找到一個適合的方法。

使用UNIX_TIMESTAMP這個function,就可以同時把不同格式的日期一併轉成是統一的格式。

不會再有一種格式轉出來是正常的,另外一種格式轉出來卻是null的情況發生。

select count(callDate) from DeliverLog where from_unixtime(UNIX_TIMESTAMP(callDate),'%Y-%m-%d %H:%i:%s')

>= STR_TO_DATE('2016-12-01 00:00:00', '%Y-%m-%d %H:%i:%s') and from_unixtime(UNIX_TIMESTAMP(callDate),'%Y-%m-%d %H:%i:%s') < STR_TO_DATE('2017-01-01 00:00:00', '%Y-%m-%d %H:%i:%s')

select count(*)

deliverTime from DeliverLog where deliverTime is not null and TIME_TO_SEC(TIMEDIFF(STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') ,STR_TO_DATE(pickTime, '%Y-%m-%d %H:%i:%s'))) < 14400 and

STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') >= STR_TO_DATE('2016-11-01 00:00:00', '%Y-%m-%d %H:%i:%s') and STR_TO_DATE(deliverTime, '%Y-%m-%d %H:%i:%s') < STR_TO_DATE('2016-12-01 00:00:00', '%Y-%m-%d %H:%i:%s')