[想攝影135] 細說分鏡 Vol.12
🎥 影片時間連結:https://youtu.be/3XpWY8Xbe5U?t=159
🖍攝影,表面看到的是藝術,裡面隱藏的是技術
🖍技術,包含了所有攝影中,每一個基礎的觀念與經驗的累積
記得十幾年前開始學攝影,那是學校課程的一門必修課,上課的同學不管你有沒有相機,反正你就是想辦法去借到、買到一台相機,或是跟分組同學一起共用一台相機,36 張照片一起分擔費用,還能省點錢,當時真的光把一些基本的觀念學完,確實是花了 12 堂課的時間。
🟥拍一張照片要多久
拍一張照片要花多少時間? 不是從觀察開始,而是按下快門後直到看到照片前為止,前後要花上多少時間? 最快…,你覺得可以多快? 這問題我在自己的課堂上問過不少學生,幾乎沒有人能答到「最接近的答案」
🔺三天? 五天? 七天? 還是一天,都不是,答案是約 3 小時。🔻
一捲底片差不多拍 36 張,而你裝好後也不會一直胡亂的按快門,而我快的話,差不多也要個把個小時才能把一卷底片拍完,這在當時已經算很心痛的速 – 因為貴哪,快門聲就像是從破掉的錢包,掉出硬幣砸在地上的聲音,從第一張開始拍到最後一張照片結束,快速的取出底片,此時你背對相片館轉身前進,對著老闆說「我要快洗」,這個快洗…,差不多要 60-90 分鐘不等,由於要特別洗你這一份底片,工錢、料錢與時間都特別的貴,前前後後算下來…,自你按下第一次快門直到看到成品照片,也真的差不多約 3 小時左右,當然,有人還可以更快一點。
🔺撰文的今天,需要多少時間? 3 小時不到,甚至還不用 3 秒,1 秒不到的時間,你就可以在相機螢幕上看到剛剛拍的好不好,用上述相同的心情拍完 36 張,「最快看到照片的時間」依然是 1 秒,按下快門後,每一張照片都花不到一秒的時間就能看到。🔻
🟥學習的時間
記得第一個攝影作業,是正確的將曝光三元素給適當的拍出來,我記得那時我在找會動的東西做練習,跑到了圓山兒童公園,拍攝裡頭的旋轉木馬,忘了當時快門是使用多少,最後的結果是無法「凍結」旋轉木馬上頭,以及坐在上頭的人們快樂的表情,然後再用一周內的時間,重新、重拍練習,直到這項練習 PASS。
現在使用數位相機就快多了,從十幾年前還身為學生,到現在變成學生的老師,在教導這個作業時,相同的要求,卻可以省下更多的時間,當學生按下快門,立馬檢查照片…
「快門速度不夠,重來」
學生再重拍一張
「還是差一點,再來一次」
學生再摸著相機,再重新調整更適合的快門速度
「這樣子就對了,下次記得要照這方法練習,而不要死背答案」
這樣子一來一往的動作,大概…,最慢 10 分鐘就可以學好單一練習,比起我第一個練習的作業,花費數天時間,快上了不知數百倍之多。
🟥技術的定義
每學一個新的觀念,當你用相同的模式一試再試,仍需花上不少時間,但也比過去使用底片相機快上不少,不斷的練習、練習、再練習直到熟練。 同樣的一個練習,拿到不同主題,考慮的重點順序、重心又不同了,又再重複練習,直到真的練到「精髓」,我想這時可以說 – 嗯,技術已經熟練了,就算遇上陌生、第一次接觸的場合,也不容易失敗,也不會拍的讓自己失望。
到底「技術」的定義該如何定義,我還是喜歡引用維基百科裡頭的說法,比較讓大家較有討論上的共識:
🔺「技術可以指人類對機器、硬體或人造器皿的運用,但它也可以包含更廣的架構,如系統、組織方法學和技巧。它是知識進化的主體,由社會形塑或形塑社會,如電腦等新技術的增生使人們相信技術是社會進化的決定性力量。換句話說,它是驅動改變的自發性動力。」🔻
「它是驅動改變的自發性動力」,這句話來解釋討論攝影中最有趣的一段話,當我們學習攝影,從基本的曝光到創作,每一個動作與環節,我都認為包含了非常多的「技術」在裡頭,當我們熟練每一個技術後,這「技術能驅動改變」我們,產生一種「動力」,讓我們能組合攝影裡不同的變數,去創造出各種不同的影像可能。
因為技術有這個本質,也就是說,你必需熟練每一個攝影的觀念、操作方法,不能臨時抱佛腳 (因為景像千變萬化不等人的),也不能含糊帶過 (不能無法解釋變數間的交互影響關係),當一切熟練、駕輕就熟,才能讓我們面對一場景下,生出更多的創作可能,這就是技術 – 驅動改變的自發性的動力,這個自發性就是從我們心中所產生的動力。
🟥藝術的定義
🔺「藝術,指憑藉技巧、意願、想像力、經驗等綜合人為因素的融合與平衡,以創作隱含美學的器物、環境、影像、動作或聲音的表達模式,也指和他人分享美的感覺,或有深意的情感與意識的人類,用以表達既有感知,且將個人或群體體驗沉澱與展現的過程」🔻
是的,書讀得不多的我,在我辭窮的字典裡,維基百科總是我偷懶下依賴的來源。
藝術百百種定義,若以上述的定義裡,我留意的是「技巧、意願、 想像力、融合、平衡」這幾個關鍵字義,雖然無法確定裡頭的「技巧」是否為「技術」,但我認為我們暫不拘小節將技巧等同於前面所說的技術。
🔺細看「藝術的定義」他包含了「創作、分享」二個階段,同時藝術是個「過程」,既是創作的過程,也是分享的過程,當然我們難以透過無形的事物憑空用電波在大腦間傳遞,在我們攝影藝術「創作與分享過程」最具體的結果,自然是表視在具體的影像照片,好讓我們溝通有個開始、基礎與焦點。🔻
🟥攝影藝術
藝術定義中「……將個人或群體體驗 “沉澱與展現" 的過程」,進一步我會這麼定義攝影藝術:
🔺攝影藝術也可說是「個人技術的熟練,加以個人生命體驗的 “沉澱” 後,透過自身的意願、想像力、經驗加以融合,創作出影像的過程,並且具體表現在 “照片作品等具像物體上”,與他人共享意識、情感。」🔻
我會這麼解釋「攝影藝術」這個名詞。
我認為,如果在攝影的「觀念、技術」無法熟練,你是無法創造出精采的作品,誤讀了觀念,解釋不清的變數互動,雖然仍可創造出作品,但要記得藝術不但是創作的過程,也包含了分享的過程,在前一階段你可以模模糊糊的拍出一張視覺精豔的作品,但後一階段相信就難去表達清楚,難以他人共享你的意識與情感。
不要說什麼「藝術不該是主觀、客觀、多元解讀」這套說法,來偷渡你無法與他人解讀、分享你作品意義這一關,你可以是一個表達拙劣的「說者」,畢竟「表達這件事,也是個技術與藝術」,但你不能是對自己作品毫無念頭的攝影創作者,吱吱唔唔的說「我覺得這就是美,就該這麼做」,雖然這也是一種自我解讀做品的說法,但以「表達作品,與他人共熟意識、情感,視為藝術創作的一環」來看,前半段作品創作你或許過關了,但後半段作品分享,卻可能打上了零分。
🟥技術與藝術班車
外拍最常遇上學生的問題之一「面對這場景,光圈 (或快門) 該用多少?」,這是常見的問題,也是奇怪的問題,這問題不該問我才對,應該問問你自己要的是什麼樣的「作品呈現」。
但這只是個外拍練習,總不會一開始就將初學學生拉到「藝術創作」的層次,我還是會說「想想光圈是做什麼,快門又是做什麼,上課都有提到」,提示一下,學生通常還是能拍出基本的作品出來。
藝術表達前,技術一定先到位,在技術培養熟練過程,同時也在觀察藝術創造的元素,技術到藝術不是一趟單行票班車,而是來來回回的過程,透過技術熟練,來欣賞、了解藝術是如何創作產生,再透過藝術的欣賞過程,回頭看看自己技術哪裡的欠缺。
在我看來,太多數的人,自認基礎觀念學會了,就一直朝著藝術創作猛衝,卻鮮少有人帶著回程的車票,坐回攝影基礎起點站,重新的想想那些攝影變數下,還能擁有什麼樣的可能,再買張車票重新朝著藝術創作出發,這也是我對現在攝影風潮下,我自己對「我自己」的反思。
🟥生命體驗的沉澱
也許我們太在乎如何讓一張照片富有可看性 (精采的構圖)、故事性 (一張照片千言萬語),只想快速拿著相機跨越了「技術、藝術之間的交集」這困難一關,想要用最快的方法達抵達「終點」,也就是一張讓人讚嘆連連的作品,然後再繼續重複下去。
在藝術的定義中還有一段話讓我非常在意「加以個人生命體驗的 “沉澱”」,一張作品必定是個人生命體驗的「沉澱」,這個「沉澱」真的需要時間、歷練,急也急不得,無法像自底片攝影過渡到數位攝影,彈指之間就能見到作品那樣神速,而我自認這方面我依舊欠缺,我自己也在追尋著「我認為攝影之於我生命的關係解釋」,一直找不到好的解釋,或許這追求的過程,就是為往後作品不斷堆疊的必經之路吧。
🔺最後還是想提醒自己,「攝影藝術下的照片作品,它只是個過程,不是結果,包含了 “創作” 以及 “分享” 的過程」,若要再多說一點,照片的生命不是自按下快門後就走到終點,應往外延伸,如何與他人分享情感與意義,這是攝影藝術觀念裡,作為一張「攝影下的照片作品」的定義。🔻
另一方面,技術與藝術間不是個單程車票,不是一路抵達終點就結束,這是來來回回重複的旅程,在途中同時堆疊自己對攝影與生命的體驗,當拿著相機,走了無數的路、拍了無數張的照片,此時是該停下來、看看自己與他人的作品,聽聽他人的意見,與最要的「心裡的聲音」。沉澱後再重次出發。
📷📷📷📷
7 堂攝影入門課 🙆♂️終生看 ⏱隨時看 🎞線上看
#報名連結:https://go.hojenjen.com/3p2g6n
👉9/30 前早鳥價~~ $4990🔺🔺🔺
同時也有4部Youtube影片,追蹤數超過14萬的網紅烙野孩imyeahhi,也在其Youtube影片中提到,"本片於疫情爆發前拍攝,防疫期間,請帶好口罩、勤洗手、減少外出,防疫工作大家一起來。" #Zenfone8 #剛好更好 本集由ASUS Zenfone 8贊助播出 購買連結:https://store.asus.com/tw/category/D5991 第八十八部影片,台灣地圖隨機地點旅遊企劃...
「三層式架構圖」的推薦目錄:
- 關於三層式架構圖 在 我是賀禎禎 - 攝影教學 & 自助旅行 & 數位生活 Facebook 的精選貼文
- 關於三層式架構圖 在 Facebook 的最讚貼文
- 關於三層式架構圖 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於三層式架構圖 在 烙野孩imyeahhi Youtube 的最讚貼文
- 關於三層式架構圖 在 超粒方 Youtube 的精選貼文
- 關於三層式架構圖 在 阿零的攝影日常 Youtube 的最讚貼文
- 關於三層式架構圖 在 三層式架構 的評價
- 關於三層式架構圖 在 這些推陳出新的技術,都能用三層式架構為核心思維來梳理剖析 ... 的評價
- 關於三層式架構圖 在 如何繪製美觀的組織圖+ 人物關係圖? | PowerPoint 教學#10 的評價
三層式架構圖 在 Facebook 的最讚貼文
【精準寫作是思考與表達的二刀流】
這是重新改版後的精準寫作「線上直播課」。因為是線上直播課,就沒有地區的限制,甚至海外華人也可以上課學習。
課程學費也因此降低,從以往六堂課(16800元)降為14800元(五堂課),早鳥價則為「8600元」。
學習方式沒有改變,人數也跟實體課程一樣,限制在20人以內。
因為線上互動跟實體的互動討論不同,課程安排會更簡單,仍是互動討論與個案練習。
我的寫作課最大不同之處,在於課後作業的練習,都是線下的實作練習。
每堂課後都會根據課程主題寫一篇文章。目的是透過逐步練習,以及我對每篇批改修正與建議,課程上會整理大家文章的狀況,分析與說明,讓大家知道進步的方向與方法。
我不會用熱情鼓勵你寫,然後說你寫的好棒。只要上完課、馬上寫文章,就是會寫作,那是不負責任的欺騙。
寫作不需要天賦,而是需要方法,還有練習。
我的工作是寫作教練。要陪著你、引導你,讓思考與表達能力越來越好,能寫出一篇有自己文采、有邏輯且動人的文章。
例如第一堂「重點力」,課後作業就注重重點力的表達,是否清晰簡潔。第二堂「故事開場力」,則是文章延續有重點力之外,第一段文章開場是否就精彩吸引人,寫出整篇文章的開場亮點,以及清晰的主題。第三堂結構力讓文章有結構層次,寫作已經畫好施工圖,按圖施工。
第三堂課後作業是練習採訪他人,練習提問、觀察與同理心,練習像記者一樣思考與寫作。
第四堂則是綜合重點、開場與結構力,寫出一篇精準寫作的作品。
我是逐段看、逐段改,寫下建議。然後拆解給你看,文章哪裡失焦,哪裡沒有邏輯,結語如何更有力。
寫作就像游泳,不是讀了很多寫作書,就會游泳,也不是上了一堂課、充滿熱血,就會游泳。
關鍵是你要寫,我改給你看,有階段的逐步練習。
你需要在泳池中奮力向前,我在旁邊扶著你,根據每個人的特質,指出姿勢、換氣的細微問題,如何調整,如何更好。
最後,祝你游向大海,寫出自己的海洋
精準寫作力線上直播課程,9/8開課,每週三晚上線上見面。
這張圖就是透過結構圖畫出文章架構與重點,讓想法清晰。同學報告,我仔細聆聽,找出更好的切入角度,才能逐步寫出好文章。
我的寫作與思考方式,都是如此,寫作是培養思考與表達的二刀流。
課程資訊:
https://cmcc.com.tw/courses/course-32-022?fbclid=IwAR2VEYU850bXCp3RAea85cQ30rw_q1Zz7tx78aZvbuOdAwZskH7ncaez66M
三層式架構圖 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] Tornado Cash 實例解析
✍️ Johnson
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Tornado Cash 是一個使用 zk-SNARKs 建立的 Dapp,它實現了匿名的代幣交易,這篇文章就用一些程式碼片段,來分享它是怎麼運作的。
本文為 Tornado Cash 研究系列的 Part 3,本系列以 tornado-core 為教材,學習開發 ZKP 的應用,另兩篇為:
Part 1:Merkle Tree in JavaScript
Part 2:ZKP 與智能合約的開發入門
Special thanks to C.C. Liang for review and enlightenment.
我們知道在以太坊上的交易紀錄都是公開的,你可以在 etherscan 上看到某個地址的所有歷史交易紀錄,當然地址是合約的話也是一樣。
也許創建一個新的錢包和地址就好了?假設一個情境是 Alice 想要匿名傳送 1 ETH 給 Bob,Alice 原本的錢包是 A,但她不想讓 A 地址傳給 Bob 的交易紀錄被看到,所以 Alice 創建另一個錢包 B,顯然 B 錢包是空的,Alice 必須把 A 錢包的 1 ETH 傳到 B 錢包,再用 B 錢包的地址傳給 Bob。
但問題就在於,只要追蹤 B 錢包的地址,就能看到 B 的歷史交易紀錄中 A 錢包曾經打幣給 B 錢包,於是到頭來交易還是被追蹤到了。
Tornado Cash 的解決方案,簡單來說,它是一份合約,當你要匿名傳送代幣時,就把一定數量的幣丟進合約裡 (Deposit),此時你會拿到一個 note,長得像這樣:
tornado-eth-0.1-5-0x3863c2e16abc85d72b64d78c68fca5936db2501832e26345226efdfb2bc45804977f167d86b711bb6b4095ddaa646ec93f0a93ac4884a66c1d881f4fc985
note 就是一串字串,擁有這字串的人,就能提領 (Withdraw) 剛剛傳入合約的代幣。握有 note 就代表擁有提款的權利,所以 note 一旦被別人知道,別人就可以把錢給提走。
其中,後面那段亂碼,本篇文章就以「秘密」來稱呼,這個秘密是由 secret 與 nullifier 組成,而這兩個都是在鏈下隨機產生的亂數。
因此 Tornado 的合約基本上會有兩個函式:
Deposit
Withdraw
有興趣的人可以先到 Dapp 上先玩一次看看,使用 Goerli 測試網,這裡可以領 Goerli 的代幣:https://goerli-faucet.slock.it/
Deposit
我們就從 Deposit 開始說起,簡單來說, Deposit 是將資料儲存到合約的 Merkle Tree 上。
剛剛提到的秘密,它是在鏈下產生,由 secret 跟 nullifier 組成,合在一起之後也稱作 preimage,因為我們要對這個 preimage 進行 hash,就會成為 commitment。
合約中 Deposit 如下:
deposit 除了傳送代幣到合約之外,需填入一個參數 _commitment。
我們對 preimage 使用 Pedersen 作為 hash function 加密後產生 commitment,以偽代碼表示如下:
const preimage = secret + nullifier;const commitment = pedersenHash(preimage);
這個 commitment 會成為 Merkle Tree 的葉子,所以合約中的 _insert(commitment) 來自 MerkleTreeWithHistory.sol 的合約,將我們的資料插入 Merkle Tree,然後回傳一個 index 給你,告訴你這個 commitment 在 Merkle Tree 上的位置,最後一起發布成公開的 Deposit 事件。
我們知道 MerkleTree 是將一大筆資料兩兩做雜湊後產生一個唯一值 root,這個 root 就是合約上所儲存的歷史資料。
root 的特性就是只要底下的資料一有更動,就會重新產生新的 root。
所以只要一有用戶 deposit ,就會插入新的葉子到 Merkle Tree 上,於是就會產生新的 root,所以在合約中有一個陣列是用來儲存所有的 root 的 roots:
bytes32[ROOT_HISTORY_SIZE] public roots;
roots 是用來紀錄每個 deposit 的歷史,每一次 deposit 都會創造新的 root,而所有 root 都會被儲存進 roots 裡,於是當你要提領的時候,就要證明你的 commitment 所算出的 root 曾經出現在 roots 裡,代表曾經有 deposit 的動作,因此才可以進行提領。
Withdraw
在 Deposit 之前 Tornado Cash 就會在鏈下產生秘密後交給使用者,擁有這個秘密的人等於擁有提款的權利。
提領的時候,秘密會在鏈下計算後產生 proof,proof 是 withdraw 需要的參數,所以只要確保這個 proof 能夠被驗證,那麼代幣的接收地址 (recipient) 就可以隨便我們填,只要不填上當初拿來 deposit 用的地址,基本上就做到匿名交易的效果了。
也就是說,產生這個 proof 並提交給合約,能夠證明此人知道秘密,但卻不告訴合約秘密本身是什麼。
function withdraw(bytes calldata _proof, bytes32 _root, bytes32 _nullifierHash, address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) external payable nonReentrant;
我們可以清楚看到 withdraw 函式裡沒有接收有關秘密的任何資訊作為參數,也就是秘密不會與合約有所接觸,也不會暴露在 etherscan 上。
回顧 ZKP 所帶來的效果:
鏈下計算
隱藏秘密
在 Tornado Cash 的例子中,我們用秘密來產生證明,完成的鏈下計算包括:
將秘密 hash 成 commitment
算出 Merkle Tree 的 root。
以下是簡化後的 withdraw.circom:
template Withdraw(levels) { signal input root; signal input nullifierHash;
signal private input nullifier; signal private input secret; signal private input pathElements[levels]; signal private input pathIndices[levels];
component hasher = CommitmentHasher(); // Pedersen hasher.nullifier <== nullifier; hasher.secret <== secret; hasher.nullifierHash === nullifierHash;
component tree = MerkleTreeChecker(levels); // MiMC tree.leaf <== hasher.commitment; tree.root <== root; for (var i = 0; i < levels; i++) { tree.pathElements[i] <== pathElements[i]; tree.pathIndices[i] <== pathIndices[i]; }}
component main = Withdraw(20);
從上述代碼就可以看出這份 circuit 的 private 變數有:
secret
nullifier
pathElements
pathIndices
而 public 變數有:
root
nullifierHash
如同我們一開始說過的,秘密就是指 secret 與 nullifier。這裡進行的鏈下計算就是對 secret 與 nullifier 雜湊成 commitment。而使用的 hash function 叫做 Pedersen。
在進行 Merkle Tree 的計算之前,我們還檢查了 nullifier 雜湊後的 nullifierHash 跟 public 變數 nullifierHash 是不是一樣的。
hasher.nullifierHash === nullifierHash;
接下來,開始計算 Merkle Proof,用意是確認經過雜湊後的 commitment 有沒有出現在 Merkle Tree 上,所以我們的 private input 還有 pathElements 與 pathIndices(詳情參考 Part 1 Merkle Tree in JavaScript),讓它跑一趟 Merkle Proof 的計算,最後就能夠算出一個 root,再確認計算後的 root 與我們的 public 變數 root 是否一樣。
tree.root <== root;
於是我們就能產生一個 ZKP 的證明 — 證明 private 變數:secret, nullifier, pathElements, pathIndices 可以計算出 public 變數:root 與 nullifierHash。
把這個證明提交給合約,合約透過 Verifier 驗證 proof 是否正確,以及必須事先確認:
public 變數 root 有在合約的 roots 裡面。
public 變數 nullifierHash 在合約中是第一次出現。
以下附上完整的 withdraw 原始碼:
必須注意 ZKP 是向合約證明使用者填入的 secret 和 nullifier 可以計算出某個 root,但無法保證這個 root 曾經在合約的 roots 歷史上。
所以合約的 withdraw 中,除了 verifyProof 之外,還要事先檢查 ZKP 算出來的 root 是不是真的在歷史上發生過,所以需要 isKnownRoot 的檢查:
function isKnownRoot(bytes32 _root) public view returns(bool)
必須先檢查 isKnownRoot 後才能進行 verifyProof。
經過 verifyProof 驗證成功後,合約就開始進行提款的動作,也就會將代幣傳到 recipient 的地址,最後拋出 Withdrawal 的事件。
nullifier 與 nullifierHash
為什麼我們的秘密不是只有 secret 還要額外加一個 nullifier?
簡單來說,這是為了防止已經提領過的 note 又再提領一次,也就是所謂的 double spend。
require(!nullifierHashes[_nullifierHash], "The note has been already spent");
可以看到 withdraw 需要填入參數 nullifierHash,跟 isKnownRoot 一樣的狀況,我們需要對電路的 public 變數先經過一層檢查之後,才能帶入到 verifyProof 裡面。
nullifierHash 可以理解為這個 note 的 id,但它不會連結到 deposit,因此可以用來紀錄這個 note 是否已經被提領過。
所以當 verifyProof 驗證成功之後,我們要紀錄 nullifierHash 已完成提領:
nullifierHashes[_nullifierHash] = true;
有關為什麼需要事先檢查 public 變數後,才能帶入 verifyProof ,可以參考 Part 2:ZKP 與智能合約的開發入門 提到的 publicSignals 的部分。
附上 Tornado Cash 的架構圖:
簡化版的 tornado-core
tornado-core 的程式碼很簡潔漂亮,所以我模仿該專案自己實作一遍:
simple-tornado:https://github.com/chnejohnson/simple-tornado
這份專案只完成了 tornado-core 的核心部分,不一樣的是我的開發環境使用 hardhat 與 ethers 寫成,而 circom 與 snarkjs 使用官方當前的版本,合約用 0.7.0,測試使用 Typescript 。
比起兩年前的 tornado-core ,simple-tornado 使用的技術更新,可能更適合初學者理解這份專案,但是它有 bug…我在 issues 的地方有紀錄說明。
在開發的過程中,我的順序是先從最小單位的 MiMC hash function 開始玩,發現必須 javascript 算一次 hash、solidity 算一次、circom 再算一次,確保這三個語言對同一個值算出同樣的 hash 之後,才能放心去做更複雜的 Merkle Tree。
總結
我們可以看到 Tornado Cash 簡單的兩個函式:Deposit 與 Withdraw,透過將代幣送入合約後再提領到另一個地址的流程,應用 ZKP 達成匿名的交易。
除了斷開 Deposit 與 Withdraw 的地址關聯性之外,Tornado Cash 還有做了一層「藏樹於林」的隱私防護,這部份的解釋就請參考 ZKP 讀書會 Tornado Cash。
網路上很多關於 ZKP 的文章或專案都是在 2019 年後出產的,經過許多人對這項技術的嘗試,讓我們對 ZKP 有了更清晰的理解,如今兩年後,開發工具也變得更加成熟,期待未來在 web 隱私議題上能看到更多 ZKP 大放異彩的應用。
原始碼
tornado-core
simple-tornado
參考資料
ZKP 讀書會 Tornado Cash
Tornado Privacy Solution Cryptographic Review
Tornado Cash 實例解析 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
三層式架構圖 在 烙野孩imyeahhi Youtube 的最讚貼文
"本片於疫情爆發前拍攝,防疫期間,請帶好口罩、勤洗手、減少外出,防疫工作大家一起來。"
#Zenfone8 #剛好更好
本集由ASUS Zenfone 8贊助播出
購買連結:https://store.asus.com/tw/category/D5991
第八十八部影片,台灣地圖隨機地點旅遊企劃,花蓮縣玉里鎮
拍攝於2021.05.08-09
烙野孩FB粉專:https://www.facebook.com/%E7%83%99%E9%87%8E%E5%AD%A9-108421374001542/
烙野孩IG:https://www.instagram.com/im_yeah_hi/
這次,要做一件刺激的事-隨機地圖旅行!
想過要拍這種企劃很久了,這次就來執行吧!特別買了比較大張的地圖,地點要能更精確一點,希望能真的到達我們隨機打到的點位,不是只到那個縣市附近。
打地圖的過程只拍一次,一鏡到底,最後打到了”石公瀑布”......
這到底是哪啊?!聽都沒聽過!
後來查了一下,石公瀑布就是鐵份瀑布,但還是沒聽過。鄰近玉里鎮,附近還有很喜歡的溫泉-安通溫泉,剛好沒泡過,真是太棒了,這次可以泡到了,在加上一樣沒吃過的玉里臭豆腐,這行程真是太讓人期待,地點太剛好了。
這次出門沒有特別找住宿,吃的喝的也是到了再說,不要準備太多,讓旅程多一點驚喜!
花蓮縣玉里鎮,離我們住的高雄有很長一段距離,早早就出發,從楓港往東,經南迴公路到達台東,呼~在新景點台九遇到愛休息,這裡最近做了一點裝置藝術,長長的礫石海岸很適合拍照,海浪打在石頭上滾動的聲音特別好聽,與沙岸是不一樣的感覺。拿出Zenfone 8,把一望無際的海岸錄起來,使用Zenfone 8的8K錄影錄了一段,再用4K60p測試防手震,故意跳動一下,防震很夠,一般步行錄影沒有問題,最後幫Amber拍了幾張照,廣角功能可以把後面的海都拍進去,構圖美多了~
繼續往花蓮移動,但......我們還沒有找住的地方!!!隨機找了一個鄰近的露營區-東豐露營區,很順利有位置,老闆娘也很客氣,殊不知這是晚上恐怖的開始XD
終於,下午3點到達了露營區,嗯......一個人都沒有,有一種會包場的預感,不管了,先搭帳再說,營區廁所算乾淨,熱水是投幣式的,水電都充足,有好多個三角屋頂高架木棧板,可以遮陽又通風,Amber一手拿著輕巧的Zenfone 8紀錄,一邊幫忙搭帳棚,很快的,晚上的家已完成,去吃期待已久的臭豆腐吧!
橋頭臭豆腐,這是第一次吃,完全顛覆我們兩個想像,一開始看到一大盤,又塞了蘿蔔絲、泡菜,看起來很擠,真的會好吃嗎?一口咬下,外酥內嫩,皮薄,會酥,豆腐本身最厲害,湯汁非常多,不會過鹹,口感軟嫩,不會膩,是很好吃的臭豆腐,跟平常吃到的都不一樣,大家有機會記得來試試,人多,會需要排一下隊哦~
吃完點心,傍晚天氣慢慢變涼了,前往安通溫泉泡湯剛剛好,這是第二次來到這裡,前一次來是夏天,並沒有下去泡溫泉。安通溫泉區,一下車就能聞到溫泉味,溪邊的水也是溫熱的,溪畔有做三個公有的溫泉池,很大。
當地人的默契是在中間池淋浴,沖洗乾淨後,到旁邊兩池泡湯。溫泉出水口達60度左右,無法直接浸泡,要放涼,在地人很聰明,會接上蓮蓬頭,讓水與空氣接觸降溫,續下來的水就可以直接泡了,在用Zenfone 8錄影的時候,Amber直接開水,淋了我一身,還好手機有防水,影響不大。這一次泡到安通溫泉的感覺非常棒,以後經過還要再來。依當天的經驗,傍晚到天黑前,在地人多,入夜後外地遊客比較多。
晚上,回到玉里市區,簡單吃個飯,時間還早,隨機找了一間店,吃吃點點,喝茶小酌,沒想到隨機找的店,會是讓我們為之驚艷的地方,外觀看起來普普通通的老房子,老闆有一隻老柴犬,這裡是寵物友善的空間,Allen要開車,點了一杯薄荷茶,Amber點了一杯小酒,再一個鬆餅,每一樣都有老闆的手藝,不是在外面店家點的到的東西,加了海鹽的甜點鬆餅,鹹甜鹹甜的滋味特別好吃,鬆餅也扎實,嗯~推薦給大家。
晚了,回到營區,真的一個人都沒有!一個人都沒有!是連營主也不在的一個人都沒有!
暗矇矇的,自己開了4盞燈,加上帳棚的串燈,溫馨了一點,可以來睡了,明天還要去瀑布。睡前看一下手機電量,還不錯,Zenfone 8用了一整天,拍照、錄影加導航,電力還有10%呢!
結果!這裡的蚊子超勤奮,工時超長,到半夜3點還在加班,大概半夜3點到早上7點沒有蚊子,我們也大概只睡了這個時間。
帳棚收好,前往鐵份瀑布,也是我們地圖打到的地方。要到鐵份瀑布的路不難,停車的地方以前是露營區,現在沒人管了,停車空間大。下車走10分鐘就到瀑布了,途中要攀過一個小小的攔沙壩,Allen拿著Zenfone 8邊錄邊爬,輕巧的機身單手可以掌握,很適合戶外活動使用。攀過攔沙壩後,到達瀑布,比想像中還要高大,可惜現在是枯水期,水少、流動慢,夏天豐水期來,會是很漂亮的一個地方,期待下一次豐水期來這裡玩~
隨機旅行很有趣,不做過多的準備,調整心情,是一整遇到什麼就接受什麼的心情,用這種方式出去玩,去約會,是不一樣的感覺,可能夠接觸到跟平常出遊,不一樣的人事物。如果不是這樣,我可能很久以後才會前往玉里,可能不會到鐵份瀑布這個祕境,更找不到這樣一個特別的小酒管。
特別的旅行,希望大家也喜歡
山裡的狀況也每年都不一樣,出發前記得做好功課。
離開時要帶走垃圾,最好可以帶袋子幫忙撿垃圾。
對影片有問題可以在下方留言,有幫助的話🙇懇請按讚訂閱分享。
台九遇到愛(台九420k)
:https://goo.gl/maps/Rp8eH9bJZjpBNqph6
東豐露營區:https://goo.gl/maps/atgSNinF5fnDetJf6
玉里橋頭臭豆腐:https://goo.gl/maps/Ch2xfb3UNh8GubW87
安通溫泉(公有池):https://goo.gl/maps/GB5GVpSzp47DWtfA6
玉里橋頭麵:https://goo.gl/maps/8K8zMrqcie7o3pMF7
Our老房子咖啡屋(木職人工作坊、甜點烘焙在後方吧台)寵物友善:https://goo.gl/maps/qxiGAzY3cF9zUbLg8
鐵份瀑布(停車處):https://goo.gl/maps/dsdE8mgBbs5vgbhN8
#Taiwan#台灣#玉里
#溫泉#hotspring#瀑布#waterfall
#Outdoor#戶外#旅遊
#烙野孩#imyeahhi
![post-title](https://i.ytimg.com/vi/47Hn0jrFntY/hqdefault.jpg)
三層式架構圖 在 超粒方 Youtube 的精選貼文
每周爆肝系列再度來臨! 這次要來講的是漫威新影集《獵鷹與酷寒戰士》
剪輯: 麗芳、Bruce Lu
監製/編輯:黃豪瑞(Jasper)
FB(有各種影視迷因): https://www.facebook.com/tessereq/
加入會員:https://www.youtube.com/channel/UC0Q-fBheHysYWz9ObSEzMdA/join
如果你剛來,請看這裡: https://www.youtube.com/watch?v=iZj5phF46N8&list=PLNsYSXaDLA89TvBjuV3h7l0wVRSPLk7FJ&index=1
諾蘭電影全解析: https://www.youtube.com/watch?v=cv3pZ8GCNnI&list=PLNsYSXaDLA896bdu-7_WbeX4sDLI5JIjS
=====================================
在任務結束之後,他的小組搭檔知會他關於新興起的恐怖組織「旗幟破壞者」的訊息,
這個組織認為被彈指之後的世界確實是更好的世界,
更提倡一個沒有國籍、邊界的聯合世界。
順帶一提,這名搭檔是瓦金托瑞斯,在漫畫中也有帶著獵鷹的稱號,
差別就在於他是被實驗變成人鳥的混合體,不是靠機械飛行。
這個角色在漫畫中是在Sam Wilson: Captain America這個漫畫故事線中首次出現,
其中的故事提到了山姆接下年邁的美國隊長的位置,
更與旗幟破壞者以及「山寨美國隊長」USAgent交手,
所以這影集應該有受到那個系列啟發。
托瑞斯更是向山姆提起了一個陰謀論,說美國隊長住在月球上,
在漫畫中,月球上確實有人,像是之前推出影集卻完全失敗的異人族,
或是即將在動畫系列What if 出現的觀察者。
那麼,有些人一定非常好奇,美國隊長到底去哪裡了?
之前《終局之戰》的導演有解答老隊長的來龍去脈(雖然跟編劇的回答完全互相牴觸)
他們說,隊長真的是在另一個時間線與佩姬白頭偕老,
最後才回到這個時間線把盾牌交給山姆。
所以...他也許是又回到了原本的時間線?或者是不想要造成麻煩,就此歸隱了。
記得,在《蜘蛛人:離家日》之中,我們看到學生製作的影片之中有其中一個畫面是"RIP美國隊長"
所以至少世界認為他是死的
注意此處獵鷹說了一句話:
"When things get better for a group, it gets worse for others"
這裡,我們看到了漫威也許真的想要透過這部政治驚悚影集探討一些不一樣的議題,
獵鷹這句話也許不是在諷刺某個特定的事件,但是絕對是在闡述最近的政治紛爭,
無論是去年的BLM,兩方都無盡地爭論到底誰獲得了比較多好處、特權。
或是近期因為某些族群因為覺得受到進步派興起而日漸壯大的民粹主義,
現代兩極化的政治,全都是起因於「我的東西被另一群人奪走了」。
如英國脫歐,就是原本的英國人因為歐盟移民而感到自己的生存空間被壓縮,
就是因為傳統的價值受到挑戰,而一開口就受到訕笑,才會使脫歐公投成功
甚至是到台灣最近雙方都互相恥笑的政治,全都來自於這種相互「受剝奪感」。
一旦作出修正、反彈,又換成另一方受到壓迫,於此開啟了無盡的循環。
這就只是一句話而已,也許是我想要漫威有深度,為了尋求意義而過度解讀,
但是我不這麼認為,正因為這一集接下來的發展,你馬上就會看到他們欲探討的議題了。
任務完成,山姆來到華盛頓DC發表演說,將美國隊長的盾牌隆重的歸還給政府保管,
他認為一個象徵,如果少了背後帶來象徵的人,就會失去意義。
這種觀點跟《黑暗騎士》三部曲所闡述的觀點完全相反,或許很多人也不會認同,
但是這兩種觀點並沒有對錯,象徵確實是能夠給人帶來希望以及啟發,
然而,如果實際履行理想的人已經不在了,我們是否只是在緬懷歷史?
《獵鷹與酷寒戰士》從前幾場戲就連續展現
它將用超級英雄的故事探討再人性不過的問題:
傳承以及身分。
什麼是傳承?傳承不就是在一個你永遠也看不到的花園裡種下一顆種子,
這不只跟傳承者有關,那些往後在花園裡倘佯的人們,
也必須面對維護這個花園的重擔。
我們,要如何知道前人對於他傳承事物的期待是什麼,其他人又是怎麼看待我們處理這些傳承的?
究竟,我們有沒有義務接下這個我們不願接下、或是無法接下的責任?
美國隊長確實是一個傳奇性的象徵,他象徵著希望、改變、以及堅毅不拔的精神,
有些人也許會說山姆將盾牌歸還政府保管,
將美國隊長的稱號拱手讓人的選擇是個不負責任,甚至懦弱的展現。
但這也正是漫威英雄吸引人之處。
在多數時候,我們看到的英雄,摘下面具終究是一個「人」,
對自己身分感到懷疑、為自己能力不足感到懼怕,是再也人性不過的事了。
山姆可能是因為認為自己不夠格,也可能是不想活在史帝夫的陰影之中。
無論如何,如果這影集接下來能夠不只是蜻蜓點水地探討這個主題,那絕對會是漫威的一大創舉。
接下來,有在現場的戰爭機器找他私下聊天,在對話中隱隱透露了自己擔憂,
現在鋼鐵人跟美國隊長都走了,輪到誰來保護世界?
不需要明說,其實我們也看得出來他自己正在思索如何維護鋼鐵人的遺志,
我就問一句:
為什麼我們這麼少看到超級英雄作品的角色用這種「表面說一句,心理說另一句」的方式呈現?
就因為他們穿著緊身衣,不代表我們不能像這樣給他們微妙的對白啊!
故事此時一個大轉折,我們看到巴奇,也就是酷寒戰士,殘忍地屠殺一群人,
這段真的超兒童不宜,
最後甚至還冷血處決了一個只是剛好倒楣經過現場的路人。
巴奇突然驚醒,我們才知道這全是一場夢境。
在這裡,你可以看到巴奇睡在地板上,這正是戰爭對他帶來的影響,
山姆在《美國隊長2》也有提到這點
畫面再切到他坐在諮商室,心理諮商師問他最近做了什麼噩夢,
想當然耳,他含糊帶過,
但是坦承了他依照諮商師的指示開始「彌補過去」,也就是修正了他在酷寒戰士時期所犯下的錯,
其中一個目標就是被他拱成參議員的九頭蛇走狗,
而他彌補的方式,就是讓參議員被逮捕。
而這整段-抱歉,我會一直稱讚這部影集-透過與諮商師的對話直接尖銳地解構巴奇這個角色,
更在這場極為安靜,後半段甚至只有特寫的戲之中,探討創傷後遺症的影響。
注意此處用了異常的構圖,讓巴奇處於壁紙下方,
象徵著他現在仍然受到這個看似祥和的世界壓迫。
巴奇一直以來都是像是個襯托美國隊長的配角,現在我們終於開始進入他的本質。
跟汪達一樣,這影集透過他來探討創傷,
但是巴奇的創傷不是來自於他所失去的親人,而是自己在過去犯下的駭人罪行,
雖然他並不是出於自願,但是就如現實生活中,
人們總會將許多錯誤完全怪罪於自己身上,久而久之,
這就形成了一層如繭一般的防護網,把所有試圖親近之人都拒於門外。
就如巴奇現在所做的一樣,我們害怕會再次犯錯,即使那錯誤並不見得是出於自己。
即使是如這場戲之中的醫生,堅定地告訴巴奇「你自由了」,
失去指令和目標的他反而變得漫無目地與迷惘,
這個世界仍然有如囚牢,好似隨時都會再次把他一把攫走
而每個人面對創傷的方式也都有所不同,有時較為劇烈,
像是把一整個城鎮綁架飾演一場情境喜劇之類的劇烈法。
有時,如巴奇,不過就是想彌補自己曾造成的傷害。
無論採用什麼方式面對,漫威目前這兩部影集都顯示「孤立」所帶來的附帶傷害,
就這樣,在這五分鐘之內,這影集就給巴奇帶來了好幾部電影都無法達成的立體。
回到故事劇情,我們看到巴奇幫鄰居解決糾紛之後-
你沒有聽錯,幫鄰居解決糾紛,這影集就是這麼日常化,我超愛。
這也讓人想起了美國隊長第一集,
巴奇真的很愛在巷子裡救人。
兩人到壽司店吃飯,而鄰居就這樣一言不合幫他把妹,
問服務生要不要跟巴奇約會,而對方就這樣爽快地答應。
但是鄰居在看到桌上的紅豆麻糬之後,突然潸然淚下,
說他兒子以前最愛吃麻糬,但是在出差的時候突然被殺害,警方也不願意告知死因。
我們可以看得到巴奇的神情不太舒服,等一下就會知道為什麼了。
接下來的這場戲則更讓人驚喜,畫面來到了山姆的老家,
我們才知道他有個妹妹,還有兩個外甥,
在對話之中,我們得知了妹妹因為經濟困難而想要賣掉父母親所遺留的的漁船,
但是山姆不願意,認為一定有其他的解決辦法,他可是復仇者聯盟的獵鷹啊!
這一整段,以及接下來的許多橋段,都是用這種寫實主義的自然手法拍攝,
運用手持鏡頭,親密地跟隨角色。
如果你給一個不知情的人看,他甚至會以為這是個小眾獨立電影。
(再次表示,我真的超愛。)
在多次上演拯救世界以及英雄內心掙扎的偉大戲碼之後,
漫威在山姆身上第一次探討了所有人-幾乎所有人-
都會面臨的問題:錢。
你可能會想問:為什麼?
漫威有這麼多形形色色的角色,為什麼要兩個角色探討如此稀鬆平常的問題?
但這也許就是重點-希望是啦。
這影集接著《汪達幻視》的奇異詭譎,從預告中看來似乎又要走回漫威的公式化,
可能是間諜片、又是可能戰爭片,總之就是會以很爽的動作戲作為核心。
然而,第一集直接告訴了觀眾,不,這並不只是那樣的影集,
我們要把這幾個角色當成人來看,這已經不再是你習慣的超級英雄作品了。
而在這樣的切入點之下,
我們更能夠深刻體會彈指以及五年後反彈指兩大事件對於這個世界的劇烈影響,
這不再只是個毀天滅地的危機,而是深刻影響到原先社會的本質,甚至造成歧異的變因。
想想看,在彈指之後,世界全然失序,有些人失去身邊的人,重要基礎機能無法運作,
在一陣慌張之後,世界好不容易恢復運作,人們好不容易學會放下,
但是...在五年之後,浩克彈指,消失的人口忽然又出現。
這好不容易重新建立的秩序又瞬間被打亂,
人們辛苦建立的生命觀又變成了不知如何應對的焦慮。
光是從山姆與沒被彈走的妹妹對話就能看得出來,
那些留在世上的人,必須獨自面對被彈掉的人無須面對的恐懼以及無助,
當然也無法維持正向思考,只求如何生存下去。
而這也不只是漫威奇幻的世界,在現實世界中的2020年之後,
我們恐怕也無法完全回復以往的狀態。
說說看,即使是在疫情完全解決之後,你敢不戴口罩上捷運嗎?
故事回到山姆身上,他與妹妹到銀行貸款,但是,即使山姆是個多次拯救世界的英雄,
銀行還是無法借錢,他們只能悻悻然地離開。
這十足顯現了山姆所代表的問題,即使是像他這樣的英雄,
還是會面臨現在眾多非裔美國人面臨的問題。
不是明擺著的歧視,那當然還是有,而是這種因為膚色而產生的差別待遇,
我不敢說如果他是白人就能馬上借到錢什麼的,但是這場戲絕對是有其諷刺標的,
無論是日漸重新崛起的種族主義,還是只能在底層打轉、永不得翻身的邊緣族群。
更是一再深化「彈指」這個漫威大事件對於一般市民所造成的影響,
這不只是失去自己親近的人而已,更是加強了人與人之間的隔閡以及不信任。
全宇宙的人,等於是硬生生地產生了五年的代溝。
也許,山姆無法接下美國隊長的傳承,還是與自己的身分不斷掙扎,
就是因為他打從心底知道,分歧的美國,還是無法完全接受他成為美國隊長。
當然,漫畫中也有一個橋段直接講出了這點
下一場戲,則更加深了這點諷刺,
山姆在電視上看到了國防部驚為天人的宣布:
為了維持美國的傳統,保持啟發人的象徵,國家決定指派新一任的美國隊長,
他手上拿的,就是山姆捐贈給博物館的盾牌。
此外,你還可以看到他的腰間掛了一把槍,
一個美國隊長在二戰過後就再也沒有使用過的武器,
當然,你不用槍,怎麼代表美國價值勒?
而這一整段刻意呈現得像《黑袍糾察隊》那種假惺惺的人工英雄形象,
新美國隊長的微笑看起來正義凜然,卻又不懷好意。
再一次地,這影集又強化了「傳承」這主題,
一個人的傳承並不是自己,或是自己真正在乎的人所能夠定義的,
傳承,或是象徵,許多時候只會被某些強大勢力用來操作情勢,達成私利。
但是,這樣反而也更顯現了像是山姆以及巴奇這種人存在的必要性,
也證明美國隊長看上他們繼承自己理念的眼光。
汪達幻視 正義聯盟 獵鷹與酷寒戰士
![post-title](https://i.ytimg.com/vi/tj0AlMHFMTw/hqdefault.jpg)
三層式架構圖 在 阿零的攝影日常 Youtube 的最讚貼文
不得了的一次上山拍攝!背著所有攝影器材,登上香港三尖之一的蚺蛇尖,只為拍得其氣勢!晚上落山時,竟然還有靈犬引路?!
訂閱頻道,一起分享攝影的樂趣吧! https://goo.gl/GoK1Zx
去年底雙子座流星雨高峰夜,想要物色一處地形奇特的地點拍攝,結果選了蚺蛇尖。可惜當晚天公不造美,整夜雲層密佈,無功而還。
2星期後,我們再次回到北潭坳,希望再次嘗試登上被稱為「香港三尖」之一的蚺蛇尖。蚺蛇尖雖然鼎鼎大名,但這次是我的初登。一直都很期待看到頂峰上的風景,到底在一個天陰陰的日子登頂,能拍到些甚麼照片呢?
這次帶了Fotopro的新腳架—磐圖 T-Roc MAX,嘗試在風勢強勁的蚺蛇尖頂,拍攝30秒的長曝照,考驗一下這支腳架的定力!
#fotopro #hy_filter #laowa
=====
阿零的攝影教室 正式開課!
https://lingphotoclass.com/
優惠網購:
https://lingphotoclass.com/store/
=====
阿零:土生土長香港人。既是攝影師,也是個跨媒體創作者。除了拍照,也創作攝影相關的影片和寫文章,並活躍於不同的交流平台。快來跟我交流吧!
Facebook專頁:主要用來發佈攝影作品、分享背後故事及心得、刊載文章和資訊。最重要的是和大家的交流~
https://www.facebook.com/photographerling
YouTube頻道:定期更新,一起分享攝影的樂趣!
https://goo.gl/GoK1Zx
IG:新照片最先發佈的地方!也會有較多個人生活的分享~
https://www.instagram.com/arling.hk/
Fever達人主頁:集中發佈攝影文章的地方,方便集中閱讀~
https://www.dcfever.com/column/info.php?id=643
個人網站:影片、相片、文章集中看!集合了我在不同平台創作的內容,請隨便參觀~
https://photographerling.com
Telegram攝影吹水交流Group:入來跟大家一起瘋狂交流吧!
https://t.me/joinchat/BmYJukfdhattmCLF9JDaOw
「影影貢!攝影交流谷」,互相交流學習,一起進步!
https://www.facebook.com/groups/326126641128068/
![post-title](https://i.ytimg.com/vi/X-IkYqnKBHM/hqdefault.jpg)
三層式架構圖 在 這些推陳出新的技術,都能用三層式架構為核心思維來梳理剖析 ... 的推薦與評價
三層式架構 設計. 在萬變裡找到不變,有核心思維的學習發展,才不會被技術浪潮所淹沒。領域 ... ... <看更多>
三層式架構圖 在 如何繪製美觀的組織圖+ 人物關係圖? | PowerPoint 教學#10 的推薦與評價
![影片讀取中](/images/youtube.png)
練習檔下載https://1drv.ms/u/s!AoXOl3Y39m38hdgZwOxx_49-yoNZfw?e=YF5OJG. ... <看更多>
三層式架構圖 在 三層式架構 的推薦與評價
三層式架構 顧名思義,主要分為了三層:. 1、Controller:控制層,作為接口。 2、Service:商業邏輯層,只要有關商業邏輯部分的處理全部放在這一層。 ... <看更多>