Featured
Yamaha Force 155 – 10000 公里大保養

Yamaha Force 155 – 10000 公里大保養

車子牽到現在歷經 8 個月,里程突破了 10000 公里,按照原廠保養手冊的說明,每 10000 公里/每半年,或是發聲明顯的點火異常、引擎熄火、過熱等情況,就需要進行點火系統的保養。

 

雖然覺得對於新車來說,在 10000 公里保養好像有點多餘,但不是多大的花費,也可以來瞭解一萬大保養究竟是不是必要的。

Read More Read More

[Ubuntu] Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?

[Ubuntu] Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?

如題,在使用 APT 安裝套件時,如果當下有其它的 APT process 執行中,便會出現下列錯誤訊息:

 

首先,先查看是不是有其它 APT process 在執行:

 

指令列中出現的是 grep 的參數,並不是 APT process,如果有出現其它的 process,建議先嘗試以正常方式去結束掉它,不要輕易的執接 kill process,因為有可能會導致系統損毀。

這邊的例子是沒有出現,代表可能前一次在執行 APT 時因為某些因素導致意外結束,我們可以透過 find 指令搜尋 /var/cache/apt/archives/lock/var/lib/apt/var/lib/dpkg 這三個目錄下是否存在 lock file:

 

三個目錄分別出現一個 lock file,但是卻沒有 APT process 在執行,前一次執行 APT 沒有正常結束時就會有這個情況發生。至於為什麼錯誤訊息顯示的錯誤路徑是 /var/lib/dpkg?簡單來說,APT  是一個套件管理工具,而實際上將套件安裝到系統的任務是由 dpkg  負責,而出現錯誤時我們通常都是看到 dpkg 跳警告而不是 APT。

 

處理這種情況,先刪除 lock file 後,再重新執行 APT,大多時候通常只要這樣就可以了。但如果運氣非常好,就會有個大坑  出現在你眼前。


References:

[Python] Django – “no module named django.core.management”

[Python] Django – “no module named django.core.management”

利用 django-admin.py 建立一個新專案後,準備要在專案目錄底下用 manage.py 開始做事情時,出現了詭異的錯誤訊息:

 

錯誤訊息中的大意是找不到 django.core.management 這個 module,利用下面的指令檢查一下 module source:

 

看起來很正常,但是我安裝 Django 時是利用 Python 3 的 pip 裝的,這時候就會有問題了!以我目前碰過的系統環境,大部分都會預載 Python 2,而 Python 2 與 Python 3 同時存在時,通常 python 指令都是指到 Python 2。可以輸入 python -V 或是 which python 去確認這件事情:

 

這時候換個方式去使用 manage.py,使用 python3 後就正常:

 

這時候我們可以確定是版本造成的問題,那如果想要變更 python 指令使用的版本,只要將現有的 /usr/bin/python 刪掉後,重建連結指到 python3 去即可:

 


Reference: python – Django – “no module named django.core.management” – Stack Overflow

[MariaDB/MySQL] 建立連線帳號與指派權限

[MariaDB/MySQL] 建立連線帳號與指派權限

建立帳號,其中「myaccount」是帳號,「mypassword」是密碼,主機為 localhost。

 

權限設定的指令結構如下(MariaDB 10.2):

 

這裡列出五種較常用的權限設定指令:

1. 給予使用者 myaccount@localhost 全域最高權限:

 

2. 給予使用者 myaccount@localhost 存取資料庫 mydb 的所有權限:

 

3. 給予 myaccount@localhost 存取資料庫 mydbSELECTINSERTUPDATEDELETE 權限:

 

4. 移除使用者 myaccount@localhost 在資料庫 mydb 的所有權限:

 

5. 修改使用者 myaccount@localhost 在資料庫 mydb 僅能執行 SELECT(具體作法為先移除所有權限後再 GRANT 一次):

 

權限修改完畢後,記得輸入 FLUSH PRIVILEGES; 重新載入權限,剛剛所做的異動才會生效。

 


References:
CREATE USER – MariaDB Knowledge Base
GRANT – MariaDB Knowledge Base

[Linux] 在 Bash 的自動完成中忽略英文字母大小寫

[Linux] 在 Bash 的自動完成中忽略英文字母大小寫

Bash 在做自動完成(Auto Completion)的預設情況下,對於鍵入的文字大小寫是有區分的,自身平常鍵盤輸入是維持小寫,在碰到有大寫的情況下,要按著 Shift 鍵或是利用 CapsLock 切換成大寫,我自己會稍嫌麻煩,因此我把 Auto Completion 設定為忽略大小寫,這樣可以讓我在輸入指令時比較方便。

設定的方式也非常簡單,在使用者家目錄下新增一個 .inputrc 檔案,並將「set completion-ignore-case On」加進去即可。


Reference: command line – Can I make Tab auto-completion case-insensitive in the terminal? – Ask Ubuntu

[MariaDB/MySQL] 在 Update 子查詢中使用 Limit 限制影響範圍

[MariaDB/MySQL] 在 Update 子查詢中使用 Limit 限制影響範圍

一般情況下,我們可以很簡單的利用 Limit 語法在進行資料異動中限制影響範圍。

 

但是涉及使用子查詢的情境時,這招便不管用了。

例如今天資料長這樣:

 

我想要 Update 前面兩種資料,也就是要下 Limit 2,但是 number 一樣的話就要一起 Update,所以 number 為 1 和 2 的 record 應該都要 Update,所以預期應該要有 4 筆 record 被 Update。直覺利用 Sub-Query 應該可以做到:

 

但是如果在 MariaDB/MySQL 5.5 或之後的版本執行時應該會得到 [Err] 1235 - This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

 

那這樣要怎麼辦呢?工具是死的,人是活的,Stackoverflow 就有人想到辦法繞過去了 。我們把 Limit 語法放到第三層子查詢(子查詢中的子查詢)就好了!

 


Reference: MySQL – UPDATE query with LIMIT – Stack Overflow

第1頁 / 共18頁12345678910...18