Quantcast
Channel: 可丁丹尼 @ 一路往前走2.0
Viewing all 79 articles
Browse latest View live

Linux Geany 簡單快速的純文字編輯器

$
0
0

Linux Geany 簡單快速的純文字編輯器

Geany 使用GTK+所編寫的,具有整合開發環境(IDE)特性的純文字編輯器,它因為依賴較少的套件環境,所以提供跨平台的支援,Windows、macOS、Linux都有很好的支援性,像Geany Portable就是將Geany製作成可攜式軟體.丹尼在寫Arduino程式都使用Geany取代原本的Arduino IDE.

安裝

Arch

sudo pacman -S community/geany community/geany-plugins

Ubuntu

sudo apt install geany geany-plugins

使用

安裝完成後開啟Geany後會看到主要視窗:

開啟檔案與一般的軟體一樣選擇選單上的File再進入Open

開啟後會依照副檔名的名稱來載入對應的語言設定檔,如此開啟後就會替這個語言進行關鍵字高亮:

Plugin

Geany支援外掛功能,外掛列表清單與說明在官網有提供。外掛檔案與主程式是分開的,前面安裝章節已經包含將外掛也安裝進去,接下來只需要至外掛管理員進行套件的開啟與關閉:

圖例中丹尼開啟Tree Browser功能:

它會以樹狀結構將列出目錄、檔案:

有時丹尼會使用Files檔案瀏覽停在A目錄,Tree Browser檔案瀏覽停在B目錄,這樣當需要開檔在A目錄時就切至Files檔案瀏覽找檔案,反之就切到Tree Browser檔案瀏覽開啟B目錄中的檔案。

註:Files檔案瀏覽功能也是屬於外掛之中,需要自行至外掛管理員開啟.

參考資料

更新日誌

日期 內容
2017/06/12 初版

關鍵字

  • Geany 編輯器 純文字編輯器 文檔編輯器 文檔編輯軟體
  • 跨平台編輯器 編輯軟體 取代本記筆 取代記事本

The post Linux Geany 簡單快速的純文字編輯器 appeared first on 可丁丹尼 @ 一路往前走2.0.


macOS KeepingYouAwake 讓Mac閒置不進入睡眠或螢幕保護程式

$
0
0

macOS KeepingYouAwake 讓Mac閒置不進入睡眠或螢幕保護程式

KeepingYouAwake 是一款與丹尼之前自行開發的Preventing Sleep功能是類似的,它能透過設定讓你的Mac機器不進入睡眠或螢幕保護程式的App.有時可能只是喝杯水或是上廁所,不想讓機器進入睡眠或螢幕保護程式時就能使用KeepingYouAwake,它是開放原始碼APP,提供原始碼供研究,因是開放原始碼,作者在網站提供編譯好的自行下載安裝,並非由App Store下載安裝。

安裝

前往Release連結,選擇最新版的下載:

每個版本都有提供已經編譯好的可安裝程式,按下Downloads中的KeepingYouAwake-xxxxx.zip進行下載,下載後將檔案解壓縮,

再將KeepingYouAwake拖拉至應用程式就安裝完成,接下來執行它。

使用

執行KeepingYouAwake,它的圖示就是一杯咖啡:

工作列上會有咖啡的圖示,按下右鍵可以進入設定選項:

你可以透過Activate for Duration設定要防止睡眠多久,這有幾個選項,其中Indefinitely代表是持續防止睡眠.

另外可以按下Preferences進入偏好設定。

General

General選項能設定

  • Start at Login 開機立即執行
  • Activate on Launch 開機執行預設的項目,其項目能在上圖中的Default Activation Duration來選擇

Advanced

Advanced選項提供Automatically Check for Updates自動更新項目:

自動更新項目中如果選擇Check for Pre-Release Updates會先下載預計Release版本先下載更新,

以及勾選Deactivate when battery capacity is below能設定電池量量低於設定值時取消防止睡眠的功能,避免可能忘記設定,而讓電池整個耗盡無法做其他事情。

About

About選項提供貢獻名單及一些與KeepingYouAwake有關的說明:

快速啟動功能

上述為按下右鍵所出現的選項設定,如果你想要快速的進入防止睡眠功能時,在工作列上的咖啡圖示用左鍵點一下就入防止睡眠,

再按一下則取消,如上圖動化所示。

參考資料

更新日誌

日期 內容
2017/06/12 初版

關鍵字

  • macOS 防止 休眠 睡眠 螢幕保護程式啟動
  • preventing sleep

The post macOS KeepingYouAwake 讓Mac閒置不進入睡眠或螢幕保護程式 appeared first on 可丁丹尼 @ 一路往前走2.0.

macOS 非官方 WWDC App

$
0
0

macOS 非官方 WWDC App

每年WWDC一開始總是會追著看看有什麼樣子的Session可先選擇觀看,早期並沒有很完整的觀看方式,直到後來Apple提供iOS版本的WWDC App,終於讓每年的WWDC觀看影片能方便許多,但遲遲的在macOS上卻無這麼便利的App,不過總算有其他開發者發聲,開發非官方的WWDC App,App的名稱也是WWDC

使用

前往The unofficial WWDC app for macOS網站下載:

按下Download下載,並且解壓縮。

解壓完成後會看到App,再將WWDC拖拉方式拉至應用程式

使用

安裝完成執行WWDCApp:

App開啟後可以看到設定的風格簡約有質感,以下分為四個區域介紹:

1區

選擇Schedule後會依照日期時間排列將相關的影片列表,另外的Videos選擇後會依照開發的屬性,像Media、Developer Tools、System Framework…等。

2區

播放列表,會依照設定的方式將列表排序分類列出,再自行點選影片觀看

3區

利用篩選的方式篩選影片,按下Filter會列出你要篩選的項目

4區

此區為播放區,提供影片概要、Session記錄、下載、加入我的最愛、分享,

影片概要、Session記錄由官方網站擷取,其他的為App本身功能。

參考資料

更新日誌

日期 內容
2017/06/13 初版

關鍵字

  • WWDC Video Session
  • WWDC player
  • WWDC 2017

The post macOS 非官方 WWDC App appeared first on 可丁丹尼 @ 一路往前走2.0.

ESXi vSphere Client 外連遠端操作

$
0
0

ESXi vSphere Client 外連遠端操作

當你的ESXi Server置於防火牆內時,要遠端利用vShpere Client連至ESXi Server操作時就必需要開啟對應的連接埠才能使用。

連接埠說明

根據官方提供的Required ports for configuring an external firewall to allow ESX/ESXi and vCenter Server traffic (1005189)提到ESXi Server使用哪些連接埠:

  • 22 – SSH (TCP)
  • 53 – DNS (TCP and UDP)
  • 80 – HTTP (TCP/UDP)
  • 902 – vCenter Server / VMware Infrastructure Client – UDP for ESX/ESXi Heartbeat (UDP and TCP)
  • 903 – Remote Access to VM Console (TCP)
  • 443 – Web Access (TCP)
  • 27000, 27010 – License Server (Valid for ESX/ESXi 3.x hosts only)

而官方提供vSphere Client使用的連接埠:

連接埠 用途 流量類型
443 (預設) HTTPS 存取vSphere Client 存取 vCenter ServervSphere Client 存取 ESXi 主機vSphere Client 存取 vSphere Update Manager ESXi 主機的傳入 TCP
902 (預設) vSphere Client 存取虛擬機器主控台 ESXi 主機的傳入 TCP、ESXi 主機的傳出 TCP、ESXi 主機的傳出 UDP

上面資料解讀完後可能覺的只需要開啟2個連接埠就行,但其實vSphere Client在操作ESXi Server時是使用443連接埠,然而你在看Guest畫面時透過903連接埠連遞畫面,最後的902連接埠來確定ESXi Server與vSphere之間是否還在連線,所以丹尼會在分享器/Router設定這3個連接埠。

設定連接埠

經過前面所說明的,丹尼要替分享器/Router設定:

  • 902 – vCenter Server / VMware Infrastructure Client – UDP for ESX/ESXi Heartbeat (UDP and TCP)
  • 903 – Remote Access to VM Console (TCP)
  • 443 – Web Access (TCP)

進入你的分享器/Router的設定,針對NAT選擇進行連接埠設定,同意WAN端有遠端連線使用到設定的連接埠時將封包轉傳給ESXi Server,以下為丹尼dd-wrt 分享器的設定內容:

您不是dd-wrt分享器也沒關系,參照你的分享器設定,試著找關鍵字NAT通訊埠轉發Virtual Server…等,下圖為TOTOLINK的設定畫面:

參考資料

更新日誌

日期 內容
2017/06/16 初版

關鍵字

  • TCP and UDP Ports required to access VMware vCenter Server
  • Required ports for configuring an external firewall to allow ESX/ESXi and vCenter Server traffic (1005189)
  • ESXi 連接埠 port Port
  • ESXi 開啟連接埠 Port port
  • ESXi 所使用的Port
  • ESXi 使用的Port
  • vSphere Client 的 TCP 和 UDP 連接埠

The post ESXi vSphere Client 外連遠端操作 appeared first on 可丁丹尼 @ 一路往前走2.0.

Docker Hub設定自動化建置映像檔

$
0
0

Docker Hub 設定自動化建置映像檔

丹尼正在學習自行客製化Docker映像檔並發佈至Docker hub上使用時,發現許多發佈的Docker映像當中都會包含Source Repository這項目,項目提供超鏈結網址指向GitHub

並且網頁選項功能除了Repo InfoTags外,還有

  • Dockerfile直接看到原始碼內容

  • Build Details項目還能查看映像檔建立的時間與版本Tag

這是如何辦到的呢?查完官方文件後才知道官網有提供一種Automated builds功能,它與GitHub帳號連結後,利用GitHub上發佈Dockefile的內容當來源,再經過幾個事件觸發就會自動化部署對應的Docker映像檔至Docker伺服器中,要使用此功能必需要在建立專案時選擇屬性為Automated Builds,下圖為建立Docker倉庫時總共有三個類型可以選擇。

接下來會以Create Automated Build功能來討論如何產生自動化建置。

Docker Hub連結 GitHub帳號

首先登入你的Docker Hub帳號,並至Linked Accounts & Services進行與GitHub帳號連結,

選擇Link Github後進入設定存取類型,

如果你想要自動化部署就必需要選擇Public and Private,讓Docker Hub存取一些設定,

對於授權有疑問的話,按下上圖紅框處下箭頭能看到說明,下圖為詳細說明內容,

一切沒問題就接著按下Authorize docker進行授權,授權成功後就會再回到Linked Accounts & Services

此時上圖紅框處所顯示你已經與Github帳號連結成功,如果你要想要變更成其他Github帳號或取消不再與Github有連結,就按下Unlink Github與Docker Hub不再連結,但要注意的一點,按下Unlink Github功能只是在Docker Hub上不再使用此Github帳號產生連結,但Github先前給與Docker的授權仍然存在,必需要自行至Github上取消授權才行,如下圖畫面:

選擇Authorized OAuth Apps功能,它會列出所有給予授權的App名稱,在每個列表後會有Revoke按鍵,按下Revoke才會真正的取消授權,往後確定不再讓你的Docker Hub帳號與Github帳號有授權關系時就一定要至Github取消授權。

The post Docker Hub設定自動化建置映像檔 appeared first on 可丁丹尼 @ 一路往前走2.0.

Windows 10 停用自動更新驅動程式

$
0
0

Windows 10 停用自動更新驅動程式

Windows 8 開始,每次更新系統時都會順道更新驅動程式, 這項作法蠻方便的,但硬體與驅動程式在Windows上的表現有時不一定是新版的最好,像BIOS更新這檔事也是如此,丹尼還是覺使用穩定的最好,電腦如果很穩定,必要時再更新驅動程式,下面的動作將會告訴你如何停用自動更新驅動程式的功能。

開啟執行對話框

首先我門先練習一下怎麼啟動執行對話框,這功能是讓你快速的執行程式,不需要進到命令提示字元Windows PowerShell後才下命令。按下鍵盤上的Windows + X

它會開啟 快速連結功能表,用滑鼠點擊執行(R)或是按下鍵盤的R進入執行對話框。

上圖中的紅框處就是輸入你要執行的程式檔案,如果還是覺的這樣太慢太麻煩,那也可以使用Windows + R更快速的進入執行對話框

進入裝置安裝設定

單單啟動控制台可以使用一組執行control.exe但我們要開啟的是系統這個子項目,因為裝置安裝設定功能位於系統這個項目中,此時在執行的功能中輸入control.exe sysdm.cpl ,2,這命令是告訴控制台我要啟動系統這個項目,並且將頁面切到第二頁,

按下確定後會叫出系統的畫面並停留在第二個頁面硬體

用滑鼠選擇裝置安裝設定進入設定。

關閉自動更新

進入裝置安裝設定功能後會跳出視窗讓你選擇

請選擇並且按下儲存變更完成設定,關閉此功能時要確定你的主機每項驅動程式都是運作正常且無問題時才能做此決定,否則當有缺少驅動程式時並不用由微軟那邊自動搜尋驅動程式並自動安裝

參考資料

DOS指令-開啟Windows進階系統設定(sysdm.cpl)

更新日誌

日期 內容
2017/07/20 初版

關鍵字

  • Windows 關閉自動更新驅動程式
  • Windows 取消自動更新驅動程式
  • Windows 取消 更新驅動程式

The post Windows 10 停用自動更新驅動程式 appeared first on 可丁丹尼 @ 一路往前走2.0.

Windows 批次檔中產生延時效果

$
0
0

Windows 批次檔中產生延時效果

Windows 中撰寫批次檔時會需要等一段時間後再執行程式,像我用批次檔掛載網路磁碟後,必需要再網路磁碟裡面執行某個程式時,丹尼會等約3秒讓它掛載順利後再執行程式。

要讓批次檔中產生延時效果丹尼提供幾個Windows內建的程式,利用程式的特性產生以秒為單位的延時功能。

Ping

Ping提供測試封包是否有傳達到指定的主機IP,使用參數n讓Ping產生1次封包測試及參數w每次等候時間1000毫秒的組合產生1秒的延時,

ping 127.0.0.1 -n 1 -w 1000

秒數要增加時變更參數n的值,例如要延時5秒就改成:

ping 127.0.0.1 -n 5 -w 1000

Timeout

這個命令在Windows Vista之後才提供的,所以Windows Vista/7/8/10執適用,除之外外像Windows XP就請使用Ping的方式。第一次使用執行

timeout /?

此命令會列出參數使用方式,參數非常的簡單又少,等下會使用到參數T

TIMEOUT [/T] timeout [/NOBREAK]

描述:
    這個公用程式接受逾時參數,等候指定的時間長度
    (單位是秒數) 或等到按了鍵以後。
    它同時也接受參數。

參數清單:
    /T        timeout       指定等候的秒數。
                            有效範圍介於 -1 和 99999 秒之間。

    /NOBREAK                略過按鍵,等候指定的時間長度。

    /?                      顯示這個說明訊息。

注意事項: 等候逾時的值如果是 -1 則表示一直等候按鍵。

範例:
    TIMEOUT /?
    TIMEOUT /T 10
    TIMEOUT /T 300 /NOBREAK
    TIMEOUT /T -1

範例使用timeout產生延時1秒

timeout /t 1

執行後結果會有進行倒數提示,如下:

等候 1 秒後,請按任何一個鍵繼續…

範例中能看到提示上有寫請按任何一個鍵繼續…,代表你可以按任何一鍵就能讓延時的秒數失效,所以再增加NOBREAK讓它真正的要等到秒數到時才能離開

timeout /t 1 /nobreak

執行後,如果要強制取消必需要按下組合鍵CTRL + C

等候 1 秒後,按 CTRL+C 結束…

參考資料

更新日誌

日期 內容
2017/07/26 初版

關鍵字

  • 批次檔 延時
  • 批次檔 Delay
  • 批次檔 Sleep
  • Batch Delay
  • Batch Sleep
  • 批次檔 暫停 Sleep Delay

The post Windows 批次檔中產生延時效果 appeared first on 可丁丹尼 @ 一路往前走2.0.

Proxmox VE 安裝至USB隨身碟

$
0
0

Proxmox VE 安裝至USB隨身碟

Proxmox VE on USB

現在的主機板都支援使用USB開機,加上作業系統也要配合,Proxmox VE(後面稱PVE)基於Debian當然也支援,安裝系統時就能選擇安裝至USB隨身碟位置,但避免太過頻繁存取而減短它的壽命,安裝後需要將過於頻繁存取的目錄移至傳統硬碟之中。

系統配置

PVE安裝於隨身碟中會使用lvm的方式配置系統,執行lsblk命令看一下機器上的磁碟結構

root@pve3:~# lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                  8:0    0 149.1G  0 disk 
├─sda1               8:1    0   149G  0 part 
└─sda9               8:9    0     8M  0 part 
sdb                  8:16   0 153.4G  0 disk 
sdc                  8:32   1  14.5G  0 disk 
├─sdc1               8:33   1     1M  0 part 
├─sdc2               8:34   1   256M  0 part 
└─sdc3               8:35   1  14.2G  0 part 
  ├─pve-swap       253:0    0   1.8G  0 lvm  [SWAP]
  ├─pve-root       253:1    0   3.5G  0 lvm  /
  ├─pve-data_tmeta 253:2    0     8M  0 lvm  
  │ └─pve-data     253:4    0   7.2G  0 lvm  
  └─pve-data_tdata 253:3    0   7.2G  0 lvm  
    └─pve-data     253:4    0   7.2G  0 lvm  
root@pve3:~# 

上圖執行結果於sdc為PVE安裝於隨身碟的磁碟代號,其中的pve-swap用於系統交換檔,是首先必需要替換的,之後還有位於/var/log/var/lib/vz/var/cache會陸續說明。

檔案系統

丹尼PVE環境使用2顆160GB傳統硬體,並使用zfs檔案格式建立1個鏡像(mirror)儲存池(storage pool)名稱為rpool

zpool create -f -o ashift=12 rpool mirror /dev/sda /dev/sdb

查看一下建立結果

root@pve3:~# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool       0.1G   136G    96K  /rpool

下章節會使用rpool儲存池來說明替換系統配置的過程。

替換系統配置

要替換配置,像交換檔(pve-swap)、紀錄檔(/var/log)、快取(/var/cache)、虛擬機檔案(/var/lib/vz)、映像檔(/var/lib/vz)都是必要,丹尼會將它們位置指向rpool儲存池。

SWAP

SWAP必需要使用到Linux的區塊裝置(block devie),ZFS檔案系統中指的就是ZFS Volume,下面例子提供建立SWAP需要用到指令及參數

zfs create -V 8G -b $(getconf PAGESIZE) -o compression=zle \
      -o logbias=throughput -o sync=always \
      -o primarycache=metadata -o secondarycache=none \
      -o com.sun:auto-snapshot=false [POOL NAME]/swap 

  • b $(getconf PAGESIZE) 利用getconf PAGESIZE取得BLOCK大小
  • -V 8G Volume大小
  • -o compression=zle 使用zle的壓縮方式
  • -o logbias=throughput 不使用ZFS Log裝置
  • -o sync=always 同步方式選擇寫入後就同步
  • -o primarycache=metadata 主要快取方式
  • -o secondarycache=none 第二階快取方式
  • -o com.sun:auto-snapshot=false 自動快照功能取消,細節至Managing Automatic ZFS Snapshots這篇閱讀
  • [POOL NAME]/swap 檔案系統名稱

建立名稱為swap的ZFS Volumerpool,指令只需要替換[POOL NAME],這裡替換成rpool

zfs create -V 8G -b $(getconf PAGESIZE) -o compression=zle \
      -o logbias=throughput -o sync=always \
      -o primarycache=metadata -o secondarycache=none \
      -o com.sun:auto-snapshot=false rpool/swap

建立完成使用zfs list查結果

root@pve3:~# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool       8.50G   136G    96K  /rpool
rpool/swap  8.50G   144G    64K  -
root@pve3:~# 

ZFS Volume建立完成會於/dev/zvol/中產生對應的區塊裝置的名稱,結構為/dev/zvol/[pool名稱]/[zfs 檔案系統名稱]

root@pve3:~# ls /dev/zvol/rpool/
swap

格式化為專用的SWAP格式

root@pve3:~# mkswap -f /dev/zvol/rpool/swap
Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
no label, UUID=6bca43c9-8edc-4908-98cd-07928f76f38f
root@pve3:~# 

開機立即掛載命令增加至fstab檔案中

echo /dev/zvol/rpool/swap none swap defaults 0 0 >> /etc/fstab

開啟fstab檔案準備編輯

nano /etc/fstab

fstab的內容,也包含剛剛加入的命令

# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
/dev/zvol/rpool/swap none swap defaults 0 0

註解開機自動掛載隨身碟中的交換檔/dev/pve/swap none swap sw 0 0命令,讓它不再自動掛載

# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext4 errors=remount-ro 0 1
#/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
/dev/zvol/rpool/swap none swap defaults 0 0

重開機後會立即生效,執行swapon查看狀態

root@pve3:/etc/apt# swapon
NAME     TYPE      SIZE USED PRIO
/dev/zd0 partition   8G   0B   -1
root@pve3:/etc/apt# 

Log

Linux 中所有記錄檔將會存於/var/log,這些算是小檔案且存取超頻繁動作的一區,丹尼將它移至rpool。於rpool中建立log名稱的ZFS檔案系統

zfs create rpool/log

建立完一樣查看結果

root@pve3:~# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool       8.50G   136G    96K  /rpool
rpool/log     96K   136G    96K  /rpool/log
rpool/swap  8.50G   144G    64K  -
root@pve3:~# 

rpool/log設定壓縮演算法,ZFS中能設定每個ZFS檔案系統的壓縮方式

zfs set compression=lz4 rpool/log

rsync將原先檔案同步rpool/log

rsync -avx /var/log/* /rpool/log

rsync是一個很好的同步檔案工具,加上參數-avx會在同步檔案時也將權限同步過去

root@pve3:~# rsync -avx /var/log/* /rpool/log
sending incremental file list
alternatives.log
auth.log
boot
btmp
daemon.log
debug
dpkg.log
faillog
fontconfig.log
kern.log
lastlog
mail.info
mail.log
messages
pve-firewall.log
pveam.log
syslog
user.log
wtmp
apt/
ceph/
corosync/
corosync/.empty
glusterfs/
lxc/
lxc/lxc-monitord.log
pve/
pve/tasks/
pve/tasks/.active.lock
pve/tasks/active
pve/tasks/index
pve/tasks/9/
pve/tasks/9/UPID:pve3:0000043F:0000093A:59835139:startall::root@pam:
pveproxy/
pveproxy/access.log
samba/

sent 22,119,218 bytes  received 554 bytes  44,239,544.00 bytes/sec
total size is 22,111,469  speedup is 1.00
root@pve3:~# 


整個同步完成後,要將rpool/log掛載至相對應的路徑,因很多Linux上的套件都會將紀錄檔存至/var/log這個路徑,直接掛載至/var/log

zfs set mountpoint=/var/log rpool/log

掛載過程中可能會出現類似的錯誤

root@pve3:~# zfs set mountpoint=/var/log rpool/log
cannot mount '/var/log': directory is not empty
property may be set but unable to remount filesystem

這只是代表你要掛載的位置目錄已經存在,將它刪除

rm -rf /var/log

刪除後再繼續掛載就會成功

zfs set mountpoint=/var/log rpool/log

查看一下結果

root@pve3:/# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool       8.51G   136G    96K  /rpool
rpool/log    440K   136G   440K  /var/log
rpool/swap  8.50G   144G    64K  -
root@pve3:/# 

結果中有一欄MOUNTPOINT顯示出掛載的位置,建立好的ZFS檔案系統是可以不需要指定掛載位置,像之前建立的SWAP因是區塊裝置,並不需要指定掛載位置。

替換/var/log配置方式在後面要替換的目錄是一樣的,所以丹尼一樣會將過程貼出來,但並不會做太多的說明。

VZ

/var/lib/vz存放著PVE的相關設定及映像檔、安裝的ISO…等,先查看一下它有什麼樣的目錄結構

root@pve3:/var/lib/vz# du
1   ./root
1   ./dump
1   ./template/iso
1   ./template/qemu
1   ./template/cache
2   ./template
1   ./images
1   ./private
13  .
root@pve3:/var/lib/vz# 

我們建立rpool/vz來取代它

zfs create rpool/vz

查看結果

root@pve3:/# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool       8.50G   136G    96K  /rpool
rpool/log    440K   136G   440K  /var/log
rpool/swap  8.50G   144G    64K  -
rpool/vz      96K   136G    96K  /rpool/vz

設定壓縮方式

zfs set compression=lz4 rpool/vz

同步/var/lib/vz下檔案至rpool/vz

rsync -avx /var/lib/vz/* /rpool/vz

同步的過程如下

root@pve3:/# rsync -avx /var/lib/vz/* /rpool/vz
sending incremental file list
dump/
images/
private/
root/
template/
template/cache/
template/iso/
template/qemu/

sent 205 bytes  received 44 bytes  498.00 bytes/sec
total size is 0  speedup is 0.00

同步完成後刪除原先目錄及檔案內容

rm -rf /var/lib/vz

rpool/vz掛載至/var/lig/vz

zfs set mountpoint=/var/lib/vz rpool/vz

查看掛載路徑是否正確

root@pve3:/# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool       8.51G   136G    96K  /rpool
rpool/log    440K   136G   440K  /var/log
rpool/swap  8.50G   144G    64K  -
rpool/vz     104K   136G   104K  /var/lib/vz
root@pve3:/# 


CACHE

快取路徑/var/cache是Linux系統中應用程式需要置放快取時都會將路徑指至此,像aptsamba或是你用man查看一些手冊時也會產生快取,下面命令為建立要取代原先快取目錄的ZFS檔案系統rpool/cache

zfs create rpool/cache

同樣查看rpool/cache是否建立完成

root@pve3:~# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
rpool        8.51G   136G    96K  /rpool
rpool/cache    96K   136G    96K  /rpool/cache
rpool/log     440K   136G   440K  /var/log
rpool/swap   8.50G   144G    64K  -
rpool/vz      104K   136G   104K  /var/lib/vz

設定壓縮演算法為lz4

zfs set compression=lz4 rpool/cache

同步快取內的檔案至rpool/cache

rsync -avx /var/cache/* /rpool/cache

同步過程供參考

root@pve3:/# rsync -avx /var/cache/* /rpool/cache
sending incremental file list
created directory /rpool/cache
apparmor/
apt/
apt/pkgcache.bin
apt/srcpkgcache.bin
apt/archives/
apt/archives/partial/
debconf/
debconf/config.dat
debconf/config.dat-old
debconf/passwords.dat
debconf/templates.dat
debconf/templates.dat-old
fontconfig/
fontconfig/087e1975ba9a574b140bb1df193bf770-le64.cache-4
fontconfig/2bae36bb929c5b1290cc66cecf2b11b0-le64.cache-4
fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-4
fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-4
fontconfig/573ec803664ed168555e0e8b6d0f0c7f-le64.cache-4
fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-4
fontconfig/8a687c406b77f27d99abfeeba937fcce-le64.cache-4
fontconfig/CACHEDIR.TAG
fontconfig/c277e94e32b20404286a1ddafa5a80f0-le64.cache-4
fontconfig/c4f8cd936e32aa63d90660cbbf4d74a0-le64.cache-4
fontconfig/cba07694886bf8bbc441deea9dc5842f-le64.cache-4
fontconfig/cdd862819a105ebd84444cb99c7fc194-le64.cache-4
fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-4
fontconfig/e0c1a6ba06fd9ea781faace1ebc0ffdd-le64.cache-4
ldconfig/
ldconfig/aux-cache
lxc/
man/
man/CACHEDIR.TAG
man/index.db
man/cs/
man/cs/CACHEDIR.TAG
man/cs/index.db
:
:
:
samba/

sent 8,072,913 bytes  received 1,697 bytes  16,149,220.00 bytes/sec
total size is 8,064,549  speedup is 1.00

刪除原有的快取目錄及檔案

rm -rf /var/cache

設定要取代的rpool/cache掛載路徑

zfs set mountpoint=/var/cache rpool/cache

查看設定結果

root@pve3:/# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
rpool        8.51G   136G  8.30M  /rpool
rpool/cache    96K   136G    96K  /var/cache
rpool/log     440K   136G   440K  /var/log
rpool/swap   8.50G   144G    64K  -
rpool/vz      104K   136G   104K  /var/lib/vz

結語

這篇提到的是如何將存取頻繁的目錄、區塊裝置、分割表從Flash中移至傳統硬碟,傳統硬碟在一般觀念中是比較可以承受這種讀寫,在其他平台也是會有此類似的文章,不過這篇另一個重點是使用ZFS檔案系統來替換這些配置,其中有提到ZFS Storage PoolZFS VolumeZFS File System是後續要去了解,或是事先就要略懂。

參考資料

更新日誌

日期 內容
2017/08/04 初版

關鍵字

  • PVE on USB
  • PVE USB Boot
  • Proxmox VE on USB
  • Proxmox VE 5.0 4.4

The post Proxmox VE 安裝至USB隨身碟 appeared first on 可丁丹尼 @ 一路往前走2.0.


ESXi image(raw) 映像檔轉換成VMDK

$
0
0

ESXi image(raw) 映像檔轉換成VMDK

虛擬化的過程中可能會遇到手上取得執行像檔並非ESXi使用的檔案格式VMDK(Virtual Machine Disk),像丹尼要在ESXi上安裝DD-WRT時,遇到官網提供的只有image映像檔,此篇要使用qemu提供的工具qemu-img進行轉換。

安裝qemu

qemu能執行於許多平台,像Windows、MacOSX、Linux,官網都有提供下載方式及安裝,以Linux的Arch分支及Windows安裝為例子。

Windows

Windows的安裝程式官網建議從Stefan Weil提供的安裝包進行下載及安裝,它分為32bit64bit, 查看你的Windows執行版本選擇下載,丹尼使用64bit為例子下載並安裝。

依照你目前的時間選擇最新的年份,進入此年份目錄後並找尋離你時間最近版本進行下載

下載完成後再執行安裝程式安裝qemu。

Next進行下一步

I Agree我同意版權宣告

Next使用已勾選的預設值,

安裝路徑選擇,不選擇按下Install進行安裝,如果有要安裝至其他路徑選擇Browser開啟目錄的選擇,

安裝完成,按下Finish離開安裝畫面。

Bash on Windows

Windows 10之後還有選一種選擇,開啟Bash應用,依照Ubuntu安裝套件的方式安裝qemu

apt install qemu

安裝過程參考

~# apt install qemu
正在讀取套件清單... 完成
正在重建相依關係
正在讀取狀態資料... 完成
下列的額外套件將被安裝:
  binfmt-support cpu-checker ipxe-qemu libaio1 libasound2 libasound2-data libasyncns0 libbluetooth3
  libboost-iostreams1.58.0 libboost-random1.58.0 libboost-system1.58.0 libboost-thread1.58.0 libbrlapi0.6 libcaca0
  libcacard0 libfdt1 libflac8 libiscsi2 libjpeg-turbo8 libjpeg8 libnspr4 libnss3 libnss3-nssdb libogg0 libopus0
  libpixman-1-0 libpulse0 librados2 librbd1 libsdl1.2debian libsndfile1 libspice-server1 libusbredirparser1
  libvorbis0a libvorbisenc2 libxen-4.6 libxenstore3.0 libyajl2 msr-tools qemu-block-extra qemu-slof qemu-system
  qemu-system-arm qemu-system-common qemu-system-mips qemu-system-misc qemu-system-ppc qemu-system-sparc
  qemu-system-x86 qemu-user qemu-user-binfmt qemu-utils seabios sharutils
建議套件:
  libasound2-plugins alsa-utils opus-tools pulseaudio qemu-user-static samba vde2 openbios-ppc openhackware sgabios
  ovmf debootstrap bsd-mailx | mailx
下列【新】套件將會被安裝:
  binfmt-support cpu-checker ipxe-qemu libaio1 libasound2 libasound2-data libasyncns0 libbluetooth3
  libboost-iostreams1.58.0 libboost-random1.58.0 libboost-system1.58.0 libboost-thread1.58.0 libbrlapi0.6 libcaca0
  libcacard0 libfdt1 libflac8 libiscsi2 libjpeg-turbo8 libjpeg8 libnspr4 libnss3 libnss3-nssdb libogg0 libopus0
  libpixman-1-0 libpulse0 librados2 librbd1 libsdl1.2debian libsndfile1 libspice-server1 libusbredirparser1
  libvorbis0a libvorbisenc2 libxen-4.6 libxenstore3.0 libyajl2 msr-tools qemu qemu-block-extra qemu-slof qemu-system
  qemu-system-arm qemu-system-common qemu-system-mips qemu-system-misc qemu-system-ppc qemu-system-sparc
  qemu-system-x86 qemu-user qemu-user-binfmt qemu-utils seabios sharutils
升級 0 個,新安裝 55 個,移除 0 個,有 108 個未被升級。
需要下載 43.3 MB 的套件檔。
此操作完成之後,會多佔用 261 MB 的磁碟空間。
是否繼續進行 [Y/n]? [Y/n] y
下載:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libasyncns0 amd64 0.8-5build1 [12.3 kB]
下載:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libiscsi2 amd64 1.12.0-2 [51.5 kB]
下載:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 libjpeg-turbo8 amd64 1.4.2-0ubuntu3 [111 kB]
下載:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 libogg0 amd64 1.3.2-1 [17.2 kB]
下載:5 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-iostreams1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [29.0 kB]
下載:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-system1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [9,146 B]
下載:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-random1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [11.7 kB]
下載:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-thread1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [47.0 kB]
下載:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libnspr4 amd64 2:4.13.1-0ubuntu0.16.04.1 [112 kB]
下載:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libnss3-nssdb all 2:3.28.4-0ubuntu0.16.04.2 [10.6 kB]
下載:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libnss3 amd64 2:3.28.4-0ubuntu0.16.04.2 [1,147 kB]
下載:12 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 librados2 amd64 10.2.7-0ubuntu0.16.04.1 [1,642 kB]
下載:13 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 librbd1 amd64 10.2.7-0ubuntu0.16.04.1 [2,180 kB]
下載:14 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 qemu-block-extra amd64 1:2.5+dfsg-5ubuntu10.14 [33.6 kB]
下載:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 qemu-system-common amd64 1:2.5+dfsg-5ubuntu10.14 [281 kB]
下載:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 libyajl2 amd64 2.1.0-2 [19.6 kB]
下載:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 binfmt-support amd64 2.1.6-1 [50.7 kB]
下載:18 http://archive.ubuntu.com/ubuntu xenial/main amd64 msr-tools amd64 1.3-2 [10.6 kB]
下載:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpu-checker amd64 0.7-0ubuntu7 [6,862 B]
下載:20 http://archive.ubuntu.com/ubuntu xenial/main amd64 ipxe-qemu all 1.0.0+git-20150424.a25a16d-1ubuntu1 [718 kB]
下載:21 http://archive.ubuntu.com/ubuntu xenial/main amd64 libaio1 amd64 0.3.110-2 [6,356 B]
下載:22 http://archive.ubuntu.com/ubuntu xenial/main amd64 libasound2-data all 1.1.0-0ubuntu1 [29.4 kB]
下載:23 http://archive.ubuntu.com/ubuntu xenial/main amd64 libasound2 amd64 1.1.0-0ubuntu1 [350 kB]
下載:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 libbluetooth3 amd64 5.37-0ubuntu5 [61.3 kB]
下載:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 libcaca0 amd64 0.99.beta19-2build2~gcc5.2 [202 kB]
下載:26 http://archive.ubuntu.com/ubuntu xenial/main amd64 libcacard0 amd64 1:2.5.0-2 [19.7 kB]
下載:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 libflac8 amd64 1.3.1-4 [210 kB]
下載:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 libjpeg8 amd64 8c-2ubuntu8 [2,194 B]
下載:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 libopus0 amd64 1.1.2-1ubuntu1 [159 kB]
下載:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 libpixman-1-0 amd64 0.33.6-1 [231 kB]
下載:31 http://archive.ubuntu.com/ubuntu xenial/main amd64 libvorbis0a amd64 1.3.5-3 [86.8 kB]
下載:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 libvorbisenc2 amd64 1.3.5-3 [70.7 kB]
下載:33 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libsndfile1 amd64 1.0.25-10ubuntu0.16.04.1 [138 kB]
下載:34 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpulse0 amd64 1:8.0-0ubuntu3.3 [249 kB]
下載:35 http://archive.ubuntu.com/ubuntu xenial/main amd64 libsdl1.2debian amd64 1.2.15+dfsg1-3 [168 kB]
下載:36 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libspice-server1 amd64 0.12.6-4ubuntu0.3 [338 kB]
下載:37 http://archive.ubuntu.com/ubuntu xenial/main amd64 libusbredirparser1 amd64 0.7.1-1 [13.6 kB]
~# 

這方式除了免自行下載且方便快速的可以安裝完qemu,此篇使用qemu-img工具,並未驗證實際qemu在Bash on Winodws上的可用性。

Arch

Arch已經提供好安裝套件,執行安裝指令進行安裝

pacman -S extra/qemu

安裝完成後執行qemu-img應該能看到執行結果

$ qemu-img
qemu-img: Not enough arguments
Try 'qemu-img --help' for more information

轉換映像檔

qemu-img提供虛擬機器映像檔互轉的功能,功能相當完整,轉換的命令如下

qemu-img -f 來源映像檔案格式 -O 輸出映像檔案格式 來源映像檔名稱 輸出映像檔名稱

檔案格式支援

映像檔格式 qemu-img 格式名稱
VMDK (VMware) vmdk
VHD (Hyper-V) vhd
VHDX (Hyper-V) vhdx
VDI (VirtualBox) vdi
raw raw
image raw
QED (KVM) qed
QCOW (KVM, Xen) qcow
QCOW2 (KVM, Xen) qcow2

範例

丹尼下載一份DD-WRT for X86的映像檔檔名為dd-wrt_x64_full_vga.image要轉換成ESXi能讀取的vmdk,轉換後檔名為dd-wrt_x64_full_vga.vmdk

$ qemu-img -f raw -O vmdk dd-wrt_x64_full_vga.image dd-wrt_x64_full_vga.vmdk

轉換過程中不會有進度條或是任何的訊息,轉換完成會跳回命令提示字元,如果你的檔案非常的大,請耐心等候它完成。如果想要有進度條必需要再加上-p變成有進度條顯示

$ qemu-img -f raw -O vmdk -p dd-wrt_x64_full_vga.image dd-wrt_x64_full_vga.vmdk

轉換過程的進度指示會顯示在下方

$ qemu-img -f raw -O vmdk -p dd-wrt_x64_full_vga.image dd-wrt_x64_full_vga.vmdk
    (100.00/100%)
$

參考資料

更新日誌

日期 內容
2017/08/08 初版

關鍵字

qemu 轉換 convert

qemu-image convert 轉換

image to vmdk

qcow to vmdk

vmdk to qcow

ESXi 映像檔轉換 vmdk

The post ESXi image(raw) 映像檔轉換成VMDK appeared first on 可丁丹尼 @ 一路往前走2.0.

Google Apps Script 設定Spreadsheet Cell為純文字格式

$
0
0

前言

讀此篇文章時必需要俱備Google Apps Script的開發基礎,其文章主要會以快速記錄開發心得所提供的程式內容技巧,有不能理解之處請下留言處留言。

問題

使用setValue輸入數字,但顯示出來的數字被格式化成非預想的結果

123456->12,345

技巧

使用getRange()之後會將取到的資料範圍進行資料修改,SpreadSheet會根據你輸入的資料內容進行判斷它的資料格式,當你輸入為12345時會被判為數字,因而會被被格式化成像這樣12,345,所以除了重設定格式之外,也可以將它設定為純文字就不會有這問題:

    var sheet = SpreadsheetApp.openById(spreadsheetID).getSheets()[sheetIndex];
    var dataRange = sheet.getRange("A2");
    dataRange.setNumberFormat("@");
    dataRange.setValue(value);


官方網頁上有篇Date and Number Formats 提供設定格式的說明,但標題的關系會以為只教你設定日期與數字,但Number format tokens表格有說明設定為raw text的方法:

Token Description
@ Inserts the raw text for the cell, if the cell has text input. Not compatible with any of the other special characters and won’t display for numeric values (which are displayed as general format).

The post Google Apps Script 設定Spreadsheet Cell為純文字格式 appeared first on 可丁丹尼 @ 一路往前走2.0.

Call to undefined method mysqli_stmt::get_result()

$
0
0

Call to undefined method mysqli_stmt::get_result()

前言

讀此篇文章時必需要俱備PHP的開發基礎,其文章主要會以快速記錄開發心得所提供的程式內容技巧,有不能理解之處請下留言處留言。

問題

在測試PHP mysqli提供的statement方式時發生:

"PHP message: PHP Fatal error: Call to undefined method mysqli_stmt::get_result()"

技巧

PHP目前提供MySQL操作方式使用原生的驅動方式,也就是使用C寫成擴展的方式提供,所以必要安裝此擴展才能有完整的功能,此擴展的名稱為mysqlnd,先檢查此套件功能是否有發揮:

執行:

$ php -i|grep -i mysqlnd

結果:

/etc/php5/cli/conf.d/10-mysqlnd.ini,
Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
Client API library version => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
mysqlnd
mysqlnd => enabled
Version => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password
mysqlnd statistics =>
Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
$

或是直接查詢套件有無安裝:

$ apt list|grep mysqlnd
php5-mysqlnd/oldstable,now 5.6.33+dfsg-0+deb8u1 amd64 [installed]

有安裝會有[installed]提示,如果未看到請立刻按裝mysqlnd,以Debian/Ubuntu為例:

apt install php5-mysqlnd

參考資料

[RESOLVED] call to undefined method mysqli_stmt::get_result()

The post Call to undefined method mysqli_stmt::get_result() appeared first on 可丁丹尼 @ 一路往前走2.0.

Block implicitly retains ‘self’; explicitly mention ‘self’ to indicate this is intended behavior Insert ‘self->’

$
0
0

Block implicity retains self explicitly metion self to

當你更新Xcode 9.3以上時,開舊版本專案進行重新編譯時會發生下列情況:

Block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior Insert 'self->'

新版Xcode針對CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF這問題的預設值為Yes,請查看一下你的設定是否為No

2018-05-24_16-28-20

如果你的專案是舊版本Xcode升級上來,但看到此預設值正確但無作用時,必需要做一個動作:

將設定值先改為Yes後,再重新選擇No,如此一來Xcode才會把新的值寫進去你的專案。然而這個設定值的用意就是讓你使用blocks省略在變數前面加上self->,讓程式編譯時自動幫你加上,加上這個用意是你使用block時避免此變數被release掉,讓它retain。

The post Block implicitly retains ‘self’; explicitly mention ‘self’ to indicate this is intended behavior Insert ‘self->’ appeared first on 可丁丹尼 @ 一路往前走2.0.

error:Multpile commands produce That command depends on command in Target ‘HearingPod’: script phase “[CP] Copy Pods Resources

$
0
0

error:That command depends on command in Target ‘HearingPod’: script phase “[CP] Copy Pods Resources”

Xcode 10變更一些編譯規則及方法,第一要解決的就是與CocoaPods的機制,編譯時會出現:

error: Multpile commands produce.........That command depends on command in Target 'HearingPod': script phase “[CP] Copy Pods Resources

這個一開始很傷腦,不知道發什麼問題,最後查一下資料得到的結論是CocoaPods會有Script將用到的資源Copy至專案下,但目前的Xcode 10似乎不需要再這麼處理,解決方法如下:

Xcode 10開啟你的專案,並選擇你專案的名稱,不要指向Pods,前往Build Phase項目後再往下找到Output Files會看到如下的內容:

${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}

將它刪除後再重新Build就能解決。

參考資料

Xcode 10 的坑:Multiple commands produce

Xcode 10 beta3 Error: Multiple commands produce

The post error:Multpile commands produce That command depends on command in Target ‘HearingPod’: script phase “[CP] Copy Pods Resources appeared first on 可丁丹尼 @ 一路往前走2.0.

GIT 加入空白目錄至儲存池

$
0
0

前言

讀此篇文章時必需要俱備Git的使用基礎,Git基本介紹建議參考連猴子都能懂的Git入門指南,其文章主要記錄一些小技巧或語法快速使用,有不能理解之處請下留言處留言。

問題

Git版本控制中加入空白目錄

Git進行專案版本控制,有時需要一個空白目錄當基礎,像是輸出暫存、輸出紀錄檔時,會將檔案存放的目錄就很適合,假設你的專案名稱目錄DYPrj,要建立一個空白目錄Output加入專案:

DYPrj+
     +Output

這次要利用GIT本身提供的.gitignore進行條件排除:

*
!.gitignore

將此內容存成.gitignore並存放在空白目錄中就能達到效果。

DYPrj+
     |
     +Output+
            |.gitignore

之後再進行提交,未來Output裡面是否有檔案都不會影響到後來提取新版的程式碼

The post GIT 加入空白目錄至儲存池 appeared first on 可丁丹尼 @ 一路往前走2.0.

WordPress 使用Domain socket連接資料庫

$
0
0

WordPress 使用Domain socket連接資料庫 Using WordPress with a MySQL Unix Socket

前言

讀此篇文章時必需要俱備WordPress的使用基礎,其文章主要記錄一些小技巧或語法快速使用,有不能理解之處請下留言處留言。

問題

資料庫提供Domain socket連線方式,Wordpress也使用該方式

1.確認資料庫提供的Domain socket位址 在Linux主機內執行netstat -ln|grep "unix.*mysql"取得結果:

root@SAN-3:/volume1/web# netstat -ln|grep "unix.*mysql"
unix  2      [ ACC ]     STREAM     LISTENING     23090584 /run/mysqld/mysqld10.sock
root@SAN-3:/volume1/web#


/run/mysqld/mysqld10.sock記錄起來,等一下要提供至Wordpress設定。

2.開啟Wordpress設定檔wp-config.php 增加或尋找DB_HOST關鍵字,加入或取代內容:

define('DB_HOST', 'localhost:/run/mysqld/mysqld10.sock');

這是告訴Wordpress要使用Domain socket方式連接,其帳號、密碼、資料表設定方式相同,如:

define('DB_NAME', 'web_wp');
define('DB_USER', 'root');
define('DB_PASSWORD', '123456');

The post WordPress 使用Domain socket連接資料庫 appeared first on 可丁丹尼 @ 一路往前走2.0.


Networking to NetworkManager

$
0
0

Networking to NetworkManager

安裝Debian過程,有選定桌面程式如:Gnome,Kde,xfce等,會被內定安裝NetworkManager來管理網路連線,這是後期很方便的網路連線管理程式,它連Wifi一樣也能管理的很棒,但如果你安裝過程未選擇桌面程式,那預設安裝是不會幫你安裝這套NetworkManager,會使用傳統透過interfaces設定方式來設定,用法參照Debian NetworkConfiguration

安裝NetworkManager

更動網路管理功能有可能會造成網路斷線、IP無法自動取得等問題,在之前先前缺少的套件先安裝:

sudo apt-get install NetworkManager

變更預設網路管理程式

確保要被NetworkManager管理介面時,需要開啟/etc/network/interfaces讓被管理介面卡不在之中,假設介面名稱ens33如:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug 
iface ens33 inet dhcp

刪掉與ens33有關的設定,使它不再被Networking管理:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

重新啟動管理networking

sudo systemctl restart networking

啟動NetworkManager

sudo systemctl start NetworkManager

指定管理介面卡

真正連立連線之前要將介面卡設定被NetworkManager管理:

nmcli device set ens33 managed yes

啟動NetworkManager

sudo systemctl start NetworkManager

確認連線

NetworkManager正確接手網路連線管理時,會自動替要管理的介面建立一個連線設定檔:

nmcli connection show

結果:

NAME                UUID                                  TYPE            DEVICE
Wired connection 1  b9b5976c-8372-3438-beda-98700652fca2  802-3-ethernet  ens33

查看一下IP是否取得:

ip a

結果:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:37:fd:d0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.19.45/24 brd 192.168.19.255 scope global dynamic ens33
       valid_lft 3193sec preferred_lft 3193sec
    inet6 fe80::f82a:20d5:149e:f2a2/64 scope link
       valid_lft forever preferred_lft forever

手動建立連線設定檔

nmcli connection add type ethernet conn-name [設定檔名稱] ifname [介面名稱]

如:

nmcli connection add type ethernet con-name Wired ifname ens33

啟動此設定檔

nmcli connection up Wired

參考資料

How to Configure and Manage Network Connections Using ‘nmcli’ Tool

Connecting to a Network Using nmcli

[Ethernet device not managed](https://askubuntu.com/questions/882806/ethernet-device-not-managed)

nmcli 修改網卡設定

網絡配置之nmcli

The post Networking to NetworkManager appeared first on 可丁丹尼 @ 一路往前走2.0.

Javascript btoa String contains an invalid character

$
0
0

Javascript btoa String contains an invalid character

前言

讀此篇文章時必需要俱備Javascript的使用基礎,其文章主要記錄一些小技巧或語法快速使用,有不能理解之處請下留言處留言。

問題

將JSON使用btoa轉成base64編碼時發生錯誤InvalidCharacterError: String contains an invalid character 這問題發生在轉換時提供的內容不能有換行符號,不然造成轉換失敗或中斷,除了刪除它之外,可以使用2指令,第1個unescape除理關鍵字元外,再使用encodeURIComponent將特殊字編碼成URI格式就能順利轉換成base64,之後再利用decodeURIComponent、escape反轉回來後再傳入atob解出真正的JSON,其功能寫成functon

// UTF-8 string to base64 encoded ascii
function utf8_to_base64(str) {
    return window.btoa(unescape(encodeURIComponent(str)));
}
// base64 encoded ascii to UTF-8 string
function base64_to_utf8(str) {
    return decodeURIComponent(escape(window.atob(str)));
}

The post Javascript btoa String contains an invalid character appeared first on 可丁丹尼 @ 一路往前走2.0.

N305RE 升級 64MB RAM

$
0
0

N305RE 升級 64MB RAM

前言

看此篇文章時,請確定您理解以下相關資訊

文章介紹升級的過程有極大的硬體損壞、軟體變磚的風險,請自行評估是否有能力完成再執行。

升級RAM

首先將原本的DDR 32MB(16Mx16bitsx4banks)記憶體更換為DDR 64MB(32Mx16bitsx4banks)。此次使用是從筆記型電腦上拆下來的顆粒NT5DS32M16BS-6K

NT5DS32M16BS-6K

使用熱風槍、烙鐵相關工具將記憶體置換成64MB。

連接Debug Console

路由器在接近出貨或開發時,會利用串列傳輪的方式將路由器開機內容輸出,拆開N305RE後就能看到已經焊好的連接線

連接線請使用3.3V相位輸出的串列連接線,然後將GND相接、RX接連接線的TXTX接連接線的RX後,在電腦上開啟串列埠應用程式後將機器上電,之後就能看到輸出的畫面

CFE version 5.100.138.3 based on BBP 1.0.37 for BCM947XX (32bit,SP,LE)
Build Date: Mon May  2 16:06:18 KST 2011 (bcm5357@localhost.localdomain)
Copyright (C) 2000-2008 Broadcom Corporation.

Init Arena
Init Devs.
Boot partition size = 131072(0x20000)
Found an ST compatible serial flash with 64 64KB blocks; total size 4MB
et0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 5.100.138.3
CPU type 0x19749: 300MHz
Tot mem: 32768 KBytes

Device eth0:  hwaddr B8-55-10-E9-28-5A, ipaddr 192.168.0.1, mask 255.255.255.0
        gateway not set, nameserver not set

進入CFE

先按下CTR+C之後將機器上電,CFE偵測到此按鍵會進入命令模式

CFE version 5.100.138.3 based on BBP 1.0.37 for BCM947XX (32bit,SP,LE)
Build Date: Mon May  2 16:06:18 KST 2011 (bcm5357@localhost.localdomain)
Copyright (C) 2000-2008 Broadcom Corporation.

Init Arena
Init Devs.
Boot partition size = 131072(0x20000)
Found an ST compatible serial flash with 64 64KB blocks; total size 4MB
et0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 5.100.138.3
CPU type 0x19749: 300MHz
Tot mem: 32768 KBytes

Device eth0:  hwaddr B8-55-10-E9-28-5A, ipaddr 192.168.0.1, mask 255.255.255.0
        gateway not set, nameserver not set
Startup canceled
CFE> ^C
CFE> ^C
CFE> 

查看NVRAM訊息

CFE> nvram show
:
:
sdram_config=0x103
:
:
:

修改記憶體參數,注意!注意!注意!修改此參數如果不正確時,CFE會變磚

CFE> nvram set sdram_config=0x003
*** command status = 0
CFE> 

修改後請務必查看參數是否正確變更

CFE> nvram show
:
:
sdram_config=0x003
:
:
:

確定變更為0x003之後,執行儲檔動作,寫入flash

CFE> nvram commit
*** command status = 0
CFE> 

重新開機,確認記憶體正確識別

CFE> reboot
Decompressing...done


CFE version 5.100.138.3 based on BBP 1.0.37 for BCM947XX (32bit,SP,LE)
Build Date: Mon May  2 16:06:18 KST 2011 (bcm5357@localhost.localdomain)
Copyright (C) 2000-2008 Broadcom Corporation.

Init Arena
Init Devs.
Boot partition size = 131072(0x20000)
Found an ST compatible serial flash with 64 64KB blocks; total size 4MB
et0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 5.100.138.3
CPU type 0x19749: 300MHz
Tot mem: 65536 KBytes

Device eth0:  hwaddr B8-55-10-E9-28-5A, ipaddr 192.168.0.1, mask 255.255.255.0
        gateway not set, nameserver not set

The post N305RE 升級 64MB RAM appeared first on 可丁丹尼 @ 一路往前走2.0.

健保卡片驗證元件安裝失敗

$
0
0

健保卡片驗證元件安裝失敗

安裝很多台機器,但唯只有一台Windwos 10安裝有問題,將整個msi安裝檔解開後一一的比對、實驗後發現解法方式,不能安裝的可以試看看!

後期這類需要讀卡機的網站都會需要使用者安裝程式在自已的機器上,它其實是使用程式在本機開啟本地端連線,利用此程式與讀卡機溝通,這樣就沒有瀏覽器相容性問題,也能在各個平台上使用!也不需要以前特定要用IE才行的問題。但因為本機執行,健保卡安裝程式會變更系統中的hosts檔,但因權限不足會造成無法變更的問題。

拷貝hosts檔至其他地方

編輯hosts檔增加本地連線名稱

編輯你重新拷貝的hosts,並加入本地連線名稱

127.0.0.1 iccert.nhi.gov.tw #mNHIICC use this

並存檔。

檔案拷貝覆蓋至原hosts檔

將你拷貝的hosts檔整個拷貝並覆蓋至原本路徑

整體上完成,重新安裝健保卡元件的安裝程式應該就可以成功!

The post 健保卡片驗證元件安裝失敗 appeared first on 可丁丹尼 @ 一路往前走2.0.

COM Name Arbiter Tool 刪除 清除 被佔用COM PORT

$
0
0

COM Name Arbiter Tool 刪除 清除 被佔用COM PORT

最近使用USB to Serial的機會變高,但令人困擾的是想要變更指定的COM名稱,卻會看到使用中的字樣,但卻不知道怎麼處理?

此時請教Google大神得到的大都是要自已變更Registry的內容,但主要都是教怎麼釋放所有的COM名稱,卻無法知道有哪些設備使用COM名稱。

經過一翻尋找,終於看到一款小工具COM Name Arbiter Tool,而且這與我經常使用的USBDLM是同一位開發者,到網站上下載並解壓縮直接執行。

執行畫面如下:

上圖紅框處代表你的設備佔用COM6,但此裝置還未上線,這就是佔用的原因,但清除之前,執行此軟體必需使用Administrator權限才行,否則就如上圖畫面上的Button是處灰色。

按下上圖紅框處的Remove non-present devices就會將未插電真正使用COM的名稱全刪除,此時Kernel Name上的--會消失此時COM6就不會被佔用:

The post COM Name Arbiter Tool 刪除 清除 被佔用COM PORT appeared first on 可丁丹尼 @ 一路往前走2.0.

Viewing all 79 articles
Browse latest View live