顯示具有 JavaScript 標籤的文章。 顯示所有文章
顯示具有 JavaScript 標籤的文章。 顯示所有文章

[個人專案] 以 Cloudflare Pages 打造低成本高流量的即時投票系統 (Cloudflare Pages, Pages Functions, Cloudflare D1)

沒有留言:
Image Generated with Microsoft Bing Designer

元旦假期做了一個新的專案 —— Simple Poll System 簡易投票系統
https://github.com/jim60105/simple-poll-system

我為什麼寫這個呢?
上週薬袋アルマ舉辦 Vtuber 紅白活動,前兩天的會限直播在和大家測試投票系統。當時發現現成的問卷服務都不合用,不是要很多錢就是不即時,而最後用了 Google Form。 雖然 Google Form 是當下最好的選擇,但它不夠客製化,像是直播當下的紅組被顯示為藍色,而白組被顯示為紅色無法內嵌投票結果在活動網頁上等等。

我就在想,要以這個需求來規劃一個小專案的話我會使用什麼技術實現它。然後就當作練練手...

這是一個以概念驗證和學習為目的而做的專案,目標是建構一個低成本高流量即時投票系統。投票只是一種簡單的應用,你可以把它代換為任何使用網頁前後端和資料庫的應用場景。

[個人專案] 網頁計數器徽章 View Counter Badge —— 瀏覧數別再送人啦!以 Cloudflare Workers D1 實作適合純前端網頁的計數器

沒有留言:
Image Creator from Microsoft Bing DALL•E 3
View counter badge
網頁計數器是一個電腦程式,可以顯示特定網頁瀏覽的次數。
當網頁瀏覽器訪問此網頁時,網頁計數器就會加一。

這是一種歷史悠久的小工具,從我十幾年前開始使用部落格時 Blogger 就已經內建了這個功能,網路上也有很多現成的服務,為什麼我們仍應自己做呢?

為什麼你應該停止使用第三方計數器

當有人訪問我的部落格時,它會向計數器的伺服器發送一個訊息說「blog.maki0419.com 被訪問了,請將訪問數+1,並將現有數字從資料庫讀出來給我!」這個計數器伺服器會保存我的訪問數據(和用戶數據),並執行一段程式碼來顯示數字。通常這段程式的原始碼我看不見它,它也可能隨時被替換成惡意程式碼。根據我的嵌入型式,或許人家還能獲得 SEO 加分呢!

你可能會說「我不想為了這個小功能而多開一台伺服器和資料庫,這是一個合理的取捨

不不不,現在我就告訴你如何在 Cloudflare 上以 Worker 和 D1 Database 實現計數器功能,不用維護伺服器免費!你將擁有程式碼和數字的控制權,保護你的網站,保護你的用戶

這是一個純雲端的解決方案,很適合用在純前端應用程式或是任何類型的網頁。
專案是回傳 SVG badge,但是簡單修改就能變成回傳數字做為 API 使用(範例),泛用性非常高。

[個人專案] Unfair Spin Wheel - 不公平轉盤

沒有留言:
世界是不公平的,轉盤也是如此。

介紹我的新作品 —— 不公平轉盤

這是我的第一個 Vue.js 專案,和過往一樣,可以在 GitHub 上找到此專案的開源程式碼。

專案的初衷是提供給 Vtuber 進行「投入固定金額就有一次抽獎機會,投注次數越多,中獎率也會越高!」的直播抽獎活動。然而,現有的網路轉盤設計都是讓選項的倍率相同,操作起來不太方便。因此,我們需要一個不公平的轉盤來反映這個不公平的世界。

這是一個開源、免費、無廣告的轉盤網站,歡迎各位直播主自由使用🎉

Youtube iframe嵌入錯誤: 「無法播放影片 在 YouTube 上觀看」

1 則留言:
這個錯誤的英文訊息為「Video unavailable Watch on YouTube」

Youtube iframe嵌入錯誤: 「無法播放影片 在 YouTube 上觀看」

Youtube iframe 嵌入在「某些影片」無法顯示,出現如圖的灰畫面,這些影片的共通點是「原影片有(音樂)版權宣告」。

而且我在 ng serve 的 localhost 開發是正常的,部署到 Azure Static Web Apps 站台後才有問題。

這是我在做 sound-buttons 專案時遇到的問題,卡了我好幾個月無法解決。
我一直以為這些影片就是被設定無法嵌入,直到我發現同一個影片別人的站台可以嵌入...只有我有問題?!

[Angular2 + ASP.NET Web API] Google OAuth 2.0 OpenID Connect with Authorization Code Flow 授權碼流程

Demo site
https://googleoidcdemo.maki0419.com/

本專案使用 Angular + ASP.NET Web API,示範如何在前後端分離的專案中實作 Google OAuth2 OpenID Connect 登入。

本文重點主要是在於實作,而非OAuth 2.0的流程講解
如果想要深入學習,請參考保哥的課程 《精通 OAuth 2.0 授權框架》

[Chrome Extension] Youtube影片截選播放清單 (Youtube Clip Playlist)

沒有留言:

前言


GitHub tag GitHub last commit (branch) LICENSE
Chrome Web Store Chrome Web Store
Bootstrap TypeScript Webpack
Google Chrome YouTube Microsoft OneDrive Google Drive

這是截選播放清單擴充功能,在Youtube/Onedrive/GoogleDrive/TwitCasting上直接播放「起始~結束時間」影片片段。
此工具專門設計來聽Vtuber的歌枠,這是我對於歌回烤肉的程式解

和看烤肉或剪片相比的優點為

  • 觀看數都會算在原始影片上
  • 只要清單化起始/結束時間就完事,比剪片快得多
  • 因為沒有轉載、修改原影片,不會有版權爭議
此專案曾是個油猴腳本(UserScript),現已重寫為擴充功能

瀏覧器影音自動播放之研究手札 (Chrome、Firefox)

沒有留言:

我在做影片截選播放清單時,遇到播放時會停住的問題,並發現在各瀏覽器、各網站的表現不同,用戶回報給我的狀況也都不同。我對這件事做了些研究,並撰寫下此文記錄。為了改善用戶體驗,瀏覽器正朝著更嚴格的自動播放政策發展。它的目的是讓用戶對播放有更大的控制權,並(Chrome稱)讓有合法用途的出版商受益。

這篇文章會提及Chrome、Firefox的自動播放規則,身為網站開發者我們該怎麼處理前端;身為用戶我們該怎麼手動允許特定網站的自動播放。

[個人專案] SoundButtons - 聲音按鈕

沒有留言:

License .NET Core TypeScript Sass
Angular Microsoft Azure Azure Functions YouTube
SoundButtons - 聲音按鈕
https://sound-buttons.click/

這是一個Vtuber聲音按鈕網站,方便聽你老婆怪叫

此站特色在於獨家的音檔投稿系統,送出表單後能全自動剪輯音訊、產生按鈕。

前端使用Angular;後端以Azure Functions搭配Azure Blob Storage實作,在Github上開源。

Cloudflare Workers入門

沒有留言:

去年我曾寫過一支Cloudflare worker,用做Nextcloud的img網域縮址
當時是初探,純粹採用線上編輯器撰寫,功能只是簡單的routing

這幾天我寫了個新的random功能,並趁這個機會把專案做了重構;改寫為TypeScript;切割檔案,以Webpack打包部屬;將可變更的設定值改以環境變數傳遞,增加專案重用性

同時還串上了現在很夯的Github Action,在線上做打包推送去Cloudflare
我也花時間把Worker用的CLI工具──Wrangler摸了一輪,搞定了Worker debug和收log流程

本文預計分為兩篇

  • Cloudflare Workers入門 ─ 簡介
  • Cloudflare Workers進階 ─ Wrangler簡介和Github Action串接部屬 (還沒寫!)

Cloudflare Workers是個還算新的產品,中文教學並不多,謹將我的研究成果小記在此。

[UserScript] Youtube影片截選播放清單 (Youtube Clip Playlist)

1 則留言:

前言

此專案已重寫為Chrome擴充功能

GitHub tag GitHub last commit (branch) GitHub Tampermonkey YouTube JavaScript

這是截選播放清單功能,專門設計來聽Vtuber的歌枠

和看烤肉或剪片相比的優點為

  • 觀看數都會算在VT身上
  • 只要清單化起始/結束時間就完事,比剪片快得多

這是我對於歌回烤肉的程式解

目錄