發表文章

與Shared library(.so)相關的常用指令

1. 印出header readelf -h  會包含系統,例如Linux的64位元class是ELF64、OS/ABI部份寫Unix - GNU 2. 印出so檔案的連結名稱 readelf -a libexample.so | grep SONAME 3. 印出執行檔或so所需的so檔案 readelf -d a.out | grep NEEDED 4. 印出提供/使用到的symbol readelf -Ws libexample.so 也可用 nm libexample.so  如果除掉symbol得so這裡就會寫沒有symbol,印不出來

倒數計時器React hooks+MUI+typescript

圖片
這篇是受Tapas Adhikary所寫的 How to create a countdown timer using React Hooks 啟發 將它改成typescript和MUI的版本,並調整成自身使用的元件,並修改了 1. 使用  padStart()   處理時顯示分秒的雙位數字 2. 倒數30分鐘時會改變倒數時間成紅色 3. 避免顯示出NaN的狀況

筆記:簡單初始化node.js專案使用typescript

筆記:手動初始化node.js使用typescript  步驟1. 建立資料夾 建立你喜歡的資料夾作為專案目錄,並進入目錄中 步驟2. 初始化 npm init 初始化node.js專案檔案package.json 步驟3. 安裝套件 npm install typescript @types/node --save-dev 安裝typescript套件到node_modules並生成package-lock.json 步驟4. 初始化tsc npx tsc --init 生成tsconfig.json 步驟5. 設定tsc 修改tsconfig.json "outDir": "dist",   "rootDir": "./src", tsc輸出結果到dis目錄,程式碼目錄則是在src 步驟6.寫你的ts程式 index.ts console.log('hello world'); 步驟7. 設定預設執行指令 修改package.json加入start指令 "scripts": {   "start": "tsc && node dist/index.js" }, 步驟8. 跑起來 npm run start

小程式:使用wasm版ffmpeg轉換m4a成wav音檔

使用WASM版ffmpeg緣由 這個東西會在Line BOT中使用到,因為不是所有雲服務上都能夠安裝ffmpeg套件,所以這個機制就能,雖然轉換效率不太好,就是一個可運行的方案。 1. 安裝node.js  建議使用node.js 18 LTS版本 2. 安裝套件 npm install @ffmpeg/core@^0.11 @ffmpeg/ffmpeg@^0.11 @ffmpeg/ffmpeg在 0.12之後做了API的改變 ,並且不支援Node.js了 3. 寫程式

升級corepack本身

圖片
之前透過` corepack enable ` 啟用yarn 和pnpm來試用,然而今天用pnpm時發現已有新版本,但是無法透過提示的指令` pnpm add -g pnpm `進行版本升級。 嘗試使用corepack指定使用pnpm最新版本latest或是8.13.1都無法讓pnpm指令版本提昇 corepack prepare pnpm@latest --activate corepack prepare pnpm@8.13.1 --activate 所以就想來升級corepack本身

升級gitea

圖片
升級gitea 1.21.0 至 1.21.3

firebase functions v2(javascript)如何設定部屬區域(deploy region)

 在code裡面引用setGlobalOptions 函數來設定 const { setGlobalOptions } = require ( "firebase-functions/v2" ); setGlobalOptions ({ region : "asia-east1" });

解決Firebase整合Next.js部屬(deploy)的permission問題

圖片
  這是在轉移之前寫的next.js功能到其他firebase專案時發生的權限問題 摘要錯誤訊息如下: i  functions: creating Node.js 18 (2nd Gen) function firebase-frameworks-***:ssr***(asia-east1)...     Unable to retrieve the repository metadata for projects/ *** /locations/asia-east1/repositories/gcf-artifacts. Ensure that the Cloud Functions service account has 'artifactregistry.repositories.list' and 'artifactregistry.repositories.get' permissions. You can add the permissions by granting the role 'roles/artifactregistry.reader'.     Functions deploy had errors with the following functions:             firebase-frameworks- *** :ssr***(asia-east1) 

解決ffmpeg轉檔遭遇error: libx264 width not divisible by 2

圖片
解決ffmpeg轉檔遭遇錯誤 [libx264 @ 0x6a371c0] width not divisible by 2 (861x909) [vost#0:0/libx264 @ 0x6a36dc0] Error initializing output stream: Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height Conversion failed!

使用docker compose建置(build)hugo靜態網站

圖片
Hugo是一套以golang語言撰寫可快速建置靜態網站的框架,官方副標如下: The world’s fastest framework for building websites Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again. 而近期幫忙建置 中華易經天書三式協會網站 https://ichingtrilogy.com 即使用hugo來完成。 使用hugo建置網站的主程式需要使用golang,所需版本與我本機環境golang會有衝突,就有必要透過container來跑另一個版本golang來建置網站。而compose又提供一個簡單指令docker compose up就能完成