Author Archives: 璉璉

[iOS] 註冊一個開發者帳號


在使用 Visual Studio for Mac 開發完成後,要把上傳第一個公司的 App 之前,大概要以下幾個步驟:

  1. 創建一個蘋果帳號 (AppleID)
  2. 將此帳號註冊為開發者
  3. 申請 D-U-N-S Number
  4. 註冊公司資料
  5. 完成付費

到此開發者帳號完成。

接下來要註冊公司資料、建立憑證後,才能建立第一個程式的代號 (AppID) ,填寫 App 資料、上傳截圖、App 進入審核,這篇主要分享是註冊開發者帳號為止。

如果有 Apple 的裝置,基本上一定會有蘋果帳號,這樣才能在 App Store 下載軟體,通常這個帳號是個人的,如果是要處理公司的,我建議用公司 eMail 來建帳號。

我個人建議建帳號在 https://appleid.apple.com/ 進行,因為這個網頁有完整的繁體中文支援。

登入畫面,點選右上角可建帳號

登入畫面,點選右上角可建帳號

建帳號時,一般來說可能會輸入中文姓名,但開發者帳號請務必使用英文姓名,也可以用羅馬拼音或萬國拼音,或是直接使用護照姓名。

新建帳號

新建帳號

建帳號需要完成認證才能登入,如果是透過裝置建帳號,會使用簡訊發送認證號碼,如果是採用公司信箱建帳號,會透過 eMail 發送認證號碼,eMail 發送認證號碼若因為 Spam 規則導致過久未收到信,在 AppleID 網站逾時後,先前輸入的帳號資料會被拋棄,必須重新建帳號,不能由原先新建帳號繼續輸入認證碼。所以如果超過 5 分鐘沒收到 eMail 發送的認證信,就趕快從介面上選取重新發送,一般 Spam 規則在第二封信發送時,就會允許兩封信一起進來,輸入最後一封信的認證碼即可,輸錯也沒關係,只要沒逾時,可以再改認證碼。

建立完成帳號後,用相同帳號登入 https://developer.apple.com/ ,這個網站目前只有英文,第一次登入會要求接受蘋果開發者協議。

Developer Agreement

Developer Agreement

點選右下角 [Submit] 接受,再點選 [Join the Apple Developer Program] 。

Join Apple Developer Program

Join Apple Developer Program

點選右上角 [Enroll] 開始進入開發者帳號註冊,搞到現在才開始,真是夠了。

註冊開發者帳號

註冊開發者帳號

接者進入引導畫面,引導畫面可選簡體中文,若英文不好也可以看簡體中文,這個時候可以切換語系,按下 [Start Your Enrollment] 繼續。

開發者帳號註冊引導畫面

開發者帳號註冊引導畫面

不得不說,蘋果網站支援 IE11 的部分常常出問題,如果原先 AppleID 不是兩步驟驗證的帳號,這邊畫面會跳警告畫面,但在 IE11 是全白畫面,ㄧ整個不知所謂,改用 Chrome 繼續才能正常看到,如果 IE11 看不到畫面,先回到帳號管理,看看帳號安全是否啟用了兩步驟驗證。

需要啟用兩步驟驗證

需要啟用兩步驟驗證

之後輸入公司資料,申請 D-U-N-S Number,這部分因為資料必須遮掩,只有上半截:

申請 D-U-N-S Number

申請 D-U-N-S Number

申請完畢後,大概幾分鐘就會把 D-U-N-S Number 的郵件發送到信箱。

收到 D-U-N-S 信件

收到 D-U-N-S 信件

點選郵件內的 [Enroll now] 繼續完成公司帳務申請,裡面有要填 D-U-N-S Number ,大部分都是個資法保護範圍,就看最後面 TaxID ,我只在這邊看到可以填統一編號。

選項輸入:填入統一編號

選項輸入:填入統一編號

完成表單後,大概幾分鐘可收到公司完成註冊的 eMail 通知,下半截都是公司資訊,就跳過了。

收到公司完成註冊

收到公司完成註冊

 

我建帳號時,因為不知道有剛剛說的要求,所以我是用公司資訊部的化名建帳號,這個化名帳號用在 Google Play / Youtube / Facebook 企業帳號 / MacBook Pro 新機註冊上,所以如果不做開發者帳號申請的話,純粹設備管理用化名是沒啥關係。我因為一開始姓名輸入中文,所以在審核資料時,被退,發了一封信通知我要改名。

要改英文名阿

要改英文名阿

周一早上登入網頁修改為羅馬拼音姓名後,回覆這封郵件,並註明 Case Number ,周二早上收到確認改名信件後,約 20 分鐘後接到疑似大陸口音的客服人員人工電話認證,確認個人與公司資料,索要第二個緊急連絡人資訊,特別是公司英文全名、第二緊急連絡人英文全名,客服人員有說,英文名可不用羅馬拼音或漢語拼音,慣用的英文名亦可,所以第二緊急連絡人直接用 丹尼斯 姓 的方式電話登錄,電話掛掉後約 5 分鐘就收到完成郵件。

註冊已接受

註冊已接受

點選 eMail 裡面的 [Review now] 準備進入付款流程。

檢視相關合約

檢視相關合約

左上角有 [Download] ,這內容有 78 頁的 pdf 檔案。

繼續進入下一步付款,一年就要新台幣 3400。

新台幣 3400

新台幣 3400

 

選擇用我的信用卡付款,下面是個人資料就跳過了。

信用卡付款

信用卡付款

 

進入下一頁可輸入公司發票資訊。

輸入公司發票資訊

輸入公司發票資訊

確認後,幾分鐘內就會收到 eMail 的感謝消費信件。

感謝訂購

感謝訂購

大概 20 分鐘左右會收到詳細訂單資訊。

詳細訂單

詳細訂單

約過半天會收到電子發票。

電子發票

電子發票

如果有要看電子發票長啥樣,大概就是下面那個樣子。

電子發票

電子發票

從註冊帳號到完成付款扣掉假日的話,大概就花了我四天。回想起 google play 商店註冊付款就輕鬆多了。

接下來還有開憑證、App 要上傳,蘋果真難搞阿~

 

 

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

[iOS] WebView 加上回前頁的手勢


在 Android 因為本身就有回前頁的功能按鈕,因此在以 HTML5 網頁為核心的行動裝置軟體本身並不需要做特別設計。

在 iOS 如 iPhone/iPad 只有下方的 Home 鍵,因此需要考慮一個方式,不管網頁如何跑,都能有回前頁的方案。

一般來說,在 iOS 大多數的軟體不是使用導覽工具列處理,就是利用從右往左滑的翻頁手勢,代表回到上一場景。

因此只要利用這個方向使用從右往左滑的翻頁手勢,代表網頁回前頁的功能。


public override void ViewDidLoad()
{

// 略

var swipeBackRecognizer = new UISwipeGestureRecognizer(HandleSwipeGoBack);
swipeBackRecognizer.Direction = UISwipeGestureRecognizerDirection.Right;

WebView.AddGestureRecognizer(swipeBackRecognizer);

}

void HandleSwipeGoBack()
{

WebView.GoBack();

}


假定畫面上已經有一個 WebView 控制項,就可以在載入事件中直接加入 WebView 物件變數的手勢設定。

參考:https://stackoverflow.com/questions/43779824/how-to-swipe-back-in-xamarin-ios

 

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

[iOS] WebView 瀏覽 http 的安全性設定 – Visual Studio for Mac


去年做 Android 的 App ,今年老闆要我做 iOS 的 App 。

我的大部分還是靠 HTML5 網頁呈現即時資訊,所以我主要只要把 App 包個 WebView 即可。

一開始我是在 Xamarin.iOS 大分類下看說明學著寫,例如這個 WebView:

https://docs.microsoft.com/zh-tw/xamarin/ios/user-interface/controls/uiwebview

我一開始以為我自己看得很透了,直接開始寫,但是怎樣都卡在連不上我的手機網頁,只好從上面網址抓線上範例來測試,範例網址的確可以正確呈現:

https://xamarin.com/

但是我只換網址為我的手機網頁就不行,畫面全白… 我開始鎖定是 http 跟 https 的差異。一找,果然在說明書找到:

https://docs.microsoft.com/zh-tw/xamarin/xamarin-forms/user-interface/webview

這個網頁是介紹 iOS/Android/Windows Phone 三種行動裝置共用的設計部分,在網頁中可以看到,iOS 特別註解從 iOS 9 以後安全性變更,預設不能瀏覽 http ,要修改安全性設定…

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

 

冏… 為啥 iOS 的特殊設定不是放在 Xamarin.iOS 下,而是放在 Xamarin Forms 下…

但是又碰上個難題,我是直接在 MacBook Pro 下安裝 Visual Studio for Mac ,沒有另外安裝純文字編輯器可以直接輸入安全性規則,比對原始碼內容,在介面上測試輸入如下:

設定網址安全性

設定網址安全性

重新編譯執行,果然可以正常瀏覽 http 網址。

編輯步驟:

  1. 在最下方點選 [新增項目]
  2. 類型選 [字典]
  3. 編輯項目名稱改為 NSAppTransportSecurity
  4. 在屬性 NSAppTransportSecurity 下方點選 [新增項目]
  5. 類型選 [布林值]
  6. 編輯項目名稱改為 NSAllowsArbitraryLoads
  7. 值 改為 是

存檔後會跟上圖一樣。

微軟網站的線上手冊沒考慮直接使用 Visual Studio for Mac 編輯,所以只能自己試啦。

可以看到專案名叫做 HelloWebView … 跟 Hello World 差不多的意思~~~

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

[AI] 關於類神經網路的學習經驗分享


話說五月下旬在:

台灣「人工智慧」社團 https://www.facebook.com/groups/Taiwan.AI.Group/

回了一篇落落長的文,要找的時候才發現被砍文了。
在別人的地盤發文的缺點就是刀在人家手上,想砍隨便砍…

看這張擷圖,我在回這篇前幾天寫了一篇落落長的回文,在這篇回應時提到另一篇給樓主看,兩天前要找已經找不到了。

有圖有真相

有圖有真相

我也忘了那篇不見的文章在講啥,就輕鬆分享一些我的想法吧。

1992 (民81) 升大三的暑假,我參加了我唸研究所指導教授的研究生 meeting ,就當成研究會好了,我還記得陳德源學長念混沌 (chaos)、劉業主學長負責念模糊 (fuzzy),還有幾個學長念啥我忘了,一個負責專家系統,我負責念類神經網路 (ANN) ,這是我最早接觸人工智慧 (AI) 的年代,當時念類神經網路應該是一本倚天出的電腦書,那本書大概只有概念,沒辦法依據這個概念去實作。

1994 (民83) 碩一上,去成大電機所念碩博合開的類神經網路,授課教授規定作業都要交程式碼跟運行結果,所以我就買了葉怡成教授的類神經網路,那時候葉老師的書是有 C的程式碼,我則是看懂後,改用 Quick Basic 4.5 寫作業,果然,實作才是王道,我終於開始入門了。後來葉怡成老師新改版的書已經抽掉程式碼。

碩士作業 類神經網路原始碼

碩士作業 類神經網路原始碼

碩士班搞了很多東西,主要包含 GIS 跟 NetFlow Programming,到了碩二下的三月,指導教授叫我列出來得及畢業的論文方向,並簡易試作,其中網流規劃我是計畫專任助理,會跟計畫成果有重疊,所以碩士論文就決定是類神經網路。

四月春假把原先的 QB 程式碼改用 Visual Basic 3 改寫後,每天晚上研究室的多台電腦都被我借來做算不同案例的批次學習,一早我再去每台電腦把計算結果拷貝到電腦進行分析檢討。

我的碩士論文是從曾文水庫九個電傳雨量站去預報未來一小時後曾文水庫的進水量,內容可到我個人網站找,網誌這邊沒有。

一開始滿白目的,犯了一個通盤的錯誤,所以我學習訓練的結果我總合來說,不用學習就可以使用公式:
f(t+1)=f(t)
來取代。

認真去看很多論文,其實都犯了這個錯誤,只用觀測量去推估預測量,例如預測一小時後,得到的結論是預測得很好,預測值只落後觀測值一小時。這種結論其實就是:
f(t+1)=f(t)

好在那時有念時序列分析,當我自己得到跟別人相同結論:「預測得很好,預測值只落後觀測值一小時」時,我是很洩氣,為啥大家做的都差不多,那到底用 ANN 還有甚麼意義?看著看著就想到時系列分析的 AR 模式,然後回想到非線性規劃,我就悟了。

這個狀況在五月初發現,說實在的,以碩士論文程度來說,沒發現也不會怎樣,更不要說那個年代沒幾個人懂,繼續往下做也沒關係,反正就是多一篇垃圾,當然發現得早就是指導教授會要我改… 所以我在 BPN (倒傳遞網路) 裡面加入了不學習的輸出節點當成系統內能,再轉入下一個時段的輸入節點。

這邊就要說,如果使用現成的套件,是不可能自己改架構的,學習不可能允許一個輸出值不被控制,所以能的話還是自己開發比較好,架構可以隨意調整,學習目標也可以任意變動,前期的值域,選擇的反映函數,輸出的映射,學習的目標函數,參數的最佳化等,才能自行變動。

再忙到七月論文口試之前,又體驗了過度描述 (over fitting) 問題。

用基本的數學原理來看問題。
一條變數、一條方程式可以得到一個唯一解。
所以當 n 個變數時,至少需要簡化後方程式還有 n 個方程式才能得到唯一解。
若小於上述條件時,將為無限多組解,當大於上述條件時,將得到近似解。

這段說得很饒口,我再舉一個簡例,大家都會線性回歸吧?線性回歸直接有公式算,在 Excel 只要在圖上按一下滑鼠右鍵就可以加入。
y=ax+b

有兩個變數 a, b
當只有一點 (x1,y1) 時,可以決定出無限多條直線方程式。
當有兩點 (x1,y1)、(x2,y2) 時,可以得到唯一一條直線方程式。 (這兩行是國中數學)
當有三點 (x1,y1)、(x2,y2)、(x3,y3)、…、(xn,yn) 以上時,可得到一條近似方程式最接近所有的點,也就是回歸方程式。 (這行是高中數學)

所以從上面的簡例可以知道,要有一個正確解,至少方程式要大於等於變數量,你才能得到唯一解或近似解來接近真正解,而不是無意義的無限多組解來拚運氣。

以 BPN 來說,參數量很好計算,是依據反應函數方程式來推,所以一層隱藏層就是 3 次方的參數量,而要學習的數據有限,所以只能透過降低參數量來改善過度描述的問題。

比如說一個七次方程式如果因為曲率變化不大,我們可能可以降階到改用三次方程式描述這個函數,所以就減少了四參數。

因此,我需要修剪我的 BPN ,把不重要的因子去掉,保留重要的因子進行分析,所以透過敏感度分析後,把影響不大的變數優先移除掉,以確保我的變數量小於我要學習的組數。

如果是說倒傳遞網路 (BPN) 的批次學習,我的理解是參數量x6 是最少的批次學習尺度,參數量的計算是 神經元數 + 兩兩層數相乘,假設是標準的超越函數,原因是依據數學方成組理論來,變數大於方程組,無限多組解,變數等於方程組,唯一解,變數小於方程組 在目標函數下跑最佳化才有意義,也就是說學習才有意義。大於參數量 是有義解,3 倍學習量是建議最小值,如果是高度非線性,例如三角函數,至少需 6 倍學習量才能良好的描述,所以學習的筆數少於參數量,從數學來看是無義解。

我是覺得當時我碩士論文針對 ANN 找到這些重點算滿大貢獻的了,不過青睞的人不多,還好葉怡成教授看上了,還發個 eMail 給我說要放到參考資料內,我 Outlook 內還有留 1997/11/21 回給葉老師的信…

碩士論文全文可到臺灣博碩士論文知識加值系統下載:https://ndltd.ncl.edu.tw/

鄭子璉,「分佈型類神經網路降雨逕流模式之研究」,碩士論文,國立成功大學水利及海洋工程研究所,民國 85 年 6月。

當然直接在臺灣博碩士論文知識加值系統可以搜尋到更多其他人的論文,做研究這個網站很重要。

當兵的時候,指導教授有要我把論文精簡後投研討會論文:http://www.tlcheng.tk/Paper/ANNRunoff/97topic.htm

當兵的時候,慢慢的想通所謂的學習,就是等同參數最佳化,就是非線性規劃的一種,ANN 通常採用的反應函數都是超越函數,透過微分 (牛頓法) 得到參數變化率的斜率,針對該斜率修正參數,逐步逼近最佳參數,達成最佳學習。

這裡面又有兩個關鍵點:
1. 參數最佳化
2. 評估函數 (目標函數)

首先先談參數最佳化。
牛頓法由於透過斜率為 0 來逼近最佳解,從高三數學教微積分就會教到,這會掉到區域最佳解。所以 ANN 透過多次亂數為起始值進行學習,來盡量找到全域最佳解。
非線性規劃屬於數學規劃的一種,而非線性規劃裡面談到最多的就是怎樣閃掉區域最佳解,所以為了解決這個問題,發展出多種參數逼近的方式。
在人工智慧裡面有個旁支是遺傳演算法,遺傳演算法若從非線性規劃的角度去解釋的話,可以當成格網縮放法 + 隨機格網,可以找到很多研究關於類神經網路與遺傳演算法的混和應用,我個人對於那種把兩種方法分兩步驟用的,沒有感覺,我認為拿遺傳演算法來做學習的,才叫做混和應用。
比如說牛頓法的原理是微分斜率為 0 ,重點就是連續可微。但是實際的應用大多數是有界的,就會產生不連續面,也就是不可微分點,如果還硬用牛頓法硬套,很大的可能結果是一直落在邊界附近的區域最佳解。
這種情形數學理論上來說,應該改用可處理有界或是不連續的非線性規畫法來推參數,也就是所謂的學習,而不是直接用既有的函數庫硬套學習,牛頓法如果能成為通解,後面也不會有一堆數學家研究非線性規劃的方法冒出來。
當然,非線性規劃有很多方法,用其他方法來取代牛頓法進行學習都是提高 ANN 的價值,回到老問題,想要做到這件事,就得自己開發軟體。

其次很重要的是評估函數。
大多數 BPN 可能會用均方根誤差來做評估函數,均方根越小,就認定參數越好,均方根縮小的曲線,就被稱為學習曲線。
很多軟體允許使用者選擇評估函數,但是也是有限的幾種。
從前面討論的線性回歸來看評估函數,線性回歸的公式應該是高二下在教,是利用 y 軸的最小距離平方法來推導,又稱最小平方法或是最小二乘方法。
均方根顧名思義,就是把誤差開根號取平均,最小平方法就是把誤差取平方。兩個在應用上的差別是容易受少數特異點影響,而造成回歸式改變,而均方根誤差,則是因為不受少數特異點影響而改變。
舉個例子好了,比如說要預測雨量,以南部地區來說大部分的情況下是不下雨的,只有少數情形是下雨。所以我不用任何 AI 模式或衛星雲圖,我直接給你 f(t+1)=0 ,也就是說我永遠預測未來一小時後降雨量為 0 ,我的準確率可達 98% 以上,因為南部下雨天數少於 60 天,所以算起來超過 98% 是不下雨的,那麼我到底準還是不準?以降雨預測資料進行學習,若使用均方根誤差,則預測的降雨會偏向 0 ,若使用最小平方法,則預設的降雨會比較大,因為小值的誤差,平方後幾乎沒影響,大值平方後影響就會很大,所以預測的結果就會跟著變化。
拿線性回歸來玩,可以玩甚麼?不要再套用線性回歸,而改用非線性規劃來推估
y=ax+b
的 a, b 兩參數。
比如說就用最小均方根誤差、最大相關係數來比。
我找到了一篇剛好在討論這件事,也用了線性回歸來檢討:
機器學習大神最常用的 5 個回歸損失函數,你知道幾個? https://buzzorange.com/techorange/2018/06/22/computer-learning-5-tips/

從輸出資料的特性,需正確選對評估函數,再使用此評估函數進行參數最佳化 (學習) ,整個設計的模型才會有意義。

用非線性規劃去做 ANN 的參數最佳化是退伍後才領悟的,放在前面是為了比較好的說明,當兵時主要想通的是評估函數這塊。退伍後,回到成大做研究助理,考博士班,所以回學校後就繼續參加研究會,那時相關的論文就多了。

我 ANN 的 VB3 原始碼先給一位直升碩士班的大四吳學弟做直升生的專題研究。

念博士班以後,把我原先的 ANN 模式升級到 VB6 後,幫一個無心唸碩士的學弟做颱風降雨預測。 (http://www.tlcheng.tk/Paper/rain00/rain00.htm)

類神經網路的 VB6 原始碼

類神經網路的 VB6 原始碼

又到資管及工業管理研究所去念數學規劃,才把這塊讀通。到了博三升博四的那年暑假,指導教授要我自己列研究方向決定博士論文,我列了六個方向,其中類神經網路部分,當時有個逢甲來的博一陳學弟碩士做這塊,指導教授要我讓給學弟,最後依據系上大老蔡教授的建議下,走第七個方向 Hydro-Information ,所以才把人工智慧擺在一旁。

AI 人工智慧,在現代資訊技術進步下,應該明確的重新定義。

人工智慧的核心在模擬思考,只會計算的,那叫做計算機 (computer) 。
人腦不是記憶龐大就會產生智慧,更不是透過雲端查詢問題解決方案 (你以為打電話給廠商客服就算你有智慧嗎?)
人工智慧的
第一步是建造出模擬人類思考的正確模型,類神經網路只是簡化後的 Lite 版。
第二步是正確思考。
第三步是獨立思考。
第四部是創造性思考。

換種想法吧,就像養小孩,第一步老天爺做完了,所以第二步是你要教小孩甚麼是對的,第三步是你要信任小孩做正確的事,第四步是他能創造出新的價值。

所以 AI 的核心在第一步。
那麼跟雲端有啥關係?是認為目前電腦的計算速度跟儲存速度比不上人腦嗎?
演算法建模並驗證完成後,成為一個穩定的產品時,才是考慮雲端的時機,就跟檔案空間一樣,一台電腦只能服務你,一台雲端可以服務無數的你。
開發測試 AI 是小範圍的事,已開發完成的 AI 服務大眾才需要雲端,至少是第六步以後的事。

很多人把 AI 過度神化,我就問個問題,我現在要算 4 個數字的平均。
麻煩使用 AI 模型建立平均的架構,我要求也不高,算出來的平均誤差在 1% 以內就好。

ㄜ…

我以前玩過,會讓你懷疑人生,不是,是懷疑所謂的人工智慧。這種類型的硬要凹人工智慧的話,應該改用專家系統做,當然啦,平均直接用個函數就算出來了,是誰教你用所謂的人工智慧做?當然未來希望能整合進人工智慧裡,那就是要像人腦一樣,分理性跟感性,專家系統做理性,類神經網路做感性。

就跟幾年前雲端大熱一樣,雲端不就是伺服器(群)?改個名詞而已。

目前的人工智慧比較流於前人開發好的架構去套用,比如說人臉辨識的架構去套用不同的人臉沒啥問題,你拿來用衛星雲圖預測颱風路徑試看看。

人工智慧的模型、評估函數、參數最佳化、反應函數都是實務應用的重點,目前並沒有標準化的模型,深入理解後架構出來的東西才有意義。

不要跟幾年前雲端一樣,一頭熱不知道在熱啥。

 

Categories: 技術分享, 決策支援系統 | 標籤: | 發表留言

[Outlook] iOS 寄來的信件亂碼


從開發者的角度來看,貧果的技術真的很差。

iOS 都到 11 版了,它的內建郵件軟體還不能設定寄件編碼。

依據 RFC 多媒體郵件 MIME 規範,信頭要標記郵件編碼,軟體才能正確的解碼。

關於 MIME 信件格式架構圖可參考這篇:Outlook 亂碼問題

在台灣最常碰上的就是從 iPhone / iPad 寄來的郵件是亂碼。

今天同事丟來一封信,無法辨識,從關鍵字來看就可以找到 iPhone 發出。

Outlook 2016 變更編碼

Outlook 2016 變更編碼

註:圖上破碎的字塊是故意圖形處理,避免郵件被人工解碼。

早先的 Outlook 版本,收信時就會將信件轉成 Unicode 編碼,如果轉碼錯誤是沒救的。

在台灣由於預設編碼通常為 big5 ,iOS 當出現日韓簡罕時,可能是選字造成 (廢話,一堆長很像的小字,不能分辨是繁體或簡體也是正常的),可能會自動採用簡體來編碼郵件,Outlook 還可以設定使用外寄編碼,例如 utf-8 ,就不會有解碼問題。

收到亂碼信請千萬記住,是寄件端問題,寄件端未依規範編碼,導致收件端無法採用正確解碼,只能依照電腦預設編碼解碼,要改編碼時,優先依照寄件者國別去猜,其次是常用編碼,例如 utf-8 ,當然幾大語系也是猜測重點。

  1. 在 Outlook 2013/2016 可以依照上圖變更編碼,選單的 [動作] > [其他動作] > [編碼] ,以這篇來說改用 簡體中文 就可以解碼。
  2. 如果沒有 Outlook ,我個人習慣都會安裝 Live Mail 來檢視與調整,從 WebMail 下載原始郵件為 .eml 格式,再給 Live Mail 解碼。
  3. Live Mail 在 2017/01/10 被微軟下架,大多數人是沒備份到,所以還有一種做法,把 .eml 更名為 .mht ,給 IE 開啟,就可以在 IE 解碼。
  4. 我自己有寫一個加解密編輯程式支援 .htm / .eml / .mht 預覽,其實就是用 WebBrowser Control 去開啟這個檔案,改編碼時用 TextBox 改,再把內容餵給 WebBrowser Control 預覽。

講實在的,iOS 只是包裝好,技術不怎樣,但我也很佩服貧果,一堆人反映缺寄件編碼就是不改,這大概是為了讓其他 App 能夠生存吧。

資訊人員只好自救啦。

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

[WU] 升級 Windows 10 1803 雜記


週四比較閒,早上先下載 Win10 影像檔,打算中飯的時候更新。

到 MSDN Subscription 網站搜尋,Win10 1803 跟 Win10 1709 命名方式又不同,Win10 1709 除企業版外,統合在一片,Win10 1803 則分成消費者版跟商用版。

所以專業版、企業版在商用版內,

企業版下載這張光碟

企業版下載這張光碟

而家用版、專業版則在消費者版內。

家用版下載這張光碟

家用版下載這張光碟

我習慣除了下載下來外,另外先把光碟燒好,以免不時之需。從命名來看,都是升級光碟,不能空機安裝,有沒有燒起來其實還好,不過趕不及午餐前更新,午餐時還在燒光碟,所以吃完午餐午休前開始跑更新,12:30 開始跑,還在 Windows 畫面約跑到 13:30 (87%) 開始重新開機,整個跑完大概到 15:00 ,其他同事都沒我跑的這麼久,可能我有 Hyper-V / VS2015 / VS2017 / MSSQL 2016 等大型軟體吧。

這樣的硬體要跑兩個半小時

這樣的硬體要跑兩個半小時

上次跑 Win10 1709 整個 Hyper-V 網卡都被重置,Win10 1803 也一樣,設定都跑了,停用的網卡也被重新安裝啟用了。

IE 所有 Cookies 都被清除,所以所有網站都得重新登入。

剛開機畫面顯示:

從 Win8 以後就不能沒有它

從 Win8 以後就不能沒有它

重設完成後就正常執行。

另外通知主動告知:

封包監測對開發人員很重要

封包監測對開發人員很重要

到微軟網站還沒看到 Microsoft Network Monitor 3.4 針對 Win10 1803 的更新放出來。

剛開完機 OS CPU / 硬碟 Loading 很重,急著在 Outlook 2016 找信找不到,還重建索引,結果一看 Loading ,近乎滿載,所以剛重新開完機後,關注一下 Loading 是否仍然偏高,偏高時可能會發生部分功能不正常。

重開兩次 Skype 桌面版 7.41 Loading 很高,明日開機後再關注看看。

[05/04 09:17]

Skype 桌面版還沒點開,還在開始工具列上最小化執行時還正常,一點開 CPU Loading 就爆表,如下圖,訊息區出不來,全白,滑鼠一直呈現轉圈圈的狀態,比對工作管理員,SkypeBrowerHost.exe 一下變很多個,CPU Loading 從 6% 衝到 37% 後上下跳躍。

Skype 好忙

Skype 好忙

最後移除 7.41 後,再重新安裝 7.41 就正常了,SkypeBrowerHost.exe 正常運作時,只有兩個。

[05/04 14:30]
設定在 Excel 開啟舊檔下的釘選都被清掉了,可能是帳號重置造成。

[05/04 16:21]

鼎新 Workflow 開啟時可能會發生錯誤,有些正常有些異常,例如如下錯誤畫面:

Workflow 錯誤畫面 1

Workflow 錯誤畫面 1

確定後約過 30 秒再跳另一個畫面:

Workflow 錯誤畫面 2

Workflow 錯誤畫面 2

重新安裝後可恢復正常運作。

[05/04 18:05]

忽然注意到一直在做安全稽核,大概吃掉 12% CPU ,吃了一下午。

安全稽核事件

安全稽核事件

大概 7 分鐘左右寫入事件檢視器 37,065 筆,持續覆蓋舊紀錄,真正要查事件都別查了。看起來是每個帳號輪完一次再繼續,不知道幹嘛,下周上班再查可能問題。

[05/07 10:22]

參考這篇:

Fix WmiPrvSE.exe WMI Provider Host High CPU Usage In Windows 10

https://usefulpcguide.com/18548/wmiprvse-exe-wmi-provider-host-high-cpu-issue/

裡面的步驟有些被阻擋,最後有提到移除不相容軟體,我把 Microsoft Network Monitor 3.4 移除就正常了… 事件檢視器的安全稽核就沒有一直塞 WmiPrvSE.exe 的 4798 事件了。

[05/11 14:21]

升級 1803 後,從 Hyper-V 管理員就無法連線本機伺服器,想先從 systeminfo 檢查起,結果 systeminfo 也無法跑:

systeminfo 不能執行

systeminfo 不能執行

systeminfo /? 可以正常執行,我懷疑是升級過程中某些檔案受損或權限錯誤造成,但是不確定什麼出問題了。

參考這篇來掃瞄檢查系統狀況:

https://support.microsoft.com/zh-tw/help/929833/use-the-system-file-checker-tool-to-repair-missing-or-corrupted-system

系統健康掃描

系統健康掃描

可以正常跑完。

用新增移除元件,把 Hyper-V 移除後,重新開機,再新增元件加回,再重新開機,還是無效。

也參考這篇重新安裝 Hyper-V:

https://docs.microsoft.com/zh-tw/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

也是沒有效果。

整個 1803 升級光碟重新跑一次還是一樣,反而回到一開始狀況,Skype / ERP 等不正常,最後只好 Format 掉 C 碟重灌。

只格式化掉 C 還不能直接重灌,最後整顆清乾淨重灌,清乾淨重灌後,我懷疑應該是當初自動建成 GPT ,所以只砍 C 不行,要把系統保留區也砍掉磁區,然後重新新建磁區讓系統分配,才能保留資料碟。1803 空機重灌預留的保留區約比 1607 大,約為 550 MB 左右~

重灌完後,有一個 .Net framework 2.0 的程式會閃退,參考這篇:

[WU] 關於 .Net framework 2.0 2016/03 的安全性更新

同事發現裝了 Intel® 驅動程式與支援助理後可正常執行:

https://www.intel.com.tw/content/www/tw/zh/support/detect.html

我先裝起來後,並沒有更新任何驅動程式,可將該 .Net framework 2.0 的軟體正常跑後,再移除Intel® 驅動程式與支援助理,避免沒事就掃描驅動程式吃資源,該 .Net framework 2.0 的軟體仍可正常跑。

我自己不太用Intel® 驅動程式與支援助理,因為我沒 Intel 內顯,所以只掃得到無線網卡跟藍芽,AHCI、Chipset 都得自己找,所以乾脆全部自己上 Intel 網站下載更新。

目前我的 Win10 1803 x64 企業版終於正常運作。

[05/14 16:21]

在論壇上有人說 RDP 會閃退,我也碰上了。

我連到 Win7 一直閃退,直接從 Win7 看事件檢視器,有正常登入又被踢,後來連線 Win2008r2 有跳錯誤訊息才知道問題在哪。錯誤訊息為:

發生驗證錯誤。
不支援要求的功能
遠端電腦: xxxx
這可能是因為 CredSSP 加密 Oracle 補救。
如需詳細資訊,請參閱 https://go.microsoft.com/fwlink/?linkid=866660

參考連結:

CVE-2018-0886 的 CredSSP 更新 https://support.microsoft.com/zh-tw/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018

基於安全理由,Windows Update 後不能透過遠端桌面連結到不安全的 Server ,是個雙向的問題,簡單點就把所有的 Windows 都更新到最新,但是我的目標還包含沒更新的 WinXP/2003/2008/7/2008r2 ,所以直接依據上面那篇,把:

HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters
AllowEncryptionOracle=2
(DWORD 32 bits)

或著透過群組原則改也可以:

gpedit.msc 群組原則修改

gpedit.msc 群組原則修改

改完 RDP 就能暢通舊版 Windows 了。

[06/06 14:35]

空機安裝 1803 可能會發生網路芳鄰無法以來賓 (Guest) 身分登入 File Server ,這是 Win10 1709 以後的預設值,空機安裝會碰上,升級則不會碰上,請參考微軟說明:

Guest access in SMB2 disabled by default in Windows 10 Fall Creators Update and Windows Server 2016 version 1709 https://support.microsoft.com/en-us/help/4046019/guest-access-smb2-disabled-by-default-in-windows-10-server-2016

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
“AllowInsecureGuestAuth"=dword:1

預設為 0 ,改設為 1 即可啟用 Guest 存取權限。

 

Categories: 工作點滴 | 標籤: | 3 則迴響

[Hyper-V] Win10 1709 執行 WinXP


公司有些舊的 VB6 程式,考慮到 DLL Hell 下,是放在 WinXP SP2 虛擬機上開發的,沒錯,SP2 ,這樣碰上 DLL Hell 的機率才能降低。

隨著 OS 演進,從 Win7 的 Virtual PC 、轉變到 Win8 的 Hyper-V ,最後到 Win10 的 Hyper-V 。

我在 Win10 1703 還用過這個 WinXP 客體,還用來做這篇的 Hyper-V Loopback 速率 10 Gbps 測試:

[Hyper-V] 在 Visual Studio Emulator For Android 我的虛擬網路設定

升級 Win10 1709 後,這兩天有需求要維護舊的 VB6 程式碼,才啟用 Hyper-V 管理員打算啟用影像檔,這算是升級 1709 後第一次開 Hyper-V。

打開 Hyper-V 管理員,居然找不到這台虛擬機?重新載入虛擬機跳錯,說原先設定檔載入失敗,反正虛擬硬碟都還在,就重新開新的虛擬機拉虛擬硬碟進來,第一次忘了 WinXP SP2 不支援 UEFI,選了第二代模擬機,一直卡在開機說不支援,只好把虛擬機砍掉重練,改用第一代模擬機,之後加入 Microsoft Loopback 虛擬網卡、ReomteFX 3D 虛擬顯卡,從 Win10 1703 遺留下來的 Microsoft Loopback 虛擬網卡加入後顯示錯誤,最後只好把這張虛擬網卡砍掉重建,重新加入虛擬機後,就能正常開機了,重建以後的虛擬機版本顯示為 8.2 ,比 1703 留下一堆 Android 虛擬機 8.0 高兩個小版本。

但是開機後,顯示有些虛擬裝置不支援,就想找出 Win8 Hyper-V 內有的 vmguest.iso 。

找到的大部份資料,是說 Win10 的 Hyper-V 已經不支援 WinXP/Win2003 了…

Hyper-V 整合元件更新 Windows 10 或 Windows 伺服器 2016年為基礎的主機上執行的 Windows 虛擬機器 https://support.microsoft.com/zh-tw/help/3071740/

ㄜ,要不是先前有寫網誌,確定我的虛擬機是在 Win10 1703 下跑,我也比對虛擬硬碟檔案最後存取日期 (我比對備份檔) ,的確是我寫網誌的那天,我都要懷疑我有老年癡呆症了,但是我還真想不起來,Win10 1703 下,我有做啥調整… (我懷疑可能沒加入 RemoteFX 3D 虛擬顯卡?)

過去不須追憶,繼續從網海翻文,找到這篇:

Manage Hyper-V Integration Services https://docs.microsoft.com/zh-tw/windows-server/virtualization/hyper-v/manage/manage-hyper-v-integration-services

看起來只要有虛擬光碟就能解決,這不廢話。

又看到這篇:

FAQ: Windows Server 2016 and Hyper-V Integration Services https://rlevchenko.com/2017/02/18/faq-windows-server-2016-and-hyper-v-integration-services/

說到,只要有 Win2012 R2 裡面的 vmguest.iso 就可以,剛好公司有台 Win2012 R2 ,從裡面抓出 vmguest.iso ,再跟這個網站的 vmguest.iso (vmguest_nov172.zip) 比對,除了網站上為英文的 setup.exe 外,其他檔案日期版本相同,當然以安全來源優先,使用公司的 vmguest.iso 。

安裝 vmguest 中

安裝 vmguest 中

然後就正常更新了…

感嘆微軟總會逼走使用者,打算把這台虛擬機遷移到 VirtualBox :

https://www.virtualbox.org/wiki/Downloads

正好碰上 5.2.8 在 4/17 釋出,Windows 版本尚未準備好:

VirtualBox

VirtualBox

算了,只好下次再搬家,反正現在能用了。

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

[Modbus] 保護主義下的通訊協定設計,造成應用的困擾


某國內上市以羅馬字母為名的科技大廠,以下簡稱 D,2011 新出的太陽能逆變器 (以下簡稱 Inverter) 通訊協定推測是基於保護自家監測系統設計出來。

這不是技能問題,而是故意為之。

並聯型的 Inverter 功能是將太陽能板的直流電轉換為交流電,併入台電電網供電。

在國際規範有相關的規定,跟監測相關的是 1998 編訂的 IEC 61724,在 2017 有更新版釋出,1998 的國際規範要求的不多,就要求要有 EIA-485 及 9600 bps 的支援,監測項目則有交直流電壓、電流、功率、頻率、累積發電量等規定。

由於近年來太陽能產業技術快速發展,又隨時有新產品上線、舊產品停產等變化,而太陽能板保固是 25 年,Inverter 保固 5 年,必然產生 Inverter 需要替換的問題,而 IEC 相關規定只有大方向,因此近年民間超過 100 家太陽能廠商成立協議組織,共同訂定 SunSpec 相關規範,其中就包含 Inverter 通訊協定除使用 Modbus 外,並要求通訊位置列表的一致性。

好比你今天電腦內的硬碟故障,你隨時可以買一顆新硬碟取代,遵守 SunSpec 通訊協定的,你只要設定好 Inverter 參數,就可以正常上線,不會影響到你既有系統的運作。

D 廠牌早期的 Inverter 功率小,通訊雖然使用 Modbus ,但 ID 只能使用 1 ~ 31 ,通訊協定只有 2400 bps ,早期技術欠佳可以理解容忍。

2011/2014 出的新產品,裡面最神奇的地方就是透過通訊協定設計,形成技術障礙,讓大部分設備均無法支援。

一般來說,Modbus 通訊通常只要讀資料,除維護外,不輕易寫入設備。因此大部分的工業設備在設計上,都是透過設定讀取對照表來取得對應數據。

D 廠牌利用一個奇異的邏輯:

在 800 位置分別寫入目前項目 (0, 1, 2, 48, 49)

可在 1055 連續位置分別讀取 (AC1, AC2, AC3, DC1, DC2) 的目前項目、電壓、電流、功率、頻率 等資訊。

沒錯,要寫入、讀取、判讀目前項目、計算平均、累加。

這對自己有能力開發軟體的系統商其實不難,但是會破壞原先通用架構的邏輯,我的作法是加入動態原始碼支援方式處理。

VB6 版本的透過 Script Control ,載入我加密過後的 VBScript (可選擇使用 javascript)

VBNET 版本則是透過動態編譯方式處理。(我網站上有動態編譯原始碼)

但沒能力開發的系統商,既有系統或工業設備無力支援這個複雜的邏輯,就變成必須購買 D 廠牌提供的監控套件,買了後還不知道該怎樣整合。

D 廠牌不是沒能力處理通訊協定,以下情況可以說明之:

  1. 舊版 2400 bps 的通訊對照表正常。
  2. 2013 D 廠牌替斯奈德 OEM 的 Inverter 通訊對照表正常,硬體相同,只有差韌體。
  3. 2017 版的韌體支援 SunSpec ,但只對國外銷售,內銷想買還不出貨,只能買到奇怪通訊協定的版本。
  4. D 廠牌有其他工業設備、UPS 都屬正常通訊對照表。

早先國內太陽能案場多數 500 kWp 以下,2017 起,逐漸邁向 2 MWp 以下為大宗,當規模增加後,自然設備就會分散布置,485 雖然有很多方式分散式讀取,但穩定度畢竟不如光纖網路,因此分散式的環境下,我會使用 Modbus TCP Gateway 來將網路訊號轉換成 Modbus RTU 。

這裡面又發生了很瞎的狀況。

Modbus RTU 就像教室裡面只能有一個老師 (Master),老師上課的時候就會喊 3 號 (Slave),你來唸下面這段課文,3 號就會開始唸。但教室裡面不能同時有兩個老師,或是說兩個老師不能同時發命令。

Modbus TCP 就像是多個教務組員隨時透過電話 (Gateway) 打給老師詢問學生狀況,老師如果知道可以立即回覆,老師不知道可以問學生,老師要不要問學生就決定快取 (Cache) 時間有多長。

由於 D 廠牌設計很瞎的通訊協定造成 AC1/AC2/AC3/DC1/DC2 都在同一位置,因此在快取情形下,就可能發生問 DC1 時,還在回應 AC1 。

大部分 Cache 是全自動不可設定,還好我使用泓格的有調整 Read Cache 毫秒數,預設為 980ms ,0 ms 為停用,我改設定為 0 ms ,整個系統就能正常運作,當然,基本上就變成把 Modbus TCP 當 Modbus RTU 在用了。

謠傳,下半年或明年起,國內各太陽能案場需使用國產的 Inverter ,我對於保護主義尚能接受,但我只有一個要求,你他媽的至少要支援 SunSpec 這類國際規範,不接受胡搞瞎搞的廠牌。

註:

VB6 呼叫 VBScript 可參閱下面兩篇:

  1. [VBScript] VB6 Variant 變數傳遞給 VBScript 的相容檢討
  2. [VBScript] 傳遞陣列到 VB6 的物件

動態編譯可參考:[VB2005] 程式碼動態編譯執行引擎(模擬 Script Control)

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

[Stat] 數值 常態分佈累積機率函數 比較


最近開始整理水文統計網頁,打算重新用 ASP.NET 再寫一遍。 (關於 水文統計 – 線上分析 網頁)
最早的程式碼使用 Quick Basic 4.5 開發,是大四上 (1993) 修水文統計時開始寫的,當時以周文德[1]水文學原文為主。
念博一前半年 (2000) 的時候改寫成 ASP,採用 VBScript,那時工作要做動態網頁,所以當練功將大四的程式碼拿來改。

開始改寫時,想說精益求精,就開始把相關數值模型重新 research 。

參考維基百科[2] 的內容,原來數值模型還有好幾種,興起比較的意圖。

先用原先周文德水文學的方程式係數找到原作者跟年分[3],分別把方程式使用 Excel 2013 VBA 寫成函數比較,另外加入 Excel 內建的 Excel NORM.S.DIST 函數一起比較,如下表:

標準差 1 2 3 4 5 6
Wiki 表 0.8413447460685000 0.9772498680520000 0.9986501019685000 0.9999683287580000 0.9999997133485000 0.9999999990135000
Excel NORM.S.DIST 0.8413447460685430 0.9772498680518210 0.9986501019683700 0.9999683287581670 0.9999997133484280 0.9999999990134120
Abramowitz and Stegun, 1965
周文德水文學
0.8411238352705170 0.9774369986442540 0.9984208362961290 0.9999107486493130 0.9999941679910000 0.9999995054414810
Zelen and Severo, 1964 0.8413447404219760 0.9772499379836130 0.9986500327776380 0.9999683139654060 0.9999997128950000 0.9999999990098780
Hart, 1968 0.8413447460685430 0.9772498680518210 0.9986501019683700 0.9999683287581670 0.9999997133484280 0.9999999990134120
Marsaglia, 2004 0.8413447461005850 0.9772498680966180 0.9986500987983220 0.9999401630918050 0.9935899936665050 0.8832228594191580

由於不知道正確數值該多少,所以從維基百科[2]的表格做為比對依據,網頁上的數值位數有限,拿來跟 Excel 函數比對,假定 Excel 函數是正確的。

Marsaglia 使用泰勒級數展開,初步測試,17 項以上,小數點就沒有太大的變化,所以使用 20 項,2*20+1 = 41 ,x 的最高次方項為 x^41 。做到泰勒級數展開式時,不得不回來幹繳 VBA 7.1 LongLong 的識別字元是 ^ ,搞得我級數函數一值錯…

[VBA] LongLong 超長整數

Hart 則直接參考 West 2009 年的論文[4],裡面直接用 VB6 寫,剪來貼就可以了,West 說他把原始的 Fortran 函數轉成 VB 函數,果然我以前 Fortran 沒白學,以前的學者都用 Fortran 。

從比較表來看,以前水文統計使用周文德的累積機率函數誤差有點大,Zelen 的誤差都小於該函數,而 Hart 跟 Excel 結果完全一致,該不會 Excel 也用此函數來近似吧?

而 Marsaglia 使用泰勒級數展開,照理說泰勒級數展開應該要更準,不知道是寫錯還是其他問題,我懷疑也有可能是數值精度誤差問題,因為 x ^ 41 已經非常小,算完再去做除數,感覺誤差就被放大了。

所以我決定新版的水文統計在常態分佈累積機率函數就使用 Hart 了。(皮卡丘就是你了)

寫在這也希望給水利海洋相關從業人員參考,找個新函數比周文德的教科書更逼近,好吧,這是資訊從業人員的一種病。

1. https://zh.wikipedia.org/wiki/%E5%91%A8%E6%96%87%E5%BE%B7
2. https://en.wikipedia.org/wiki/Normal_distribution#Numerical_approximations_for_the_normal_CDF
3. https://books.google.com.tw/books?id=V1pHDwAAQBAJ&pg=PT523&lpg=PT523
4. https://s2.smu.edu/~aleskovs/emis/sqc2/accuratecumnorm.pdf

銀河的歷史,又翻過一頁~ 今年要重畫了,好期待~~~

Categories: 技術分享, 決策支援系統 | 標籤: | 發表留言

[Word] Mathematics 4.0


話說,前一篇 Mathematics 為 2.0 ,可直接嵌入到 Word 2010 內:

[Word]有趣的數學計算器增益集 – 方程式的擴充功能

上一篇 Mathematics 為 2013 ,直接嵌入到 Word 2013 。

[Word] Mathematics 增益集 2013

但是我一開始安裝的是 Mathematics 4.0

下載位置:https://www.microsoft.com/zh-tw/download/details.aspx?id=15702

我以為會像 2.0 一樣,直接嵌入到 Word 2013 ,但是沒有,找了一下,才知道,Word 2013 改版要用增益集。

比了一下,Mathematics 4.0 使用 .Net framework 3.5 ,Mathematics 2013 則使用 .Net framework 4.0 ,當然從微軟下載中心說明可以看出,Mathematics 2013 比較新,但 Mathematics 4.0 多了一個好處,是可以獨立執行,更有彈性。

Mathematics 4.0 安裝好,會在開始工具列上出現 (老樣子,我使用 Classic Shell 比 Win8 以後動態磚好用多了)

開始工具列

開始工具列

點開執行後,有獨立的 Logo 畫面

Logo

Logo

拿昨天的方程式來測試

輸入方程式

輸入方程式

 

繪圖輸出

繪圖輸出

 

切換到工作表可看到完整的指令,若要直接輸出,可直接使用指令。不過我認為應該不會直接使用指令,這應該是給 Automation 用的指令。

指令語法

指令語法

最好的是,連結到中文說明書。

線上手冊

線上手冊

稍微翻了一下中文說明書,可以解方程式,還有其他功能,測試看看解方程式,再拿女兒作業來翻。

圖解方程式可直接看到兩直線方程式相交點為解答。

圖解方程式

圖解方程式

改用解析解方程式。先從下拉式選單選擇方程式數量,之後輸入方程式後按下 [求解]。

輸入方程式

輸入方程式

直接可以得到解答,另外可以看到有三種求解方法。

求得解答

求得解答

拉下一個求解方式看看。

超詳細的求解過程

超詳細的求解過程

超詳細… 那身為爸爸,以後還有作用嗎?或說老師還有作用嗎?好吧,當作輔助教學來說完全夠用了,女兒完全不用我教了,通通丟給電腦吧。

 

Categories: 電腦和網際網路, Office | 標籤: | 發表留言

[Word] Mathematics 增益集 2013


女兒在做考古題,忽然跑來找我借 iPad Mini ,要用以前玩的方程式立體圖看她無法會意的題目 (我跟她說明 3D 退化為 2D),沒想到該 App 已經轉為付費版,輸入方程式就跳出要升級才能使用。

忽然想到,以前玩過微軟免費的類似功能:

[Word]有趣的數學計算器增益集 – 方程式的擴充功能

試了一下,2.0/4.0 均不能在 Word 2013 出現增益集,不過倒是在相關下載找到 (作圖的時候只找到英文版):

https://www.microsoft.com/zh-tw/download/details.aspx?id=36777

那就來安裝吧,安裝畫面就只截幾個來瞧…

開始安裝

開始安裝

 

預設目錄

預設目錄

 

安裝完成

安裝完成

 

自動呼叫 DirectX 安裝

自動呼叫 DirectX 安裝

 

安裝完成

安裝完成

安裝完成

參考先前那篇,可以知道,要畫圖的話就在 Word 內先輸入方程式,輸入完成後,先選取方程式再從上方 [Mathematics] 選擇繪圖功能 [Plot in 3D]

選擇方程式插入繪圖

選擇方程式插入繪圖

拖動滑鼠檢視 3D 視覺圖,小朋友習慣標準的 XY 座標,調整角度一下。

調整檢視角度

調整檢視角度

按下插入 [Insert] 就可以加到 Word 內。若需要再做進一步解題,可選擇解方程式。

選擇解方程式

選擇解方程式

不過這題因為短少一條方程式,只能解出參數式。

無限多組解

無限多組解

有空試試看能不能在 Word 2016 下用。

 

Categories: Office | 標籤: | 1 則迴響

關於 水文統計 – 線上分析 網頁


說實在的,我自己沒在用,所以從當練功在 2002 年寫好後,基本上沒啥改。

而我自己在 2005 就算是離開水利界了,有興趣的可以在這個網誌上翻到過去發生的事,所以,要不是有人問我不見一事,其實我根本忘了這個網頁。哈~~~

昨天收到有人透過 FB Messenger / 網誌線上留言給我,還說願意付費買,才知道還有人用。

先說找不到的狀況吧。

免費網域 twbbs.org 歷經 18 年終於停止服務,所以我另外申請新的免費網域,所以原先所有 tlcheng.twbbs.org 的全部改為 www.tlcheng.tk

水文統計線上分析的網址就變為:
http://www.tlcheng.tk/Tools/stat/Stat.asp

其次,這個網頁是在 2002 年寫的,那個年代只有 IE5 ,到現在都過了 16 年了,所以對新版相容度不夠,所以請改用桌面版的 IE 來瀏覽,最新版本的 IE11@Win7/8/8.1/10 仍然可以使用,但動態磚版本的 IE/Edge 或是 HTML5 瀏覽器 Chrome/FireFox 等就不能用。

因為早先這個網頁是基於推廣 VB 而採用 VBScript 寫的。

下面畫面是使用 IE11@Win2012r2 跑的。

使用 IE11 瀏覽水文統計線上分析網頁

使用 IE11 瀏覽水文統計線上分析網頁

我在這個網頁有加模擬 IE6 ,因此使用 IE 瀏覽時,不要在框架下用,直接瀏覽這個位置,才會啟用模擬功能,否則新版 IE11 會因為預設禁用 VBScript 而不能正常執行。

回歸曲線圖

回歸曲線圖

既然仍有人用,我今年會抽點時間改用 ASP.NET + JavaScript 改寫新版,這樣就能用 Chrome 開,自然也可以用行動裝置開了。

如果有建議可以在下面留言,我規畫時一併納入,如果希望加入不同機率分布函數,公式要需求的人提供,我沒時間做文獻回顧,所以有功能需求的請把資料整理給我。

其實我不太滿意當時的作法,不過一時之間也沒其他想法,可能就直接重寫,不動架構吧。

Categories: 嗜好, 決策支援系統 | 標籤: | 4 則迴響

[OWC] Group 的迷思


在先前的範例中:

[OWC] 雙 Y 軸的小範例

介紹了如何將數列解開群組後,重新群組在副 Y 軸。大部分在副 Y 軸不會有太多線,所以一直沒超過兩條線。

這次同事參照了這個範例,想要在副 Y 軸畫多條線,才發現 Group 不是我想像的。

我做了一個簡單的範例,資料內容為:

[Data]
Items=1,2,3
Z=6,9,3
A=20,40,60
B=10,30,50
C=30,60,90

A/B/C 是我要畫在副 Y 軸的。

例如以 A 為主時,我一直以為應該是 A.Group B ,A.Group C ,這次我發現中國人跟西方人真的腦袋不一樣…

測試結果,結論是 B.Group A,C.Group A ,主體是被 Group 的。

測試繪圖結果:

將三條線 Group 轉移到副 Y 軸

將三條線 Group 轉移到副 Y 軸

繪圖程式碼:

With nowChart

ReDim arrSeries(.SeriesCollection.Count – 1) : For i = 0 To .SeriesCollection.Count – 1 : Set arrSeries(i) = .SeriesCollection(i) : Next
idxLine = Array(1, 2, 3)
For i = 0 To UBound(idxLine) : arrSeries(idxLine(i)).Ungroup True : arrSeries(idxLine(i)).Type = chConst.chChartTypeLine : Next
For i = 1 To 2 : arrSeries(idxLine(i)).Group arrSeries(idxLine(0)) : Next
Set SumAxis = .Axes.Add(arrSeries(idxLine(0)).Scalings(chConst.chDimValues))

End With

注意迴圈內的 UnGroup / Group 位置,最後再參照 A 建立副 Y 軸。

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

[IE] IE11 包含新聞的「新索引標籤」


不知道這個功能內建多久。

今天用 IE 11 用到一半,點開新索引標籤,發現畫面變了,剛好舊畫面還可以返回前頁,可以比對新舊兩畫面的差異:

兩個新索引標籤畫面比較

兩個新索引標籤畫面比較

我習慣舊畫面了,這畫面超不習慣。

測試了在網址列輸入:about:Tabs

可以回到舊的畫面。

在網址列輸入:新索引標籤

則顯示新的畫面。

經過測試後,這個畫面會導向:

https://www.msn.com/spartan/ientp?locale=zh-TW&market=TW&enableregulatorypsm=0&NTLogo=1&IsFRE=0

把這網址前半段丟到 regedit 搜尋,也是沒結果。google 一下,還看到一篇推論為木馬…

最後在 IE 設定中找到:[網際網路選項] > [索引標籤]

網際網路選項

網際網路選項

 

從下拉式選單選擇 [新的索引標籤頁] ,就可以恢復舊的預設畫面。

新的索引標籤頁

新的索引標籤頁

當然,從下拉式選單選擇 [含有新聞摘要的新索引標籤頁面] ,就會顯示 MSN 的索引畫面。

我發現 [含有新聞摘要的新索引標籤頁面] 這邊會自動登入 Microsoft 帳號,而且會自動紀錄搜尋結果,因此我想應該是透過 MSN 連動後,讓你在不同電腦也能有相同的 [新索引標籤] 頁,包含同步到 Edge 去。

我還是習慣舊的,所以,我又切回來了。

Categories: 電腦和網際網路 | 標籤: | 發表留言

[Spam] 近日大量偽造 HiNet 官方通知的惡意郵件,請小心別執行


如圖,先前就收過類似郵件:

偽造 HiNet 通知信

偽造 HiNet 通知信

為了網友搜尋檢討方便,特別把內容剪貼如下:



敬啟者@msa.hinet.net,您好: 本公司接獲客戶檢舉收到@msa.hinet.net異常發送信件;經由系統查測,該信件是由您的電子郵件信箱帳號@msa.hinet.net於2017/13/11使用HiNet網頁郵件系統所發送,煩請儘速檢查您的電子郵件信箱帳號是否遭人盜用及您的電腦設備是否有資安漏洞。 若您在觀察期2017/13/11內未能回覆改善情形(請以email回覆客服信箱info@ms1.hinet.net 或是 致電客服0800-080-412;改善措施可參考信件下方的建議),依據「HiNet 郵件信箱服務使用規則」,為了保障網路環境之安全與維護消費者權益,我們將停止使用HiNet網頁郵件系統;造成您的不便,深感抱歉。 謝謝。 祝您 身體健康 萬事如意 中華電信數據通信分公司 敬上 客服專線: 0800-080-412
--- 本郵件來自HiNet WebMail ---


內容大部分是中華電信通知惡意郵件的過程,但是最重要的是附件與收件者不正確。

附件不應該有任何執行檔存在裡面,由於大部分軟體都會擋執行檔,所以他把執行檔藏在壓縮檔內。

上次收到信就直接電洽中華電信客服,對方直接就回說這是惡意郵件,不要點,直接刪除,看樣子中華電信也是被煩得要死。

如果你收到類似的郵件,裡面有壓縮檔藏執行檔,不管是甚麼郵件,基本上都是假的。不要執行。

 

Categories: 電腦和網際網路 | 標籤: | 發表留言

[SQL] SQL Server 2017 安裝體驗


十月初,接到財會要買一套報表系統,需要 ASP.NET + MS SQL,由於財會人數少,加上會計師也沒超過 10 個,每期報表約增加 2 MB 資料庫容量。
本來我是規劃用工業電腦 Windows Embedded Standard (W7E) + SQL Server 2014 Express 的,W7E 的 Web client 測過可以到 1000 條,MSSQL Express 可以到 10 GB,充分滿足需求,但是廠商沒試過 W7E + MSSQL Express,只有安裝在 Windows Server 上的經驗,所以最後從最小需求著手。

反正不是性能很大需求,所以我選了 ASUS RS300-E9-PS4 1U 機架伺服器。
https://www.asus.com/tw/Commercial-Servers-Workstations/RS300-E9-PS4/

IBM Server 被聯想買走,2015/12 人大要求 Server 一定要開後門,所以直接刷掉。
HP Server 上次打客服問一個說明書沒寫到的面板燈號意義,客服問兩句直接掛我電話,我惹不起 HP 難道躲不起?刷掉。
DELL Server 先前因為網站標錯價,直接結束台灣分公司來閃照價出貨,現在是代理商在進口,我實在很懷疑維護品質。刷掉。
最後也只剩華碩能選。

當然這個月要買的下一台 2U 那台會考慮 HP/DELL ,華碩也有華碩的好處,叫修快…
所以這台就用華碩的,不過討厭華碩 Server 硬碟抽取盒政策就是了。

由於使用人數少,就直接選擇 Windows Server 2012r2 Foundation ,這只要 7000 左右,限制 15 users ,不用買 CAL ,剛好可以給財會少少的人數使用。

SQL Server 則直接託經銷商買一個最新版 Standard 版掛到公司的大量授權帳號。

ASUS Server 附的是還原光碟,所以 RAID1 設定好後,直接倒入硬碟,就擺著等 SQL Server 到貨。

收到經銷商的註冊完畢通知信傻了一會,居然是 SQL Server 2017 ,我記得先前看到 MVP 跟 Microsoft 的資訊不是還是 RC2 嗎?搜尋了一下,原來 10 月上市,所以我們直接是最新版,上大量授權網站下載光碟開始安裝。

MSSQL 2017 光碟放入 Server 後,才想起來,ASP.NET 、.Net framework 等都還沒裝,就從伺服器管理員去新增元件跟角色,沒想到被踢掉,因為從光碟機讀不到 Windows 來源可以安裝,把光碟退出來反而就會從還原的快取路徑安裝,這華碩封裝的有問題啊…

元件、角色新增完後,一跑 MSSQL 安裝檢查,就被通知沒有 Windows Update ,不能安裝,只好開始跑安全性更新…

MSSQL 2017 Setup

MSSQL 2017 Setup

跑了一天終於開始安裝了,反正不是我要用,懶得細看項目,直接勾全選安裝,然後通知我得裝 Java Runtime Environment (JRE) …
http://www.oracle.com/technetwork/java/javase/downloads/index.html

依照連結去裝完最新版的 JRE 9.0.1.0 ,還是不能跑:

JRE 9.0.1.0 已安裝完成

JRE 9.0.1.0 已安裝完成

拜讀 google 大神:
Sql Server 2016 : Oracle JRE 7 Update 51 (64-bit) or higher is required for Polybase
https://sqltimes.wordpress.com/2017/04/08/sql-server-2016-oracle-jre-7-update-51-64-bit-or-higher-is-required-for-polybase/
這篇說裝了就能跑,沒用。

SQL Server (v2016) – Installation – Blocked – “Oracle JRE 7 Update 51 (64-bit) or higher is required for Polybase”
https://learningintheopen.org/2017/07/12/sql-server-v2016-installation-blocked-oracle-jre-7-update-51-64-bit-or-higher-is-required-for-polybase/
這篇有講到要裝 Server JRE ,但沒講清楚步驟,沒試成功。

SQL SERVER – 2016 FIX: Install – Rule “Oracle JRE 7 Update 51 (64-bit) or higher is required” failed
https://blog.sqlauthority.com/2015/07/08/sql-server-2016-fix-install-rule-oracle-jre-7-update-51-64-bit-or-higher-is-required-failed/
這篇把 polybase 查詢功能移除,可以安裝,想想反正不是我用,就先移除再說。

移除 Polybase 服務

移除 Polybase 服務

之後就很順利地裝到好,裝完要檢查時,才發現同事從大量授權網站抓下來的沒有 SSMS … 但是安裝光碟會自動導向微軟網站讓你抓最新的 SSMS 17.3:

下載 SQL Server Management Studio (SSMS)
https://docs.microsoft.com/zh-tw/sql/ssms/download-sql-server-management-studio-ssms

安裝好 SSMS 後,要登入 MSSQLSERVER 個體檢查時,發現不能登入:

SSMS 預設捷徑不能登入

SSMS 預設捷徑不能登入

我很確定我安裝 SQL Server 時,是將 Administrators 群組加進去,考慮到 Win2012r2 是 Win8 以後的 OS 會強制降階 User ,重新點連結,選擇以系統管理員身分執行,就可以正常開啟了,從圖上可看到 BUILTIN\Administrators 是加進去的:

SSMS 以系統管理員身分才能登入

SSMS 以系統管理員身分才能登入

測試關閉 UAC 也是沒用,乾脆改捷徑預設使用 Administrators 開啟。

關閉 UAC 沒用

關閉 UAC 沒用

基本上算是結束了。

不過 Win2012r2 Foundation 這時又出一個包,跳出了這個訊息:

EULA 超過 15 users

EULA 超過 15 users

查了一下,原來是我裝 SQL Server 時,全選,裡面 R Scripts 自動註冊了 21 個 users … 只好砍到剩五個。

R scripts 增加了 21 users

R scripts 增加了 21 users

弄完就回報財會通知廠商接手了。

Categories: 電腦和網際網路, 工作點滴 | 標籤: | 1 則迴響

[WU] 升級 Windows 10 1709 雜記


如果不想等自動推送,可以從此處下載:
https://www.microsoft.com/zh-tw/software-download/windows10

今天測試升級了企業版跟家用版。

除了企業版外,其他 Windows 10 的版本都可以從上述位置下載更新,但今天下載四次都有問題,有可能是網路快取就有問題,也有可能是微軟網站有問題,最後從 MSDN 下載的才能正常安裝。

企業版也只能從 MSDN 或大量授權網站下載新版。

MSDN 下載 DVD 的影像檔,在 Win10 掛載後即可安裝。

首先是紫色底色的畫面,這個畫面主要是拷貝檔案,可同時上網,依照硬碟速度,大概耗時 1 ~ 2 小時,完成後會直接重新開機,所有動作中的視窗會被直接關閉。

重新開機後是淺藍底色的畫面,這個畫面就是正式升級,此時啥事都沒得做,就是等,大概耗時 1 ~ 2 小時。我兩次的經驗各耗時 2.5 小時左右。

再次重開時,會重新初始化 Windows,會有一堆歡迎詞 ,你只能慢慢看,歡迎詞結束後,硬碟 loading 仍然很大,可能造成帳號無法登入,不用考慮修復,我直接從登入畫面選重新開機。

重新開機後帳號就可以正常登入,觀看程式和功能,會發現一堆程式的安裝日期變成今天。

第二次重新開機後,硬碟 loading 仍然很大,我等跑差不多後,再次重新開機後才恢復平時的負載。

碰上幾個問題:

  1. Skype 桌面版會一直閃爍,無法輸入訊息,從工作管理員會看到約自動產生 1x 個 SkypeBrowserHost.exe 持續開開關關,重新開機沒有用,把 Skype 全部砍掉也沒用,Skype 動態磚版沒事,只能移除 Skype 桌面版再安裝。移除後重新安裝會導致釘選在開始工具列上的結果不正常,關閉 Skype 並移除釘選後,重新開機就正常了。
  2. 原先我有跑其他 VM ,所以開機有 Without Hyper-V 兩個選項,bcdedit 編輯的兩個開機選單被移除,得重建。
  3. 我預設 NB 平常會停用其他網卡,包含虛擬網卡,只啟用無線網卡,安裝完以後,乙太網路、藍芽網路都被啟用,但可以停用,而 Hyper-V 更新後強制內建一個預設網路強制啟用,停用後重新開機變兩個,有點不習慣。
  4. 一堆預設軟體被改回 Windows 內建,比如說 Adobe Reader DC、Outlook、看圖軟體、Media Player 、網頁瀏覽器等,建議先跑一次預設程式,手動設定完常用軟體後,再進行正常操作,不正常的軟體建議移除重灌。
  5. Classic Shell 會需要重設,點選畫面上的對話盒即可。
  6. 系統列 (systray) 的網路圖示 > 滑鼠右鍵 > 開啟網路和共用中心 會變成動態磚版本,我喜歡視窗版本只得從 Classic Shell 那邊進去。
  7. 系統列 多了一個 聯絡人 在 動態圖示 左側,有點不習慣。

其它:

我覺得桌面 125% 的字型有變清晰,但不知道是不是錯覺,大家覺得呢?

Categories: 工作點滴, 更新與回報 | 發表留言

[RouterOS] 阻擋外對內的 DNS 遞迴查詢攻擊


先前這篇:
[RouterOS] 上傳流量爆頻寬

會阻擋所有的 DNS 查詢,相對代表另一件事,區域網路無法透過 Router 查詢 DNS ,只能設廣域網路的 DNS ,由於內部系統習慣使用 Router 作為 DNS Server ,便於外部網路的變化,不影響內部網路設定,因此得改防火牆配合。

建好的規則如下圖,在防火牆的過濾規則中設定,將來自於外網的 DNS 的查詢全數拋棄:

將來自於外網的 DNS 的查詢全數拋棄

將來自於外網的 DNS 的查詢全數拋棄

來分別看看此兩規則的設定值,其中 pppoe-HiNet 為外網的名稱,這邊是使用 ADSL 上網,使用 WAN 也可藉此修改:

DNS TCP General

DNS TCP General

DNS TCP Action

DNS TCP Action

DNS UDP General

DNS UDP General

DNS UDP Action

DNS UDP Action

最後,若需如清單畫面中,分群,在清單中按下滑鼠右鍵,在彈跳選單中選擇 [Comment] ,輸入分群名稱即可:

DNS Query TCP Comment

DNS Query TCP Comment

DNS Query UDP Comment

DNS Query UDP Comment

設定完成後,就可以允許 DNS 查詢了。

DNS Settings

DNS Settings

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

在WordPress.com寫網誌.

%d 位部落客按了讚: