技術分享

[Office] Office 365 企業授權更換


我的 NB 安裝的是 MSDN Subscription 附的 Office 365 E3 ,他可以自己測試 Office 365 管理帳號與使用者帳號。我的 MSDN Subscription 是 2019/07/31 到期,但一時還沒失效,我就先等著。

今天我的 Office 365 授權終於失效,看起來是 40 天跳失效訊息,這也可以用來概估同事離職後,公司 Office 365 失效的期限。

開啟 Outlook 提示帳戶失效
開啟 Outlook 提示帳戶失效
Outlook 工具列提示失效
Outlook 工具列提示失效

雖然上面已經跳出 Office 365訂閱發生問題的提示,但是 Outlook 仍然可以用,我想滿 40 天只是開始會提示,可能還要一陣子 (聽說是 180 天) 才會完全不能用 Office 。

所以開始要改用公司給的 Office 365 授權,因為我還沒登入過公司給的 Office 365 商務進階版授權,所以要先登入一次,修改密碼。

第一次登入企業的 Office 365 要改密碼
第一次登入企業的 Office 365 要改密碼

我原先的 Office 365 E3 帳號是 xxxx@xxxxxxt.onmicrosoft.com,公司的 Office 365 商務進階版帳號是 xxxx@xxxxxxs.onmicrosoft.com ,所以後續圖片請看 t 或 s 的尾碼來判斷是哪個帳號。

然後從 Outlook 的選單 > 檔案 > Office 帳號來變更,首先從圖上中間上方點選切換帳戶。

點選切換帳戶
點選切換帳戶

會跳出一個對話框,點選下方新增帳號。

點選 新增帳戶
點選 新增帳戶

依照導引畫面完成。

點選 是
點選 是
稍後片刻
稍後片刻
點選 完成
點選 完成

現在可以看到使用者資訊已經變成公司的新帳號,但是右側產品資訊仍然是我的就帳號。

兩邊帳號不相同
兩邊帳號不相同

點選右邊產品資訊的變更授權。

變更產品授權
變更產品授權

點選登入,一畫面引導登入公司授權。但是重新開啟 Outlook 還是會顯示授權異常,還是上面兩邊帳號不同的圖案。

可能是公司授權沒有 Skype for Business ,登入 Office 網站下載 Office 安裝檔,採用覆蓋性安裝。

下載 Office
下載 Office

覆蓋性安裝完就正常了,畫面顯示還有一個授權,但預設還是顯示我的舊授權。

顯示其他授權資訊
顯示其他授權資訊

這樣就完成 Office 365 E3 授權變更為 Office 365 商務進階版授權了。

雙授權
雙授權

廣告
Categories: Office, 工作點滴, 技術分享 | 標籤: | 發表留言

[T-SQL] IIF 與 CASE WHEN … THEN … ELSE … END


有個案子現場是前面的人做的,因為距離關係,分了三區設置 4G 網路,把資料扔回 Server 。

但妙的是其中有兩區相連,比如說 A/B 區。當 A 區設備沒開,A 區的流量就要歸總到 B 區算。

本來 Server 只負責接收資料,針對這種情形,建一個分析規則表,等待現場回傳後計算。

本來是在 SQL Server 2016 上開發測試,所以 T-SQL 語法習慣就選用
https://docs.microsoft.com/zh-tw/sql/t-sql/functions/logical-functions-iif-transact-sql

IIF(bool, true_value, false_value)

但實際上要跑的資料庫是 SQL Server 2008 R2 ,沒想到 SQL Server 2008 R2 不支援 IIF 。

我記得以前微軟文件會寫相容層級,找半天都找不到,只好一版版翻,似乎是從 SQL Server 2012 以後開始支援。

只好退回舊版,改用
https://docs.microsoft.com/zh-tw/sql/t-sql/language-elements/case-transact-sql

CASE
WHEN bool1 THEN result1
WHEN bool2 THEN result2
ELSE result3
END

所以,比如說原先要用:
(IIF(Col1=Col2, ‘真’, ‘假’)) AS 判斷
改成
(CASE WHEN Col1=Col2 THEN ‘真’ ELSE ‘假’ END) AS 判斷

Categories: 資料庫, SQL, 工作點滴, 技術分享 | 標籤: | 發表留言

[SQL] 透過 Access 轉換資料庫架構


有個客戶要結束節能業務,把他們的節能服務轉交給我們公司,他們原先的雲端監測系統阿祖 (Azure) Web Server 與 SQL Server 都要關閉,要由我們的監測系統自己處理。

它們的系統是現場 IPC 沒有查詢展示介面,監測資料在現場暫存後,就上傳到雲端資料庫,所以雲端資料庫每分鐘一筆,主要的資料表架構如下,每個月一個資料表:

分區視別字串點位識別字串資料時間值(字串)原始值(字串)
長度100最大長度50DateTime長度50長度50

所以在上面這個資料表架構下,每個月大概七百萬筆資料,約佔用空間500MB。

看了對方資料架構我才知道,為何對方網頁限制每次查詢時間間隔不能超過七天,而且每次查詢起來大概要跑 3 分鐘才會出來。

我的架構分成兩部分,現場端有IPC安裝 SQL Server Express資料庫,每分鐘一筆,統計分析後上傳到雲端資料庫,不同時間間隔分開放,以小時、日、月、年為單位統計。現場資料庫考慮效能及容量,將點位抽出來列表,核心資料表則所有時間放在一起不分表,資料架構大概是:

資料時間點位1點位2點位n狀態
DateTimeDoubleDoubleDouble長度n

所以每月大概變為43200筆,約佔用空間 50 MB。

所以需要將資料格式進行轉換,將對方類似一維的數值表格架構轉成我的二維的數值表格架構。

首先先將對方的 Azure SQL Server 整個備份到我電腦的 SQL Server Developer,光是做這件事,我電腦硬碟就被吃掉 40 GB …

考慮到我電腦內的資料庫避免異動,確保乾淨,所以我不打算在 SQL Server 處理資料格式轉換,我打算把每個月的資料匯入到 Access 後再轉換成我要的格式。

Access 轉換的架構

查詢「刪除 data 資料」這個並不需要存在,是我開發過程期間測試 SQL 語法用的。

資料表 raw 是用來放置 SQL Server 的匯入暫存資料,資料表 data 則是樣本資料表,為了快速處理,我還是依照每個月複製貼上 Data_yyMM 資料表,進行格式轉換,最後再統一匯入一個資料表。

所以核心的程式碼很單純:

DoCmd.SetWarnings False ' 關閉告警視窗
DoCmd.RunSQL nowQuery ' 執行 SQL 語法
DoCmd.SetWarnings True ' 恢復告警視窗

所以上述部分迴圈的目的就是為了組合 SQL 語法來達成目的,所以後面說明就專注於 SQL 語法,而非 VBA 語法。

匯入資料到 raw

將 SQL Server 資料表資料匯入到 Access raw 資料表,SQL 語法如下:

INSERT INTO [raw]
SELECT 點位識別字串,資料時間,值
FROM [來源表格名] IN " [odbc; Driver=SQL Server Native Client 11.0; Server=(local); Database=資料庫; UID=帳號; PWD=密碼; ]

注意到了嗎?這邊最特別的就是 IN 子句,透過 IN 子句跨越資料庫,這功能只能在 OLEDB 資料庫驅動程式下用,所以表示 Access 內 VBA RunSQL 是跑 OLEDB 來做查詢,這部分說明沒寫,這段應該是這篇的精華。

對 In 子句延伸閱讀可在部落格右側搜尋輸入:In 子句。

插入時間

為了避免無效時間,所以先在 data 資料表內將時間插入,並可確保所有時間都不被遺漏,SQL 語法如下:

INSERT INTO [Data_yyMM]
SELECT DISTINCT 資料時間 FROM raw ORDER BY 資料時間

更新各欄資料

這邊就依據資料點位對應到資料欄位,逐欄更新,所以前一步插入時間很重要,插入時間後,就有 PK 欄可供 UPDATE 使用。逐欄迴圈 SQL 語法如下:

UPDATE [Data_yyMM]
INNER JOIN (
SELECT 資料時間, 值 FROM raw WHERE 點位識別字串="點位代碼"
) AS tabData ON ([Data_yyMM].rdate=tabData.資料時間)
SET [Data_yyMM].點位i = tabData.值

透過前一步的插入時間做為 PK 值 JOIN ,就可以整欄資料直接轉移。

刪除 Raw Data

這段 SQL 語法太簡單,應該無須解釋。

DELETE FROM raw

小結

所以就能快速透過 Access 執行巨集持續進行不同資料表的資料匯入、表格架構轉換,不過雖然有跑刪除 Raw Data ,但還是無法防止 Access 長大,因此長大到 2 GB 時, VBA 會被中斷,重新壓縮 Access 檔案,再改回圈開始處,就可以繼續往下跑。

我這時會先把 Data_yyMM 搬到其他 Access 檔案,把這個轉換用的 Access 盡量空出來跑資料轉換,不過我把 Data_yyMM 合併的 VBA 也寫再這個轉換檔,所以最後我會把所有 Data_yyMM 搬回來合併。

Categories: 資料庫, SQL, 工作點滴, 技術分享 | 標籤: | 發表留言

[SQL Server] 資料庫損毀與修復


週日傍晚異常斷電,UPS 也掛了,周一早上重開後,伺服器一直跑得不順,在事件檢視器發現資訊訊息,建議跑 DBCC CHECKDB (SQL Server 2014 的資料庫)

Info:825 建議進行資料庫檢查
Info:825 建議進行資料庫檢查

另外也有錯訊息

Fail:8646 建議進行資料庫檢查
Fail:8646 建議進行資料庫檢查
Fail:824 建議進行資料庫檢查
Fail:824 建議進行資料庫檢查

周一下午跑過
DBCC CHECKDB (db)

Info:8957 資料庫修復結果
Info:8957 資料庫修復結果

,修復了 77 個錯誤。

但此之後,就頻繁發生 LOCK 錯誤

Fail:1204 無法 LOCK 資源
Fail:1204 無法 LOCK 資源

並且仍然會發生建議要跑 DBCC 的錯誤。

Info:825 建議進行資料庫檢查
Info:825 建議進行資料庫檢查

考慮了一晚,周二早上決定建新資料庫:

  1. 新建 db1 ,把 db 周日凌晨定時備份還原到 db1
  2. db 更名為 db_o ,db1 更名為 db
  3. 用匯入匯出精靈把 周日備份後的資料從 db_o 匯入到 db1
  4. 所以 db_o 除了人為測試與自動備份外,等同無人存取

週二晚上本著廢物利用的精神,平常沒機會玩資料庫修復,跑:
DBCC CHECKDB (db_o)
多次,每次跑完,錯誤數都比前一次多 (主要為索引錯誤)

Info:8957 資料庫檢查52個錯誤
Info:8957 資料庫檢查52個錯誤
Info:8957 資料庫檢查54個錯誤
Info:8957 資料庫檢查54個錯誤


DBCC CHECKDB (db_o, REPAIR_REBUILD)

Info:8957 資料庫檢查59個錯誤
Info:8957 資料庫檢查59個錯誤

無法修復

另外發生資料庫存取時間過長。

Info:833 存取超過15秒
Info:833 存取超過15秒

改跑
DBCC CHECKDB (db_o, REPAIR_ALLOW_DATA_LOSS)

Info:8957 資料庫修復60個錯誤
Info:8957 資料庫修復60個錯誤

修復了 60 個錯誤,又比上面 DBCC CHECKDB (db_o) 檢查的錯誤要多。

再跑一次:
DBCC CHECKDB (db_o, REPAIR_ALLOW_DATA_LOSS)

Info:8957 資料庫修復11個錯誤
Info:8957 資料庫修復11個錯誤

又修復了 11 個錯誤。

早上再跑一次
DBCC CHECKDB (db_o, REPAIR_ALLOW_DATA_LOSS)

Info:8957 資料庫修復結果
Info:8957 資料庫修復結果

終於沒錯誤了。

周二傍晚 db (原db1) 在事件檢視器有跳出資訊建議跑 DBCC CHECKDB ,但今天改跳出故障,建議跑 DBCC CHECKDB ,回頭翻了跳電前的 db_o 是有資訊事件建議跑 DBCC CHECKDB ,所以我想應該是還原時,把原先 db_o 的索引錯誤還原到 db1 ,利用午休的時間跑
DBCC CHECKDB (db, REPAIR_ALLOW_DATA_LOSS)
多次,直到沒有錯誤為止。

沒錯誤後,另外跑重建索引
DBCC DBREINDEX (DataTable)

但是晚上仍然發生建議跑 DBCC CHECKDB ,我有跑了

Info:825 建議進行資料庫檢查
Info:825 建議進行資料庫檢查


DBCC CHECKDB(db)

Info:8957 資料庫檢查0個錯誤
Info:8957 資料庫檢查0個錯誤

顯示 0 個錯誤,此外上面 LOCK 錯誤訊息持續出現。

目前找不到問題來源,懷疑可能跳電時,硬碟或 RAID 控制卡有受損,因為有些問題是持續存取時間過久,這次事件就是純練功修復資料庫了。

Categories: SQL, 工作點滴, 技術分享 | 標籤: | 1 則迴響

[T-SQL] SQL認證帳號新增資料庫未正常掛入使用者


工作的資料庫其中一個資料表超過 2 億 2 千萬筆,但這個資料表常常用在 JOIN 上,導致工作日查詢網頁時,大概要拖到 20 秒以上,假日沒人用倒還好,大概 3 秒可以出來。

某個資料表超過兩億筆
某個資料表超過兩億筆

這個資料表存了超過兩百個專案的資料,所以考慮採專案切割的方式,將每個專案資料切到不同資料庫,再由各專案資料庫的資料表進行 JOIN ,減少維度障礙。

超過兩百個專案進行切割,換句話說就是要建立超過兩百個資料庫,所以打算建立完整的 T-SQL 語法,方便後續使用。

正常建立的資料庫使用者如下,考慮到管理問題,預設加入 [BUILTIN\Administrators] ,再加入自行建立的 SQL 認證的 [馬賽克B] ,以下簡稱 UserB 。

資料庫的使用者
資料庫的使用者

開發的時候用測試機來測 T-SQL ,使用本機 Windows 認證,所使用的 T-SQL 語法簡化如下:

USE [master]
GO
/* 建立資料庫 */
GO
USE [專案資料庫]
GO
/****** User [BUILTIN\Administrators] ******/
CREATE USER [BUILTIN\Administrators] FOR LOGIN [BUILTIN\Administrators] WITH DEFAULT_SCHEMA=[dbo]
GO
/* BUILTIN\Administrators Set db_owner */
/*
EXEC sp_addrolemember 'db_owner','BUILTIN\Administrators' /* Before MSSQL 2008r2 */
*/
ALTER ROLE [db_owner] ADD MEMBER [BUILTIN\Administrators]
GO
/* --分隔線-- */
/****** User [*******B] ******/
CREATE USER [*******B] FOR LOGIN [*******B] WITH DEFAULT_SCHEMA=[dbo]
GO
/* [*******B] Set db_owner */
ALTER ROLE [db_owner] ADD MEMBER [*******B]
GO


正常建立完成的 UserB 點選 [屬性] 可看到 [使用者名稱]、[登入名稱] 都如同 UserB 的內容,左下角的輸出畫面可以看到沒有錯誤。

正常建立的 UserB 帳號
正常建立的 UserB 帳號

測試完沒問題後,從我的電腦跑,變成遠端存取建立資料庫,但這一建立就發生錯誤。

遠端建立無法正常加入使用者
遠端建立無法正常加入使用者

起初發現是 UserB 無法加入這個資料庫,但用手動也加入不了,經詳細比對後,發現是 SQL Server 自動掛入的 dbo 帳號會變成:

[使用者名稱]=dbo,但 [登入名稱] =UserB ,然後 [登入名稱] 又不給我改回 dbo ,所以無法加入 UserB,只好砍掉重練。

經過多次測試,發現上面的 T-SQL 語法從分隔線處分成兩次執行,第一次執行時,SQL Server 會正常掛入 dbo 帳號,第二次執行就可以正常掛入 UserB 帳號。

目前要得到我要的資料庫安全性登入帳號的測試結論是:

  1. 本機使用 Windows 認證時,上面 T-SQL 語法可以同次執行
  2. 遠端使用 SQL Server 認證時,上面的 T-SQL 語法需要從分隔線處分兩次執行

原因我還沒找到,做個心得記錄,後面可以翻查。

本機 Windows 認證我測試過 SQL Server 2008r2、2012、2014、2016、2017 都正常。

Categories: SQL, 工作點滴, 技術分享 | 標籤: | 發表留言

[RAID] 跳電導致 RAID1 組態異常


06/02 早上 08:07 跳電約 10 秒,除了先前我的 NB 電源供應器掛了:

[電池] 工作的 NB 電池膨脹

還有多台設備出問題,其中包含一台網頁伺服器。

周一早上上班覺得網頁伺服器反應有點慢,遠端連進去檢查。

系統碟由兩顆 512 GB SSD 採 RAID1 組成,資料碟由兩顆原廠的 2 TB SATA3 硬碟採 RAID1 組成,2 TB 硬碟平常沒啥事,就是凌晨時,跑排程把系統碟的資料庫備份出來,然後再跑排程同步資料庫到備份伺服器。

連入網頁伺服器後,桌面跳出 RAID 異常警告,登入 LSI MegaRAID 軟體後,看到四顆磁碟掛三顆,1 顆 512 GB SSD,2 個 2 TB 資料碟。

在 2 月的時候 ([RAID] 更換故障硬碟),才因為原先 2 顆 256 GB SSD 掛一顆,我把 2 顆 256 GB SSD 分次升級到 2 顆 512 GB SSD ,才四個月,Intel 五年保固的 SSD 應該沒這麼差吧?而且 2 TB 硬碟是拿來做資料庫備份,一天一次的存取量不大,這種存取量搞不好十年都不會掛。

既然硬碟顯示故障,就分別把三顆熱拔出來,使用 HDDScan 檢查,檢查的結果都正常良好,檔案也能讀取,就只能打客服電話報修。這台伺服器當初採購時有加買五年保,故障的時間大概是三年八個月,所以還是原廠保固期,所以加買五年保固不能省,不然過三年就出狀況了。下午,華碩委外的維修商打來了解詳細情況,初步懷疑可能故障點:

  1. 主機板受電力衝擊損壞
  2. RAID 背板異常
  3. 硬碟故障 (2 TB 為原廠硬碟,算在五年保固內)
  4. RAID 組態受電力衝擊異常,可能要重新設定

周二早上廠商打電話來說,故障點 2 的 RAID 背板缺料,主機板跟硬碟準備好了,他早上跑嘉義兩案,下午來我們這。

廠商來了後,更換主機板問題沒改善,換了兩顆新硬碟,問題沒改善,只能猜測是 RAID 組態異常,RAID 組態異常必須在 LSI BIOS 重新設定,可能會造成硬碟掉資料,廠商也提了,以後買 Server 最好還是加購 RAID 卡,主機板上的 RAID 效能比較差,而且不像加購 RAID 卡都有外掛鋰電池,可以記憶 RAID 組態。

我系統碟在拆出來檢測時,已經整顆備份,2 TB 硬碟本身用於資料庫備份,又有遠端同步,所以就算被洗掉也沒關係。

然後在 LSI BIOS 測試,這狀況掛得很澈底,LSI 內因為顯示硬碟故障,所以檢測、修復都不能跑,只能把虛擬磁碟刪除,然後重新新增虛擬磁碟,設定 RAID1 ,刪除虛擬磁碟後硬碟都顯示健康,所有重新建立虛擬磁碟還滿順利的,依照原先順序新增回來。

開機很順利,自動進入 Windows ,除了被標記損壞的 SSD 自動進入 ReBuild 外,作業系統正常運作,兩顆資料碟正常存取,重組 RAID1 運氣好,完全沒有被自動格式化,需要重做。所以維修商東西收一收就走了。

不過滿特別的是,上次 256 GB 升級到 512 GB 因為我的 LSI Embedded MegaRAID 沒有擴展功能可選,所以只能當 256 GB 用,但是重建組態後,就被識別為 512 GB,就可以在 Windows 的磁碟管理做擴展,把整個 512 GB 拿來用。

周四系統碟又異常跳原先故障那顆損壞。

RAID1 自動 ReBuild
RAID1 自動 ReBuild

熱插拔重新插入後,又自動 ReBuild ,這次唯一沒換過的就是 RAID 背板,我有點懷疑是機房濕度高導致受潮,所以把空的熱插槽蓋拆下來,加強空調循環,看能不能改善。

隔了兩周想起來,在 06/20 登進去檢查,不知道是運氣好還是不好,進去剛好看到兩顆 2 TB 硬碟,LSI 在自動巡檢。

LSI 事件
LSI 事件

自動巡檢中
自動巡檢中

由於顯示這 2 TB 硬碟仍處於最佳化中,就擺著沒管。

06/28 華碩打電話來做委外廠商評鑑調查,想起來再進去看,LSI 事件在 06/20 以後,只有登入紀錄,就沒發生其他事件了,暫時先當這件事結案吧。

唯一沒測試過的是 RAID 背板,該不會問題在這吧…

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[iOS] 開發者帳號年費續約


去年建的開發者帳號:[iOS] 註冊一個開發者帳號

即將過期,收到 Apple 寄來的通知信:

年費續約通知信
年費續約通知信

登入網頁後,進入繳費步驟。

填入付款資訊
填入付款資訊
填入發票資訊
填入發票資訊
確認付款資訊下單
確認付款資訊下單
訂單完成
訂單完成

約 2 分鐘後可收到訂單確認通知信。

訂單確認通知信

約半個小時後可收到收據,收據不等同電子發票證明,有點類似出貨單,但裡面有電子發票號碼。

電子收據

大約七個小時後,收到電子發票。

電子發票通知

電子發票大概長下面那樣。

電子發票

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Access] 磁碟或網路錯誤


有個網站使用 Access 檔案做語言資料庫,依瀏覽器語系,使用 ASP.NET 透過 ODBC 存取資料庫。

這兩天忽然跳出 Access 錯誤,剛好用碰上 RAID1 組態錯誤,所以一直以為是檔案系統錯誤造成。

錯誤訊息如下:

Exception information:
Exception type: Exception
Exception message: ErrorMessage: ERROR [HY000] [Microsoft][ODBC Microsoft Access Driver] 磁碟或網路錯誤。
ERROR [01000] [Microsoft][ODBC Microsoft Access Driver]一般警告 無法開啟登錄鍵 ‘Temporary (volatile) Jet DSN for process 0x14e4 Thread 0xa80 DBC 0x1bd5c5e4 Jet’。
ERROR [IM006] [Microsoft][ODBC 驅動程式管理員] 驅動程式的 SQLSetConnectAttr 失敗
ERROR [01000] [Microsoft][ODBC Microsoft Access Driver]一般警告 無法開啟登錄鍵 ‘Temporary (volatile) Jet DSN for process 0x14e4 Thread 0xa80 DBC 0x1bd5c5e4 Jet’。

JET 錯誤
JET 錯誤

RAID1 修復後,錯誤依舊。

在苦無對策下,繞道 C:\Windows\Temp 目錄看一看,忽然發現不太正常的 JETxxx.tmp ,從 1 ~ FFF 都有,共有 11280 個檔案。

JET 暫存檔案
JET 暫存檔案

既然不太對勁,全選刪除。

重新執行網頁,就正常了。比對擷圖來判斷,懷疑應該是部分不正常結束的 Session ,檔案沒正常刪除,留在系統暫存目錄內,而自動編號應該是限制 1 ~ FFF 間,所以自動編號爆了就沒救了。

第一次碰到這個問題,記錄下來以後可查。

Categories: Office, 工作點滴, 技術分享 | 標籤: | 發表留言

[Excel]白做工了,規劃求解與 VBA


很久沒有做分析了,都在 code …

上個月老闆交代我做個分析,想來想去,想要最佳化還是用數學規劃,線性規劃是個快速解決問題的方法,只要問題不複雜,直接用線性規劃求解就可以了。

問題是離開學校後,沒有好的軟體可以算線性規劃,想起來還有 Excel 的規劃求解可以用,就翻開 Excel 玩。

話說 2005 年在新加坡 MVP亞洲年會中,跟當時負責中文化的洪士吉老師與這個巨集的澳洲原作者聊過,當時聽洪士吉老師有原始碼跟密碼,我那時自己也用 VBScript 寫一個線性規劃的 ASP 線上網頁,所以主要討論的是卡曼卡法的加速解跟 Lindo,但是我論文不是搞這方向,離開學校後就甩到邊邊角角了。

我平常為了加速 Excel 開啟,所有的增益集都關閉,Office 2003 年代短暫的玩過規劃求解,但主要還是玩 Lindo ,開啟規劃求解增益集後,發覺設定方式完全不一樣了,看了一下線上手冊,上面寫 Excel 2010 後改成這樣,只好重新學習。

首先,先把自己寫的線性規劃翻出來,用相同的模型建構 Excel ,自己會比較容易上手:

線性規劃命題範例

按下 [進行最佳化分析] 後,可得到計算結果:

線性規劃計算結果

這個命題是在做教材範例,假定一個有閘門的滯洪池或水庫,在已知預報進水量下,受到滯洪池蓄洪量、放水路放水等限制,目標是穩定洩水減低洪害,各限制式的依據參閱上面網頁擷圖右側文字說明。

下面是我喜歡的規劃求解表格樣式,規劃求解仍然使用 Excel 公式,所以並沒有需要排得整整齊齊,但是為了人類容易閱讀,還是排成表格方式比較不會錯,詳細個位置說明,放到最後,先看操作步驟:

在 Sheet 上建立規劃求解命題

從 選單 點選 [資料] > [規劃求解] ,逐項設定:

規劃求解設定

規劃求解計算約 1 秒內可完成:

規劃求解完成

計算結果與設定對話盒連結註記說明:

規劃求解計算完成
  1. 圖上數字對應到 [規劃求解參數] 對話盒的數字,並不對應到這邊說明的項次。
  2. 變數名我選擇放在第一列,C1 ~ J1 ,這種架構大家都容易看得懂。
  3. 變數計算結果我選擇放在第二列,C2 ~ J2,預設可以不輸入,參見前面建立命題的圖,不輸入,就代表起始解為 {0} 集合。
  4. 目標函數的係數我放在 C3 ~ J3,也就是 MIN C。
  5. 限制式左側的係數我放在 C4 ~ J19 ,不等號我放在 M4 ~ M19,常數項我放在 N4 ~ N19。
  6. 最佳化可以在 [規劃求解參數] 輸入 Excel 公式,但這樣會造成每次設定的複雜化,比如說目標函數一變,或是限制式調整時, [規劃求解參數] 的設定就要跟著變,所以為了方便起見,建議像我這樣做,在 K3 輸入陣列公式,讓係數乘變數,就可以降低 [規劃求解參數] 的設定問題,K3 正確設定完成後,複製到 K4 ~ K19 ,讓限制式的係數一樣可以乘變數。注意,陣列公式輸入完成後,要按下 {Shift}+{Ctrl}+{Enter} 三個鍵,才能正確變成陣列公式。
  7. 最後在 [規劃求解參數] 對話盒 [載入/儲存] 按鈕,點下 [儲存] ,選擇 N2 。

這個計算結果,可以透過 K/L/M 三欄檢查限制式是否成立,或是直接觀看 N 欄,限制式成立的邏輯公式就是使用 K/L/M 三欄。

在說明項目 6 中,使用了陣列公式,實務上會增加計算量,也就是係數 0 x 變數,但卻可以讓設定參數簡易許多,就如同本例。

做到這,可以發現 L 欄用不到,因為在 [規劃求解參數] 對話盒 [新增] 限制式時,都要手動輸入,我的目的是要解決老闆交付的任務,所以針對此命題範例建立了測試的 VBA 程式碼,細節到正式命題再修改:

用 VBA 建立規劃求解參數

為了方便起見,我在 VBA 內直接建立陣列公式,也就是說上面建立規劃求解的途中,K 欄不用輸入,其他 [規劃求解參數] 對話盒的輸入,都用 VBA 自動產生。

規劃求解不支援直接輸入不等式,所以用 GetRelationIndex 函數將不等式轉成索引值輸入。

如果不想自己打太多程式碼,可以用錄製的再進行修改,不過這張圖上的程式碼已經很精簡了,錄製會很亂,不如直接打,再改欄位值即可。

規劃求解的函數使用說明參考微軟官方網址:https://docs.microsoft.com/zh-tw/office/vba/excel/concepts/functions/using-the-solver-vba-functions

好了,終於開始建立正式命題,先把正式命題縮小為一天24小時的時資料進行連續量分析,建個小小的模型,測試看看是不是能正常運作:

規劃求解超過上限

不得不爆粗口…

「規劃求解限定為 200 個變數儲存格和 100 個限制式,加上變數儲存格的限值。」

100 個限制式?這個規格限制下,根本是玩具吧… 規劃求解,我只好繼續把你放生了…

[2019/06/05]

花了點時間,把網頁版 ASP 的 VBScript 轉成 VBNET 語法,順便把命題轉成類別,測試還算成功。

VBNET WinForm 輸入命題
VBNET WinForm 輸入命題

輸入完線性規劃命題後,點選 [限制式] 頁籤 下方工具列那個圖示 (測試程式沒有管 Icon 的美觀度) ,即可得到輸出結果,輸出改用 StringBuilder 產生 HTML 語法用 WebBrowser Control 輸出,這樣之後若有需要,可以在工具列放預覽列印的按鈕,呼叫 WebBrowser Control 的預覽列印。

VBNET WinForm 輸出結果
VBNET WinForm 輸出結果

不過裡面還有一些 Bug ,大型命題解不出來,這就造成除錯困難,大概還要加一頁來輸出線性規劃各步驟階段的計算表格,才好除錯。

Categories: Office, 工作點滴, 技術分享 | 標籤: | 發表留言

[VS] Visual Studio 2019 @ Windows 2012 R2 無法正常安裝


昨天正常安裝 VS2019@Win10 x64 後,今天打算在 Win2012r2 上安裝。晚上選完安裝內容後,跑去睡覺,早上一看,發現卡在 Microsoft.Net.4.7.2.FullRedist 上:

VS2019 安裝失敗
VS2019 安裝失敗

點選「查看已驗證的解決方案」,沒啥有幫助的文章。

有其他人卡在 .Net framework 4.7.2 無法安裝
有其他人卡在 .Net framework 4.7.2 無法安裝

打開工作管理員,發現是執行下面執行檔失敗:

C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Net.4.7.2.FullRedist,version=4.7.3062.2\dotNetFxLatest-x86-x64-AllOS-ENU.exe

拷貝到 VS2019 安裝目錄後,本著「關掉引擎好換檔」的心態,先重新開機,再手動安裝 .Net framework 4.7.2 試看看。

手動安裝 .Net framework 4.7.2
手動安裝 .Net framework 4.7.2

沒想到還是失敗,但是手動安裝的好處就是有畫面。

.Net framework 4.7.2 安裝失敗
.Net framework 4.7.2 安裝失敗

從記錄檔可以看到錯誤原因發生在安裝 Windows8.1-KB4054566-x64.cab 時,找不到物件或內容。最重要的是有錯誤訊息。 (failed with 0x80092004)

安裝的詳細錯誤訊息
安裝的詳細錯誤訊息

一開始我以為是 VS2019 封包的檔案有問題,到微軟下載中心抓最新的 .Net framework 4.7.2 (NDP472-KB4054530-x86-x64-AllOS-ENU.exe) ,執行安裝,仍然發生上面錯誤訊息,比對內容檔案,是同樣的時間,所以應該沒更新的可以搞。

想說開啟新增移除程式看看,一看,居然 .Net framework 4.7 以後都沒有:

Net framework 沒有 4.7 以後版本
Net framework 沒有 4.7 以後版本

想說那就從 .Net framework 4.7 逐步安裝好了,沒想到裝 4.7 與 4.7.1 都說我已安裝更高版本的 .Net framework ,那我就試試看安裝 4.7.2 的繁體中文語言套件 (NDP472-KB4054530-x86-x64-AllOS-CHT.exe) ,還是回應找不到物件或內容。

想來只能想辦法移除 .Net framework 4.7.2 重新安裝,就 Google 搜尋移除 .Net framework 4.7.2 的文章,結果找到一篇很有用的文章:

.NET Framework 4.7.2 install error 0x80092004 — Cannot find object or property

看標題似乎就是中獎了~ 裡面內容概要是說在 TechNet 論壇有位 mwjvl 網友幫助他解決這個問題。解決步驟如下:

  1. 建立一個存放 kb 的目錄,目錄名不是很重要,但是為了方便解說操作,用下面的目錄名:
    C:\updatefix\expanded\
  2. 到微軟 Windows Update Catalog 下載 KB4340558 存放到:
    C:\updatefix\
  3. 將所有下載的 .msu 解壓縮到
    C:\updatefix\expanded\
    ,使用指令:
    expand -f:* “C:\updatefix*.msu" C:\updatefix\expanded\
  4. 使用指令將 C:\updatefix\expanded\ 內的所有 .cab 安裝到 Windows 內,其中 WSUSCAN.cab 不用安裝,視情況可能需重新開機。使用指令:
    dism /online /add-package /packagepath:C:\updatefix\expanded\filename.cab
  5. 若發生錯誤,移除重新安裝。使用指令:
    dism /online /remove-package /packagepath:C:\updatefix\expanded\filename.cab
  6. 重複步驟 4 ,直到所有 cab 都成功安裝。
  7. 上面建立的 C:\updatefix\ 沒用了,可以刪除
  8. 可以重新安裝 .Net framework 4.7.2 了

在步驟 2 ,我下載 KB4340558 時,有 3 個 .msu 可下載:

KB4340558 有三個檔案可下載
KB4340558 有三個檔案可下載

在步驟 4 ,我在安裝 KB4338419 時,發生 0x80092004 錯誤,我把它移除重裝。

發生錯誤移除重裝
發生錯誤移除重裝

完成後,手動安裝 .Net framework 4.7.2 ,就成功安裝了。

成功安裝 .Net framework 4.7.2
成功安裝 .Net framework 4.7.2

安裝完要求我重新開機:

重新開機啦
重新開機啦

重新開機後,再執行 VS2019 安裝,選「重試」,就會跳過 .Net framework 4.7.2 ,進行下一個功能安裝:

繼續安裝 VS2019
繼續安裝 VS2019

終於安裝完成,要求我重新開機:

VS2019 要求重新開機
VS2019 要求重新開機

確認安裝完成,從安裝精靈第一次啟動 VS2019:

第一次啟動 VS2019
第一次啟動 VS2019

總算搞定收工。不過詭異的是,我的 Win2012r2 在「程式和功能」那邊還是沒有任何 .Net framework 4.7 的安裝,只有 Visual Studio 2019 的安裝。

Categories: 技術分享 | 標籤: | 1 則迴響

[VSCode] 1.32 便攜版的語言介面未正確升級


便攜版就是免安裝版。

Visual Studio Code 強大之處就是小巧方便,所以我當然不會自作孽去安裝安裝版,而是使用免安裝版。

我在多台電腦上有安裝 VSCode ,上次在公司 NB 升級 1.32.1 時,有發現繁中語言介面升級後不正常,所以我採用整個目錄砍掉重裝,但發現這樣我得把外掛也跟著重裝,所以家裡電腦升級 VSCode 時,就改變方案,沒想到在家裡已經是 1.32.3 了,我公司升級應該是五天內的事,沒想到五天內改了兩個版本。

VSCode 升級通知
VSCode 升級通知

事先我是知道要升級,但是我習慣用便攜版,所以我不從對話框升級,而是到官網下載壓縮檔後解壓縮,覆蓋舊的便攜版。

先前舊版升級時,覆蓋完就正常結束了,沒想到低於 1.32 版升級到 1.32.1 或 1.32.3 版,都會呈現介面中英文混雜的情形。

呈現中英文混雜的介面
呈現中英文混雜的介面

改善的方法很簡單,先移除舊版中文介面。這邊很弔詭的是,VSCode 版本是 1.32.3 ,但是中文介面的版本是 1.32.4 。

移除繁體中文介面
移除繁體中文介面

再點選 [install] 安裝繁體中文介面。

安裝繁體中文介面
安裝繁體中文介面

安裝完語言介面並不會立刻變更,把 VSCode 關閉重新打開,就會顯示新的繁體中文介面了。

恢復成為繁體中文介面
恢復成為繁體中文介面

難得碰上不正常升級,我在想,可能是語言的翻譯檔標籤變更之類,導致不正常吧。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Android] 編譯給手機與上傳 Google Play – Xamarin for VS2017


話說,兩年前雖然完成開發 Google Play 的 App ,但因為去年在弄 Apple Store 的 App ,使用 Xamarin for Mac ,所以我已經完全忘了如何上傳 Google Play ,為了自己不知道多久後可能還會再上傳,還是自己留個紀錄。

編譯跟封存的步驟參考前一篇:

[Android] 無法正確封存 App – Xamarin for VS2017

這篇直接繼續封存開始。封存時的畫面如下:

編譯後封存中
編譯後封存中

正常完成封存後,畫面右下角可以選散發。在很舊版的 Android 模擬器,這時可以不選散發,直接將封存完成的 apk 拿到模擬器上測試,但目前的版本是不行的,所以一定要選 [散發]。

封存後選散發
封存後選散發

點選 [散發] 後,若是要直接給手機或模擬器用,選 [臨機操作] ,要是要作為正式版上傳 Google Play ,選 [Google Play] 。事實上選 [臨機操作] 的仍可人工上傳到 Google Play ,此外,點選 [Google Play] 的話,只能發布正式版、測試版,不能進行封測,我記得兩年前我在用的時候,應該沒有 [Google Play] 這選項,應該是後來微軟加入,方便開發者上傳用,但以版本管理而言,我個人偏好 [臨機操作] ,這可確保封存的 apk 檔案時間是自己可以掌握的,手上的備份版本與 Google Play 一致,當然影響不大,只是個人偏好而已。

散發通道
散發通道

A. 臨機操作

選取 [臨機操作] 後,要選一個來簽署身分識別,比如說你是用個人名義開發軟體還是用公司名義,或是集團公司可能有很多分公司,原則上這個檔案應該另外保存,如果有另外保存,例如公司共用的身分識別檔案 .keystore,第一次選 [匯入] ,如果從來沒建立過,第一次選 [+] 建立一個新的。建立時可以選擇有效期限,我是建議選長點時間,因為要更新軟體要用同一個身分識別上傳,建立身分識別後,要上傳 Google 取得對應的憑證,這個在網路上找一下,我兩年前做的,我也忘了步驟了,反正這篇重點不在這。

簽署身分識別
簽署身分識別

選擇 [另存新檔] 後,會讓你輸入密碼,必須記得第一次建立時輸入的密碼,否則無法正確簽署身分識別。這裡另存新檔的好處是你能掌握簽署身分識別後的檔案,不像直接上傳 Google Play 的,完全不知道暫存在哪。

輸入身分識別密碼
輸入身分識別密碼

回到 Visual Studio 2017 ,可以看到正在產生簽署身分識別後的 apk 檔案。

散發身分識別寫入中
散發身分識別寫入中

完成後,就可以傳輸到手機安裝,像一般沒有開 Google Play 帳號的 App ,就是把完成後的檔案放在網站上供人下載安裝。由於 Google Play 會對 App 進行檢查,一般來說,還是放上 Google Play 比較令人信賴,至於電視盒那種涉及侵權的軟體,就只能放上網頁供人下載了。

B. 上傳 Google Play

上傳 Google Play 可以把上面完成簽署身分識別的 apk 手動上傳到 Google Play ,也可以讓 Visual Studio 自動上傳,在上面散發通道選擇 [Google Play] 按鈕。

一樣,上傳 Google Play 也要簽署身分識別,不過可以從圖上分辨出是要為了臨機操作還是給 Google Play 使用。

散發到GooglePlay
散發到GooglePlay

密碼輸入的部分就跳過了,這邊由於不選擇存檔位置,所以簽署身分識別後的檔案 VS2017 不會自動幫你保存,如果又碰上 VS2017 的佛性發揮,一切隨緣時,上傳 Google Play 的 App 可能會變得不能安裝執行。

第一次上傳 Google Play 時,要輸入代理帳號:

註冊Google帳號
註冊Google帳號

由於我以前都是人工手動上傳,所以要建立一個新的。選擇步驟 1 的超連結,可在 Google 開發網站註冊一個 OAuth 認證帳號。

建立 Google API OAuth 帳密
建立 Google API OAuth 帳密

在資安的觀念上,不要在非官方的登入口輸入你原始的帳號密碼,即使是 VS2017 ,也不能輸入原始帳密,所以建立一個專用的帳密來登入,這樣也有好處,要是原始帳密進行密碼定期變更,VS2017 的自動登入不用變更,當發現帳密疑似外洩時,把這組帳密從 Google 刪除即可。

可以直接從網頁上複製帳密貼到 VS2017 的對話框,考慮到可能得重灌電腦或是 Visual Studio ,最好還是下載 JSON 保存,未來找帳密比較方便,當然也可以到網頁上查詢。

輸入 Google API OAuth 帳密
輸入 Google API OAuth 帳密

如果已經在 VS2017 註冊過 Google Play 帳戶,上面建立帳號的步驟就可以跳過,當然,如果說開發的軟體有分個人跟公司的話,就點選 [+] 再輸入個人帳號資料即可,有分的話,名稱一定要分出來才好辨識,沒有的話就直接點帳號與 [繼續] 進行下一步。

選取 Google API 帳號
選取 Google API 帳號

由於我要發布正式版,所以選擇生產環境。

GooglePlay 上傳選擇
GooglePlay 上傳選擇

我的目標 API 設為 Android 4.4 (19),在臨機操作不受影響,仍然可以安裝,但是 Google Play 則不接受,被踢掉,錯誤訊息為:

上傳 ‘com.[公司].[軟體]’ 時發生錯誤: Your app currently targets API level 19 and must target at least API level 26. [403]

VS2017 API 版本過低
VS2017 API 版本過低

我懷疑是不是 VS2017 限制,改用手動上傳,確認為是 Google Play 限制,必須改版。Google Play 錯誤訊息則為中文:

上傳失敗
你的應用程式目前的目標 API 等級是 19,但最低目標 API 等級必須為 26,才能確保應用程式採用最新的 API,讓安全性與執行效能達到最佳狀態。請將最低目標 API 等級調整為 26。

Google Play API 版本過低
Google Play API 版本過低

只好將最低目標調整為 Android 8.0(26) ,先做臨機操作,經過測試,Android 4.4 / 7.0 / 8.0 都還能安裝,就重新編譯上傳。

VS2017 上傳 Google Play 中
VS2017 上傳 Google Play 中

上傳完成後,登入 Google Play Console 檢查上傳狀態,可以看到上傳完成就自動發佈,從 Console 到商店更新大概還要 15 分鐘左右,要看商店是否已更新要稍微耐心等候。畫面上一個尚未發佈的版本,是我先前測試 API 19 的版本,再擷圖時尚未刪除,後來已經刪除了。

網頁檢查上傳結果
網頁檢查上傳結果

在 Google Play 商店會顯示目前版本的修改內容,所以最好人工進行編輯,避免使用者對於改版原因產生困惑。

編輯版本修改資訊
編輯版本修改資訊

好了,自己把步驟都記錄下來,希望下次要用的時候,操作方式不變… 不然又要到處上網找如何做了。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Android] 全螢幕畫面 – Xamarin for VS2017


兩年前開發 Android App 時,習慣使用 Windows 視窗開發的慣例,加上了標題列,考慮視窗盡量大的前提下,有略為縮小標題列,但是我沒想到我有一些 SVG 的展示畫面,是以 FullHD (1920×1080) 來設計,有了標題列與 Android 內建的系統狀態列後,我的展示畫面就會自動縮小,如下,左右有黑邊,上面為我的標題列。

系統狀態列與標題列

在寫 iOS 版本的 App 時,就直接使用全螢幕,就不再加上標題列。配合這次改版,把標題列取消,並且也覆蓋系統狀態列,也就是時間那列沒有了。

在專案屬性中,[Android 資訊清單] > [應用程式佈景主題] 輸入:

@android:style/Theme.NoTitleBar.Fullscreen

全螢幕屬性

另外原先標題列的內容會出現在主畫面做為 App 的名稱,也趁此機會跟 iOS 版本的 App 名稱統一。

變更標題列與軟體顯示名稱

測試了一下,不管直拿、橫拿都能正常全螢幕了。

其實有標題列跟系統狀態列在直拿時還好,影響不大,但是橫拿時,就會佔很大比例的高度,還是移除的好。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Android] 無法正確封存 App – Xamarin for VS2017


老闆要求修改軟體圖示 (icon) ,去年年底到今年一直無法正確封存 App ,主要是因為一開始一直用 Android Emulator 測不過。

[Android] Android SDK Tools 25.2.5 無法移除 – Xamarin for VS2017

原先在 2017 開發 Android App 時,還用 Visual Studio Emulator For Android 開發,由於主要是使用 HTML5 網頁,只需要一個 WebView 框架,所以完成後,App 就擺一邊了。

去年年底要更新 App 時,才發現 Visual Studio 2017 自動更新後, Visual Studio Emulator For Android 已經不能用了,新的開發要直接使用
Android Emulator ,今天受不了了,找出很舊的實體機 Android 4.4 測後,錯誤訊息不同了:

剖析套件時發生問題

有了錯誤訊息是個好的開始,上網查了,有篇文章說到,有時 VS2017 會不正常,從方案總管那邊,滑鼠右鍵,封存後試試。

封存編譯好的專案

居然這樣後,再下載就能在實體手機跑了,先前到底是死在哪阿?

網頁上說正常後,選單也可以正常跑了,我先前都是從選單跑,先跑重建方案,再跑封存。

選單封存功能

卡了三個月,到底在卡啥?VS2017 修復不知道多少次,我還搞到把 VS2017 全部乾淨移除後重灌,結果居然是莫名其妙的怪狀況。

不過即使實體手機能跑,Android Emulator 還是不能跑,要你何用啊…

Android 4.4 最慘,連執行安裝都不行
Android 7.1 顯示不相容
Android 8.0 顯示未安裝

我真是搞不懂這模擬器是要幹嘛用的,實機能裝,虛擬機都不能裝。

[2019/03/15 新增]

同事發現我把在螢幕上的軟體名稱打錯了,所以我今天重新打開 VS2017,編譯、封存,拿實體機來測試,居然又不能正常封存:

無 Icon

檢查專案屬性,居然 Icon 的設定跑掉了,我就今天打開 VS2017 改個名字而已啊~

改完 Icon 設定,還是不正常:

未安裝應用程式

回想昨天是先在 Android 4.4 上測試成功,先把專案目標 API 設定為 v19 ,再改回 v26,開啟 Android SDK Manager,重新以系統管理員開啟 VS2017 ,到方案總管,重新建置方案後,再重新建置專案、封存專案,又正確可以安裝到行動裝置了。趕快上傳 Google Play 。

Xamarin for VS2017 該不會是佛性編譯器吧?一切看緣分阿~

Categories: 封裝部署, 工作點滴, 技術分享 | 標籤: | 1 則迴響

[gMail] Outlook 收不到信


大概去年下半年,gMail 就常常發出低安全性的警告信給用戶,例如下面這張圖:

低安全性告警信
低安全性告警信

很多同事、親朋好友就依照信件引導,點下採取動作,修改安全性。但這封郵件沒提,改完後 Outlook 或其他 Client 端的郵件軟體就無法收 gMail 的信了,只有 gMail 在 Android / iOS 上的 gMail App 還能收信。

通常兩三天內 gMail 沒信也沒感覺,所以通常等發現後,都忘了發生甚麼事。

改回來也很簡單,到 Google 帳戶 安全設定檢查

恢復第三方應用程式存取權
恢復第三方應用程式存取權

恢復第三方應用程式存取權,也就是像上圖一樣,會提醒你停用,但是你不停用,就可以繼續用 Client 端的郵件軟體,例如 Outlook 存取 gMail 了。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[RAID] 更換故障硬碟


過完年後,發現專案服務 Web Server 不太順,遠端桌面連進去看,原來是兩顆 256GB 的 Intel SSD 組成的 RAID1 其中一顆掛了,立刻由 IT 發起資產請購,先前在 Nas 的 RAID1 可以線上擴展 (Expand),就直接買兩顆 512GB 的 Intel SSD ,打算順便擴展空間。

考慮專案服務 Web Server 是公司重要核心,上班時段持續服務客戶,簽核完成後,為了確保時效性,特別打電話給管理部,說明情況為緊急採購,請管理部追蹤此資產需求,若有任何問題請立刻聯絡我,我來排除,公司是聯強經銷商,今天下單隔天就到,結果硬是拖了八天才到,真的很無語。

拿到硬碟後確認沒問題,排在 16:40 進行更換,其實我個人喜換只用 RAID1 ,因為兩顆硬碟獨立,就算拆出來不做 RAID 獨立使用也能正常開機,而 RAID 討厭的是有時系統標記的硬碟順序可能跟磁碟順序不同,新機時,是測過每一顆代號,貼上貼紙在熱插拔殼上後,才開始上線,但為了確保安全,我選擇先關機。

一關機,告知 Windows Update 已安裝完,需要重新開機,頓時三條線,只好先讓 Windows 重開機,跑完 Windows Update 後再一次關機。

關機後,斷電情況下移除損壞的 SSD ,開機送電,確認 Windows 正常開機後,把熱插拔快取盒內的硬碟換下來,等到 Windows 開完機後跑 5 分鐘左右,負載比較輕後,再推入新硬碟,約 2 秒左右偵測到硬碟後,LSI MegaRAID Storage Manager 自動進入 ReBuild 。

以前的經驗重建 RAID1 約需一天左右:插入熱插拔硬碟,自動重建 RAID 1

沒想到下班時,用遠端桌面檢查,居然已經完成 ReBuild 了… 一臉矇逼… 想想也是,以前重建 RAID1 是 SATA2 的 2TB 傳統硬碟,現在是 SATA3 的 SSD 512GB (只重建 256 GB) ,快是有可能的。

今天下午把另一顆還活著的 SSD 換下來,特別擷圖,256GB 重建只需要 16 分:

RAID1 Rebuild

重建完後,想要擴展 RAID1 虛擬磁碟從 256GB 到 512GB ,查了半天,應該是
在 [Logical] 頁籤下,選擇虛擬磁碟,滑鼠右鍵選單,最下方有 Expand ,上網查的說明書是在 Expand Virtual Drive 章節,結果我的選單就是沒有。

http://www.lsi.com/

LSI 不知道是不是被併購了,官網自動導向到另一家,相關的資源雖然還能在 support 下搜尋得到,但是還是不夠完整,似乎是因為我使用的是 LSI Embedded MegaRAID 晶片,所以 MegaRAID Storage Manager for Windows 沒辦法線上擴展,要進 LSI BIOS 或 WebBIOS 才能做…

算了,反正目前硬碟空間還剩 100 GB 以上,不要把線上系統搞掛,不動它了。就的硬碟則在關機下卸除,貼標籤貼紙封存,以後若需要再接 USB 外接盒來使用。

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

無線中繼 AC1200 超世代迷你路由器 A3


我家是樓中樓格局,一樓客廳的電腦最近一直斷網,客廳的電腦是使用 USB 延長線接 USB 無線網卡,連接二樓的無線基地台。起先以為是 USB 延長線老化,更換後沒有實際效果,判斷可能是 USB 無線網卡老化,就到 momo 買了兩個東西:

無線中繼 AC1200 超世代迷你路由器 A3
momo 網址官方網址

無線網卡 A650UA
momo 網址官方網址

到貨後,首先拆了 A3 來玩,將 A3 透過網路線接到電腦,設定無線中繼,設定完後,把原先無線網卡停用,非常不錯,A3 除了無線中繼外,還可以透過 LAN1/LAN2 接電腦上網,可以把 A3 當成無線網卡。因為家裡本來就有 5GHz 的無線頻段,透過 5GHz 的無線中繼,使用電腦跑測速網頁,可以跑到 89Mb/39.9Mb ,家裡是用光世代 100Mb/40Mb ,跑到這樣的速率算是不錯了。不過使用 HiNet 的測速軟體 HiNet.Dr.Speed.1.1.0.exe 倒是無法正常跑測速,上傳測測的沒問題,下傳測不出來。開工作管理員看,下傳速度亂跳,瞬間破 100 Mb … 測了幾次測不出來,放棄不管了,反正 speednet 可以正常測。

有 LAN 網孔的無線中繼

由於二樓的基地台不是 TotoLink 的,無線中繼無法正確設定兩台彼此的 WDS ,所以放棄 WDS 設定,把 A3 另外設定兩個隱藏的不同名稱的無線網路 (2.4GHz/5GHz) ,用手機連線後跑手機 App Speed Net ,手機稍微慢一點,大概是 79Mb/40Mb ,分別用 ZenFone 3 跟 iPhone X 測試速度良好,這樣大量改善 1F 的無線網路的效能,無線中繼的效果發揮出來了。

不過 A3 不能同時把 2.4GHz / 5GHz 都設定無線中繼到同一台基地台,可能是兩邊無線都取得相同 Class C 網段內的 IP ,形成路徑衝突,無線網路反而全死,只能用網孔進去改設定,5 GHz 有 433 Mb 的速度,我就只保留 5 GHz 的無線中繼。

買了 USB 無線網卡後,當然沒打算用 A3 接電腦。拆下來拿到電視那,把電視盒 Miier B2 跟東元電視的網路線接到這台,改善電視看 Youtube 的效能,大概是因為接網路線,比先前跑無線網路快很多,跑測速軟體跟電腦速率一樣,跑到 89Mb/40Mb ,再測試電視看 Youtube 都很順,A3 算是設定完畢。

先到 TotoLink 下載好 A650UA 無線網卡驅動程式後,把電腦換上 A650UA 後,發現 A650UA 是我討厭的模式,A650UA 在沒裝驅動程式前,是 USB 隨身碟,內含 driver ,不過買都買了,忍著不爽的感覺安裝驅動程式上去。

這支有點麻煩,重新開機後不會自動連上基地台,連續無法識別會卡在系統內,導致無法關機或移除硬體,應該是被鎖定了,要移除驅動程式重灌。

後來發現電腦內會掛上兩個服務,一個是 TotoLink 的,一個是 RealTek 的。由於每次重新開機,都無法自動識別基地台,先試過移除 TotoLink 驅動程式,改裝 RealTek 原廠驅動程式,但因為 A650UA 有隨身碟模式,RealTek 驅動程式無法跳過隨身碟直接變成網卡,只好先裝回原先無線網卡後,再上網買新的卡,這次想選小牌的,可以確保一定用晶片商的驅動程式。

露天找了一張 AC600 無線網卡。

這張一開始也會發生重新開機無法識別基地台,後來發現,是安裝 TotoLink 驅動程式時,兩個服務其中一個 RealTek 的有問題,而且移除驅動程式時被保留下來,服務名稱是 RunSwUSB ,執行檔放在 C:\Windows\runSW.exe ,可以 google 一下,也是有人在這撞牆。

這支服務找不到地方移除,只能手動停用,停用後比較正常,但偶爾還是會怪怪的。

先前發現電腦被 A650UA 強制鎖死時,只能按電腦 Reset 重新開機,重新開機時發現需要重新設定 BIOS ,也看到 CPU 溫度衝到 74 度,在這麼冷的冬天 CPU 溫度這麼高,回想起大概兩年沒清潔電腦跟換水銀電池了,拆機後發現有個 8 cm 的系統散熱風扇掛了,轉不動,衝去順發3C 買了新的風扇裝上去,舊風扇在拆的時候,聽到卡一聲,忽然就能轉得很順利,算了新風扇都買了,舊風扇就不要了,舊的水銀電池用電表量,還有 3.2Vdc ,算了,用兩年也換掉好了。

重新開機後,根本抓不到新網卡,到裝置管理員開啟顯示隱藏裝置,把 TotoLink 驅動程式移除、RealTek AC 的驅動程式都移除,重新插入網卡,就能正常偵測,這次學乖了,不把整個 RealTek 完整驅動程式含工具裝上去,只讓網卡掃描驅動程式安裝,這次裝完後,電腦就正常了,不過還得觀察個幾天。

A3 我覺得很讚很好用,一樓的無線網路跟電視都順了起來,就是電腦查問題很麻煩。A650UA 很難用,不推薦大家使用,還不如用小牌無線網卡。

Categories: 技術分享 | 標籤: | 發表留言

[Android] Android SDK Tools 25.2.5 無法移除 – Xamarin for VS2017


我 2017 開發的 Android 要小改重新上線,這中間經過 VS2017 多次升級,甚至因為 Win10 1803 導致我重新安裝 VS2017 。

App 可以正常編譯成 .apk ,並經過封存、散發的步驟製成有簽署的 .apk ,但是不論如何,拿到虛擬機或實機跑 App 安裝完成後,都會顯示:

App not installed

一直解決不了,上網搜尋有提到 Android SDK 要整個更新到新版。

但 Android SDK Tools 這部分就是更新不上去,最後是跑完整 uninstall 後,到 Android 官方網站下載新版的 Android SDK Tools

下載完後,解壓縮至:

C:\Program Files (x86)\Android\android-sdk\tools

再從 VS2017 內呼叫 Android SDK 管理員,即可發現 Android SDK Tools 已經升級到最新版,我下載時的版本是 26.1.1 。

不過手動安裝會清除已安裝清單內容,所以所有 SDK 跟 Image 等都需要重新下載安裝,目前我的電腦正在跑,希望這部分搞定後,我的 Android 程式就可以跑了~

結果還是一樣阿~~~

App not installed
Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[Office] 註冊零售版的 Office 2019


在先前 Office 2016 介紹的註冊畫面:[Office] 2016 家用及中小企業版

在 Office 2019 略有變動。一般來說,你拿到一張卡片的,那個是兌換金鑰,而不是產品金鑰。兌換金鑰只能使用一次。

首先,登入:office.com/setup

大部分情況會要求重新登入,持續輸入的話,或剛登入過,可能會自動登入,這時務必要確認再確認,步驟1 的帳號一定是要打算掛入 Office 資產的帳號,例如個人帳號,這邊沒處理好,接下來兌換的 Office 就變別人的了。

注意 Office 兌換後會掛入 步驟1 的帳號

輸入完兌換金鑰後,會出現被綁訂的地區,語言則可選擇。這邊注意一下,軟體有出口管制,所以若是台灣買的軟體,請務必在台灣兌換金鑰後安裝再出國,出國後只能靠台灣公司或家裡提供 VPN Server 跳轉才能啟用。

選擇完地區、語言後按下一步

會自動辨識輸入序號是哪套軟體,然後執行步驟三取得你的 Office 才會真的把軟體掛入你的帳號。

其中,Office / Visio / Project 的 2013/2016/2019 及 Mac 版本的 2016/2019 都可以掛入這個帳號,按下下一步後會自動導向:

https://account.microsoft.com/services/

點選畫面上的檢視產品金鑰就是要輸入軟體的真正金鑰,不要輸入兌換金鑰,那無法啟動 Office。

選擇安裝後,可點選 其他選項 ,就可以選擇 Office x86/x64 或下載離線檔案,離線檔案是 iso 檔,Win8/8.1/10 可掛載成為 DVD 光碟後安裝,舊版本的 Windows 可考慮燒成光碟安裝。(參考文末圖說)

掛入微軟帳號的資產

如果輸入兌換金鑰後,出現下面畫面,就表示這個金鑰已經被兌換過,不能再用,如果有疑問,只能問微軟客服。

金鑰已被兌換

若輸入的金鑰無法辨識,會出現下面畫面。

無法辨識金鑰

如果你輸入成產品金鑰,而非兌換金鑰,可直接下載產品,但不會重新掛入帳號。

點選立即下載安裝,序號內含於安裝檔,只能輸入相同序號

其中:

商務板金鑰兌換:office.com/setupkey

舊版本 Office 金鑰下載 Office :https://www.microsoft.com/zh-tw/software-download/office

贈品兌換:microsoft.com/redeem

從上面提到服務與訂閱網頁點選安裝時,預設是下載簡體中文版,所以一定要改:

點選其他選項變更下載內容

新版本 Office 預設下載 x64 ,若無使用其他 OLE/COM/Automation 軟體,例如 AutoCAD/Acrobat 等,建議直接使用 x64 版本,習慣新版本差異,減少未來升級再來熟悉。但若需使用其他 OLE/COM/Automation 軟體時,則必須該軟體也為 x64 才能相容,例如使用 Acrobat x64 就可以插入 PDF 到 PowerPoint,反之可能要配合降版本到 x86 ,例如若只有 x86 版本的 MathType ,則只能在 x86 版本去搭配使用。

選擇語系與位元版本

若選擇下載離線檔案,就可以把 x86/x64 光碟下載到電腦,我個人偏好下載離線安裝版本。

下載兩種位元版本

開始下載光碟檔案

光碟格式為 img

光碟預設安裝是 x86 版本,若要安裝 x64 版本,記得手動到子目錄安裝。

Categories: Office, 技術分享 | 標籤: | 4 則迴響

[Spam] 比特幣詐騙郵件不斷,eMail 密碼切記不要與外面註冊密碼一致


事情大概是 10 月初開始發生。

最早是一位先前信箱被入侵過的同事身上出現。

收到一封信內容大概是說:


電腦已經被入侵,掌握所有資料,在 48 小時內不付 8xx 元的話,將會加密電腦內所有資料,試圖改密碼也無用,電腦內有木馬,這封信就是透過入侵電腦而發送的。

信件內容說是透過入侵發送,檢查 Mail Server 該封信件的紀錄,是正常透過 SMTP 協定,從外面信箱寄進來,另外清查該位使用者改過密碼後,從公司外的連線至 Mail Server 的紀錄,都是該位同事手機連線,並無其他不正常紀錄。

之後清查該位同事電腦,整體看起來沒有獨立木馬存在的跡象,考慮該位同事先前信箱有過被他人入侵後才改密碼的狀況在,假定該位同事資安觀念不夠,還是決定將該位同事資料備份後,重新安裝作業系統。

隔幾日,該位同事又收到同樣信件,只是金額不同,仍然是八百多,決定不理他。

再隔幾日又多了幾個人收到,其中包含離職的稽核,前稽核離職後,信箱被設為別名,別名只能接收寄給前稽核的郵件,該帳號因為不實際存在於 Mail Server ,所以不能登入、不能寄信,所有 Mail Server 提供的服務都不支援,只有將信件轉給現任稽核會生效。如此一來,很明顯的是詐騙郵件。而一開始收到郵件的同事,開始收到日文版…

到了 10 月底,我也收到類似郵件了,這就跟廣告郵件一樣,所以我在 Mail Server 上依據郵件特徵直接在 Server 擋掉,只把阻擋紀錄通知給 IT 追蹤。11月初起,我收到的郵件開始說我的帳號密碼是 xxxx 了,例如下面擷圖郵件,是最新的內容 (註:文件內容一直更新,例如加入思科網通設備漏洞是新版的才有):

詐騙比特幣的郵件
詐騙比特幣的郵件

有密碼就搞笑了。

我自己密碼習慣分級處理,eMail 密碼與外面註冊密碼不會一致,避免註冊資訊外洩,或是網站管理者本身別有用心下,eMail 被登入資訊外洩。另外我在註冊習慣會登記到自己的 Excel 檔內,畢竟年紀大了,帳密又多,背不下來。

經過比對,同一組帳密我只用在三個網站登入用,考慮到對方可能會測試,我說明就不完全揭露網站細節:

  1. 一個國產 IC 晶片網站,大概2011註冊,2013以後沒在用
  2. 一個國內網址帶有 cpu 的網站,大概2011註冊,2013以後沒在用
  3. SMA一個分公司的論壇,大概2012註冊,2013以後沒在用

但是跟其他收到郵件的同事,網站1/2 雖然我沒再去了,IC 部分改由研發部門處理,但是收到郵件的同事都沒在用。而網站3 雖然其他幾個同事有可能用,不過問了一下,基本上是都沒在用,因為同事都去 SMA 官方主站,而我是因為在分公司論壇看到有人討論到未公開的通訊協定細節,才在該網站註冊後續詢問,分公司論壇我們公司只有我去看過。

算起來應該是沒交集,所以也無法鎖定是哪個網站外洩註冊資料。

由於都是註冊很久的資料,所以我想應該是對方購買的帳密資料庫包含了這三個網站其中之一的外洩資料。我個人偏向網站3 ,因為現在會收到詐騙郵件的同事,都是會處理到國外事務的相關人員,純粹國內事務的還沒收到詐騙郵件的案例。

從這個案例來提醒大家:

  1. 近期透過 eMail 詐騙比特幣案例橫行,自己要慎重閱讀考慮。
  2. eMail 的帳密絕對不要與外面網站註冊的一致。
  3. 重要會綁裝置或著資產的帳號,例如 Microsoft/Google/Apple 的帳號,不要拿來註冊其他網站使用,若有必要,密碼絕對要分開。
  4. 帳密最好在自己電腦用加密檔案紀錄,不要上傳到雲端空間,最多可放在行動裝置內,但關閉該目錄的自動雲端備份。

希望大家都別被騙去繳比特幣阿~~~

[2018/12/25 09:50 新增]

今天收到簡體中文版了,大概是看英文版我都不理他,怕我英文程度不好~~~

簡體中文版的比特幣詐騙信件

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

在WordPress.com寫網誌.

%d 位部落客按了讚: