2018年1月16日 星期二

Mysql table 設定自動日期值

MySQL CURRENT_TIMESTAMP in milliseconds


DROP TABLE TEST_DATETIME;
CREATE TABLE TEST_DATETIME
    (
        ID INT NOT NULL AUTO_INCREMENT COMMENT 'ID',
        MEMO VARCHAR(20) COMMENT '備註',
        CREATE_DATE DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6),
        UPDATE_DATE DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
        PRIMARY KEY (ID)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='測試DATETIME';



    INSERT INTO TEST_DATETIME (MEMO) VALUES ('T'); -- 請多按幾次

    UPDATE TEST_DATETIME SET MEMO = 'Y' WHERE ID = 3

    -- 觀察時間
    SELECT * FROM TEST_DATETIME



    -- 自己看差別
    SELECT CURRENT_TIMESTAMP
    SELECT CURRENT_TIMESTAMP(3)
    SELECT CURRENT_TIMESTAMP(6)



但搭配 hibernate 時,仍需要額外設定,Hibernate 程式寫入時,才會自動寫入時間


在 hbm 檔裡,欄位需額外加入 insert="false" update="false"

     <property name="createDate" type="java.util.Date" insert="false" update="false">
          <column name="CREATE_DATE" />
     </property>
     <property name="updateDate" type="java.util.Date" insert="false" update="false">
          <column name="UPDATE_DATE" />
    </property>



2017年12月18日 星期一

透過 Python 發 Line Notify 三部曲 - 發圖圖圖片


要發圖片!
首先最重要的一件事!   是你必須有一張圖片!

先用 curl 下載一張圖片 (請原諒我幻想症又發作了命名為 girlfriend.jpg)
底下環境是在手機上的 Termux 執行,可參考第二篇
curl http://entdata-pic.stor.sinaapp.com/2014121008/548798f25462b01.jpg > girlfriend.jpg


接著,先透過 curl 試發 (Bearer 後面的 2Dxxx7V 的,記得換成你自己的 token)
curl -X POST https://notify-api.line.me/api/notify \
     -H 'Authorization: Bearer 2D111111111111111111111111117V' \
     -F 'message=test' -F 'imageFile=@/data/data/com.termux/files/home/girlfriend.jpg'


帥氣的按下 enter 後,這時你應該會看到你帥氣的 Line 彈跳出美麗的女友照片



/data/data/com.termux/files/home/ 真的是我 Termux 的家目錄
一般人應該是在 /home 而已,注意路徑前面要加個 @


好,不廢話,因為現在超累超想睡,明天還要上班,我要 GG 了…
Python 程式碼如下:

  1. import requests, os
  2.  
  3. """
  4. 發送 Line Notify 訊息
  5. """
  6. def lineNotify(token, msg, picURI):
  7. url = "https://notify-api.line.me/api/notify"
  8. headers = {
  9. "Authorization": "Bearer " + token
  10. }
  11. payload = {'message': msg}
  12. files = {'imageFile': open(picURI, 'rb')}
  13. r = requests.post(url, headers = headers, params = payload, files = files)
  14. return r.status_code
  15.  
  16.  
  17. token = os.environ["LINE_TEST_TOKEN"]
  18. msg = "Hello Python"
  19. picURI = "/data/data/com.termux/files/home/girlfriend.jpg"
  20.  
  21.  
  22. lineNotify(token, msg, picURI)



好啦,其實我是參考這篇來著的

如果你有卡關,可以先參考看看
第一篇,透過 Python 發 Line Notify
第二篇,透過 Python 發 Line Notify 二部曲 - 發表情符號

補充,突然想到,其實你的 D 槽裡面不用有一堆圖片也沒關係
也可以直接發網路上 http:// 上的圖片的樣子,但這個需求應該比較少
因為還要上傳到網路上,再指定該網址,就不再試了

透過 Python 發 Line Notify 二部曲 - 發表情符號


自從用了 Termux,覺得這真的是他媽的好物!!
簡單講,它就是讓你沒啥屁用的手機搖身一變成一台強大的 Linux 主機! (絕對可以跑 python)

之前看到人家說 pythonAnywhere 是利器!  結果花了時間嘗試後,發現連 requests.get 都不行,一定得花錢才能有些作用,這根本是在浪費我寶貴的人生嘛…    雖然說免費的最貴,但我就是不想花錢!

除了我的 0050深似海Line群組 目前的自動通知 notify 程式是跑在上面以外,這次試 Line 發圖片也是先在上面跑 crul 到 line 的網址作測試

比如這次先用  curl 發 Line Notify 表情符號,透過 putty 連入手機

(Bearer 後面的 2Dxxx7V 的,記得換成你自己的 token)
curl -X POST https://notify-api.line.me/api/notify \
     -H 'Authorization: Bearer 2D111111111111111111111R7V' \
     -F 'message=test' -F 'stickerPackageId=1' -F 'stickerId=114'

如圖:

用了 Termux 後,我不只長高了,考試都考一百分了!
不再需要開 vmware 或 virtualbox 耗掉自己電腦的效能!
你的手機就是一台強大的 Linux 主機了!


恩,廢話又講太多了,用 python 透過 Line Notify 傳表情符號
  1. import requests, os
  2.  
  3. """
  4. 發送 Line Notify 訊息 + 表情符號
  5. """
  6. def lineNotify(token, msg, stickerPackageId, stickerId):
  7. url = "https://notify-api.line.me/api/notify"
  8. headers = {
  9. "Authorization": "Bearer " + token
  10. }
  11. payload = {"message": msg, "stickerPackageId": stickerPackageId, 'stickerId': stickerId}
  12. r = requests.post(url, headers = headers, params = payload)
  13. return r.status_code
  14.  
  15.  
  16. token = os.environ["LINE_TEST_TOKEN"]
  17. msg = "Hello Python"
  18. stickerPackageId = 2
  19. stickerId = 38
  20.  
  21. lineNotify(token, msg, stickerPackageId, stickerId)



最後,參考資料,表情符號對照 ID 可參考此文件:
https://devdocs.line.me/files/sticker_list.pdf


如果你只是要單純傳訊息,可參考之前的第一篇
如果你要發圖片,請參考第三篇…

透過 Python 發 Line Notify 三部曲 - 發圖圖圖片


2017年12月17日 星期日

透過 Python 發 Line Notify


透過 Line Notify 機制發 Line 訊息提醒自己其實超簡單
網路上很多教學要設定一拖拉庫,有點沒必要
最難的大概就在設定 token 而已吧,但也其實就是下面這樣而已

請留意,務必使用電腦版申請,因為用手機版似乎會拉不到最下面


到設定網址  https://notify-bot.line.me/zh_TW/  進行登入


登入後在右上角自己的名字下拉選單點選「個人頁面」


進行後往下拉,會看到如圖,按下「發行權杖」


接著就是出現一堆你自己的群組讓你選,第一次你應該選那個很厲害的
「透過1對1聊天接受LINE Notify的通知」,開發時用來進行測試
測完再再開始胡亂發到各個群組去~



填完一個帥氣的 智障名稱 權杖名稱後,按下發行,
這時你應該已經得到那該死的權杖了 (後續在程式裡我叫它 token)
他長的像底下這樣,要記下來,後續好像沒辦法查

1e23xIfEx53QJUuewWpkldrxdf23clIW1x0VaxdfDCew7V


若找不到發行,應是解析度問題,請按 ctrl + 滑鼠下滾,應該就可以看到發行按鈕




得到權杖後,python 發 line 對你應該沒難度了

執行
pip install lineTool


  1. '''
  2. 測試 Line Notify
  3. Created on 2017年12月11日
  4. @author: rocky.wang
  5. '''
  6. import os
  7. import lineTool
  8.  
  9. # token 改成你自己的,底下的案例是設到環境變數
  10. token = os.environ["LINE_TEST_TOKEN"]
  11. # 這是放明碼,不建議,以免不小心就 push 到 github 上了
  12. token = "1e23xIfEx53QJUuewWpkldrxdf23clIW1x0VaxdfDCew7V"
  13. msg = "Notify from Python \nHave a nice day"
  14.  
  15. lineTool.lineNotify(token, msg)


如果你有潔屁,不想安裝奇奇怪怪的 lineTool
原始碼其實只有這樣,就自己寫囉
剛沒注意到把自己真實的 token 給放上去了,所以還是建議放環境變數以免不小心就把自己的 token 給 push 到 github 了,就冏了

  1. import requests
  2.  
  3. """
  4. 發送 Line Notify 訊息
  5. """
  6. def lineNotify(token, msg):
  7.  
  8. url = "https://notify-api.line.me/api/notify"
  9. headers = {
  10. "Authorization": "Bearer " + token,
  11. "Content-Type" : "application/x-www-form-urlencoded"
  12. }
  13. payload = {'message': msg}
  14. r = requests.post(url, headers = headers, params = payload)
  15. return r.status_code


續集

透過 Python 發 Line Notify 二部曲 - 發表情符號









2017年11月14日 星期二

測試第一篇文章

這是內容
  1.  
  2. class Voila {
  3. public:
  4. // Voila
  5. static const string VOILA = "Voila";
  6.  
  7. // will not interfere with embedded tags.
  8. }
  1. def sendMail(subject):
  2. print(subject)
  3.  
  4. sendMail("Hello")
  1. /**
  2. * 讀取 word 範本與 POI 產生報告
  3. *
  4. * @author Rocky
  5. */
  6. public class WordReportDemo01 {
  7.  
  8. public static void main(String[] args) throws Exception {
  9. new WordReportDemo01().execute();
  10. }
  11. private void execute() throws Exception {
  12. Student student1 = new Student("子瑜", 79, "做的非常好");
  13. Student student2 = new Student("小明", 89, "記得多運動");
  14.  
  15. createWordFile(student1);
  16. createWordFile(student2);
  17. }
  18. }
  19.