標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (119) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (127) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (3) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2024年9月11日 星期三

VirtualBox重設硬碟大小

 https://tech.digitgeek.net/t/199.html

 

VirtualBox重設硬碟大小

改變VirtualBox硬碟大小按下列步驟執行:

(1)VirtualBox 虛擬PC關機狀態

(2)使用系統管理者的身分來開啟"cmd"

(3)在命令提示視窗切換VirtualBox安裝目錄,例如: C:\Program Files\Oracle\VirtualBox

(4)使用指令" VBoxManage modifyhd "修改vdi硬碟大小

例如:想將虛擬硬碟修改成40GB

VBoxManage modifyhd C:\Users\USER\Desktop\WINS2019\WINS2019.vdi -–resize 40960

(5)執行後,虛擬硬碟就被修改為40GB

(6)虛擬PC開機進入系統
到"系統管理工具"==>"電腦管理"

將滑鼠移至舊的分割區C:,按右鍵,選取"延伸磁碟區"(見圖2)

進入後如圖4,直接按"下一步",即可完成,如圖5

到此即完成修改硬碟大小及增加C槽大小的任務

[圖1]

[圖2]

[圖3]

[圖4]

[圖5]

 

 

Ubuntu Linux 檔案系統擴充邏輯分割區

 https://www.concerto.one/posts/2021-09-28-Extend-Ubuntu-Linux-Volume.html

 

【運維管理】Ubuntu Linux 檔案系統擴充邏輯分割區

虛擬機更動磁區的實體大小之外,還需要追加擴充邏輯磁區,才能百分百將所有的實體磁碟空間納入儲存用途

虛擬機的設置中,僅更動硬碟的容量是不夠的

首先觀察虛擬機的硬碟 8G,執行 lsblk 檢查磁區的紀錄看起來如下。

[root@ubuntu]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda           8:0     0  8G   0  disk 
└─sda1        8:1     0  1M   0  part 
└─sda2        8:2     0  1G   0  part /boot
└─sda3        8:3     0  7G   0  part
  └─u-vg-lv   253:0   0  7G   0  lvm  /

接著,將虛擬機硬碟從 8G 更改至 16G 時,會發現 lsblk 檢查磁區的紀錄與前述相同,沒有反應出更動後新的變化。

執行 df -hT 會發現可用的儲存空間依然只有 4.4G,與原來完全相同。

[root@ubuntu]$ df -hT
Filesystem          Size  Used Avail Use% Mounted on
...
/dev/mapper/u-vg-lv 6.9G  2.2G 4.4G  34%  /
...

根據 lsblk 顯示的磁碟設備名稱與分割區位置來更改磁碟容量

從前述執行 lsblk 可以得知,我們要擴充分割區的磁碟名稱為 sda ,而分割區位置在第三個。所以構成的 growpart 參數如下。

[root@ubuntu]$ sudo growpart /dev/sda 3

再一次執行 lsblk 將會看到設備 sda 磁碟的尺寸從 8G 變成 16 G。但是邏輯分割區 u-vg-lv 依然是 7G。

[root@ubuntu]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda           8:0     0  16G  0  disk 
└─sda1        8:1     0  1M   0  part 
└─sda2        8:2     0  1G   0  part /boot
└─sda3        8:3     0  15G  0  part
  └─u-vg-lv   253:0   0  7G   0  lvm  /

擴充邏輯分割區將所有空間納入檔案系統

執行 pvs,根據顯示的結果,可以看出需要更動的磁碟名稱是 /dev/sda3。所以擴充設備分割區的指令如下。

sudo pvs
sudo pvresize /dev/sda3

接著擴充邏輯分割區的檔案系統。u-vg-lv 是掛載在磁碟設備 /dev/sda3 上邏輯分割區的名稱。

lvextend -r -l +100%FREE /dev/mapper/u-vg-lv

再一次執行 lsblk 檢查 lvextend 的執行結果。可以看到邏輯分割區 u-vg-lv 從原來的 7G 變成 15G。

[root@ubuntu]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda           8:0     0  16G  0  disk 
└─sda1        8:1     0  1M   0  part 
└─sda2        8:2     0  1G   0  part /boot
└─sda3        8:3     0  15G  0  part
  └─u-vg-lv   253:0   0  15G  0  lvm  /

2024年9月6日 星期五

查看so文件架构 so文件怎么查看

 https://blog.51cto.com/u_16213724/7325973

ldd命令

linux 下可以使用ldd查看可执行文件所需要的动态链接库(*.so)。
注:下文用so代替动态链接库文件。

// 举个例子
~$ ldd /bin/ls
    linux-vdso.so.1 =>  (0x00007ffe06386000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fd686b54000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd68678b000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fd68651a000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd686316000)
    /lib64/ld-linux-x86-64.so.2 (0x0000563411315000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd6860f9000)

问题

如果ldd命令没有找到对应的共享库文件和其具体位置?

可能是两种情况引起的:

1)共享库没有安装在该系统中;

2)共享库保存在/etc/ld.so.conf文件列出的搜索路径之外的位置。

通常情况下,许多开源代码的程序或函数库都会默认将在即安装到/usr/local目录下的相应位置(如:/usr/local/bin 或 /usr/local/lib)以便于系统自身的程序或函数库相区别。而许多linux系统的/ect/ld.so.conf 文件中默认又不包含 /usr/local/lib 。因此出现安装了共享库,但是却无法找到共享库的情况。

解决办法:
检查/etc/ld.so.conf文件,如果其中缺少/usr/local/lib 目录,就添加进去;
注意:在修改了/etc/ld.so.conf 文件或者在系统中安装了新的函数库之后,需要运行命令 ldconfig ,该命令用来刷新系统的共享库缓存,即 /etc/ld.so.cache 文件。为了减少共享库系统的库搜索时间,共享库系统维护了一个共享库so名称的缓存文件 /etc/ld.so.cache 。 因此,在安装新的共享库之后,一定要运行 ldconfig刷新该缓存。

Ubuntu 安裝 Python 3.12.3 + OpenSSL (openssl-3.3.2.tar.gz)

安裝OpenSSL
1. https://openssl-library.org/source/index.html 下載 OpenSSL source code (wget ...)
2. ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared (因為Python安裝時,只會吃ssl底下的目錄)
3.make; make test; sudo make install
4.
echo "/usr/local/ssl/lib64" > /etc/ld.so.conf.d/openssl.conf
5.sudo
ldconfig -v

安裝Python
1.(應該是需要這些)
  sudo apt-get install libbz2-dev
  sudo apt-get install libctypes-dev
  sudo apt-get install libffi-dev
  sudo apt-get install libncurses-dev
  sudo apt install libgdbm-compat-dev
  sudo apt-get install lzma
  sudo apt-get install liblzma-dev
  sudo apt-get install uuid-dev lzma-dev liblzma-dev
  sudo apt-get install nis
  sudo apt-get install libnsl2 libnss-nis
  sudo apt-get install libncurses5-dev
  sudo apt-get install libncurses-dev
  sudo apt-get install libreadline-dev
  sudo apt-get install nis
  sudo apt-get install tk
  sudo apt-get install tk-devel
  sudo apt-get install tk*dev
  sudo apt-get install nis
  sudo apt-get install libnsl-dev libnsl2
  sudo apt-get install libsqlite3-dev
  sudo apt install libssl*dev
或者
sudo apt-get update sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev libffi-dev liblzma-dev git

2. ../configure --enable-optimizations --with-openssl=/usr/local/ssl --with-ensurepip=install --with-openssl-rpath=/usr/local/ssl/lib64/

3. vim configure

Change

OPENSSL_LDFLAGS=-L/usr/local/ssl/lib

To:

OPENSSL_LDFLAGS=-L/usr/local/ssl/lib64

4. make -j$(nproc) ; sudo make altinstall

這裡可以找到 firefox 較舊的版本喊所屬OS平台

 https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/?_gl=1*114952f*_ga*NDQ0MjQ3MDMzLjE2NjkzNjAwNzQ.*_ga_2VC139B3XV*MTcyNTYxMDg5Ni4xMC4wLjE3MjU2MTA4OTYuMC4wLjA.

如果是linux,
1. 解壓縮,將目錄後放到 /usr/lib/ 之下,形成 /usr/lib/firefox,
2. 並下sudo ln -s /usr/lib/firefox /usr/bin/firefox 指令就可以了

2024年9月5日 星期四

Ubuntu sqlpus 啟動會報錯 sqlplus: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

$ sudo apt install libaio1 libaio-dev
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1

Ubuntu 的library 和CentOS 名稱不太一樣...沒辦法

2024年9月4日 星期三

使用Python 寫爬蟲範例

############################ ubuntu ############################
$ sudo apt install python3-pip
$ sudo apt install python3-selenium
$ sudo apt install python3-bs4
$ sudo apt install python3-requests
$ sudo apt install xvfb
$ export DISPLAY=:99
$ Xvfb :99 -screen 0 1024x768x16 &

############################ fedora ############################
$ sudo yum install python3-pip
$ sudo pip3 install selenium
$ Xvfb :99 -screen 0 1024x768x16 &sudo pip3 install bs4


$ wget https://github.com/mozilla/geckodriver/releases/download/v0.35.0/geckodriver-v0.35.0-linux64.tar.gz
$ tar xvf geckodriver-v0.35.0-linux64.tar.gz
$ sudo cp geckodriver /usr/local/bin/

$ cat get_fedex.py
#!/usr/bin/python3

# 載入需要的套件
from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
from selenium.webdriver.firefox.service import Service
import requests
import time

# 開啟瀏覽器視窗(Chrome)# 方法一:執行前需開啟chromedriver.exe且與執行檔在同一個工作目錄
#driver = webdriver.Chrome()
#service = Service(executable_path='/usr/local/bin/geckodriver')
service = Service('/usr/local/bin/geckodriver')
driver = webdriver.Firefox(service=service)
#driver = webdriver.Firefox()

# 方法二:或是直接指定exe檔案路徑
#driver = webdriver.Firefox("/usr/local/bin")

driver.implicitly_wait(3) #等10秒,讓網頁資料load進來
driver.get("https://www.fedex.com/zh-tw/shipping/surcharges.html") # 更改網址以前往不同網頁
#time.sleep(100)

#driver.find_elements(By.CLASS_NAME,"fxg-gdpr__accept-all-btn cc-aem-c-button cc-aem-c-button--responsive cc-aem-c-button--primary")[0].click()
#buttons=driver.find_elements(By.CLASS_NAME,"fxg-gdpr__accept-all-btn cc-aem-c-button cc-aem-c-button--responsive cc-aem-c-button--primary")

button=driver.find_elements(By.CSS_SELECTOR,".fxg-gdpr__accept-all-btn")[0] #使用Selenium IDE找出來 "accept all cookie" 的按鈕
print(button)
button.click()

driver.refresh() #接受cookie後,要將網頁refresh, 重load資料

#使用Selenium IDE找出來要抓資料
data=driver.find_elements(By.CSS_SELECTOR,".fuelsurcharg-dynamic-datalookup .cc-aem-c-table__tbody:nth-child(2) .cc-aem-c-table__tbody__td:nth-child(1)")[0]
print(data.get_attribute("innerText"))
data=driver.find_elements(By.CSS_SELECTOR,".fuelsurcharg-dynamic-datalookup .cc-aem-c-table__tbody:nth-child(2) .cc-aem-c-table__tbody__td:nth-child(2)")[0]
print(data.get_attribute("innerText"))
data=driver.find_elements(By.CSS_SELECTOR,".fuelsurcharg-dynamic-datalookup .cc-aem-c-table__tbody:nth-child(2) .cc-aem-c-table__tbody__td:nth-child(3)")[0]
print(data.get_attribute("innerText"))

#print (driver.title)
#html=driver.page_source
#print (html)

#soup = BeautifulSoup(driver.page_source, 'lxml')
#print(soup.prettify())
#
#with open('index.html', 'w', encoding='utf-8',) as file:
#    file.write(soup.prettify())

driver.close() # 關閉瀏覽器視窗