Posts

URI schemes

 我看過的網址列開頭有這幾種: http: 和 https: 是通訊協定 file: 可以在瀏覽器中打開電腦裡的檔案  javascript: 可以在瀏覽器上執行 javascript 然後我剛剛看到,上傳圖片後讓使用者預覽圖片的功能,預覽圖片的連結,開頭是: blob: ⋯⋯我不太確定他是什麼,好像跟「把檔案轉成二進制資料」有關係,但是我還是沒弄懂「把檔案轉成二進制資料」是什麼意思,畢竟,電腦是二進位,存在電腦裡的檔案也是二進位,為什麼還需要把已經是二進位的檔案轉成二進制資料⋯⋯我目前的知識不足以讓我理解這是什麼情況。 ⋯⋯然後我一直沒有察覺的困惑,因為這根 blob: 的稻草而爆發了: 這些看起來功能很不一樣的東西,為什麼格式都固定會加冒號啊,這整件事是怎麼一回事啊?有什麼規律存在,把這些不一樣的東西整理在一起了嗎? 目前蒐集到一個關鍵字:URI schemes。新的情報暫時安撫了我的爆發,真是可喜可賀! 參考資料: 中文維基百科: 統一資源標誌符方案 英文維基百科: List of URI schemes

保留的域名:example.com

製作網站的使用者種子資料時,對於電子信箱的欄位,我有時會擔心,如果我亂捏造的電子信箱,真的是實際存在的電子信箱,那樣感覺有點奇怪⋯⋯ 後來碰巧發現,原來 example.com 是保留的域名,沒有人能夠用這個域名建立任何服務。所以 test@example.com 這個信箱,不可能是實際存在的電子信箱。 不知道是誰做出了「保留域名作為演示用途」的決定,但是這個決定好貼心啊!有一種「被前輩們(雖然不知道是誰)照顧得很好」的感覺。 參考資料: example.com - 維基百科

檢查字串位元數

資料庫有儲存容量限制,這時候需要檢查字串的位元數是不是超出上限。不同編碼方式,中文字的位元數也不同。UTF-8 的話是 3 byte。 javascript 的 string.length 方法回傳的並不是字串的位元數,所以要另外想辦法。 計算字串位元數的其中一個方式是(假設字串只有中文和英文,編碼方式是 UTF-8),把每個中文都用三個英文字母取代(英文字母只佔一個位元)。 function byteLength (string) {   return string.replace(/[^\x00-\xff]/g, 'xxx').length } [^\x00-\xff] 是一個正則表達式,會選出 ASCII 編碼不在 0-255 的文字 參考資料: JavaScript計算含中英文字的字串長度 请问各位大侠,/[^\x00-\xff]/g, 这样表达的意思是什么呢??有什么作用呢? 字符編碼、單字節字符編碼、雙字節字符編碼、多字節字符編碼

MySQL 初始化小抄(使用環境:node.js)

安裝 MySQL 和 Workbrench 在 Workbrench 建立 DATABASE CREATE DATABASE 資料庫名稱; 安裝套件 npm install mysql2 sequelize sequelize-cli 執行初始化腳本 npx sequelize init 初始化腳本會建立四個東西 config/config.json 修改資料庫名稱及登入密碼。 (註:operatorsAliases 在 Sequelize v5 後已棄用) models/index.js migrations seeders 設定 model 和 seed: 官方文件

SQL ZOO 試答:SELECT names

SELECT names Find the country that start with Y SELECT name FROM world WHERE name LIKE 'Y%' Find the countries that end with y SELECT name FROM world WHERE name LIKE '%y' Find the countries that contain the letter x SELECT name FROM world WHERE name LIKE '%x%' Find the countries that end with land SELECT name FROM world WHERE name LIKE '%land' Find the countries that start with C and end with ia SELECT name FROM world WHERE name LIKE 'C%ia' Find the country that has oo in the name SELECT name FROM world WHERE name LIKE '%oo%' Find the countries that have three or more a in the name SELECT name FROM world WHERE name LIKE '%a%a%a%' Find the countries that have "t" as the se...

「家庭記帳本」專案心得

專案介紹 功能: 使用者能註冊、登入、登出。 登入後,可以新增、刪除、修改、查詢自己的支出紀錄。 可以紀錄支出的用途、金額、日期,並且為支出分類。 可以用分類和月份,篩選要顯示的支出紀錄。 Heroku 網址: https://still-oasis-68074.herokuapp.com/ 程式碼: https://github.com/Flora2020/expense-tracker 你為何會選擇這個專案? 自己本身就有在記帳,管理收支狀況。因為想對這些紀錄有比較高的掌控權,所以我是自己用 LibreOffice 設計表格,而不是使用現成的記帳軟體。但使用起來還是很不方便,例如: 我每個月新增一個 LibreOffice 表格,然後把不同帳戶的收支狀況(例如各個銀行的帳戶、悠遊卡、現金、借貸等等)都獨立成一張表格分頁,分頁之間設定連動關係,以便紀錄跨帳戶的情況,例如從郵局領錢放到錢包裡。但光是為了設定連動關係,表格就變得非常複雜,日後如果增加帳戶,又要額外設定非常多欄位。 果然還是自己設計記帳軟體,比較一勞永逸。不過目前只有紀錄支出,沒有紀錄收入,也沒有紀錄支出來自哪個帳戶,需要增加的功能還很多。 你使用了什麼技術? 在 Node.js 環境下,使用 Express 框架和 Handlebars 的模板引擎。CSS 套用了 Bootstrap 的框架。 資料庫則是用 Mongoose 操作 MongoDB。 用 passport 套件實作使用者驗證。 哪部分你相對能掌握?哪裡花了最多時間? 較能掌握: 沒有使用 passport 套件的地方,我大致明白收到瀏覽器的請求後,請求在伺服器中,按照什麼順序通過哪些 middleware。 花最多時間: 前端切版,以及調整 RWD。對 CSS 語法規則仍然不熟練,有時候寫了指令,卻沒有效果,而且完全不明白為什麼沒有效果。對於 Bootstrap 的框架到底設定了哪些東西,也了解得不夠...

用 Math.random 隨機產生整數時,為什麼通常是用 Math.floor 而不是 Math.ceil

Math.random() 的範圍:0 ≤ Math.random() < 1 如果要隨機產生 0~9 這十個數字 使用 Math.floor: 0 ≤ Math.random() * 10 < 10 0 ≤  Math.floor(Math.random()) * 10 ≤ 9 使用 Math.ceil: 0 ≤ Math.random() * 9 < 9 0 ≤ Math.ceil(Math.random()) * 9 ≤ 9 但是 Math.random() 產生 0 的機率非常非常非常非常小,所以 「Math.ceil(Math.random()) * 9」骰出 0 的機率非常非常非常非常小。 相關討論: Random Number, Math.floor(…) vs Math.ceil(…) - stack overflow