Triple Bluetooth serial module and PSU switch board refactoring notes

triple_btm_wiring_2015jun3001

Triple Bluetooth serial module and PSU switch board refactoring notes

.END

Leave a comment

Filed under Uncategorised

用人失準, 用權失當, 十八年來政經倒退 – 林行止

用人失準用權失當 十八年來政經倒退 – 林行止 信報 2015年06月30日

一、

政治本來就是有理而不容易說清楚的問題。

回歸十八年,香港的發展每況愈下,有人心想,假如當初緊跟前朝足印,由英女皇充當的「包租婆」,改由中華人民共和國政府當「包租公」,聲明「港人當家作主」是非份之想,藉此昭告港人,主權移交的意義,只不過是在寫地址時,把英國屬土改稱中國屬地!如果事實果真如此,權位中人便不用承受「愛國愛港」那種難以承受之「重」,僅以屬土居民的身份參與公共事務,從事地方繁榮穩定的經營,守法奉公。在這種情形下,香港作為一個中國的特別行政區,也許會比

現在的糊塗混賬,不致那麼丟人獻世,貽笑大方!

公共事務的決策過程,《基本法》本來已把國家地位定於一尊,而地方的政治實務,則有最終達致雙普選的「高度自治」體制承擔責任。可惜,在過往有目共睹的歲月中,香港每提政改,國內「河水」便以「憲制責任」犯境,香港這小井便為滔滔濁水所淹沒,成為看不見口、眼、耳、鼻的一片混沌。因為

權力傾斜到「愛國愛港」的港共身上,十八年來香港並沒有朝着相互制衡的制度框架邁步,權力誤用濫用的情況,日趨明顯。

在服膺內地一黨專政、黨凌駕於法的前提下,香港並沒有為合法的政治團體或問政人士提供掌權的合理機會,結果香港政治不是百駿競走,達者為先……。顯而易見,無論在政治上經濟上以至社會各層面,香港都呈大不如前的頹勢。

在殖民地政府治下,港人從公從政的心態相近,就是回歸的頭十四、十五年,那份心情取態的變化亦不明顯;可是,自從

梁振英角逐行政長官之位始,隱隱然便有敵我矛盾的權力政治高調登場。

在管治方面,很多人給梁氏的評語是「說就天下無敵,做便有心無力!」

他的主張化為政策,要非無一成事,便是效果適得其反,堪稱一無是處,

可是,這位權位在手的行政長官,其在追逐權力的鬥爭上,卻非常進取、充滿謀略,開人眼界。

二、

「梁振英,你呃人!」這話出自一度是行政長官梁振英的競爭對手唐英年之口,是唐氏深得民心、愈來愈多港人認同的一句話!不過,它的「抹黑」效果,卻遠遠不及當時天天見報、攻陷其對手的僭建和桃色新聞!

梁振英藉「愛國」之名,以罵街方式詆毀佔中和雨傘運動中人,醜陋難看的穢招,卻足以令他過關斬將,其作風被京官視為硬骨頭足以震懾壓服泛民人士亦未可知。

擱在人前還有令建制派灰頭土臉的政改「蝦碌」,啟動政改的行政長官,竟然紋風不動,連任行情據說還可看高一線,而周圍有點機會問鼎接任行政長官的人選,竟應聲中「蠱惑」。權謀暗鬥,躍然於港人眼前。

得到權力而未能用權於建樹香港,令香港經濟如政改般循序漸「退」。

梁振英政府缺乏誠信、能力,交不出政績,令他的政府無法獲得應有的尊重更無權威性,

要是失公失正欠信實的梁振英獲中央繼續支持甚且連任,那說明了什麼?香港能有什麼前景?到今天為止,國家主席習近平是一位被國際社會視為銳意興革並藉此圓中國夢的領袖,建立公正廉明的制度和依法治國是國人對習氏的期待,香港「二○一七一定要得」的普選行政長官結果「一定唔得」,習大大的形象能絲毫無損嗎?

如今港府機關與社會的互動關係惡劣,從梁振英政府在政改未獲通過後迅即改轅易轍,馬上放下政改(中聯辦主任張曉明周一出席公開活動時主動談及政改,表示「從今天起『自動收聲』不再公開談政改」),專注民生經濟等「實事」上看,稍微世故的人,誰不意識那是

擁權而不問責、負義寡情專斷的典型?北京用人為公還是用人唯私,梁振英的去從,提供有力佐證

三、

歷任政府要職的政務司司長林鄭月娥女士,曾經是優秀的公務員,為她贏得不錯的口碑,然而,當她成為政治任命官員後,表現便差強人意,令筆者想起久已不曾提及的「彼德原則(理)」——這是企管學家羅勞斯.彼德(Laurence J. Peter, 1919-1990)在一九六九年出版的一本同名書提出的「原理」——公私機構都有人「積功」升至其不能勝任的職位,那意味此名幹員因為升遷至其能力以外的高位,遂從機構的重要資產淪為負資產(大意)!

在這次歷時二十個月的政改諮詢期間,林鄭司長的表現不可謂不全力以赴;可是,聽一名來自北京知名學者的相關演說,她竟然說出「一錘定音」那種完全欠缺智慧的政治失言,毫不體恤香港民情。如此這般,這位政改三人組最高負責人為政改定調,令諮詢工作形同虛設、情同兒戲。此次政改方案被否決,她自言「實在難忍悲哀」之餘,又為曾替香港民主發展出一分力而感安慰,並無半點擔當挫敗的反思和自省。

筆者以為林鄭司長處於不勝寒的高位,多次失算失言,在在顯示「彼德原理」在她身上一覽無遺。

記憶猶新的是她上任司長不久便要雷厲風行對付新界僭建,且「誓言」要進行拆卸,可是,這項指令如今安在?從傳媒的零星報道,新界的僭建情況,比她宣布拆卸政策前似更猖獗;同樣令人錯愕的是,林鄭司長曾對着鏡頭稱讚某君為「最稱職的公職人員」,可是,言猶在耳,某君已惹上官非無資格再為港人服務……。此次政改表決前,據報林鄭司長曾請示高明,祈求擇好日表決方案,由此可見她對政改方案的信心多麼脆弱;這種舉措,有違她的授權來源根本不信這一套的倫理。僅此犖犖數端,便足顯

林鄭司長的患得患失和不稱職,缺乏政治任命官員應具的政治常識和承擔責任的肩膀。如今她領導

政改慘敗收場,加上在假諮詢(「一錘定音」後的諮詢都是「做秀」)過程中又與關心政改各界有這樣那樣的磨擦和衝突,今後推動政務恐會遇上不必要的困難。

筆者認為她鞠躬下台的最適時刻已至!

筆者對林鄭司長並無任何成見,但從上所舉事例看,她於此時請辭,對她個人和政事的推展,是明智之舉。


鄭司律﹕一國兩制 18年實踐失敗 – 明報 2015年06月30日 星期二

無可否認,持續3任行政長官不孚人望的施政,加上18年來香港整體社會持續的信心低潮,已經宣告了一國兩制實踐失敗。儘管街道上「熱烈慶祝回歸祖國」的推銷鋪天蓋地,就如《基本法》頒布周年紀念和每年臨近「10.1」的宣傳一樣,但

官方有官方硬銷,卻無法引起香港人心中共鳴

18年來的敗劣治績:政改方案成為了假貨的代名詞、經濟轉型自立的目標變作依附大陸、大陸和香港兩個社群之間失去信任,更甚是

這個城市在利益壟斷下,愈來愈多人對自己的生活沒有希望

粉飾太平,頌揚一國兩制高度自治有效落實,無非是自我幻想,迴避整個制度的結構問題;這不單單是換個特首就能夠處理的局面。

聯合聲明簽署後,中國決定收回香港成為既定事實,北京的所作所為無可避免影響香港發展。

放諸於當日歷史情况,一窮二白的中國大陸,視香港為走向現代化的楷模;對改革開放不久的中國而言,香港是資金、人員、技術的來源。而北京為安撫香港民心,對九七後香港社會的共識是延續殖民地「行之有效」的模式。

一國兩制只是保守停滯的安排

然而,令人遺憾的是,北京政府只看到香港「工具性」的作用。當香港是成功模式,既能為中國大陸所學習,也能維持香港的繁榮安定,自然毋須作出改變。無疑,一國兩制、高度自治的目標非但不是創新——其他單一制國家都賦予個別地區自治的例子——更加是一個保守的安排,「50年不變」的意義是換一面旗子,馬照跑舞照跳。北京沒有正視香港社會持續進步的走勢,結果在實用觀點底下,英國此前如何管治香港,在過渡期和九七後也會延續下去。

英治時期殖民官員,與華人精英共治香港的狀態,包括在上層的行政局和立法局層面共享權力與利益,乃至吸納進其下的各種諮詢架構之中,使管治建制成為一個利益與共的板塊。同時,面對着國共兩黨在香港的活動、國會議員對殖民地部的施壓,殖民地當局(特別是六七暴動後)需要謹慎處事,回應社會內部普羅百姓的需要,以良政維持管治。七八十年代經濟和社會高速發展,也為香港的制度運作賦予正當性,使香港人觀感良好,消弭社會的內部問題。

社會進步與制度封閉脫鈎

我們把時鐘撥回30年後的今天,過渡期成為了遙遠的回憶,離九七也經歷18個年頭。今時今日香港人不會像上世紀五六十年代的人們,視香港為過客之地,僅求兩餐;1970年代打後的經濟高速增長,也由於社會發展成熟完備不可能重演。

社會條件與討論一國兩制、基本法的年代已經不同,但北京的思維心態依舊沒有進步

我們看到今時今日的政制——一個小圈子制度產生的特首、一個半民主半功能組別的議會、假諮詢的諮詢組織,其實都是過去的延續。

北京「工具性」思維底下的盲點,強調香港只是經濟城市。

但隨着市民意識進步,香港無可避免已是一個政治城市,將現今的香港社會框進殖民地制度只是徒勞無功,我們不會接受公共事務不在大眾政治下討論,像

港視發牌或國民教育爭議般,單憑梁振英關門決定了事

即使梁振英今時今日聲稱「集中經濟民生」,迴避政制,我們都明白經濟民生,最終建基於民主政制,達至資源分配的公平正義、思想表達上自由開放、以及整體方向的自主。

北京的自大是一國兩制失敗的元兇

無意在此為殖民統治塗脂抹粉,但相較於英治時期,港府一方把持對政策形成的壟斷,同時又面對北京、倫敦、台北的壓力以及冷戰格局,步步為營地以社經穩定贏取民心。

今時今日所見,就是北京在大國崛起下有恃無恐,對港府的操控介入愈來愈深,也涉及北京內部的角力,「某某陣營是某某派系的人」已經成了光天化日下的討論,除了庶務處理,港府根本形同傀儡。

難怪香港只會局限成為大經濟融合下的工具,而利益傾斜、經濟壟斷、民生困乏,成為京商勾結大格局下的犧牲品。

在鄧小平年代,北京尚且顧慮國際局勢,爭取國際對聯合聲明的承認,1980年代中國改革開放也沒有排拒制度現代化,直到八九六四為止;但隨着中國國力上升,零八奧運以後全面收緊統治政策,大國崛起的傲慢推使中港關係由高峰滑落;

習近平上台後,普世價值、公民權利成為「不要講」的禁忌

不單是香港無法落實真普選,更代表北京視之為普世價值與天朝統治的鬥爭。

封閉的北京與日趨進步的香港社會,無疑愈走愈遠。

從去年8.31框架和對雨傘運動的態度,可見北京的強硬態度只會變本加厲,往後發展更只會是要求香港跪低

一個不合時宜的封閉制度、一個無視社會需要的京商合作模式、一個沒有尊重形同主奴的兩地關係,將一國兩制粉飾為「成功」,無疑是荒天下之大謬。


捉鬼 – 李怡 蘋果日報 2015年06月30日 星期二

曾鈺成因為在建制派WhatsApp群組中參與協調建制行動而被指摘,作為立法會主席的公信力受挫。

建制派及人大WhatsApp群組對話洩密,儘管從中聯辦到建制中人都說不要「捉鬼」,但豈能使公眾免於猜測?

筆者且提出一些線索,供讀友參考。

一是基於中共的「內鬥內行,外鬥外行」的權爭規律,洩密必與權力鬥爭有關,因此最有可能的,是中共自己人,或是黨員,或至少同中共淵源深厚者。

二是洩密者必定不會是公開對話最大受害者,因此曾鈺成可排除在外。另方面則極可能是最感權力受威脅者,或對曾鈺成的高民望最忌恨者。

三是有洩密前科者,比如當年特首選舉前先說會引爆兩個炸彈,繼而有傳媒爆出唐宮僭建醜聞;及後對曾鈺成說手上有他的黑材料,令曾退選;再後透露劉夢熊意圖干預司法公正。所謂食髓知味,味道好就會蠢蠢欲試。

四是與爆出對話的媒體有過良好接觸和關係者。

五是爆料的目的,是使曾鈺成下台。有此居心者,「鬼」可此中尋。


曾鈺成 office 遭竊聽 CY成頭號疑犯 蘋果日報 2015年06月30日 星期二

喺建制派 WhatsApp 內容外洩、仲未有人公開認係「內鬼」之時,《am730》噚日突然報道,曾鈺成3年前表明考慮選特首時,立法會6樓嘅辦公室俾人裝咗竊聽器,寓所都懷疑被人監視。由於當年佢篤爆過梁振英打過電話畀佢,聲言唔會搞佢嘅黑材料,所以唔少網民都話個竊聽器一定係CY裝㗎,但八方更關心嘅係,點解要喺風頭火勢之時引爆一單舊聞,唔通一如網民所言,用嚟轉移視線?

曾鈺成噚日喺立法會回應呢件事時,講番當年有傳媒中人提醒佢,有人得悉佢嘅行蹤,叫佢小心同人傾談時會被竊聽,咁職員咪買咗個反竊聽儀器返辦公室探測,真係有聲有料到,但當時搵唔到竊聽裝置,幾日後再用個儀器探測就冇聲咯。

網民質疑轉移視線

八方同大家一樣好質疑,點解咁大件事唔報警?曾鈺成話喎,所謂竊聽係冇實際威脅,所以只當茶餘飯後嘅趣事討論,強調若冇證據,「警方都唔會理你」。咁點解𠵱家先嚟話當年?曾鈺成稱好詫異點解有報章會登呢段3年前嘅消息,叫傳媒唔使跟進,亦話唔應該同近期建制派 WhatsApp 群組內容外洩混為一談。

如果竊聽屬實,網民熱論CY係頭號嫌疑犯,同時指CY肯肯定冇諗過,突然被阿曾擺上枱用嚟轉移視線。雖然曾鈺成講到呢件事不值一哂,但由於有一名議員關注,立法會秘書處話會研究跟進。

李八方


撕裂的社會 – 黃偉豪、陳慧華 蘋果日報 2015年06月30日 星期二

社會近年撕裂嚴重,更不時見到對立陣營的群眾發生衝突。資料圖片

政改遭否決,但社會的緊張氣氛及矛盾仍然持續。香港社會在一次又一次的抗爭中撕裂,漸漸形成兩組對立且穩定的群組板塊,如何減低兩大板塊的對立,爭取對話及合作空間,甚至把兩大板塊重新整合,成為了後政改時代極需認真處理的議題。

戴耀廷曾在〈香港社會撕裂的前因後果〉一文中分析香港社會的撕裂可分為

「保守板塊」和「改革板塊」

本文將兩大板塊的具體情況以數據呈現,從而探討如何整合兩大板塊,修復多元又和而不同的香港社會。

香港中文大學政治與行政學系委託中大傳播與民意調查中心,於2015年5月尾至6月初進行意見調查。

附表一以雨傘運動及政改方案的取態將受訪者分為不同的類別。

要證明香港已被撕裂成對立的兩大板塊,我們可以注意到支持雨傘運動及反對「袋住先」的政改方案的人,基本上是同一群人,在支持雨傘運動的人當中,有高達82.52%亦同時反對政改方案,我們可以把他們視為改革板塊的中堅分子

同一時間,在反對雨傘運動的人當中,亦有高達63.7%同時支持政改方案,我們可以把他們視為保守板塊的骨幹。值得留意的是,兩大板塊在人數上相當接近,可謂旗鼓相當,反對雨傘運動及支持政改方案的保守板塊和支持雨傘運動及反對政改方案的改革板塊,分別佔總受訪者的26.66%及28.04%。

研究亦發現,若將上述兩個取態的受訪者就年齡、教育程度、家庭每月收入加以分析,保守與改革板塊的差異均十分顯著(見附表二)。

在年齡方面,保守板塊群組的年齡明顯較大,有八成以上受訪者屬40歲以上;

反觀改革板塊群組有近五成以上屬於39歲或以下。

可以看到改革板塊的推動者多數是年輕一代,而保守板塊則多屬傾向保守,及維持現有政治及經濟格局老一輩。

在教育程度方面,保守板塊僅有18.75%擁有大學及以上的教育程度;

反觀改革板塊中則有43.13%擁有大學及以上的教育程度,

明顯地知識水平及學歷是改革板塊與保守板塊的重大分別之一

再看收入方面,雙方的差異較凸顯於低收入及高收入的組別。

保守板塊中有14.79%的受訪者的家庭每月平均收入屬1萬元或以下,多出改革板塊近四倍。

至於在較高家庭收入組別裏,有近六成四的改革板塊受訪者屬3萬元以上;而保守板塊中則只有約四成四。

這說明保守板塊的低收入支持者較多,而改革板塊則有更多高收入及專業人士。

政府令對立加速形成

兩大板塊所反映的撕裂,是雙方就價值和香港的前景和發展方向,有一套完全不同的理解和論述。除了雙方的價值觀不同外,外在因素如政府近年的施政模式,特別是處理社會矛盾的方法,及各大主流及傳統媒體對重大事件如佔中及政改的報道方式及立場,都加劇了社會的撕裂,加速了對立板塊的形成。若沒有政府及媒體的外在因素,相信兩大板塊的形成不會來得這麼快,兩者之間的矛盾也不會這麼深。

政府往往用非友即敵的態度施政,不願吸納社會不同聲音,經常把持不同意見的人士,打成反對派。主流傳媒方面,特別是

低收入及低學歷人士倚重以接收資訊的免費電視,常常在報道上有較重視官方立場的傾向。

這種模式,除加深了保守板塊對改革板塊的負面印象及誤解外,亦

同時迫使年輕及高學歷人士更快地放棄傳統媒體,而投向互聯網的新媒體,從而使兩大板塊對重大事件的認知及理解的距離,越拉越遠

兩大板塊的對立已發展至涉及深層次的「世代之爭」、「階級之爭」及「香港價值之爭」。要解決社會撕裂的問題,整合兩大板塊,香港需盡快建立一個包容多元聲音的政治平台,讓不同意見人士可以在平等的環境中相互溝通,從而創造互信及合作空間。更重要的是,解鈴還須繫鈴人,在加強新聞自由的同時,政府及當權者應盡快放棄認為透過分化及撕裂社會,可以有助駕馭反對勢力的極度危險思維。

黃偉豪、陳慧華


講什麼耶穌? – 古德明 蘋果日報 2015年06月30日 星期二

香港聖公會秘書長管浩鳴效忠權貴誓無反顧,本月初更親上電臺,

說貓須服從主人,以喻民須聽命中共

不少人大力反駁,無不引用《聖經》,如牧師劉志雄,如作家余杰等。這樣的反駁其實沒有意思。

《閱微草堂筆記》卷三載:明朝末年,景城南郊有一破寺,由一個僧人和兩個徒弟司香火,師徒都十分淳樸。有人見破寺夜泛焰光,更有菩薩羅漢偶然一現,跟三師徒談起,他們都惶恐合十說:「佛在西天,到此破落寺院何為?官司方禁白蓮教,與公無讐,何必造此語禍我?」

但他們越否認,民眾越相信破寺有佛光臨照,於是施主日多,三師徒日富,終於招來強盜,以身殉財。

官府查案,發覺寺內有松脂,晚上可造焰光;又有戲服,可扮菩薩羅漢,大家這才知道那三師徒貌淳樸而心狡詐。

這樣的佛門子弟,你跟他們講什麼佛法;同樣道理,聖公會寺內司香火者,是管浩鳴、鄺保羅那樣的基督門徒,奉殘賊百姓的政權為主人,你還跟他們講什麼《聖經》。當然,他們比景城那三師徒高明。那三師徒可未能攀龍附鳳。

我對宗教,向來敬而遠之。佛祖有靈,基督有知,怎會一任他們的寺院,落入神棍手上,更一任他們富其家,肥其身,欺斯世,惑斯民

而我所見宗教領袖,如景城那三師徒者,十有八九。

古德明


「少數服從多數」的謬誤 – 力哲 評台 2015年06月29日

「多數」在政治上永遠有著一種無法抗拒的魅力。民主與否,「多數」都彷彿代表著一種不容爭議的「正當性(legitimacy)」。「正當性」從數字取其能量;數字多寡意謂著政治力量的強弱,抗衡政治阻力的尺度。正當性本質為何,似乎是無關宏旨的。

在政治的歷史上,「少數服從多數」從來不是常態。

幾千年來,一小撮人之統治被視為理所當然。

到18世紀未、情況出現根本變化。法國大革命和美國獨立湧現出政治觀念徹底改變的思潮。平等和自由的概念初次運用在統治上,剎那間特權階級失去了往日的正當性。

19世紀功利主義(utilitarianism)的抬頭,更進一步確立政治由重視少數邁向多數的民主邏輯。如功利主義始創者邊沁(Jeremy Bentham)所言,公義謀求「最多數人之最大幸福」,政治的焦點開始落在多數人的幸福上。

然而,「多數人的幸福」不會自動換來公義。

按邊沁的理解,社會機構應協助個人爭取利益,實現自我。雖然邊沁學派提倡平等和個人幸福,但在功利主義的理性計算下,個人始終要落在整體幸福的天枰上。

少數者的犠牲純粹是成就多數者幸福的工具。

現代社會對上述缺乏個人權益考量的功利主義嗤之以鼻。

但可惜的是,民主社會的設計往往間接強調教條式的「少數服從多數」:以「選票」代替理性討論來簡化民主,讓民眾不知不覺陷入精神撕裂的民主觀念中。

實際上,「少數服從多數」作為以數量解決政治問題的明確辦法,本質上並無斷定公義與否的能力。

美國政治學者 Michael Walzer 揚言「選舉中有不可預測的結果。分配性的決定(distributive decision)有時候是不公義的。

因此公義必須面對民主上的危機。(註一)」聚合民主(aggregate democracy)以「票」為基礎,但背後必需包括理性程序原則(rational proceduralism),否則非理性的多數者在合法程序下亦能削弱民主的合法性(註二)。

毋寧說、

「少數服從多數」是方法論上的一種妥協,並不保證公義結果。

如何從量到質提升「少數服從多數」的合理性,是民主路上必須思考的課題。

即使在民主思潮蔚然成風的社會,不少人仍緊抱教條式的「少數服從多數」,誤以為數字是民主的主人,合理性的唯一條件。

民主從來不是數字力量上的比拼;多數和少數在民主天枰上有著同等重量。

新儒家代表人物徐復觀在這方面曾寫下發人深思的見解:「民主政治下的少數者,並不是在真理前的屈服,也不是被多數者統治其思想⋯⋯

少數服從多數,只有和多數保障少數同時存在,才有其民主的意義

(註三)」誠如歐洲人權法院(European Court of Human Rights, ECHR)指出(註四),

民主必須培植於「對話和妥協精神」之上,「不斷追尋對不同權利之間的平衡更是構成民主發展的基本台階」。

公民社會之重要,正在於孕育出超越立場的理性對話,促使民主的自覺無遠弗屆地散播在社會的每個角落。任何缺乏溝通與尊重、偏頗於動員能力之政治,都會導致政治不穩定和對民主的不信任。簡言之,winner takes all 決不能成就民主。

除了溝通和尊重,自由和權利的保障也是民主精神的重要支柱。

現實不是完美的。各色各樣且彼此扞格的觀點總不能在有限的民主程序中無限期地進行討論。由此可證,民主理想和制度現實相去甚遠,溝通和妥協並不足以時刻應付社會繁複糾結的紛擾。彌爾(John Stuart Mill)在《自由論》中跳脫出理性計算的枷鎖、進一步探討「

社會對個人所能合法使用力量的性質和極限」、以求尊重人類自由之目的

這個轉向啟迪了透過憲法和法治等手段賦予民主更客觀的元素、保障少數者的自由

《世界人權宣言》可算當中最佳例子。

彌爾在《自由論》所揭櫫的「一個非常簡單的原則」,到今天仍擲地有聲。要防止「多數者的暴政(tyranny of the majority)」,我們必須「要把力量正當使用在任何一個社會公民的身上」。否則在缺乏自由之語境下,任何民主制度難免淪為增飾,為「不自由的民主(illiberal democracy)(註五)」背書,不但踐踏民主,更助長暴政。

說到底,不問是非究竟、盲目崇拜多數壓倒少數的教條、只不過是披上羊皮的霸權。

無視背後邏輯,聲言「民主就是少數服從多數」,不是無知就是漠視民主之真箇,假借民主之名行獨裁之實。

歷史証明,從少數者中尋求社會公義幾乎是緣木求魚

然而,近代歷史告訴我們,另一個極端亦無法提供一個完滿答案。盱衡近代民主發展之歷史,「少數服從多數」這個靜態表象的背後其實蘊含著法治和溝通這兩種澎湃動力,推動民主奮勇向前,兩者缺一不可。撇開數字上的旁枝,民主終歸公義這個目的。與其相信「民主就是少數服從多數」,不如學龍應台女士說一句:「請用文明來說服我」,更能體現民主的精神。

註一:Thinking Politically: Essays in Political Theory by Michael Walzer

註二:Arrow, Kenneth, Social Choice and Individual Values

註三:徐復觀,《儒家政治思想與民主自由人權》

註四:http://hudoc.echr.coe.int/sites/eng/pages/search.aspx?i=001-70956#{“itemid”:[“001-70956″]}

註五:形容有形式上的民主選舉,但缺乏公民自由的制度。由資深傳媒人 Fareed Zakaria 發明的詞語。見 ‘The Rise of Illiberal Democracy’, Foreign Affairs Nov/Dec 1997 issue


內地股市大起大落 技術上跌入熊市區 – 明報社評 2015年06月30日

近期,內地股市持續跌幅驚人,本港股市也受影響而顯著調整。內地股市波動,是預期經濟前景欠佳有關,抑或反映政策市、消息市特質的結果,或是這兩個因素互為影響的結果,需待更多數據始能論定。不過,投資市場的風險若是基本因素所致,較容易洞察;

若當局對股市有政策考慮,所作所為另有所圖,則風險就較難掌控。

目前內地股市的大起大落,呈現出來的並非一般風險,特別是小投資者稍一不慎,就會成為大鱷的點心而蒙受損失,對此不能不察。

央行組合拳不奏效 半月跌幅超過20%

2008年金融海嘯之後,內地股市低沉數年,到去年7月開始轉勢上升;今年農曆新年之後走勢凌厲,到5月底和本月初,上海A股升破5000點,投資者無不獲利而笑逐顏開。

不過,由本月中旬開始,內地股市出現震盪,持續反覆下調,一個交易日跌幅以幾個百分點計算,甚為驚人。

到上周五,與6月12日高位比較跌幅已達20%,短短半個月的A股指數跌去約五分之一,

蒸發10萬億元人民幣財富,跌宕超乎想像,充分反映內地股市的特別生態。

連同昨日下跌,技術上內地股市已經跌入熊市區域。

上周五股市暴跌7%之後,人民銀行翌日出乎意料宣布採取一系列措施,包括減息0.25個百分點,部分銀行下調存款準備金率0.5個百分點,財務公司存款準備金率更下調3個百分點。這套措施的力度之大近年罕見,被形容為「雙降重拳、三箭齊發」,一般解讀人民銀行此番異常之舉,目的為「放水救市」,期望對股市起到穩定甚至提拉作用。

不過,昨日內地股市持續波動,A股上下波幅達一成,收市跌超過3%,深圳股市特別是創業板跌7.9%。人民銀行的一番「心意」,市場並不領情,減息降準恍似泥牛入海,被冲洗得無影無蹤。

港股對內地股市亦步亦趨,昨日一度大跌逾千點,市場信心陷於恐慌邊緣。

希臘總理齊普拉斯宣布把國際債權人的救助條件,交由全民公決是否接受,此一攤牌舉措,使希臘債務危機急劇惡化,除了可能出現全面債務違約之外,甚至希臘脫離歐元區的風險,亦陡地飈升。昨日全球股市都大幅下跌,相信與此有關。希臘債務危機確實觸動投資市場,不過以希臘的經濟體積,即使最終違約和脫離歐元區,除了短期內對投資市場有一定衝擊,不利歐洲一體化前景之外,長期而言不會有根本性影響;內地股市相對封閉,與外部市場交集程度不大,相信所受影響有限。

反而內地經濟前景不明朗,才是股市前景更大隱憂。

內地當局以新常態解釋中國的經濟,10%或以上的增長不再,取而代之是盡量「保七」的中速增長,可是5月份數據未如人意,不少人預期6月份經濟情况難樂觀。因此,上周六人民銀行罕有的組合拳動作,有人解讀為當局或許是應對不利經濟數據,在股市已經下跌約20%的情况下,早做鋪墊,以防股市繼續反應而影響實體經濟。

事實上,內地股市今年3、4月,明顯獲添柴加火。

北京兩會期間,財金官員「不吝嗇」地公開唱好股市,官方傳媒也發文鼓動,內地股民積極回應,散戶資金大舉入市,出現了今年6月中旬以前的股市榮景。

因此,這次牛市,有人形容為「人造牛市」、「國家牛市」,意即股市脫離了基本因素,而是涉及國家行為。

在前一陣升市中,牛市確實在企業集資、去槓桿化方面起到正面作用,可是若股市偏離基本因素,攙雜其他考慮,涉及當局期望股市發揮其他職能,則

這樣的股市人為操控程度高,風險更難估量

政策市效果難持久 基本因素具決定性

昨日開市之後,或許是人民銀行組合拳的效應,A股早段上升約2%,不過很快就掉頭回落,一度跌幅達8%。

近期內地股市大跌,被認為與場外強制平倉有關,加速了跌勢和加大了跌幅,昨日股市持續暴跌之際,中國證券金融公司曾經發出聲明,表示強制平倉規模很小,滬深兩地股市在25至26兩個交易日,強制平倉金額不到人民幣600萬元,風險仍然可控,云云

當局在場中回應市場猜測,顯示被股市跌勢觸動了神經,力求穩住局面。只是,此一舉措使人更看準了當局對股市的心意,而長期以來,內地股市被貼上「政策市」標籤之後,會進一步成為「消息市」,甚至「說法市」,更偏離基本因素,對缺乏人脈和沒有消息的小投資者而言,風險更高了。

今次內地股市,若說將再一次上演「一放就亂、一亂就收、一收就死」的怪圈循環,言之尚早,未來一兩周陸續公布的各項經濟數據,對投資者或許會帶來啟示。無論股市起落有多少人為因素,或股市是否被賦予其他職能,若經濟基調出問題,市場上那隻看不到的手,即是市場客觀規律最終仍然會主導股市起落。

在投資市場,人為因素只會在一時一地起一些作用,總的而言還是基本因素仍然有決定性,這不僅是投資者,也應該是當局的認知。


中國股市最安全?親共政治更安全?- 李平 蘋果日報 2015年06月30日 星期二

港交所行政總裁李小加上周末在上海陸家嘴金融論壇上表示,中國股市是世界上最安全、最透明、最民主的市場。在A股連日暴跌之後,在中國人民銀行宣佈降準減息之前,

李小加還敢發表如斯言論,實在是勇氣可嘉,

內地股民給他最多的評價是:「李小加是我黨的好同志。」

連帶香港也被唱淡:「因為李小加,我對香港更感覺悲哀了!」

被李小加吹捧為最安全、最透明的中國股市,堪比早前被否決的香港2017政改方案,前者是偽透明,後者是偽普選。李小加說中國股市安全,部份是基於中國股民直接在交易所登記結算公司開戶,資金託管銀行,相對於在證券行開戶、結算,少了要面對證券行倒閉的一層風險。這充其量可以說,中國股市的結算方法較安全,但簡單地把中國股市吹捧成最安全、最透明、最民主的市場,無疑是玩了偷換概念的把戲,無視影響中國股市的經濟制度、政府決策、市場監管、訊息發佈等因素一直受到詬病。

在股民眼中,中國股市的安全、透明只是對莊家而言,絕非散戶之福。

更值得關注的是,李小加在其同股不同權計劃被香港證監會否決之後,力撐中國股市的安全、透明、民主,幾近獻媚,讓人感受到香港政界、商界的親共文化已入心入肺,並且有越親共越安全的趨勢,甚至是只要站穩親共立場,就可以不用承擔決策錯誤的責任、不用承擔工作失誤的責任,可以繼續素餐尸位。

其實,在香港政商界,李小加作為「我黨的好同志」的檔次還是太低了,這一封號只是中國股民贈給他的。而親共議員被封為「在香港正確貫徹執行『一國兩制』方針的重要建設性力量」,是他們在政改方案表決時集體退場「等埋發叔」後,中聯辦主任張曉明授予的。

梁振英獲得的「板蕩忠臣」封號,更是中共總書記習近平「御賜」。

中共官場只忌站錯隊

中共官場原本有「三忌」,就是切忌收錯錢、上錯床、站錯隊,但如今幾乎是無官不貪、無貪官不包養二奶,「三忌」只餘站錯隊一忌。

只要你跟對上司、只要政治正確,還有誰追究你收多少錢、包多少個二奶?還有誰追究你決策錯誤、工作失誤?

中共的這種政治文化早已滲透香港,梁振英收取澳洲公司巨額酬勞,輿論呼籲廉政公署介入調查,但張曉明一句「一早知道」就可以輕輕揭過。33個親共議員,包括3個行政會議成員,在政改方案表決時離場「等埋發叔」不投票,再加上 WhatsApp 群組短訊洩密風暴,竟然都沒有人要承擔責任或被問責,張曉明在西環邀宴親共議員時原本還要以慶功為名,擺明要安撫擔心被秋後算賬的親共議員。

李小加說了個中國股市最安全最民主的笑話,然後引伸出市場波動過大可能引導甚至挾持政策的結論,渾然忘了中國股市一向是政策市,暴升暴跌的主要原因正是管理層不作為或胡作為。當然,中國股市哪怕是政策市,或多或少還要受到市場力量的制約,因此暴跌之後,往往先有政策底,再有市場底,然後會有真正的反彈或上升。

7.1遊行是一個新開始

張曉明說了個政改方案是香港史上最民主制度的笑話,然後引伸出泛民否決政改方案要承擔歷史責任的結論,渾然忘了背棄「一國兩制、港人治港」承諾的是中共,香港痛失2017年普選特首機會、政改方案只得到8票贊成正是西環治港、亂港的結果。恐怖的是,親共政治文化在香港的蔓延越來越不受制約,「等埋發叔」鬧劇,WhatsApp 洩密風暴,不只讓人看到親共政治圈的可笑,更讓人看到香港政壇由這些人把持的可悲。要阻遏香港的沉淪,要阻遏香港核心價值被出賣,市民、輿論都不能因偽普選方案已被否決而沉默,不能因張曉明下令對政改收聲而沉默。站出來,參加7.1遊行,就是一個新開始。

李平


Uber雖惹火 共享潮流不可擋 – 沈帥青 香港經濟日報 2015年06月30日 星期二

租車程式 Uber 在法國推平價叫車服務,得罪的士業界惹來示威反撲,當地政府只有出手息事寧人,但「共享經濟」的潮流正愈滾愈大,背後有巨大商機推動,怎會輕易停下來?

去年登陸本港的 Uber,未算掀起熱潮,但在遠方的法國則非常惹火。上周四巴黎爆發反 Uber 暴力騷亂,約2,800名的士司機不滿 Uber 去年在當地推出「UberPOP」平價叫車服務,搶的士生意,於是堵塞當地的主要公路、放火燒車,要求政府封殺 UberPOP。事實上,法國法院去年10月已立例把UberPOP 定為非法,但 Uber 提出上訴,繼續營運。

UberPOP 與傳統的士不同,採用「共享經濟」的理念,讓不是的士司機的車主,可以把其私家車「共享」,在閒時運送乘客賺錢,即招募私人車隊,車費較法國普通的士便宜30%至50%,吸引大量法國人「幫襯」,每月顧客高達40萬人。

毋須領牌 的士司機怒火街頭

車主賺外快、乘客車費低,但雙方高興之時,卻是第三者的「痛苦」,Uber 的獲利,實際是搶去傳統的士司機生意,運輸業界在世界各地皆是「不好惹」的一群,如今有人明目張膽走入地雷區搶飯碗,他們怎會悶不哼聲?

更甚的是,Uber 的經營手法游走於法律邊緣,車主把現有私家車作為生財工具,不像傳統的士般要先領貴價的士牌,又毋須向政府支付經營稅項,根本沒有多少額外成本,自然可以平價吸客,但在傳統業界眼中則是「白牌的士」,恨之入骨。

對 Uber 生恨的運輸業界,更不止於法國,歐洲多國如西班牙、意大利、德國等,皆曾有反 Uber 示威,至於各地政府,亦往往傾向息事寧人,為了擺平業界的不滿,西班牙、德國、南韓等已紛紛向Uber 發出禁令。

由共享經濟服務引發的爭議,例子還有租房 App「Airbnb」,讓家中有空置房間的屋主,能夠把空房短期出租,與旅客「共享」,旅客則獲得平價住宿。如在巴黎,房源就超過4萬個,但此舉亦得罪傳統酒店業界,紛紛指摘等同非法旅館,於是迫政府出手,如巴黎上月就突擊檢查逾千間網上出租的旅館。

當傳統行業既得利益者深感權益受損,他們的反擊、抵制,不難預料,但另一邊卻是共享經濟的大潮流是否可阻擋得了?現時商界已爭相拓展共享經濟的商機,令這個新市場涉及範圍愈來愈廣,不止租車、租房,讓料理愛好者「共享」私房菜的服務已出現,就連幫人遛狗、洗衣服等服務一樣誕生(見表)。

全球市場10年後 估達2.6萬億

網絡發達,尋找目標顧客變得容易,過往不可能的共享經濟得以實現,其優勢更在於所有人都可以變身經營者,把已擁有之物共享,成本低廉,還可以發展更佳的服務,如以高級轎車載客等,商機自然大,會計師行PwC今年發表報告稱,現行全球共享經濟市場規模約150億美元(約1,170億港元),但預估至2025年,將達至3,350億美元(約2.6萬億港元)。

著名經濟學家 Jeremy Rifkin 在其去年新作《The Zero Marginal Cost Society》中,大談共享經濟將成為21世紀最具支配力量的經濟模式,認為所有人都可以用幾近零的邊際成本,分享汽車、房子、工具、衣物等等,預言會全面顛覆既有市場的經濟規則。

縱然有傳統業界阻擋,但可擋多久?就算有政府「撑腰」,但共享經濟是大市場,懂得運用新科技、網上平台的創業者,肯定大動腦筋,要顛覆傳統市場,政府要顧慮會否落後在共享經濟的世界大潮流之中,窒礙了科技與經濟的發展,更甚的是,消費者從共享經濟之中可以得益,他們更是樂於看到這些新企業、新服務的出現。

早前有美國研究便指,因共享租車、租房等流行,將可讓美國人今年的平均暑假花費降低13.5%,當中又指在18至34歲的年輕人之中,60%願意使用共享經濟的服務。

當政府如制止Uber般,不停出手阻止共享經濟服務,將與大眾消費者為敵,尤其當共享經濟在其他地方遍地開花,服務佳價錢廉,市民看在眼內,極可能反過來給予政府壓力,指斥其一味保護傳統業界。

無論政府或傳統業界必須明白這股共享經濟的大潮,縱能阻一時,亦將會遭淹沒,還是及早作出變革,與共享經濟共舞!


Y世代愛轉工 企業3招留人 – 鄧曉聰 香港經濟日報 2015年06月30日 星期

團隊為先 留好印象引舊人回頭

職場新人頻轉工,原來是世界大趨勢。倫敦商學院(London Business School)發表Y世代研究報告指,超過一半受訪者(53%)甫入職已打算在3至5年內辭工,37%人更表明會在24個月內離開。如何留住新人,成為管理層頭號學問。

倫敦商學院行政人員教育及培訓課程總監 Adam Kingl 卻有新主張:「離開了的員工,仍有機會回舊公司工作。企業要改變思維,看得更長遠。」

視培訓為長遠規劃

研究5年來訪問了超過200位來自35個國家和地區的倫敦商學院學生,當中20至25%人來自亞洲,包括香港、日本、中國、韓國和蒙古。Adam 指大部分人已被企業相中,會被重點培訓成管理層,惟僅5%受訪者打算在任職企業留超過11年,另外5%欲留約6至10年。

他推斷,每代的轉工次數正以雙倍速度增長。

「嬰兒潮一代畢生只有1至2個僱主,但到了X世代,已有7至8個僱主;從現時報告所見,大部分Y世代畢生有15至16個僱主。

這樣計算下去,Z世代一生可能有32個僱主,即每1至2年就會轉工,難怪管理層大呼頭痛。」

企業喊難培訓接班人,Adam 則提醒,轉工已是大勢所趨,改變思維才是王道。「企業不要抗拒新趨勢,反而要視培訓為長遠的規劃和準備。新一代的作風改變,企業轉型已是必然。透過了解Y世代的工作目的和推動力,改善發展方向,除了減低開支,還有助管理新舊員工。」

他更認為,近年退休歲數延遲,舊員工回來的機會愈來愈高,不失為吸納人才的機遇。「比起新員工,舊員工能迅速熟習公司環境、具行業經驗、了解競爭對手,是更好的接班人,回頭更加為公司擦亮了僱主品牌。」

工作要彈性 具發展機會

欲改變企業思維,拖慢新人流失率、減少企業開支,應如何着手?Adam 數出對Y世代而言,最吸引的3大因素。

1)設立彈性工作

Adam 笑言X世代如自己,大多難以理解新一代的手機恐慌症(Nomophobia,指無法使用電話時過度焦慮)。「對我們而言,關掉了電話,反而更輕鬆、自在。但Y世代成長時正值科技急速發展,比我們更依賴科技。」

社交網絡24小時運作,令不少Y世代「機不離手」,間接練成了Y世代獨有的工作模式。「很多人睡前、醒後第一件事便是看電郵信息,連去旅行也習慣帶移動裝置接收資訊。對他們而言,時、地、人的分野很模糊,可能會傾向在家、咖啡店等更自在的地方工作。」因此,不局限工作地點、時間富彈性的工作制度,成為留人要素。

2)團隊比企業重要

有管理層為留住員工,近年大搞僱主品牌(Employer branding),但要命中紅心,關鍵或在「團隊形象」。「54%受訪者對自己的工作團隊更有歸屬感,比對企業的高8%,證明已有逾半人不是以企業形象為先。」

他引述調查機構 Gallup 的報告指,工作環境中能找到好朋友的員工,對團隊較有歸屬感,工作滿意度亦較高。「總括而言,團隊中缺乏社區感(Sense of community)、歸屬感,同事的親和力較弱,又缺乏挑戰和發展機會,Y世代就最易辭職。

Adam 認為,企業應向團隊提供一個能被強烈分享的「工作意義」。「要縮緊企業結構,將員工的注意力由職級轉向對象、消費者和用戶。另外,每5至10年要審視一次企業管理和發展方向。無論對客戶還是員工,都要答到一個問題:『為甚麼要選這間公司?』」

3)發展機會清晰

Y世代則較重視工作的內在價值和意義,和X世代以薪金、退休金等外在因素為推動力的傾向不同。「研究中有位女生坦言自己得到企業重用,但因為入職6個月後仍未升職,已產生去意。

對Y世代而言,學夠了便會走,對晉升速度的要求變相更高,10年後才升職已是太慢。

工作具挑戰、發展和學習機會,對Y世代尤其重要。

鄧曉聰

.END

Leave a comment

Filed under Uncategorised

僵尸肉多为国外过期战备肉! – 新京报

张德江:清理对职校生就业不合理规定 – 2015-06-30 新京报

昨日上午,委员长张德江向全国人大常委会作关于检查《职业教育法》实施情况报告。本次是职业教育法施行19年来,第一次执法检查。此次职业教育法的执法检查组,张德江亲自担任组长;查出职校生待遇偏低、就业受歧视等问题。

昨日上午的全国人大常委会,全国人大常委会委员长张德江离开了主席台,坐到了报告席,以全国人大常委会职业教育法执法检查组组长的身份,向大会作关于检查《职业教育法》实施情况的报告。

张德江在向会议报告执法检查主要情况时说,办好职业教育、培养大批高素质应用技术人才,是提高劳动者技能素质、促进青年就业创业的重大民生工程,也是推动产业结构优化升级、提升国际竞争力的重要途径。

作为全国人大常委会重要的法律监督形式,执法检查已经开展了20多年。此前,由全国人大常委会组织的执法检查,一般由全国人大常委会副委员长担任组长,依托一个相关的专门委员会具体组织实施。可这次《职业教育法》执法检查,则是由张德江亲自担任执法检查组组长。全国人大常委会委员长担任执法检查组组长,这还是全国人大常委会有史以来的第一次。

执法检查如何开展?

张德江率队赴河南重庆检查

本次是职业教育法施行19年来,第一次执法检查。此次职业教育法的执法检查组,阵容强大,不仅张德江亲自担任组长,王晨、艾力更·依明巴海、陈竺这3位全国人大常委会副委员长,和主任委员柳斌杰,担任副组长。

由全国人大常委会委员长亲自带队的执法检查,检查流程与全国人大常委会的其他执法检查并无不同。

执法检查启动前,也是由专门委员会先期调研,提出执法检查工作方案。正式启动的第一个“动作”,是听取有关部门的执法情况汇报。

3月25日,执法检查组召开了第一次全体会议,国务院副总理刘延东出席会议并讲话,教育部、人社部、发改委、财政部等部门作了有关工作情况汇报。

相关各政府部门向执法检查组介绍情况,这是执法检查的惯例,每次执法检查的第一次全体会议,相关国家部委的负责人都会出席。不过,不是每次的第一次全体会议,国务院副总理都会出席。

之后,执法检查组分为四个小组,先后到吉林、江苏等8省份开展执法检查。张德江率领其中一组,去了河南、重庆等地,还曾走进企业车间、职业院校等。

查出了哪些问题?

  职校生待遇偏低 就业受歧视

张德江表示,目前,职业教育存在六大困难和问题。

对职业教育重要性认识仍然不足,“许多地方把职业院校放在中招、高招最后批次录取;职业学校毕业生就业率虽高,但就业质量不高,待遇偏低,在择业、升学、报考公务员等方面存在诸多政策限制和歧视”。

不能满足社会对技术技能人才的多方面需求,“现有用人和就业政策不利于系统培养人才,开展学徒制培养、推进‘双证书’制度均面临体制机制障碍”。

教育经费稳步增长机制不够健全,“目前约三分之一省(区、市)尚未落实‘制定本地区职业学校学生人数平均经费标准’的法定要求,特别是县级职业学校的办学条件较差,有些仍停留在‘一支粉笔、一本书’的落后水平”。

教师队伍还不适应职业教育发展需要,文化基础课教师多,专业技术课教师紧缺,“双师型”教师尤为不足,仅占职业教育教师总数的25.2%。

企业办学的作用未能充分有效发挥,“一些大型企业无意提前介入技能人才培养,认为这是政府的事,企业只管用人,无需培养”。

职业技能培训难以满足需求,“政府培训资金投入偏少,省级资金补助标准较低,市、县配套资金难以落实,很多地方人均仅300元至500元之间,导致培训机构积极性不高”。

有哪些建议?

减少取消就业率低专业和学校

张德江作报告时提了多个建议:增加劳动者特别是一线技术劳动者报酬,使能工巧匠获得应有尊重和待遇;尽快修改不适当的、唯学历要求的相关政策文件,清理对职业院校毕业生就业、晋升等方面的不合理规定;对不适应需求、就业率低的专业和学校,应减少招生、调整归并直至取消相关专业和学校。

在构建现代职业教育体系方面,“促进普通本科高等院校转型发展。加大地方高等院校结构调整力度,根据地方经济社会发展需要,调整专业设置,向应用技术型大学转变”。

师资队伍建设方面,“建议在现有教师编制总量内统筹考虑增加公办职业院校教职工编制,配备优秀教师重点充实一线教学和专业指导岗位”。

张德江强调,职业教育法中的一些规定已经与实际不相符合,本次执法检查已经征集整理了各界关于修法的建议和意见。

新京报首席记者 王姝

编辑:李丰


名校“掐尖战”,忘了大学的根本 – 张涛甫 东方早报 2015-06-29 11:18

每到高校招生季,名校之间抢生源、“掐尖”之战,就往往会曝出狗血的剧情来。

每到高校招生季,名校之间抢生源、“掐尖”之战,就往往会曝出狗血的剧情来。

比如,今年北大、清华这两所中国顶尖大学在四川的招生组,就在微博公然互掐。北大指清华砸钱抢新生,甚至到了“蛮横不讲理公然抢人的地步”;北大还称:清华“给文理科前十选择北大的考生挨个电话,称北大欺骗了他们,不会满足他们的专业志愿”。双方甚至还把陈年旧账也抖搂了出来。

这出狗血的抢生源闹剧,可谓让两大名校斯文扫地。

“得天下英才而育之”乃每所大学的共同愿景。但大学的本职之义,不是收割“英才”,而是培养“英才”。名校更应如此。名校之所以成为名校,在于能将资质并不怎么出挑的人培养成卓越的人才;或者说,能把资质出色的人培养得更加卓越。

从这个意义上说,招生只是大学教育的初始环节,但如今很多大学把赌注压在这个初始环节上,把起点看得比终点还要重要。这就本末倒置了。大学应当把功夫用在入门后的漫长教育流程上,而不是毕其功于一役,赌命于“开门红”。

世界一流大学的招生,虽然也竞争激烈,但不至于沦落到捉对厮杀、相互抹黑、斯文扫地的地步。国际名校虽然也重视分数,但不会分分计较;虽然重视起点标高,但没有把身家性命拼在起点上。如今,中国名校却把大学教育使命甩在了大学的门口。这是值得反思的地方。

而且,大学入门的生源大战,很多时候都沦为考分的“点数”大战,甚至升级为分分计较的地步。名校为了证明自己的名校价值,似乎只能拿考生的分数来说事了。北大清华之所以是中国最牛掰的大学,就是因每年的高招分数线没有第三者能及。一所名校如果依靠考生的分数来证明,这样的名校未免有点虚浮、脆弱。

名校在招生环节围绕分数血拼,虽然剧情热闹,但逻辑不靠谱。他们想当然地认为:分数高的考生在能力上比那些分数低的考生高出一等,哪怕考分只有一分之差,也可能会被人为地隔成两个等第。其实,北大清华每年的高考分数线差异,象征意义大于实际意义。能进入北大清华的学生,在资质和学习能力上应在一个水准线上,但因过度放大分数的象征意义,造成大学和考生都在为分数拼死拼活。

在高招分数上分分计较,其负面影响是双重的。在基础教育方面,名校在招生环节分分计较,对基础教育释放明确的信号:分数是第一位的,要进好大学,就得靠高分。在高等教育方面,那些高分进入大学的学子会滋生优越感:我考分高,就应得到优待。

殊不知,入门时的高分与大学阶段的高分、高能是两码事。在基础教育以及高招阶段过度崇拜分数形成了巨大的应试惯性。这种惯性在大学阶段刹不住车,稀释甚至扭曲了大学教育的质量。很多的名校大学生把分数和绩点看得比什么都紧要,读书过于功利,视野不大,格局很小,精神矮化,狭隘地理解大学教育,将本该丰满、精彩的大学生活简化为成绩单上的数字。可见,大学入门时的分数崇拜,其影响已扩散到整个大学教育。这后果,不能小觑。

(作者系复旦大学新闻学院教授)

录入编辑:张珺


广东恩平:当地理科状元被奖励一套房 – 广州日报 2015-06-30

“百万+洋房”,著名侨乡乡亲、澳门恩平同乡会会长冯活灵去年在恩平专设的“学霸”奖学金就一度引发争议。而今年高考,恩平又再次传言称只要高考过重本,人人都有钱奖励,再次引起关注。

高考放榜,江门恩平企业“豪掷”现金与洋房奖励当地尖子生

“百万+洋房”,著名侨乡乡亲、澳门恩平同乡会会长冯活灵去年在恩平专设的“学霸”奖学金就一度引发争议。而今年高考,恩平又再次传言称只要高考过重本,人人都有钱奖励,再次引起关注。

记者昨日就此事向当地教育部门核实,该市教育局表示,这是一企业在恩平制订、并在教育局审核备案的高考奖励方案。而根据方案,并非过重本线考生人人有奖,而是根据录取层次、高考分数而定,奖完为止。

此外,该奖励方案中不仅包含现金,还有洋房。目前该企业赞助的首套“状元房”已赠给当地理科第一名考生。

文/广州日报记者黄子宁

25日广东高考放榜后,有坊间传言引发了不少江门学子的“羡慕嫉妒恨”,该传言称:恩平考生考上重本线,人人都有钱奖励。

“朋友圈里有老师说,今年考上一本的学生,都有可能获得2万元的奖励。”恩平一中的一名高三学生小陈向记者透露,这条传言考后已经在恩平各校中“不胫而走”。

根据市招生办对今年江门高考情况的统计,今年高考中,恩平共有97名学子入围“重本线”,是否意味着,今年恩平这97名高考生都能拿到“奖励”?

记者昨日从恩平市教育局核实了解到,坊间传言的“奖励”并非完全失实,而该“奖池”是由当地企业提供,而并非政府部门为主导对象。该市教育局办公室聂姓主任表示,奖励方案有规则,根据考生录取层次来发放奖金,并非是“人人有奖”。

记者通过恩平市教育局获取了恩平某企业与恩平市教育局协商的高考奖励金实施方案,根据方案,该企业拿出专项资金专奖优秀考生,而奖励顺序则是:先优先奖励“状元”,其次是“985工程”大学录取生,再是“211工程”大学录取生,最后才是“重本线”入围生。

“按高考分数由高到低,奖完为止。”聂主任表示,企业已经拿出150万元作为奖学金,此外,该企业老板个人还拿出27万元出来补充“奖池”。

“豪奖”方案

1.状元奖:文理分科考试期间,奖励总分超出广东省高考录取控制分数线分值更多的状元套间1套,另一状元奖励10万元;文理不分科考试期间,奖励状元套间1套(同上)。

2.“985工程”大学奖:奖励当年高考被“985工程”大学录取的学生,每生5万元。

3.“211工程”大学奖:奖励当年高考被“211工程”大学录取的学生,每生3万元。

4.重点线入围奖:奖励当年高考上重点线的学生,每生2万元。

恩平理科状元已获“状元房”

“考取第一名已经很意外,考后又当上了‘一房之主’更是意想不到。”记者采访了恩平黄冈实验中学戚文杰,在今年的高考中,他以633分的总分成绩成为当地的理科状元,并成了首套“状元房”的拥有者。

“我们还算小康之家,爸爸在汽修中心做工,妈妈在小学托管中心工作,不过有了新房后,我们家的居住环境会更好。”戚文杰对这份突如其来的“大礼”表示期待,他告诉记者,现在自己和家人仍住在恩城车站旁的宿舍楼中。戚文杰告诉记者,尽管目前还没拿到“状元房”的钥匙和房产证,但是房产商承诺,只要高校的录取通知书下发了,就能根据相关规定办理收房手续。

记者了解到,该房产位于恩城城区,地段较优。记者联系到一名该地产项目的一名售房主管阿琳,阿琳透露,“状元房”位于23楼,坐北朝南、三房两厅,内部宽敞明亮。“送给考生的还是毛坯房,质量是很好的。”阿琳表示,24~27楼还另抽4间商品房,未来还要奖励给高考的“学霸”们。

对于“状元房”市价多少阿琳并无透露。记者通过咨询恩平市住建部门了解到,该地产项目所在方位的商品房均价在4000元/m2左右,因此套房预估价或超50万元,在恩平属于中高档商品房。

企业、华侨设奖多

意在扭转教育劣势

今年高考,江门尖子生成绩在省内并不拔尖,全市文科状元仅排全省百名后。

“我们的学生主要流向开平、江门去了。”恩平市教育局一负责人提供给记者一份数据:2014年,该市小学流失153人,初中流失429人,主要以恩城一小、黄冈实验中学最多。

该负责人表示,每年由企业、华侨设奖奖励给高考优秀学生、教师及学校的“奖池”大约在300万元左右。“很多华侨希望能通过教育基金奖励来留住好学生,提高家乡教育水平建设。”该负责人表示,教育部门方面,每年会依据《恩平促进教育发展专项基金》规定,拿出10万元作为“高考突出贡献奖”。“奖励还是以企业、华侨为主导。”该负责人说。

没有人考上北大清华

奖金就用于小学建设

去年,著名侨乡乡亲、澳门恩平同乡会会长冯活灵在恩平专设的百万高考奖学金引发社会关注。根据规定,2015年~2021年,恩平学生若被北大、清华录取,将有机会获百万元奖学金。

然而规定实施首年,恩平暂未出现北大清华生。恩平市教育局负责人表示,通过部门与方案制订者协商,今年将从基金中拿出20万元用于当地小学建设,促进教育均衡发展,剩下的仍留给明年符合条件的优秀学子。


科技创新中心如何培育高技术服务需求 – 侯仕军 东方早报 2015-06-23 10:40

上海需高度重视本市、腹地、前沿市场规模巨大的战略性优势,从完善居民收入正常增长机制、促进企业服务外包市场加快发育、推进政府服务采购规模化扩张、深化户籍等制度改革..

来自居民、企事业单位及政府部门的高技术服务需求是上海服务业科技创新企业可持续发展的市场保障及其不断创新的灵感源泉。为真正解决最新服务技术的商业化问题从而落实市场与效益导向,上海科技创新中心的建设除了强调供给导向的科技资源配置,还需强化需求导向的创新政策以进一步统筹协调服务创新政策体系。为强化需求导向的服务创新政策,上海需高度重视本市、腹地、前沿市场规模巨大的战略性优势,从完善居民收入正常增长机制、促进企业服务外包市场加快发育、推进政府服务采购规模化扩张、深化户籍等制度改革解决“半城镇化”问题等方面培育具有领先市场特质的创新型服务技术及产品需求。

完善居民收入正常增长机制

目前,需要根据现阶段经济发展水平和生活成本状况发展提高个人所得税起征点,降低中低收入者的所得税负担,加强对高收入者个人所得税征管,充分发挥税收在收入分配中的调节作用,促进分配公平。

居民对高技术服务的需求需要更高居民收入的基础支撑。上海居民收入水平全国领先、位居前列的最低工资标准并不能掩盖居民收入正常增长机制仍不完善的事实。居民收入正常增长机制包括工资性收入、财产性收入和转移性收入(主要涉及养老金保障、慈善捐助和政府补助)正常增长机制三个方面。对于绝大多数中低收入民众来说,劳动工资收入是其最为重要的收入来源,甚至是多数人唯一的收入来源。因此,在中国劳动报酬占国民收入中的比重逐年下降以及再分配中收入调节不力的背景下,工资性收入正常增长机制仍是需要高度关注的焦点。

上海要培育最新技术市场需求,就要站在体制的高度看到,形成和完善居民收入正常增长机制要比增加居民收入更加重要。也就是要以居民工资性收入正常增长机制为焦点多方面加快完善,形成与经济发展相适应的居民收入正常增长机制。

一是扩大上调最低工资标准覆盖的人群。具有高边际消费倾向的中低收入群体的收入增长是现阶段一般服务消费增长的最基本推动力。在通胀压力和社会保障投入缺口加大的背景下,上海可继续借助2008年已经建成的上海居民收入核对系统,将这一措施惠及的对象从最低收入人群扩大到中等收入人群。而且针对中等收入人群要制定和推出更高的最低工资标准体系。除继续完善最低工资等制度外,还要通过加大对中低收入人群劳动技能和在职培训等的公共投入,提高他们的劳动力价值和市场竞争能力。同时还要加快转变经济发展方式,通过调整产业结构、促进产业升级创造要求更高、更有价值的工作机会。另外,还要继续建立公平、合理和完善的社会保障制度(推进社会保障制度建设,发展最低生活保障制度、新型合作医疗制度、养老保险制度等),完善社会保障体系,消除所有居民消费的后顾之忧。

二是增强企业工资增长指导线的强制性。上海要形成由人力资源和社会保障局每年定期发布本市企业工资增长指导线的制度。在具体落实方面,要求各类企业在工资指导线发布后30日内,通过集体协商方式制定贯彻落实工资指导线的实施方案,报劳动保障行政部门备案并实施。对于没有按规定到劳动保障部门备案的企业,将责令限期改正,逾期不改正将处以罚款。另外,通过加强横向沟通和合作,建议相关部门将企业落实工资指导线情况纳入各类评先选优和资质认定活动的考核体系。各级各有关部门、单位在组织开展面向企业的各种评先选优和资质认定活动时,对无正当理由不落实工资指导线政策及其备案制度的企业实行“一票否决”。

三是平衡劳资双方谈判地位,增强工资集体协商成效。改变目前工资集体协商过程中政府主导的状况,积极推进《劳动法》和《劳动合同法》实施等,保证广大劳动者的合法权益,尤其要通过劳动立法或颁布劳动法令确保工人真正享有包括组织和参加工会权、集体交涉权、集体行动权在内的“劳工三权”,真正保证工人有“最后手段”(last resort)可用。政府要真正发挥服务型政府的作用,为劳资双方谈判事先做好工作,给工人和企业讲明利害,在谈判中有所把握,推动最后结果多方共赢。同时对一些劳动密集型、利润空间很小的中小服务企业,在加强税源控制的前提下,根据其经营情况、利润大小降低税负和费用,同时尝试按照利润大小而非人头数量缴纳员工社会保险费用,为这些企业创造通过工资集体协商为员工加薪的有利空间。

四是完善个人所得税制,扭转逆向调节局面。按照“简税制、宽税基、低税率、严征管”的基本原则,进一步改革完善个人所得税制度。重点推动结合户籍管理的收入申报、财产登记等社会征信系统建设,推进综合与分类相结合的个人所得税制改革,在费用扣除标准、税率级次和税率水平等方面进行适度调整。例如根据上海现阶段经济发展水平和生活成本状况发展提高个人所得税起征点(包括对个人所得税工薪费用扣除标准建立和地区物价水平、通胀系数相挂钩的浮动机制),降低中低收入者的所得税负担。同时,要锁定垄断行业等重点项目,斩断政府与国有企业之间的直接联系,并强化税源监控(建立切实可行的收入监测制度,从根本上消除逃税、漏税),加强对高收入者个人所得税征管,充分发挥税收在收入分配中的调节作用,促进分配公平。

促进企业服务外包市场加快发育

针对制造业企业本身的金融服务等业务的发展转型,要加快放松准备金限制等相关政策、法律方面的限制,为其发展创造更加优越的资金和业务环境。

企业服务外包市场是最新科技成果的重要应用领域。企业在高技术服务性投入的供应方面外部化和专业化不足,将导致这些服务的社会化和有效需求有限,这也是制约上海高技术服务外包市场发展的重要因素。

上海可以进行以下应对。一是转变最终消费者观念。国内目前各种教育主要是一种生产者导向的教育,特别注重如何将受教育者培养成为生产所需的各种人才。而在科技创新驱动服务经济发展转型的背景下,更要注重从各种渠道将受教育者培养成为能够从用户角度思考问题并了解、理解和接受各种最新消费观念(例如服务外包情况下的工业品消费观念)的消费者。在此基础上还可以通过直接补贴、税收优惠、价格优惠等措施鼓励用户及重大工程项目业主购买社会和谐型、资源集约型和环境友好型新产品,甚至通过强制性标准和倾向性措施引导民众使用这些新产品。

二是转变中间消费者观念。从资源(能源)价格、环保执法、分类(歧视)信贷、差别税收等多种体制性角度加大企业通过内部自给专业化服务所产生的成本和风险,促进企业增强外包专业服务需求的压力和观念,根本性改变一些企业和单位长期存在的“大而全”、“小而全”的经营模式。另外,要适应节能减排、低碳化发展的战略需求,加快研究并实时征收企业生态税,引导制造企业增加服务等人力要素在投入中的比重(同时减少自然资源在投入中的比重),促进制造业投入服务化,刺激生产性服务需求扩张。同时也要加快研究并推行生产者责任延伸制度,将资源循环利用和废弃物合理处置纳入生产者的法定责任范畴,促进制造业产出服务化,刺激生产性服务供应的扩大。

三是加强外包服务主体培育。包括放松服务产品价格管制,改善产业融资环境,加快转向消费型增值税体制,刺激固定资产投资,促进服务外包企业主体的成长壮大,增强服务发包企业的消费信心。针对制造业企业本身的金融服务等业务的发展转型,要加快放松准备金限制等相关政策、法律方面的限制,为其发展创造更加优越的资金和业务环境。

推进政府服务采购规模化扩张

扩张服务集中采购目录涵盖范围。一方面,在现有服务集中采购目录基础上,纳入培训、科研与开发、租赁和物业管理以及城市免费Wi-Fi等服务项目,增加集中采购目录的类别和品种。另一方面,严格落实限额标准。

简政放权和服务型政府建设时代下服务采购将在政府采购中占据十分重要的地位,也是政府支持本地科技服务业发展的重要手段。但是上海政府服务采购还需克服以下局限性。

一是服务采购的统一性需要增强。二是服务采购规模化需要拓展。三是服务集中采购目录涵盖有限。四是服务采购方式仍较单一。

面对政府服务采购方面的诸多不足,上海可以从以下方面进行改进。一是加强服务统一采购。设立服务采购归口管理部门,加强服务采购统一控制,扩大服务采购规模,规范服务采购流程,提高服务采购透明度。二是壮大服务采购规模。纳入培训、咨询、研究等服务项目,扩大政府服务采购范畴,扩展服务提供商的选择范围,形成服务采购竞争机制,消除服务采购费用垄断,增强服务集中规模化采购的动力。三是扩张服务集中采购目录涵盖范围。一方面,在现有服务集中采购目录基础上,纳入培训、科研与开发、租赁和物业管理以及城市免费Wi-Fi等服务项目,增加集中采购目录的类别和品种。另一方面,严格落实限额标准。加快建设高效的政府集中采购平台,为服务集中采购创造有吸引力的交易和管理条件。同时,加大监管力度,确保单项或批量价值在限额标准以上的服务采购项目统一纳入集中采购范畴,消除“不能统”和“不想统”的机会空间。四是丰富服务采购方式。要根据实际情况灵活确定服务采购方式,但也要减少邀请招标采购、增加公开招标采购和竞争性谈判采购。同时要加强采购方式监管力度,借助互联网设施确保不同采购方式都按统一平台、固有程序进行透明采购,实现服务采购规范化、公正化。

深化户籍等制度改革解决“半城镇化”问题

上海要逐步切断就业制度、土地制度、社会保障制度、行政管理制度与户籍制度之间的直接关联,建立起完善的、平等的居民权利保障制度,让各层次劳动力自由流动,与城里人享受同等公共服务,激发城市的生产和生活活力,以高质量的城市化推动高科技服务消费增长、高科技就业总量提高和创新型服务经济的发展。

城市是最新服务技术成果的主要来源和应用的主要载体。城市化水平是影响高技术服务需求的重要因素。短期内上海土地和资源的拓展毕竟有限,现在需要立即着手提升上海城市化质量增加服务需求。

上海在城市化质量方面或多或少也存在“半城镇化”的问题。这种问题是指,在目前严格的户籍制度以及就业制度、土地制度、社会保障制度、行政管理制度与户籍直接相联的情况下(尽管已经引进并不断改进上海户口积分制度),大量居住在城市的农村产业工人虽被统计为城市人口,但并不能真正同等享受各类城市公共服务,其收入水平、消费模式也无法等同于拥有户口的一般城市居民。

上海要解决制约高技术服务需求培育的“半城镇化”问题,一是要继续优化户籍管制,主动吸纳适合到城市居住的各层次人口。要充分认识到,随着劳动力结构性短缺时代的到来,上海基于科技创新的服务经济发展转型需要的是多层次人才,而且这些各层次人口不仅仅是公共服务和资源的消费者,也是服务市场、科技市场需求和供应以及遏制劳动力成本过快上涨的重要贡献者。二是同时要切断上海居民的国民权利与户籍之间的直接联系。上海建设国际化大都市的宗旨应该是增进所有居民(不仅仅是户籍居民)的安全感、幸福感、归属感和认同感。这种安全感、幸福感、归属感和认同感应该与户籍无关,而是与居民在上海的奋斗和表现直接相关。因此,上海要逐步切断就业制度、土地制度、社会保障制度、行政管理制度与户籍制度之间的直接关联,建立起完善的、平等的居民权利保障制度,让各层次劳动力自由流动,与城里人享受同等公共服务,激发城市的生产和生活活力,以高质量的城市化推动高科技服务消费增长、高科技就业总量提高和创新型服务经济的发展。■

(作者系华东师范大学商学院副教授,管理学博士。田春玲编辑,工作邮箱:tiancl@thepaper.cn)

录入编辑:周子静


“僵尸肉”肉龄检测难 多为国外过期战备肉! – 2015-06-30 新京报

“僵尸肉”到底来自哪里?是否能检测出实际肉龄?记者采访初步了解到,“僵尸肉”多为国外替换的战略储备物资,流向二三线城市的小餐馆。更令人担忧的是,“僵尸肉”还面临肉龄检测难,无法判断出实际存放年龄。

  多来源于国外的过期战备肉,二三线城市小餐馆成最大客户

“僵尸肉”的消息上周被公布出来,立马引起各方惊叹和热议。海关总署查处走私冻品货价超30亿元,包括冻鸡翅、冻牛肉等副产品10余万吨,甚至有超四十年的陈年“僵尸肉”。它们悄无声息地出现在宵夜摊、餐厅。

根据已披露的陈年肉集散城市长沙为样本,涉事10万吨冻肉折合2亿斤,以餐馆最常见的青椒肉丝为例,每盘用冻肉250g,可做出2亿盘青椒肉丝。这意味着,722万人口的长沙以每天人均一盘的速度,需27天才能全部吃完。如果以散装鸡翅每个50g来算,可做出20亿个烤翅。700多万长沙市民每天吃一个鸡翅,需277天才能消耗完。

当然,消息也引起了质疑,有人指出四十多年的仓储、冷冻费用超过了冻肉本身价值,走私并不划算。

“僵尸肉”到底来自哪里?是否能检测出实际肉龄?带着这些疑问,新京报记者采访初步还原过期陈年冻肉的来源和流向,“僵尸肉”多为国外替换的战略储备物资,流向二三线城市的小餐馆。更令人担忧的是,“僵尸肉”还面临肉龄检测难,无法判断出实际存放年龄。

一问 “僵尸肉”从哪里来?

多为国外过期战备肉

据报道,此次查处的走私冻肉中,包装上生产日期显示“肉龄”长达三四十年,甚至有“70后”冻肉。

一位长期从事牛肉贸易的崔某告诉新京报记者,这种陈年冻肉多为国外的战略储备物资,以美国为主。在仓储物资的替换中,部分陈年牛肉开始流通向市场。“长时间冷冻保存后,牛肉表面区域已开始氧化发黑,所以不会直接作为冻品肉卖给消费者。而经过餐馆用卤制、煎炸的烹饪方式处理后,能掩盖牛肉卖相,口感几乎与正常牛肉没有区别,普通消费者很难区分开来。”崔某说。

据了解,出于战略储备和稳定价格的需要,各国都会主动将大量肉类冷冻储存。以我国在2007年颁布的《中央储备肉管理办法》规定,冻猪肉原则上每年储备3轮,每轮储存4个月左右;冻牛、羊肉原则上不轮换,每轮储存8个月左右。

“对牛羊肉等冻品的保质期,国内规定一般是8个月到12个月左右,超期后不得解冻。但国际上其他国家保存时间要更长,普遍达2年。”中国肉类协会副秘书长高观对新京报记者表示,虽然各国对冷冻肉的保质期有详细规定,但冷库的管理水平也参差不齐,并非全部严格执行标准。

事实上,陈年战略储备肉的身影在国际上也是屡次出现。2010年,俄罗斯内务部经济安全局在别尔哥罗德州破获一起肉制品走私案,在冷战期间储备、冻龄超过30年的“战备肉”从美国、巴西、比利时、加拿大经乌克兰走私入俄,犯罪团伙从事此勾当已有数年时间。

二问 长年冷冻费用有多高?

成本低每年每吨仅17元

“僵尸肉”被公布后也引起了许多质疑,网上有消费者称四十多年的仓储、冷冻费用,甚至要超过冻肉本身的价值,没必要花大力气走私进入国内。

真的是如此吗?

一位出入境检验检疫局人员告诉新京报记者,与盈利性冷库需要考虑仓储、电费不同,这种战略储备肉的储藏成本非常低廉。作为战备物资储存的肉类,折算后的冷冻成本约为每吨17元/年左右。

也正是低廉的储藏成本和价格,催生了近年来走私过期陈年肉的市场热潮。该人士称,售价低于30-40元区间的牛肉,就有这样的嫌疑。

三问 什么客户在买“僵尸肉”?

二三线城市的小餐馆消化

在过期肉流向国际市场中,肉制品销量显著增加的中国首当其冲。其实,长沙海关破获的“僵尸肉”走私案也并非首次出现。去年10月,长沙市工商局曾检查湖南红星冷冻食品有限公司,查获猪肚、凤爪、猪脚等动物产品25.3吨,大多数超过保质期24个月,部分进口冻肉没有入关证明,涉嫌走私。

6月24日起,新京报记者连续走访北京东城、丰台多家菜市场、肉类批发市场发现,北京市场普遍供应冷鲜肉,鲜见冻品出售。多位商家称,出售的肉类均为现宰,不存在冷冻肉。所以,陈年冻肉在零售市场很难见到。

那么,“僵尸肉”都到了哪里呢?新京报记者了解到,走私肉已形成一条完整的再加工、分销产业链,重点向二三线城市转移。

“走私肉从香港入关后,主要销往云南、贵州、四川等省市,目标客户就是小餐馆。”一位接近分销渠道的知情人士告诉记者,这类过期冻肉的进口价格非常便宜,也没有检验报告。为躲避检疫监管环节,分销时也会避开北京、上海等一线城市,重点向二三线城市的餐馆供货。“这类肉存放时间过长,为保持外表的油亮也会注水,用手摸时表面有黏稠感。”

在这张走私销售网络中,形成了驻点团队、环环相扣的严密模式。该人士称,走私肉由国外运往香港等口岸,再通关进入广州等集散城市,经过分割、再冷冻后销往全国各个渠道。同时,厂房跟冻库往往建在偏远郊区,运输时由好几批车队走不同线路,每个地点和环节都有对口人员接应,直接销往饭店、餐馆。

另一位从事乌拉圭牛肉进口的香港贸易公司负责人林某还告诉新京报记者,存放三四十年的“僵尸肉”在业内实际并不多见,只有在国外部分冷库盘点时才会流出,超出保质期1~2年的冻肉才是市场需求最旺盛的。据他透露,进出口肉类贸易周期较长、交易量庞大,一旦出现积压过期,就会有大量经销商找上门,“提出以40%~50%甚至更低价格全部收购。”

四问 “僵尸肉”能测出存储时间吗?

“肉龄”检测难 无法判断实际时间

多家食品安全检测机构和专家向新京报记者表示,根据目前技术手段,一般能对肉质的感官、微生物等指标进行检测,以此来判断其是否过期,但很难直接判断出陈年冻肉的实际存放年龄。

国内现有的肉制品检测标准为 GB2707-2005鲜(冻)畜肉卫生标准、GB/T 1723-2008鲜冻分割牛肉等卫生标准。其中,对肉制品检测集中在色泽、黏度、气味等感官指标,冻禽解冻失水率、挥发性盐基氮含量等理工检验指标,菌落总数、大肠菌群、沙门氏菌等微生物指标。

中国农业大学教授、中国农学会农产品贮藏加工分会理事长南庆贤介绍,陈年冻肉在长期储藏中表面会出现发黄、发褐甚至氧化发黑,其肉质细胞中的营养早已流失,纤维质也发生变化。而“进口走私中储藏环境很难保证,车内一旦到达0℃以上的解冻条件,冻肉化开后会迅速滋生细菌导致腐败。这时候即便再次冷冻,肉质还是存在大量对人体有害的病菌。”

针对“僵尸肉”,目前江西、广东、黑龙江、安徽、重庆等多省市食药监局已展开了专项整治,批发市场、大型仓储食品冻库、餐饮企业重点检查冻肉来源是否合法、是否超过保质期。

有食药监局要求,凡是销售进口冻肉产品的,一律要求经营和提供海关和出入 部门出具的有效合格证明。对未提供相关证明的,一律停止销售、下架封存并做好登记。

采写/新京报记者 李栋 实习生 杨洁

编辑:李丰


“中国女辛德勒”的故事成国礼 – 早报2015-06-29 02:56

http://www.dfdaily.com/html/150/2015/6/29/1282398.shtml

6月24日晚,国家主席习近平和夫人彭丽媛在瀛台会见到访的比利时国王菲利普夫妇。其间,向菲利普国王夫妇赠送了一本书——《盖世太保枪口下的中国女人》英文版。

■ 习近平赠比利时国王《盖世太保枪口下的中国女人》

■ 主人公原型二战时曾营救比利时人

帮助钱秀玲救下100余人的德军将领冯·法尔根豪森。

比利时当地报纸对钱秀玲的报道。

2007年,钱秀玲(前排左一)与她救出的部分人质合影。

6月24日晚,国家主席习近平和夫人彭丽媛在瀛台会见到访的比利时国王菲利普夫妇。其间,向菲利普国王夫妇赠送了一本书——《盖世太保枪口下的中国女人》英文版。

这一小说改编自真实故事,主人公钱秀玲在中国知名度不高,但在比利时被尊称为“比利时的中国母亲”、“中国的女‘辛德勒’”。二战比利时被纳粹德国占领期间,她从盖世太保枪口下营救下100余名比利时反战人士。

今年是世界反法西斯战争胜利70周年,人民文学出版社将在7月份重新出版此书。该书作者张雅文透露,她还将推出《盖世太保枪口下的中国女人》纪实版。

比利时的“中国母亲”

“我有两位母亲,一位母亲是比利时人,一位是中国的钱秀玲。如果没有她,没有我的今天,因为我的父亲就是96名人质之一。”2002年,比利时艾克兴市前市长杜特里约到北京参加《盖世太保枪口下的中国女人》电视开播仪式时,说了这样一句话。96名人质,是战争期间钱秀玲救下的最大一批反战人士。除此之外,究竟救下了多少人,她自己都不记得了。

1929年,16岁的钱秀玲来到比利时鲁汶大学攻读化学学位时,最大梦想是成为中国的居里夫人。然而,二战爆发,很快蔓延至整个欧洲,一个普通中国女人的学术梦想更是一击即碎。

在战火中,她选择成为比利时的“辛德勒”。

1940年,德军占领比利时,战火波及到了钱秀玲与丈夫贝尔兰基居住的艾克兴市艾尔伯蒙镇。当地青年罗杰因炸毁德军铁路被判绞刑。时任德军驻比利时和法国北部战区最高行政长官冯·法尔根豪森曾在中国担任国民党军事顾问,与钱秀玲的堂兄钱卓伦是莫逆之交。钱秀玲凭这层关系求见,打动法尔根豪森救下罗杰。

从这一次起,钱秀玲多次在这条战火纷飞的铁路线上来回。她的长子回忆说,他与母亲去布鲁塞尔找法尔根豪森就至少有五六次,一共救下一百余人。

二战结束后,比利时政府为了表彰钱秀玲,授予她“国家勋章”,并将市中心的一条大道命名为“钱夫人路”。比利时国王与王后还将一幅心爱的合影照签名后赠送给她。艾克兴市政府特意到古董店里买了一座铸有龙的中国铜塔,送给钱秀玲作为纪念。作为礼物,比利时政府还宣布正式给予钱秀玲国籍。

有意“遗忘”自己的荣誉

《人民日报》资深记者丁刚曾在比利时图书馆里查到1945年7月21日的一份报纸,上面刊登的一则报道记述了艾克兴市举行盛大集会庆祝解放的情景,“成千上万的居民们聚集在中心广场,他们当中有所有活着回来的人质和他们的家属。钱秀玲成了人们心目中最伟大的英雄。当她走上阳台,向广场上聚集的居民们挥手致意表示感谢时,整个广场沸腾了起来。人们不停地高呼‘贝尔兰基夫人!贝尔兰基夫人!’。”

然而,在比利时享有盛誉的钱秀玲,却低调地继续居住在艾尔伯蒙镇,甚至有意“遗忘”着这段经历。

钱秀玲曾3次回乡,但她从未向家乡亲人说起自己当年乱世救人的经历。家乡人只知道她是一名定居在比利时的退休医生,只知道曾经有过一位从国外回来探亲的老太太。

“有关当年救人的故事,钱秀玲只记得关键的几次,其余的几乎都忘却了。”1999年,作家张雅文接到朋友电话,说在《环球时报》上看到了钱秀玲的事迹,觉得是很好的创作题材。张雅文为此自费前往比利时寻访钱秀玲,陪着老人呆了二十多天,写出了《盖世太保枪口下的中国女人》。钱秀玲的淡忘让张雅文至今遗憾。

2001年,电视剧《盖世太保枪口下的中国女人》将要开拍,编剧赵冬苓等人特意去比利时拜访钱秀玲。当时钱秀玲已是88岁高龄,穿着蓝旗袍,涂着一点淡淡的口红等待他们。她不记得艾克兴市什么时候以她的名字命名了路名,甚至不记得将比利时国王授予她的国家勋章放到了哪里,但赵冬苓问她对冯·法尔根豪森的评价时,老人几乎不假思索地回答,“一个有道德的人。”

“从老人的遗忘,我好像抓住了她最有价值的东西。” 赵冬苓感叹。

钱秀玲的孙女达蒂雅娜全程跟踪了剧组在比利时的拍摄过程,并据此制作了一部纪录片,定名为《我奶奶是英雄吗?》。片中,钱秀玲并不承认自己是“英雄”,认为自己只是出于良心,做了一个正常人应该做的事。

后来,艾克兴市市长曾向媒体表示:“钱夫人当然是个英雄。在那样的乱世中,一位弱女子成就这等非凡事迹,需要无比勇气与至高正义感。或许她自己认为正常,但那是一个不正常的年代,能够做出这样‘正常’行为非常可贵。”

2008年8月1日,钱秀玲在比利时首都布鲁塞尔安然辞世,享年95岁。比利时人给了她隆重的葬礼。近200人参加了在布鲁塞尔圣心大教堂举行的隆重追悼仪式,艾克兴市市长率旗队、乐队和二战老兵英雄团出席了悼念活动、并致悼词,悼念仪式上奏比利时国歌和授国旗覆灵柩。

《盖世太保枪口下的中国女人》的作者张雅文称钱秀玲为“钱妈妈”,而比利时人称她为“比利时的中国母亲”。这个称呼也许比“国家英雄”更能概括钱秀玲的一生。她本来是一个瘦弱的女人,却因为责任感,担起了母亲的职责。

录入编辑:任凭


“钱妈妈是比利时人心中的英雄” – 张雅文 发表于2015-06-29 02:53

http://www.dfdaily.com/html/150/2015/6/29/1282397.shtml

1913年3月12日,钱妈妈出生于江苏宜兴一个开明的乡绅家庭。1929年,16岁的她随同哥哥一起来比利时留学,22岁便获得了鲁汶大学化学博士学位。

《盖世太保枪口下的中国女人》英文版(左图)。钱秀玲和她救助的孩子们(右图)。

1913年3月12日,钱妈妈出生于江苏宜兴一个开明的乡绅家庭。1929年,16岁的她随同哥哥一起来比利时留学,22岁便获得了鲁汶大学化学博士学位。1935年,她与白俄罗斯青年格列高利·德·贝尔兰基结为伉俪,相濡以沫,相亲相爱地生活了几十年。婚后,她随丈夫来到距离布鲁塞尔170公里的偏远小村艾尔伯蒙,开了一家诊所。

1940年5月,纳粹德国占领了比利时。1943年3月,村里一个叫罗杰的反战青年被盖世太保逮捕,绞刑布告都贴出来了。全村陷入了一片绝望之中,拥到罗杰家里哭作一团。钱妈妈忽然想到德国派驻比利时的军政总督亚历山大·冯·法尔根豪森将军,早在1934年曾担任过蒋介石的高级军事顾问,与她堂兄钱卓伦将军的私交甚笃。钱卓伦来信说,法尔根豪森为人正直,对中国很有感情。于是,钱妈妈带着当地的市长、罗杰父母及全村父老乡亲的联名求情信,冒着生命危险,奔赴170多公里外的布鲁塞尔。这一天,恰好是她30岁的生日。第二天上午,她在布鲁塞尔郊区一座原犹太银行家的古堡里,见到了法尔根豪森。法尔根豪森欣然同意帮忙,将罗杰的死刑改成了苦役,另一名同名的死刑犯也因此获救。

这消息不胫而走。从此,钱妈妈成了比利时人民心中的英雄。全国各地被押人员的家属纷至沓来,纷纷向她求助。她风雨无阻地奔波在艾尔伯蒙与布鲁塞尔之间,冒着随时被盖世太保逮捕的危险,扔下几个不大的孩子,竭尽全力营救着那些抵抗者。从1943年3月到1944年5月,经她手究竟救了多少人,她自己已经记不清了。

花甲之年的法尔根豪森将军,不顾被希特勒撤职杀头的危险游说柏林总部赦免反战人士的死刑,是出于他的正直和未泯的人性。他对钱妈妈说:“我非常钦佩那些抵抗者的爱国行动!”他叮嘱她:“一定要把赦免名单亲自交到我手里,免得落到他人手里惹出麻烦!”他告诫她:“你要当心,在城里和乡下,都有不少比利时的卖国贼,好多事情都坏在这些人身上!

”1944年6月8日,盟军在诺曼底登陆后的第3天,艾克兴市的抵抗组织击毙了3名盖世太保军官,盖世太保立刻包围了小镇,逮捕了96名青年男人,并宣布:36小时之内必须交出枪杀盖世太保官员的游击队员,否则每次枪毙15人,直到交出袭击者为止。人们在绝望中又想到了钱秀玲,他们从地下室草堆里翻出一台老掉牙的雪铁龙汽车,从德国人那偷来一点儿汽油,跑了160多公里,深夜12点找到了钱家。钱秀玲拖着5个月的身孕,立刻登上破旧的雪铁龙,跟着3个陌生人连夜赶往艾克兴市。第2天上午,她最后一次见到法尔根豪森,说明了来意。法尔根豪森说:“我现在的处境很糟,盖世太保在严密地监视我,我很快就要被解职了。但请您放心,我会利用手中最后的权力来拯救这些无辜的生命!”

96名人质果然获救了,他们被押往德国的集中营去干苦力,直到二战结束。暗杀希特勒的“7.20”事件失败之后,7月29日,法尔根豪森被盖世太保秘密逮捕,关进了集中营

二战结束之后,艾克兴市政府举行声势浩大的表彰大会,比利时政府特授予钱妈妈国家英雄勋章,并将一条街命名为“钱秀玲女士之路”。钱秀玲成了家喻户晓的人物,国王和王后将亲自签名的合影赠送给她,留作纪念。

1948初春,法尔根豪森以比利时头号战犯的身份被押回布鲁塞尔,接受军事审判。钱妈妈得知后,立刻到监狱里去探望他,而且不畏舆论压力,不惧众人唾骂,为这名阶下囚将军四处奔走呼号,答记者问,发表文章,向社会大胆陈述自己的观点:“我在大战期间为比利时人民做了一点儿事情,得到政府授予的国家勋章。如果说这是我个人努力的结果,可这个结果恰恰是法尔根豪森将军给的!是他冒着生命危险,做出极大努力的结果。如果没有他的帮助,我将一事无成!”她的文章打动了一位曾荣获比利时战争勋章、名叫西西拉温特的反战女英雄,女英雄竟然爱上了这位具有正义感的纳粹将军,苦于没有与狱中人见面的机会,又来找钱妈妈为她鸿雁传书。

1951年3月,在监狱里度过了七个春秋的法尔根豪森,终于等来了法庭的审判。在法庭上,钱妈妈以证人的身份,向法官出示了当年被法尔根豪森赦免死刑者的联名信,并请来数名被营救过的人出庭作证。法尔根豪森最终被判处有期徒刑12年。他在监狱里仅关了1年就被提前释放了,与那位苦恋着他的反战女英雄回到德国,度过了平静的晚年生涯,直到1966年去世,享年88岁。

(作者系《盖世太保枪口下的中国女人》作者,本文节选自该书后记)

录入编辑:任凭

.END

Leave a comment

Filed under Uncategorised

官不講理, 說慣假話, 正義無望, 民怨迭起 – 茅于軾

自由獎中國得主論民怨之源 倡全民投票解決官員不講理 – 8仔 852郵報 2015-6-29

在中共全面接管香港的主旋律中,在香港愈來愈大陸化的大氣候下,一些「中國良心」說的話,往往有極大的警醒作用。

著名中國經濟學家、2012年「佛利民自由獎」得主茅于軾教授在《焦慮的中國人》一書中,就一針見血地指出,

中國近年的民怨來自政府官員的不講理,令社會陷入正義無望,以至社會的秩序靠假話來維持。而要想建立一個講道理的社會,其中一個辦法是建立一套規矩,其極致是全民投票。

這個講法,與港人早前提出的「公民提名」,距離其實只有零點零一公分。

社會陷入正義無望:

茅教授在書中指出,中國的民怨來自社會正義的缺失,意思就是「不講理」,就是「某些政府官員不講理,不主持正義」。

他舉例說:「中國每年有成千上萬件民告官的訴訟,但是勝訴的不到10%。

更有甚者,某些地方政府還抓上訪訴求正義的人,關他們,打他們。還要打壓幫助百姓維權的律師,找他們的碴,罰他們的款。」

茅教授不無感慨地續指,社會因而陷入正義無望,於是民怨迭起,而更根本的是「百姓也不再信任政府」,以至「每當官民發生矛盾時,民眾不分是非,一概認為政府是錯的」。這番話語,放在香港,一樣適用。

更有中港「融合」色彩的話語,是茅教授的「假話論」:「

社會的秩序靠假話來維持,假在真時真亦假,假話說慣了,政府說真話百姓也不信。

換言之,官民已經失去互信基礎。套用於香港,可謂比「中港失去互信基礎」更「到肉」。

解決辦法三層次:

至於解決辦法,茅于軾提出三個層次:

一、最有武力的一方認識到講理的必要性,願意放棄武力,提倡講理,將社會引向善治。這是從講武力轉變到講道理的第一步,也是最困難的一步(筆者按:香港的情況是開倒車,由「講道理」倒退到「講武力」;簡單講,就是由「AO治港」倒退到「差佬治港」);

二、要建立一套規矩,使講道理能解決問題,不會回到講武力的狀態。這需要雙方都有彼此尊重的習慣,有讓步的思想準備,有遵守法律的意識(筆者按:香港恐怕只會愈行愈遠)。

三、社會有紛爭的時候,通過談判不見得總能達成協議,所以最後必須有不動武的解決辦法,那就是通過全民投票解決問題,是為民主憲政制度(筆者按:香港政制改革肯定是憲制問題,茲事體大,全民投票可謂天經地義。可惜,如此簡單的道理,中共就是不講)。

一句到尾:過去三年,香港的民怨,何嘗不是政府官員不講理有以致之。

8仔

.END

Leave a comment

Filed under Uncategorised

ADC refactoring notes

  • *** ADC ***

adcCommandByteArray = {‘adcChannel0′: bytes([0x06, 0x00, 0x00]),
‘adcChannel1′: bytes([0x06, 0x40, 0x00]),
‘adcChannel2′: bytes([0x06, 0x80, 0x00]),
‘adcChannel3′: bytes([0x06, 0xc0, 0x00]),
‘adcChannel4′: bytes([0x07, 0x00, 0x00]),
‘adcChannel5′: bytes([0x07, 0x40, 0x00]),
‘adcChannel6′: bytes([0x07, 0x80, 0x00]),
‘adcChannel7′: bytes([0x07, 0xc0, 0x00])}

def adc(spiChannel, spiSlavePin, commandBytes):
resultByteArray = bytearray(3)
spiSendRecvThreeBytes(spiChannel, spiSlavePin, commandBytes, resultByteArray)

resultBinary = 0b000000000000
resultBinary |= (resultByteArray[1] & 0x0f)
resultBinary <<= 8
resultBinary |= resultByteArray[2]
* print(“ADC result in binary = “, end = ”)
* print(resultBinary)
resultFloat = (resultBinary / 0x0FFF) * 4.096
print(“ADC result = “, end = ”)
print(resultFloat)
return

def testAdc():
adc(spiChannel0, spiSlavePin0, adcCommandByteArray[‘adcChannel0′])
adc(spiChannel0, spiSlavePin0, adcCommandByteArray[‘adcChannel1′])
adc(spiChannel0, spiSlavePin0, adcCommandByteArray[‘adcChannel2′])
adc(spiChannel0, spiSlavePin0, adcCommandByteArray[‘adcChannel3′])
adc(spiChannel0, spiSlavePin0, adcCommandByteArray[‘adcChannel4′])
adc(spiChannel0, spiSlavePin0, adcCommandByteArray[‘adcChannel5′])
adc(spiChannel0, spiSlavePin0, adcCommandByteArray[‘adcChannel6′])
adc(spiChannel0, spiSlavePin0, adcCommandByteArray[‘adcChannel7′])
return

  • *** Sample output ***
    “””
    PYB: soft reboot
    ADC result = 2.49761
    ADC result = 2.49761
    ADC result = 2.500611
    ADC result = 0.0
    ADC result = 4.095
    ADC result = 4.095
    ADC result = 0.0
    ADC result = 2.500611
    “””

.END

Leave a comment

Filed under Uncategorised

MCP3208 ADC function tdd notes

def testAdc(spiChannel, spiSlavePin, commandBytes):
resultByteArray = bytearray(3)
spiSendRecvThreeBytes(spiChannel, spiSlavePin, commandBytes, resultByteArray)

result12BitBinary = 0b000000000000
resultByteArray[1] = resultByteArray[1] & 0x0F
result12BitBinary = result12BitBinary | resultByteArray[1]
result12BitBinary = result12BitBinary << 8
result12BitBinary = result12BitBinary | resultByteArray[2]
print(result12BitBinary)
return


  • Program – main.py 2015jun29hkt1605
  • Description – test ADC MCP3208

import pyb
from pyb import UART
from pyb import SPI

  • ********** LED ********************************
  • *** LED pin config ***

ledPinList = [pyb.LED(i) for i in range(1,5)]

redLedPin = ledPinList[0]
greenLedPin = ledPinList[1]
yellowLedPin = ledPinList[2]
blueLedPin = ledPinList[3]

  • *** LED functions ***

def toggleLedPin(ledPin):
ledPin.on()
pyb.delay(250)
ledPin.off()
pyb.delay(250)
return

def blinkAllLedPins():
for pin in ledPinList:
toggleLedPin(pin)
toggleLedPin(pin)
return

def testLedPins():
blinkAllLedPins()

** ********** Buzzer ****************************

  • *** Buzzer pin config ***

buzzePin = blueLedPin

  • *** Buzzer functions ***

def buzze(count):
for i in range(0, count):
buzzePin.on()
pyb.delay(100)
buzzePin.off()
pyb.delay(200)
return

def setUpSystemBuzzer():
buzze(2)
return

def shutDownSystemBuzzer():
buzze(4)
return

def testBuzzer():
buzze(6)
return

  • ********** DigiOut ****************************
  • *** DigiOut pin config ***

  • digiOutPinList = [pyb.Pin.board.X18, pyb.Pin.board.X19, pyb.Pin.board.X20, pyb.Pin.board.X21,
    pyb.Pin.board.X22, pyb.Pin.board.X11, pyb.Pin.board.X12,
    pyb.Pin.board.Y3, pyb.Pin.board.Y4, pyb.Pin.board.Y11, pyb.Pin.board.Y12]

    for pin in digiOutPinList:
    pin.init(pyb.Pin.OUT_PP)

    pinX18 = digiOutPinList[0]
    pinX19 = digiOutPinList[1]
    pinX20 = digiOutPinList[2]
    pinX21 = digiOutPinList[3]
    pinX22 = digiOutPinList[4]
    pinX11 = digiOutPinList[5]
    pinX12 = digiOutPinList[6]
    pinY3 = digiOutPinList[7]
    pinY4 = digiOutPinList[8]
    pinY11 = digiOutPinList[9]
    pinY12 = digiOutPinList[10]

    • *** DigiOut functions ***

    toggleTime = 250

    def toggleDelay():
    pyb.delay(toggleTime)
    return

    def toggleDigiOutPin(pin):
    pin.high()
    toggleDelay()
    pin.low()
    toggleDelay()
    return

    def toggleAllDigiOutPin():
    for pin in digiOutPinList:
    toggleDigiOutPin(pin)
    toggleDigiOutPin(pin)
    return

    def testDigiOutPins():
    toggleAllDigiOutPin()
    return

    • ********** PSU ********************************
  • *** PSU pin config ***

  • psuPinList = [pinX18, pinX19, pinX20]

    psuPin0 = psuPinList[0]
    psuPin1 = psuPinList[1]
    psuPin2 = psuPinList[2]

    • *** PSU functions ***

    psuOpTime = 500

    def psuOpDelay():
    pyb.delay(psuOpTime)
    return

    def switchOnPsu(pin):
    pin.low()
    psuOpDelay()
    return

    def switchOffPsu(pin):
    pin.high()
    psuOpDelay()
    return

    def resetPsu(pin):
    for i in range(0, 2):
    switchOffPsu(pin)
    switchOnPsu(pin)
    return

    def switchOffAllPsu():
    for pin in psuPinList:
    switchOffPsu(pin)
    return

    def resetAllPsu():
    for pin in psuPinList:
    resetPsu(pin)

    def testPsu():
    resetAllPsu()
    switchOffAllPsu()
    return

    • ********** UART *******************************
  • *** UART config ***

  • uartList = [UART(4, 9600, timeout = 1000, timeout_char = 1000),
    UART(2, 9600, timeout = 1000, timeout_char = 1000),
    UART(6, 9600, timeout = 1000, timeout_char = 1000)]

    uart0 = uartList[0]
    uart1 = uartList[1]
    uart2 = uartList[2]

    • *** UART functions ***

    def uartRepeatWriteString(uart, string, count):
    for i in range(0, count):
    uart.write(string)
    return

    def uartRepeatWriteStringTest(uart):
    print(“write character ‘5’ 100 times to uart 4″)
    uartRepeatWriteString(uart, ‘5’, 5000)
    return

    def uartCharLoopBackTest(uart, char):

    uart.readall()

    print(“char write to uart = “, end = “”)
    print(char)
    uart.writechar(ord(char))

    while uart.any() != True:
    pass
    num = uart.readchar()
    print(“char read from uart = “, end = “”)
    print(chr(num))
    return

    def uartTwoChannelCrossOverCharLoopBackTest(uartA, uartB, charA, charB):
    uartA.readall()
    uartB.readall()

    print(“uartA write char = “, end = “”)
    print(charA)
    uartA.writechar(ord(charA))

    print(“uartB write char = “, end = “”)
    print(charB)
    uartB.writechar(ord(charB))

    *while uartA.any() != True: ** uart has timeout 500ms already
    * pass

    numA = uartA.readchar()
    print(“uartA read char = “, end = “”)
    print(chr(numA))

    while uartB.any() != True:
    pass
    numB = uartB.readchar()
    print(“uartB read char = “, end = “”)
    print(chr(numB))
    return

    def testUart():
    * uartRepeatWriteStringTest(uart0)
    * uartRepeatWriteStringTest(uart1)
    * uartRepeatWriteStringTest(uart2)
    * uartCharLoopBackTest(uart0, ‘4’)
    * uartCharLoopBackTest(uart1, ‘5’)
    * uartCharLoopBackTest(uart2, ‘6’)
    * uartTwoChannelCrossOverCharLoopBackTest(uart0, uart1, ‘X’, “y”)
    uartTwoChannelCrossOverCharLoopBackTest(uart1, uart2, ‘A’, “B”)
    return

    • ********** BTM ********************************
  • *** BTM config ***

  • btmModePinList = [pinX21, pinX22, pinX11]
    btmModePin0 = btmModePinList[0]
    btmModePin1 = btmModePinList[1]
    btmModePin2 = btmModePinList[2]

    btmPsuPinList = [psuPin0, psuPin1, psuPin2]
    btmPsuPin0 = btmPsuPinList[0]
    btmPsuPin1 = btmPsuPinList[1]
    btmPsuPin2 = btmPsuPinList[2]

    btmUartList = [uart0, uart1, uart2]
    btmUart0 = btmUartList[0]
    btmUart1 = btmUartList[1]
    btmUart2 = btmUartList[2]

    btmModuleList = [[btmModePin0, btmPsuPin0, btmUart0, ‘BTM Module 0′],
    [btmModePin1, btmPsuPin1, btmUart1, ‘BTM Module 1′],
    [btmModePin2, btmPsuPin2, btmUart2, ‘BTM Module 2′]]

    btmModule0 = btmModuleList[0]
    btmModule1 = btmModuleList[1]
    btmModule2 = btmModuleList[2]

    • *** BTM functions ***

    btmOpTime = 100

    def btmOpDelay():
    pyb.delay(btmOpTime)
    return

    def setBtmAtCommandMode(pin):
    pin.high()
    btmOpDelay()
    return

    def setBtmConnectionMode(pin):
    pin.low()
    btmOpDelay()
    return

    def resetBtm(btmModule):
    setBtmConnectionMode(btmModule[0])
    resetPsu(btmModule[1])
    pyb.delay(500)
    setBtmAtCommandMode(btmModule[0])

    def btmModuleWrite(btmModule, bytes):
    btmModule[2].write(bytes)
    return

    def btmModuleRead(btmModule):
    bytes = btmModule[2].read()
    return bytes

    def btmAtCommandModeTest(btmModule):
    print(“\r\n\r\n***** Module = “, end = “”)
    print(btmModule[3], end = “”)
    print(” *****\r\n”)
    resetBtm(btmModule)
    btmModuleWrite(btmModule, ‘AT\r\n’)
    print(“bytes write = b’AT+Cr+Lf”)
    * bytesRead = btmModule[2].read()

    bytesRead = btmModuleRead(btmModule)
    print(“bytes read = “, end = “”)
    print(bytesRead, end = “”)
    return

    def btmAtCommandModeTestAllModule():
    print(“\r\n********** Begin testing all modules **********”, end = “\r\n”)
    for i in btmModuleList:
    btmAtCommandModeTest(i)
    resetBtm(i)
    switchOffAllPsu()
    print(“\r\n\r\n ********** End testing all modules **********”, end = “\r\n\r\n”)
    return

    def testBtm():
    btmAtCommandModeTestAllModule()
    return

    • *** System functions ***

    def setUpSystem():
    setUpSystemBuzzer()
    switchOffAllPsu()
    return

    def shutDownSystem():
    shutDownSystemBuzzer()
    return

    • ********** SPI ********************************
  • *** SPI config ***

  • *** SPI Channels ***

  • spiChannelList = [SPI(1, SPI.MASTER, baudrate=200000, polarity=0, phase=0, firstbit=SPI.MSB),
    SPI(2, SPI.MASTER, baudrate=200000, polarity=0, phase=0, firstbit=SPI.MSB)]

    spiChannel0 = spiChannelList[0]
    spiChannel1 = spiChannelList[1]

    • *** SPI Slave Pins ***

    spiSlavePinList = [pyb.Pin.board.X5, pyb.Pin.board.Y5]

    for pin in spiSlavePinList:
    pin.init(pyb.Pin.OUT_PP)
    pin.high()

    spiSlavePin0 = spiSlavePinList[0]
    spiSlavePin1 = spiSlavePinList[1]

    • *** SPI functions ***

    def spiSendBytes(spiChannel, spiSlavePin, sendBytes):
    spiSlavePin.low()
    spiChannel.send(sendBytes)
    spiSlavePin.high()
    return

    def spiRepeatSendBytes(spiChannel, spiSlavePin, sendBytes, repeatCount):
    for i in range(0, repeatCount):
    spiSendBytes(spiChannel, spiSlavePin, sendBytes)
    return

    def spiSendRecvTwoBytes(spiChannel, spiSlavePin, sendTwoBytes, recvTwoByteArray):
    spiSlavePin.low()
    spiChannel.send_recv(sendTwoBytes, recvTwoByteArray, timeout = 1000)
    spiSlavePin.high()
    return

    def spiSendRecvThreeBytes(spiChannel, spiSlavePin, sendThreeBytes, recvThreeByteArray):
    spiSlavePin.low()
    spiChannel.send_recv(sendThreeBytes, recvThreeByteArray, timeout = 1000)
    spiSlavePin.high()
    return

    def testSpiThreeByteLoopBack(spiChannel, spiSlavePin, sendThreeBytes):
    recvThreeByteArray = bytearray(3)
    spiSendRecvThreeBytes(spiChannel, spiSlavePin, sendThreeBytes, recvThreeByteArray)
    recvThreeBytes = bytes(recvThreeByteArray)
    print(‘recvThreeBytes = ‘, end = ”)
    print(recvThreeBytes)
    return

    def testSpi():
    print(“\r\n********** Begin test SPI **********”, end = “\r\n”)
    * sendThreeBytes = bytes([0x06, 0x00, 0x00])
    * spiRepeatSendBytes(spiChannel0, spiSlavePin0, sendThreeBytes, 100000)
    * spiRepeatSendBytes(spiChannel0, spiSlavePin0, ’55’, 100000)
    * spiRepeatSendBytes(spiChannel0, spiSlavePin0, bytes([0x06, 0x00, 0x00]), 100000)
    * testSpiThreeByteLoopBack(spiChannel0, spiSlavePin0, b’abc’)
    testSpiThreeByteLoopBack(spiChannel0, spiSlavePin0, bytes([0x06, 0x00, 0x00]))
    print(“\r\n********** End test SPI **********”, end = “\r\n”)
    return

    • ********** Segment LED ************************
  • *** Segment Led Module Config ***

  • segLedModuleList = [[spiChannel0, spiSlavePin0, ‘SegmentLedModule 0′],
    [spiChannel1, spiSlavePin0, ‘SegmentLedModule 1′],
    [spiChannel0, spiSlavePin1, ‘SegmentLedModule 2′],
    [spiChannel1, spiSlavePin1, ‘SegmentLedModule 3′]]

    segLedModule0 = segLedModuleList[0]
    segLedModule1 = segLedModuleList[1]
    segLedModule2 = segLedModuleList[2]
    segLedModule3 = segLedModuleList[3]

    • *** LED Display Driver ldd config ***

    lddRegAdd = {‘NoOp': 0x0,
    ‘DigitPosition0′: 0x1,
    ‘DigitPosition1′: 0x2,
    ‘DigitPosition2′: 0x3,
    ‘DigitPosition3′: 0x4,
    ‘DigitPosition4′: 0x5,
    ‘DigitPosition5′: 0x6,
    ‘DigitPosition6′: 0x7,
    ‘DigitPosition7′: 0x8,
    ‘DecodeMode': 0x9,
    ‘Intensity': 0xa,
    ‘ScanLimit': 0xb,
    ‘ShutDown': 0xc,
    ‘DisplayTest': 0x0f};

    lddRegData = {‘NormalDisplayOnMode': 0x00, ‘TestDisplayOnMode': 0x01,
    ‘DisableShutDownMode': 0x01, ‘EnableShutDownMode': 0x00,
    ‘AllDigitsNoDecodeMode': 0x0, ‘AllDigitsDecodeMode': 0xff, ‘OnlyDigit0Decode': 0x01,
    ‘DisplayIntensityLevel0′: 0x0, ‘DisplayIntensityLevel5′: 0x3,
    ‘DisplayIntensityLevel7′: 0x7, ‘DisplayIntensityLevel31′: 0xf,
    ‘Scan1Digit': 0x0, ‘Scan2Digits': 0x1, ‘Scan8Digits': 0x7}

    • *** Segment Led functions ***

    segLedOperationTime = 100

    def segLedOperationDelay():
    pyb.delay(segLedOperationTime)
    return

    def segLedSendBytes(segLedModule, bytesRegAddRegData):
    spiSendBytes(segLedModule[0], segLedModule[1], bytesRegAddRegData)
    segLedOperationDelay()
    return

    def testSegmentLed(segLedModule):
    print(“\r\n\r\n***** Module = “, end = “”)
    print(segLedModule[2], end = “”)

    • print (lddRegAdd[‘DisplayTestReg’])
    • print (lddRegData[‘NormalDisplayOnMode’])
  • *** Init ldd of Segment Led Module ***
    print(“\r\nInit ldd, … “, end = “\r\n\r\n”)

  • *for i in range (0, 100):
    * segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DisplayTest’], lddRegData[‘NormalDisplayOnMode’]]))

    • segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DisplayTest’], lddRegData[‘NormalDisplayOnMode’]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DisplayTest’], lddRegData[‘TestDisplayOnMode’]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DecodeMode’], lddRegData[‘AllDigitsDecodeMode’]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘ScanLimit’], lddRegData[‘Scan8Digits’]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘Intensity’], lddRegData[‘DisplayIntensityLevel7′]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘ShutDown’], lddRegData[‘DisableShutDownMode’]]))

    segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DigitPosition0′], 0x00]))

    print(“\r\n********** End test Segment Led Module **********”, end = “\r\n”)
    return

    • *** ADC ***

    def testAdc(spiChannel, spiSlavePin, commandBytes):
    resultByteArray = bytearray(3)
    spiSendRecvThreeBytes(spiChannel, spiSlavePin, commandBytes, resultByteArray)

    result12BitBinary = 0b000000000000
    resultByteArray[1] = resultByteArray[1] & 0x0F
    result12BitBinary = result12BitBinary | resultByteArray[1]
    result12BitBinary = result12BitBinary << 8
    result12BitBinary = result12BitBinary | resultByteArray[2]
    print(result12BitBinary)
    return

    “””

    float FongAdc03::digitalToFloatConvert(unsigned long adcResultBinary)
    {
    float adcResultFloat = 0.0;
    adcResultFloat = (float(adcResultBinary) / float(0x0FFF)) * 4.096;
    return adcResultFloat;
    }

    “””

    • ********** main test program **********

    setUpSystem()
    *testLedPins()
    *testBuzzer()
    *testDigiOutPins()
    *testPsu()
    *testUart()
    *testBtm()
    *testSpi()

    testAdc(spiChannel0, spiSlavePin0, bytes([0x06, 0x00, 0x00]))

    *testSegmentLed(segLedModule0)

    shutDownSystem()


    • End

    .END

    Leave a comment

    Filed under Uncategorised

    pyboard PSI tdd notes


    • Program – main.py 2015jun29hkt1605
    • Description – test SPI

    import pyb
    from pyb import UART
    from pyb import SPI

    • ********** LED ********************************
    • *** LED pin config ***

    ledPinList = [pyb.LED(i) for i in range(1,5)]

    redLedPin = ledPinList[0]
    greenLedPin = ledPinList[1]
    yellowLedPin = ledPinList[2]
    blueLedPin = ledPinList[3]

    • *** LED functions ***

    def toggleLedPin(ledPin):
    ledPin.on()
    pyb.delay(250)
    ledPin.off()
    pyb.delay(250)
    return

    def blinkAllLedPins():
    for pin in ledPinList:
    toggleLedPin(pin)
    toggleLedPin(pin)
    return

    def testLedPins():
    blinkAllLedPins()

    ** ********** Buzzer ****************************

    • *** Buzzer pin config ***

    buzzePin = blueLedPin

    • *** Buzzer functions ***

    def buzze(count):
    for i in range(0, count):
    buzzePin.on()
    pyb.delay(100)
    buzzePin.off()
    pyb.delay(200)
    return

    def setUpSystemBuzzer():
    buzze(2)
    return

    def shutDownSystemBuzzer():
    buzze(4)
    return

    def testBuzzer():
    buzze(6)
    return

    • ********** DigiOut ****************************
  • *** DigiOut pin config ***

  • digiOutPinList = [pyb.Pin.board.X18, pyb.Pin.board.X19, pyb.Pin.board.X20, pyb.Pin.board.X21,
    pyb.Pin.board.X22, pyb.Pin.board.X11, pyb.Pin.board.X12,
    pyb.Pin.board.Y3, pyb.Pin.board.Y4, pyb.Pin.board.Y11, pyb.Pin.board.Y12]

    for pin in digiOutPinList:
    pin.init(pyb.Pin.OUT_PP)

    pinX18 = digiOutPinList[0]
    pinX19 = digiOutPinList[1]
    pinX20 = digiOutPinList[2]
    pinX21 = digiOutPinList[3]
    pinX22 = digiOutPinList[4]
    pinX11 = digiOutPinList[5]
    pinX12 = digiOutPinList[6]
    pinY3 = digiOutPinList[7]
    pinY4 = digiOutPinList[8]
    pinY11 = digiOutPinList[9]
    pinY12 = digiOutPinList[10]

    • *** DigiOut functions ***

    toggleTime = 250

    def toggleDelay():
    pyb.delay(toggleTime)
    return

    def toggleDigiOutPin(pin):
    pin.high()
    toggleDelay()
    pin.low()
    toggleDelay()
    return

    def toggleAllDigiOutPin():
    for pin in digiOutPinList:
    toggleDigiOutPin(pin)
    toggleDigiOutPin(pin)
    return

    def testDigiOutPins():
    toggleAllDigiOutPin()
    return

    • ********** PSU ********************************
  • *** PSU pin config ***

  • psuPinList = [pinX18, pinX19, pinX20]

    psuPin0 = psuPinList[0]
    psuPin1 = psuPinList[1]
    psuPin2 = psuPinList[2]

    • *** PSU functions ***

    psuOpTime = 500

    def psuOpDelay():
    pyb.delay(psuOpTime)
    return

    def switchOnPsu(pin):
    pin.low()
    psuOpDelay()
    return

    def switchOffPsu(pin):
    pin.high()
    psuOpDelay()
    return

    def resetPsu(pin):
    for i in range(0, 2):
    switchOffPsu(pin)
    switchOnPsu(pin)
    return

    def switchOffAllPsu():
    for pin in psuPinList:
    switchOffPsu(pin)
    return

    def resetAllPsu():
    for pin in psuPinList:
    resetPsu(pin)

    def testPsu():
    resetAllPsu()
    switchOffAllPsu()
    return

    • ********** UART *******************************
  • *** UART config ***

  • uartList = [UART(4, 9600, timeout = 1000, timeout_char = 1000),
    UART(2, 9600, timeout = 1000, timeout_char = 1000),
    UART(6, 9600, timeout = 1000, timeout_char = 1000)]

    uart0 = uartList[0]
    uart1 = uartList[1]
    uart2 = uartList[2]

    • *** UART functions ***

    def uartRepeatWriteString(uart, string, count):
    for i in range(0, count):
    uart.write(string)
    return

    def uartRepeatWriteStringTest(uart):
    print(“write character ‘5’ 100 times to uart 4″)
    uartRepeatWriteString(uart, ‘5’, 5000)
    return

    def uartCharLoopBackTest(uart, char):

    uart.readall()

    print(“char write to uart = “, end = “”)
    print(char)
    uart.writechar(ord(char))

    while uart.any() != True:
    pass
    num = uart.readchar()
    print(“char read from uart = “, end = “”)
    print(chr(num))
    return

    def uartTwoChannelCrossOverCharLoopBackTest(uartA, uartB, charA, charB):
    uartA.readall()
    uartB.readall()

    print(“uartA write char = “, end = “”)
    print(charA)
    uartA.writechar(ord(charA))

    print(“uartB write char = “, end = “”)
    print(charB)
    uartB.writechar(ord(charB))

    *while uartA.any() != True: ** uart has timeout 500ms already
    * pass

    numA = uartA.readchar()
    print(“uartA read char = “, end = “”)
    print(chr(numA))

    while uartB.any() != True:
    pass
    numB = uartB.readchar()
    print(“uartB read char = “, end = “”)
    print(chr(numB))
    return

    def testUart():
    * uartRepeatWriteStringTest(uart0)
    * uartRepeatWriteStringTest(uart1)
    * uartRepeatWriteStringTest(uart2)
    * uartCharLoopBackTest(uart0, ‘4’)
    * uartCharLoopBackTest(uart1, ‘5’)
    * uartCharLoopBackTest(uart2, ‘6’)
    * uartTwoChannelCrossOverCharLoopBackTest(uart0, uart1, ‘X’, “y”)
    uartTwoChannelCrossOverCharLoopBackTest(uart1, uart2, ‘A’, “B”)
    return

    • ********** BTM ********************************
  • *** BTM config ***

  • btmModePinList = [pinX21, pinX22, pinX11]
    btmModePin0 = btmModePinList[0]
    btmModePin1 = btmModePinList[1]
    btmModePin2 = btmModePinList[2]

    btmPsuPinList = [psuPin0, psuPin1, psuPin2]
    btmPsuPin0 = btmPsuPinList[0]
    btmPsuPin1 = btmPsuPinList[1]
    btmPsuPin2 = btmPsuPinList[2]

    btmUartList = [uart0, uart1, uart2]
    btmUart0 = btmUartList[0]
    btmUart1 = btmUartList[1]
    btmUart2 = btmUartList[2]

    btmModuleList = [[btmModePin0, btmPsuPin0, btmUart0, ‘BTM Module 0′],
    [btmModePin1, btmPsuPin1, btmUart1, ‘BTM Module 1′],
    [btmModePin2, btmPsuPin2, btmUart2, ‘BTM Module 2′]]

    btmModule0 = btmModuleList[0]
    btmModule1 = btmModuleList[1]
    btmModule2 = btmModuleList[2]

    • *** BTM functions ***

    btmOpTime = 100

    def btmOpDelay():
    pyb.delay(btmOpTime)
    return

    def setBtmAtCommandMode(pin):
    pin.high()
    btmOpDelay()
    return

    def setBtmConnectionMode(pin):
    pin.low()
    btmOpDelay()
    return

    def resetBtm(btmModule):
    setBtmConnectionMode(btmModule[0])
    resetPsu(btmModule[1])
    pyb.delay(500)
    setBtmAtCommandMode(btmModule[0])

    def btmModuleWrite(btmModule, bytes):
    btmModule[2].write(bytes)
    return

    def btmModuleRead(btmModule):
    bytes = btmModule[2].read()
    return bytes

    def btmAtCommandModeTest(btmModule):
    print(“\r\n\r\n***** Module = “, end = “”)
    print(btmModule[3], end = “”)
    print(” *****\r\n”)
    resetBtm(btmModule)
    btmModuleWrite(btmModule, ‘AT\r\n’)
    print(“bytes write = b’AT+Cr+Lf”)
    * bytesRead = btmModule[2].read()

    bytesRead = btmModuleRead(btmModule)
    print(“bytes read = “, end = “”)
    print(bytesRead, end = “”)
    return

    def btmAtCommandModeTestAllModule():
    print(“\r\n********** Begin testing all modules **********”, end = “\r\n”)
    for i in btmModuleList:
    btmAtCommandModeTest(i)
    resetBtm(i)
    switchOffAllPsu()
    print(“\r\n\r\n ********** End testing all modules **********”, end = “\r\n\r\n”)
    return

    def testBtm():
    btmAtCommandModeTestAllModule()
    return

    • *** System functions ***

    def setUpSystem():
    setUpSystemBuzzer()
    switchOffAllPsu()
    return

    def shutDownSystem():
    shutDownSystemBuzzer()
    return

    • ********** SPI ********************************
  • *** SPI config ***

  • *** SPI Channels ***

  • spiChannelList = [SPI(1, SPI.MASTER, baudrate=200000, polarity=0, phase=0, firstbit=SPI.MSB),
    SPI(2, SPI.MASTER, baudrate=200000, polarity=0, phase=0, firstbit=SPI.MSB)]

    spiChannel0 = spiChannelList[0]
    spiChannel1 = spiChannelList[1]

    • *** SPI Slave Pins ***

    spiSlavePinList = [pyb.Pin.board.X5, pyb.Pin.board.Y5]

    for pin in spiSlavePinList:
    pin.init(pyb.Pin.OUT_PP)
    pin.high()

    spiSlavePin0 = spiSlavePinList[0]
    spiSlavePin1 = spiSlavePinList[1]

    • *** SPI functions ***

    def spiSendBytes(spiChannel, spiSlavePin, sendBytes):
    spiSlavePin.low()
    spiChannel.send(sendBytes)
    spiSlavePin.high()
    return

    def spiRepeatSendBytes(spiChannel, spiSlavePin, sendBytes, repeatCount):
    for i in range(0, repeatCount):
    spiSendBytes(spiChannel, spiSlavePin, sendBytes)
    return

    def spiSendRecvTwoBytes(spiChannel, spiSlavePin, sendTwoBytes, recvTwoByteArray):
    spiSlavePin.low()
    spiChannel.send_recv(sendTwoBytes, recvTwoByteArray, timeout = 1000)
    spiSlavePin.high()
    return

    def spiSendRecvThreeBytes(spiChannel, spiSlavePin, sendThreeBytes, recvThreeByteArray):
    spiSlavePin.low()
    spiChannel.send_recv(sendThreeBytes, recvThreeByteArray, timeout = 1000)
    spiSlavePin.high()
    return

    def testSpiThreeByteLoopBack(spiChannel, spiSlavePin, sendThreeBytes):
    recvThreeByteArray = bytearray(3)
    spiSendRecvThreeBytes(spiChannel, spiSlavePin, sendThreeBytes, recvThreeByteArray)
    recvThreeBytes = bytes(recvThreeByteArray)
    print(‘recvThreeBytes = ‘, end = ”)
    print(recvThreeBytes)
    return

    def testSpi():
    print(“\r\n********** Begin test SPI **********”, end = “\r\n”)
    * sendThreeBytes = bytes([0x06, 0x00, 0x00])
    * spiRepeatSendBytes(spiChannel0, spiSlavePin0, sendThreeBytes, 100000)
    * spiRepeatSendBytes(spiChannel0, spiSlavePin0, ’55’, 100000)
    * spiRepeatSendBytes(spiChannel0, spiSlavePin0, bytes([0x06, 0x00, 0x00]), 100000)
    * testSpiThreeByteLoopBack(spiChannel0, spiSlavePin0, b’abc’)
    testSpiThreeByteLoopBack(spiChannel0, spiSlavePin0, bytes([0x06, 0x00, 0x00]))
    print(“\r\n********** End test SPI **********”, end = “\r\n”)
    return

    • ********** Segment LED ************************
  • *** Segment Led Module Config ***

  • segLedModuleList = [[spiChannel0, spiSlavePin0, ‘SegmentLedModule 0′],
    [spiChannel1, spiSlavePin0, ‘SegmentLedModule 1′],
    [spiChannel0, spiSlavePin1, ‘SegmentLedModule 2′],
    [spiChannel1, spiSlavePin1, ‘SegmentLedModule 3′]]

    segLedModule0 = segLedModuleList[0]
    segLedModule1 = segLedModuleList[1]
    segLedModule2 = segLedModuleList[2]
    segLedModule3 = segLedModuleList[3]

    • *** LED Display Driver ldd config ***

    lddRegAdd = {‘NoOp': 0x0,
    ‘DigitPosition0′: 0x1,
    ‘DigitPosition1′: 0x2,
    ‘DigitPosition2′: 0x3,
    ‘DigitPosition3′: 0x4,
    ‘DigitPosition4′: 0x5,
    ‘DigitPosition5′: 0x6,
    ‘DigitPosition6′: 0x7,
    ‘DigitPosition7′: 0x8,
    ‘DecodeMode': 0x9,
    ‘Intensity': 0xa,
    ‘ScanLimit': 0xb,
    ‘ShutDown': 0xc,
    ‘DisplayTest': 0x0f};

    lddRegData = {‘NormalDisplayOnMode': 0x00, ‘TestDisplayOnMode': 0x01,
    ‘DisableShutDownMode': 0x01, ‘EnableShutDownMode': 0x00,
    ‘AllDigitsNoDecodeMode': 0x0, ‘AllDigitsDecodeMode': 0xff, ‘OnlyDigit0Decode': 0x01,
    ‘DisplayIntensityLevel0′: 0x0, ‘DisplayIntensityLevel5′: 0x3,
    ‘DisplayIntensityLevel7′: 0x7, ‘DisplayIntensityLevel31′: 0xf,
    ‘Scan1Digit': 0x0, ‘Scan2Digits': 0x1, ‘Scan8Digits': 0x7}

    • *** Segment Led functions ***

    segLedOperationTime = 100

    def segLedOperationDelay():
    pyb.delay(segLedOperationTime)
    return

    def segLedSendBytes(segLedModule, bytesRegAddRegData):
    spiSendBytes(segLedModule[0], segLedModule[1], bytesRegAddRegData)
    segLedOperationDelay()
    return

    def testSegmentLed(segLedModule):
    print(“\r\n\r\n***** Module = “, end = “”)
    print(segLedModule[2], end = “”)

    • print (lddRegAdd[‘DisplayTestReg’])
    • print (lddRegData[‘NormalDisplayOnMode’])
  • *** Init ldd of Segment Led Module ***
    print(“\r\nInit ldd, … “, end = “\r\n\r\n”)

  • *for i in range (0, 100):
    * segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DisplayTest’], lddRegData[‘NormalDisplayOnMode’]]))

    • segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DisplayTest’], lddRegData[‘NormalDisplayOnMode’]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DisplayTest’], lddRegData[‘TestDisplayOnMode’]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DecodeMode’], lddRegData[‘AllDigitsDecodeMode’]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘ScanLimit’], lddRegData[‘Scan8Digits’]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘Intensity’], lddRegData[‘DisplayIntensityLevel7′]]))
      segLedSendBytes(segLedModule, bytes([lddRegAdd[‘ShutDown’], lddRegData[‘DisableShutDownMode’]]))

    segLedSendBytes(segLedModule, bytes([lddRegAdd[‘DigitPosition0′], 0x00]))

    print(“\r\n********** End test Segment Led Module **********”, end = “\r\n”)
    return

    • *** ADC ***

    def testAdc(spiChannel, spiSlavePin):
    recvThreeByteArray = bytearray(3)
    sendThreeBytes = bytes([0b00000110, 0b00000000, 0b00000000])

    for i in range (0, 100000):
    spiSendRecvThreeBytes(spiChannel, spiSlavePin, sendThreeBytes, recvThreeByteArray)

    recvThreeBytes = bytes(recvThreeByteArray)
    print(‘recvThreeBytes = ‘, end = ”)
    print(recvThreeBytes)
    return

    “””

    def spiSendRecvThreeBytes(spiChannel, spiSlavePin, sendThreeBytes, recvThreeByteArray):
    **recvThreeByteArray = bytearray(3)
    spiChannel.send_recv(sendThreeBytes, recvThreeByteArray, timeout = 1000)
    * recvThreeBytes = bytes(recvThreeByteArray)
    * print(‘recvThreeBytes = ‘, end = ”)
    * print(recvThreeBytes)
    return

    unsigned long FongAdc03::analogToDigitalConvert(int8_t adcNum, int8_t channelNum)
    {
    byte writeByteArray[3];
    byte readByteArray[3];
    unsigned long adcResultBinary = 0;
    float adcResultFloat = 0.0;

    writeByteArray[0] = 0b00000110;
    writeByteArray[1] = 0b00000000;
    writeByteArray[2] = 0b00000000;

    int8_t slaveNum = getSlaveNum(adcNum);

    xferThreeByte(slaveNum, writeByteArray, readByteArray);

    adcResultBinary |= (readByteArray[1] &= 0x0F);
    adcResultBinary = adcResultBinary << 8;
    adcResultBinary |= readByteArray[2];

    return adcResultBinary;

    float FongAdc03::digitalToFloatConvert(unsigned long adcResultBinary)
    {
    float adcResultFloat = 0.0;
    adcResultFloat = (float(adcResultBinary) / float(0x0FFF)) * 4.096;
    return adcResultFloat;
    }

    “””

    • ********** main test program **********

    setUpSystem()
    *testLedPins()
    *testBuzzer()
    *testDigiOutPins()
    *testPsu()
    *testUart()
    *testBtm()

    testSpi()

    *testSegmentLed(segLedModule0)

    *testAdc(spiChannel0, spiSlavePin0)

    shutDownSystem()


    • End

    .END

    Leave a comment

    Filed under Uncategorised

    Greece crisis – Guardian / NYT

    Greece crisis: a disaster for Athens and a colossal failure for the EU – Ian Traynor in Brussels
    Sunday 28 June 2015 17.53 BST Last modified on Monday 29 June 2015 00.50 BST

    http://www.theguardian.com/business/2015/jun/28/greece-crisis-disaster-athens-collosal-failure-eu

    After three crises in as many days, the collective performance of the eurozones governments inspires little hope or confidence in their crisis management

    Five years from its inception, the world’s biggest bailout of a sovereign state will grind to an excruciating halt on Tuesday, theoretically leaving Greece high and dry and on its own under a leftwing government bitterly accusing the EU elite of deliberately using the country as a neo-liberal laboratory.

    If the experiment has been a disaster for Greece, it is also a colossal failure for Europe, with the result that at the very apex of leadership the EU nowadays resembles an unhappy assembly of squabbling politicians locked in what could not be called an “ever closer union”.

    Take just the last few days. On Thursday leaders at a summit contemplated formally for the first time, however briefly, the prospect of Britain leaving the EU. By three o’clock on Friday morning they were all at one another’s throats in an unseemly quarrel over who should take part in accommodating a mere 40,000 refugees from Italy and Greece over two years, and on what terms. On Saturday, 18 governments of the eurozone cut Greece off and initiated a process that could end in pushing Athens out of the currency and perhaps out of the union.

    Three days, three crises, and a collective performance that inspires little hope or confidence in their crisis management.

    The air is already thick with recrimination, not just between Greece and the rest of Europe, but among the Europeans.

    France says that Greece must be saved, Germany says impossible.

    The European commission is seeking to revive negotiation that are on their deathbed.

    The Finnish finance minister, Alex Stubb, is looking forward to the funeral.

    The International Monetary Fund is at odds with the Europeans over the levels of Greek debt.

    Everywhere there is the sight of leaders seeking to escape responsibility for a sorry state of affairs. For weeks, in anticipation of the criticism certain to be directed at them in the event of a Greek collapse, senior German figures have privately been saying: “Well, nobody will be able to say that we did not try our best.”

    At the meeting of eurozone finance ministers on Saturday that ended the Greek bailout, the French finance minister, Michel Sapin, was the only one with enough humility to remark that maybe the Europeans had got some things wrong and that things might have been done differently, according to witnesses.

    The IMF has argued internally for at least three years that the organisation was breaching its own rules by taking part in a bailout that held out little prospect of achieving the debt sustainability the fund’s rescues prescribe. Christine Lagarde, the IMF chief, ignored the advice of her own experts and remained in the failing project.

    Following the calling of the Greek referendum, the collapse of the negotiations and the end of the bailout on Saturday, the European commission, keen to salvage the situation while diverting blame, stated publicly for the first time on Sunday that the proposed deal would have included a form of debt relief for Greece, prime minister Alexis Tsipras’s central demand.

    “The understanding of all parties involved was that [Saturday’s] Eurogroup meeting should achieve a comprehensive deal for Greece, one that would have included not just the measures to be jointly agreed, but would also have addressed future financing needs and the sustainability of the Greek debt,” a commission statement said.

    Berlin will not wear that any time soon. According to people present, Wolfgang Schäuble, Germany’s finance minister, told his eurozone counterparts there was no way he would risk taking a Greece bailout proposal to the Bundestag at this stage, especially when Tsipras had roundly rejected it.

    “We would have to say to our population and parliament that [the Greek] government would do what it is obliged to do in the programme, although it just recommended that people should not accept it,” he then told German TV.

    Eurozone leaders ooze confidence that Greece’s financial collapse could be easily weathered by the rest of the currency bloc.

    No one really knows how the chaos, likely if Tsipras wins his referendum on Sunday, will affect the rest of the zone economically and financially. But it is political poison.

    For Europe’s leaders, five years of failure in Greece mean that everyone’s a loser.


    Greece Will Shut Banks in Fallout From Debt Crisis – JIM YARDLEYJUNE 28, 2015

    http://www.nytimes.com/2015/06/29/world/europe/greece-will-shut-banks-in-fallout-from-debt-crisis.html?_r=0

    ATHENS — Prime Minister Alexis Tsipras announced Sunday night that Greece’s banks would be closed as of Monday, as the fallout from ruptured debt negotiations with the nation’s creditors began inflicting pain on ordinary people while raising alarm in Washington, Brussels and Berlin.

    The emergency measures escalated the confused and unpredictable state of a crisis that some analysts say could ripple through global financial markets and undercut European unity. Most Asian markets opened lower on Monday.

    With so much at stake, leaders in other capitals encouraged a continued search for a way to prevent Greece from being forced out of Europe’s currency union. Greece owes a large debt payment by the end of Tuesday, and has scheduled a referendum for next Sunday on whether to accept the terms of an offer from its creditors to release bailout aid it needs to meet its financial obligations.

    Mr. Tsipras announced the emergency banking shutdown, which will also close the stock exchange, and imposed capital controls several hours after the European Central Bank said it would not expand an emergency loan program that had been propping up Greek banks for weeks. The banking system had neared insolvency after panicked account holders withdrew billions of euros, a pattern that continued over the weekend.


    TIMELINE: GREEK DEBT CRISIS

    December 2009 Credit ratings agencies downgrade Greece on fears that it could default on its debt.

    May 2010 Europe and Greece reach a $146 billion rescue package, conditional on austerity measures. Some economists say the required cuts could kill the patient.

    October 2011 Banks agree to take a 50 percent loss on the face value of their Greek debt.

    January 2015 Greek voters choose an anti-austerity party. Alexis Tsipras becomes prime minister.

    May 2015 Greece quells fears of an imminent default, authorizing a big loan payment to the I.M.F.

    June 2015 Greece defers a series of debt payments until the end of the month.


    “It is clearer than ever that this decision has no other goal than blackmailing the Greek people and obstructing the smooth democratic procedure of the referendum,” Mr. Tsipras said in a brief televised address.

    Mr. Tsipras attributed the action to the unwillingness of the country’s creditors to extend the bailout program, set to end Tuesday, until next Sunday, so that Greece could hold its national referendum. The referendum was a surprise move by Mr. Tsipras, announced early Saturday, as he declared that voters should decide whether to accept the terms of the creditors’ latest aid proposal — terms he considers onerous.

    Greece’s creditors — the other 18 eurozone countries, the European Central Bank and the International Monetary Fund — in effect cut off negotiations with Mr. Tsipras after he called for the referendum, raising concerns that Greece would default on its debt and potentially seek to solve its financial problems by abandoning the euro.

    But on Sunday, international leaders appeared to be seeking a way to calm the situation and explore the potential for common ground with the Greek government.

    President Obama and Chancellor Angela Merkel of Germany spoke by phone on Sunday and “agreed that it was critically important to make every effort to return to a path that will allow Greece to resume reforms and growth within the eurozone,” said the White House. Ms. Merkel is expected to make a public statement on Monday in Berlin.

    Christine Lagarde, managing director of the International Monetary Fund, who has at times been sharply critical of Greece’s negotiating stance, released a softer statement, declaring her “commitment to continue to engage with the Greek authorities.”

    Greece must make a 1.6 billion euro debt payment to the I.M.F. on Tuesday or risk falling into default.

    Before this weekend, the four-month negotiations focused on getting the Greek side to agree to fiscal overhauls, tax increases and pension cuts in exchange for creditors releasing a €7.2 billion bailout allotment that Greece needs to meet its short-term debt obligations, equivalent to about $8.1 billion. Mr. Tsipras had consistently called for a broader, comprehensive deal that would liberate Greece from the economics of austerity. Attention will now likely shift to Brussels and Berlin.

    In Brussels, the European Commission made its own unexpected moves on Sunday. Jean-Claude Juncker, the commission president, released a statement suggesting that creditors had been willing to discuss Greece’s debt load, a key demand of the Tsipras government. But more surprisingly, the commission published details of the offer made to Greece, a move intended to show that creditors had gone to great lengths to satisfy Greek demands, one European Union official said.

    “This is a last bridge we are building for them,” the official said about the decision to publish the terms of proposal. The goal was to pressure Mr. Tsipras to “change course” and encourage voters to choose “yes” in the coming referendum, the official said, while acknowledging that the chances for such a switch were slim.

    Perhaps the key figure in finding a compromise, assuming there is still time to do so, is Ms. Merkel, the most powerful political figure in Europe. She remained silent on Sunday, with officials saying that Wolfgang Schäuble, the German finance minister, spoke for the government in Brussels on Saturday. Following the collapse of talks, the finance minister declared that Germany and the other eurozone nations would like to continue to hold talks, but blamed the Greeks for declaring the discussions a failure.


    Portraits From Greece as It Endures a Crisis

    From a small island to the capital in Athens, here is a glimpse into some of the lives of Greeks as their country struggles to repay billions in debt.

    http://www.nytimes.com/interactive/2015/06/22/business/international/greece-crisis-portraits.html


    But Mr. Schäuble also indicated readiness to “do everything to prevent every possible threat of contagion” of the situation, should Greece fail to reach a deal with its creditors, reflecting growing frustration in Berlin with the Athens government.

    Norbert Röttgen, a senior member of Ms. Merkel’s party who is responsible for foreign affairs, emphasized the wider geopolitical implications of what he called a “vagabond Greek government,” which could say no to the next round of European sanctions against Russia. He warned that after five years of bailouts, “it cannot just collapse over a week.”

    The immediate question in Greece revolved around the specifics of the emergency actions announced by Mr. Tsipras. He did not mention the stock market in his public address, but a senior official confirmed it would close.

    The prime minister indicated that restrictions would be placed on A.T.M. withdrawals and money transfers, but he provided no details. A legislative decree said that banks would be closed through July 6 and that the cap on daily cash machine withdrawals would be €60. That would not apply to tourists using cards issued in their home countries.

    Such a small cash withdrawal limit would highlight the dire condition of the Greek banking system. Cyprus avoided a banking collapse in 2013 by taking similar steps, though the daily withdrawal limit was €300. The Cypriot government also acted in concert with other European governments as part of a new bailout program, while the Greek actions are the result of a breakdown in bailout talks.

    The European Central Bank, if refusing to expand emergency funds to Greek banks, did not cut off support entirely, which will provide the government some flexibility in the coming days.

    The central bank’s decision to cap the emergency loan program, as opposed to canceling it, “allows the Greek banks to remain in a sort of coma — not functioning but not dead,” said Karl Whelan, an economics professor at University College in Dublin. That way, he said, the Greek financial system might be revived if Greece secures a deal with its creditors.

    And several analysts still predicted that despite the confrontation and fireworks, the two sides might well return to the table. Even as Mr. Tsipras and other members of his government are imploring people to vote “no” in the referendum and reject the creditors’ proposal, some experts predict that Greek voters, equating such a vote with leaving the euro system, will vote “yes.”

    Raoul Ruparel, an economist and co-director of Open Europe, a London-based research group, said the breakdown in negotiations was “merely a prelude” to yet more talks in a week or so, after Greece holds its referendum.

    “I think we are just getting started on this merry-go-round,” Mr. Ruparel said, predicting that Greek voters would probably vote to endorse proposals put forward by creditors. “We would then be back where we started, only in a worse situation.”

    He predicted that Mr. Tsipras’s government and the creditors would need to negotiate an entirely new, and probably short-term, bailout in an atmosphere poisoned by even deeper distrust than before.

    “The whole thing is an absolute nightmare,” he said.

    Reporting was contributed by Landon Thomas Jr., and Niki Kitsantonis from Athens; Andrew Higgins and James Kanter from Brussels; Rich Dirks from Hong Kong; and Alison Smale and Melissa Eddy from Berlin.

    .END

    Leave a comment

    Filed under Uncategorised

    FongAdc03 memory refreshing notes

    // *** FongAdc03.h *******

    unsigned long analogToDigitalConvert(int8_t adcNum, int8_t channelNum);
    float digitalToFloatConvert(unsigned long adcResultNum);
    void analogToDigitalConvertAndPrint(int8_t adcNum, int8_t channelNum);
    void analogToDigitalConvertAndPrintAll();

    // *** FongAdc03.cpp *******

    unsigned long FongAdc03::analogToDigitalConvert(int8_t adcNum, int8_t channelNum)
    {
    byte writeByteArray[3];
    byte readByteArray[3];
    unsigned long adcResultBinary = 0;
    float adcResultFloat = 0.0;

    switch (channelNum)
    {
    case 0:
    {
    writeByteArray[0] = 0b00000110;
    writeByteArray[1] = 0b00000000;
    writeByteArray[2] = 0b00000000;
    break;
    }
    case 1:
    {
    writeByteArray[0] = 0b00000110;
    writeByteArray[1] = 0b01000000;
    writeByteArray[2] = 0b00000000;
    break;
    }
    case 2:
    {
    writeByteArray[0] = 0b00000110;
    writeByteArray[1] = 0b10000000;
    writeByteArray[2] = 0b00000000;
    break;
    }
    case 3:
    {
    writeByteArray[0] = 0b00000110;
    writeByteArray[1] = 0b11000000;
    writeByteArray[2] = 0b00000000;
    break;
    }
    case 4:
    {
    writeByteArray[0] = 0b00000111;
    writeByteArray[1] = 0b00000000;
    writeByteArray[2] = 0b00000000;
    break;
    }
    case 5:
    {
    writeByteArray[0] = 0b00000111;
    writeByteArray[1] = 0b01000000;
    writeByteArray[2] = 0b00000000;
    break;
    }
    case 6:
    {
    writeByteArray[0] = 0b00000111;
    writeByteArray[1] = 0b10000000;
    writeByteArray[2] = 0b00000000;
    break;
    }
    case 7:
    {
    writeByteArray[0] = 0b00000111;
    writeByteArray[1] = 0b11000000;
    writeByteArray[2] = 0b00000000;
    break;
    }
    }

    int8_t slaveNum = getSlaveNum(adcNum);

    xferThreeByte(slaveNum, writeByteArray, readByteArray);

    adcResultBinary |= (readByteArray[1] &= 0x0F);
    adcResultBinary = adcResultBinary << 8;
    adcResultBinary |= readByteArray[2];

    return adcResultBinary;
    }

    float FongAdc03::digitalToFloatConvert(unsigned long adcResultBinary)
    {
    float adcResultFloat = 0.0;

    adcResultFloat = (float(adcResultBinary) / float(0x0FFF)) * 4.096;

    return adcResultFloat;
    }

    void FongAdc03::analogToDigitalConvertAndPrint(int8_t adcNum, int8_t channelNum)
    {
    unsigned long adcResultBinary;
    float adcResultFloat;

    adcResultBinary = analogToDigitalConvert(adcNum, channelNum);
    adcResultFloat = digitalToFloatConvert(adcResultBinary);

    Serial.print(F(“adcResultBinary, adcResultFloat = “));
    Serial.print(adcResultBinary, HEX),
    Serial.print(F(“, “));
    Serial.print(adcResultFloat);
    }

    void FongAdc03::analogToDigitalConvertAndPrintAll()
    {
    unsigned long adcResultBinary;
    float adcResultFloat;

    for (int8_t i = AdcNum0; i <= AdcNum1; i++)
    {
    Serial.print(F(“\n”));
    for (int8_t j = ChannelNum0; j <= ChannelNum7; j++)
    {
    adcResultBinary = analogToDigitalConvert(i, j);
    adcResultFloat = digitalToFloatConvert(adcResultBinary);

    Serial.print(F(“\nadcNum, chNum = “));
    Serial.print(i, DEC);
    Serial.print(F(“, “));
    Serial.print(j, DEC);
    Serial.print(F(” “));

    Serial.print(F(“adcBin, adcFlt = “));
    Serial.print(adcResultBinary, HEX),
    Serial.print(F(“, “));
    Serial.print(adcResultFloat);
    }
    }
    }

    .END

    Leave a comment

    Filed under Uncategorised

    保衛本土正因追求自由 – 秉享

    保衛本土正因追求自由 – 秉享 輔仁媒體 2015年6月28日

    光復本土

    自雨傘革命以降,各路本土派組織如雨後春筍。惟至目前為止,雖有本土論述,但尚未建立完整理論1,尤其未有解答最根本的問題:為何保衛本土。固然能以道德直覺(moral intuition)認定保衛本土利益是理所當然,但若本土利益與其他道德標準(如個人自由、人權等)衝突時,或會令本土利益凌駕於自由之上,演變成所謂的「法西斯主義」2。又假若要本土自由兩者兼得,則需要釐清兩者關係,尤其是如何平衡兩者。由於現今仍未有相關理論,使部份涉獵政治哲學的人(如某周姓博士)質疑甚或批判本土意識,制限本土意識的傳播。

    自由主義為當今最具影響力的政治主張,眾多耳熟能詳的政治理論皆出自自由主義,如三權分立、社會契約等。若本土意識不能容於自由主義,將使本土意識於政治討論中變得脆弱,變成只能依靠直覺甚或民粹方能生存的理論。可是,現時論者引用自由主義時,多以此批評本土意識,致使部份本土派人士誤以為自由主義必然違反本土利益,並支持大愛左翼、和理非非。若自由主義是此般理論,想必無法催生美國獨立戰爭及法國大革命,更無法戰勝納粹德國及共產蘇聯。若然誤解未能化解,最終將使本土意識淪為少數人的教義,無助捍衛本土利益。

    是故在此拋磗引玉,建立一套理論連結本土意識與自由主義,並提出兩點:

    一、本土是自由的基礎;

    二、本土意識是捍衛自由的結果。整套理論建基於兩個前設:

    一、深圳河以南及深圳河以北分屬兩個社會。深圳河以南固然是香港,但本文避免使用「中國」描述深圳河以北土地,一來為避免「文化中國」、「政治中國」的歧義,二來由於「中國」一詞包含太多情感(不論正面或負面),為免感情干擾分析,故此避用。同理,「民族」一詞因包含歷史、文化等元素,故以較為中性的「社會」代替。此外,於稍後討論中,「社會」亦較「民族」適合。由於已有不少文章解釋深圳河南北的差異,本文在此不贅。

    二、自由是社會最主要的價值,個人自由應予以尊重及保障。這基本是自由主義的立論,但部份人如社會主義者或社群主義者(Communitarianist)等或許反對以個人自由為先。雖然本土意識或可建基於這些理論,但本文只集中討論自由主義,為免重心移向討論個人自由的重要,故將其定為前設,有意探討可自行Google。

    理性(rationality)為個人自由的基石

    自由主義者相信人類是理智的(rational),而理性是支持個人自由的原因。例如

    John Stuart Mill就提出當人為自己作抉擇時,只有自己最清楚自身的情況,亦只有自己的抉擇最為符合自己的利益。因此,有效益(efficient)的社會是尊重個人自由的社會,政府或他人干預個人自由都不符效益(inefficient),只有當個人行為傷害(harm)到他人時才可阻止。

    Friedrich Hayek 亦指出自由社會由眾多公民組成,而公民的行為取態亦各不相同,根本無任何人能夠理解所有公民的取態並求得社會整體的利益,故此所有藉社會利益為名,干預個人行為的政策都不符效益。

    唯有使公民可按自己的知識及經驗行動及探索,方可為社會尋求最大利益。John Rawls亦假定人類是理智的,並指出人類的理性使其希望創造公平的社會制度以利各人追隨其人生目標

    於是當眾人於原初狀態(original position)為社會訂定規範時,眾人會總結出正義論(包含自由及平等兩原則)以利眾人

    由於理性是自由主義的基石,故此攻擊自由主義的人往往認為個人的理性不能為社會謀求最大利益,甚至質疑人類是否理智。

    另一方面,自由主義者多認為若部份人不能理智行事,合理地限制其個人自由亦可接受,其中最易理解的例子為孩童。由於孩童心智仍在發展,未必清楚其自身情況,故此家長可為教養孩童,適當限制其自由。

    此外,若有人故意摧毀另一人的理性,則與侵犯其自由無異。例如下藥迷惑一人,使其神智不清,即使並無禁錮或制止其行動,亦視同侵犯自由。

    又例如恐嚇一人使其只能依施暴者的主意行事,雖然依從施暴者合情合理,但亦是侵犯自由。

    理性建基於經驗及規則

    雖然自由主義假定人類是理智的,但各派學說對人類理性的理解或有不同。Hayek歸納出兩種對理性的理解3。

    第一,rationalism4。

    這種理論認為人類能夠理解所有資訊,運用足夠的知識,行使理性而得出最好的決定。

    最容易的理解是 Jeremy Bentham 提出的功用主義(utilitarianism):他認為社會應該盡可能為最多人提供最多的快樂(the greatest happiness of the greatest number),並提倡廢除混雜無章的普通法,以理性重新制定法律。此外,Hayek 亦認為因為 J-J Rousseau 的社會契約論及 Rawls 的正義論皆提出人類有能力從頭訂定社會的約法,故亦屬此一理論。

    第二種理論 Hayek 稱之為 anti-rationalism,這不是否定理性,只是反對 rationalism。這種理論認為人類的理性必須建基於經驗及現行社會的規則,人類不能憑空行使理性,更不可能重新創造社會。這種理論最初由保守人士為反對啟蒙時代的自由風氣而提出,但

    由於法國大革命最終演變成恐怖統治,使部份自由主義者意識到人類若不受制約,將無法行使理性,更會損害自由。

    本文採用 anti-rationalism,因為筆者個人覺得 anti-rationalism 更能令人信服。此外,以 rationalism亦難以說明何以香港獨一無二,必須捍衛。

    以較常引用的社會契約論為例,假如我們捍衛本土的原因只是主權在民,反對專制統治,反對外族侵入香港,則假設今日有一自由平等民主國家(如加拿大),容許香港人移居成為公民,香港人可參與該國政治,自由受到保障,能夠融入當地社會,享受更美好的生活,這是否代表我們要放棄香港,移居該國?

    而事實上,不少人前仆後繼,移民外國。

    筆者相信本土派大多身土不二,蔑視移民,故此就必須證明香港對我們而言是無可取代。

    於解釋何以 anti-rationalism 能支持本土意識前,要理解經驗與規則對理性的關係

    假若有日睡醒,發現自己突然身處野生叢林中,一無所知,不知下一秒會否被猛獸襲擊,那時就不可能理智地行動,更遑論在森林中得到自由。

    我們只能小心翼翼,慢慢摸索叢林的規律,再依情況行事。只有我們收集到足夠的資訊,才能算是理智行動。

    又舉一例:相信人人都懂得玩大富翁,因為大家都懂得大富翁的規則,可以因應規則決定如何取得勝利。

    但若現在取消大富翁的所有規則,玩家則不可能理智地遊玩,最後只能亂玩一通。

    要行使理性,就必需清楚現時的狀況,知道行事的後果,及能夠推測對方的行動。這不是要求決定絕對正確,而是要令我們能理智地計算應否行動、如何抉擇,而經驗及規則就是計算的基礎。

    相反,若對世界一無所知,對社會運行的規則一竅不通,即使不受約束,仍不能稱作自由。

    社會就是由遵循同一套規則的人組成

    《香港城邦論》提出香港為華夏遺民組成的城邦,相反契丹早已丟失華夏文明。至於《香港民族論》則直接指出香港人與中國人為兩個民族,兩地文化相異。雖然理論各異,但皆認為深圳河南北已是兩個社會,兩者分別在於解釋為何不同。

    Hayek 認為社會由不同規則支配。

    或許有人以為社會的規則必是高深的學術討論,但社會的規則除法律外,亦有不同規矩,如文化習俗、生活習慣、市場運作。

    舉些生活例子:於扶手電梯上靠右企,留空左側供人行走;又例如不會隨地便溺,或只容許小孩於陰暗處便溺,都是規則。

    社會就是一群有相近習慣、風俗的人共同生活的地方。

    社會的規則由眾人經過千百年,從實踐中逐漸訂出。

    雖然種族、語言等亦有所影響,但不能單純以此定義一個人是否屬於一個社會。

    例如有華裔移民後代生於美國,長於美國,一向遵循美國社會的規則,此人自然是美國人。

    若然兩者文明不同(按城邦論),或公民民族不同(按民族論),則必然分屬不同社會。由於各個社會的歷史、地理、經濟等情況相異,演變出的規則亦有所不同。社會的規則由前人歷經千百年,因應不同情況演變而成,故此各個社會的規則皆有分別5。

    誠然,即使於同一社會中,眾人實踐的規則會有些微差異6。

    例如香港仍然有人於扶手電梯上不會靠右企,但我們亦不會因而認為這些人不是香港人(當然,配合其他資料,如衣著、言談、舉止等,我們仍能分辦這些人是否本地人)。

    由於一個社會的規則繁多,雖然我們可以客觀歸納出一個社會的部份規則,但幾乎不可能列舉出定義這個社會的所有規則,不過又已烙印在我們的認知中。

    舉隨地便溺為例,筆者記得小時候,小孩可於溝渠邊小便,但我們不會定義何謂小孩,亦不會認為小孩能於所有地方的溝渠皆可小便(如在鬧市的溝渠),但我們卻能分辨在哪些時候,在哪些地方,哪年紀的小孩可以稍作方便。

    這些不是由死硬的規則決定,而是由我們從觀察及實踐中發掘。所以我們在實踐這些規則上或許有差異,但只要是無傷大雅的差異,我們就不會覺得大家所遵循的規則不同。

    故此,要定義一個人是否香港人,除卻客觀分析此人有否遵循香港人所遵循的規則外,亦涉及主觀觀察:究竟這些差異有否牴觸這個社會的規則。

    尤其在自由社會中(相對傳統封閉社會而言),眾人的生活習慣、追求的價值等都相距甚遠,故更不能依賴死硬的定義來評定一個人是否屬於社會的一份子7。

    本土意識就是守護社會的規則

    前段提到只要熟悉規則的人才能行使理性。

    故此我們的先祖開展群居生活後,就制定各種規則,從觀察與實踐中,熟習社會的規則,並加以改善及演進。

    亦因而組織政府,執行法律,確保公民遵守部份較為重要的規則,此點可見諸 John Locke 的《政府論》。

    不過,社會不能依靠政府執行所有規則,一來如先前所述,自由社會的規則多具彈性,而官僚則只能依照律法行事,故難以交由政府執行,二來社會規則或因環境變遷而調整,又或由公民於實踐中探索最好的履行方式,故由政府執行將使社會失去演變的能力,違背自由社會的目的。

    故此,這些不能由政府執行的規則只能交由公民直接執行。例如玩大富翁多為親友耍樂,難有裁判,故規則只能由玩家自覺遵守,並於有人犯規時直接提出。

    又或於遊玩中,可於官方規則之上自行創造house rules,改良遊戲。

    放諸現實,自由社會就有不少團體,又或個人,以議論、示威等方式,維護、澄清、或改良社會的規則。

    但由於行動的最終目標是捍衛自由,故有幾點需要遵守:

    捍衛的規則必須是社會共通的。Hayek 認為自由社會的規則是 general and abstract。General 指這些規則必須適用於社會所有人,不能只針對個別特定個人或團體,以避免捍衛規則變成捍衛特權。例如歧視特定性別、種族的規則應予以廢除,不應捍衛。當然,有些規則旨在保護特定團體,如小童。這種情況下,有關規則必須得到該團體以及團體以外的人同意。如不論小童抑或成人,都會同意小童應受到保障。Abstract 指這些規則在所有時候都適用,當然有法律會訂明能夠執行的時候,但不能針對某個已發生或將會發生的情景。

    捍衛的規則不可侵犯自由。自由包括以理性抉擇的自由。如果有規則限定公民只能信奉某個宗教,或只能遵守某套價值觀,如儒家思想,那都是侵犯自由。如果只是限制進行某種行為(如禁止殺人、盜竊、隨地大便等),只要合理(如這些限制是社會共通的,或目的在於保障他人自由),則這些限制不屬侵犯自由。

    捍衛規則的行動不得不成比例地(disproportionately)侵犯自由。這視乎該人所牴觸的規則,如若該人殺人,那限制他的自由實屬合理。不過,這些重要的規則多已成法律,故捍衛這些規則的責任已交予政府及法院8,執行私刑就變相是不成比例。一般的社會壓力,如輿論,斥責等,只是代表一些行為不受社會歡迎,不算侵犯自由。

    因為社會壓力是由公民自行決定是否施加,並留有空間予對方決定是否繼續令人生厭的行為,是自由社會最常用的方法。

    最終的價值是自由

    筆者相信自由是普世價值,如果上述推論無錯,本土意識理應適用於世界各地,不應只局限於港中衝突的討論。而且,本文提出的理論並無提出何種出路(如城邦、獨立、歸英、自治等)最能捍衛香港,因為這些是政治策略的範疇,因應實際情況決定,只要這些出路能有效保障自由、捍衛本土,則可應用。

    有評論認為鼓勵公民自發行動,捍衛本土,將會使社會分化,不利建立自由、民主、平等的社會。

    但這些評論誤解自由的本質。正因為無人能夠得知甚麼價值觀,甚麼規則才是最好的,所以珍視自由,使人人能夠以自己的想法行動,不斷發掘,又互相否定。

    故此自由社會不代表有效率,不代表和諧安定,甚至是相反:不同想法的人不斷吵吵鬧鬧。

    歷史上有三種人反對自由社會的吵鬧:保守、法西斯、共產,但他們接二連三被喧鬧不堪的自由社會擊潰,這就是自由的韌力。

    1. 固然城邦論較為完整,但有不少本土派反對,尤其恢復華夏及永續基本法的主張。
    2. 頭盔:只是「或會」,並非指現時的本土行動是法西斯。

    3. 往後討論多參照 Hayek 對社會的見解。雖然 Hayek 支持自由市場,反對財富再分配,但一來Hayek 並非反對所有形式的福利政策,二來本文旨在提出一套本土理論適用於左右兩翼,故本文只會抽出 Hayek 對社會的見解。

    4. 雖然可直譯為「理性主義」,但這會令人誤以為第二種理解否定理性,故直接採用原文。

    5. 亦有情況是多個社會交流漸繁,逐漸融合,例如歐盟。

    6. 恰巧最近就有關於「民族性」的討論。

    7. 早已有不少學者分析自由社會規則或法律的特點,但由於涉及繁複的學理分析,故本文不贅。

    8. 理想與現實。是故當雨傘革命時面對警方失職時,有人提出行使公民逮捕權。事實上,英格蘭於十八世紀前,刑事檢控多由私人(受害者)負責

    .END

    Leave a comment

    Filed under Uncategorised