Posts

Showing posts from 2015

Website authentication flow example

Image
mailchimp.com 為例,來看一個網站從使用者註冊、啟動、登入、忘記密碼/帳號等這些常見的功能,還有哪些細節可以注意。以下這些功能幾乎每個網站都有做,但很少做到讓人操作起來這麼流暢的!!
帳號申請若不需要申請,則可以回到登入頁當滑鼠停佇後,才顯示輸入格式、規則的提示可以顯示密碼輸入密碼通過規則後,顏色會變淡符合表單規則後,才可以點擊
欲申請的使用者名稱已被搶走囉很逗趣的英文提示。
申請完成提示會收到 Email 且需要啟動
帳號啟動寄送帳號啟動的 email Email 中提示帳號與一顆很明顯的連結按鈕。
點擊啟動連結進入的畫面
辨識是否是機器人
辨識完成後
寄送 Welcome email
登入主頁面忘記帳號忘記密碼顯示密碼記住登入狀態登入申請新帳號無法登入時的線上說明頁進入升級說明頁
帳號輸入錯誤
密碼輸入錯誤
第一次進入系統其他需要填寫資訊還蠻多的,還好沒放在申請頁面上,應該會嚇跑大部份的人。

登出頁面 See ya later 網址很特別 See ya later (http://mailchimp.com/see-ya-later/)
忘記密碼
輸入不存在的帳號
驗證帳號存在會提示將 Email 寄送到哪個帳號,Email 帳號部分將英數字以 * 取代,若是本人,應該可以看得出來寄送到哪個 Email 信箱。
寄送 email 重新設定密碼 很明顯的帳號與重設密碼的連結按鈕。
點擊後完成的畫面
寄送 email 通知已重新設定新的密碼
回上一頁,會出現提示訊息

忘記帳號
輸入不存在的 Email

Trello 調整接收 Email 頻率

Image
Trello 在下列兩種狀況下會發出系統通知:
1.  主動訂閱 Card / List / Team 時,當有回應時。
2. 屬於自己的工作卡且預定完成日逾期。
通知主要方式是在 Web 或 App 的通知區域,預設是不發送 Email,若要接收Email 通知,可以進入個人設定修改, Email 頻率有三種:即時、每小時、不發送 Email。
設定步驟如下:
Step 1: 點擊右上角自己的名稱 > Setting


Step 2: 點擊 Change Notification Email Frequency


Step 3: 選擇接收 Email 的頻率

IIS 記錄檔匯入 SQL Server

Image
欲將 IIS 網站的記錄檔拋轉至 SQL Server,很簡單的做法如下安裝 Log ParserLog Parser 是一個讀取各種 Log 檔的工具程式,可以使用類似 T-SQL 的語法來查詢多個文字檔案中的資料,請參閱: 功能強大且威名遠播的記錄分析器。將 IIS 記錄定時排程轉入 SQL Server 資料庫,可以先將查詢語法寫成批次檔,透過 Windows 工作排程來執行。首先下載並安裝 Log Parser (採用下一步安裝法) 下載點 http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=24659
新增 Backup 資料匣建立一個備份資料匣,當拋轉資料後將紀錄檔搬移至這個目錄
執行命令修改以下命令,如路徑與資料庫參數,開啟命令提示字元執行或將以下複製建立為批次檔,此段指令會自動建立資料表cd C:\Program Files (x86)\Log Parser 2.2

LogParser "SELECT * INTO iisLogs FROM C:\inetpub\logs\LogFiles\W3SVC4\*.log" -i:iisw3c -o:SQL -server:localhost -database:webLogs -username:sa -password:yourpassword -createTable: ON

move C:\inetpub\logs\LogFiles\W3SVC4\*.log C:\inetpub\logs\LogFiles\W3SVC4\Backup\

完成後可以使用 SSMS 查詢
同場加映Log Parser 功能不僅於讀取 IIS 的記錄檔,還提供很多種讀取的格式,舉例若有 CSV 檔案想要轉入 SQL Server 也可以適用,以下範例是讀取一個 CSV 檔案且沒有欄位標題的作法cd C:\Program Files (x86)\Log Parser 2.2

LogParser "SELECT FileName, RowNumber, Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field1…

How to create index in PowerDesigner

Image
In general, when I design data model in PowerDesigner, my process is:
1. Create CDM
2. Generate PDM from CDM.
3. Generate script.
If I modify data model, I modify CDM then generate to PDM, the process like above.
But, how to create an index of one table?
CDM can’t create an index, only PDM can do it.
In my process, I create an index in PDM, next time I generate from CDM, the index disappeared.
my solution 1. When generating PDM,  select "Preserve modifications" in the “PDM Generation Option” dialog


2.  Comparison Option set not include Table > Indexes
Click [Set As Default], next time won’t need to set again.


3. Generate PDM always accept all actions without remove table index.



display index on PDM 1. Open PDM, Select Menu > Tools > Display Preferences
Click Table
Select Index and Indicator of Index check box.

Apply to All symbols / Selected symbols.
Then it will display like below:



Azure SQL 效能比較

Image
Azure SQL 計費採用 DTUs 計費,DTUs 與 SQL Server 執行時期的效能有直接的關聯性。


Azure 上新增一個 SQL Database ,分別調整不同的付費等級後,執行同一個預存程序彙整資料新增至另一個資料表中,會新增 166,167 筆資料,測試結果如下:
Pricing tierDTUsSpeed time$TWD/月S01000:05:22465S12000:02:55930S25000:02:022,328S310000:01:434,654P112500:00:4214,427P225000:00:2128,856P450000:00:1157,711P61,00000:00:06115,422自行組裝 PC00:00:05
若要達到辦公室中測試主機的效能,可能需要調整到 P6 的等級,但這費用每個月超過11萬元,可負擔不起。
目前傾向做法是,當需要執行大量資料轉檔作業時,先將付費等級調高,一天內再調回原本的等級 (Azure SQL 以日計費)。


參考文章Azure SQL Database 服務層和效能層級 – MSDN 文章
變更資料庫服務層和效能層級 – MSDN 文章

T-SQL 計算佔全部結果的比率

Image
在 T-SQL 中欲計算某一個數值相對於查詢結果中的比率,基本的作法是第一次查詢先計算總和,再進行第二次查詢計算各筆資料的比率。
提供另一種作法,透過 SQL Server 視窗函式 ( Window Function ) 可以一次完成查詢,要計算總合用以下的語法:
sum(column) over (partition by 0) partition by 後面原本接欄位名稱時,會計算以此欄位群組後的合計,
我嘗試放上任一個數字,就變成計算全部,這點沒找到相關文件說明。

完整範例
create table #T (ORDERNO int, Amount numeric(12,4)); insert into #T values(1, 100); insert into #T values(2, 200); insert into #T values(3, 300); select * from #T; WITH CTE as ( select ORDERNO, Amount from #T ) select ORDERNO, Amount, convert(numeric(12,4), Amount/sum(Amount) over(partition by 0)) as Percentage from CTE ; drop table #T;
參考文件
OVER Clause (Transact-SQL) – SQL Server 技術文件

Remove Creative Cloud Files

Image
參考 - Adobe與Google合推全新中文免費字型思源黑體下載教學,安裝了 Creative Cloud 才發現程式得常駐執行,二話不說立馬閃退 - 移除它。但在我的 Windows 10 上將軟體移除後,檔案總管卻遺留一個 Creative Cloud Files 目錄,在檔案總管介面上是無法刪除它,得進入 Registry 工具修改,步驟如下:1. 開啟 Registry 工具按下 [Windows]  + [R] ,輸入 : regedit2. 搜尋 Creative Cloud Files 按下 [Ctrl] + [F]  ,輸入 Creative Cloud Files ,按下 [Find Next]3. 修改 System.IsPinnedToNameSpaceTree 的值為 0在 [System.IsPinnedToNameSpaceTree ] 右鍵 [Modify] 開啟編輯視窗,在 [Value data] 將 1 修改為 0,點擊 [OK]關閉檔案總管,重新開啟就看不到 Creative Cloud Files 目錄。
參考文件Remove "Creative Cloud Files" from File Explorer  - Reddit

T-SQL Update with join table

(A) T-SQL 更新資料的最基本語法格式
UPDATE dbo.Table1 SET CalculatedColumn='New Value' WHERE t1.BatchNo = '110';
(B) 當遇到更新的值需要查詢來取得,原本我只會這樣:
UPDATE dbo.Table1 SET CalculatedColumn= (SELECT [Calculated Column] FROM dbo.Table2 WHERE dbo.Table1.CommonField=dbo.Table2.[Common Field] ) WHERE t1.BatchNo = '110';
(C) 前一陣子,偶然+赫然發現原來可以先 Join 再更新
UPDATE t1 SET t1.CalculatedColumn = t2.[Calculated Column] FROM dbo.Table1 AS t1 INNER JOIN dbo.Table2 AS t2 ON t1.CommonField = t2.[Common Field] WHERE t1.BatchNo = '110';
(D) 另一個採用 CTE (COMMON TABLE EXPRESSION) 的花式應用
;WITH t2 AS ( SELECT [key], CalculatedColumn = SUM(some_column) FROM dbo.table2 GROUP BY [key] ) UPDATE t1 SET t1.CalculatedColumn = t2.CalculatedColumn FROM dbo.table1 AS t1 INNER JOIN t2 ON t1.[key] = t2.[key]; 使用心得
當遇到需要先 JOIN 兩個資料表再做更新時,上述 (B) (C) (D) 三種語法,在實際試過幾種不同狀況,發現針對效能考量上並無一種絕對的作法,得視資料量大小與串聯邏輯去設計與嘗試找到最佳解。

參考文章Update a table using JOIN in SQL Server? – stackoverflow

資料庫專案加入參考

Image
前文<SQL Server Schema Version Control> 介紹在 Visual Studio 2015 / 2013/ … 中建立資料庫專案,透過 Schema Compare 從現有資料庫產生所有項目。
照理此刻整個專案應可以發行到其他資料庫,就在進行建置時發現有 200 項錯誤 (如上圖),主要原因是我有幾個預存程序會讀取系統資料表,例如:
sys.tables
sys.indexes
sys.allocation_units

這些系統資料表的結構不會在專案中,這點也很合理,不然每一個資料庫專案都複製一份 SQL Server 系統資料表,也很累贅的。

解決作法 若有讀取系統資料表的話,可以加入資料庫參考,選取 master  資料庫,原本因引用系統資料表的錯誤則消失了。


在資料庫參考方式有三種選項,使用時機分別為:
1. 若有跨資料庫讀取資料時,可以選擇另一個資料庫專案,事先要先加入方案中。
2. 讀取系統資料則選擇 [System database] –> master
3. 若有跨資料庫,也可以參考該資料庫匯出的 Data-tier Application

參考文件Using References in Database Projects – MSDN

組合多筆資料為一個字串

Image
在 SQL Server 中如何將多筆資料列中屬於同一群組的字串組合起來 ?
在 stackoverflow 找到這一則討論 Optimal way to concatenate/aggregate strings ,文中有兩個解法分別是:
CTE (COMMON TABLE EXPRESSION)XML PATH 解決方法 將其範例調整可以直接執行在暫存資料表中執行如下
CTE (COMMON TABLE EXPRESSION) 範例

create table #t (id int, name varchar(20)); insert into #t values (1, 'Matt'), (1, 'Rocks'), (2, 'Stylus'); WITH Partitioned AS ( SELECT ID, Name, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name) AS NameNumber, COUNT(*) OVER (PARTITION BY ID) AS NameCount FROM #t ), Concatenated AS ( SELECT ID, CAST(Name AS nvarchar) AS FullName, Name, NameNumber, NameCount FROM Partitioned WHERE NameNumber = 1 UNION ALL SELECT P.ID, CAST(C.FullName + ', ' + P.Name AS nvarchar), P.Name, P.NameNumber, P.NameCount FROM Partitioned AS P INNER JOIN Concatenated AS C ON P.ID = C.ID AND P.NameNumber = C.NameNumber + 1 ) SELECT ID, FullName FROM Concatenated WHERE NameNumbe…

Start Kanban on VS Online

Image
Keynote: Visual Studio 2015 - Any app, Any developer (Channel 9) 影片中發現 VS Online 有提供 Kanban 的功能,如上圖有兩處與我目前經常使用的 Spring Board 有所不同,
1. 同一個狀態欄中區分 Doing 與 Done 兩欄
2. 看板中可以橫切 Development 與 Operations 兩個泳道
摸索一下原來這是屬於 Feature 與 Backlog items 看板 (Board) 的功能,在 Spring 的看板中是沒有此項設定,若要採用 Kanban 做為團隊工作看板,可能需要先將 Bug 的層級調整與 Backlog item 相同,否則在這看板中是看不到 Bug 的項目。


在 VS Online 使用 Kanban 設定的步驟如下:

狀態欄中設定 Doing 與 Done 兩欄進入 Visual Studio Online > Work,點擊 Feature 或 Backlog items點擊 Board 進入電子看板,點擊 設定從設定視窗中左側點擊 Columns新增或編輯狀態欄選取 [Split columns into doing and done]

分隔泳道從上一步驟的設定視窗中左側點擊 Swimlanes新增泳道將目前的泳道刪除或排序,也可以直接拖曳進行排序

參考相關文章Kanban | Visual Studio Online
Kanban basics

Customize SSMS Setting

Image
上圖是我在 SQL Server Management Studio (SSMS)中配合黑色背景,所調整的文字顏色設定,目的是要能將關鍵字、資料表/欄位、備註,這三種內容文字明顯區分。
設定步驟 進入 SSMS 選單 >Tools >  點擊 Options ,開啟視窗後,選取 Environment > Fonts and Colors,
選擇欲調整的項目,字型的部分均選擇 Source Code Pro,字體顏色可以透過下拉選項或進階輸入色碼。

以下是我所設定的項目與色碼
項目RGBHex中文名稱Common0, 179, 88#00B358註解Identifier95, 192,206#5FC0CE識別碼Keyword255, 195, 63#FFC33F關鍵字Number255, 129, 0#FF8100數字SQL Operator255, 195, 63#FFC33FSQL 運算子SQL String255, 0, 0#FF0000SQL 字串SQL System Function255, 195, 63#FFC33FSQL 系統函式SQL Stored Procedure255, 90, 64#FF7A73SQL 預存程序SQL Table255, 122, 115#39AECFSQL 系統資料表
SSMS 有提共設定檔的匯入與匯出,選單 Tools > 點擊 Import and Export Settings…,按指示逐步進行。


我的 SSMS 設定檔下載點在此


參考資源 Color Scheme Designer (http://colorschemedesigner.com/csd-3.5/)
Hex To RGB (http://hex.colorrrs.com/)