【推理小說中,消失的女孩要怎麼找】來找我別找我平行雙女傳說
話說當年粉紅教主瓊瑤《還珠格格》裡,我們的紫薇格格曾說過一句令人印象深刻的話:「皇上,您還記得大明湖畔的夏雨荷嗎?」
結果瞬間被問倒的渣隆,一臉矇樣驚嚇臉,想來是很久記不得了,畢竟在後宮裡,有環肥燕瘦三千佳麗,目不暇給也是可以理解的~
所謂「自古多情空餘恨」、「多情總被無情苦」大概就是這樣,不過對比無情渣隆的水過無痕,推理對「消失的女孩」可有心多了!
事實上,無論古今中外經典或時尚,所謂消失女孩的謎團,究竟要上哪找怎麼找到底要不要找,簡直就可說是當紅不讓,沒有之一。
甚至我們可以說,如果推理中的女孩不在家,就是在消失的路上;如果不在消失的路上,就是在尋找的抽絲剝繭上,這點毋庸置疑。
就像家喻戶曉吉莉安.弗琳(Gillian Flynn)《控制》(Gone Girl)與康乃爾.伍立奇(Cornell Woolrich)《幻影女子》(Phantom Lady)的重金懸賞,甚至可概括有(消失/昏迷/失蹤/死亡/被噤聲遺忘)等。
如同水的化學式H2O由氫與氧組成,消失女孩的謎團,多數時候,往往會結合過去現在平行世界推理的愛情/雙女/書中書佈局,人正闇黑系,來找我別找我在他們在到我之前等不知該找不找的主標。
劇情指向,多以「消失的女孩」開啟懸疑,貼近趨勢所趨的女力覺醒或勝利外,也不時會與恐怖情人甚至心理扭曲的囚與虐有關係。
如人家都說不要了還來的哈蘭.科本(Harlan Coben)《別找到我》(Six Years)與JS孟若(JS Monroe)《在他們找到我之前》(Find Me)。
不過如果說頻率最高的使用,則是平行世界推理A-B-C-D為劇情遞進順序,敘事手法卻是現在(C-D)與過去(A-B)的平行雙女奪冠了。
首先我們可能會知道,小燕子與紫薇根本是種南轅北轍的對照:一個是古靈精怪又豪氣干雲,一個則是飽讀詩書又溫柔可人的美麗。
但是平行雙女書中書,女女今昔對比與追尋,則多見彼此相互酷肖的血緣姻親與否的姊妹閨密,或用容貌整型裝扮模仿等來做混淆。
就像渣隆單單只憑信物會錯認小燕子與紫薇格格的真實身份,其實讀者在面對平行雙女或書中書的過去現在酷肖,也都是為了混淆。
甚至可姊妹/閨密/母女,過去現在過去現在1111加乘變形,如邁可.洛勃森 (Michael Robotham)《請找到我》(Say You’re Sorry)。
不然就是個人生命經歷V.Sㄡ歷史悲劇沿襲,如當年夏雨荷在大明湖邊哭到淚乾而盡,如今的女兒紫薇,能否扭轉命運進宮獲得正名?
但結局當然是肯定的且會獲救重生,如作家胡杰《尋找結衣同學》與瑞妮.丹菲爾(Rene Denfeld)《請你找到我》(The Child Finder)。
兩書同與兒童女孩身體自主權相關,一則是校園溫室中權力不對等發生悲劇,一則則是尋兒專家搜尋對比被害遭擄受禁的平行雙女。
差別在敘述的視角男女各異,不過後者故事某種程度上雖也可算「平行雙女」,卻不全然等同本書所說的平行世界推理結構佈局。
請注意本書雖針對古往今來世界暢銷推理母題公式進行分析,但作者各自作品,仍會蘊含有自己的創意與匠心,結構佈局亦會變形。
但可喜可賀的是,這樣看來,不管女孩在推理歷經多少荊棘,都不會像大明湖邊的夏雨荷,生前哭不停,死後也哭不停,會有光明。
★除封面以女孩肖像/眼睛/背影等為主體,標題取名大抵類似臺灣電影神鬼奇航、神鬼交鋒的「神鬼OO」命名慣例,以找不找為題。
「你所不知道的js順序」的推薦目錄:
你所不知道的js順序 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound
V̶y̶p̶e̶r̶ Solidity coding time!
Image source: https://uniswap.org/
Outline
一. 前言二. 程式碼結構 1. Wrapped Ether(WETH)? 2. Impermanent Loss三. 創建交易對 - 準備 Interfaces四. 注入資金 - 注意事項五. 兌換虛擬貨幣六. 取得報價作為預言機七. 自行兌換 WETH八. 結語
一. 前言
暨上一篇解釋了 Uniswap 的演算法後,由於個人有使用 Uniswap v2 的需求,因此整理後寫成本篇,希望能幫助到其他也需要用 Uniswap 的讀者!(不熟 Uniswap 的人也可以參考區塊勢 許明恩 Astro Hsu 寫的介紹文:點我)
Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作
本文希望透過實際操作 Uniswap 我個人會用到、我認為大家比較常會用到的功能,來讓不熟悉的讀者快速了解其程式架構(v2 相較 v1 繁複)、熟悉實作方法,無法顧及全部還請見諒。
以下實作的測試環境為 Rinkeby 測試網,由於只是要講解使用方法,因此選擇在 Remix 上操作。
而 Uniswap v2 跟 v1 的差異,個人沒有很認真研究,大致列舉以下幾點,本文只會就其中幾點在後方進行較詳細的解釋:
使用 Wrapped Ether, WETH (於 二. 程式碼結構 解釋),讓 ERC20 交易對不再需要透過 Ether ,降低 gas 的消耗,但還是可以用 Ether 支付
加入時間權重的預言機,降低被操縱價格的風險,於 六. 取得報價作為預言機 中舉例說明,有興趣者可以看看 白皮書 有詳細介紹
閃電貸
使用 Solidity 而非 Vyper,因為 Solidity 功能上較齊全,於 五. 兌換虛擬貨幣 中舉例說明原因
在開始之前,本文超長,播個背景音樂吧:
二. 程式碼結構
本段落簡單描述 Uniswap 程式碼各部分的功能。若讀者要自己實作,可以參考此處得知該去哪一份程式碼找相應的功能:
Factory / UniswapV2Factory.sol : 創建交易對、查詢交易對的地址與總數;查詢、指定交易對手續費的收款地址
Pair(ERC-20) / UniswapV2ERC20.sol : Uniswap 流動性代幣 ERC20 的部分
Pair / UniswapV2Pair.sol : Uniswap 流動性代幣的其他部分;查詢交易對資訊
Router / UniswapV2Router01.sol : 注入、取出流動性/資金;兌換虛擬貨幣。此合約看似最複雜,其實只是因為收付款的單位可以是 Ether 或是 ERC20,所以有很多重複的函式
ExampleOracleSimple.sol, ExampleSlidingWindowOracle.sol : 預言機的範例程式碼
Library / UniswapV2OracleLibrary.sol : 供預言機調用的函式
Library / UniswapV2Library.sol : 供內部調用的函式
除了描述程式碼結構,為了以下的實作我們還需要知道 Wrapped Ether 是什麼,順便了解其使用原因:
1. Wrapped Ether (WETH) ?
從字面上來解釋,Wrapped Ether 是被包起來的 Ether。那為什麼好好的 Ether 不用還要創造出另一版本,嫌這小小世界的術語不夠多嗎 (ETH, WETH, Dai, aDai, cDai, sDai…)?xD
wETH | ERC20 tradable version of ETH
主因有兩個:廣泛地說,Ether 是以太坊上的原生虛擬貨幣,但它與廣為使用的 ERC20 標準並不相容( ERC20 有 approve(), transfer() 等等功能);而針對 Uniswap 的場景來說,v1 的交易對都一定有 Ether,而使用 Ether 可能會造成 Impermanent Loss,於下方解釋。
因此,就以上兩點的解決方法個別是:
部署一 ERC20 <-> Ether 的兌換合約:使用者將 Ether 付給 Wrapped Ether (ERC20) 的智能合約,合約就會給使用者同等數目的 WETH;拿回 Ether 則有點不太一樣,方法是告訴 WETH 的合約使用者要 withdraw(),WETH 的合約就會把使用者 WETH 擁有的額度設回 0 (或減少) 並返還 Ether,於 五. 兌換虛擬貨幣 中舉例說明
v2 交易對的建立不再只能是 (Ether, ERC20),可以是 (ERC20, ERC20)
2. Impermanent Loss
Impermanent loss 在 DeFi 指的是像 Uniswap 這類用演算法的去中心化交易所,如果交易對是兩幣價不相干的虛擬貨幣,例如:穩定幣 (Dai, USDC, etc) 和 Ether,流動性提供者 liquidity provider 會因為幣價的相對波動而比起直接持有兩幣還損失了一筆。
容我舉個例解釋清楚點,可以搭配我上一篇所寫的 Uniswap 的演算法 來理解:假設一開始 1 Ether 幣價為 100 Dai,只有一流動性提供者 LP 投入了 1 Ether 及 100 Dai (1 * 100 = 100 = k,k值要維持不變),總價值為 200 Dai。當 Ether 的幣價來到 200 Dai,眼尖者會發現資金池中的 Ether 價格低、有利可圖,因此會進行套利,例如:拿 33 Dai 約可以換到 0.25 Ether (0.75 * 133 ≒ 100),比起市場上要用 50 Dai 才能換到 0.25 Ether,套利者賺到了。此時,流動性提供者若將自己的資金提出,0.75 Ether 和 133 Dai 此時的總價值是 283 Dai,看似比當初的 200 Dai 還多,但其實將兩幣放著不動 1 Ether + 100 Dai 在此時就已經是 300 Dai 的價值了。於是,impermanent loss 就變成了 permanent loss :(
三. 創建交易對
- 準備 Interfaces
在開始之前,由於使用到的合約不少,所以我將全部所需整理在此:點我。其中,UniswapImplementation.sol 是本文實作的檔案。
若讀者在自己調用 Interface 時遇到版本問題,就依照 compiler 提供的指示稍作修改即可。我所整理的合約都修正過版本的差異、以下的實作也測試了可行,因此可以安心使用。
進入正題
通常大家使用的 Uniswap 資金池都是已經存在的,而如果想要上架自己的虛擬貨幣就要自己創建一組新的交易對,有兩種方式:在 Uniswap 官網上執行或是透過呼叫 Uniswap 的合約來建立,本文使用合約的方式。
首先,我們需要決定資金池為哪兩種虛擬貨幣,那就很普通地選 ETH 和 Dai 吧。雖然選了 ETH,但如同上方所述實際上必須使用 WETH,於是記下其在 Rinkeby 上的位置 。Dai 就使用 Compound 部署在 Rinkeby 上的版本,位置在 0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa。
接著,打開 IUniswapVFactory.sol,依照官方文件的指示將此合約部署在 Rinkeby 上的 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f。以下會有許多由 Uniswap 文件得知的合約地址及其他資訊等等,就不再一一附上來源或畫面截圖!
如上圖黑框所示,輸入了地址後按下藍色按鍵就完成部署了。接著,如下圖將 Dai 的地址 及 WETH 的地址輸入 createPair():
由於這個交易對我已經部署過了,因此讀者若想嘗試就麻煩去找別的 Rinkeby 上的測試幣了、或自己發一個! 完成後可以用 getPair() 輸入兩幣地址來確認交易對被建立成功:
如果想要進一步核對,可以先呼叫下圖紅框中的 allPairsLength(),得知當前總共有幾組交易對,再將 (交易對數 - 1) 輸入 allPairs(),就能得到和上圖一樣的地址。需要減 1 是因為陣列的 index 從 0 開始。
allPairsLength 的值會因為其他人的使用而增加,故日後可能會和本圖產出的 9 不同
四. 注入資金
看到標題的讀者可能會想:為何要把注入資金/流動性和上方的創建交易對分開呢?因為注入流動性這個功能被放在了 UniswapV2Router01.sol 中,所以就分開解釋。
雖然上一節只需要複製貼上按按鍵,但接下來要探討的注入資金 addLiquidity() 及虛擬貨幣的交換 swap()比起創建交易對 createPair() 是較有可能被融入到其他 DeFi 服務的功能(應該不太會有人會一直需要創建新的交易對),因此打開 UniswapImplementation.sol、要開始 Solidity coding!
如果不熟悉為何別的 DeFi 會需要在自己的服務中使用 Uniswap,可以搜尋 DeFi Money Lego/ DeFi 樂高,顧名思義就是在一個 DeFi 服務上使用另一個 DeFi 服務。實際的例子有:Aave 的新功能是可以拿往 Uniswap 注入流動性後得到的流動性代幣再投入 Aave 來賺取利息,以及下一節兌換虛擬貨幣的功能可以在 Pelith 的輕鬆貸 EasyDai、一站式 DeFi 組合工具 Furucombo 等場景中看到他們如何將 Uniswap 銜接上其他的 DeFi 服務。
回歸正題
在開始之前,先簡單提及一下有哪些變數、instance 需要初始化:
我們要呼叫 Uniswap 合約的 instance 來進行互動: IUniswapV2Router01
不只需要 Dai 的 instance,也需要 Dai 和 WETH 的地址;DaiAmount 和 ETHAmount 是為了稍後注入流動性所設置的,本文假設第一筆流動性我們使用 200 Dai + 1 Ether
immutable 是版本 0.6.5 加入的,用途是讓變數只能被讀取 read-only,但不同於 constant 的是能夠在 constructor() 中賦值。之所以各 instance 的地址不一起加上 immutable ,是因為若加上了,這些地址就不能在 constructor() 中被使用
p.s. 由於 gist 沒有 Solidity 的 syntax highlighting,所以隨便用了 .js 請忽略
看完了初始設定後,由於我們目前鎖定的資金池是 Dai 及 ETH,因此使用如下的 addLiquidityETH() 此函式,可以直接匯入 ETH 及 Dai。
本處我使用長度為 3 的陣列 addLiquidityResult 來記錄注入資金後的返回值:注入 Ether 的數量、Dai 的數量及返回的 Uniswap 流動性代幣的數量。實際上應該要依照不同使用者記錄的他們執行 addLiquidity() 後各自的返還值
第五行中的 approve() 是為了讓 UniswapV2Router01 的合約能夠從我們部署的合約 UniswapImplementation 取得 200 Dai 的使用權
於第六行 addLiquidityETH() 後方的大括號 {value: ETHAmount},這是 Solidity 0.6.0 後版本如果要在呼叫 function 的同時送入 Ether 的標準寫法,以前的寫法 .value() 目前也還能用但 compiler 會給提示
addLiquidityETH() 的第三、四個參數為最少要成功注入的數量。使用者能夠成功注入的數量取決於資金池中兩虛擬貨幣當下的數量,而本處直接給 0 比較方便
這邊非常重要的是上述程式碼還欠缺了一個無法被寫在合約內的步驟:使用者要同意這個被部署的合約 UniswapImplementation 可以從自己的帳戶中轉出 200 Dai。因此,將 ERC20 (Dai) 部署在 Rinkeby 上的位置,也就是0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa,接著輸入被部署合約的地址以及 200 Dai = 200000000000000000000、按下 approve() 後準備作業完成,如下圖。
終於可以呼叫 addLiquidity() 了! 如下圖,在紅框中以 1 Ether 呼叫黑框中的 addLiquidity() 後,就能成功將資金注入到 liquidity pool 了! 由於本文寫在測試後,因此沒有留下第一次 addLiquidity() 的結果 :(
此處被部署的合約位置跟上方截圖不同,因為其中測試了一些東西所以重新部署qq
接著,可以拿出 IUniswapV2Pair.sol,將其部署在 三. 創建交易對 中成功部署的位置 0x03E6c12eF405AC3F642B9184eDed8E1322de1a9e,使用黑框中的 getReserves() 就可以看到資金池中確實有匯入的資金! (本處依然沒有第一次使用後的截圖,因此截圖只是為了讓讀者看到 getReserves() 的結果)
此圖黑框中的值代表:在資金池中,Dai的數量、Ether的數量及上一次匯入資金的時間戳記
- 注意事項
使用 addLiquidity() 時需要小心的地方是:除了第一筆注入的資金可以自行決定兩虛擬貨幣的數量,第二筆開始就會依照其演算法算出兩幣可以投入的各自數量,因此使用者放入的兩幣中可能會有部分的其中一幣被 Uniswap 返回。
上方的程式碼只是為了第一筆流動性所寫,如果不是第一筆的情況就需要用成功注入流動性後的返回值(例如筆者的作法是用一陣列 addLiquidityResult 來存結果)來把沒有成功注入的資金返回給使用者。
五. 兌換虛擬貨幣
本節使用的兌換功能依舊是來自 IUniswapV2Router01.sol。
由於兌換虛擬貨幣實際上只有五行不到的程式碼,那麼就來把兌換 Ether 而得到的 Dai… 投到 Compound 來賺取放款利息吧! (雖然只是在測試網) 如果覺得這個場景似曾相識,沒錯,這就是上面提到的 輕鬆貸 EasyDai 的不專業版本!
首先將 Ether 和 Dai 互換的邏輯完成:
Ether 換 Dai : 使用 swapExactETHForTokens(),給某數量的 Ether 能換多少 Dai 是多少
Dai 換 Ether : 使用 swapExactTokensForETH(),作法只差在要把 Dai 轉到當前合約,再同意 UniswapV2Router01 可以從當前合約把 Dai 轉走
兩個做法的第二個參數都是可以自行指定兌換的路徑,此處就直接給 WETH 和 Dai 的地址即可(順序有差)。需要注意的是這個路徑要是動態陣列 dynamic array,而這就是 Vyper 所不支援的功能! 動態陣列跟靜態陣列宣告方式的差別我有註解在程式碼中
此處就先來試試 Dai 換 Ether 吧!和上方一樣,在使用時也要先 approve() 當前合約,當前合約才能轉走使用者的 Dai。
由上方的截圖可以很清楚的看到 Dai 換 Ether 這個動作牽涉到的資金轉移路徑:
Dai: 我的帳戶→當前合約→交易對所在合約
WETH: 交易對所在合約→UniswapV2Router01
Ether: WETH 合約→UniswapV2Router01→我的帳戶
以上的路徑有些人稍微思考後可能會納悶:為什麼上方沒有一筆 WETH 從 UniswapV2Router01 再轉到 WETH 合約的動作呢? 這就是在 Wrapped Ether (WETH) ? 中提到的案例。原因是:把 WETH 還回 WETH 的合約時實際上使用的函示是 withdraw() 而非 transfer(),而在 WETH 合約中發生的只是把使用者 WETH 擁有的額度歸零或減少而已。
接下來就是把 Dai 轉到 Compound 的部分。由於 Compound 不是本文重點,此處只求功能正常,因此比起真正的實作方法當然是簡化許多。
一如往常初始化 Compound 合約的 instance
ETH 換 Dai 後放入 Compound : 將用 ETH 換得的 Dai 的數量,也就是 swapExactETHForTokens() 返回的第二個值,approve() Compound 的合約後就可以用 mint() 匯入了! 要注意的是,ETH 換成 Dai 後的收款地址(第四個參數)是當前合約,才能從此合約轉 Dai 到 Compound
還款給使用者: 用 redeem() 取出 Dai,一如往常同意 UniswapV2Router01 使用 Dai 的權力
之所以說這個程式碼不能真的拿來用是因為:cDai 轉給使用者、讓使用者自己持有是比較安全的作法;即使選擇把 cDai 留在當前合約,以上程式碼檢查 cDai 數量是用當前合約 address(this) 去檢查,實際上應該要去記錄每個使用者所擁有的 cDai 數量
最後附上截圖,可以看一下資金的轉移路徑:
ETH -> WETH -> Dai -> cDai (Compound)
cDai -> Dai -> WETH -> ETH
六. 取得報價作為預言機
若使用 Uniswap v1的報價作為預言機,攻擊者可以利用其演算法造成的滑點來操控價格。為此,Uniswap v2 提供了兩個加入時間權重的合約範例:
ExampleOracleSimple.sol : 簡單版
ExampleSlidingWindowOracle.sol : 複雜版;Sliding Window 在此場景是指透過改變擷取資料(歷史價格)的片段,用該特定期間的價格來做成時間權重,讓使用上更靈活!
本處以簡單版為例。打開 ExampleOracleSimple.sol,由於一些匯入檔案的問題我將 UniswapV2OracleLibrary 也放在這份檔案中。
做法非常簡單:將 UniswapV2Factory、Dai 及 WETH 所在的地址作為部署合約 ExampleOracleSimple 時的輸入值就完成了。部署成功後會有個 24 小時的鎖 Time lock,因為這個預言機是有時間權重的,所以並不是一部署完就能立刻使用。若要體驗更新價格此功能可以使用我部署的兩個,其位置我寫在註解中。
將 WETH 或是 Dai 的地址和要查詢的數量輸入 consult() 就能查到兩虛擬貨幣的價格:
1 ETH 價格約為 97 Dai
1 Dai 價格約為 0.01 ETH
然而,在測試網上我們沒辦法拿著預言機查到的價格套入演算法來核對,因為測試網上的 Uniswap 沒有啟用收費機制,而 k 值要在收費機制啟動時才能被計算,欲知詳情者就麻煩去看官方文件了!
七. 自行兌換 WETH
上方雖然有提到 WETH 在 Uniswap 中的使用原因及場合,但或許有人想試著自己動手將 Ether 換成 WETH、把 WETH 換回 Ether。方法非常簡單,將 WETH.sol 部署到 0xc778417E063141139Fce010982780140Aa0cD5Ab 就能使用,如下圖:
按下綠框中的 At Address 後,使用下方黑框中的 deposit 搭配在中間的黑框輸入所要兌換 Ether 的量,就能成功換到 WETH。同理,圖中未顯示的 withdraw 功能就是讓人輸入 WETH 來換回等量的 Ether。
稍微提一下,如果是第一次兌換,將 WETH 所在的地址輸入 Metamask 就能在錢包中看到自己擁有的 WETH 的數量,如下兩圖:
Voila!
八. 結語
呼,雖然上述操作及程式碼的撰寫其實還蠻簡單的,但畢竟 Uniswap 的功能不少、我個人也希望能將小細節解釋清楚些,因此長度遠超過預期...有看到結尾處的讀者,辛苦了xD 希望大家現在對於 Uniswap v2 的內容跟實作方法都很清楚了!
最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)
田少谷 Shao - Medium
Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
你所不知道的js順序 在 別家門市 Facebook 的精選貼文
「問卷調查總整理&留言問題回覆(文han長)」
調查結果如下:
https://www.surveycake.com/admin/tw/survey/vRwdO/report?v=a4ae6c7cedb39999eebb83cff4eca6bb&layout=P
總之非常謝謝大家在這個週末花時間幫我填的問卷
裡面有非常多的留言我都有一個一個看
你們的留言真的非常暖心給了我非常大的鼓勵
不誇張,我看你們的留言真的有看到哭,真的哭
也有非常認真給我建議的讀者們,真的非常感謝
有很多人都非常關心我的身體狀況
除了本業之外
下班時間還花時間畫圖不要操壞身體
我都感受到了,非常的感動~
裡面還有一些從我剛經營粉專就開始追蹤我的粉絲
看到你們有來特地留言我真的打從心底感謝你們
謝謝你們陪著我一起成長,到現在開始逐漸壯大
你們真的是我背後最大的靠山,有你們在我就安心~
至於留言裡面有一些透露自己也是圖文插畫家的人
有報出名號的,放心!
之後我都會找時間去跟你們接觸的^^
真心覺得這個問卷調查在情人節前後真的很適合
因為你們充滿溫馨的留言就是我最美好的情人節禮物~
______
藉由整理之後
關於之後圖文的主題發展:
看到這樣的比例
感覺是快到半半分
所以為了滿足大家的的需求
這邊可能未來10篇裡面,8-9篇超商,1-2篇角色互動
就算是角色互動,也是盡量不會偏離超商題材太遠
最後再視情況穿插一篇其他服務業日常
有得到一些可以加強的空間:
大多都是得到“想看到更多圖”的回饋XD
這邊小妹我當然也會開始提高畫圖的效率
雖然不能夠一天一則
但是最少可能可以達成一星期兩則
(當然也會排除有時候的一些不確定因素)
再來就是故事的設定以及文字表達
因為我已經離開超商大概有3年多了
所以可能會沒有辦法跟上現在超商的一些即時消息
只能從舊有的一些時事去創作
這邊也可以呼籲現值的店員夥伴們私訊給我一些不一樣的梗喔~
再來就是“錯字”這個部分了
我相信長期關注粉粉專的讀者們都有察覺
雖然有些人覺得這是一種萌點
但我的錯字實在是太多太多了
多到有點想揍自己的衝動
XD
在這邊我也會開始鄭重審視我的圖文以及發文狀態
盡量不要再有錯字出現在圖文裡面
如果還是有出現的話麻煩各位在幫我挑出來一下XD
之後也會多多回應大家的留言
之前沒有回應是因為回應量太多
一個人可能沒有辦法回覆完全部
怕沒有被回覆到的讀者心理會不平衡
所以之後就沒有回了
之後如果有沒有被回覆到的人真的千萬不要傷心
因為我真的每個留言都有看到,只是可能沒時間回覆
另外圖文的呈現方式:
我看到大家基本上都是希望以長條呈現
這樣的話之後的圖文小妹我將採取長條式的短漫呈現
由於每篇漫畫大概的是由5-10格圖去組合
FB上面的畫質會吃得很死
直接上傳會很像一條不知道是什麼的長條圖(?)
所以之後的呈現方式將會是先放一張主題文字的圖
而短漫將會生成一個連結貼在文章敘述最上方
請大家到時候再點擊連結去看大張的長條漫
可能閱讀上會有些不習慣
但為了可以更進步,希望各位可以慢慢來適應
題外話,最近我有發現電腦版FB在觀看圖文的時候
圖片跳轉的順序會亂跳,不知道電腦版讀者有沒有這樣的感覺
為了預防這樣的現象,可以先用手機來做瀏覽
關於未來抽獎禮品:
看大家好像都是希望送貼圖居多
我之後應該也是會做些周邊來送給大家~
周邊的話目前應該會先以壓克力吊飾為主
另外有看到有人建議可以送簽繪版
真心覺得簽繪板也是個好選擇
(突然也想順便練練自己的手繪能力了)
關於未來可以合作的圖文插畫家:
超商怪事多跟米開已經算是很熟的同業合作夥伴
未來要合作當然是沒有問題的!
(當然也是要看他們的意願啦~)
其中有些未來有機會還是會去洽談看看有沒有意願~
不過還是有些插畫家實在是太大咖了
小妹我的勇氣梁靜茹還沒給我
所以太大咖的我可能還沒辦法,小心臟會承受不住QQ
留言問題回覆:
(我挑了大家問得比較多的問題來回答)
___
1 可以常常更新圖文嗎?
因為是花工作之餘的時間來畫,雖然不會一天就更新一則
但是之後至少一星期會更新1-2篇
再請大家多多支持~
___
2 士君可以保持單身嗎?
目前粉專角色除了李顧問之外
全部角色都是設定單身,這點請大家不用擔心^^
___
3 門市的角色會有感情線的配對嗎?
應該是不會有喔,既然他們設定永遠單身
就不會有一些多餘的戀愛線跑出來
主要的故事都還是會以超商生活為主喔
大家都是感情很好的夥伴關係
不過小妹我這邊不會干涉大家的自由,請自行發揮
___
4 作者有考慮露臉嗎?
在FB跟IG都不會露臉喔,因為畢竟是圖文性質嘛
如果好奇的話可以直接看蔡茉莉這個角色
這個角色設定就是直接拿我來創造的
身高生日星座都一樣喔
未來如果有擺攤或是跟讀者有見面機會的話
也許就會公開露面了,不過真的不用那麼好奇
就是一般的女子XDDD
___
5 想知道作者現在的工作是什麼?
我現在從事網頁設計一職
專門寫html跟css以及一些js套件運用
講簡單點就是做市面上大家很常看的一些活動網頁
工作性質關係所以也很常跟後端工程師配合專案
“顏士君”這個角色就是參考身邊的工程師同事創造出來的喔~
___
6 請問願意接非商業委託嗎?
非商業委託可能是要看哪種類型的喔
因為這個粉專主要是超商日常為主,業配型委託可能沒有辦法
但是如果只是私下接簡單的插畫,也許可以幫忙~
不過還是需要看看時間,因為也不一定每次都會有空閒時間
如果有需要都還是可以私訊給我~
___
7 作者有沒有考慮在webtoon連載或是出實體書?
因為能畫圖的時間有限,所以很怕去接觸那種需要長時間連載的平台XD
所以目前還是以休閒系更新粉專為主~
至於實體書的部分,對於實體書可能需要長時間去塞裡面的內容
一想到這樣的繪圖量,真的不確定自己能不能勝任,所以也是先pass~
___
8 不知道怎麼稱呼作者名字?
因為我的英文名字是Molly
請大家直接叫我Molly或是茉莉就可以了
別再叫我大大什麼的,小妹我承擔不起XD
就當是在稱呼朋友那樣就行了~
___
9 作者會繼續出貼圖嗎?
最近第一波剛發售,所以短時間內應該不會再畫第二波
畢竟貼圖也是需要想實用的貼圖梗才可以哈哈
但是未來沒有意外的話應該還是會繼續推出新的貼圖
這點請大家不用擔心~
未來的日子也請各位多多指教!!
你所不知道的js順序 在 你不知道的JavaScript(上卷) 的推薦與評價
殊不知,这些. 复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript 开发人员,如果没有认真学习的话. 也无法真正理解它们。在本书中,我们要直面当前JavaScript ... ... <看更多>
你所不知道的js順序 在 jobbole/awesome-javascript-cn: JavaScript 资源大全中文版 ... 的推薦與評價
JavaScript 资源大全中文版,内容包括:包管理器、加载器、测试框架、运行器、QA、MVC框架和库、 ... 《如果有人让你推荐前端技术书,请让他看这个列表》; 《你不知道 ... ... <看更多>
你所不知道的js順序 在 紀老師程式教學網在Facebook 上。如要連結紀老師程式教學網 的推薦與評價
[免費電子書] 你所不知道的JavaScript,全系列六冊,全文免費線上閱讀! ... JS: ES6 and Beyond 如果您是初學者,建議按照1 --> 6 的順序閱讀即可! ... <看更多>