「又多了一天的自由」
2019年9月30日的終審法院門外,混亂之中有人大聲問:「有線O唔OK?」原來這是一個緊急會見記者的場合,傳媒裙拉褲甩趕到,那時還未發生「大型請辭」的有線新聞台,咪牌造型還是那個印了紅色標誌的藍色球狀海綿,有一剎,寶藍色的海綿咪在畫面揮動着,然後,攝影師的畫面不時調整,按照說話的主角而把畫框放大縮小。
首先是李卓人說話:「雖然民陣的集會遊行上訴被否決,但香港人有權遊行,那是基本法和人權法賦予我們的權利……」李卓人是高個子,鏡頭對着他肩部以上,旁邊較矮小的何俊仁只剩下頭部,下巴也被削了,而瘦削的陳皓桓則被擋去了大半塊臉,比李卓人年長一歲的梁國雄,雖然頭髮最長,但他由黑髮抗爭到銀髮,髮絲已經一片灰白。
英文名為Figo的25歲陳皓桓是今次遊行和集會的申請者,他說:「作為申請人,清楚了解我有機會被捕,但我選擇了公民抗命。同行的市民要明白當中的法律風險。」李卓人用英文補充道:「面對這個不理性的政府,無人知道結果會如何,我有準備面對法律後果。」何俊仁亦用英文表示,知道有機會被拘捕及審訊。
這一條拍攝於逾一年半之前的新聞片段,今日在灣仔區域法院裡播放。當日一起肩並肩見記者的4人,正在面對他們的法律後果,同被控以「煽惑他人參與未經批准集結」。然而當日一起並肩站立,今日在法庭裡卻要分開入座。李卓人、長毛因為8.18等案件罪成服刑中,兩人被安排在犯人欄裡;而何俊仁雖然8.18罪成但獲緩刑,他和陳皓桓則在庭警包圍下坐在旁聽席最前排。
***
此案還有另外6名被告,他們於10月1日當天,於遊行隊頭,要不手持橫額,叫喊口號等,10人包括有多罪在身的黎智英、正服刑的何秀蘭、社民連吳文遠,和泛民領袖單仲楷、蔡耀昌、楊森。10人的共同控罪是「組織而參與未經批准集結」。
案件在區域法院開審,10人已預先表示會認罪。平日如此觸目案件,均會安排到空間較大的西九龍法院審理,然而這天卻擠在較陳舊的區院,即使安排了直播法庭,由於座位有限,一票難求。有支持者說,早上七時來到拿票,也有人帶了孩子來,孩子身穿胸口寫着「無罪」二字的T恤。
也有中年婦人,穿梭不同法庭,在樓上看了一眼年輕被告被控緃火的案件,又搭電梯到樓下看泛民領袖被審訊。婦人向友人說:「求你借票給我入去,我只想看一眼,看一眼陳皓桓就可以了。」旁聽票有限,有心人領了票都輪流入去給自己關心的人打個眼色。
區院設施較舊,直播的聲效較差,法官胡雅文以英文審理,她也是早前8.18案的主審法官。控方大狀以英語讀出控罪書內容,與中文翻譯員的聲音重疊,又中又英,兩把女聲炒埋一碟,聽得記者腦袋混亂。
控罪指,2019年自6月起,遊行活動中發生暴力事件,警民衝突頻仍。民陣申請於10月1日集會和遊行,警方作出反對。而其後的「控罪」,都是新聞訪問、直播內容、臉書公眾帖。沒有公眾並不知道的新鮮內容。
控罪以英語讀出,但控罪書中有幾處輔以中文說明。其中,李卓人在終院外見記者,呼籲市民參加遊行時,目的是 “in order to send a message of defiance” , 此處特別標示了「抗命」二字。而翌日他參加遊行時,身上穿的黑色T恤上的字眼, “People will never forget” 亦特別註明為「 人民不會忘記」。
「 人民不會忘記」此六個字,對香港人來說,立即想起每年在維園舉行的燭光悼念集會。
在遊行終點,控罪指出有幾位被告人,並沒有呼籲大家散去,反而公開說一些話。控方大狀以英語指出,李卓人 “expressed his hope that the participants would continue with the protest” , 此處特以中文解釋為「繼續抗爭」,而由於當時社會亦有一種終極一戰的氣氛,控罪書中,陳皓桓在終點說過,「今日絕對唔係Endgame」,亦成為英文翻譯中文的內容。
控罪的証據,包括了甚麼?例如十人接受記者訪問,站得近不近,肢體動作,有沒有喊口號,對記者說過的話,都成為了罪証。
然而,10月1日,參與遊行的人數眾多,控罪書中多處形容,「數以千計」(thousands of participants)人士跟隨着。而這些人士做過的動作,說過的話,破壞過的公物,全部都成為控告10人的証據。
在隊頭附近有參與者嗌過的「解散警隊 刻不容緩」「黑警死全家」;有遊行裡的人向警察舉中指、以油漆塗鴉、擺設路陣、以傘指向警察,都成為指控十人的罪証。
控罪有幾處特別詳細,其中,有示威者欲向中聯辦方向走,被警方阻截下來;另外,近二時許,在灣仔修頓附近,有兩個黑衣人向習近平畫像及國旗扔雞蛋;亦有一處記述,二時半前,於金鐘附近,兩個黑衣人走上太古廣告的天橋,拆掉了寫着「熱烈慶祝中華人民共和國成立70周年」的展示牌,並把拆下來的物料扔向馬路上。
控罪讀畢,法官胡雅文請各被告人起立,逐一問各人是否明白及同意控罪。此時,被告欄及旁聽席上的被拘押或保釋中的被告們,逐一以不同聲線回應。有男聲說:「明白、同意」;也有女聲以英語回應:「Understand, agree」。十個「明白」和「同意」省卻了控辯雙方的審訊時間,然而,亦只剩下求情和判刑的程序。
控方卻在此時,在法庭播放片段,包括終審法院外的緊急記者會,楊森在遊行裡接受記者的訪問,蘋果日報記者訪問其老闆黎智英的片段。當時黎智英說道:「政府不想解決問題,只想鎮壓個運動。你要處理警方的暴力,警民的敵意才會消除,那就是成立獨立調查委員會,亦要實施普選……我們要堅持,唔係乜都無。」
然後,控方亦播放了警方於十一前夕的記招,呼籲市民別參加翌日的集會,警方發言人的聲線在法院迴盪,用字突出:「核心暴力分子、恐怖主義越行越近,有人說要殺警,在商場放火,召募有自殺傾向的人做死士……」警方這些指控,如今在這個時空出現,落差頗大。直播法庭裡的個別記者,聽到警方這些話在播出,忍不住發出不滿的低聲細語。
休庭之前,法庭播出遊行的畫面,密密麻麻的人群,thousands of participants沿着港島街道蠕動。已經到了十月,民情激昂,「沒有暴徒,只有暴政!」「香港人,加油!」「Fight for Freedom Stand with HK!」等口號,在法院裡響起來,在擠滿了被告、律師、家屬、旁聽市民的法庭裡,再次響起。好像很遙遠,只不過一年半之前的事。
今天其中一個公眾關注點,就是6位仍算是自由人的被告會不會被即時扣押。認罪後,基本上審訊加速,一星期後就會進行求情和判刑程序,然而控方已表明反對6人保釋。但至今天休庭前,法官胡雅雯表示,因為控方未播放完新聞段,故此明天早上繼續審理,保釋一事,明天才處理。
原來已有心理準備還押的6人,包括楊森、何俊仁等,已特意到眼鏡店配了還押必須的塑料框眼鏡,但今天卻意外獲准回家一晚。
散庭時,陳皓桓在法庭外見記者,他半跑着出來,高舉勝利手勢,笑着說:「又多了一天的自由!」記者問他好像很累,是不是擔心案件。他笑說,因為前一晚玩樂到凌晨四時才睡覺,所以有點累。
另一個額外獲得一天自由的吳文遠亦舉起了五大訴求的手勢,他表示,所屬的政黨社民連,連負責做網上插圖設計的成員,都因另一控罪被入罪。他笑着說:「這陣子社民連的臉書,出圖可能較慢,大家忍耐忍耐。但今日香港,情況就是這樣。」
此案年紀最老的被告之一,和黎智英同齡的楊森,已經73歲。楊森曾經是社工系老師,被坊間形容為老一輩溫和泛民。他在法庭外仍像教書口吻,循循善誘地說:「我想向政府講,遊行是民怨的出口,遊行可以畀市民反映意見,改善施政……」中年的吳文遠和年輕的陳皓桓不住點頭。楊森慨嘆地道:「連我這種人,都揹着四宗控罪在身,我三十年(從政)真係想不到…..」
另一個「和理非」泛民領袖何俊仁,也作好了坐牢準備,他的友好透露,一早已預備了還押人士的零食,透過何的助手放在他的律師樓,怎知,那些花生、豬肉乾和魷魚絲,卻被何俊仁一早吃掉了好一部份。明天,或許就是還押的日子,關心「仁哥」的朋友,趕緊於今天晚上籌集了符合懲教署規定的小吃,好讓他能在還押的日子,還可以繼續吃心愛的零食。
(法官於周二撤銷六人的保釋,六名被告全數還押候判)
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
participants翻譯 在 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.
👏 歡迎轉載分享鼓掌
participants翻譯 在 何振然 Elson Ho Facebook 的最佳貼文
想跟前湖人射手VJ Beachem 學射波?
想體驗NBA 最新型號Shoot-A-Way射球機?
4 a.m. 成功幫大家爭取到難得嘅機會❗️
現時效力G-League Windy City Bulls 風城公牛嘅VJ Beachem 喺休季期間加盟甲二球隊晉裕,今年24歲、作為全能射手嘅佢打波實而不華,喺3/7 對上當時全勝球隊荃灣轟入62分,當中包括14射11中三分波。
VJ即將喺甲二賽季後返美國,處理Free Agent事宜,而家咁fit嘅VJ真係有望重返NBA,所以緊係趁佢仲喺香港最後兩星期,捉住佢開班教大家射波,感受吓NBA式訓練,兩小時嘅Shooter Workshop 主要包括:
- 出手動作指導
- 三分球針對性練習
- 無球走位訓練
- 持球製造空檔訓練
- 罰球技巧訓練
另外,現場仲有NBA球隊指定射球機Shoot-A-Way作為訓練工具,畀大家體險吓射球機嘅訓練,係全新型號,全港只得一部,夠晒過癮!
訓練班詳情如下:
13/7/2019 9PM-11PM @荃灣體育館
14/7/2019 9PM-11PM @荔景體育館
成人價錢: $400 一堂
學生價錢: $200 一堂
人數: 15-30 (額滿即止)
*學生必須出示全日制學生證
報名表格: https://docs.google.com/forms/d/e/1FAIpQLSfITKJrLvkbP9Y_kjYkuXG6VmEHy3-J_jOSP3PyU9rfOdoTSQ/viewform?usp=sf_link
呢兩日我都會同兩位晉裕球員擔任助教團,幫手翻譯同指導訓練,保證大家玩得滿意。
名額有限,錯過咗就冇架喇,仲唔快啲報名!
——————
“Want a chance to learn shooting techniques from VJ Beachem the former LA Lakers sharpshooter? It is NOW or never.”
Currently playing for Windy City Bulls of the NBA G-League, VJ joins HKBA A2 team Chun Yu. A 24-year-old all-round shooter, scores unbeatable A2 team Tsuen Wan 62 points, including 11 out of 14 in three point shooting.
VJ is going to go back to the US to handle his contract business right after his A2 season with a chance to return to the NBA. This is a chance in a lifetime, as this is the last days he is in Hong Kong. If you want to try NBA style shooting practice, if you want to learn from the best shooter Hong Kong has to offer. Join us in our two hours practice included the following,
-Varied shooting drills to improve midrange and 3pt accuracy
-Off the dribble shooting
-Creating space
-Free throw technique
-Overall improvement of shooting touch and shooting form
ALSO, participants will have a chance to use the NBA licensed shooting practice machine “Shoot-A-Way” as part of the training. This is the newest model and the one and ONLY one in Hong Kong. Don’t let this opportunity slide!!!!
Workshop details as follow:
13/7/2019 9PM-11PM @Tsuen Wan Sports Centre
14/7/2019 9PM-11PM @Lai King Sports Centre
Adult Price: $400 (One Section)
Student Price: $200 (One Section)
Quota: 15 - 30 people max.
*Student must present full time student card.
Registration form:
https://docs.google.com/forms/d/e/1FAIpQLSfITKJrLvkbP9Y_kjYkuXG6VmEHy3-J_jOSP3PyU9rfOdoTSQ/viewform?usp=sf_link
After Registration, will confirm via WhatsApp. Payment Method will also be sent to WhatsApp.
Payments have to be made on or before 12th July, 2019, otherwise enrollment will be cancelled.
Please WhatsApp 61431498 if you have any inquiries.
#VJBeachem #NowOrNever
#SharpShooter