2020-10-31

讓網頁元件的 Event(click, change.....) 無動作的方式 - pure css

會想記錄這個主要是因為在寫網頁時會遇到需要讓 input, select, button 無動作的狀況

其實下意識會利用 disabled, readonly 的屬性來達到...可是

1) disabled - 在 form 中有 disabled 的表單元件(input, select...)會在 form submit 時不帶值

2) readonly - select 元件還是可以繼續選擇,除非把 option 都套上 disabled ,但這又會回到 disabled 不帶值的狀況


以上的說明,主要是還是希望 form submit 時要帶到值出去,所以 readonly 的使用是最符合的,但問題就在 readonly 在 select 是沒作用的…

當然,其實可以使用 javascript 來做到「無滑鼠事件, 且保留其值」的方式,只是相較之後我要說的方式來說,js 的方式複雜的多,而且我還是只用純 css 的方式完成。

[scss]
form {
  [readonly] {
    pointer-events: none;
  }
}

pointer-event 的說明可以看 mdn

展示:

2020-09-16

Codeigniter 3 資料庫的連線方式

CI 3 的資料庫設定方式,一般直覺的情況下會是直接在 /application/config/database.php 來進行設定,以下特別針對一些情況來進行記錄:

.mysqli 連線

$db['default'] = array(
  'dsn' => '',
  'hostname' => 'dbhost-domain_or_ip',
  'username' => 'dbuser',
  'password' => 'dbpass',
  'database' => 'dbname',
  'dbdriver' => 'mysqli',
  'dbprefix' => '',
  'pconnect' => FALSE,
  'db_debug' => (ENVIRONMENT !== 'production'),
  'cache_on' => FALSE,
  'cachedir' => '',
  'char_set' => 'utf8',
  'dbcollat' => 'utf8_general_ci',
  'swap_pre' => '',
  'encrypt' => FALSE,
  'compress' => FALSE,
  'stricton' => FALSE,
  'failover' => array(),
  'save_queries' => TRUE
);

.pdo(dsn connection)

$db['default'] = array(
  'dsn' => 'mysql:dbhost-domain_or_ip;dbname=dbname',
  'hostname' => '',
  'username' => 'dbuser',
  'password' => 'dbpass',
  'database' => '',
  'dbdriver' => 'pdo',
  'dbprefix' => '',
  'pconnect' => FALSE,
  'db_debug' => (ENVIRONMENT !== 'production'),
  'cache_on' => FALSE,
  'cachedir' => '',
  'char_set' => 'utf8',
  'dbcollat' => 'utf8_general_ci',
  'swap_pre' => '',
  'encrypt' => FALSE,
  'compress' => FALSE,
  'stricton' => FALSE,
  'failover' => array(),
  'save_queries' => TRUE); 

.另外定義(就是不在database.php中定義的,直接在model中另外寫的)

 $pdo = $this->load->database('pdo://dbuser:dbpass@dbhost-domain_or_ip/?dsn=mysql:host=dbhost-domain_or_ip;dbname=dbname&char_set=utf8&dbcollat=utf8_general_ci', true)
$search = $pdo->conn_id->prepare('sql query');
$search->execute();
$result = $search->fetchAll();

特此記錄一下… 

2020-07-28

[2020/09/19 update] Docker for Windows 10 更新或安裝失敗的解決辦法

今天在我的 Windows 10 上的 Docker 看到要更新到 2.3.0.46911  時就出現更新失敗的訊息…我就想說直接到官網下載完整的 Docker Desktop Installer 來安裝時發現也是有錯誤。

然後就想說幹脆把目前電腦中的 docker 給移除後再重新安裝好了,但發現 docker 移除時會停滯在「Removing image & container」…上網找了一下發現好像 docker for windows 的移除常會有這個狀況。

後來在「m@rcus學習筆記」找到「[Docker] Windows 10 中移除 Docker for Windows 的另一種方式」中使用 powershell 的移除方式,雖然我執行的過程是很正常,但我還是無法繼續安裝新版本的 docker ,網頁中有說到要再執行一次 docker 捷徑讓 windows 找不到執行檔而刪除捷徑後 docker 就可以再安裝了,我試過也是不行。

後來在該篇中提到的把組態檔中的 docker 給刪除後,安裝檔就正常安裝了。

在此註記一下。

2020/09/19 更新:
後來在 2.3.0.4 要升 2.3.0.5 時又遇到一樣的狀況,本來想照原來的方式走,但後來在 docker for-win 的 github issue 中有找到比較詳細的 powershell 的移除方式「https://github.com/docker/for-win/issues/515#issuecomment-281819259」,執行完後,再去新增移除程式移除 docker 就不會再卡在「removing vm and images」了,等移除完畢後,就可以直接安裝新版的 docker for-win 了。

2020-06-11

修正 WIN10 網路時不時停滯的問題(不限定版本)

我目前的 win10 版本是 1909…

它是從 1903 升級上來的…再之前我使用過 1709 的版本一路升級至1803、1809,但在升級至 1903 時系統變的非常慢,我還原回去 1809 後系統還是慢,然後就直接重灌為 1903 ,然後就一直使用至今。

這次說要修正的「win10 網路不定時停滯」的問題是我升級到 1909 後才發現有這狀況的,在一開始其實這個狀況發生率不高,至少會讓我發現網路怪怪的情況不多…但在 1909 的 2020/02 升級的網路下載問題開始就有發現這個停滯的發生機率就有提高。

在網路上搜尋了一下之後發現,有這個狀況的人還真不少,而且發生版本不限定在 1909 ,在之前的版本就常有人詢問這問題了。

我自己目前所使用的解法是:

2020-06-03

在 docker-compose.yml 中來指定 container 的時區(timezone)

最近幫朋友處理有關 docker 的一些小問題

我朋友說他去用了別人寫好的 docker-compose ,up 之後會產生 web, db 兩個 container ,但他在操作資料時發現寫入時間不對。

後來除錯時發現其實是系統時區的問題,web 的系統是 centos 7.7 ,而 db 是 debian (版本忘了),他兩個 container 都利用「ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime」來設定時區,結果發現只有 db 有修正,由 utc → cst ,但 web 還是依舊維持在 cest ,沒有更動過去。

他在 web 想使用「timedatectl set-timezone Asia/Taipei」時發現出現「failed to create bus connection no such file or directory」,他上網 google 後發現有人說要讓 docker 以 privileged 模式啟動 container 才能讓 container 的 root 真的有最高權限,但也有相關資料顯示 docker container 不該以 privileged 模式啟動,因為風險很大,所以朋友就來問我看有沒有什麼方式。

從 docker-compose.yml 下手,可以在 web 與 db 的「environment」的區塊下增加「- TZ=Asia/Taipei」或「TZ: Asia/Taipei」可以讓 container 啟動後設定為 Asia/Taipei 的時區,且 web 和 db 都支援這個方式。

至於為什麼會有「- TZ=Asia/Taipei」跟「TZ: Asia/Taipei」兩種寫法,似乎是跟 docker-compose 的版本有關,後者,也就是「TZ: Asia/Taipei」是比較新式的寫法,如果有發現使用了「- TZ=Asia/Taipei」後在 up 時出現錯誤,可以修改為「TZ: Asia/Taipei」的方式來重新 up 。

另外,「- TZ="Asia/Taipei"」的寫法是錯誤的,記得不要加雙引號