跳至主要内容

vorssaint

· 閱讀時間約 2 分鐘

今天來介紹一款超厲害的工具

vorssaint​

這是一款完全免費、開源的macOS選單列工具,裡面有非常多的功能,例如:系統監控、保持 Mac 喚醒、應用程式音量控制、快速視窗切換、滑鼠滾輪方向調整、等等。

這邊介紹幾個

1.截圖、錄製螢幕​

特別功能:

  • 截圖完後可直接編輯
  • 錄製螢幕時可選擇mac聲音或麥克風
  • 螢幕錄製完也可直接編輯,mac聲音和麥克風會是獨立音軌,都可調整

替代文字 替代文字

2.放射狀選單​

這功能很方面,就是捷徑的概念,可設定成你常開的文件、app、等... 替代文字

3.剪貼板​

特別功能:

  • 儲存所有複製過的文字
  • 可釘選複製文字

替代文字

4.視窗排列​

很多視窗的排列方式,都可設定快捷鍵 替代文字

5.分區式面板​

這裡可以看到很多資訊、設定 如:

  • 設定各 App 的音量大小
  • CPU、GPU、電池的溫度
  • 目前功耗值、電池健康度
  • 保持喚醒 (讓 Mac不進入睡眠模式)
  • 記憶體資訊

替代文字

先介紹到這邊,大家快去試試

快來安裝看看吧!​

Cryptomator

· 閱讀時間約 1 分鐘

大家是否曾經懷疑那些傳到雲端的檔案,隱私真的安全嗎?
又或者你有沒有不想給他人偷看的秘密照片、影片或文件?

這邊,推薦一款加密工具: Cryptomator

Cryptomator 是什麼?​

這是來自德國開源的加密工具

運作原理:
在本地加密 → 將加密後的保險箱資料夾放在雲端同步資料夾
而雲端同步的永遠只有亂碼

為什麼選擇 Cryptomator?​

1.開源且無須註冊:不需有帳號,密碼掌握在自己手上。
2.檔名與結構全數加密:點開看到的只是一堆亂碼和無意義的資料夾,無法推斷你放了什麼資料。
3.單一檔案獨立加密:修改小檔時只需同步該檔案,不會觸發全盤重新上傳。
4.電腦版完全免費(但手機版好像要錢)

怎麼用​

1.安裝
2.建立加密檔案庫
3.設定密碼(建議儲存Recovery Key 別相信自己大腦)。
4.解鎖保險箱,將秘密文件放入掛載的虛擬硬碟中。

快去試試看吧​

MDX 實戰篇

· 閱讀時間約 10 分鐘

前言​

上一章基礎篇,都在講無聊的語法,相信大家看一下就馬上按叉叉關掉了,但這一篇要講的內容,就比較有趣了啦!

那我們進入正題吧

首先 MDX有兩種寫法​

1.引用外部React元件:事先在外部寫一個React組件,再引用到MDX的import使用。

2.直接在MDX檔裡寫簡單的Inline JSX。


第一種示範​

當你閒閒沒事時,就可以出個題來考考大家

Q: 哪一首歌曲,不是收錄在「自傳」這張專輯中?

好!讓我們來看看這是怎麼寫出來的​

1.去專案的 src/components/ 資料夾下,新增一個.jsx的檔案,我是取名Quiz.jsx,當然也可以取MAYDAY.jsx 隨便你要叫什麼

2.在.jsx檔裡開始寫,這邊直接展示程式碼

有點長
import React, { useState } from 'react';

export default function Quiz({ question, options, correctAnswerIndex, explanation }) {
const [selected, setSelected] = useState(null);
const [submitted, setSubmitted] = useState(false);

const handleOptionClick = (index) => {
if (submitted) return;
setSelected(index);
};

const handleSubmit = () => {
if (selected === null) return;
setSubmitted(true);
};

const handleReset = () => {
setSelected(null);
setSubmitted(false);
};

return (
<div style={{
border: '1px solid var(--ifm-color-emphasis-300)',
borderRadius: '8px',
padding: '16px',
margin: '16px 0',
backgroundColor: 'var(--ifm-card-background-color)'
}}>
{question && (
<h4 style={{ marginTop: 0, marginBottom: '12px', fontSize: '1.1rem' }}>
{question}
</h4>
)}

<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
{options.map((option, idx) => {
let optionBg = 'transparent';
let borderColor = 'var(--ifm-color-emphasis-300)';

if (selected === idx) {
borderColor = 'var(--ifm-color-primary)';
optionBg = 'var(--ifm-color-primary-lightest)';
}

if (submitted) {
if (idx === correctAnswerIndex) {
borderColor = 'var(--ifm-color-success)';
optionBg = 'var(--ifm-color-success-lightest, rgba(0,200,0,0.1))';
} else if (selected === idx) {
borderColor = 'var(--ifm-color-danger)';
optionBg = 'var(--ifm-color-danger-lightest, rgba(200,0,0,0.1))';
}
}

return (
<button
key={idx}
onClick={() => handleOptionClick(idx)}
style={{
textAlign: 'left',
padding: '10px 14px',
borderRadius: '6px',
border: `2px solid ${borderColor}`,
backgroundColor: optionBg,
cursor: submitted ? 'default' : 'pointer',
color: 'var(--ifm-font-color-base)',
fontSize: '0.95rem',
transition: 'all 0.2s',
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center'
}}
>
<span>{option}</span>
{submitted && idx === correctAnswerIndex && <span>🩵正確</span>}
{submitted && selected === idx && idx !== correctAnswerIndex && <span>🥲錯誤</span>}
</button>
);
})}
</div>

<div style={{ marginTop: '16px', display: 'flex', gap: '10px', alignItems: 'center' }}>
{!submitted ? (
<button
onClick={handleSubmit}
disabled={selected === null}
style={{
backgroundColor: selected === null ? '#ccc' : 'var(--ifm-color-primary)',
color: 'white',
border: 'none',
borderRadius: '4px',
padding: '6px 16px',
cursor: selected === null ? 'not-allowed' : 'pointer',
fontWeight: 'bold'
}}
>
送出答案
</button>
) : (
<button
onClick={handleReset}
style={{
backgroundColor: 'transparent',
border: '1px solid var(--ifm-color-emphasis-500)',
color: 'var(--ifm-font-color-base)',
borderRadius: '4px',
padding: '6px 12px',
cursor: 'pointer'
}}
>
重新作答
</button>
)}
</div>

{submitted && explanation && (
<div style={{
marginTop: '12px',
paddingTop: '12px',
borderTop: '1px dashed var(--ifm-color-emphasis-300)',
color: 'var(--ifm-font-color-base)',
fontSize: '0.9rem'
}}>
👍🏿<strong>解析:</strong>{explanation}
</div>
)}
</div>
);
}

3.再來就可以到.mdx檔中引入,一樣直接展示程式碼

👍🏿👍🏿
import Quiz from '@site/src/components/Quiz';

<Quiz
question="Q: 哪一首歌曲,不是收錄在「自傳」這張專輯中?"
options={[
'如果我們不曾相遇',
'嘿!我要走了',
'頑固',
'成名在望'
]}
correctAnswerIndex={1}
explanation="不用解釋吧!五迷一秒作答"
/>

如此以來就搞定了!但還是要來學學程式碼當中的邏輯,只會複製貼上就太無趣了
我們挑個比較重要的區域來講


教學​

export default function Quiz({ question, options, correctAnswerIndex, explanation })

這是元件傳參 定義了這個元件可以接收 4 個外部傳入的資料(題目、選項、正確答案索引、解析)。

{submitted && idx === correctAnswerIndex && <span>🩵正確</span>}
{submitted && selected === idx && idx !== correctAnswerIndex && <span>🥲錯誤</span>}

這是在說條件
顯示第一行的條件:

  • 已按下送出答案(submitted === true)
  • 當前這個選項是正確答案(idx === correctAnswerIndex)

顯示第二行的條件:

  • 已按下送出答案(submitted === true)
  • 使用者點選的這個選項不是正確答案(idx !== correctAnswerIndex)
if (submitted) {
if (idx === correctAnswerIndex) {
borderColor = 'var(--ifm-color-success)';
optionBg = 'var(--ifm-color-success-lightest, rgba(0,200,0,0.1))';
} else if (selected === idx) {
borderColor = 'var(--ifm-color-danger)';
optionBg = 'var(--ifm-color-danger-lightest, rgba(200,0,0,0.1))';
}
}

這是在處理答案送出後的動態樣式

  • 標準答案選項(idx === correctAnswerIndex):框線與背景強制套用綠色(color-success)
  • 使用者選錯的那一選項(selected === idx):框線與背景強制套用紅色(color-danger)

好!先解到這邊 我們來看第二種


第二種示範​

先玩玩看吧!

五月天團員職稱配對

先點選一位團員,再點選對應的職稱!

團員
職稱 / 樂器

這段直接寫在.mdx檔裡面
來揭曉程式碼

很長別嚇到了

import React, { useState } from 'react';

export const MaydayMatch = () => {
const [selectedMember, setSelectedMember] = useState(null);
const [selectedRole, setSelectedRole] = useState(null);
const [matchedPairs, setMatchedPairs] = useState({});
const [statusMessage, setStatusMessage] = useState('先點選一位團員,再點選對應的職稱!');

const members = ['阿信', '怪獸', '石頭', '瑪莎', '冠佑'];
const roles = ['鼓手', '吉他手/團長', '主唱', '貝斯手', '吉他手'];

const correctPairs = {
'阿信': '主唱',
'怪獸': '吉他手/團長',
'石頭': '吉他手',
'瑪莎': '貝斯手',
'冠佑': '鼓手'
};

const handleSelectMember = (name) => {
if (matchedPairs[name]) return;
setSelectedMember(name);
if (selectedRole) {
checkPair(name, selectedRole);
} else {
setStatusMessage(`已選擇【${name}】,請選擇對應的職稱...`);
}
};

const handleSelectRole = (role) => {
const isRoleMatched = Object.values(matchedPairs).includes(role);
if (isRoleMatched) return;

setSelectedRole(role);
if (selectedMember) {
checkPair(selectedMember, role);
} else {
setStatusMessage(`已選擇【${role}】,請選擇對應的團員...`);
}
};

const checkPair = (member, role) => {
if (correctPairs[member] === role) {
setMatchedPairs(prev => ({ ...prev, [member]: role }));
setStatusMessage(`🤓讚喔`);
} else {
setStatusMessage(`🫠答錯了!這麼簡單欸`);
}
setSelectedMember(null);
setSelectedRole(null);
};

const isCompleted = Object.keys(matchedPairs).length === members.length;

return (
<div style={{
padding: '20px',
borderRadius: '12px',
border: '1px solid var(--ifm-color-emphasis-300)',
backgroundColor: 'var(--ifm-card-background-color)',
margin: '24px 0',
boxShadow: '0 4px 12px rgba(0, 0, 0, 0.05)'
}}>
<h3 style={{ marginTop: 0, marginBottom: '8px' }}>五月天團員職稱配對</h3>
<p style={{ margin: '0 0 16px 0', color: 'var(--ifm-color-emphasis-700)', fontSize: '0.95rem' }}>
{isCompleted ? '讚讚 已完成所有配對!' : statusMessage}
</p>

<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '16px' }}>
<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
<span style={{ fontWeight: 'bold', fontSize: '0.85rem', color: 'var(--ifm-color-emphasis-600)' }}>團員</span>
{members.map(m => {
const isMatched = !!matchedPairs[m];
const isSelected = selectedMember === m;
return (
<button
key={m}
onClick={() => handleSelectMember(m)}
disabled={isMatched}
style={{
padding: '10px 14px',
borderRadius: '8px',
textAlign: 'left',
border: isSelected ? '2px solid var(--ifm-color-primary)' : '1px solid var(--ifm-color-emphasis-300)',
backgroundColor: isMatched ? 'var(--ifm-color-success-lightest)' : isSelected ? 'var(--ifm-color-primary-lightest)' : 'transparent',
color: isMatched ? 'var(--ifm-color-success-darkest)' : 'inherit',
cursor: isMatched ? 'not-allowed' : 'pointer',
fontWeight: isSelected || isMatched ? 'bold' : 'normal',
transition: 'all 0.2s ease'
}}
>
{m} {isMatched && '✓'}
</button>
);
})}
</div>

<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
<span style={{ fontWeight: 'bold', fontSize: '0.85rem', color: 'var(--ifm-color-emphasis-600)' }}>職稱 / 樂器</span>
{roles.map((r, idx) => {
const isMatched = Object.values(matchedPairs).includes(r);
const isSelected = selectedRole === r;
return (
<button
key={idx}
onClick={() => handleSelectRole(r)}
disabled={isMatched}
style={{
padding: '10px 14px',
borderRadius: '8px',
textAlign: 'left',
border: isSelected ? '2px solid var(--ifm-color-primary)' : '1px solid var(--ifm-color-emphasis-300)',
backgroundColor: isMatched ? 'var(--ifm-color-success-lightest)' : isSelected ? 'var(--ifm-color-primary-lightest)' : 'transparent',
color: isMatched ? 'var(--ifm-color-success-darkest)' : 'inherit',
cursor: isMatched ? 'not-allowed' : 'pointer',
fontWeight: isSelected || isMatched ? 'bold' : 'normal',
transition: 'all 0.2s ease'
}}
>
{r} {isMatched && '✓'}
</button>
);
})}
</div>
</div>
</div>
);
};

<MaydayMatch />

程式碼非常長,挑2個核心重點講

import React, { useState } from 'react';

這是指是在 .mdx 檔宣告組件
最後再寫<MaydayMatch/>指呼叫並執行這個組件

const checkPair = (member, role) => {
if (correctPairs[member] === role) {
setMatchedPairs(prev => ({ ...prev, [member]: role }));
setStatusMessage(`🤓讚喔`);
} else {
setStatusMessage(`🫠答錯了!這麼簡單欸`);
}
setSelectedMember(null);
setSelectedRole(null);
};

這段在判定有沒有答對

在前面時,有先寫好答案 correctPairs = { '阿信': '主唱', '怪獸': '吉他手/團長' ... } 使用者點選後,程式會去查答案發現:

答對:跳出「🤓讚喔」,接著把這組正確配對存進 matchedPairs 記錄過的團員,畫面上的按鈕就會變綠色且不能再點。

答錯:跳出「🫠答錯了!這麼簡單欸」

總結​

第一種和第二種的對比

優點缺點適用時機
第一種(引用外部 React 元件)1.檔案乾淨
2.邏輯可跨頁面重複使用
要額外建立.jsx檔、複雜複雜邏輯、大型組件
第二種(直接寫在.mdx)1.快速方便
2.免開新檔案
文章原始碼會變超長、無法給其他文章複用簡單組件、單篇特製

感謝大家看到這裡 辛苦啦

我覺得就是根據各位需求,兩種方法都很好,這篇就先這樣啦!
之後會再寫更多有趣的實用範例,不會寫教學,就是純分享,敬請期待!

有任何問題或建議,歡迎寫信聯絡我! 信箱:aa10200809@gmail.com

一期一會

· 閱讀時間約 2 分鐘
提示

這是我的「BlogBlog 同樂會 – 2026 年 8 月」 的投稿文章。本月主題是「一期一會」,由 ikuka 主持。如果你有自己的部落格,歡迎一起來參加!


這個詞我想到了一些不同面向的解釋方法

1.人生第一次:​

今年7月,去看了人生第一場五月天演唱會,體悟到了親自蒞臨現場的那種感動,我想這就是演唱會存在的必要吧!萬人大合唱和在家自己唱就是不一樣,一定不會忘記這場演唱會,畢竟是第一次~

2.一生只有一次的相遇:​

我這個人的個性,不太會社交,現實相處後,也不會主動要ig,所以和很多人真的是一期一會。自己的社群平台,也沒有經常聊天、聯絡的朋友,基本上除了必要通知、公事聯絡,一天下來不會有訊息,不免有點感傷,因為若沒有持續聯繫、刻意的約出去相見,一輩子也不會再見了吧!

但後來也覺得,社群媒體是個蠻假相片面的東西,反正也沒訊息,留著看表面熱鬧也沒意義,所以就把社群app刪了。

3.遺憾,一期一會就好:​

我們常被人告誡,人生只有一次,勇敢去做,不要留遺憾。去向喜歡的人告白、去見想見的人、去做想做的事。而我也銘記在心,但終究還是留遺憾了。

幾個月前和自己重要的人,斷絕聯繫了,還有許多話沒說、還有好多想做的事還沒和他一起做,可是一切都太遲了,再也來不及了。希望下一次遇到自己重視的人,都能好好把握住,不留遺憾。

4.或許沒有下次了,好好珍惜吧:​

愛情是個特別的東西,永遠沒有為什麼,或許你今天還在跟另一半擁抱,隔天他就傳訊息說「我們分手吧」,很難知道會不會突然有一天,你愛的人突然就說不愛你了

所以,重要的人給你的每個擁抱、親吻、見面,都好好珍惜吧!因為誰知道,搞不好沒有下次了。


「一期一會」這是個簡單的四個字,道理並沒有很深,只是提醒我們,當下的每個瞬間,都是此生唯一的一次

台北行程規劃

· 閱讀時間約 1 分鐘

8/6要去台北聽張育瑞大師的音樂會!!

注意事項

1.取票:到全家機台點KKTIX 取票號碼:51046712

2.音樂會地點:臺北市政府親子劇場
   搭乘板南線(往南港)市政府站 2號出口 (走市府連通道)

3.注意時間安排,音樂會19:30開始

希望當天順利,非常期待音樂會!​

另外,8/7要去新竹上主修、副修
主修12:30 副修15:30
上課加油啊~

近況

· 閱讀時間約 1 分鐘

最近稍微忙碌一點​

以下是我這幾天過的生活:

時間行程備注
8:50起床鬧鐘設8:30但..嗯對 都會賴床
9:20-12:00工作中間會適時休息
12:00-13:00煮飯、吃中餐運氣好會有便當,就不用煮
13:00-13:30休息
13:30-17:30工作不一定是17.30 但就是晚餐來的時候下班
17:30-18:30吃晚餐
18:30-21:30工作中間會適時休息
21:30-23:00休息、打電腦
23:00洗澡
23:30-24:30休息、打電腦
24:30上床睡覺

我想這樣的生活,會持續到開學,大家的暑假生活都是如何呢?歡迎寫信告訴我 aa10200809@gmail.com

最近的煩惱​

還在思考MDX、實戰的教學要怎麼寫,有點卡關

另外,這週四8/6要去台北聽音樂會,那個地方從來沒去過,還沒查資料,我覺得會迷路🥲
明天來做功課!!

MD/HTML 基礎篇

· 閱讀時間約 3 分鐘

前言​

在使用 Docusaurus 建立文件或部落格時,最常用到的就是 Markdown 語法。
這篇文章介紹最常用的 Markdown 語法、Docusaurus 特有語法以及基礎 HTML應用。
將來有機會的話,會分享CSS或MDX,利用客製化、樣式調整來讓頁面更豐富,敬請期待!!


本文目錄​


1. 標題​

語法:

# H1 標題
## H2 標題
### H3 標題
#### H4 標題
##### H5 標題
###### H6 標題

示範

H2 標題​

H3 標題​

H4 標題​

H5 標題​
H6 標題​

2. 文字樣式​

**粗體**
*斜體*
~~刪除線~~
<u>底線</u>

示範

粗體
斜體
刪除線
底線


3. 進階文字樣式​

上標、下標
H<sub>2</sub>O
2<sup>10</sup>

螢光筆重點
<mark>重點</mark>

鍵盤按鈕樣式
<kbd>Ctrl</kbd> + <kbd>C</kbd> <kbd>Ctrl</kbd> + <kbd>V</kbd>
示範

H2O 210

重點

Ctrl + C Ctrl + V


4. 列表​

- 無序列表
- 無序列表
1. 有序列表
2. 有序列表
- [ ] (未完成)
- [x] (已完成)

示範
  • 無序列表
  • 無序列表
  1. 有序列表
  2. 有序列表
  • (未完成)
  • (已完成)

5. 表格​

| 標題 1 | 標題 2 | 標題 3 |
| ------ | ------ | ----- |
| 內容 1 | 內容 2 | 內容 3 |

示範
標題 1標題 2標題 3
內容 1內容 2內容 3

6. 提示區塊​

:::note[自訂標題]
一般筆記內容
:::

:::tip[自訂標題]
實用技巧內容
:::

:::info[自訂標題]
資訊說明內容
:::

:::warning[自訂標題]
警告事項內容
:::

:::caution[自訂標題]
注意事項內容
:::

:::danger[自訂標題]
危險/嚴重警告內容
:::
自訂標題

一般筆記內容

自訂標題

實用技巧內容

自訂標題

資訊說明內容

自訂標題

警告事項內容

自訂標題

注意事項內容

自訂標題

危險/嚴重警告內容


7. 放置圖片和連結​

連結:[標題](URL連結或本地路徑)
圖片:![替代文字](URL連結或本地路徑)
示範

8. 引用和程式碼​

> 引用文字
`程式碼`
```程式碼區塊```
示範

引用文字

程式碼


9. 折疊區塊​

<details>
<summary>點擊展開更多資訊</summary>

詳細內容
</details>
示範
點擊展開更多資訊

詳細內容


10. docusaurus裡特有注意事項​

資訊

1.單一標籤要加斜線 /​

例如:換行 傳統寫法 <br>

Docusaurus寫法 <br/>

每一個標籤都必須有結尾,尾巴一定要加上 /


2.內聯樣式 兩層大括號 {{ }}​

例如:給文字加顏色或調大小

傳統寫法 <span style="color: red; font-size: 16px;">紅色文字</span>

Docusaurus寫法 <span style={{ color: 'red', fontSize: '16px' }}>紅色文字</span>

要用兩層大括號 {{ }}


3.記得空行​

列表前、HTML 標籤包覆 Markdown 時、提示區塊內部、段落換行等。記得「前後各空一行」

謝謝大家​

有任何問題或建議,歡迎寫信聯絡我! 信箱:aa10200809@gmail.com

檢討

· 閱讀時間約 1 分鐘

Ai​

想到前幾篇文都被Ai罵得很慘,但沒打算反駁,畢竟Ai有些說的是真的,我也不需要一個只會迎合的Ai,最好把我罵死,我很喜歡

所以啊 是否該寫一些特定技術分享之類的知識型文章,若只是寫無聊的情緒抒發文章,我想各位會看得一頭霧水吧!甚至看完覺得負面情緒更多,這並不是我所想達成的目的,依舊希望大家能快快樂樂

結論​

現階段期望能插入一些專業知識文章,內容不限,只要是我了解的,會盡量分享給大家
情緒性文章不要帶太多負面抒發,前面寫過的文章不會再動了,只希望這個網站可以越來越好

總之,我想做有意義的事

加油吧!

夢想

· 閱讀時間約 2 分鐘

夢想是什麼?

五月天說夢想是

夢      Dream
離別  Leave
眼睛  eyes
勇氣  Courage
字句  Words

曾經 我以為我許的夢想很簡單
但現在才知道,那是世界上最難得到的
這是世界上最美好卻又最痛苦的東西,要經過很多的輾轉、流淚,才能得到

很明顯了吧,就不再多說了


或許有一天
我會逐漸放棄
又或許
放手才是擁有
沒人知道哪個才是正確答案


最後
依舊希望能達成心中的夢想吧!即使心已經非常痛了,但如果還能忍,就繼續吧!
希望我們都能成為當初所期望的自己

最近流行Ai,讓Ai評論一下這篇文章

這不是一篇關於「夢想」的文章,這是一篇自怨自哀的情緒垃圾。

如果夢想真的對你那麼重要,就拿出點骨氣來,別一邊喊著夢想,一邊給自己寫放棄的聲明稿, 文中字裡行間透著還沒拼盡全力就想放棄的軟弱,甚至提前為自己的退縮找好了冠冕堂皇的藉口。

文筆可以練,但這種還沒上戰場就先預演失敗的態度,才是這篇文章最糟糕的地方。

我想過的生活

· 閱讀時間約 3 分鐘

今天晚上 就是我夢寐以求想過的生活​


我有個朋友,是國小同學 他是我唯一合得來的人

  昨天傳訊息 :
「你明天在花蓮嗎」
「對啊」
「晚上吃飯 6點」
「好」


今天6.就在市區碰面了,完全不知道要吃什麼,想了半天,結果決定去走路要半小時的火鍋店吃 哈哈哈超好笑 他堅持那家便宜又超好吃

我完全不介意要吃什麼​

但真的很開心,因為幾乎沒有人會走路這麼遠,也不抱怨
每次和朋友出來玩,一定有人會大抱怨 啊怎麼這麼遠或不要走路啦 好熱

吃飽後​

就在外面亂晃,啊我們吃這家叫 鍋神 讚
然後我就說想尿尿,看到前面是康橋大飯店 我跟他說你敢進去找廁所尿尿嗎? 哈哈我們當然就進去了,欸廁所超讚的欸,豪華乾淨

桌上型電腦​

接著就到大廳有一區是放著桌上型電腦,前面有椅子我們就去那裡坐著
嘿嘿嘿 桌上型電腦欸 怎麼能放過它呢

我朋友提議要不要來看電影,他就開機,放鏈鋸人蕾潔篇給我看,很怕櫃檯人員過來問,結果根本沒人鳥我們,只是電腦聲音很小聲,後來還用手機放聲音,但大螢幕看得超爽


然後啊 住過康橋的都知道吧,康橋有宵夜供應​

看了周圍的人,大家都直接進去餐廳,門口沒有人員看房卡之類的
嘿嘿 我就說 :「欸欸敢不敢進去裡面拿吃的」 接著就走進去了,我還挖了兩球冰淇淋,拿到電腦前吃,後來才發現電腦旁邊有告示: 禁止飲食

本來還想說直接坐在裡面的椅子上吃,但要看電影 看完也快10.了,朋友的家長載我回家


今晚​

今天晚上真的是我所嚮往的生活,我很皮會做非常無聊又幼稚的事情,以上行為去飯店吃buffet、玩電腦都是踩在灰色地帶的事,但誰管他 我是年輕人欸

很慶幸找的一位能這樣陪我瘋的人,我和他並不會日常聊天,傳訊息什麼的都非常少,上次見面應該是寒假?) 總之,今晚真的很開心


我相信
我相信未來會更好...
能見想見的人 能愛想愛的人 能過想過的生活...


最近流行Ai,讓Ai評論一下這篇文章

這篇文章暴露出你把「沒教養與佔便宜」誤當成了「青春與自由」。 靠溜進飯店蹭電腦、偷挖住客冰淇淋來滿足冒險感,只是缺乏界線感又不想付出代價的幼稚行為。 「年輕人」不是破壞規則的免死金牌,真正的瀟灑是靠能力光明正大地享受,而不是靠偷雞摸狗沾沾自喜。 想過嚮往的生活,先學會當一個懂尊重的成年人,別把僥倖當成光榮。