顯示具有 操作指南 標籤的文章。 顯示所有文章
顯示具有 操作指南 標籤的文章。 顯示所有文章

星期日, 11月 17, 2024

Apache 保護目錄

 Apache 用密碼保護目錄

放在網路上的目錄不希望被隨便存取,需要有密碼保護。這是目前最簡單的方法

1.  要保護的目錄建立 .htaccess
2.  .htaccess 要加以下內容

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

3. 執行以下指令建立使用者帳號密碼
sh -c "echo -n user_name: >> ./.htpasswd"
sh -c "openssl passwd -apr1 >> ./.htpasswd"


全文連結

星期三, 7月 31, 2024

影片:不要浪費錢買課了,喂飯式教你訓練大模型llama3

連結

今天無意間逛到的影片,介紹和示範了 finetune LLM 的方法,如 LORA、QLORA 和 quantization,並簡介了多種訓練、佈署、應用本地 LLM 有關的工具。包括 Unsloth、Torchtune、llama.cpp、LM Studio。

中文 llama 用弱智吧訓練效果竟然比正經的百科好也真神奇 XD

全文連結

星期三, 7月 03, 2024

Doccano docker-compose 檔

Doccano 是我標注 NLP 訓練資料經常用的軟體(咦你不是只有一篇嗎?)。官網教學詳細,但沒有 docker-compose.yml。其實照著官網教學,加上自己補細節就很容易生出來

version: '3'

services:
  doccano:
    image: doccano/doccano
    container_name: doccano
    ports:
      - "8000:8000"
    environment:
      - ADMIN_USERNAME=xxx
      - ADMIN_EMAIL=xxx
      - ADMIN_PASSWORD=xxx
    volumes:
      - ${PWD}/data:/data


指定 container_name 是為了方便下指令,ADMIN_USERNAME、ADMIN_EMAIL、ADMIN_PASSWORD 作用明顯。指定 volumes 是讓 container 關掉後標注的資不會不見(!),不過我個人還是每一段進度就全部匯出存 git 安心點。

全文連結

星期二, 5月 14, 2024

土炮 Windows 11 ISO

最近下定決心,從 PCHome 幫兩台新電腦各買一份 Win11 專業彩盒版,就來折騰自製 Win ISO。流程跟 Win10 不大一樣。

下載 ISO

還是從 http://www.uup.ee/ 找整合更新檔的。

DISM++、NTLite 調整 ISO

DISM++ 目前看來有社群維護,可以調的東西很多,例如禁掉「多嘴的 Cortana」(DISM++界面上的原話 XD)、Windows Defender 等。MSMG 修改 UUP 下載的 ISO 則不方便,需要直接操作 DISM。NTLite 也有一些可調整的項目,例如 Windows Update 等。也把 bitlocker 和系統還原預設不啟用。

虛擬機安裝 Win11

不輸入序號不啟動,一路 Next 裝完 Win11。

關閉 reserved storage

這是這次學到的新教訓,guest OS 裝好第一件事情就是關閉 reserved storage。

如果不在 guest OS 裝好就先關閉 reserved storage,可能導致 sysprep 失敗。第一次安裝時就遇到這問題,登錄檔已經照網路修改,DISM 也顯示 reserved storage 關閉成功,Windows Update 也執行完畢,但 sysprep 一直跳 reserved storage 使用中無法繼續,後來只好整個 guest OS 重裝一遍。

關閉 reserved storage 方法是:regedit,找機碼 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager。我將下列機碼全部修改為 0:ShippedWithReserves、BaseHardReserveSize、BaseSoftReserveSize、HardReserveAdjustment、MinDiskSize、PassedPolicy、TiAttemptedInitialization。而 MiscPolicyInfo 設定為 2,重開機,之後執行 dism /Online /Set-ReservedStorageState /State:Disabled,再 dism /Online Get-ReservedStorageState 確認關閉成功。

安裝需要的軟體

這次裝以下軟體
OpenShell
Explorer patcher
.net 3.5 
VC++ runtime
DirectX(directx_Jun2010_redist)
RPG Maker RTP
Lumicons
MacType
Chrome
Firefox
Bandizip
Potplayer
Notepad++
Conemu
Autohotkey
新酷音
Macrium Free 
PDFXchange viewer
LocaleEmu

OpenShell 還有 Explorer patcher 是為了改善 Win11 反人類 UI。Win11 模仿 MacOS 卻又不到位,放正中央的開始功能表、還有要多按很多次的右鍵選單實在不倫不類,裝這兩個軟體可以把 UI 外觀和行為調回 Win10 甚至 Win7 的樣式,讓我肌肉記憶可以繼續使用,不必從頭建立習慣。

調 Win11 config

用 gpedit 停止自動更新驅動程式,功能性更新延遲 30 天,更新限制在 22H2。移除檔案歷程。Windows 服務自動啟動 smartcard,啟用遠端桌面,把一些檔案(如遠端切掉桌面)放到 public desktop...

Easy Sysprep

還是大概按照這篇使用 Easy Sysprep 進行 sysprep。Easy Sysprep 真的很好用,遇到衝突的問題(例如問題 package)還會提供對應 powershell 指令檔並自動複製到剪貼簿,只要照畫面打指令就好。

過程中必須自己另外準備 Windows PE,第一階段 sysprep 完後,必須用 WinPE 重開機,再執行剛才執行過的 Easy Sysprep 執行檔才能進二階段。這部份太久沒用忘記了,攻略也沒細寫,折騰好久。第二步 sysprep 我好像調整了電源設定(不要自動關閉螢幕、電源 etc),加了管理員帳號,禁用自帶的萬能驅動。砍掉  swapfile.sys 和 pagefile.sys 省下大量空間後,直接生成 install.wim。

做 bootable ISO

這裡又踩了坑,原本我 Win10 ISO 是用 ImgBurn 做的,但是 Win11 ISO 製作出來就是無法開機,甚至原生 ISO 解壓後馬上 ImgBurn 封裝也一樣不行,這時我懷疑可能是 ImgBurn 的問題,畢竟這軟體太久沒更新了。當然也可能是我沒找到正確的設定。

後來是安裝 Windows ADK 解決。Windows ADK 只要安裝「佈署工具」就好。裝好後執行
Oscdimg.exe -b"Efisys.bin" -h -m -o -u2 -udfver102 來源目錄 目標 ISO 檔案
其中 -b 指定 boot file、-h 讓 ISO 包含隱藏檔、-m 忽略 ISO 大小限制(可超過 2G)、-o 設定重複的檔案實際只佔一份空間、-u2 讓 ISO 指定 UDF 檔案系統,-udfver102 指定 UDF 版本號

以上都弄好後,用 VirtualBox 測試可以正常安裝,就可以正式寫 USB 裝系統了。 全文連結

星期五, 10月 27, 2023

Windows 10 改善大小核 task scheduling

準備換新電腦,CPU會上大小核i-13500。本座聽說 Win10 大小核 task scheduling 有問題,會出現小核爆忙大核喝茶圍觀的情況,但又不想升級 Win11 解決,所以去 Google 了解法,等新機器來再實驗。年紀大了,不想一直幫忙最新 OS 解 bug QQ

輸入下列指令,打開電源管理的隱藏選項

powercfg -attributes SUB_PROCESSOR 7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5 -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR 93b8b6dc-0698-4d1c-9ee4-0644e900c85d -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR bae08b81-2d5e-4688-ad6a-13243356654b -ATTRIB_HIDE
powercfg -attributes SUB_PROCESSOR b28a6829-c5f7-444e-8f61-10e24e85c532 -ATTRIB_HIDE

修改電源設定

 

「編輯電源計畫」->「進階電源設定」把兩個有關異質執行緒的都改成慣用更具「效能」的處理器。中文翻譯不大好,更具「效率」的處理器指的是更省電的 E-core,還有要選「慣用更具效能的處理器」,而非「更具效能的處理器」,前者大核忙時餵小核,後者會只用大核。

全文連結

星期二, 10月 24, 2023

土炮 Windows 10 ISO

因為平常會使用至少兩台桌電和一台筆電,最近又可能組新電腦,就來研究怎麼自製 Win10 ISO,避免每次新安裝一台電腦都要重灌一堆軟體才能做映像檔 。

個人步驟如下

找 ISO 檔

http://www.uup.ee/ 提供的檔案可以整合更新檔 

使用 NTLite

去除 Windows Defender (我用其他免費防毒)、Cortana,其中組件要移除,後方對應設定要改。並調整 Windows 10 更新為自動下載但不自動安裝。禁止自動升級驅動程式(!),禁止在使用流量計費網路的時候下載更新。

虛擬機建立系統

用 VirtualBox 建 VM,用 NTLite 精簡好乾淨 ISO 裝系統,系統要建兩個硬碟(另一個槽後面要拿來暫存自建的 install.wim),預裝一卡車軟體,中間當然重要步驟都要快照,安裝軟體包括:

Locale Emulator
.Net framework 3.5、4.8
Directx 9.0C
Lumicons
Mozilla Firefox
Google chrome
Mactype
Notepad++
ConEmu
各版本 RPG Maker runtime
新酷音輸入法
Macrium Reflect Free
BandiZip
VC runtime 網路上 all-in-one

系統微調

a. 裝好後用以下指令讓 Notepad++ 完全取代 Notepad

reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v "Debugger" /t REG_SZ /d "\"%ProgramFiles%\Notepad++\notepad++.exe\" -notepadStyleCmdline -z" /f

b. Win+R --> shell:startup--> 建立 .ahk 檔案,輸入以下內容,讓 Ctrl-space 可以代替 Win-Space,微軟注音移除。

^Space::#Space

未來安裝英文語言包後,這些變更可以達成 Ctrl-Space 切換新酷音,不會被 Windows 10 的 Shift 和輸入法搞的很不習慣

c. 這次 Stopupdates10 暫時沒裝,先試試有沒有其他方法確保能裝安全性更新,同時避免被硬塞 Windows 11。上次用了 Stopupdates10 雖然擋了更新,但是還原不回來 QQ

d. 關掉系統還原

e. 照這篇用 gpedit 去除最近使用過的檔案紀錄

f. 用這篇gpedit 方法限制 Windows 最多更新到 20H2(主要是不想被硬塞 Windows 11) 

系統一般化

sysprepd 還原到 OOBE、完事後關機。中間遇到衝突的軟體,參考這篇內容,用 Powershell remove-appxpackage 指令去除。

Dism 打包

我用 Macrium Reflect Free 建立的救援媒體,下

dism /Capture-Image /ImageFile:D:\install.wim /CaptureDir=E: /Name:MyWin10Image /Compress:fast

此處注意,dism 後面參數不需要 /boot。

建立土炮 Windows 安裝資料夾

dism 打包的 install.wim 用共享資料夾傳到 host PC。把先前 NTLite 精簡過的 ISO 解壓縮到暫時目錄,裡面的 source/install.wim 用自製 install.wim 蓋掉。

建立可開機 ISO

用 imgburn 將上個步驟的暫時目錄建立為 bootable ISO,其中「選項」我選擇包含隱藏、系統檔,檔案系統我選 UDF,「進階」->「可開機光碟」一定要勾選讓映像檔可開機,下方開機映像檔指向映像檔目錄 boot\etfsboot.com,載入碟區應為 8(我用 64bit ISO),其實 imgburn 偵測到燒錄內容有 install.wim,會自動偵測並警告參數錯誤,一律照 imgburn 的建議做修改! 

測試

VirtualBox 開另外一台 VM,用新建的 ISO 檔安裝系統,確認系統能進入桌面,額外裝的一大堆程式都在,完成!

全文連結

星期日, 11月 06, 2022

Jupyter notebook module 找不到除錯

參考文章連結 

今天玩 python NLP 遇到鬼打牆現象:明明已經 !pip install spacy 但 jupyter 執行 import spacy 一直說 module not found。 排查後才發現是 jupyter kernel 的問題。我 docker container 原本就自帶 python 3.7,apt-get install 又自己裝了一套 python 3.9 並只認自帶的版本,兩者各自獨立,前者裝的 package 後者找不到。 

後來 Dockerfile 做了些設定

apt-get install jupyter-client
pip install ipykernel
python -m ipykernel install --user

其中裝 jupyter-client 是為了能執行 jupyter kernelspec list。後兩者則是讓 jupyter 認我裝的 python 而非 jupyter 自帶的。Dockerfile 改好後 rebuild 問題解決。

全文連結

星期四, 9月 22, 2022

Docker 取回硬碟空間

sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"
Docker container 長時間執行後常遇到大量佔據硬碟空間,docker system prune 沒用,一個可能兇手就是大量 container log。用指令把冗餘 log file 清掉就能取回空間。新版 docker 好像有 log rotation 機制,有機會再研究 全文連結

星期五, 5月 27, 2022

Windows 下簡單安裝 Python 3.9 和 PIP 方法

出處

雖說在 Windows 下寫 Python 大多時候我靠 WinPython 解決,但特殊情況下可能需要可攜、精簡的 Python 執行環境。官方的 python windows embeddable package 內容簡單,但缺少 PIP,而這篇文提供了裝好 PIP 的方法。

修改 python39._pth

第一行加入 Lib/site-packages,最後一行 import site 移除註解,改好後檔案類似   

Lib/site-packages
python39.zip
.

# Uncomment to run site.main() automatically
import site

下載安裝 PIP

接下來進 python 根目錄,下載 get-pip.py,然後用 python 執行

python get-pip.py

設定可臨時改動 PATH 的腳本

set PATH=%PATH%;%CD%;%CD%\Scripts

寫好存檔後在 python 目錄下執行。

一切弄好後,試驗 pip install selenium 成功!

全文連結

星期日, 4月 10, 2022

FFMpeg 影片批次轉檔

 出去玩時喜歡手機錄影,每次回來都一堆影片檔。原始檔案都很大,直接上傳太佔空間,需要批次壓縮。

原本作法是用 anyvideo converter 批次處理,但 GUI 操作繁瑣,也不喜歡裝癰腫的軟體。後來發現 ffmpeg 也可以做一樣的事情。

FFMpeg 命令列產生器

先用上方連結點選 GUI,頁面會自動轉成 FFMpeg 需要的命令列參數。可以把它記下,不用每次都去網頁點,我得到的參數是這樣的:

ffmpeg -i 輸入影片 -c:v libx264 -preset slow -crf 20 -c:a copy 輸出影片


套上 Windows cmd 下可用的迴圈語法,就是

for /r "來源目錄" %a in (*.mp4) do ffmpeg -i "%a" "輸出目錄\%~na.mp4" -c:v libx264 -preset slow -crf 20 -c:a copy
用這方式就不需要每次都開 GUI 調參,目錄指定好就流水線處理到底了。

全文連結

星期四, 1月 20, 2022

QNAP docker 建置 nginx reverse proxy

問題背景:我開發的關鍵服務建置在公司內虛擬機(VM),虛擬機放實體 NAS( QNAP)。基於未知原因,公司內某些網段的電腦無法直連 VM,tracert 顯示路由到 default gateway 就掉。

Bug 還在協商溝通,暫時解不掉,只能先想辦法繞過。因關鍵服務大多利用 HTTP,所以決定用 nginx 建立 reverse proxy 解決。

整件事最大困難:QNAP 系統高度自製,很多資料找不到。很多工具沒有裝(例如 apt-get)。

本來考慮用 QNAP 軟體市集找 nginx,失敗,改用 container station 上。用 nginx container,以 docker volume 覆蓋設定檔。

然後發現 container station GUI 並不友好。例如 exposed port、volume 等參數每次建立 container 都要重新指定,非常麻煩。docker volume 還只能指定一整個目錄,無法只覆蓋目錄下的單一檔案,所以萬一 config 檔同目錄還有其他檔案就不好處理。

後來解法是 ssh,command line 用 docker 指令就好。container station 的 GUI 只是套殼,其實沒必要用。docker 指令操作結果也會反映在 container station 的介面上。File Station 看到的 Public 資料夾在 /share/Public。文字編輯可以用 Text Editor 就不必用沒調整過的 vi,還支援瀏覽器貼上!

QNAP 上 docker 操作 nginx 我用的指令如下:

docker run --rm -p 9080:9080 -p 8888:8888 -p 9090:9090 --name nginx -v ${PWD}/minimal.conf:/etc/nginx/nginx.conf:ro -d nginx


nginx.conf 設定檔長這樣
events {}

http {
client_max_body_size 0;

server {
listen 9080;
server_name <QNAP 內網 IP>:9080;
proxy_set_header Host <QNAP 內網 IP>:9080;

location / {
proxy_pass http://<VM IP>:80;
}
}

server {
listen 9090;
server_name <QNAP 內網 IP>:9090;
proxy_set_header Host <QNAP 內網 IP>:9090;

location / {
proxy_pass http://<VM IP>:808;
}
}

server {
listen 8888;
server_name <QNAP 內網 IP>:8888;

location / {
proxy_pass http://<VM IP>:8888;
}
}
}
port 9080 和 9090 分別對應不同 Laravel 服務。port 8888 給 jupyter-notebook 用。

jupyter-notebook 必須修改 NotebookApp.allow_origin 允許 cross origin API 不然修改會無法存檔。

nginx 設定 client_max_body_size 是避免用 notebook 上傳檔案的時候因檔案太大導致上傳失敗,設定 proxy_set_header Host 可避免 Laravel 的 redirection 錯誤導向到 VM IP。

Laravel app 也必須修改,包括:
.env
PROXY_URL = <QNAP 內網 IP>:port
PROXY_SCHEMA = http

app/Http/Middleware\TrustProxies.php
protected $proxies = [
    '**'
];

routes/web.php
$proxy_schema = env('PROXY_SCHEMA');
if (!empty($proxy_url)) {
    URL::forceRootUrl($proxy_url);
}
 
if (!empty($proxy_schema)) {
    URL::forceScheme($proxy_schema);
}

設定好後需重啟 Laravel
其他工具也可以透過 docker 使用。例如使用 git docker container 把 working directory 掛載進去做 commit。就可以繞過 QNAP 一堆東西都沒裝,偏偏還不好修改的問題。
全文連結

星期三, 9月 08, 2021

Onedrive 停用自動更新

原本用 Google Drive 放個人資料,買 Office 365 有附 Onedrive 空間就開始使用 Onedrive。Onedrive 用起來什麼都好,就是會自動更新到新版,然後新版永遠無法啟動(默),於是每次 Onedrive 自動更新後就得重裝。

為了這件事,爬了大量網路文章,網路上提到的方法大多是工作排程器停用 Onedrive standalone update task。微軟官方網頁也是這樣寫的。但事實上 task 停用以後,Onedrive 還是會偷偷自動更新(Windows update 直呼內行!)

今天換思路,直接進 Onedrive 的程式目錄(%localappdata%\Microsoft\OneDrive),找 Update 和 StandaloneUpdater 兩個子目錄(沒有這些目錄則手動創造空白子目錄),右鍵內容 -> 安全性把 System 群組在內所有權限全部勾「拒絕」,並實驗確認目錄無法修改。

設好之後故意打開 Onedrive standalone update task,結果 Onedrive 無法更新,停留在穩定的舊版。討厭的新版再見~再也不用無限重裝舊版了 XD
全文連結

星期四, 9月 02, 2021

Vast.ai 發現

最近想試試 TextCNN 看能不能解一個問題,把塵封許久,裡面還有 $8 credit 的 vast.ai 請出來。

原本以為 vast.ai 的 container 只能 SSH 或 jupyter notebook 二選一,可我想兩個都要。為此還花了幾小時自製 docker image 用 supervisord 啟動同時執行 jupyter notebook 和 sshd,結果在本機端成功啟動但在 vast.ai 無法使用。

繞了大圈才注意到,vast.ai 給的 ssh 連接指令是:

ssh -p 12345 root@ssh4.vast.ai -L 8080:localhost:8080


如果單純只要 ssh,何必多開 port 8080 做 SSH tunneling 呢?去查文獻才發現,這個 port 8080 是讓你在 ssh 裡面開 notebook 用的。

jupyter notebook -ip=127.0.0.1 --port=8080 --allow-root



在 Windows 本機,putty 打開 SSH tunneling 連上後,在 bash 啟動 jupyter notebook 時指定 port 8080,本機瀏覽器開 localhost:8080 就能進 notebook 。自己土炮的 docker image 用這個方法就可以同時開 ssh tmux 和 jupyter notebook

不得不說 vast.ai 的 documentation 不夠清楚,雖然 RTX 3090 $0.561/hr 的價格真香 XD
全文連結

星期五, 7月 23, 2021

自炊電子書經驗

家裡書越來越多,很多技術性的書籍,讀過一遍以後通常只會拿來查,很少完整重看第二遍,放在家中佔地方,工作出差又不好帶,所以就動了自炊的想法。後來剛好看到夠便宜且夠用的掃描器,Microtek ArtixScan DI 2125c,一台不到 2500,支援 A4 彩色雙面掃描 600dpi 有 20 張的自動進紙,低廉的價格作為實驗品足夠好。折騰了一兩天終於弄出了自己的 pipeline 

找影印店裁書,掃描存圖檔 

圖檔要檢視有沒有跳頁或是嚴重扭曲,有的話重掃並且設定好檔名,使檔名 lexicological order 和紙本頁面順序一致。 

重排檔名,和依照檔名順序重設修改時間

避免檔名或修改時間的順序紊亂,導致匯入其他 App 後順序順序錯亂,以下 powershell 腳本「-whatif」要拿掉才會真正改檔名,否則只是預覽。

依原本檔名順序批次重新命名

(Dir *.jpg) | sort name | ForEach { $count=1 } {
	$scount=([string]$count).PadLeft(4,'0')
	rename-item $_ -NewName ngimg-$scount.jpg -whatif; $count++ 
}

依檔名重排修改時間

$dirs = (Dir *.jpg) | sort name
ForEach($d in $dirs) {
	$file = Get-Item $d
	$file.LastWriteTime=(Get-Date)
}

圖檔轉檔為 PNG

不用 jpg 是怕反覆修改存檔越來越失真。後面的步驟每次使用 mogrify 前都建議複製圖檔目錄做備份,因為 mogrify 會原本修改原本圖檔造成不可逆變化。

magick mogrify -format png *.jpg

去背景

magick mogrify *.png -transparent white -fuzz 50%

fuzz 網路教學設 90%,我保險一點設 50%

Imagemagick 切黑邊,傾斜校正(deskew)然後再切黑邊 

切除黑邊

magick mogrify -fuzz 30% -define trim:percent-background=10% -background black -trim +repage *.png 

個人測試的結果,percent-background 不設成 0 可避免去黑邊的時候吃掉太多正常內容,切完後周圍會有很細微黑邊但個人可接受。書中有大量黑底的,可把 percent-background 拉高或把 fuzz 壓低,try and error 根據最終效果做調整

傾斜校正(deskew)

magick mogrify -deskew 80% *.png

個人使用體驗,deskew 設 80% 會比網路上普遍的 40% 好些,至少對我的掃描器是如此。如果先做傾斜校正,圖檔四周可能多出不同色,和原本黑邊混雜,造成後續去黑邊困難。所以先去黑邊再傾斜校正,再去一次黑邊去除掉傾斜校正造成的額外黑邊。 

影像銳化

magick mogrify *.png -sharpen 0x1.5 -modulate 100,130,100

modulate 三個參數分別代表亮度、對比和 hue。100 代表原值。個人選擇調高對比。sharpen 0x1.5 是網路建議,測試後肉眼可接受。 

圖片檔案批次匯入,做 OCR,存成 pdf 

我用掃描器附的  Finereader 解決

建立 PDF 目錄(table of content)

網路上找了一堆免費或試用軟體,後來發現 k2pdfopt 可用。

k2pdfopt -mode copy -n -toclist 目錄檔.txt 輸入pdf.pdf -o 輸出pdf.pdf
其中目錄檔的格式如下,前面的數字代表對應 pdf 的頁數,+ 號代表縮排
20 Chapter 1 大章節
+21 1.1 小章節1
+26 1.2 小章節2

弄好後可用免費的 PDF-Xchange editor 把目錄中不小心插入的空白項目等移掉,PDF-Xchange editor 若只是刪除現有目錄中的項目是不會加浮水印的。 

到這步自炊電子書 pdf 就完成了。原本的書看是要膠裝保留還是丟掉。附上自炊的電腦叢書抓圖。Pdf 有目錄,文字沒有歪斜且清楚。旁邊很醜的字是個人閱讀用鉛筆做的筆記,300dpi 下(我自己)還是能看懂寫什麼。 


除了文中方法,我也試了不少 App,包含中國製 Camscanner 掃描全能王,Adobe scan、Microsoft Lens 等但各有各的問題。

Camscanner 最好用,但有浮水印,電腦版還要你把資料傳上雲端,之前好像還爆發過資安疑慮,MS Lens 發現 Android App 不能一次匯入大於一百張就放棄了。

花了一兩天,發現其實以裁書後用掃描器掃描的圖片品質,用 Imagemagick 搭 pipeline 做後處理就很夠用了。影像來源才是決定電子書品質的關鍵,影像來源太差,例如用手機搭自拍支架拍照片,照片還有手指,不管後續用什麼軟體,得到的結果都是歪七扭八又模糊。

當然買好點的機器也是解法,網路一致推薦的自炊神器富士通 Scansnap ix1500 除了掃描速度更快,機器軟硬體好像還附贈更好的校正功能,說不定就不用自己土炮後處理 pipeline 了?但那台機器對只想「試試看」自炊的我太貴了,後來就算了。

全文連結

星期三, 9月 24, 2008

USB安裝XP的方法

最近碰到沒有光碟機卻要裝XP的電腦,自己整理的步驟如下:

一、確認電腦可以用USB開機且安裝:不說明
二、製作USB開機片

1.去www.bootdisk.com找Windows 98的開機片製作程式
2.下載Virtual Floppy Drive並建立虛擬軟碟,一定要建立在A槽,不然開機片製作程式讀不到。如果沒辦法則去裝置管理員停用原有的軟碟機
3.用開機片製作程式將虛擬軟碟格式化成系統開機片
4.下載HP usb格式化工具,Google「HP usb tool」就有
5.利用4找到的HP usb工具,以虛擬軟碟作為開機檔案的來源格式化USB

三、備妥相關必要工具
1.將虛擬軟碟所有的檔案都拷到USB(省得xcopy、format等一樣一樣複製、麻煩)
2.讓USB開機後可以啟動smartdrv,本步驟非必要,但沒有smartdrv光是把XP拷貝到硬碟就要一兩個小時,強烈建議做!

a.建立config.sys,內容:
devicehigh=himem.sys /testmem:off
dos=high,umb
device=emm386.exe ram auto
files=30
buffers=30
device=smartdrv.exe
b.建立autoexec.bat,內容:
smartdrv.exe (就這麼一行)

3.去Google和虛擬軟碟取得himen.sys、smartdrv.exe、emm386.exe等必要檔案
4.取得spfdisk,比Windows 98原有的fdisk強很多
5.找台有光碟機的電腦,把整個光碟(至少I386目錄為必要)複製到USB中


四、USB開機分割硬碟
1.BIOS開機順序改好後用USB開機
2.spfdisk打開,建立必要的FAT32分割區(NTFS Windows98做出來的開機USB認不出來)
NOTE:spfdisk連開機用的usb都看得到,小心切分割區和格式化的時候不要不小心選到usb!
3.format X:/s,X為硬碟未來想裝XP的分割區,/s選項可以讓X:能夠開機
4.xcopy USB的XP目錄 Y:/ /s /a /v ,Y為不同於X的另外一個分割區,建議不要把XP安裝檔裝在未來要安裝XP的分割區
指令有syntax error請自行修正
5.拔掉USB,一定要拔,不然接下來XP的安裝暫存檔會全部都裝到USB上,且重開機進行第二階段安裝會NTLDR is missing
6.重開機,重開之後的C:為硬碟自己的C:,進當初複製XP的硬碟分割區,進入I386目錄執行winnt.exe,熱血安裝開始!


關於USB怎麼安裝XP,網路上有超多的guideline,但這些guideline都有特殊的應用背景,比如拿來灌某廠牌的某筆電,或是你要有2G以下的USB,這些guideline直接拿來套desktop都會出問題,比如把安裝暫存檔裝到USB上的就會碰到NTLDR is missing,流傳超廣的BartPE + pe2usb則是一定要2G以下的USB隨身碟不然製作FAT16檔案系統的時候會破功,想用FAT32/NTFS無解(網路上有自稱的solution,如pe2usb-f32,但試過都沒用T_T)。 全文連結

星期日, 9月 07, 2008

把Firefox改的像IE7



畫面中是Firefox,不是IE7

其實這樣改最主要是為了讓Firefox可以用Vista的Aero,Firefox看起來有毛玻璃感覺就是很開心。

做了以下的事情:
1.把Bookmarks Toolbar裡的東西全部都塞到一個資料夾,再把那個資料夾移動到Navigation Tool bar那邊
2.Firefox extension:Hide Status Bar還有Hide Menu Bar
3.Firefox Theme:AeroFX

看起來就像IE7,當然速度還是狂電IE7,不會變得像IE7一樣...XDDDDDDD 全文連結

星期一, 5月 12, 2008

星期日, 4月 08, 2007

Windows 2003下安裝WMP11之方法

連結

因為Windows 2003真的比XP穩太多了,所以用Win2003作為桌面系統的人好像有越來越多的趨勢,不過很多軟體都會在installer限定只有WinXP才能裝,WMP11也是一樣,所以就有人弄出了可以在Win2003硬裝WMP11的方法,不過我還沒有試就是了...

Windows Vista據說是根據Windows 2003的核心修改而來,但是軟體相容性怎麼會差到某種神奇的境界XD,Windows 2003軟體相容性非常的好,軟體除了防火牆和一些會改tcp/ip stack的都跑的很好,Vista卻完全不是那麼一回事orz 全文連結

星期一, 4月 02, 2007

星期日, 3月 11, 2007

MySQL語系

MySQL語系教學

雖然說Ubuntu超級容易的安裝深深打動了我,但使用起來,可能是因為我習慣Windows的關係,所以大錯沒有,小錯不斷。

一開始是昨天開心的裝完Smarty卻發現Smarty什麼都讀不出來,測試老半天路徑明明就沒有錯誤。Google,翻wiki弄了一大堆,還想說是不是PHP壞掉可是phpMyAdmin卻又能跑。最後是靠chmod -R 777 ./public_html解決了問題。*nix的檔案權限管理如此嚴格(或是說Windows太鬆?)讓我吃了不少苦頭,不過其實這樣也比較正確啦XD

接下來就是No-IP dynamic DNS不會自動執行,我花了很多時間和init.d以及update-rc.d奮鬥,當然期間又是一大堆chmod 777(黑啦,我知道這樣不好,可是實在是沒體力了orz)最後還是弄不出來。最後是在/etc/rc.local加了一行noip2才解決了DNS的問題。看來在*nix下面做事還是得乖乖按照「確定會成功的經驗」做事比較好,免得遇到鬼XD

接下來換MySQL出問題了。學校的Windows 2003和我的Ubuntu裡,MySQL我設定的都是UTF-8,之前set name big5用起來也沒什麼問題,到Ubuntu下卻出現一大堆亂碼,現在我準備看MySQL關於多語系支援的文件解決他XD

Linux真是個有趣的東西啊XD 全文連結