2019/04/18

npm start giving error in REACT

REACT 專案建了幾個後,在切換專案進行 npm start 啟動 Web 時,不定時會遭遇啟動失敗的情形。

而看 LOG 幫助實在很少,最後採用的作法如下:

  1. 刪除專案中的 node_modules 目錄
  2. 在該目錄下重新執行 npm install
  3. 執行 npm / yarn start 即可順利執行

See also:

2019/03/27

What is Encryption in Delphi? (1)

記得之前和網友討論到 Delphi 官方沒有加密單元時,總覺得很不可思議,因為 DataSnap 有這個加密 Filter:

TTransportFilterItem.FilterId: PC1 / RSA
既然有加密設定,想必加密法肯定暗藏在 Source 裡的某個角落。

2019/03/20

Howto: create-react-app

在重新安裝 create-react-app 發生拒絕存取的訊息:



使用:
sudo chown -R $USER:$USER '/home/[USER_NAME]/.npm/'

即可解決這個問題。

create-react-app 屬於模板套件,必須先使用 npm 進行安裝。

完成後才使用它來建立新的專案。

例如:
create-react-app my-app

See also:

2019/03/19

Howto: Install NodeJS in Linux mint

Step 1 – Configure Node.js PPA
  • sudo apt-get install curl python-software-properties
  • curl -sL https://deb.nodesource.com/setup_11.x | sudo bash -

Step 2 – Install Node.js on Linux Mint
  • sudo apt-get install nodejs

Step 3 – Install Yarn using NPM
  • sudo npm install yarn -g

Step 4 – Check Node.js Version
  • node -v (11.12.0)
  • npm -v (6.7.0)
  • yarn -v (1.13.0)


See also:

2019/03/16

Solution: Socket Error 10054 in DataSnap

Bug 保護色做得太真,導致找不到它
(示意圖/翻攝自Pixabay)

使用 SQLConnection 連接 DataSnap 的開發者都知道這是一種長連接的作法。

但這個作法有個缺點,就是如果 Client 發生瞬斷情形,在獲取資料會觸發以下例外:

  • EIdSocketError 10054 : Connection reset by peer.
  • EOleException: Connection Closed Gracefully.

在網路上看到解決方式是:
設置心跳包,每分鐘進行連線一次。

這個方式可以確保連線不會被默默切斷,只是這方式卻不能避免網路異常所導致的斷線情形。

再加上異常補獲的方式就更好了。

以下便是我的範例解法:

2019/01/30

Test DevExtreme DataGrid data binding

DataGrid 是 DevExtreme 主打的元件之一,把 PHP 環境架設好之後,就拿了官方範例來使用。
範例都很佛的放在 Github 供人下載

範例 JS 的這段程式碼讓我覺得非常奇怪:
    var url = "php/service.php";
    var db = DevExpress.data.AspNet.createStore({
        key: "ID",
        loadUrl: url,
        insertUrl: url,
        updateUrl: url,
        deleteUrl: url
    });
後端使用了 PHP,卻在前端使用 AspNet 建構式。

除了 DevExtreme 主程式外,還需要額外下載 ASP.NET 外掛程式 (JavaScript)

再看看 PHP 是怎麼寫的:

2019/01/28

WebBroker and Unicode


以下的內容在 Delphi 10.2 (含)以上版本已經解決,新版使用者可以略過不看。

===========================================

TWebRequest 遇到 Unicode

出來江湖混,該還的還是要還。

前端寫久了,還是遇到了 Unicode 解析問題。

以 HTTP Method GET 為例:
http://{local}/action?id=許功蓋堃

已知:
Delphi 2009 以上的 string = UTF-16 格式。

而取得的內容是這樣的:

看到這個心都涼了半截

仔細攻略了 IdHTTPWebBrokerBridge 和 HTTPApp 兩個單元後,才發現裡頭大部份的函式及屬性都是 AnsiString 而非 String 基礎類別。

而 IdHTTPWebBrokerBridge 單元主要只應用在 HTTP Server 上,搬上 IIS 後就和它無關,所以可以直接忽略這個單元不看,雖然我也是看了它很久很久才驚覺這個答案。(眼神死)


接著再把注意力轉到 HTTPApp 單元,最關鍵的就在這句話:
一律使用 AnsiString,Unicode 都不 Unicode 了

ExtractHeaderFields 這個函式遇到要解析的內容僅僅只做了百分比符號轉換,還少做了一道Unicode / UTF-8 (UTF8) 編碼轉換的工作。

於是我們的 Unicode 文字就被轉成亂碼直出了。

現在,到底是該 Debug HTTPApp 還是有其它 3rd party 的解法呢?