知識分享

今天檢查更新的時候,出現了以下錯誤:

GPG error: https://packages.sury.org/php stretch InRelease: The following signatures were invalid...
E: The repository 'https://packages.sury.org/php stretch InRelease' is not signed.
...

 

問題發生原因在於 DPA 有新的 signing key 了,所以只要更新就可以了

  1. 先移除舊的
    sudo rm /etc/apt/trusted.gpg.d/php.gpg
  2. 接著下載新的
    sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

這時候再執行 suto apt update 就可以正常更新了

 

更多

近期因為 1909 更新週期到期,所以更新為 20H2 之後,突然就多了一個幽靈輸入法 - 「中文 (繁體) - 新自然」,且找不到移除的地方
多出來就算了,切換成該輸入法還只能輸入英文...
變成切換輸入法( win key + spapce )的時候,每次都要多按一次才能切換到正確的,很是困擾...

研究了一下,研判是早期由 自然輸入法V10 升級 V11 之後,有些遺留下來的登錄檔造成了問題

這邊記錄一下解決方式:

  1. 先把輸入法切換到 微軟新注音
  2. 移除自然輸入法V11
  3. 執行 regedit (win key + R 之後輸入 regedit)
  4. 使用搜尋功能(Ctrl + F) 搜尋 going10
    應該會在 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CTF\TIP\{機碼a}\LanguageProfile] 底下找到
  5. 複製上個步驟找到的 機碼a ,然後把 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
更多

PSR-0

  1. 完整的命名空間 fully-qualified namespace 與 類別 class 必須符合以下結構:
    \<vendor name>\(<namespace\>)*<class name>
  2. 每個命名空間 namespace 必須包含一個 頂級 top-level 的 namespace (vendor name)
  3. 每個命名空間 namecspace 可以擁有任意數量的 子命名空間 sub-namcespaces
  4. 載入檔案時,每個命名空間的分隔符號 separator 必須轉化成 目錄分隔符號
  5. 每個在類別名稱中的下畫線符號 "_" 都要轉化為 目錄分隔符號。該符號在命名空間裡沒有任何特別的用處。
  6. 載入時,完整的命名空間與類別 為
更多

使用CSS時,因為 CSS 為 "層疊" 的,也就是同一個元素可以利用利用不同的 selector 規則,把樣式疊加上去,但當不同的規則間有衝突時,例如 a.title{color:#000;} 與 a{color:#333;} 兩個規則都設定了color的樣式,這時就要考慮權重來決定最後要以哪個規則來呈現 color 這個發生衝突的樣式 。

權重如下:

規則 權重 範例
行內樣式 1000  <a style="...">
id 100  #title
attribute / class / pseudo-class  10
更多

http_variables

變數名稱 說明
$args Request 的參數
也就是網址中 問號 ? 後面的所有參數。
如: example.info?p1=1&p2=2
則 $args = "p1=1&p2=2"
$binary_remote_addr  
$body_bytes_sent  
$content_length  
$content_type Request Headers 中的 "Content-Type"
更多

步驟如下

1.  開啟 VS Code,然後按 `Ctr`l +  `,`
2.  搜尋 settings.json
3.  點擊 "在 settings.json 內編輯",會開啟settings.json 的 頁籤
4.  增加或修改以下內容,其中 CMDER_ROOT 是 windows 的 環境變數,要先設定為 cmder 的安裝目錄

    "terminal.integrated.shell.windows": "cmd.exe",
    "terminal.integrated.env.windows": {"CMDER_ROOT": "[cmder_root]"},
    "terminal.integrated.shellArgs.windows": [
        "/k", "[cmder_root]\\vendor\\init.bat"
    ]

5.  重啟VS Code 

更多

Configuration API 提供了一個中心地帶,用來儲存模組的組態資料 (configuration data)。簡單組態的如 "網站名稱" , 複雜點的則如 "views" 或 "content type" 等設定。

組態所儲存的資料,可以用在開發站 synchronize 到正式站的。通常是那些在建站階段會修改,但正式站不太會有機會變動的。
如果是要儲存 local變數這種不需要被轉移的資料,則應該使用 State API。

更多
interface abstract trait
  1. 規範子類/子介面一定要具備某些東西,包含變數與function
  2. 可以被多重 繼承(extends),子介面會擁有父母們的所有規範。但父母們之間的function不能重名。
  3. interface裡只能有public function,且都是空的。
  4. 可以有 constant ,但不能被override
  5. implement 的時候,必須 override所有的fucntion
  6. 不能直接 new 出來,要先有 class
更多

本文參考:

  1. https://www.drupal.org/docs/8/api/services-and-dependency-injection/structure-of-a-service-file
  2. https://symfony.com/doc/3.4/service_container.html

Services 源自於 Symfony,代表的是 有用的物件(object) ,例如 你有一個 Mail 物件(object),它可以在另一個 object 把資料存檔的時候幫你寄信之類的。 而這類型的 Service 會存在於 service container 的特殊object 裡,透過 services.yml 就可以註冊這些 有用的物件 並放進 Drupal 的

更多

步驟如下:

  1. 需要先更新 repository
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
  2. 然後安裝 python-certbot-nginx
    sudo apt-get install python-certbot-nginx
  3. 取得SSL 憑證(依照指示進行)
    sudo certbot --nginx -d example.com -d www.example.com
  4. 測試auto renew
    sudo certbot renew --dry-run