熟悉 Dockerfile 的讀者一定都熟悉撰寫 Dockerfile 的過程,其中很重要的一個環節是選擇一個 Base Image。
本篇文章的標題列舉的大量的 base image,包含了 alpine, slim, stretch ... 等,對於使用者來說,到底這些 image 差異是什麼,選擇上有什麼需要注意的
舉例來說, 當 image tag 結尾是 -slim 時,通常代表的是完整版本的相反體,也就是 只有安裝滿足應用所需要的依賴性套件而已,其餘用不到的都沒有安裝。
透過這方式整個 image 的大小也會相對比較小,畢竟用不到的軟體都沒有被安裝
作者提到說當使用 slim image 出現無法解釋的問題時,可以先嘗試使用完整版本的 image 先行除錯看看。
至於 Apline 的版本,則是基於 Alpine Linux Project 這個作業系統所發展的版本,其因為簡單且 image size 不大而廣受使用。但是使用上也是有很多要注意的地方,譬如一些相容性問題,作者提到 python 內就有 Debian/Alpine 彼此不相容的地方,導致除錯時會很生氣。
最後作者還提到選擇 image 的一些想法
1. 沒有硬碟空間的考量,要趕快上線使用且沒有時間慢慢測試,就直接使用知名的完整image,如 debian 等
2. 有硬碟空間考量且很明確要使用的工具是什麼,可以考慮使用 -slim 的版本
...等
原文:
https://medium.com/swlh/alpine-slim-stretch-buster-jessie-bullseye-bookworm-what-are-the-differences-in-docker-62171ed4531d
同時也有1部Youtube影片,追蹤數超過2萬的網紅MintCat薄荷貓 game,也在其Youtube影片中提到,#天涯明月刀M #六大職業 #伙伴系統 不知道大家對於武俠小說的世界了解多少呢?這我真的不得不說,薄荷其實是個武俠迷,因為本身自己的本名就跟武俠小說女主角有關,所以從小就很喜歡看各種武俠電視劇和玩各種武俠類遊戲,像是《仙劍奇俠傳》、《軒轅劍》、《古劍奇譚》、《武林群俠傳》、《天命奇御》等等的作品,如...
「project 版本 差異」的推薦目錄:
- 關於project 版本 差異 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於project 版本 差異 在 一頁華爾滋 Let Me Sing You A Waltz Facebook 的最佳貼文
- 關於project 版本 差異 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於project 版本 差異 在 MintCat薄荷貓 game Youtube 的最佳貼文
- 關於project 版本 差異 在 WBS跟工作差異在哪裡? 你知道嗎? - Project Up 專案管理的 ... 的評價
- 關於project 版本 差異 在 第09 天:比對檔案與版本差異 - GitHub 的評價
- 關於project 版本 差異 在 Github基本使用教學– 將你的NVIDIA機器學習專案都記錄起來吧! 的評價
- 關於project 版本 差異 在 Mave教學| Maven 初學者中文教程 的評價
- 關於project 版本 差異 在 一步一步教你用GitHub + SourceTree 做版本控制 - HackMD 的評價
- 關於project 版本 差異 在 [問題] 機戰30主機版本差別 - PTT 熱門文章Hito 的評價
project 版本 差異 在 一頁華爾滋 Let Me Sing You A Waltz Facebook 的最佳貼文
是時候進行每月一度(盡量)的書單分享,二月底三月初有很多精彩的書,類型多樣且內容豐富,排開後覺得各出版社又展現了難得的默契,紛紛在這陣子選擇以白、灰為書封或書脊底色,給人清新、淡雅、明亮之感,賞心悅目,果然是屬於春天的氣息。其中還有好幾本是自然書寫,於無法出國的非常時期來一場躍動於筆尖和想像的紙上之旅確實再合適不過,一起來看看這批可遇而不可求的春季書單:)
⠀⠀⠀⠀⠀
照例以本月選書為起點,這兩年獲獎無數、史上最年輕艾略特獎得獎詩人 Ocean Vuong 首部小說《#此生你我皆短暫燦爛》。承繼同為越南移民、經歷過越戰的作家阮越清,《同情者》思考雙面文化下戰爭所撕裂越南深處的衝突、困境與身分認同,年僅 32 歲的王鷗行,則從受害者心態昇華成倖存者的思維,卸下了憤怒與控訴,愛與慈悲緩緩浮現,藉由一封寫給不識字母親的信,一朵藍色超音波下的盛開玫瑰,極其詩意地將回憶錄式文體內化成傷口與生命。「小狗」年幼隨家人從越南移居美國,面對陌生的土地和陌生的語言,母親教導他維持低調隱形,以保安全。十多年過去,已成為作家的他某天被母親問到:「作家是幹什麼的?」於是他決定為不識字的母親寫一封信,信中款款回溯他與母親以及外婆三人相依為命的童年往事,他出生前的家族史,以及,他個人祕密的情感。
⠀⠀⠀⠀⠀
以及,掛名推薦了符合新世代都會年輕人理想生活方式的一本書《#兩個女人住一起:非關愛情的同居時代》,這也是我未來期許自己的生活藍圖。獨居資歷超過 20 年的好友漸漸厭倦一個人住的孤單與不安全感,偶然看上一間房子,便決定一起買下,展開同居生活。而後,兩個好友才真正看見彼此的巨大差異,她們在爭吵磨合與長短互補間,藉由與對方的差異,漸漸更懂得自己。一起吃飯、運動、喝酒、當貓奴,不用奉養對方父母,不用成為誰家的媳婦,生病互相照顧、困難互相幫助。兩個女人住一起,找到了單身的輕盈感與有人相伴的溫暖,能夠同時並存的美妙。傳統婚姻制度和家庭觀念早已跟不上生活樣貌變化之快速,「多元成家」代表的不只是性別平權,更包括了突破以婚姻或血緣結合的傳統家庭形式。金荷娜、黃善宇正是掙脫了傳統價值束縛,讓我們看見「家庭組成不只有一種方式」,隨著她們的同居生活,重新找出各自獨立、又能平等付出的幸福生活新藍圖。
⠀⠀⠀⠀⠀
日前分享過台美幾乎同步上市的石黑一雄新書《#克拉拉與太陽》,被盛讚是探索愛、孤寂、生死與人性的偉大著作。過去同樣有著科幻色彩的《別讓我走》,是其小說中個人數一數二喜歡的,據說這次在探索人類與科技的關係中深度延續了故事的獨特性與開創性,不但發人深省,也被許多外媒評為至今最喜歡的石黑一雄作品。克拉拉是最尖端的人工智慧,具敏銳知覺與情感,她的任務是作為孩子的良師益友,存在的理由是盡心盡命地陪伴與愛人。克拉拉對萬千世界充滿好奇,不論是前一刻嘻笑走向櫥窗、下一刻卻臉露哀傷的孩子,還是街角向人乞討的遊民,甚至是奔跑過街急著擁抱彼此的戀人們,她亟欲理解人的喜怒哀樂和離合悲歡。人心的種種執念與反覆無常,生命的轉瞬榮枯,是一條暗潮洶湧、在繼續與放手之間拉扯的旅程。當陪伴是一場精心安排的魔鬼交易,當智能進展引來無情的反挫,克拉拉被賦予如太陽般恆久的希望與愛,是否恰恰凸顯人的冷酷善變?
⠀⠀⠀⠀⠀
接著,這兩本書要一起介紹,已經讀完的 Erin Morgenstern《無星之海》與目前讀到欲罷不能的森見登美彥《熱帶》,兩部小說都以書中書的概念開啟難以置信的一趟奇幻旅程。《#無星之海》是《夜行馬戲團》作者睽違八年的魔幻小說,薩克里在圖書館發現一本無名之書,沒有作者、出版資訊,甚至連建檔紀錄也不存在,開頭只有一個美麗的標題,但更多是空白頁以及被撕毀的痕跡。這本書雖然詭異,卻讓薩克里情不自禁地一頁頁翻讀下去。一段海盜與少女的浪漫故事,一座失落的城市與地下圖書館,一場華麗繁複的考驗與驚心動魄的冒險等,這些片段零星破碎,卻讓人深深著迷,但隨後薩克里竟讀到「自己」的故事 —— 他的童年,歷歷如繪出現在書裡。一段幾乎遺忘的久遠記憶瞬間湧現,年幼的薩克里當初沒有勇氣將「門」打開,如今再度現身,他不知道「門」一直都在等待,等著指引他前往神秘浩瀚的「無星之海」。《#熱帶》同樣耗時八年,講述一本讀到一半便會自動消失的小說。在神祕的「沉默讀書會」上,出現有著謎般警語的奇書《熱帶》,但能將這本書從頭讀完的人並不存在,而這群曾經有幸捧起卻從未完食的讀者為了解開謎團而行動,從東京一隅開展的冒險,急速轉向京都馳去,再潛入滿州的深夜。京都才子小說家森見登美彥構思多年的新作,讓人從頭開始就被故事強力拉走,將敘事與追尋謎團結合,親手打造連作者自己都逃脫不出的故事真相。
⠀⠀⠀⠀⠀
再者,還有以下三部作品,先是上周冒著驟雨參加的發表會新書《#神在的地方:一個與雪同行的夏天》,長年在音樂裡馳騁的陳德政轉向眺望山脈,「K2 Project」是文化評論家詹偉雄為應援台灣登山家呂忠翰、張元植攀登世界第二高峰 K2,在 2019 年春天發起的募資與認識高山計畫,獲得熱烈的迴響。同年夏天,陳德政成為隨行報導者,跟著兩人飛到巴基斯坦,歷經顛簸,在氧氣濃度只剩海平面一半、日夜溫差五十度的基地營生活了一個月,目睹朝八千公尺「死亡地帶」奮進的身影,親見那些被刻在冰河裡的名字,體會到疑惑與勇氣如何共存,感受攀登者間命繫一繩的人情。而後,將這趟跨越自身極限的經歷、對國際登山家與雪巴民族的近距離觀察、人類從探索荒野到征服高峰的過程,以及自己如何從一個城市青年蛻變為被自然淬鍊過的大人,在浩瀚的山谷中醒悟到神的力量,精采揉合,寫成這本動人的書。其次為林奇伯的《#極地紀:穿越象徵的森林》,藉由他在芬蘭駐村時的所思所感,開發出嶄新的文學象限。描述旅人愛瑞克在芬蘭原野的一段奇遇,書名典出《浮生六記》的當代作品,與其說是異國題材的書寫,更像是文學、視覺藝術、行為藝術三種手段交互介入下的堆疊與辯證。《極地紀》在形式上採用紀實散文遊記文體,由客觀外在與意識內在同時前行;結構上,則借遊記之形,建構「傳奇」式文本,遊走散文、小說與現代詩的邊界,實踐「生活即創作、藝術即日常」的哲學方法論,發展出全新風格。
⠀⠀⠀⠀⠀
第三本則為《貝加爾湖隱居札記》作者 Sylvain Tesson 新作《#在雪豹峽谷中等待:這世界需要蹲點靜候,我去青藏高原拍雪豹》,為了追尋最後的雪豹,作者和一對野生動物攝影師及野生動物紀錄片導演情侶,以及一名哲學家兼攝影助理,在攝氏零下三十度、海拔五千公尺高的青藏荒原上,展開一段拍攝雪豹 —— 這位世界古老住客的奇異之旅。徒步行進在古老、卻已遭人類拓墾得皮開肉綻的圖博中,一行人在群山中野獸的注視下前進。他們走入犛牛谷、狼之谷,身上沾染羚羊捲起的煙雲,聽見圖博屠殺的倖存者西藏野驢狂奔的嘶吼。待在零下三十度的帳篷,縮在只露出頭的睡袋裡聽狼在唱歌;凝視被人為掏空、毫無生物蹤跡的峰頂;也在輾踏冰川的吉普車上呼吸著火山渣。在山間,獸的聲音如琴瑟和鳴,這群浪遊的孤獨者的心靈也彷彿更加清明起來。終於,他們來到湄公河畔 —— 雪豹的王國一行人埋伏等待在每一座小山谷前,等待雪豹現身,並透過野生動物攝影家之眼,積累了數百幀如夢似幻,由自然賜與的美好禮物。牠是一個轉瞬卻永恆的夢想,讓人們在虛耗多年歲月之後,回想起那些曾經深愛卻終將失去的事物。
⠀⠀⠀⠀⠀
重量級文學翻譯小說《#消失的字母J》也於近期上市,布克獎小說家 Howard Jacobson 繼《芬克勒問題》後再度省思猶太屠殺議題。那是一個人們不再談論過去,也不再談論仇恨的世界。歷史被刪去、姓氏被改寫,藝術只剩追求和諧一途,「現下」公司控管著公眾情緒,人們互相監視,卻不知為何而監視,法律沒有明確規定,但「不建議」持有物品卻不少,包括爵士樂、華格納的音樂、現代主義藝術、大部分書籍、歷史文物、家族照片或信件,每戶人家只能擁有一件超過百年的物品。此外,若要前往首都,禁止穿宛如喪服的黑色衣服。孤身一人的凱文出生於位處偏僻的魯本港,對家族過往一無所知,不同於周遭人們的暴躁,怯懦又容易焦慮的他總是與旁人格格不入。在壓抑氛圍中,暴力事件日益頻繁,逼得當局不得不嚴加審視國家內部一觸即發的緊張狀態。就在此時,凱文遇見了從北方來的艾琳,很快地相戀,但不知為何,艾琳的室友伊茲似乎非常關切這段感情的走向,艾琳說:「這裡好像到處都有眼睛,像在等你犯錯。」作者以令人膽戰心驚的筆法,描述一個大屠殺後的末世,人們高唱和平、有口無心地道歉,卻醞釀出一股沉默而強烈的反動情緒。隨著只在私下提起的「那件事」慢慢浮出水面,故事的不安感升到最高點。本書直面歷史與人性,展開了族群認同、差異與仇恨的複雜辯證,是小說家致當代的一部警告之書。
⠀⠀⠀⠀⠀
普立茲文學獎得主 Anne Tyler 去年的小說《#麥卡的難題》終於推出繁體中文版本。故事敘述近似繭居者的麥卡,總把生活畫在一個框框裡,雖有女友,但鮮少與人來往,每天作息固定,深夜開車也恪守規則。他期待生活沒有差錯,沒有失誤,不用修正,腦中永遠有個「你做得好!」的聲音,他的人生完美。直到有天,陌生大男孩出現在家門口,自稱是他兒子,像是麥卡原本密不透風的安全堡壘,裂開一個細縫。當代最能溫柔洞悉世情的小說家安泰勒,以哀情以同理,織就了一個漣漪般,在讀者心上踱步的故事,精準調度看似不起眼、極為平凡的日常,又能節制地不涉入煽情的震央;細膩以緩筆滴釀出一幅貼近我們每個人的人間群像:有種種難以對他人訴說的心事大海,生命歷程切片層疊著暗影與傷疤,渴求愛但阻絕愛,付出愛但常荒腔走板,希冀被愛但拙於接收。愛,簡單的一字,卻是艱難的一事。
⠀⠀⠀⠀⠀
右邊數來第四本沒有印上名稱的,是第 162 屆直木賞得主《#熱源》,出生於樺太島(薩哈林島)的阿伊努人亞尤馬涅克夫被開拓使奪走故鄉,被迫集體遷移,之後又因天花和霍亂而失去了妻子和眾多朋友,最後他改名為山邊安之助,立志再次回到樺太島。布羅尼斯瓦夫.畢蘇斯基出生於立陶宛,他因俄羅斯徹底的同化政策而被禁止使用母語波蘭語,後來還被牽扯上暗殺沙皇之事,被流放到樺太島做苦役。被迫當日本人的阿伊努人,以及被迫當俄羅斯人的波蘭人,遭受其他文明的壓迫、對自己的身分認同感到動搖的兩人在樺太島遇見了彼此,也找到了自己真正想要保護和繼承的東西。此書鮮明地描寫出樺太島嚴苛的環境和阿伊努族的風俗,超越國家、民族、思想,展現出人與人共同生活的模樣。另外,也相當想讀讀這本被宮部美幸盛讚的小說,黑澤泉水《#我適合當人嗎?》,一個平凡的早晨,美晴打開房門,心愛的兒子變成一條蟲,她無法形容那是什麼生物,也辨識不出兒子的特徵。原來,全日本正流行「異形性突變症候群」,有的孩子變成植物,有的變成魚,有的變成狗,一旦得了這種病,在法律上只能認定「死亡」,所有家人都勸美晴將這隻怪物丟到垃圾場,只有她堅信那雙眼睛。有一天,她發現自己不是唯一一個不願放棄的母親,還有一群人躲避世俗眼光,獨力扶養仍視為親愛兒女的「怪物」,他們組成社團,共同期盼著心愛的孩子能有一天變回人形,而這些飽受社會責難「不適合當人」的孩子,該如何在「人的世界」繼續活下去?
⠀⠀⠀⠀⠀
《#貓小說集:日本文豪筆下的浮世貓態》同為一眼便吸引我目光的作品,橫跨日本明治、大正、昭和年代,收錄夏目漱石、宮澤賢治、小泉八雲、梶井基次郎、太宰治、谷崎潤一郎、芥川龍之介等十五位日本名家生動描寫浮世貓態的短篇小說及散文傑作。從描寫對日漸衰弱的家貓的愛情、駭人的怪談與將貓咪擬人化的童話詩作,也有改編自心理學真實案例的殺人妄想,還有與野貓共度的窮困生活,以及把貓作為媒介的男女微妙情愫。各篇貓小說中有笑有淚、或新奇或毛骨悚然,文豪之筆情感豐沛、栩栩如生,愈讀愈令人沉浸在貓那令人眼冒愛心、既可愛又傲嬌的形象,同時能深刻感受到這群貓派文豪百般真情的貓奴經。此次書單,更包括每年必收藏的《#九歌109年小說選》與《#九歌109年散文選》,由知名作家張亦絢與黃麗群擔任主編,編選本年度文壇值得一讀再讀的多篇代表性作品。
⠀⠀⠀⠀⠀
唯一購入的報導文學為《#性謊言吹哨者:紐約時報記者揭發好萊塢史上最大規模性騷擾案,引爆 # MeToo 運動的新聞內幕直擊》,歷時三年的追蹤調查全紀錄,紐約時報記者揭露對川普、美國著名製片人溫斯坦、美國大法官卡瓦諾,以及隱瞞在各行各業許多角落中的性騷擾與指控。國立臺灣大學法律學系教授陳昭如表示,藉由兩位關鍵記者在本書的敘事,我們得以窺見女人建立可信度的艱難,深度調查報導又如何幫助建立女人的可信度。本書也呈現#MeToo運動扳倒有權男人的成功與挫敗:好萊塢製片巨人倒下,美國聯邦最高法院大法官被提名人在爭議中上任,已婚白人女教授Christine Blasey Ford挺身作證仍未能阻止保守派呵護養成的白人男性菁英就位掌握司法大權。這說明了法律的雙面性:既是受害者的武器,也是有權者的保護傘。請閱讀此書,讓我們一起思考媒體、法律與社會運動共行創造改變的可能。
⠀⠀⠀⠀⠀
最後兩本是《#天橋上的魔術師影集創作全記錄》,透過多篇訪談、美術設計、特效解說,以及原作者作者吳明益最新專文〈一把不明的鑰匙〉,為公視耗時五年、斥資二億的旗艦級影集《天橋上的魔術師》深度解析,帶領觀眾走入幕後,進一步領略影像中「八零年代台灣眾生相」的魅力從何而來,並對台灣影視人才豐沛的創作動能有更深的感動與共鳴。世界級好評克蘇魯神話改編漫畫神作《#洛夫克拉夫特傑作集瘋狂山脈》亦值得收藏,20 世紀最具影響力的古典恐怖小說體系,眾多恐怖電影、遊戲、文學作品永不枯竭的靈感根源 —— 克蘇魯神話創始者、恐怖小說之王 H.P. 洛夫克拉夫特集「宇宙恐怖」創作觀之大成,創作生涯代表作《瘋狂山脈》,並由日本當代洛夫克拉夫特作品改編漫畫第一人田邊剛,以電影語言精彩轉譯洛夫克拉夫特筆下「無以名狀的恐怖」,完成奧斯卡金獎導演吉勒摩戴托羅的終生想望,也帶領我們從前所未有的角度進入克蘇魯神話的世界。
⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀
(以上文字節錄自各出版社書介。)
project 版本 差異 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] 類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
有鑒於個人近期關注的 Uniswap 及 Curve 皆用 Vyper 實作,索性瀏覽了官方文件並嘗試一些開發工具,希望此文能減少一些讀者初嘗 Vyper 會遇到的麻煩!
Vyper and Solidity
Outline
一. Vyper 極簡介二. 與 Solidity 語法差異三. 開發、開發環境設置 1. 語法高亮 2. 本地 Vyper compiler 安裝 3. 使用 Truffle 操作 ERC20 - 安裝 Truffle - 發幣 - 寫個簡易賣幣合約四. 已知 Remix 問題 五. 結語
一. Vyper 極簡介
Vyper 是除 Solidity 外,以太坊上的另一智能合約 (Smart contract) 語言。其語法和 Python 相近,但畢竟也是寫合約的語言,邏輯差異不大,所以若熟悉 Solidity 應該不難理解用 Vyper 寫出的合約!
Vyper 主要被設計和 Solidity 的區別是安全性及可讀性,這部分會在下一段落及後方的實作中舉例說明。
二. 與 Solidity 語法差異
Vyper 與 Solidity 的差異有許多,在本段只就個人認為感受較深的三點進行說明,其他差異只進行翻譯,有興趣的讀者可以到官方文件詳細了解:https://vyper.readthedocs.io/en/latest/index.html
1. 沒有 modifier
Solidity 常見的 onlyOwner() modifier; 由於 gist 沒有 Solidity 的語法高亮,故截圖
在 Vyper 中單純用 assert 及 assert_modifiable 來進行條件檢查,兩者差別為若要檢查函數執行後的返還值,要用後者,如下圖:
Vyper 寫法
2. 沒有 Class inheritance 繼承
繼承是物件導向程式設計 (OOP) 的核心概念,但各種繼承關係有時候確實很複雜。Vyper 沒有繼承,這無疑大幅地增加了程式可讀性及安全性,以及降低審計程式碼的難度。在此提供一個例子供不熟悉 OOP 複雜之處的讀者有個概念:
source: https://consensys.github.io/smart-contract-best-practices/recommendations/#multiple-inheritance-caution
在上例中,contract A 的 fee 值 (因繼承自 contract B 和 C,故有 fee 一值) 是 5、a 值也是 5 (因繼承自 contract Final,故有 a 一值)。原因是 A 先繼承 B 再繼承 C,因此 contract A 中的 setFee() 是使用了 contract C 的 setFee(),而 a 值是由於 C(5),這代表 contract C 的 constructor (舊版本中即 function C(),函式名稱同 contract 名稱) 被傳入的值為 5。
稍微延伸一下以上概念,將 contract A 改成:contract A is C, B。如此一來,a 值還有 fee 值都會是 3,因為這次 A 先繼承 C 再繼承 B,因此最終吃到的值是 contract B 的。
以上就是 OOP 繼承的複雜之處的簡單範例說明,應該能稍微感受到爲什麼除去繼承後會大幅提高可讀性及安全性,畢竟即使是熟悉 OOP 的人有時頭腦一混亂也會開始懷疑自己寫的程式碼繼承結構是否正確 …
3. 沒有 dynamic array 動態陣列
這應該是目前 Vyper 設計中爭議最大的部分。沒有動態陣列代表在宣告陣列時需要宣告其長度,也就是說 Solidity 中的寫法 uint[], bool[] 等等,這些是不會出現在 Vyper 的。在 Vyper 中只能出現諸如:
# Vyper 的變數宣告方式為 變數名稱: 存取範圍(變數型態(若為陣列給長度))
values: uint256[10]participants: public(address[20])
可以看到上方的 uint256 及 address 兩陣列皆需要宣告長度,不能不宣告而使其動態地配置空間。
沒有動態陣列固然可以確保執行運算的範圍、次數,但一來動態陣列真的很方便、二來在 Solidity 有此功能而 Vyper 卻沒有的情況下可能會造成麻煩,詳見此一討論串:點我。
4. 沒有 inline assembly,程式碼中不會有組合語言
5. 沒有 function overloading,函式不會因傳入的參數數目不同而結果不同
6. 沒有 operator overloading,運算符號不會有不同於預設的自定義功能
7. 沒有無限迴圈,可免於 gas limit attack
8. 十進位定點數 decimal fixed point 而非二進位 (binary) 定點數,詳見:點我
三. 開發、開發環境設置
結論先講
開發 Vyper 的最佳姿勢目前個人認為是在本地裝上 Vyper compiler、用 Truffle 部署,並在撰寫時將檔名後加上 .py 就能有 Python 的語法高亮👌
1. 語法高亮 (syntax highlighting)
有語法高亮絕對是舒服地寫程式的第一步。
Remix 有 Vyper 的語法高亮,但一來個人目前不推薦使用 Remix 來撰寫 Vyper,原因詳見下方 4. 已知 Remix 問題;二來 Remix 的語法高亮其實也沒有很清楚,因此個人推薦:在本地開發,將檔名後加上 .py 就會有 Python 的語法高亮。
2. 本地 Vyper compiler 安裝
照官方說明使用 Python 的虛擬環境 virtualenv:
source: https://vyper.readthedocs.io/en/latest/installing-vyper.html#installing-vyper
簡單兩點提醒:
如果中間那行報錯但確實已經有 Python,則可能是版本問題。依照自己電腦上的版本改成相應的即可,ex: python3.6 改成 python3
進入虛擬環境後(檔案路徑前方應有 vyper-venv 的提示),使用此指令: vyper {檔案名稱}.vy,即可編譯 .vy 檔;使用完畢後輸入 deactivate 即可退出
3. 使用 Truffle 操作 ERC20
安裝 Truffle
Truffle 雖有冗餘的 migration 但也別無他法,畢竟 Remix 目前仍不完善 :(
下載流程可以照官方文件,使用 vyper-example:
source: https://github.com/truffle-box/vyper-example-box
由於我們會接上測試網 Ropsten,因此還要下載 truffle-hdwallet-provider:
source: https://github.com/trufflesuite/truffle-hdwallet-provider
接者就可以開始使用 Vyper 寫合約了!
發幣
由於 Vyper 的官方文件中已經有許多優質範例,因此本文希望來點不一樣但大家卻又很熟悉的…以 ERC20 為例(這千篇一律的主題xD):
用 Curve 的 ERC20 程式碼為範本,發一個幣(又要發…)
寫一個簡易賣幣合約
選擇這個主題一方面畢竟 ERC20 是以太坊的最大宗應用之一,二來有興趣的讀者可以透過讀 ERC20 的程式碼來熟悉 Vyper,並在看過本文的流程後對於用 Vyper+Truffle 來操作 ERC20 有完整的概念!
好的,首先複製一份 Curve 的 ERC20 程式碼(看到就順手拿來用),並複製到 Truffle 所在路徑的 contracts 資料夾中:https://github.com/curvefi/curve-contract/blob/pool_compound/vyper/ERC20.vy
由於第一點希望著重在跑一次流程,因此不改動合約的程式碼。
將 ERC20.vy 複製到 contracts 資料夾中後,到 migrations 資料夾開啟 2_deploy_contracts.js,首先將 require() 中的參數改為 ERC20.vy 的檔名 ERC20,再來依照自己喜好決定幣的名稱、代號、小數點位數及發行總量,輸入於 deployer.deploy() 中。
接著,為了和測試網 Ropsten 互動,需要將以下程式碼寫入 truffle-config.js。
第二行的 privateKeys 是帳號的私鑰。以下實作需要兩個帳號來操作,因此請從錢包匯入兩組私鑰(並非助憶詞)。
在第 13 行中 HDWalletProvider 此函式的第三個參數代表要用第幾個帳號最為預設帳號(部署合約等),第四個函數代表總共匯入幾組帳號。而第二個參數則是需要至 Infura 申請一個 project 來得到串接 Ropsten 的連結。這兩步驟並非本文重點,因此不詳細解說步驟,Google 搜尋關鍵字應該就會找到方法!
接著,就可以輸入以下指令來將代幣發佈到 Ropsten:
truffle deploy --network ropsten
有進入虛擬環境才可以編譯 .vy 檔,若忘記就會收到如下的錯誤訊息:
記得打開虛擬環境才能編譯 .vy 檔
成功後就可以在 contract address 中看到代幣發佈的位置,加入到 Metamask 中就可以看到。本文的例子是維尼代幣 Winnie the Coin, WTC ;)
contract address 便是 ERC20 的所在
Winnie the Coin, WTC
好了,到此測試網上又多了一個測試用的垃圾廢幣。
寫個簡易賣幣合約
賣幣合約中我想要簡單有兩個功能就好:付錢買幣 、結束銷售,以下就是程式碼。買幣的部分就不寫太詳細,固定價格為 0.01 Ether 可以買 500 代幣。
簡單說明幾點:
Solidity 的 constructor() 在 Vyper 中為 Python 風的 __init__():
函式的屬性(public, private, payable 等等)放在函式上方,與 Python 的修飾器位置相同
總之寫法跟 Python 很像,次方也一樣是用兩次乘法代表:**
變數前加上 self 代表是當前合約的變數/全域變數,因此非常容易與函式中的變數/區域變數做區隔
由於已經在第一行匯入了 ERC20 那份合約,因此透過將地址傳入合約當參數,就可以呼叫在該地址的合約:ERC20(self.tokenAddress) 。並且,可以將部署的合約存成一個變數 erc20 較方便
寫完合約後一樣要更改 migrations 資料夾中的 2_deploy_contracts.js 如下,將代幣所在的地址作為參數輸入。
由於先前已經部署過一次了,因此要重置才能再部署第二次,輸入以下指令:
truffle deploy --reset --network ropsten
部署成功之後就要來試著買幣啦!輸入以下來進入 console:
truffle console --network ropsten
成功進入後應該會看到 truffle(ropsten)> 的字樣。接著,首先取得部署的兩合約,並查看是否有返回合約資訊:
# ERC20 及 SellToken 是先前在 2_deploy_contracts.js 中的變數名稱,代表被部署的合約
let instance1 = await ERC20.deployed()instance1 # 印出 instance1 的資訊
let instance2 = await SellToken.deployed()instance2 # 印出 instance2 的資訊
再來,為了讓 SellToken 可以賣幣,要先用 ERC20 的合約匯幣到 SellToken 的合約。因此,輸入以下指令:
instance1.transfer(instance2.address, 10000)
# 這裡數字只要設為 > 500 就可以
接著,我們要利用第二個帳號去買幣(第一個帳號為預設帳號,因此就是代幣擁有者)。將帳號的資訊存入變數 accounts 中,再指定送出交易的帳號是第二個帳號。由於我個人匯入私鑰的順序是將第一個帳號存在 truffle-config.js 的 privateKeys[0]、第二個帳號存在 privateKeys[1],因此第二個帳號的地址就會在 accounts[1] 的位置:
let accounts = await web3.eth.getAccounts()
instance2.buyToken({from: accounts[1], value: 10000000000000000})
# value 為 10^16 是因為在 SellToken 的 buyToken 函式中買一次要 0.01 Ether, 即為 10^16 wei
然後應該就會在自己的第二個帳號中看到匯入的幣了~
最後,由於合約中結束銷售就是一個自殺 selfdestruct 函式,因此可以呼叫看看,第一個帳戶錢包中的錢應該會增加,因為第二個帳戶有付款買幣;並且,可以到 Ropsten 上瀏覽,應該能看到相關提示:
中間 contract 的右上角有 Self Destruct 的樣式
四. 已知 Remix 問題
Remix 目前有兩個版本,只有新版有 Vyper 的編譯器。在此整理目前遇到的問題,如果有人也遇到可以對照一下本處,可以省去很多自我懷疑xD
不會報錯
Remix 的編譯結果有時會是錯的、和本地端編譯出來的結果不同
舉上方的 SellToken 合約為例,將其複製到 Remix 中使用左邊的 Remote Compiler 有錯,但又不報錯 q_q (ERC20 的合約有在同檔案目錄)
左方有紅色三角形,代表編譯失敗,但沒有報錯訊息可以看…
getter function 竟然要花錢
用 Solidity 寫的合約,查詢 public 變數的值應該是不用消耗 gas 的,但不知何故查詢 Vyper 寫的合約的 public 變數卻要消耗 gas,如下圖…
可以看到中下方有 22026 gas 的消耗
Local compiler 無法使用
圖中的 Local Compiler 此選項,個人雖照官方文件執行 vyper-serve 但卻失敗,因此若有讀者成功希望能留個言不吝分享!
五. 結語
Vyper 作為一個比 Solidity 更新的合約語言,在寫程式碼的方面沒什麼問題,但相關的開發工具、學習資源等都遠不及 Solidity。
Vyper 主打的兩個特色:可讀性的部分相信看完上面的讀者應該已經有些感覺;安全性…小白如作者我倒是沒有感受到顯著的不同。況且 Solidity 已經發展許久,很多錯誤的寫法、知名的安全漏洞大家應該也很熟悉了,還有 Openzeppelin 提供安全合約寫法的範本,因此有待以後高人解說安全性是否真的是 Vyper 較好。
有興趣者可以查看 Vyper 的安全報告:點我,大意是目前 Vyper 的編譯器仍有許多問題待改進! (感謝 Chih-Cheng Liang 的提供)
本文對 Vyper 的介紹及其與 Solidity 的差異只講了個大概,欲知更詳細的介紹還是要麻煩讀者前往官方文件了:https://vyper.readthedocs.io/en/latest/index.html
最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)
田少谷 Shao - Medium
類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
project 版本 差異 在 MintCat薄荷貓 game Youtube 的最佳貼文
#天涯明月刀M #六大職業 #伙伴系統
不知道大家對於武俠小說的世界了解多少呢?這我真的不得不說,薄荷其實是個武俠迷,因為本身自己的本名就跟武俠小說女主角有關,所以從小就很喜歡看各種武俠電視劇和玩各種武俠類遊戲,像是《仙劍奇俠傳》、《軒轅劍》、《古劍奇譚》、《武林群俠傳》、《天命奇御》等等的作品,如果提到最喜歡的武俠小說家,那當然就是「金庸」跟「古龍」啦!
說到古龍的小說作品真的也是非常多,像是《小李飛刀》、《絕代雙驕》、《楚留香》、《流星蝴蝶劍》、《蕭十一郎》等等都是,而這次要跟大家介紹的則是古龍比較晚期的作品,也就是《天涯明月刀》,《天涯明月刀》其實我還有看過2012年的電視劇版本就是了
這款由騰訊所製作,GARENA代理的武俠MMORPG手機遊戲《天涯明月刀M》就改編自古龍的《天涯明月刀》
------------------------------------------------------------------------------------------
MintCat薄荷貓 game(手機遊戲):https://www.youtube.com/c/Mintcat99
薄荷貓正在玩(遊戲時事和新聞):https://reurl.cc/l0Gm2Y
薄荷草上有隻貓(遊戲紀錄):https://reurl.cc/8ydERX
【直播Live】
❤開台時間以DC公告為主
❤歐付寶斗內:https://reurl.cc/X61Daa
------------------------------------------------------------------------------------------
Discord:https://discord.gg/k56RfcZ
薄荷貓粉絲專頁:https://www.facebook.com/Mintcat99
薄荷貓Instagram:https://www.instagram.com/mintcat1113
工商合作來信邀約:mintcat1113@gmail.com
------------------------------------------------------------------------------------------
期待遊戲上架嗎?盤點歷史上那些維修爆久的遊戲
https://youtu.be/wTtvFfCK0dA
2021年也太多新手機遊戲了吧!幾款薄荷自己私心推薦 全球尚未推出的手機遊戲
https://youtu.be/Pn5ZVcY9xrk
負評滿天飛?《Cyberpunk 2077》的缺點到底有哪些?到底值不值得購買?
https://youtu.be/hRd8VO-VHJE
超級致敬?遊戲風格抄襲《返校》?還以為返校出續作呢~
https://youtu.be/ZkRanM1w3SA
像素風格遊戲正夯?推薦2020年像素風格手機遊戲
https://youtu.be/jTdkZ0jQ5JI
------------------------------------------------------------------------------------------
#最新 #手遊 #轉蛋 #介紹 #試玩 #攻略 #動畫 #下載 #電玩 #遊戲 #事前登錄 #無課 #新手 #首抽 #新手首抽 #推薦 #刷首抽 #SSR #角色 #卡池 #2021手遊 #無課玩家 #課長 #玩法 #基本操作 #MMO #RPG #ARPG #MMORPG #商城 #坐騎 #事前登入 #巴哈
![post-title](https://i.ytimg.com/vi/qlnnLVhT9dk/hqdefault.jpg)
project 版本 差異 在 第09 天:比對檔案與版本差異 - GitHub 的推薦與評價
我們透過以下指令快速建立一個擁有兩個檔案與兩個版本變更紀錄的Git 儲存庫與工作 ... 在Git 中比對兩個版本之間的差異,通常會用 git diff 命令,我們先執行一個簡單 ... ... <看更多>
project 版本 差異 在 Github基本使用教學– 將你的NVIDIA機器學習專案都記錄起來吧! 的推薦與評價
所以我們通常在檔案名稱上就會給予版本、功能、時間之類的,讓檔案第一眼就能看出來版本的差異:. 那如果是專案呢?眾多程式碼不可能一個一個地去改名, ... ... <看更多>
project 版本 差異 在 WBS跟工作差異在哪裡? 你知道嗎? - Project Up 專案管理的 ... 的推薦與評價
To connect with Project Up 專案管理的生活思維, join Facebook today. ... 記得之前看過一個類似這樣的故事(實際版本找不到了,我就自己. ... <看更多>