2025/09/30

將 UniFi Controller 從 Mac Mini 遷移到 Cloud Gateway Max 的步驟

將 UniFi Controller 從 Mac Mini 遷移到 Cloud Gateway Max 的步驟

將 UniFi Network Application(控制器)從 Mac Mini(自託管軟體版本)遷移到 Cloud Gateway Max 的過程,主要依賴備份還原(Backup and Restore)。這是官方推薦的方法,能保留您的網路設定、VLAN、SSID、防火牆規則等配置,而無需重新採用所有設備(如 AP、交換器)。整個過程通常只需 30-60 分鐘,但請在非高峰期進行,以避免中斷。

前置條件與注意事項

  • 版本相容性:確保 Mac Mini 上的 UniFi Network Application 版本與 Cloud Gateway Max 上的版本相同或較舊(新版可向下相容)。遷移前,先在 Mac Mini 更新控制器至最新版(從 ui.com/download/unifi 下載 macOS 版本)。
  • 備份類型:使用「Network Application Backup」(.unf 檔案),這只包含 Network 應用設定。如果您還使用 Protect(攝像頭)或 Talk 等其他應用,請分別備份。
  • 警告
    • 遷移後,設備會自動連接到新控制器,但若有 Layer 3 採用(跨 VLAN),可能需手動調整 Inform URL。
    • Cloud Gateway Max 會取代您的路由器(如有 USG),需手動配置路由相關設定(如 DHCP、防火牆),因為軟體控制器不支援這些。
    • 備份不包含自訂腳本或第三方整合;若有,需手動重置。
    • 斷開舊控制器後,設備若未自動切換,可能需在舊控制器「Forget」設備。
  • 工具:瀏覽器、SSH(選用,用於進階調整)。

詳細步驟

以下步驟基於 Ubiquiti 官方文件與使用者經驗(如 Reddit r/Ubiquiti 討論)。

  1. 備份當前設定(在 Mac Mini 上)
    • 開啟 UniFi Network Application(透過瀏覽器登入:通常為 http://localhost:8443 或您的 Mac IP)。
    • 前往 Settings > System > Backups(或舊版介面:Settings > Maintenance > Backup)。
    • 點擊 Download Backup,選擇「Full Backup」或「Configuration Only」(推薦全備份,包含統計資料)。
    • 儲存 .unf 檔案到安全位置(如 USB 或雲端)。檔案大小約 1-10 MB,視設定複雜度而定。
    • 驗證備份:可上傳到測試環境檢查是否完整。
  2. 準備 Cloud Gateway Max
    • 開箱後,使用隨附電源與乙太網路線連接。
    • 將 WAN 埠(Port 5)連接到您的 modem 或現有網路(DHCP 取得 IP)。
    • 透過手機 App(UniFi Network App)或瀏覽器(預設 IP:192.168.1.20 或使用 App 掃描)開始初始設定。
    • 更新韌體:登入後,前往 Settings > Updates,安裝最新 UniFi OS(需 3.1+ 版本)。這可能需 10-20 分鐘重啟。
    • 重要:若要最小干擾,可將 Cloud Gateway Max 的 LAN IP 設定為與舊控制器相同(預設 192.168.1.1,若衝突則調整)。
  3. 還原備份到 Cloud Gateway Max
    • 在初始設定或登入後,前往 Settings > System > Backups(或 Control Plane > Backups)。
    • 點擊 Restore Backup,上傳從 Mac Mini 下載的 .unf 檔案。
    • 確認還原:系統會自動套用設定,重啟約 5-10 分鐘。
    • 登入新控制器,檢查 Devices 清單:您的 AP、交換器等應顯示「Connected」。
  4. 切換設備管理(Inform Host 調整)
    • 保持所有 UniFi 設備連接到現有網路(勿斷開)。
    • 在 Cloud Gateway Max 上,前往 Settings > System > Advanced > Inform Host,記下其 IP(例如 192.168.1.1)。
    • 返回 Mac Mini 舊控制器,前往 Settings > System > Advanced,將 Inform Host 改為 Cloud Gateway Max 的 IP。這會讓設備開始向新控制器報告。
    • 等待 5-10 分鐘,所有設備應自動採用(Adopt)。若未發生:
      • 在舊控制器上,選取每個設備 > Forget Device
      • 在新控制器上,手動 Adopt 設備(點擊 Adopt 按鈕)。
    • 若使用 SSH 進階調整:在設備上執行 set-inform http://<新 IP>:8080/inform(需啟用 SSH)。
  5. 移除舊控制器並驗證
    • 一旦所有設備在 Cloud Gateway Max 上線(綠燈),斷開 Mac Mini 的 UniFi 應用(停止服務或卸載)。
    • 在 Cloud Gateway Max 上,檢查 Insights > Known ClientsNetworks,確保流量正常。
    • 測試功能:連線 Wi-Fi、存取網路、檢查日誌(Settings > System > Logs)。
    • 若有 Protect 應用:分別備份並還原(.ubk 檔案),步驟類似。
  6. 後續優化
    • 配置 Cloud Gateway Max 特定功能:如 Multi-WAN、PoE(若適用)、或新增儲存(NVMe SSD)。
    • 啟用雲端備份:Settings > System > Backups > Auto Backup,設定雲端同步。
    • 若遷移失敗:工廠重置 Cloud Gateway Max(按住重置鈕 10 秒),重新還原備份。

常見問題排除

  • 設備未顯示:重啟設備或檢查防火牆(確保 UDP 10001 埠開放)。
  • 版本不符:若還原失敗,先更新新裝置至舊版,然後升級。
  • 無路由功能:Cloud Gateway Max 內建路由器,遷移後需手動設定 WAN/LAN(Settings > Networks)。

此過程 99% 情況下無需重置設備。若您的設定複雜(如多站點),建議先在測試環境試遷移。更多細節可參考 Ubiquiti 官方備份指南

2025/09/26

Microsoft Publisher Content Marketplace (PCM) 計畫

 Microsoft 正在推動一項名為 Publisher Content Marketplace (PCM) 的新計畫,目的是建立一個 AI 與內容出版者之間的雙向市場,讓出版商能夠因其內容被 AI 使用而獲得合理報酬。這項計畫目前處於美國的試點階段,未來可能擴展到全球。 [Microsoft’...ed Content], [Microsoft...publishers], [Microsoft...mpensation]

對出版商與內容版權所有者來說,這個 AI 市場具體會怎麼進行?

  1. 內容授權與交易平台

    • 出版商可以選擇將其內容授權給 AI 模型(例如 Microsoft Copilot)使用。
    • AI 開發者(目前是 Microsoft 自家的 Copilot,未來可能擴展到其他 AI 產品)會支付費用以合法使用這些內容。
  2. 透明的使用與報酬機制

    • 報酬將根據內容在 AI 回應中被引用的頻率來計算,確保出版商獲得持續性收入,而非一次性買斷。 [Microsoft...mpensation]
    • Microsoft 計畫使用 Azure 等技術來追蹤內容使用情況並處理付款。
  3. 解決的問題與改變的現狀

    • 解決內容被未經授權使用的問題:目前許多 AI 模型透過網路爬蟲擷取內容,出版商無法獲得報酬,甚至流量與廣告收入被稀釋。
    • 減少法律風險與訴訟:此舉可能緩解出版商對 AI 公司提告的趨勢,建立更具倫理與法律基礎的合作模式。
    • 創造新的商業模式:出版商不再只是依賴廣告或訂閱收入,而是能透過內容授權給 AI 獲得新收入來源。
  4. 與其他科技公司的差異

    • 相較於 Google 或 OpenAI 等公司尚未建立正式的內容交易平台,Microsoft 是第一個主動提出補償機制的大型科技公司。 [Microsoft’...ed Content]

這項計畫若成功,可能會成為 AI 與內容產業合作的新典範。

timebox for logseq

Alternatives to Roam Nautilus in Logseq

Roam Nautilus is a clever Roam Research extension that turns a daily task list into a visual spiral planner, dynamically scheduling unfinished tasks into available time slots (based on events, durations, and progress) to reduce overwhelm and improve time estimation. It's Roam-specific, but Logseq's outliner-style journals and plugin ecosystem make it easy to replicate this with a mix of plugins and queries. Logseq doesn't have an exact 1:1 port (no spiral visuals yet), but you can achieve similar time-blocking, auto-rescheduling, and visual task tracking using open-source plugins.

Based on Logseq's plugin marketplace, community discussions (e.g., Reddit, forums), and recent updates (as of September 2025), here are the top alternatives. I've prioritized those with calendar integration, task auto-arrangement, and visual elements like Gantt charts or progress bars. These are all free and installable via Logseq's built-in plugin browser (Settings > Plugins > Marketplace).

Key Recommendations

  • For closest Nautilus-like dynamic planning: Use Agenda as your core plugin—it's the most comprehensive for visual calendars and task pushing.
  • For quick setup: Combine Logseq Gantt (for timelines) with Todo Master (for progress tracking).
  • Pro Tip: In Logseq, use journal queries like {{query (and (task scheduled) (between today tomorrow))}} under a daily template to auto-pull tasks, mimicking Nautilus's push-forward. Add durations with properties like :: 15m for estimation.
PluginDescriptionKey Features (Similar to Nautilus)Pros vs. NautilusCons vs. NautilusInstall NotesGitHub/Link
AgendaA full-featured calendar and task manager that integrates Logseq tasks with visual timelines, supporting dynamic rescheduling based on deadlines and availability.- Multiple views: Day/week/month/Gantt. - Auto-overdue task highlighting and dashboard for unfinished items. - Event/task creation with durations (e.g., "Meeting 30m"). - Progress tracking, milestones, and exportable logs. - Queries for pushing tasks to today.- Native Logseq integration (no code blocks needed). - Gantt for visual "spiral-like" time flow. - Free, offline-first; handles large graphs better than Roam's cloud.- No spiral shape (uses linear/Gantt instead). - Steeper setup for custom queries.Search "Agenda" in Logseq Marketplace; docs at haydenull.github.io/logseq-plugin-agenda.GitHub
Logseq GanttGenerates interactive Gantt charts from tasks, visualizing schedules and dependencies like a timeline version of Nautilus's spiral.- Auto-generates charts from scheduled tasks. - Drag-to-reschedule unfinished items. - Supports durations, progress %, and event blocks. - Export to PDF/SVG for sharing.- Highly visual for daily energy mapping. - Real-time updates as you mark tasks DONE. - Lightweight and customizable themes.- Requires manual task scheduling (no auto-push). - Less calendar-focused than Agenda.Marketplace: "Gantt"; pair with journal templates for daily use.Marketplace (search Gantt)
Todo MasterAdds progress bars and estimation tools to tasks, helping track durations and completion like Nautilus's % markers.- Inline progress bars (e.g., click to increment 10%). - Duration estimation and overdue alerts. - Integrates with queries for daily task lists.- Simple, no-frills visual feedback. - Enhances Logseq's native TODOs without bloat. - Mobile-friendly.- No calendar/spiral; pairs best with other plugins. - Basic compared to Nautilus's auto-arrange.Marketplace: "Todo Master"; use / command to add bars.Marketplace
Tasks Check DateAutomatically timestamps completed tasks and supports rescheduling, similar to Nautilus's DONE logging and forward-pushing.- Adds completion times (e.g., "d14:30"). - Queries for unfinished tasks to "push" via templates. - Sound notifications on completion.- Great for effort estimation logs. - Scriptable for custom auto-moves (e.g., bash for archiving). - Privacy-focused, local-only.- Text-based (no visuals). - Requires custom queries for dynamics.Marketplace: "Task Check Date"; combine with Agenda for visuals.GitHub
Move BlockQuickly refactors tasks to today's journal, enabling Nautilus-style daily rearrangement without rewriting.- Copy/drag blocks to journals with refs. - Useful for prioritizing and slotting into time blocks. - Supports bulk moves for lists.- Speeds up manual reordering. - Integrates with Logseq's block refs for linking. - Free and simple.- No auto-scheduling or visuals. - More utility than planner.Marketplace: "Move Block".GitHub

Quick Setup for a Nautilus-Like Workflow in Logseq

  1. Install Plugins: Go to Logseq Settings > Plugins > Marketplace, search and install Agenda + Logseq Gantt + Todo Master.
  2. Daily Template: Create a template (Settings > Editor > Templates) with:
    text
    ## Agenda
    {{query (and (task scheduled) (between today tomorrow))}}
    {{gantt}}  ;; Renders Gantt from tasks
    - Event: 12:00-13:00 Meeting {{renderer todo-master}}  ;; Add progress
    - Task: Write report 45m d50%  ;; Duration + progress
    Insert via ;; in your journal.
  3. Dynamic Pushing: Use Agenda's dashboard to view/reorder unfinished tasks; set queries to filter by "unscheduled" for auto-fill.
  4. Visual Tweaks: Customize CSS in Settings for "spiral-ish" curves if you're adventurous (community themes exist).

These setups capture Nautilus's essence—visual, flexible, and low-overhead—while leveraging Logseq's strengths like local Markdown files and free plugins. If you need something more custom (e.g., a spiral via D3.js), the Logseq community on Discord/Reddit is active for requests. For Roam-to-Logseq migration tips, check import guides on logseq.com. Let me know if you want setup scripts or comparisons!### Alternatives to Nautilus (roam-depot-nautilus) in Logseq

Nautilus is a Roam Research extension that provides a visual spiral timeline for daily task planning, integrating events (fixed times), tasks (with durations and progress), and automatic forward-pushing of unfinished items based on the current time. It emphasizes reducing overwhelm through a dynamic, energy-aware layout (e.g., spiral shape reflecting diminishing daily focus).

Logseq, being an open-source outliner with strong query and plugin support, doesn't have an exact 1:1 replica of Nautilus's spiral visualization. However, it offers robust alternatives via built-in features (like journal queries and blocks) and plugins for timeline-based task management, calendars, and visual boards. These can approximate Nautilus's functionality: dynamic daily views, task durations/progress, priority marking, and time-based pushing (via queries or automation).

I've curated the top alternatives below, focusing on plugins and native tools that handle visual task/event planning. All are free/open-source unless noted. Installation is straightforward via Logseq's Plugins menu (Settings > Plugins > Marketplace). Search for the plugin name there.

Comparison Table

AlternativeDescriptionKey Features Mimicking NautilusPros vs. NautilusCons vs. NautilusInstallation/Setup
Logseq Timeline PluginRenders a horizontal timeline of journal entries, tasks, and events with drag-and-drop reordering.Visual timeline for daily/weekly views; supports task durations (via properties like duration: 10m); progress tracking (e.g., /todo with done::true); auto-refreshes based on current date/time. Use queries to push unfinished tasks forward.More interactive (zoom/drag); integrates natively with Logseq's bi-directional links; customizable via CSS for "spiral-like" curves if advanced.Linear timeline (not spiral); no built-in energy spiral or auto-push without queries.Install from Marketplace: Search "Timeline". Add {{timeline}} in a journal block. Set durations in block properties.
Logseq Calendar PluginEmbeddable calendar view that pulls tasks/events from journals, with color-coding and time slots.Fixed events (e.g., 12:30-14:20 Meeting parsed as blocks); task durations/progress (using properties like effort: 20min and progress: 50%); red priority via tags (e.g., #urgent); dynamic view of today's unfinished items.Full calendar integration (monthly/weekly); mobile-friendly; auto-updates on journal changes.Grid-based (not spiral); requires property setup for durations (no shorthand like "10m").Install "Calendar" from Marketplace. Insert {{calendar}} or {{renderer calendar}} in daily journal. Use advanced queries for task pushing: e.g., {{query (and (task not done) (page today))}}.
Logseq Gantt PluginGantt chart renderer for project timelines, adaptable for daily task planning.Bar-based visual for tasks/events with start/end times; durations (e.g., start: now, duration: 45min); progress bars (0-100%); dependencies to "push" tasks after events; color overrides (blue/yellow/gray/red).Great for sequential planning; exports to SVG; handles variabilities like Nautilus.More project-oriented (horizontal bars); less "daily page" focus without customization.Install "Gantt" or "Logseq Gantt Chart" from Marketplace. Use in a block: {{gantt ...}} with YAML config for tasks. Combine with journal queries for auto-population.
Logseq Kanban PluginBoard-style view for tasks, with lanes for "To Do/In Progress/Done" and timeline overlays.Drag tasks between states; add durations/progress as properties; event blocks as fixed "cards"; priority colors (red via tags); queries to filter/show only today's unfinished items.Highly visual and reorderable; supports "push forward" via automation scripts; integrates with TODOs.Card-based (not timeline/spiral); better for agile than strict time slots.Install "Kanban" from Marketplace. Create a page with {{kanban}} and link journal tasks. For time-pushing: Use {{query (task today)}} to populate dynamically.
Built-in Queries + Whiteboards (Native)Use Logseq's query language and whiteboard canvas for a custom visual planner—no plugin needed.Dynamic task lists with durations/progress (e.g., query: (and (task) (property duration) (not done))); embed on whiteboard for visual layout; current-time filtering via page: {{today}}; color via CSS (e.g., red for #urgent).Zero dependencies; fully customizable (add spiral via SVG embeds or plugins like Draw.io); privacy-focused like Logseq.Requires setup (no out-of-box visual); manual for spiral/energy aspects.No install. In journal: Add query block like {{query [[Queries]]}} where Queries page has your task filter. For visual: Create a whiteboard page, embed queries, and arrange blocks. Extend with "Logseq Draw" plugin for custom shapes.
Logseq Advanced Tables PluginTable-based renderer with timeline sorting, for structured daily agendas.Sort tasks by time/duration; columns for progress (e.g., 50%), status colors; auto-populate from journal; "push" via sorted queries showing remaining time slots.Simple for event-task mixing; exportable; lightweight.Tabular (not graphical spiral); less immersive visualization.Install "Advanced Tables" from Marketplace. Use in block: {{table ...}} with properties. Query integration for dynamic updates.

Recommendations

  • Closest to Nautilus's Visual Flow: Start with Logseq Timeline or Gantt for the time-based rendering—add custom CSS (via Settings > Appearance > Custom CSS) to curve timelines into a pseudo-spiral if you're handy with code.
  • For Quick Setup: Use the Calendar Plugin combined with Logseq's native TODO properties (e.g., set scheduled:: for events, effort:: 10m for tasks). It handles "present moment threshold" via date filters.
  • Progress and Automation: All support Logseq's built-in task states (TODO/DONE) and properties. For auto-timestamps on completion (like Nautilus + TODO Trigger), enable Logseq's "Journal auto timestamps" in Settings, or pair with the "Logseq Auto Task" plugin.
  • Customization Tips: Logseq's plugin API allows forking/extending these (e.g., GitHub repos like logseq-timeline). If none fit perfectly, check the Logseq Discord or r/logseq for community scripts—users have shared "daily spiral" experiments using D3.js embeds.
  • Migration Note: Export Roam tasks as Markdown and import to Logseq journals; properties like durations transfer easily.

2025/09/25

風雨中,找到台灣的陽光路

ChatGPT+Grok


嘿,年輕的學生朋友,還有每天起早摸黑上班的勞工兄弟姊妹,你有沒有過那種感覺?看著薪水單,總覺得怎麼努力都追不上物價;新聞裡,中國、印度像大山一樣壓過來,台灣這個小島好像永遠在掙扎。別灰心,這不是絕望的故事,而是你的機會。從事實和歷史看來,台灣不是受害者,而是有潛力的戰士。這篇文章用簡單的話,帶上真實的研究和歷史證據,告訴你現實,激勵你行動。讀完,你會想:「原來我能改變!」


一、結構像天氣:抱怨沒用,帶傘才有用


台灣的經濟現實,就像天氣一樣,沒人能全改。歷史上,從1950年代起,台灣靠出口成長,但現在面臨中國巨人。2025年上半年,台灣出口漲了25.9%,但五金機械份額只剩5.1%。 薪水呢?89%老闆說會加薪,但大多只加1-5%,實質成長才1%左右。 這些大環境問題,從1990年代高等教育擴張就開始,導致大學生太多,壓低薪資。


研究顯示,把這些當「環境」看,焦慮會少,行動會多。 就像下雨天,你不會罵天,只會拿傘衝出去。一個基層勞工在X上分享:「我從抱怨低薪,轉學線上賣貨到美國,收入多20%!」 你呢?從今天,花10分鐘看國際新聞,想想「這對我有機會嗎?」


二、政府鋪路,但要你自己跑


政府不是萬能救星,但歷史證明,它能幫忙起步。裕隆汽車從1950年代起拿政府補助幾十年,建起台灣汽車業,但到現在還依賴保護,全球競爭力弱。 台積電不一樣:政府早年投資,但成功靠自己創新,衝上世界第一,2025年推高台灣GDP。


研究說,懂政府是輔助,不是替代,就能主動用資源。 像勞動部補助轉型最高10萬,很多人學AI、外語,薪水翻倍。 一個年輕人說:「我本來等救,後來申請補助學技能,現在工作好多了!」行動:上政府網站查資源,把它當跳板,跑出你的路。


三、學歷≠護身符,技能才是真的武器


爸媽說「讀大學就有好工作」,但歷史不這麼想。1995-2005年,台灣大學從50間爆增到150間,畢業生太多,導致22K低薪現象,教育溢價掉。 研究證明,只有學歷沒用,技能才有價值。


看芬蘭:從1960年代起,他們不只念書,還學綠能、產業合作,創新排全球第7。 一個台灣勞工分享:「從工廠轉學數據,現在在家上班,生活變好!」 行動:學生,學英文、證照、交換;勞工,每週10小時練一技。你的技能,就是護身符。


四、人才出國:不是損失,是投資


「人才跑光了」?歷史說不。台灣1950-70年代腦流失嚴重,但1980年起逆轉,返回人才帶知識,建起半導體業。 以色列經驗:人才出國學,帶回AI、網路安全,經濟強。


腦循環好處大:半導體短缺71%,但經驗流回救場。 像台灣籃球員去NBA學,回來教大家。行動:把出國當磨練,短期打工、實習,學回來用。


五、學會避戰,找小天地


五金機械歷史慘:從1990年代起受中國競爭,出口降,補助只延後失敗。 但新加坡小品牌賣全球,成功。 一個勞工轉賣台灣設計到美國,找到新路。


研究說,轉高單價、多元市場,就能活。 行動:勞工,學外銷思維;學生,想小創意上網賣。避開大戰,找你的小陽光。


六、媒體心態:少謾罵,多思考


只看新聞罵,只會更氣。歷史上,台灣從依賴補助轉創新,才強。 研究顯示,懂結構,就少抱怨,多行動。 X上有人說:「從罵轉追趨勢,創業成功!」


行動:學生,看趨勢不刷八卦;勞工,加入社群討論轉型。大家深度聊,台灣會更好。


七、結語:帶傘的人,不怕風雨


台灣小國歷史,證明風雨中能出頭:政府起步,你創新;學歷開門,你技能走;人才流動,是鍛鍊。真正的力量,從你開始——努力加證據,台灣像以色列、芬蘭一樣強。 別等變天,拿你的傘衝。當我們都強,台灣陽光就來了。行動,從現在!

長壽電視劇演員修長假的方式

 你提到的情況在長壽劇(特別是十年以上的電視劇)裡面非常常見。因為演員拍攝時間長、壓力大,或者因為身體、家庭、甚至其他工作需要,確實會要求暫時休假。編劇和製作組通常會用幾種「合理的劇情手段」來解決:


1. 角色暫時離開的合理理由

  • 出國進修/出差:這種最自然,能隨時回來。

  • 探親或外地工作:讓角色離開當下的主舞台。

  • 入獄/療養/住院:醫療或法律相關情節也常被使用。


2. 更戲劇化的方式

  • 假死:角色突然「死亡」,但其實保留伏筆,未來能復活。這通常用在懸疑、古裝或狗血劇裡。

  • 逃亡/隱藏:角色因某種原因被迫消失,等回歸時可以有戲劇性的「真相揭曉」。


3. 替代方案

  • 戲份淡化:角色不消失,但台詞、鏡頭大幅減少,讓休假的演員不用天天進組。

  • 替身/側拍:偶爾會用背影替身或舊素材來維持存在感。


4. 回歸的設計


等演員回來後,編劇會藉由之前設下的理由,把角色「帶回來」。例如留學結束回國、病癒出院、冤屈洗清、死而復生等。這樣既交代了角色的空白期,又能製造戲劇效果。


✅ 總結來說:是的,長壽劇在演員請長假時,常用「出國進修」「逃亡」「假死」這類情節來解釋缺席,等到休假結束後再合理寫回來。

2025/09/24

受歡迎的 Flashcard App(抽認卡/記憶卡應用程式)

 下面是一些目前比較受歡迎的 Flashcard App(抽認卡/記憶卡應用程式) 的比較,並搭配它們的優缺點與適用情境,幫你選擇最適合自己的工具。


(註:功能與價格可能會改變,下列比較以最近公開資料為基準)


🔍 比較對象與評比維度


常被拿來比較的 App 包括:

  • Anki  

  • Quizlet  

  • Brainscape  

  • Cram  

  • Memrise  

  • 其他新興/利基型應用,比如 Retain、Flashcard Lab、IDoRecall 等  


評比維度可能包含:

維度

含義

記憶機制 / 間隔重複 (Spaced Repetition)

是否支援、靈活度如何

使用者介面與易用性

新人是否容易上手

多媒體支援

圖片、音檔、影片、LaTeX 等

雲端同步與跨平台

手機、電腦、Web 間的同步能力

社群 / 共用功能

能否使用他人題庫、分享卡組

成本 / 收費方式

免費 vs 付費功能差異


✅ 各 App 優缺點比較


下面是各個代表性 App 的優勢、限制與適合情境整理:

App

優勢

限制 / 需注意

適合誰 / 適合用途

Anki

- 強大的間隔重複演算法 & 可高度自訂    - 可支援文字、圖片、音檔、影片、LaTeX 等混合內容    - 開源、社群插件豐富  - 桌機版免費,Android 版免費  

- iOS 版需付費購買    - 初學者要設定可能有學習曲線  - 須手動管理同步 (雖然有 AnkiWeb 同步服務)  

適合需要高度自訂、重視記憶效率與深度學習(如醫學、語言、技術領域)

Quizlet

- 介面簡潔、容易上手    - 多種學習模式(抽認卡、配對遊戲、測驗等)    - 大量現成題庫可使用與共用

- 進階功能(如高級統計、更多媒體類型)多半在付費版中  - 間隔重複機制不如 Anki 那麼可調整精細

適合學生、語言學習者、需要快速做題與測驗練習的人

Brainscape

- 易於建立與匯入卡片  - 採用自家調整的間隔重複機制 (信心分級)    - 支援課程 / 班級共享功能

- 免費版在多媒體 (音檔、圖片) 支援上有些限制    - 高階功能需升級付費

適合想要在課堂 / 共同體系內共享卡組,且喜歡結構化題庫的人

Cram

- 簡單、直接,適合快速建立與練習卡片    - 支援不同測驗模式、遊戲化練習項目

- 不像 Anki 那麼強大的間隔重複功能  - 卡片自訂與高階功能相對簡單

適合一般用途、考試複習、快速練習記憶

Memrise

- 專注語言學習,內建社群課程與互動功能    - 有遊戲化元素與背單詞記憶輔助

- 在非語言領域的支援較弱  - 部分社群課程可能品質不一致

適合語言學習者、想透過有趣方式記單字或語法的人

此外,有些新興或專用型 App 在特定場景有優勢,例如:

  • Retain:在最近的免費 App 比較中被提為兼顧效率、易用與成本的選擇之一  

  • IDoRecall、Flashcard Lab:提供部分印刷、匯出功能與特定格式支援  


🧠 選擇建議:依需求選 App


選哪一款,要配合你的學習風格與用途。以下幾點可作為決策參考:

  • 如果你重視記憶效率與深入學習 → 優先考慮具備強大間隔重複演算法與高度自訂的 App,如 Anki

  • 如果你希望快速上手、有現成題庫可用 → Quizlet 是很好的入門選擇

  • 如果你在班級 / 組織內共享 /協作 → 可考慮有共享 / 課程功能的 Brainscape

  • 如果你只是想簡單做卡片、練習 → Cram 類型的輕量 App 就足夠

  • 如果你的主要目的是學語言 → Memrise 在語言學習與單字記憶上有特色支援


比較 Tableau 與 Power BI 在公司內部「雲端報表共享」上的應用差異

 這是一個很實用的問題 👍 我來幫你比較 Tableau 與 Power BI 在公司內部「雲端報表共享」上的應用差異:


🌐 部署與雲端平台

  • Tableau

    • 提供 Tableau Server(自建伺服器)與 Tableau Online(SaaS 雲端服務)。

    • 適合需要跨國、多部門協作的大型企業。

    • 能與多種雲端數據平台(AWS、Google Cloud、Azure)高度整合。

  • Power BI

    • 原生整合在 Microsoft Azure 與 Office 365 生態系統

    • 更適合已經使用 Microsoft Teams、SharePoint、Outlook 的公司。

    • 共享體驗相對平順,尤其對於已經在 Microsoft 生態系的組織。


👥 使用者共享與協作

  • Tableau

    • 透過 Tableau Server / Online 分配「Viewer、Explorer、Creator」不同角色。

    • 擅長處理跨部門、大規模共享,能提供使用者 互動式探索(下鑽、過濾)。

    • 對非技術人員可能需要額外培訓,因為報表操作相對專業化。

  • Power BI

    • 與 Microsoft 365 帳號直接綁定,授權和群組控制容易。

    • 使用者可以在 Teams、Outlook 直接嵌入報表,協作流暢。

    • 適合一般商務人員快速查看與互動,學習曲線較低


📊 報表設計與互動

  • Tableau

    • 可建立高度自訂的可視化,設計靈活度高,支援複雜的分析需求。

    • 適合數據科學、商業分析部門,做 深度視覺化探索

  • Power BI

    • 視覺化元件雖然少一些,但足以應付大多數商務情境。

    • 側重於 標準化報表、即時儀表板,適合經理層快速決策。


🔐 安全性與治理

  • Tableau

    • 提供強大的存取控制、資料治理與審計功能。

    • 適合需要嚴格合規(如金融、醫療)的大型組織。

  • Power BI

    • 繼承 Azure Active Directory (AAD) 的權限控管,與公司現有的 AD 整合容易。

    • 更適合 Microsoft 生態內的資訊安全政策。


💲 成本與授權

  • Tableau

    • 計費較高,以使用者角色(Viewer/Explorer/Creator)收費。

    • 適合預算充足、需要高彈性分析的企業。

  • Power BI

    • 價格相對便宜,Pro 訂閱每人每月約 10 美元,Premium 提供更大規模與雲端運算能力。

    • 成本效益高,特別適合中小企業或已經購買 Microsoft 365 的公司。


📌 總結

  • Tableau → 適合 數據驅動文化濃厚、跨部門合作、需要高度自訂視覺化的大型企業

  • Power BI → 適合 已使用 Microsoft 生態系(Teams、SharePoint、Office 365)的公司,追求成本效益與快速部署


2025/09/23

電力驅動的垃圾熱處理

 簡短結論:目前幾乎沒有公開的「以核反應爐的熱,直接拿來焚燒一般市政垃圾(MSW)」的實證專案。各國與國際機構評估核能多用在工業供熱、區域供暖、海水淡化、製氫等;垃圾處理則仍以「自燃焚燒/氣化(自身做燃料)」或「以電力驅動的等離子處理」為主(電力來源可含核電)。以下把「誰評估/測試過、結論如何」整理給你:

1) 「核能用於工業熱/供暖」的系統性評估(非特定於焚燒垃圾)

  • OECD-NEA(核能署):評估高溫氣冷堆(HTGR)供工業熱的可行性與限制,重點是化工、煉油、氫能、區域供熱等應用;文件把「焚燒垃圾」列為主要耦合場景。結論:在中高溫(多數 <~750 °C)工業熱需求上技術可行,但實施取決於經濟與在地條件。Nuclear Energy Agency (NEA)

  • MIT Energy Initiative(麻省理工)《限碳世界中的核能》(2018/2019):總結核能供工業熱的潛力與溫度邊界,建議優先導入低到中溫工藝與區域供熱;未提到用核熱來焚燒MSW。Main

  • EPRI(美國電力研究院):盤點核電廠對區域供熱的現況與歷史案例(東歐、北歐等地),顯示核電可穩定輸出熱能到城市熱網;但文獻中沒有核熱直接服務於垃圾焚化廠的實例。restservice.epri.com

2) 「電力驅動的垃圾熱處理」(核電可做電源)的實證與結果

  • 等離子氣化(Plasma Gasification)

    • MIT 新聞報導 InEnTec 等公司以等離子氣化把各類垃圾轉為合成氣與可用的玻璃渣,已有多處部署;技術可行但經濟性與放大規模是難點。MIT News

    • 美國俄勒岡 Columbia Ridge 的示範(S4 Energy / Waste Management 參與):展示把家戶垃圾轉成可用合成氣與玻璃渣;媒體與技術文獻指出技術能跑、商轉擴張困難WIRED

    • 學術面:高溫蒸汽氣化可把塑膠/MSW 轉為清潔氣體燃料;多篇研究驗證路線可行,但仍受原料雜質、經濟性所限。ACS Publications

    • IEA Bioenergy(任務組33)總結:垃圾氣化可產能,但落地常受政策、經濟與供料穩定度影響。IEA Bioenergy
      ⮕ 以上流程用「電」驅動,理論上核電可提供低碳、穩定電力,但現有示範並未強調「必須使用核電」。

  • 傳統焚燒—評估/設計趨勢:多國把重點放在效率與超低排放改造與監管(非核能供熱)。例如:

    • 中國大陸生態環境部的《生活垃圾焚燒發電廠現場監督檢查技術指南》(2022)與浙江省的超低排放評估監測技術指南(2025),推動焚燒廠的達標與改造評估。Ministry of Ecology and Environment+1

    • 美DOE(EERE)報告:MSW 作為能源原料含水率高、熱值低且成分異質,是經濟與技術整合的主要挑戰;當前主流仍是焚燒與厭氧消化。The Department of Energy's Energy.gov

3) 「核領域自身廢棄物」的等離子焚化/玻璃化測試

  • 放射性廢棄物(非一般垃圾):早在 1990s 就有等離子焚化+玻璃化的研究與示範,能顯著減容並把無機殘渣玻璃化以便長期穩定處置。這類測試多發生在核能/研究單位或其承包商。ScienceDirect

4) 為何「核能+燒垃圾」少見?

  • 垃圾本身就是燃料:現代焚化設計是用垃圾的熱值自給自足;額外用高品級外部熱源(如核熱)經濟誘因不強,還可能推高 NOx 生成風險(過高爐溫)。NCBI

  • 佈署與監管:把大量混合垃圾運到核電廠附近不具社會與監管可行性;核電更常被用來供熱給城市或工業,而不是反過來服務焚化爐。restservice.epri.com+1

  • 技術聚焦不同:國際路線圖把核熱優先用在區域供暖、海淡、製氫與中溫工藝熱;焚燒垃圾不是主要耦合案例。Nuclear Energy Agency (NEA)+1

  • MSW 端的優先事項:各國在排放監測/超低排放改造與熱網整合上下功夫,而非尋找外部高品級熱源來「幫忙燒」。Ministry of Ecology and Environment+1

可以落地的「折衷方案」

如果目標是「用核能幫垃圾處理降低碳排」,比較務實的是:

  • 核電(含SMR)→ 穩定低碳電力 → 等離子氣化/電鍋爐/CCS等單元:利用核電穩定性來提高等離子氣化碳捕集的可用率。MIT News+1

  • 核電供區域熱網,焚化爐與核熱共用熱網:兩者各自發熱,但在熱網層面做調度與備援(北歐與東歐已有核供熱與焚化供熱的成熟案例,但多為各自入網而非直接耦合)。restservice.epri.com

2025/09/20

Desktop Media Cleanup App — Requirements v1.0

Desktop Media Cleanup App — Requirements v1.0

1) Overview & Goals

A desktop utility that helps users quickly triage photos and videos by assigning scores and bulk‑deleting low‑scored media. The app indexes media in a chosen root folder, previews items one‑by‑one, lets users adjust a per‑file score via mouse clicks, and automates deletion of files that were marked for removal.

Primary goals

  • Fast, keyboard/mouse‑driven triage of large media libraries.

  • Clear progress feedback and a definitive “clean up completed” state.

  • Safe, reversible (optional) delete flow, per user confirmation.

Out of scope (v1): Cloud sync integrations, facial recognition, deduplication, format conversion, editing.


2) Platforms & Tech Assumptions

  • Target OS: Windows 10+, macOS 12+, (optional) Linux (Ubuntu LTS).

  • Packaging: Native installers (MSIX/EXE, DMG/PKG, AppImage/Snap optional).

  • Media preview: use OS codecs or a cross‑platform library (e.g., ffmpeg/AVFoundation/DirectShow) for thumbnails and playback.

  • Index store: single file per root (SQLite recommended; JSON allowed for MVP).


3) Core Concepts & Definitions

  • Root Folder: The folder the user chooses to clean; includes all subfolders.

  • Index: On‑disk database of discovered media and their scores/metadata.

  • Score: Integer 1..51..5, default 3 for each indexed file.

    • 1 = reject (to delete), 5 = keep (locked), 2/3/4 = undecided.

  • todelete folder: Destination subfolder under each file’s current parent for files scored 1.


4) User Stories

  1. As a user, I can pick a folder and immediately see its subfolders in a tree with file counts.

  2. As a user, I can preview photos/videos in sequence and change their score quickly with the mouse.

  3. As a user, I can skip items already at score 1 or 5 and focus only on undecided ones.

  4. As a user, I can finish triage and bulk‑delete the 1‑scored files after a clear confirmation.

  5. As a user, I see a "clean up completed" message when every file is either 1 or 5.


5) Functional Requirements

FR-1 Folder Navigation & Tree

  • FR-1.1 The app shows a collapsible folder tree rooted at the selected folder.

  • FR-1.2 Users can toggle among folders and subfolders; selecting a node filters the item list/preview scope.

  • FR-1.3 Each node displays the total media file count (photos + videos) within that folder including all nested subfolders.

FR-2 Indexing

  • FR-2.1 On selecting a root, the app creates/updates an index of photos and videos (configurable extensions: jpg/jpeg/png/heic/webp/mp4/mov/avi/mkv, etc.).

  • FR-2.2 Each discovered file is added with initial score = 3.

  • FR-2.3 The index stores: absolute path, file size, modified time, hash (optional), duration (video), orientation + EXIF date (photo), and current score.

  • FR-2.4 Index updates are incremental on subsequent launches (detect adds/removes/moves).

  • FR-2.5 Index file is stored at the root as .media_index.sqlite (or .json for MVP).

FR-3 Preview & Scoring

  • FR-3.1 The app starts previewing media from the current selection/folder.

  • FR-3.2 Right‑click on preview adds +1 to the current file’s score (max 5).

  • FR-3.3 Left‑click on preview deducts −1 from the current file’s score (min 1).

  • FR-3.4 Keyboard shortcuts (optional but recommended): = +1, = −1, Space = next, Backspace = previous.

  • FR-3.5 The preview loop auto‑skips any item with score 1 or 5.

  • FR-3.6 When the current pass ends, the app circles back to files that are still score 2/3/4 until all files are 1 or 5.

  • FR-3.7 Video preview defaults to the first 5 seconds (toggle to full playback); photo preview fits to window with zoom/pan.

FR-4 Move & Delete

  • FR-4.1 Whenever a file’s score becomes 1, the app moves it to a sibling folder named todelete under its original parent (create if missing). Preserve subfolder structure relative to the root.

  • FR-4.2 When all files within the selected scope are either 1 or 5, show “clean up completed”.

  • FR-4.3 Prompt: “Delete all files scored 1?” If the user confirms, permanently delete those files (see Safety below), then delete the index file.

  • FR-4.4 After deletion, recursively remove empty folders (folders with no files in them or any of their subfolders).

FR-5 Progress & Status

  • FR-5.1 Show counts: total, scored 1, scored 5, remaining (2/3/4).

  • FR-5.2 Status bar indicates current folder, preview position (e.g., 120/3,482), and pass number.

FR-6 Settings

  • FR-6.1 Configure included file extensions.

  • FR-6.2 Toggle confirm‑before‑move (default off) and confirm‑before‑delete (default on, cannot be disabled in v1).

  • FR-6.3 Option to send deletes to OS Trash/Recycle Bin instead of hard delete (recommended default).


6) Non‑Functional Requirements

  • Performance: Index 50k files in ≤ 5 minutes on SSD; preview latency ≤ 150 ms for images, ≤ 500 ms to start video.

  • Reliability: Crash‑safe index writes (transactional); resume last session state.

  • Security: No network access by default; operates only on local paths with explicit user selection.

  • Accessibility: All actions available via keyboard; high‑contrast option.


7) UX & Screens

  • Main layout: Left = folder tree with counts; center = preview; right = metadata + score display; bottom = controls & status.

  • Contextual HUD: Big overlay briefly shows new score after click (e.g., “Score: 4”).

  • Completion dialog: Summary of items to be deleted; irreversible‑action warning.


8) Data Model (SQLite Suggestion)

TABLE media (
  id INTEGER PRIMARY KEY,
  path TEXT UNIQUE NOT NULL,
  rel_path TEXT NOT NULL,
  folder_id INTEGER NOT NULL,
  type TEXT CHECK(type IN ('photo','video')),
  score INTEGER NOT NULL DEFAULT 3 CHECK(score BETWEEN 1 AND 5),
  size_bytes INTEGER,
  mtime_utc TEXT,
  duration_ms INTEGER,
  exif_datetime TEXT,
  hash TEXT,
  FOREIGN KEY(folder_id) REFERENCES folders(id)
);

TABLE folders (
  id INTEGER PRIMARY KEY,
  path TEXT UNIQUE NOT NULL,
  rel_path TEXT NOT NULL,
  total_count INTEGER NOT NULL DEFAULT 0
);

INDEX idx_media_folder ON media(folder_id);
INDEX idx_media_score ON media(score);

9) Scoring & Preview Algorithm (Reference)

function triageLoop(scope):
  queue = all media in scope where score IN (2,3,4)
  while queue not empty:
    item = queue.popNext()
    showPreview(item)
    action = waitForUserClick()
    if action == RIGHT_CLICK: item.score = min(5, item.score + 1)
    if action == LEFT_CLICK:  item.score = max(1, item.score - 1)
    persistScore(item)
    if item.score == 1: moveToToDelete(item)
    if item.score in (2,3,4): queue.enqueue(item) // circle back later
  if all items in scope have score in (1,5):
    showCleanupCompleted()
    if confirm("Delete all files scored 1?"):
      deleteAllScoreOne(scope)
      deleteIndex()
      pruneEmptyFolders(scope.root)

10) File Operations & Safety

  • Moves and deletes must be atomic where possible; fall back with clear error messages.

  • During delete: if setting is “send to OS Trash,” use platform APIs; otherwise perform hard delete after confirmation.

  • Skip/record failures (e.g., permission denied, locked file) and continue; show a completion report.


11) Module Breakdown (Modularization)

  • app/

    • main (bootstrap, window, routing)

    • config (settings load/save)

    • i18n (strings)

  • indexer/

    • scanner (walk filesystem)

    • metadata (EXIF/video probes)

    • store (SQLite/JSON abstraction)

  • preview/

    • image_viewer (render, zoom, pan)

    • video_player (playback, scrub)

  • scoring/

    • controller (event handling, queue policy)

    • state (session state, resume)

  • ui/

    • folder_tree (counts, toggles)

    • status_bar, hud, dialogs

  • ops/

    • mover (to todelete)

    • deleter (trash/hard delete, prune empty dirs)

    • reporter (summary & logs)

Each module ships in a separate source file (or cohesive files) with narrow interfaces to ease updates and feature additions.


12) Acceptance Criteria

  • AC‑1: Selecting a root shows a tree with accurate counts (children included).

  • AC‑2: All files are assigned score 3 on first index.

  • AC‑3: Left/Right clicks adjust score exactly by −1/+1; scores clamp to 1..51..5.

  • AC‑4: Preview loop never shows items already at 1 or 5.

  • AC‑5: Files at score 1 are moved to todelete/ under their original parents.

  • AC‑6: When no items remain at 2/3/4, “clean up completed” appears.

  • AC‑7: On confirmation, all score‑1 files are deleted, the index file is removed, and empty folders are pruned.


13) Future Enhancements (Non‑blocking)

  • Duplicate detection (perceptual hash).

  • Sorting heuristics (by similarity, face detection, blurriness).

  • Multi‑root projects; exportable CSV reports.

  • Undo/redo stack and checkpoints.


14) Technology Options for a Windows App — Comparison

The app is Windows‑first with heavy filesystem work and image/video preview. Below is a pragmatic comparison of common stacks.

14.1 Quick Matrix (higher is better)

Tech Perf. Memory Dev Speed Native Win Integration Cross‑Platform Media Preview Maturity Packaging
.NET WPF (.NET 8) 5 4 4 5 2 5 MSIX/WiX/WinGet
.NET WinUI 3 (Windows App SDK) 5 4 3 5 2 5 MSIX/WinGet
.NET MAUI (Windows target) 4 4 3 4 4 3 MSIX
Avalonia UI (.NET) 4 4 4 3 5 3 MSIX/others
Qt (C++/QML) 5 5 3 4 5 5 MSI/WiX
Flutter (Windows) 4 4 3 3 5 3 MSIX
Electron (JS/TS) 3 2 5 3 5 4 Squirrel/MSIX
Tauri (Rust + WebView) 4 5 3 3 5 3 MSI/MSIX
Python (PySide/PyQt/PyInstaller) 3 3 4 3 5 3 EXE/MSI

Legend: 1–5 relative score. Memory = smaller footprint → higher score.

14.2 Notes & Pros/Cons

.NET WPF

  • Pros: Battle‑tested on Windows, excellent filesystem APIs, stable MVVM ecosystem, great tooling (Visual Studio, Rider). Easy thumbnails via WIC; video via Media Foundation or FFmpeg wrappers. Mature SQLite + EXIF libs.

  • Cons: Windows‑only; legacy XAML patterns but still first‑class.

  • Use when: You want the most stable Windows‑native path with top‑tier performance and full access to Windows codecs.

.NET WinUI 3 (Windows App SDK)

  • Pros: Modern WinUI controls, high‑DPI, fluent styling, future‑facing Windows stack. Deep integration with Windows features.

  • Cons: Some APIs/tooling still evolving; smaller community than WPF. Edge cases with third‑party controls vs WPF.

  • Use when: You want modern Windows look/feel and can accept newer‑stack tradeoffs.

.NET MAUI (Windows)

  • Pros: Same codebase can target Mac/iOS/Android; Windows layer sits on WinUI 3. Good for shared business logic.

  • Cons: Desktop maturity below WPF/WinUI; media preview/video plugins less polished for Windows.

  • Use when: Cross‑platform is a real requirement and you’re already in .NET.

Avalonia UI (.NET)

  • Pros: Cross‑platform WPF‑like XAML; good theming; solid desktop focus.

  • Cons: Fewer off‑the‑shelf media components; you’ll likely embed FFmpeg/LibVLC for video.

  • Use when: You want .NET + cross‑platform with a desktop‑first mindset.

Qt (C++/QML/QtQuick)

  • Pros: High performance, native feel, very mature multimedia (Qt Multimedia) and EXIF/DB tooling, excellent for large libraries.

  • Cons: C++ complexity; commercial licensing for some use cases; larger dev ramp.

  • Use when: You need top performance and true cross‑platform with robust media.

Flutter (Windows)

  • Pros: Single codebase; fast UI iteration; strong 2D GPU rendering.

  • Cons: Desktop plugins for advanced media/filesystem are still catching up vs native.

  • Use when: You have Flutter expertise and want cross‑platform UIs.

Electron (JS/TS)

  • Pros: Web skills, rapid UI dev, rich ecosystem. Chromium can preview many image/video formats; Node for filesystem.

  • Cons: Larger memory footprint; packaging/signing friction; native OS feature gaps.

  • Use when: Team is web‑heavy and footprint isn’t critical.

Tauri (Rust + WebView)

  • Pros: Tiny binaries and memory; secure; Rust for native ops; modern WebView front‑end.

  • Cons: Media playback often requires native plugins/FFmpeg; fewer production examples for heavy media.

  • Use when: You want Electron‑style dev with an order‑of‑magnitude smaller footprint and can handle native media plumbing.

Python (PySide/PyQt)

  • Pros: Quick prototyping; rich libraries; Qt underneath.

  • Cons: Packaging size, startup time, and distribution quirks; perf below C#/C++.

  • Use when: You need rapid iteration and internal tooling; less ideal for mass distribution.

14.3 Media‑Specific Considerations for This App

  • Thumbnailing & EXIF: WIC + MetadataExtractor (.NET) or Qt’s QImageReader + Exiv2/QtEXIF are robust.

  • Video preview: Windows Media Foundation (native/.NET wrappers) or FFmpeg/LibVLC for broad codec coverage. Browser engines (Electron/Flutter WebView) support common codecs but may choke on edge formats.

  • Large library indexing: Prefer SQLite (system.data.sqlite/.NET; QtSql/SQLite; rusqlite for Rust). Use incremental scans and file hashing on demand.

14.4 Packaging & Updates

  • Windows‑native: MSIX (WinGet), or MSI/WiX; code‑signing cert required.

  • Web stacks: Electron → Squirrel/MSIX; Tauri → MSI/MSIX. Auto‑update channel recommended but must be code‑signed.

14.5 Recommendation

For Windows‑only and fastest path to a polished tool: .NET (WPF or WinUI 3).

  • Pick WPF if you want maximum stability and ecosystem breadth.

  • Pick WinUI 3 if you want a modern Fluent look and don’t mind a newer stack.

If small footprint and you’re comfortable binding native media: Tauri (Rust backend with FFmpeg/LibVLC + WebView UI).

If cross‑platform with strong media and you’re OK with C++: Qt (C++/QML).

14.6 Suggested Starter Kits

WPF (.NET 8)

  • Imaging: WIC via BitmapImage; EXIF: MetadataExtractor

  • Video: Media Foundation (MediaElement alternatives) or FFmpeg.AutoGen

  • DB: System.Data.SQLite

  • Packaging: MSIX + WinGet

WinUI 3

  • UI: Windows App SDK templates; MediaPlayerElement for video

  • Same EXIF/DB approach as WPF; MSIX packaging

Tauri

  • Backend: Rust (filesystem scan, SQLite, FFmpeg/LibVLC bindings)

  • Frontend: React/Svelte/Vue in WebView; invoke via Tauri commands

  • Installer: Tauri bundler → MSI/MSIX

Qt (C++/QML)

  • Media: QMediaPlayer / QVideoSink, thumbnails with QImageReader

  • EXIF: Exiv2; DB: QtSql + SQLite

  • Installer: WiX/MSI

2025/09/19

紅光療法(Red Light Therapy)的相關科學實驗證據整理

 ### 紅光療法(Red Light Therapy)的相關科學實驗證據整理


紅光療法(也稱光生物調節或低水平激光療法)使用紅光或近紅外光(波長約600-1000 nm)來刺激細胞功能,主要透過影響線粒體中的細胞色素c氧化酶來增加ATP產生,從而促進組織修復和生理調節。以下根據文獻中的隨機對照試驗(RCT)、meta分析和系統回顧,整理其對運動恢復、皮膚健康、抗炎作用及睡眠節律的證據。證據等級以GRADE系統評估(高、中、低),並聚焦人類研究。注意:雖然多數研究顯示正面效果,但樣本量有限,且需更多大型長期試驗確認。


#### 1. 運動後恢復(Boost recovery after workouts)

紅光療法可預先照射(pre-conditioning)或事後應用,減少肌肉損傷、氧化壓力,並加速恢復。機制包括增加ATP、減少乳酸累積及促進血液循環。


| 研究類型 | 關鍵發現 | 證據等級 | 參考 |

|----------|----------|----------|------|

| Meta分析(2015,巴西聖保羅大學,21項RCT) | 運動前紅光照射顯著改善疲勞時間(time-to-exhaustion)、重複次數,並加速恢復;效果大小中等(ES=0.6-1.0)。 | 中等 |  |

| 系統回顧(2016,Physiopedia) | 紅光增加肌肉質量、減少炎症及氧化壓力;預照3-5分鐘,效果持續3-6小時。 | 中等 |  |

| RCT(2015,近紅外光,n=20) | 劇烈阻力訓練後,紅光組力量損失減少50%,炎症標記(如CK酶)降低。 | 中等 |  |

| 回顧(2025,ACE Fitness) | 優於冷療(cryotherapy),但家用設備劑量不足研究級別。 | 低 |  |


**總結**:證據支持紅光作為運動恢復輔助,特別在預防肌肉疲勞方面,但最佳劑量(4-10 J/cm²)需個別化。


#### 2. 支持健康皮膚(Support healthy skin)

紅光促進膠原合成、纖維母細胞活性,改善皺紋、疤痕及彈性。常用於抗老化及傷口癒合。


| 研究類型 | 關鍵發現 | 證據等級 | 參考 |

|----------|----------|----------|------|

| RCT(2014,n=136) | 紅/近紅外光治療12週,細紋減少31%、皮膚粗糙度改善20%、膠原密度增加(超音波測量)。患者滿意度>90%。 | 高 |  |

| 系統回顧(2024,WebMD,11項研究) | 改善皺紋、痤瘡及疤痕;頭髮厚度增加(雄性禿患者)。 | 中等 |  |

| 回顧(2025,UCLA Health,3個月追蹤) | 面罩治療逆轉老化跡象(如紅腫、色素沉澱),效果持續1個月。 | 中等 |  |

| Meta分析(2023,Cleveland Clinic) | 減少紅腫及痤瘡,但長期安全需更多數據。 | 低 |  |


**總結**:強證據支持皮膚再juvenation,特別在臨床環境;家用LED效果較弱,建議結合醫師指導。


#### 3. 緩解炎症(Calm inflammation)

紅光抑制促炎細胞因子(如TNF-α、IL-6),促進抗炎介質(如IL-10),適用於關節炎及傷口炎症。


| 研究類型 | 關鍵發現 | 證據等級 | 參考 |

|----------|----------|----------|------|

| 系統回顧(2017,PMC,34項研究) | 紅光減少炎症介質,機制涉及線粒體及鈣離子通道;適用於關節炎及神經痛。 | 高 |  |

| Meta分析(2024,WebMD,11項RCT) | 疼痛及晨僵改善(ES=-0.5),特別風濕性關節炎;肌腱炎功能提升。 | 中等 |  |

| RCT(2025,UCLA,文獻回顧) | 慢性/急性疼痛炎症減少,優於安慰劑。 | 中等 |  |

| 回顧(2025,Stanford) | 組織炎症降低,但劑量依賴(>5000 lx最佳)。 | 低 |  |


**總結**:可靠證據顯示抗炎效果,作為非藥物輔助;癌症相關炎症(如化療後)也有初步支持。


#### 4. 改善睡眠節律(Help your body find a better sleep rhythm)

紅光對褪黑激素影響小(不像藍光抑制),可能透過增加血清褪黑激素及減少警覺性改善睡眠。證據較弱,多為小型研究。


| 研究類型 | 關鍵發現 | 證據等級 | 參考 |

|----------|----------|----------|------|

| RCT(2012,中國女籃球員,n=20,14天) | 每晚30分鐘紅光,匹茲堡睡眠指數(PSQI)改善、褪黑激素上升、總睡眠時間增加(P<0.05)。 | 中等 |  |

| RCT(2023,n=40,健康/失眠者) | 紅光增加主觀警覺但不影響睡眠;黑環境結合紅光改善入睡延遲及連續性。 | 中等 |  |

| 系統回顧(2023,meta分析,40項研究) | 光療法推進延遲睡眠時相(ES=-0.34),總睡眠時間增加;紅光避免藍光干擾。 | 低 |  |

| 回顧(2023,CNN) | 紅光不干擾晝夜節律,可能間接改善(避免藍光);但無強證據支持直接「重置」節律。 | 低 |  |


**總結**:初步證據顯示紅光可輔助睡眠質量(尤其是運動員),但不如亮光療法(bright light)對晝夜節律重置有效;晚上避免藍光更關鍵。


**整體注意事項**:紅光療法安全(無明顯副作用,如紅腫罕見),FDA批准多項家用設備,但效果依波長、劑量及持續時間而異。建議諮詢醫師,特別有光敏性疾病者。未來研究需聚焦長期效果及標準化協議。

Mac App - Photo Clean up


Product Requirements Document (PRD)

1) Summary

A macOS desktop app for rapid photo triage. Users browse a folder tree (parent/children), enter Cleanup Mode to preview photos one-by-one, and use swipe gestures:

  • Swipe Left → move photo to a staging folder named “ToDelete”.

  • Swipe Right → keep photo, advance to next.
    Keyboard shortcuts mirror gestures. Users can later review or permanently delete staged photos.

2) Goals & Non-Goals

Goals

  • Fast, low-friction review of photos in any filesystem folder.

  • Reliable, reversible “stage for deletion” workflow.

  • Smooth navigation among parent and child folders.

Non-Goals

  • Editing photos (crop, color, etc.).

  • Managing Photos app library (this release is filesystem-only).

  • Cloud sync logic (beyond what Finder/OS already does).

3) Assumptions

  • Sandboxed app; user grants access via folder picker. Use security-scoped bookmarks to persist access.

  • Photos are regular files in the filesystem (JPEG, PNG, HEIC, GIF, TIFF, RAW variants).

  • “ToDelete” is a sibling of the current folder by default (configurable).

4) User Stories

  • US-01: As a user, I can select a root folder to review.

  • US-02: I can navigate up to parent or down into children quickly.

  • US-03: I can enter Cleanup Mode and preview photos full-screen or in a focused pane.

  • US-04: Swiping left sends the current photo to “ToDelete” and shows the next photo.

  • US-05: Swiping right skips the photo and shows the next photo.

  • US-06: I can use keyboard shortcuts instead of gestures.

  • US-07: I can undo the last action(s).

  • US-08: I can review the “ToDelete” folder and restore items.

  • US-09: I can permanently delete staged items (to macOS Trash) with a confirmation.

  • US-10: I can configure where “ToDelete” is created and how images are sorted.

5) UX & Interaction Model

Navigation

  • Left sidebar: folder tree (current folder highlighted).

  • Breadcrumb at top for quick jump to ancestors.

  • Toggle to switch among Parent / Current / Children (or a three-segment control).

Cleanup Mode

  • Enters a focused viewer.

  • HUD: file name, index (e.g., 14/238), resolution, creation date.

  • Controls: Exit Cleanup, Undo, “Open in Finder”, “Reveal in Finder”, “View in ToDelete”.

  • Gestures:

    • Trackpad swipe left → stage to delete, auto-advance.

    • Trackpad swipe right → keep, advance.

  • Shortcuts:

    • ← / D = Stage to delete.

    • → / K = Keep/Next.

    • U / ⌘Z = Undo.

    • Space = Toggle quick zoom.

    • Esc = Exit Cleanup Mode.

Staging

  • On first stage action, app creates ToDelete if missing.

  • Name collisions resolved by appending “ (1)”, “ (2)”, etc.

  • Across volumes: perform copy+delete (with progress), preserving metadata.

Settings

  • Sort order: Date created | Date modified | Name | Size (asc/desc).

  • Include subfolders in Cleanup Mode: On/Off.

  • “ToDelete” location: sibling folder (default) | fixed app-level staging folder | custom.

  • Preview quality: Auto (default) | High | Low.

  • Confirm permanent deletion: On (default) | Off.

  • Skip files larger than N MB without warning: On/Off.

6) Functional Requirements

  • FR-01 Folder Access: User chooses one or more root folders; app stores security-scoped bookmarks.

  • FR-02 Folder Navigation: Display parent and children; jumping between them must be O(1) visible action with lazy loading of large trees.

  • FR-03 Media Discovery: Filter visible items to supported image types (configurable).

  • FR-04 Sorting & Filtering: Apply user’s sort preferences consistently across navigation and Cleanup Mode.

  • FR-05 Preview Engine: Generate fast thumbnails and quick-look previews (respect EXIF orientation). Preload next/previous image.

  • FR-06 Cleanup Mode State: Linear traversal of the filtered set; resume where left off per folder.

  • FR-07 Stage Left (Delete): Move file to “ToDelete” (atomic when possible). Advance immediately. Log action to an in-memory and on-disk session history for undo.

  • FR-08 Skip Right (Keep): Advance without moving file.

  • FR-09 Undo/Redo: Undo last N actions in session; supports restoring a moved file to its original path (or warn if path unavailable).

  • FR-10 “ToDelete” Review: Dedicated view to browse, restore, or permanently delete items.

  • FR-11 Permanent Delete: Send to macOS Trash (not immediate unlink) with count summary and confirmation dialog.

  • FR-12 Cross-Volume Handling: If “ToDelete” is on a different volume, copy+delete with progress UI; on failure, rollback.

  • FR-13 Conflicts: If a same-name file exists in “ToDelete”, auto-rename deterministically.

  • FR-14 Persistence: Store settings and per-folder progress in user defaults / app support.

  • FR-15 Accessibility: Full keyboard operation, VoiceOver labels, large hit-targets.

  • FR-16 Localization-Ready: Strings externalized.

  • FR-17 Telemetry (optional toggle): Count of staged/kept per session (no file names/paths).

  • FR-18 Error Handling: Friendly toasts for permission errors, missing files, iCloud download in progress, etc.

  • FR-19 Performance:

    • First preview < 300 ms p95 after assets indexed.

    • Next/prev transition < 120 ms p95.

    • Memory footprint < 500 MB when paging high-res photos (release decoded bitmaps).

7) Non-Functional Requirements

  • NFR-01 Platform: Current and last two major macOS versions. Universal build (Apple Silicon + Intel if required).

  • NFR-02 Privacy: All processing local; no network I/O by default.

  • NFR-03 Reliability: No data loss on interruption; operations are transactional where feasible.

  • NFR-04 Security: Respect sandbox; only user-granted folders accessible.

  • NFR-05 Observability: Lightweight logs (rotated), crash reports opt-in.

8) Data & Technical Notes

  • Use security-scoped bookmarks for persistent folder access.

  • Use file coordination for moves; preserve EXIF and extended attributes.

  • Use thumbnail APIs / CGImageSource for efficient previews; cache adjacent images.

  • Keep a session action log: {timestamp, originalPath, stagedPath, actionType} to power undo/redo and recovery after crash.

9) Out of Scope (v1)

  • Videos, Live Photos, and RAW sidecar pairing rules (treat as files for now).

  • Duplicate detection, fuzzy grouping, or AI.


Test Plan

A) Strategy

  • Unit Tests: file operations, name collision resolver, sort, state machine.

  • Integration Tests: security-scoped bookmark flow, cross-volume move, Trash deletion, EXIF orientation.

  • UI Tests (XCUITest): navigation, Cleanup Mode gestures/shortcuts, undo/redo.

  • Performance Tests: preview latency & memory under load.

  • Accessibility Tests: keyboard-only flows, VoiceOver labels.

  • Manual Exploratory: weird filenames, iCloud placeholders, external drives.

B) Test Environment

  • macOS latest and two prior majors; Apple Silicon primary.

  • File systems: APFS local; APFS external; network share (read/write).

  • Folder sets:

    • Small (≤100 photos), Medium (~5k), Large (≥50k, mixed formats).

    • Include HEIC, large JPEG (>25 MB), PNG, TIFF, common RAWs (CR2/NEF/ARW/DNG).

C) Acceptance Criteria (sample, traceable to FR-IDs)

  • AC-01 (FR-07): Swiping left moves file into “ToDelete” within 500 ms and advances to the next item.

  • AC-02 (FR-09): ⌘Z restores the last staged file to its original path even after folder change.

  • AC-03 (FR-11): “Delete staged” sends all items to macOS Trash and reduces “ToDelete” count to 0.

  • AC-04 (FR-05): Portrait photos show correctly oriented previews.

  • AC-05 (FR-02): Parent/children toggle switches views in ≤150 ms and preserves scroll and selection.

  • AC-06 (FR-12): Cross-volume stage shows progress and leaves no partials on failure.

  • AC-07 (FR-15): All primary actions are reachable by keyboard and announced by VoiceOver.

D) Core Test Cases

ID Precondition Steps Expected Result
TC-01 App fresh install Launch → Choose Folder Permission prompt shown; folder appears in sidebar; bookmark persisted.
TC-02 Folder with 500 JPEGs Enter Cleanup Mode → Swipe Right 5× Index increments; no files moved; HUD updates (6/500).
TC-03 Same as TC-02 Swipe Left 1× Current file appears in ToDelete; viewer advances; toast “Moved to ToDelete”.
TC-04 After TC-03 Press ⌘Z File restored to original path; index decrements; toast “Undo move”.
TC-05 “ToDelete” already has a file named IMG_0001.jpg Stage another IMG_0001.jpg New file saved as IMG_0001 (1).jpg (or next available).
TC-06 Large HEIC (30MB) Enter Cleanup → View file Preview < 300 ms p95 after first load; memory does not exceed cap.
TC-07 Mixed orientations Browse 10 photos All previews respect EXIF orientation (no sideways images).
TC-08 External APFS drive as “ToDelete” target Stage 50 files Progress UI shown; files appear on external; originals removed from source.
TC-09 iCloud Drive folder with placeholders Stage a placeholder App prompts/waits for download; on success, move proceeds; on failure, user gets actionable error.
TC-10 No write permission to target Stage file Clear error; action is rolled back; viewer remains consistent.
TC-11 Very long filename / unicode Stage & Undo Name preserved; no encoding issues; undo restores exact name.
TC-12 Settings: Sort by Date Created desc Enter Cleanup Order matches Finder’s equivalent sort; consistent across sessions.
TC-13 “Include subfolders” enabled Enter Cleanup on parent Traversal includes children; counter reflects combined count.
TC-14 ToDelete contains 100 items Click “Delete staged” System confirmation → items moved to Trash; counts zero; undo is not available for permanent delete.
TC-15 VoiceOver on Navigate & stage item All controls have labels; VoiceOver announces actions and counts.
TC-16 Keyboard-only Use ← / → / U keys Actions work without trackpad; focus ring visible.
TC-17 App crash simulated during move Relaunch app No orphan temp files; session log replays safely; user notified if any items could not be restored.
TC-18 Very large library (50k) Open folder tree, enter Cleanup UI remains responsive; lazy loading verified; no freezes >100 ms on main thread.
TC-19 Two windows Stage in Window A, navigate in Window B State is isolated per window; “ToDelete” reflects global filesystem state.
TC-20 Different volume for “ToDelete” Stage RAW + Sidecar Both files moved; pairing preserved if enabled; otherwise each handled independently.

E) Performance Tests

  • PT-01 Preview Latency: Measure time to first frame and next/prev transitions across formats; must meet FR-19 thresholds.

  • PT-02 Memory: Scroll 1,000 photos; verify decoded image cache evicts correctly; memory plateau < 500 MB.

  • PT-03 Bulk Stage: Stage 2,000 photos cross-volume; mean throughput and no UI jank.

F) Accessibility Tests

  • Full keyboard path for: select folder, enter Cleanup, stage, undo, open ToDelete, delete staged.

  • VoiceOver reads: file name, index, action result.

  • Contrast & hit size meet macOS HIG.

G) Edge Cases

  • Files disappearing mid-session (external change): app skips with notice.

  • Read-only media (SD card switch): error & guidance.

  • Path length / unicode normalization differences across volumes.

  • iCloud items not downloaded; network offline.

  • Timezone/EXIF weirdness; files with creation date missing (fallback to modified date).

H) Regression Checklist (per release)

  • Bookmark restore on relaunch.

  • Gesture recognizers coexist with trackpad system gestures.

  • Trash API still reachable; deletion confirmation string localized.

I) Traceability (example)

  • FR-07TC-03, TC-04, TC-05, PT-03

  • FR-11TC-14

  • FR-15TC-15, TC-16

  • FR-19PT-01, PT-02