Skip to main content
Culture is Life

Main navigation

  • Home
  • Technical
  • About
  • Contact
User account menu
  • Log in

Breadcrumb

  1. Home

Technical

By gloomcheng, Sat, 02/04/2023 - 20:04

[Linux] 更改 MySQL/MariaDB 的登入驗證方式

如果是早期安裝的 Debian,預設安裝 MySQL 時都會需要設定 mysql root 的密碼,並且都是以 mysql -u root -p 再輸入密碼的方式登入 mysql client。

後期的 MySQL/MariaDB 則是改成提供 unix_socket 的登入機制,意思就是你可以改用 sudo mysql 就直接登入 mysql client 而不需要再另外輸入 mysql root 的密碼。

以下是將輸入密碼 mysql_native_password 的機制改成 unix_socket 的方法。

改用 unix_socket

> ALTER USER root@localhost IDENTIFIED VIA unix_socket;

改用 mysql_native_password

By gloomcheng, Sat, 02/04/2023 - 19:39

[Linux] 無法停止 MySQL / MariaDB

在進行 Debian 作業系統升級時,由於 MariaDB 鎖定在 10.1 的版本,然後升級過程又安裝了 10.5 的版本,造成衝突。於是,原本是要將 sudo apt purge mariadb-server-10.1 移除,但在移除過程中因為 Stopping MariaDB database server: mysqld failed! 卡住而無法順利移除。

一般的解決方法是 sudo service mysql stop 就可以了,但如果你也遇到用盡大部分的方法都無法停止 mysql 服務的情況,可以改用以下的指令:

$ sudo mysqladmin -u root -p shutdown

Ref: Ubuntu can't stop mysqld

By gloomcheng, Thu, 12/29/2022 - 18:31

[Drupal] 設定 Views (for Drupal 7) exposed filter 的預設值

本案例情境是,某個學校系所網站,需要根據不同學年度提供對應的「修業規範」等資料,而前台呈現的頁面當然就是以 Views 製作,並提供「學年度」切換的 exposed filter;但是,之前一直不知道究竟要怎麼設定 exposed filter 的預設值是抓最新的「學年度」(以分類製作)。

之前搜尋的資料所提供的方向,大多是 hook_form_alter() 或 hook_views_pre_view(),但嘗試過都失敗了,於是只好每年都到 Views 去修改 exposed filter 的「預設值」。

今天再次花時間搜尋,總算找到正確的方向,應該是要用 hook_views_pre_build() 來設定預設值才對1,其程式碼範例如下:

By gloomcheng, Wed, 10/26/2022 - 22:19

[Drupal] 在 Drupal 9 繼續使用 Drupal 8 相容的模組

Drupal 8 要升級至 Drupal 9,最麻煩的環節應該是部分模組沒有支援 Drupal 9,且許多 Drupal 8 的模組開發者也沒有要繼續維護的打算,導致在使用 composer 升級時,會因為這些模組的相依性限制,而無法順利升級到 Drupal 9。

遇到這種問題,比較好的解決方案,建議在 composer 加入 Lenient 儲存庫1:

$ composer config repositories.lenient composer https://packages.drupal.org/lenient 

加入後的 composer.json 會類似下面的結果

By gloomcheng, Tue, 10/25/2022 - 13:33

[Certbot] 改用 DNS 考驗申請 SSL 安全憑證

因某間大學防火牆擋 http(80) 通訊埠,導致無法使用 HTTP-01 考驗方式從 Let's Encrypt 申請 SSL 安全憑證

By gloomcheng, Mon, 07/11/2022 - 09:39

[Drupal] 自定義 Token 以及呼叫它的方法

要建立自定義的 token 會需要用到 hook_token_info() 及 hook_token(),前者是定義 token 的分類及可以使用的 tokens、後者則是撰寫 token 要置換成什麼內容的程式。

準備 Token

以下是 Drupal Token - Generic placeholder substitution 的範例:

By gloomcheng, Mon, 07/11/2022 - 09:14

[Drupal] DrupalDateTime 的用法

過往在 Drupal 7 以前,「日期」欄位存的是 UNIX timestamp 的格式,所以取出欄位值後,通常會需要用 date1 函式來轉換日期的呈現格式。

DrupalDateTime2 是擴充 PHP DateTime3 的類別,自 Drupal 8 開始,核心提供的「日期」欄位預設都是 DrupalDateTime 類別實作的,這意味著,在取用 Entity 時可以直接使用 DrupalDateTime 提供的方法(method)來轉變日期的格式,而不需要再透過 date 來處理。

例如:

By gloomcheng, Mon, 07/11/2022 - 09:10

[Drupal] 在客製表單中加入 wysiwyg 欄位

Drupal 8/9 要使用 TextFormat1 類型的欄位

By gloomcheng, Fri, 05/27/2022 - 20:46

[Drupal] 在客製表單中加入上載檔案/圖像的欄位

平時甚少會需要在客製表單中加入檔案/圖像上傳的檔案,所以一時之間也不知道該怎麼寫,為了避免下次又忘記,來補篇筆記

Drupal 8 開始是定義在 ManagedFile Class1 內:

By gloomcheng, Thu, 05/05/2022 - 22:53

[Drupal] Responsive Dialog

在 Drupal 8/9 可以用 OpenDialogCommand Class 來實作 Dialog 或 Modal Dialog。

但要怎麼讓 Dialog 可以因應載具尺寸自動調整呢?例如電腦版下最多 700px 的大小、而在手機版底下則變成滿版。在網路上搜尋到的範例,大多是

Pagination

  • Current page 1
  • Page 2
  • Page 3
  • Page 4
  • Page 5
  • Page 6
  • Page 7
  • Page 8
  • Next page
  • Last page
Culture is Life
Powered by Drupal