2018年3月31日 星期六

使用 VSCode開發 python

Anaconda安裝程式會問你需不需也安裝 VSCode,安裝之後如果 python有建立虛擬環境的話,比如要建一個 tensorflow用的需要 python 3.5的話,這時就要設定 VSCode的 Path

作法請參考  Configuring Python environments
先按下 Ctrl + Shift + P後輸入 python:Select Interpreter後就可以選擇其環境




2018年3月28日 星期三

SQL Server Performance - Block, SQL, Open Trans, Lock

針對 SQL Server,我不是 DBA,但是還是可以透過系統的資訊查詢到可能有問題的節點。

先檢查 DB Server CPU, RAM, I/O的執行狀況,離峰與尖峰的時段的情況,有 Whatsup可用的話,定時捉取 Server資訊比較方便。


查詢那些 SQL秏用的時間比較多,可以用下列 SQL 查詢,最主要看的是每次平均執行最長的前 20,看是否再作 SQL Tuning或是建立 Index方式可以改善

select * from (SELECT TOP 20
substring(ST.text, ( QS.statement_start_offset / 2 ) + 1,
( ( case statement_end_offset when -1 then DATALENGTH (st.text) else QS.statement_end_offset end - qS.statement_start_offset ) / 2 ) + 1 ) as statement_text ,
total_worker_time / 1000000.0 as total_worker_time_second,
execution_count,
( total_worker_time / 1000000.0 ) / execution_count as avg_worker_time_second,
total_logical_reads,
total_logical_reads / execution_count as avg_logical_reads,
qp.query_plan ,creation_time,last_execution_time
,CONVERT(varchar(max),sql_handle,2) as sql_handle
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle ) st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY avg_worker_time_second DESC
) a


查詢 Block資訊,看有那些 process 造成塞車,要把源頭解決,這部份 SQL Server有標準報表,而我是寫一隻 procedure定期執行,可以把當下的情況記錄下來,如果有一隻 process一直塞成塞車的情況,就可以大約知道塞了多久,前不久才發現有人使用 TOAD for SQL Server可以造成 block的狀況,而且有 2個多小時。不知道是人的問題還是 TOAD的問題

SELECT 0 as spid ,blocked
    FROM ( SELECT * FROM master..sysprocesses WHERE blocked > 0 ) a
    WHERE NOT EXISTS ( SELECT * FROM master..sysprocesses WHERE a.blocked = spid AND blocked > 0 )
    UNION
    SELECT spid ,blocked
    FROM master..sysprocesses
    WHERE blocked > 0;


查詢 process 狀況,每一個 connection 連線狀況,如果是 client/server的軟体連線到 DB上,當一個使用者使用系統時,在 DB的部份就可能會發現一次就會好幾個 process產生,最主要這邊要看是否有 open_tran >= 1,執行很久的就要注意,尤其 status  還是 sleeping的就是馬上要解決的 process,看是那一個程式連線到 DB的可能要關掉

select spid,loginame,hostname,program_name
, login_time,last_batch ,text,open_tran, blocked
 ,CONVERT(varchar(max),sql_handle,2) as sql_handle
,status,Cmd,s.DBID
from master.sys.sysprocesses s CROSS APPLY sys.dm_exec_sql_text(s.sql_handle)


查詢 Lock情況,找出 resource_mode為 X,這部份要先確認 process的執行狀況,正常的情況是 process open_tran = 0,lock就會消失,所以先解決 process的問題後都沒有辦法,再來作 kill process的動作

select * from (SELECT request_session_id AS spid,
    resource_type AS rt,
    resource_databASe_id AS rdb,
    (CASE resource_type
    WHEN 'OBJECT' then object_name(resource_ASsociated_entity_id)
    WHEN 'DATABASE' then '<db_name>'
    ELSE
    (SELECT object_name(object_id) FROM sys.partitions
        WHERE hobt_id = resource_ASsociated_entity_id) END) AS objname,
    resource_description AS rd,
    request_mode AS rm,
    request_status AS rs
FROM sys.dm_tran_locks ) a
where  1=1

2018年2月26日 星期一

Line Bot 加入選單

目前有兩種方式可以加入選單
方法1 使用 Messaging API的方式,可以達到動態設定

如果要使用 Messaging API 可以參考 官方 API參考
需要建立 rich menu,上傳 rich menu image ,設定別名,指定預設 menu等作業,不同作業有不同的 API (網址),帶入參數除了 token之外,其它大部份一般都是用 json格式,使用者可以實作程式控管,但如果不常變動,建議可以使用 Postman來完成工作即可

背景圖的繪製可以至 Pixlr.com 完成


方法 2使用 Line Manager內設定,可以設定多個並指定日期

在 Line Manager請點選建立圖文影音內容,請新增一個圖文選單,相關欄位請輸入,有6格或 4格可以選擇,下列的方式是用文字 + 圖標方式,是比較簡單的,也可以用圖片製作,輸入完成之後就儲存



到基本設定請把行動官網選單設為隱藏


設定完成之後,使用手機開啟 Line bot應該就可以看到如下的畫面了



2018年1月11日 星期四

ThunderBird Theme Font & Size Changer插件不能用了

參考文章:
Review for Theme Font & Size Changer for TB by mrx2020


目前發現有的 plug-in不再支援新版的 thunderbird,比如Theme Font & Size Changer,這部份有方式可以解決,先要下原本的 plug-in,副檔名為 .xpi再解壓縮後,修改 bootstrap的程式碼,改完再重新壓縮,使用用不同名稱的 .xpi file後使用檔案更新的方式安裝 plug-in

2017年10月13日 星期五

Keras安裝後在 Visual Studio Code上執行程式

參考文件:手把手的深度學習實務

參考逢甲與美光合辦的研討會,對 Keras有一些些了解,如果有在使用 tensorflow的入門級朋友,講師建議要使用 Keras會比較好上手。上完課之後雖然還是很多不懂,但看到了講師的功力,相信台灣對於 machine learning這一塊上的人才還是很多的。

安裝的部份,講師的投影片上建議用 anaconda安裝 python環境 ,目前我是安裝 5.0,0 (python 3.6,windows)的版本,下載後就執行安裝,安裝完之後使用 anaconda prompt建一個 python 3.5的環境 (就我了解, tensorflow是使用 python 3.5),接下來就是用 pip, conda下載必要的 libraries,一直到執行最後一步 pip install keras就會出錯,無法安裝成功。

問了一下 google大神,發現有一篇文件可以解決我的問題,pip throws TypeError: parse() got an unexpected keyword argument 'transport_encoding' when trying to install new packages ,作法就是到  https://github.com/html5lib/html5lib-python/tree/master/html5lib 下載 html5lib 目錄並覆寫到 python 3.5虛擬環境上的 Lib\site-packages\html5lib,然後再重新執行一次 pip install keras應該就可以安裝了

如果有用 VS上有安裝 python tool開發的朋友,就可以新增一個 python環境,並指定路徑至剛剛建立的 python 3.5虛擬環境即可

2017年8月31日 星期四

video.js 6要使用 flash播放影片的方式

使用 video.js 的好處是他會自動判斷瀏覽器是否支援 html 5播放,如果沒有,可以用舊的方式,也就是 Flash player方式。

在 video.js 5, video.js 6版時,作法已經不一樣了,在 6的版本,已經變成 plugin的方式,也就是獨立變成一個 videojs-flash.js, 可至 videojs-flash github上下載,參考網站上的使用方式即可