2026年7月13日 星期一

關於 Daemon tool lite 無法解除安裝的問題

 關於 Daemon tool lite 無法解除安裝的問題

前言

  最近發生 Daemon tool lite 無法解除安裝的問題,在此把解決的過程做個紀錄。


內容

  最近打開 Daemon tool lite 後會跳出要下載最新版本的視窗,該視窗附上下載安裝檔的連結,關閉該視窗程式也會整個關掉,也就是不更新到最新版本不給用,所以就很直接的下載最新版本的安裝檔,看到安裝畫面的時候是寫著 Daemon tool  ultra ,我以為是新版本的改名,沒有懷疑是不同軟體,安裝完發現只能試用 3 天,所以我就直接到官網 [ www.daemon-tools.cc ] daemon tool 下載 ,下載 Daemon tool lite 並卸載 Daemon tool  ultra ,本以為這樣就沒問題了,但安裝最新版的 Daemon tool lite 的時候會安裝另一個名為 PC App stroe 的軟體,如果不安裝不給用,所以我果斷放棄用最新版的 Daemon tool lite。

  放棄 Daemon tool lite  後,就想著卸載舊版本的 Daemon tool lite ,神奇的事發生了,透過設定->應用程式 來選定 Daemon tool lite 解除安裝遽然會跳出存取被拒請聯絡系統管理員的視窗!本以為是我的帳號不是系統管理員才跳出該視窗,所以我直接到 Daemon tool lite  安裝的資料夾用系統管理員的身份執行反安裝的執行檔,結果遽然也是跳出存取被拒請聯絡系統管理員的視窗!既然是存取被拒,所以我看了一下反安裝檔的內容->安全性的權限,發現遽然我帳號的權限都被取消了,所以我就手動加回來,加回來後再執行反安裝檔結果還是一樣。


  在經歷了上網搜尋後,找到了用命令提示字元並且以系統管理員執行,再到 Daemon tool lite  的安裝資料夾執行反安裝,結果就可以了!


  

  Daemon tool lite 如果還要免費使用就必須被強迫安裝其它軟體,如果需要替代可以使用 [ wincdemu.sysprogs.org ] WinCDEmu 下載 ,一樣是免費,而且這個不需安裝其它軟體。


參考資料

[ www.daemon-tools.cc ] daemon tool 下載

[ wincdemu.sysprogs.org ] WinCDEmu 下載

2026年7月6日 星期一

關於 Object.is()

 關於 Object.is()

前言

  Object.is() 簡短看一下說明以為就是單純檢查物件是不是同一個,如同 === ,但實際用了發現有小小的不一樣,在此把學習的過程做個紀錄。


內容

  範例如下

let obj1 = {};
let obj2 = {};
console.log( obj1 === obj2);//false
console.log( Object.is( obj1, obj2 ) );//false;
//
console.log( 0 === -0);//true
console.log( Object.is( 0 , -0) );//false


Object.is() 的功能是用來檢查物件是否為同一個,如同 === 的作用,但要注意 Object.is() 是有分 +0 與 -0 的差異,範例檢查 +0 與 -0 時用  === 的結果是 true ,但用 Object.is() 的結果卻是 false !


參考資料

[ developer.mozilla.org ] Object.is()

2026年6月29日 星期一

關於 Map.getOrInsertComputed()

 關於 Map.getOrInsertComputed()

前言

  在上次的 關於 Map.getOrInsert()  介紹 Map.getOrInsert(), Map 還提供另一個類似的函式 Map.getOrInsertComputed() ,在此把學習的過程做個紀錄。


內容

  範例如下

let map = new Map();
map.set( 'A' , 1234 );
map.set( 'B' , 5678 );
//
console.log( map.getOrInsertComputed( 'C' ,  (value) => `New key ${value} is inserted.` ) );//New key C is inserted.
//
let insertCon = 0 ;
let callDefaultValue = (value) => {
  console.log(`New key ${value} is inserted.insertCon:${insertCon}`);
  return insertCon++;
};
map.getOrInsertComputed( 'D' , callDefaultValue);//New key D is inserted.insertCon:0
map.getOrInsertComputed( 'E' , callDefaultValue);//New key E is inserted.insertCon:1


Map.getOrInsert() 和 Map.getOrInsertComputed() 最大的差異是第二的引數,Map.getOrInsert() 插入的是固定值,但 Map.getOrInsertComputed() 是輸入一個函式來插入值,範例的 'C' 值直接示範如何插入,但直接使用不方便插入變數,所以範例的 'D' 與 'E' 先把函式存在變數,這樣就可以每次插入都用同一個函式,接著可以看到函式會在每次喚起後增加 indertCon,所以每次插入後顯示的 insertCon 會不一樣。


參考資料

[ developer.mozilla.org ] Map.prototype.getOrInsertComputed()


相關文章與資料

關於 Map.getOrInsert()


2026年6月22日 星期一

關於 Map.getOrInsert()

 關於 Map.getOrInsert()

前言

  最近發現 Map 本身有提供取得內容如果沒有的話就自動插入的功能,也就是 Map.getOrInsert() ,在此把學習的過程做個紀錄。


內容

  範例如下

let map = new Map();
map.set( 'A' , 1234 );
map.set( 'B' , 5678 );
//
console.log( map.get( 'A') );//1234
console.log( map.get( 'a') );//undefined
//
console.log( map.getOrInsert( 'A' , 9999) );//1234
console.log( map.getOrInsert( 'C' , 9999) );//9999
console.log( map.get( 'C') );//9999


Map.getOrInsert()  的用法只比 Map.get() 多一個引數,也就是當見直不存在要插入的的內容,範例開頭分別示範用  Map.get() 取得存在與不存在的鍵值狀況,接著就是 Map.getOrInsert() 取得已存在鍵值,結果跟 Map.get()  ,第二次就取得不存在的鍵值,由於不存在所以會被插入成一個新鍵值,內容就是第二個引數的內容,最後 Map.get() 確認新的鍵值是否有被確實的插入。

 

參考資料

[ developer.mozilla.org ] Map.prototype.getOrInsert()

2026年6月15日 星期一

關於 Array.unshift()

 關於 Array.unshift()

前言

  最近需要在陣列的開頭插入元素,發現有 Array.unshift() 可以完成,在此把學習的過程做個紀錄。


內容

  範例如下

let ar = [ 1 , 2 , 3 ];
ar.unshift( 0 );
console.log( ar );//[0, 1, 2, 3]
//
ar.unshift( -1 );
console.log( ar );//[-1, 0, 1, 2, 3]
//
ar.unshift( -4 , -3 , -2);
console.log( ar );//[-4, -3, -2, -1, 0, 1, 2, 3]


Array.unshift() 的使用很簡單,只需將要插入到開頭的元素放到引數就行,而且還支援輸入多個引數,如範例最後所示。


參考資料

[ developer.mozilla.org ] Array.prototype.unshift()

2026年6月8日 星期一

關於 Array.from()

 關於 Array.from()

前言

  Array.from() 是一個複製陣列的函式,它有著 Array 建構式是沒有的特性,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( Array.from( [1 , 2 , 3 ] ) );//[1, 2, 3]
console.log( Array.from( [1 , 2 , 3 ] , (ele) => ele + 1 ) );//[2, 3, 4]
//
console.log( Array.from( 'Hello') );//["H", "e", "l", "l", "o"]


Array.from() 直接輸入一個陣列就可以複製出一個一樣陣列,Array 建構式也可以做出類似的事,但 Array.from()  可以多輸入一個函式來對複製的內容加工,範例對每個內容作加一。 Array.from() 還支援一個特別的用法就是如果輸入一個字串,它會複製出一個把字串的每個字拆成元素的陣列,如範例最後一例所示。


參考資料

[ developer.mozilla.org ] Array.from()

2026年6月1日 星期一

關於 Array.filter()

 關於 Array.filter()

前言

  在 Array 提取符合某個條件的元素是很常見的功能,可以透過 Array.filter() 來完成,在此把學習的過程做個紀錄。


內容

  範例如下

let ar = [2, 5, 8, 1, 4];
let strAr = [ 'A123' , 'ABCDEF' , 'xyz'];
//
console.log( ar.filter( (ele) => ele>=5) );//[5, 8]
console.log( strAr.filter( (ele) => ele.length>=5) );//["ABCDEF"]
console.log( strAr.filter( (ele) => ele.length>=10) );//[]


Array.filter() 輸入篩選條件的函式後,就可以在回傳值得到符合條件的結果,如果沒有符合的結果會回傳空陣列而不是 undefined。


參考資料

[ developer.mozilla.org ] Array.prototype.filter()