2019年12月3日 星期二

oracle 18c new feature



18C
以後增加的一些新的特性了,列了一些新增的一些實用的新特性。
(一)Availability
1.      Oracle Data Guard Multi-Instance Redo Apply Supports Use of Block Change Tracking Files for RMAN Backups
現在,Multiple-Instance Redo Apply(也叫 MIRA ),也可以支持 BCTBlock Change Tracking)的備份方式了。這對於超大的數據庫,且是主從都是 RAC(實時應用集群),且備份發生在從庫上,這是非常有效的一種增量備份方式。
2.      Automatic Correction of Non-logged Blocks at a Data Guard Standby Database
自動糾正備庫因Nologging而導致的壞塊問題。新增兩種 standby logging 模式(主要是為了加快主庫 loading 數據):
一種是 Standby Nologging for Data Availability,即 loading 操作的 commit 會被 delay,直到所有的 standby apply data 為止。
SQL> ALTER DATABASE SET STANDBY NOLOGGING FOR DATA AVAILABILITY;
一種是 Standby Nologging for Load Performance,這種模式和上一種類似,但是會在 load 數據的時候,遇到網絡瓶頸時,先不發送數據,這就保證了 loading 性能,但是丟失了數據,但是丟失的數據,會從 primary 中再次獲取。
SQL> ALTER DATABASE SET STANDBY NOLOGGING FOR LOAD PERFORMANCE;
3.      Shadow Lost Write Protection
創建一個 shadow tablespaces(註:是 big file tablespace)來提供保護。(註:此時你就可以不需要 ADG 來提供額外的 lost write 的保護了), 寫丟失的影子保護,可以在表空間、數據庫、數據文件級別開啟,用於主動提前檢查和防止寫丟失。
4.      Backups from non-CDBs are usable after migration to CDB
原來的 non-CDB,可以以這種方式,作為一個 PDB 遷移到當前已經存在的 CDB 中。
5.      Scalable Sequences
自適應的序列,是為了減少高並發DML下的競爭,通過構建不連續的序列,打散和減輕類似索引之上的分裂競爭等,這是來自Oracle優化最佳實踐的增強。
6.      User-Defined Sharding Method
支持用戶自定義分片。這個在12.2中的 beta 版中存在的特性在,在正式發布是被取消了。現在,再次 release 出來了。
7.      Consistency Levels for Multi-Shard Queries
提供 MULTISHARD_QUERY_DATA_CONSISTENCY 初始化參數,執行之前可以先設置該初始化參數,避免跨分片查詢時的 SCN synchronization
8.      Manual termination of run-away queries
現在,你可以手動的殺掉一個語句,而不斷開這個 session
ALTER SYSTEM CANCEL SQL

(二)Big Data and Data Warehousing
1.      Approximate Top-N Query Processing
註:18c 中,增加了 APPROX_COUNT APPROX_SUM 來配合 APPROX_RANK 的使用。
2.      LOB support with IMC, Big Data SQLLOB
對象也支持 in memory 了。


( 三)Database Overall
1.      Copying a PDB in an Oracle Data Guard Environment新增了2個參數,方便在 ADG 環境中創建 PDB
一個是 STANDBY_PDB_SOURCE_FILE_DIRECTORY,自動尋找 ADG 的數據文件路徑(註,在 18c 之前,如果將一個 pdb 插入到一個 standby 環境的中 cdb,需要手動將文件拷貝到 pdb OMF 路徑下)另一個是 STANDBY_PDB_SOURCE_FILE_DBLINK,方便 remote clone 時自動查找 ADG 文件路徑(註:在 18c 之前,如果是本地 clone,就不用復制數據文件,但是遠程 clone,就需要手動復制)。
2.      PDB Lockdown Profile Enhancements
現在可以在 application root CDB root 中創建 PDB lockdown profile
你現在還可以根據一個 pdb lockdown profile,創建另外一個 pdb lockdown profile
18c
包含三個默認的 lockdown profilePRIVATE_DBAAS,SAASPUBLIC_DBAAS
3.      Refreshable PDB SwitchoverPDB refresh
支持了 switchoverswitchover 分成計劃內核計劃外的兩種場景。計劃內的,可以切回去,主要用於平衡 CDB 的負載。計劃外的,主要用於 PDB master 失效之後,不用整個 CDB 做切換。
4.      PDB Snapshot Carouselpdb snapshot
備份轉盤,默認保留8份,每24小時備份一次。
ALTER PLUGGABLE DATABASE SNAPSHOT MODE EVERY 24 HOURS;
5.      New Default Location of Oracle Database Password File
口令文件路徑已經在 ORACLE_BASE,而不是 ORACLE_HOME,以便去除對ORACLE_HOME的更改。
6.      Read-Only Oracle Home
可以在 dbca 或者 roohctl -enable 來進程 read only oracle home 的安裝,運行 orabasehome 命令可以檢查當前的 Oracle Home 是否只讀,如果這個命令輸出的結果和 ORACLE_HOME 一樣,則表示 Oracle Home 是可讀寫的。如果輸出是 ORACLE_BASE/homes/HOME_NAME,則表示 Oracle Home 是只讀。設置 ORACLE_HOME 為只讀,則變化文件將創建於 $ORACLE_BASE, 這是為了標準化、分發共享、滾動升級等提供便利。
7.      Online Merging of Partitions and Subpartitions
支持在線合並分區,加強了在線維護性。註:需要使用 ONLINE 關鍵字。
8.      Concurrent SQL Execution with SQL Performance AnalyzerSPA
可以並行運行了(默認情況還是串行),幫你更快的完成 SPA 測試,這個特性在升級時很有用。
(四)Performance
1.      Automatic In-Memory
自動 In Memory 會根據 Heat Map,在內存使用緊張的情況下,將不常訪問的 IM 列驅逐出內存。
2.      Database In-Memory Support for External Tables
外部表支持 IM 特性。
3.      Memoptimized Rowstore
SGA
中有一塊 memoptimize pool 區域,大小受MEMOPTIMIZE_POOL_SIZE 參數設置,當開啟 fast lookup 的時候,就能利用該內存區域,進行快速的查找。開啟 fast lookup,需要在建表語句中加上關鍵字:當基於主鍵查詢時,就能使用到 fast lookupMemoptimized Rowstore 將極大的提高物聯網中基於主鍵的高頻查詢。

(五)RAC and Grid
1.      ASM Database Cloning
ASM
數據庫克隆支持多租戶數據,這個特點通過ASM冗余提供了一種基於數據的原生克隆方式,可以替代基於存儲級別的克隆或復制同步
2.      Converting Normal or High Redundancy Disk Groups to Flex Disk Groups without Restricted Mount
鼓勵往 flex diskgroup 上轉型。
(六)Security
3.      Integration of Active Directory Services with Oracle Database
和微軟的 AD 結合。在18c之前,需要使用 Oracle Enterprise User Security (EUS) 進行交互,現在,可以使用 centrally managed users (CMU) 直接將 AD users groups Oracle users role 進行 mappiing


2019年9月2日 星期一

產品經理與產品設計師

PM合作方式

我該怎麼跟設計師提需求/定時程/給回饋?

1. 告訴他們你的想法跟方向,不要讓他們猜測你的心意!

這個設計是要解決什麼問題、背後的假設是什麼、為什麼要做?你預期改動的範圍(Scope)是什麼?你替這個產品改動設定什麼樣的指標(Metrics)?上線後你期待的結果(Outcome)是什麼?下一步又是什麼?
試著將以上問題主動向設計師說明,讓他們有足夠的資訊和明確的方向可以去探索解決方案,就可以省下一些他們拼命猜測占卜需求者內心世界的時間了。
另外若手邊有其他相關資訊,像是各種可能發生的stakeholder feedback、相關數據等等也可以一併告知,讓他們可以提前準備,之後就不會被排山倒海的回饋淹死。

2. 讓設計師一起參與產品早期策略討論

把設計師當成「一起思考的夥伴」而非「接受需求的人」,除了比較技巧性的日常,設計師也能提供策略性的產品想法,而且他們通常都對長期規劃與願景非常有熱情和洞見!如果他們充分了解產品走向,也能有效幫助設計解決了用我們真正想要解決的問題。

3. 給設計師探索的空間

探索其實是設計過程中很重要的一環,若能探索的夠廣夠深,就能有更全面的思考以及更精煉的結果。所以請給設計師足夠時間做研究和測試,協助找到有品質的解法,不要亂壓不合理死線。
研究與測試規模可大可小,如果時間不夠多可以跟設計師討論看看如何用最少時間達成最大效益,比如說:只在辦公室跟同事一起做個簡單易用性測試、或者利用線上問卷做快速驗證等等。
另外也請給設計師空間設計出最佳體驗,再來決定如何執行或實驗,不要太畫地自限,這樣可能會在不知不覺中忽略掉一些明明就可行,或成本不高、但最後卻沒去做的點子。

4. 給回饋時專注在「為什麼」,而不是「怎麼修改」

練習如何給回饋是跟設計師合作很重要的一環,盡量不要用「我要給厲害建議」的心態討論,而是用「從使用者的角度來看,我可能會有某某疑問」的方向來幫忙檢視設計。
想清楚你「為什麼」要給這個回饋?這個回饋要如何協助產品達到用戶目標或商業目標?並且將你的想法向設計師說明,唯有瞭解你的動機,他們才能判斷你的回饋到底合不合理、又該用什麼方法做出有品質的改動。
若先告知方向和原因,設計師就能夠發揮專業,去探索對的解法。所以你其實不需要直接指示「我覺得按鈕可以改大」「文字可以改藍色」「這邊好像可以往上一點」之類的細微修改建議,除非你有很明確的原因為什麼這樣改有直接的幫助。

設計師的三大地雷

1. 需求或產品目標不明確

設計師們期待產品經理可以統整資訊、清楚的說明產品策略與定位,讓他們能夠放心的依循你的資訊去做設計。所以當產品經理一問三不知,描述不清不楚,設計師會覺得你連自己要什麼都不知道,怎麼能期待他們猜中你的內心做出符合你想像的設計呢?

2. 給一堆假設性的限制和沒有根據的猜測

雖然有時候「直覺」很好用,但我們都會有盲點,盡量避免只憑直覺或經驗就否定設計的可能性。 所以不要自己猜測好像設計太複雜可能要花很久時間開發,就先限制設計師的想法讓他們綁手綁腳;不要自己覺得這設計用戶可能不喜歡,就不去探索和驗證。

3. 不相信設計師專業

不要讓你的個人喜好凌駕客觀數據或研究之上,或者表現出「這設計很簡單啊」的態度。雖然很多設計師都很善良,能幫忙就盡量幫忙,但也不要沒有理由的在最後一刻要求更改設計,更不要不溝通就亂改設計師的設計。

對設計師來說什麼叫做「好的產品經理」

1. 使用者中心

「使用者中心」絕對是設計師最重視的特質之一,如果你能事事從用戶的角度思考與溝通,就已經成功一大半了。如果PM們還略懂用戶研究方法或產品驗證方法,一起參與用戶研究過程,並給予回饋讓研究變得更有價值,就是非常加分的好PM。

2. 有遠見有願景 比團隊想的更遠

除了站在使用者角度著想,在設計師們的心中,一個好的產品經理也要可以想的長遠、有明確願景讓團隊與設計師知道接下來要怎麼走。
主要原因我想有兩個,第一個原因是設計師的工作需要大量的團隊共識才能順利推進,而清楚的產品方向是創造共識的一大前提。第二個原因是,未來的產品走向能夠幫助設計師產出更符合長期目標的設計架構,但是他們的日常工作又常常要埋頭在許多設計細節裡面,常常沒時間做這件事情,所以更需要產品經理的協助。

3. 頭腦清楚

在這裡我想表達的「頭腦清楚」代表兩件事:

一是優先級清晰

知道什麼事情重要、什麼事情不重要,能夠協助設計師專注在重要的事情上,分配時間和資源給關鍵的問題等等。

二是決策性強

其實PM和設計師每天都要做非常多產品決定,有些地方(通常是產品細節,例如設計動畫或視覺)是設計師的主要決策領域,但也有些地方其實是產品經理的責任(通常是High-level的產品決策,例如推薦功能要結合什麼演算法在哪些頁面呈現)。
比較會有問題的決策狀況是產品經理做太多細節決策導致設計師覺得限制太多,或者是做太少決策導致設計師沒有方向可循。
所以我們要練習試著去採納設計師的想法做出綜合性判斷,但也不要把從小地方到大決策的全部決策權推給設計師。和夥伴討論一下,一起找出「什麼時候該做決策、什麼時候該讓設計師放心去飛」的平衡吧!

4. 資訊透明並主動告知

好的產品經理也該是好的團隊領導人,清楚跟團隊分享現在團隊的狀況,進度總結,上面的決策等等,也是重要的特質。
我覺得我的產品設計師朋友們會特別提出這點,可能跟產品設計工作內容有關,因為他們參與整個產品開發的過程,如果PM能協助讓資訊透明,除了讓他們做事更容易,不需要一直追著別人要資訊以外,也比較不會有種資訊落後的不安全感。

5. 信任設計師的執行和判斷


信任永遠是合作愉快的基礎,不要請設計師做研究,看了研究結果之後又質疑他用的研究方法是否正確,這樣設計師當然會生氣啊哈哈。

產品設計師工作說明

產品設計師工作說明

產品初期/季度規劃
各種研究:
尋找用戶需求與痛點、內部訪談收集各個相關利益者(Stakeholder)的商業需求、挖掘產品洞見、製作用戶旅程(User Journey)、市場研究與競品分析等等各種研究方法,尤其若在公司沒有專職User Researcher的狀況,最佳拍檔非設計師莫屬。

 問題定義與解法發想:

設計師能夠協助將研究成果轉化成必須要被解決的問題,並且一起帶領Brainstorming和團隊一起發想解法。

產品策略與願景:
不僅是短期的設計任務,設計師也能將產品洞見貢獻回到較High level與長期的產品策略規劃。

產品開發前
用戶體驗設計:
從Wireframe、介面與流程、產品原型(Prototypes),設計師能夠用各式各樣的方法把點子視覺化,以此作為日後團隊討論、測試與收集回饋的原型。

回饋收集與調整:
給別人回饋、接收回饋絕對占設計師工作的很大一部分,也因此他們通常也很擅長這件事,知道怎麼接收大家的建議和想法,來做適當的產品設計調整。

初期產品驗證:
易用性測試、快速利用簡單mockups或prototype驗證各種想法與點子也是設計師的強項!

開發難度估計:
有些動畫或設計可能不是那麼容易實現,設計師也可以幫忙簡單確認可行性。

產品開發中
與工程師合作開發細節:
設計師熟知每個按鈕在不同裝置上的大小、圖片需要的不同dimension、換頁動畫的細節和按鈕點擊的feedback,這些細節讓設計師和工程師們直接合作是最合適的了。

QA測試:
與QA測試「是否可用」的方向不同,設計師可以幫忙確認很多重要的設計細節是否合乎預期的功能、互動、和UI設計規範。

產品上線後
後期驗證:

設計師也可以進行問卷調查或follow-up深度訪談等等,協助釐清產品改動的好壞、或者找出產品實驗失敗的原因,並探討後續優化迭代可能的方向。

2019年9月1日 星期日

2019年8月22日 星期四

mysql string 處理



取代字串:REPLACE(`欄位名稱`, '欲取代的字串', '取代後的字串')


UPDATE `table` SET `column` = REPLACE(`column`, 'efg', 'xxx') WHERE `column` LIKE 'efg%';



連接字串:CONCAT('字串1', '字串2', ... '字串n')


 UPDATE `table` SET `column` = CONCAT('123', `column`) WHERE `column`='45'; 
(Result: 12345) 



UPDATE `table` SET `column` = CONCAT(`column`, '123') WHERE `column`='456'; 
(Result: 456123) 


 UPDATE `table` SET `column` = CONCAT('123', `column`, '789') WHERE `column`='456'; 
(Result: 123456789)

2019年7月14日 星期日

windows 10 手動刪除更新檔案





手動刪除Windows 10 Update 時,下載的更新暫存檔案。

滑鼠右鍵點選左下角Windows圖示,再點選「執行」並輸入以下內容後,按確定。

%systemroot%\SoftwareDistribution\Download\

刪除全部的檔案即可完成.


2019年7月4日 星期四

2019年6月23日 星期日

outlook 2016 郵件無法點選連結link



最近的新電腦一直有
outlook 2016 郵件無法點選連結link 的問題
出現下列訊息
這項作業因為電腦上作用中的限制而取消,請洽詢系統管理員

請依照下列方式修正.

請你將此機碼刪除後即可解決 , 
  • HKEY_CURRENT_USERS\Software\Classes\.html
  • 有 HKEY_CURRENT_USERS\Software\Classes\.htm 的話也一併刪除


2019年6月20日 星期四

use case 使用注意




Use Case Diagram主要是描述一個系統或類別提供給外界之交互作用者的功能。簡單來說就是說明一個系統的功能及其使用者。

Use Case透過很簡單的表達方式,讓我們可以較輕易的向客戶確認需求

撰寫注意事項
Use Case Diagram非常單純,主要分為以下兩個部分:
Actor:代表使用者與系統使用案例互動的代表,一般而言角色可為:人(human)、硬體設備(hardware device)、其他系統,而非只針對人而已。
Use Case:使用案例描述系統要完成的成果,而不是如何進行,通常Use Case是一個動作,例如:儲存資料、加入會員等等…


Use Case不做的事情

Use Case並不是將所有的需求都描述進去,以下幾項是不會在Use Case中被撰寫的:
Implementation details:不要描述實作細節,只講概要功能就好,例如不要說明資料將被存到Oracle資料庫,而說資料將被儲存就好。
GUI Information:不要講UI上的內容,例如按下『存檔』按鈕,避免到時候畫面作多國語言時,我們還要將Use Case改成多語內容。
Internal processing unrelated to a stakeholder request:不要講與使用者無關的系統內部作業,這一點跟第一項很像,就是不用講過多的邏輯內容在裡頭。
Non-functional requirements:不要講非功能性需求,例如系統每個操作要在2秒內回應,同時上線人數要達3000人等。

SQL 取最大值或是最新的值


可用於oracle / mysql


有時在操作 SQL 時,會遇到資料分群 (Group By) 後,取得每個群組最大 或最新 的值。

主要的概念都須用到子查詢,並在子查詢的操作過程中動一些小手段。

先利用 Group By 取得 Max 值後,在 Join 原表

SELECT t.Trainno, t.Dest, r.MaxTime FROM

 ( SELECT Trainno, MAX(Time) as MaxTime FROM OrdTable GROUP BY Trainno ) r

 INNER JOIN OrdTable t 

ON t.Trainno = r.Trainno AND t.Time = r.MaxTime

筆記, 很少用, 很容易忘記