PURSUE ULTIMATE FACTS

2020-10-14
合适的女朋友

你们律法师有祸啊!因为你们把知识的钥匙拿了去,自己不进入,连那正进入的、你们也拦阻。
(路加福音 11:52 吕振中)

你们问我什么是对?什么是错?我只能建议:请拒绝成为一个追随耶稣的法利赛人。

分享一篇充满慈爱的「小小羊」的文章。


合适的女朋友——圣经的一些原则

这是给未婚姊妹,也是给未婚弟兄看的。未婚姊妹可以借此省察自己——我够格当人家女友吗?未婚弟兄可以借此查验对象——她够格当我女友吗?我设定的男友、女友,是指「以结婚为前提」的交往。那些只想谈恋爱而不考虑未来结婚的,不列在我的对象里。另外,这不是详细的圣经整理,而是一些简单原则而已。

  今天写的重点,有些前一篇文章《合适的男友——圣经的一些原则》已经提过。重复的我就不再多提,但同样经文,因为对象不同,会有不同的角度与着重点,这些会比较详细讲。

一、离开父母,与妻子连合,二人成为一体

  「人要离开父母,与妻子连合,二人成为一体」(创2:24)(太19:5)(可10:7)(弗5:31)

  这句经文,不仅对男方重要,对女方一样重要,但着重点稍有不同。「离开父母,与妻子成为一体」,不是说不能和父母同住,而是说「心态上、生活上,要脱离父母,以妻子为优先顺位」。

  注意!这经文请千万不要误解与误用。身为女友,你是没资格拿这经文来要求男友未来不和公婆同住的!假使未来你的丈夫要求你和公婆同住,你就是必须顺服!

  另外,发现了吗?假使男方是未信者,他会接受「妻子顺位比父母高」的规定吗?

  离开父母,在实际应用上,有一个很重要的,就是——你不能期望婚后有不愉快就“回娘家”哦!婚姻,是必须离开父母,夫妻独立自主的。社会上很常见遇到困难就回娘家,这是不合圣经的。(守寡、离婚的不算)这不是说你都不能回娘家去诉苦、求援,但假使你常常这样、继续认为有娘家可回的想法,这就是错误。你要搞清楚你已经和丈夫成为一体,离开父母了,不能继续想要倚赖父母保护。

  另一个要注意的是,婚后你不能让父母介入你们夫妻的决策中。这不是说不能请教父母意见、寻求父母协助,而是决策的决定者,是你们夫妻二人,不是父母。因此,当你们夫妻意见与父母不同时,要以你们夫妻意见为意见。当然,有时,夫妻的意见是错的,父母才是对的,但既然已婚,权柄与顺位已经不同,上帝给了你们权柄,你们相对也要扛起责任,自己承担错误的苦果了。

  然而,请注意:婚前和婚后,依然有很大差距。婚前的男女朋友阶段,虽然很多婚后的原则已经要开始学习,但依然不是婚后。所以,请别拿圣经「离开父母」这经文,来认为男女双方都不需看重父母意见、不需告知父母一些事情。有些男的会逼女的不听父母意见、不要告知父母、甚至私自结婚;有些女的会逼男的不听父母意见、不要告知父母、甚至私自结婚;这都是严重不当!

  对弟兄而言,一个姊妹假使是娇娇女,她是否开始准备离开父母,自己承担起当妻子的责任?对姊妹而言,既然要寻找对象,自己是否装备自己,准备离开父母,自己承担起当妻子的责任?至于单独和男生出去、还保有男性知己、同时跨好几条船……那就别讲了,因为都是违反成为一体命令的。这点和男方相同,就不多说。

二、丈夫是妻子的头,妻子要顺服丈夫

  「你们作妻子的,当顺服自己的丈夫,如同顺服主。因为丈夫是妻子的头……教会怎样顺服基督,妻子也要怎样凡事顺服丈夫……妻子也当敬重她的丈夫。」(弗5:22-33)

  这段经文,对男方与女方,重点不同。

  1. 顺服
      很难哦!特别是在这高喊女权的时代。但圣经就是上帝的话,上帝这样规定,我们就这样做。除非丈夫做出违反圣经的决定,否则妻子就是必须顺服。不因为你学历高、经济好、家世棒……而有改变。这里说「顺服丈夫,如同顺服主」。这很重要。因为很多姊妹严重搞错圣经,结果自找很多重轭来背。
      圣经告诉我们:
      丈夫是透过对上帝的直接顺服,来达成顺服。但妻子却不同,是间接透过对丈夫的顺服,来达成对上帝的顺服。这有什么差别?差别可大了!丈夫可以直接宣称领受上帝带领,就决定要做什么事;但妻子却不能宣称领受上帝带领,就自行决定要做什么事。当然,不管是谁宣称领受,都要彼此告知与协调。但是,丈夫拥有最终权柄,他是最终决策的裁决者。
      看懂了吗?我举实际例子来讲:
      丈夫可以宣称领受上帝带领,要去当宣教士(可以不理妻子反对);妻子不能宣称领受上帝带领,要去当宣教士(不能违反丈夫反对)。
      看见二者天差地远的差异性了吗?
      假使你信主,丈夫未信,你要去教会担任各种额外服事,但丈夫反对,你就是不能去哦!你只能做最基本的,好比守安息日这种而已,其他你恐怕都必须顺服哦!看见信与不信的婚姻,对姊妹而言,是一种更严重的问题了吗?已信的姊妹,一样要顺服未信的丈夫,服从他的权柄的。

  2. 敬重
      这一点,假使男方学历高、经济好……那么,问题不大。问题是,假使女方比男方高,问题常常就会很大,而且很严重。即使现今很多女生学历、收入、职位……都比丈夫好,很不幸的,圣经规定是很清楚的:妻子要顺服丈夫!你就是必须顺服!妻子要敬重丈夫!你就是必须敬重!
      很不幸的是,我们的德行,恐怕都没那么大。因此,当夫妻双方,特别是男方假使低女方很多时,请谨慎考虑,不要随便高看自己啊!假使在婚前,你就无法接受婚后必须顺服、敬重,请不要和这人迈入婚姻。因为一旦结婚,就很难合乎圣经地离婚了。合乎圣经地离婚,只有两条:
      1. 配偶淫乱
      2. 不信者要离去
      其他,你只能背起重轭,流泪走下去了。很不幸的,女生常会被感情冲昏头,什么都不在乎。然后自己跳进火坑,自己为自己制造重轭来背。对弟兄而言,婚前,你就可以知道这姊妹是否愿意学习顺服你、敬重你了。讨论事情时,她是否愿意顺服你最终的决定?她是否以你为荣?还是只是把你当工具?当然,身为弟兄,你做的决策,够格让人家顺服吗?够格当人家的头吗?圣经里,「权柄」从来不会单独存在,而是会同时伴随「责任」、「义务」甚至「惩处」的。
      在此要提醒一个很重要的观念:丈夫是妻子的头,妻子必须顺服丈夫,这种经文不得误用!男方不得拿此经文来要求女方顺服!同样的,丈夫要爱妻子爱到愿意舍己,这种经文也不得误用!女方不得拿此种经文来要求男方答应要求!
      我称这种行为叫用经文来「神功护体」、「图利自己」。事实上,电视八卦剧、实际生活里,这种例子处处可见。
      请注意我的提醒:假使你的对象,出现这种误用圣经来神功护体、图利自己的情形,你要很小心很小心很小心!因为,这种人常会比未信者更可怕、更可恶!因为,他们会滥用圣经来谋取私利,而不是用圣经来要求自己。
      男方动不动就要女方听他的意见;男方不询问女方的意见,常常独断独行;男方做的决策常荒腔走板,又听不下女方的意见与劝告;女方动不动就要男方买东西,否则就认为男方不爱她;发生争执时,认为错的永远是男方,男方永远都必须低头道歉;不管什么事,自己永远是大小姐,男方必须服事得好好的。这些例子,举都举不完,社会上一大堆。
      但是,身为基督徒,圣经就是我们唯一的行为准则、唯一的是非善恶判断依据。圣经清楚告诉我们哪些行为正确,哪些行为错误,我们就是以此为判断标准,并努力奉行。

三、信与不信不能同负一轭

  「你们和不信的原不相配,不要同负一轭」(林后6:14)

  「丈夫若死了,妻子就可以自由,随意再嫁,只是要嫁这在主里面的人」(林前7:39)

  当今教会普遍女多男少,这经文更显得难以遵守。因此,我也不多说。可是,上面已经提过一些。对姊妹而言,身为妻子,由于必须「顺服丈夫」,所以一旦发生信仰的冲突,状况会比弟兄娶不信者更为严重、重轭更加沈重。所以,自己要想清楚。

  在此,我要提醒一个很重要的观念,就是——妻子可以比丈夫软弱。

  「你们作丈夫的也要按情理和妻子同住;因她比你软弱(比你软弱:原文作是软弱的器皿),与你一同承受生命之恩的,所以要敬重她。」(彼前3:7)

  不管是男女朋友阶段,还是婚后夫妻,妻子是可以比丈夫软弱的,不管是信仰上、德行上……各方面都是。因此,男友信仰很好,女友信仰较弱,是可以的;男友圣经很强,女友圣经不熟,是可以的。并且,男方不得因女方较弱,就有任何轻看的态度,而是必须「敬重」,并当头好好带领。

  那么,女方比男方信仰好,可以吗?当然可以!只要自己知道,即使男方信仰较弱,他依然是头,你依然必须顺服,这样就可以了。假使无法接受他是头、就是顺服不了,那就不该和这人婚嫁。事实上,有不少姊妹信仰都比弟兄好,但是,依然遵守圣经丈夫当头、顺服丈夫的命令的。

四、要有独身的打算

  「因现今的艰难,据我看来,人不如守素安常才好。你有妻子缠着呢,就不要求脱离;你没有妻子缠着呢,就不要求妻子。你若娶妻,并不是犯罪;处女若出嫁,也不是犯罪。然而这等人肉身必受苦难,我却愿意你们免这苦难。弟兄们,我对你们说:时候减少了。从此以后,那有妻子的,要像没有妻子;……我愿你们无所挂虑。没有娶妻的,是为主的事挂虑,想怎样叫主喜悦。……妇人和处女也有分别。没有出嫁的,是为主的事挂虑,要身体、灵魂都圣洁;已经出嫁的,是为世上的事挂虑,想怎样叫丈夫喜悦。我说这话是为你们的益处,不是要牢笼你们,乃是要叫你们行合宜的事,得以殷勤服事主,没有分心的事。」(林前7:25-35)

  和弟兄一样,任何适婚年龄的姊妹,也都必须做好独身的准备。假使出现“疯丈夫”的现象,很容易犯下大错。在独身部分,男方与女方有比较大的不同。因为,弟兄需要配偶帮助,姊妹反而未必须要配偶帮助。在独身部分,姊妹比弟兄更有恩赐。这一点,圣经教导和社会观念截然不同,我们要注意。

  「那人(男人)独居不好,我要为他造一个配偶(女人)帮助他……就用那人身上所取的肋骨造成一个女人」(创2:18-25)

  当然,圣经也讲得很清楚,「照主的安排,女也不是无男,男也不是无女」(林前11:11),婚姻是一般常态。并且,「倘若自己禁止不住,就可以嫁娶。与其欲火攻心,倒不如嫁娶为妙」(林前7:9),所以,假使男女性欲很强,或是就是很需要异性陪伴,那就是嫁娶便是。

  但是,为了结婚而结,虽然一定可以找到对象结,可是却未必幸福哦!(硬是要娶、硬是要嫁,一定找得到阿猫阿狗嫁娶,不是吗?)再讲一次,「一定可以结」,和「结了会幸福」,那是两回事,请慎重为之。

  「婚姻,人人都当尊重」(来13:4)

  对所有人而言,不管男女,结婚都是常态,独身才是恩赐。结婚不需要恩赐,但独身需要恩赐。然而,有没有恩赐,未必是自己决定,有时是上帝决定。有时自己觉得有独身恩赐,但上帝认为没有,所以让你迈入婚姻。有时自己觉得没有独身恩赐,但上帝却认为有,所以让你独身。不管婚姻或独身,我们敬畏上帝主权,善尽自己本分便是。

五、留意普遍恩惠下的智慧

  「要当智慧人,不要当愚昧人」(诗篇、箴言经文极多,不再列举)

  这点同上一篇,不再重复。

六、才德的妇人

  「才德的妇人谁能得着呢?她的价值远胜过珍珠。她丈夫心里倚靠她,必不缺少利益;她一生使丈夫有益无损。她寻找羊羢和麻,甘心用手做工。她好像商船从远方运粮来,未到黎明她就起来,把食物分给家中的人,将当做的工分派婢女。她想得田地就买来;用手所得之利栽种葡萄园。她以能力束腰,使膀臂有力。她觉得所经营的有利;她的灯终夜不灭。她手拿撚线竿,手把纺线车。她张手赒济困苦人,伸手帮补穷乏人。她不因下雪为家里的人担心,因为全家都穿着朱红衣服。她为自己制作绣花毯子;她的衣服是细麻和紫色布作的。她丈夫在城门口与本地的长老同坐,为众人所认识。她做细麻布衣裳出卖,又将腰带卖与商家。能力和威仪是她的衣服;她想到日后的景况就喜笑。她开口就发智慧;她舌上有仁慈的法则。她观察家务,并不吃闲饭。她的儿女起来,称她有福;她的丈夫也称赞她,说:才德的女子很多,惟独你超过一切。艳丽是虚假的,美容是虚浮的;惟敬畏耶和华的妇女必得称赞。愿她享受操作所得的;愿她的工作在城门口荣耀她。」(箴31:10-31)

  圣经对于男生,比较少这种长篇大段的经文,而是零散的。但上帝对于女生,却列出这一大段经文,这是很特殊的。也因此,这是上帝对姊妹的恩典,使姊妹很容易就知道上帝要求与重点。

  这段经文,我们无法详细探讨,只能简单提及。重点很简单——娶妻娶德。

  请注意,这和现今社会习惯一样截然不同:社会是“以貌取人”(用外表的帅不帅、漂不漂亮、身材好不好……)来决定恋爱对象;但圣经的要求却不是这种,而是「德行」。这整段「好妻子」的经文,完全没有用「外表的漂亮、身材的好坏」来做为判定依据,甚至还特别提醒「艳丽是虚假的,美容是虚浮的」,并提及妻子信仰的重要(经文写「敬畏耶和华的妇女」)。因此,任何弟兄假使选择女友,是把「外貌」列为重要考量,甚至高于对其他德行的考量时,你们已经犯大错了!更可恶的是,现今教会普遍女多于男,但不少弟兄却是贪恋外邦女子美貌,而不把要娶已信者列为绝对必要考量,这罪加一等!至于外貌与打扮,我不是说女生都不需打扮,也不是说装扮美丽不可以,更不是说不能对挑选对象有任何外貌上的喜好,请不要误解。我讲的是,「德行」的优先顺位要占很重要的位置,重要到「有美貌而无德行」、「有美貌而非基督徒」的女生,你必须放弃的程度。

  箴言这段经文告诉我们贤妻的德行是什么?

  1. 可以让丈夫倚靠,对丈夫有益(只想倚靠丈夫的姊妹,该醒醒了)
  2. 勤奋、努力
  3. 认真尽本分,不为睡懒觉而轻忽本分(爱睡懒觉的姊妹,该醒醒了)
  4. 理财能力
  5. 爱心帮助贫苦
  6. 努力让家人衣食无虞
  7. 帮助丈夫得荣耀
  8. 讲话有智慧
  9. 让丈夫和儿女称赞
  10. 是敬畏上帝的基督徒

  圣经还有很多关于妻子德行的讲述,在此不多提。单单上述内容,我们就会发现圣经已经告诉我们很多德行的内容,可以帮助我们装备自己,或是选择对象了。

  在此要提醒一件事:

  很多人都以为贤德的女生就是柔柔弱弱、什么都不会,但那是大误解!上帝规定的贤德,可不是这样,而是「柔中带强」的!因为,那段箴言经文,清楚告诉我们,贤德的妻子,是「很能干」的,一点都不是弱不禁风、什么都不会的。这不是说每位姊妹都要做到、都很厉害,不是这意思。因为,不管是男人、女人,我们通通都是能力有限的罪人,都不可能做到完美。但是,起码我们已经有标竿,可以帮助自己努力追求成圣。

  另外也要提醒一下:

  挑别人?请先看看自己!不少弟兄姊妹对配偶的要求很高,但却不知省察自己是否配得上条件那么好的对象。事实上,很多时候,不少条件不佳、德行不好的人,反而很喜欢挑条件超好、德行超高的对象。这是很糟糕的行为,我们务必改正。

  还有一个很严重的问题,要在此提一下,就是——处女情结。我很痛恨处女情节的弟兄!更可恶的是,有些自己不是处男,却在意对方是否处女;有些自己是处男,就以此自高来嫌弃非处女。

  由于这种信件与论点,我已经接到好几次,所以必须再次公开纠正。只要对方「现在」德行好,请不需去追问女方的过去,更不得在意女方是否处女,或是嫌非处女脏。请不要忘了,在上帝眼中我们都是肮脏的罪人,是蒙耶稣宝血赦免与拯救的。

  我们凭什么嫌弃已经悔改的女友或妻子?主耶稣严厉警告,不赦免人的,上帝也不赦免你。请不要忘记这严厉的警告。

  最后,对所有弟兄姊妹,我要讲些心里话:

  当初,我坚持找不到基督徒姊妹,愿意终生不娶;我自己是处男,但从不要求对方是处女;我看重女生品德,多于看重外貌。上帝不是笨蛋,祂在天上看。谁是不是真心敬畏祂,祂清楚得很。我愿意为主放下,主却赐福我到福杯满溢,超过我所求所想、未求未想的。上帝赐给我的贤妻,不管外貌与德行都兼备,好到我事前难以想像的程度的。

  「若有人爱神,这人乃是神所知道的」(林前8:3)

  「神实在恩待以色列那些清心的人」(诗73:1)

  「神能照着运行在我们心里的大力充充足足地成就一切,超过我们所求所想的」(弗3:20)

  有些时候,不蒙上帝祝福,真的要自己检讨一下。愿上帝帮助还在寻找配偶的弟兄姊妹,祝福大家。

——小小羊


* 由于范围较大,本文回应范围放宽,只要是和男女交友有关的问题,都可以讨论、发问与回应。

Read More

2020-06-22
Try PostgreSQL

  1. Define business requirements first
  2. SELECT fields instead of using SELECT *
  3. Avoid SELECT DISTINCT
  4. Create joins with INNER JOIN (not WHERE) Some SQL developers prefer to make joins with WHERE clauses. This type of join creates a Cartesian Join, also called a Cartesian Product or CROSS JOIN. Cartesian Joins are especially problematic in large-scale databases, because a Cartesian Join of two large tables could create billions or trillions of results. To prevent creating a Cartesian Join, use INNER JOIN instead.
  5. Use WHERE instead of HAVING to define filters
  6. Use wildcards at the end of a phrase only When searching plaintext data, such as cities or names, wildcards create the widest search possible. However, the widest search is also the most inefficient search. When a leading wildcard is used, especially in combination with an ending wildcard, the database is tasked with searching all records for a match anywhere within the selected field.
  7. Use LIMIT to sample query results
  8. Run your query during off-peak hours

There are also many other advices on Google. By understanding the mechanism of SQL Query, the efficiency of specific cases can be analyzed and compared.

在做最后一道关于 SQL 的题目的时候,其实剩下的时间蛮多的。可是我却没有写完。 现在想想其实蛮简单的。不需要什么 PostgreSQL 的高级用法。 以前做这种题太少了,经验不足。所以,没能把握好思考的方向。 在之前备考的时候,我有略略浏览过 PostgreSQL 的文档。 由于时间紧迫,对于文档里面的各种高级用法的应用场景,我理解得很不充分。 机试的时候,我就在想文档里面的各种高级用法。想不到好的思路,人就慌了。 还有就是,做到后面的时候,我感觉自己体力有点不支了。 我感觉这次机试要死在 SQL 上。

In [ ]:
%load_ext google.cloud.bigquery
The google.cloud.bigquery extension is already loaded. To reload it, use:
  %reload_ext google.cloud.bigquery
In [ ]:
%%bigquery
CREATE TABLE
  dataset.buses ( id INT64,
    origin STRING,
    destination STRING,
    time STRING )
Out[ ]:
In [ ]:
%%bigquery
INSERT
  dataset.buses (id,
    origin,
    destination,
    time)
VALUES
  (10, 'Wuhan', 'Beijing', '10:00'),
  (20, 'Hangzhou', 'Shanghai', '12:00'),
  (21, 'Hangzhou', 'Shanghai', '12:30'),
  (22, 'Hangzhou', 'Shanghai', '13:00'),
  (30, 'Beijing', 'Tokyo', '23:59')
Out[ ]:
In [ ]:
%%bigquery
SELECT
  *
FROM
  dataset.buses
ORDER BY
  id
Out[ ]:
id origin destination time
0 10 Wuhan Beijing 10:00
1 20 Hangzhou Shanghai 12:00
2 21 Hangzhou Shanghai 12:30
3 22 Hangzhou Shanghai 13:00
4 30 Beijing Tokyo 23:59
In [ ]:
%%bigquery
CREATE TABLE
  dataset.passengers ( id INT64,
    origin STRING,
    destination STRING,
    time STRING )
Out[ ]:
In [ ]:
%%bigquery
INSERT
  dataset.passengers (id,
    origin,
    destination,
    time)
VALUES
  (1, 'Beijing', 'Tokyo', '23:59'),
  (2, 'Hangzhou', 'Tokyo', '09:00'),
  (10, 'Wuhan', 'Tokyo', '00:30'),
  (11, 'Hangzhou', 'Shanghai', '13:30'),
  (40, 'Hangzhou', 'Shanghai', '12:00'),
  (41, 'Hangzhou', 'Shanghai', '12:15'),
  (42, 'Hangzhou', 'Shanghai', '12:15'),
  (43, 'Hangzhou', 'Shanghai', '12:30'),
  (44, 'Hangzhou', 'Shanghai', '12:35')
Out[ ]:
In [ ]:
%%bigquery
SELECT
  *
FROM
  dataset.passengers
ORDER BY
  id
Out[ ]:
id origin destination time
0 1 Beijing Tokyo 23:59
1 2 Hangzhou Tokyo 09:00
2 10 Wuhan Tokyo 00:30
3 11 Hangzhou Shanghai 13:30
4 40 Hangzhou Shanghai 12:00
5 41 Hangzhou Shanghai 12:15
6 42 Hangzhou Shanghai 12:15
7 43 Hangzhou Shanghai 12:30
8 44 Hangzhou Shanghai 12:35
In [ ]:
%%bigquery
WITH
  buses_ranked AS (
  SELECT
    id,
    origin,
    destination,
    time,
    RANK() OVER (PARTITION BY origin, destination ORDER BY time) AS rank
  FROM
    dataset.buses)
SELECT
  bus_latter.*,
  bus_former.time AS time_former,
  passengers.id AS passengers_id,
  passengers.time AS passengers_time
FROM
  buses_ranked AS bus_latter
LEFT OUTER JOIN
  buses_ranked AS bus_former
ON
  bus_latter.origin = bus_former.origin
  AND bus_latter.destination = bus_former.destination
  AND bus_latter.rank = bus_former.rank + 1
LEFT OUTER JOIN
  dataset.passengers AS passengers
ON
  bus_latter.origin = passengers.origin
  AND bus_latter.destination = passengers.destination
  AND (bus_former.time IS NULL
    OR bus_former.time < passengers.time)
  AND passengers.time <= bus_latter.time
ORDER BY
  id,
  passengers_id
In [ ]:
%%bigquery
WITH
  buses_ranked AS (
  SELECT
    id,
    origin,
    destination,
    time,
    RANK() OVER (PARTITION BY origin, destination ORDER BY time) AS rank
  FROM
    dataset.buses)
SELECT
  bus_latter.id,
  COUNT(passengers.id) AS passengers_count
FROM
  buses_ranked AS bus_latter
LEFT OUTER JOIN
  buses_ranked AS bus_former
ON
  bus_latter.origin = bus_former.origin
  AND bus_latter.destination = bus_former.destination
  AND bus_latter.rank = bus_former.rank + 1
LEFT OUTER JOIN
  dataset.passengers AS passengers
ON
  bus_latter.origin = passengers.origin
  AND bus_latter.destination = passengers.destination
  AND (bus_former.time IS NULL
    OR bus_former.time < passengers.time)
  AND passengers.time <= bus_latter.time
GROUP BY
  bus_latter.id
ORDER BY
  id
Out[ ]:
id passengers_count
0 10 0
1 20 1
2 21 3
3 22 1
4 30 1
In [ ]:
 
Read More

2020-06-20
Try Zeppelin

In [ ]:
%%bash
cd ~ && wget https://ftp.riken.jp/net/apache/zeppelin/zeppelin-0.8.2/zeppelin-0.8.2-bin-all.tgz
tar zxvf zeppelin-0.8.2-bin-all.tgz
In [ ]:
%%bash
ls -lah ~/zeppelin-0.8.2-bin-all
total 29M
drwxr-xr-x  8 jupyter-sheng_wei jupyter-sheng_wei 4.0K Sep 26  2019 .
drwxr-x--- 33 jupyter-sheng_wei jupyterhub-users  4.0K Jun 19 22:04 ..
-rw-r--r--  1 jupyter-sheng_wei jupyter-sheng_wei  61K Sep 26  2019 LICENSE
-rw-r--r--  1 jupyter-sheng_wei jupyter-sheng_wei 5.5K Sep 26  2019 NOTICE
-rw-r--r--  1 jupyter-sheng_wei jupyter-sheng_wei 1.3K Sep 26  2019 README.md
drwxr-xr-x  2 jupyter-sheng_wei jupyter-sheng_wei 4.0K Jun 19 22:04 bin
drwxr-xr-x  2 jupyter-sheng_wei jupyter-sheng_wei 4.0K Jun 19 22:04 conf
drwxr-xr-x 26 jupyter-sheng_wei jupyter-sheng_wei 4.0K Jun 19 22:04 interpreter
drwxr-xr-x  4 jupyter-sheng_wei jupyter-sheng_wei  12K Jun 19 22:04 lib
drwxr-xr-x  2 jupyter-sheng_wei jupyter-sheng_wei 4.0K Jun 19 22:04 licenses
drwxr-xr-x  8 jupyter-sheng_wei jupyter-sheng_wei 4.0K Jun 19 22:04 notebook
-rw-r--r--  1 jupyter-sheng_wei jupyter-sheng_wei  29M Sep 26  2019 zeppelin-web-0.8.2.war
In [ ]:
%%bash
sudo -HE apt-get --yes install openjdk-8-jdk
In [ ]:
%%bash
~/zeppelin-0.8.2-bin-all/bin/zeppelin-daemon.sh start
Zeppelin start [  OK  ]
In [ ]:
%%bash
cat << EOF | sudo tee /opt/tljh/state/dynamic/zeppelin.toml > /dev/null

[frontends.zeppelin]
backend = "zeppelin"
passHostHeader = true

[frontends.zeppelin.routes.f1]
rule = "PathPrefixStrip:/zeppelin/"

[backends.zeppelin.servers.s1]
url = "http://127.0.0.1:8080"
weight = 1
EOF
In [ ]:
!sudo /opt/tljh/hub/bin/python -m tljh.installer
Granting passwordless sudo to JupyterHub admins...
Setting up user environment...


==> WARNING: A newer version of conda exists. <==
  current version: 4.5.8
  latest version: 4.8.3

Please update conda by running

    $ conda update -n base conda


Setting up JupyterHub...
Waiting for JupyterHub to come up (1/20 tries)
Waiting for JupyterHub to come up (2/20 tries)
Done!
In [ ]:
!sudo cat /opt/tljh/installer.log
2019-10-13 15:21:02,889 Granting passwordless sudo to JupyterHub admins...
2019-10-13 15:21:02,890 Setting up user environment...
2019-10-13 15:21:26,052 Setting up JupyterHub...
2020-06-20 21:30:49,996 Granting passwordless sudo to JupyterHub admins...
2020-06-20 21:30:49,996 Setting up user environment...
2020-06-20 21:32:15,388 Setting up JupyterHub...
2020-06-20 21:33:48,646 Waiting for JupyterHub to come up (1/20 tries)
2020-06-20 21:33:49,656 Waiting for JupyterHub to come up (2/20 tries)
2020-06-20 21:33:49,678 Done!
Read More

2020-05-24
Love Story

from IPython.display import YouTubeVideo
YouTubeVideo('8xg3vE8Ie_E', style='width: 90%; aspect-ratio: 16/9;')
In [ ]:
%%html
<iframe style="width: 90%; aspect-ratio: 16/9;" src="https://www.youtube.com/embed/8xg3vE8Ie_E" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"></iframe>

Taylor Swift - Love Story

We were both young when I first saw you
I close my eyes and the flashback starts
I'm standin' there
On a balcony in summer air
See the lights, see the party, the ball gowns
See you make your way through the crowd
And say, "Hello"
Little did I know
That you were Romeo, you were throwin' pebbles
And my daddy said, "Stay away from Juliet"
And I was cryin' on the staircase
Beggin' you, "Please don't go, " and I said
Romeo, take me somewhere we can be alone
I'll be waiting, all there's left to do is run
You'll be the prince and I'll be the princess
It's a love story, baby, just say, "Yes"
So I sneak out to the garden to see you
We keep quiet, 'cause we're dead if they knew
So close your eyes
Escape this town for a little while, oh oh
'Cause you were Romeo, I was a scarlet letter
And my daddy said, "Stay away from Juliet"
But you were everything to me
I was beggin' you, "Please don't go, " and I said
Romeo, take me somewhere we can be alone
I'll be waiting, all there's left to do is run
You'll be the prince and I'll be the princess
It's a love story, baby, just say, "Yes"
Romeo, save me, they're tryna tell me how to feel
This love is difficult, but it's real
Don't be afraid, we'll make it out of this mess
It's a love story, baby, just say, "Yes"
Oh, oh
I got tired of waiting
Wonderin' if you were ever comin' around
My faith in you was fading
When I met you on the outskirts of town, and I said
Romeo, save me, I've been feeling so alone
I keep waiting for you, but you never come
Is this in my head? I don't know what to think
He knelt to the ground and pulled out a ring
And said, "Marry me, Juliet
You'll never have to be alone
I love you and that's all I really know
I talked to your dad, go pick out a white dress
It's a love story, baby, just say, "Yes"
Oh, oh, oh
Oh, oh, oh, oh
'Cause we were both young when I first saw you

ChatGPT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
X:1
T: Love Story
C: Taylor Swift
M:4/4
L:1/4
K:C
G | A B c d | e2 d c B | A2 G F2 E | D2 D2 D2 |
w: We were both young when I first saw you.
G | A B c d | e2 d c B | A2 G F2 E | D2 D2 D2 |
w: I close my eyes and the flashback starts,
G | A B c d | e2 d c B | A2 G F2 E | D2 D2 D2 |
w: I'm standing there on a balcony in summer air.
G | A B c d | e2 d c B | A2 G F2 E | D2 D2 D2 |
w: See the lights, see the party, the ball gowns,
G | A B c d | e2 d c B | A2 G F2 E | D2 D2 D2 |
w: See you make your way through the crowd,
G | A B c d | e2 d c B | A2 G F2 E | D2 D2 D2 |
w: And say, "Hello," little did I know...
Read More

2020-05-11
祈克果

1837 年,在克尔凯郭尔做新闻记者写专栏稍有名气的时候,认识了雷吉娜(Regine Olsen)。这位 15 岁的少女爱上了他,他们慢慢地论及婚嫁,1840 年订了婚。在订婚以后,克尔凯郭尔以为自己应该把内心的感受告诉这位未来的太太,好使得以后可以互相分担忧患、痛苦。可是,当他把自己内心的所有忧郁,尤其自己有两个原罪,将来会下地狱的感受告诉雷吉娜的时候,雷吉娜当时只有 17 岁,不能接受如此古怪的、颓丧的思想,所以,把他所说的只有一笑置之。克尔凯郭尔认为自己不应该把自己内心的痛苦分担给这位纯洁的少女。因此断然地与她解除婚约。最后他从报上得知雷吉娜和另一个人订婚。在解除婚约之后,他更感到痛苦,一直到他去世。在他的前期日记和著作中,他和雷吉娜的关系一直都是他自我折磨式思虑的主题之一。


真正缺乏的是要让我自己明白,我应该做些什么,而非我应该知道些什么,尽管知识显然应该先于行动。重要的是寻找到我的目标,明确神意真正希望我所做的;关键在于找到一种真理,一种为我的真理,找到那种我将为之生、为之死的观念。
--「AA:12 吉勒莱日记」 - 克尔凯郭尔

我也有两个原罪?那么,我岂不是要背起两支十字架?一支为了圣经;一支为了死人的灵。


那么,谁是一个人的邻人呢?这个词很明显的是由“最近者”构成的,于是,邻人就是那比所有别人更靠近你的人,但这不是在偏爱性的意义上说的,因为去爱一个在偏爱性的意义上所说的比所有别人更靠近你的人,是自爱,——“异教徒们不是也会做同样的事情?”这时那邻人比所有别人更靠近你。但是,他是不是也比你自己对于你自己而言更靠近你?不,不是的,他恰恰是或者恰恰应当是与你一样近。“邻人”这个概念在根本上是你自己的自我的翻倍;“邻人”是那被思者们称作“他者”的东西,自爱中的“那自私的”要在这“他者”之上受考验。就此而言,为了“思想”的缘故,“邻人”就根本没有存在的必要。倘若一个人生活在一个荒岛上,如果他根据这诫命来建构自己的思路,那么,他通过放弃自爱可以说是爱邻人。固然“邻人”就其本身是多样的,因为“邻人”意味着“所有人”,然而在另一种意义上说,为了让你能够实践律法,一个人就足够了。就是说,在自私的意义上,在“作为自我”这一行为上,有意识地作为两个,这是一种不可能;自爱必定是独自地作为自我。也没有必要有三个,因为,如果有了两个,就是说,如果有了另一个人,你在基督教的意义上爱之“如己”,或者说,你在他身上爱着“邻人”,那么,你就爱所有人。但是,“那自私的”所无条件地无法忍受的东西是:加倍,而诫命之词“如己”则恰恰是这加倍。那在情欲之爱中焕发着火焰的人绝不会因为或者依据于这一火焰而忍受这加倍,它会是:如果被爱者要求放弃情欲之爱那么就放弃情欲之爱。因此,爱者并非“如己”地爱那被爱者,因为他是要求者,但这一“如己”则包含了一个对他的要求,——唉,这爱者却还是认为爱另一个人甚至高于爱自己。


这样,“邻人”尽可能地逼近自爱;如果只有两个人,那另一个人就是邻人;如果有一百万个人,那么这之中的每一个都是邻人,而这邻人对于一个人来说比“朋友”和“被爱者”更近,因为后者作为偏爱之对象,渐渐地在一个人身上与自爱团结在了一起。邻人以这样一种方式存在着并且与一个人如此接近;对此一个人在通常也会有所知,如果一个人认为自己相对这邻人有着各种权利,认为自己可以在这邻人这里要求一些什么。如果有人在这种意义上问,谁是我的邻人,那么,基督对法利赛人的那个回答则只会以一种特有的方式包含这答案,因为在这回答之中,那问题才被转化为反向的问题,由此所表达的是:一个人要以怎样的方式问。就是说,在讲述了关于慈心的撒玛利亚人的寓言之后,基督对法利赛人说(《路加福音》10:36):“你想这三个人,那一个是落在强盗手中的人的邻人呢。”法利赛人“正确地”回答了:“是怜悯他的那个人”;这就是说,通过承认你的义务,你就很容易明白,谁是你的邻人。法利赛人的回答包含在了基督的问题之中,这问题通过其形式强迫法利赛人做出这样的回答。那个我对之有义务的人是我的邻人,并且在我履行我的义务时,我显示出,我是这邻人。就是说,基督没有谈论“认识邻人”,而是谈论“自己成为邻人”,谈论显示出是作为那邻人,如同那个撒玛利亚人通过自己的慈心将之显示出来;因为通过这慈心他并没有显示出,那被打劫的人是他的邻人,而是显示出他是被打劫者的邻人。利未人和祭司本来在更确切的意义上是被劫者的邻人,但他们不想要对此有所知;撒玛利亚人则相反,他因为人们的偏见而被置于误解之中,他却正确地领会了:他是被抢劫者的邻人。选择一个被爱者,找到一个朋友,是的,这是一份麻烦的工作,但邻人是很容易认识的,很容易找到,只要一个人自己想要,——承认自己的义务。


--「爱的作为」 - 克尔凯郭尔

有谁爱死人如同自己呢?ーー「要爱邻舍如同自己。」谁愿意为复活付出心力,谁就是我的邻舍;谁不愿意为复活付出心力,谁就是我的仇敌。

Read More

2020-04-20
合適的男朋友

经学士和法利赛人、假冒为善的人哪,你们有祸啊!因为你们周游了洋海旱地,使一个人成了归依人,既归依了,你们又使他做该入地狱的人,比你们还加倍!
(马太福音 23:15 吕振中)

你们问我什么是对?什么是错?我只能建议:请拒绝成为一个追随耶稣的法利赛人。

分享一篇充满慈爱的「小小羊」的文章。


合適的男朋友——聖經的一些原則

這是給未婚的兄弟,也是給未婚的姊妹看的。未婚的兄弟可以藉此省察自己夠資格當人家的男朋友嗎?未婚的姊妹可以藉此查驗對象他夠格當我的男朋友嗎?我設定的男朋友、女朋友,是指「以結婚為前提」的交往。那些只想談戀愛而不考慮未來結婚的,不列在我的對象裡。另外,這不是詳細的聖經整理,而是一些簡單的原則而已。

一﹑離開父母,與妻子連合,二人成為一體︰

  「人要離開父母,與妻子連合,二人成為一體」(創2:24;太19:5;可10:7;弗5:31)。這是創世紀一開始紀錄人類的婚姻,上帝立下的超重要原則。這個原則,不僅舊約聖經有記錄,主耶穌同樣重申此令,可見這個原則的重要。但是很不幸的,這個原則也幾乎被忽略到難以想像的程度。我們要知道,人是上帝創造的,上帝是工程師,聖經是人類行事為人的幸福準則。

  照工程師的指示而行,才能操作順利;偏離工程師的指示而行,很難操作順利。遵守上帝的聖言,上帝就會背書,祂會負責履行祝福的應許;偏離上帝的聖言,上帝當然不背書,祂當然沒有義務保守我們幸福。因此,上帝的指示,我們一定要努力去遵行,否則很難有幸福可言。

  道理其實很簡單,就像交通規則是「紅燈停,綠燈行」,結果你遇到紅燈不停,硬要闖過去,你是使自己暴露在危險中。這不表示你只闖一次紅燈就一定會被車撞,也不保證你不闖紅燈就絕不會被撞,但是,你闖紅燈次數越多,你發生危險的機率一定越高,這是不變的道理。很不幸的,「人要離開父母,與妻子連合,二人成為一體」這條規定,沒多少基督徒放在心裡、認真遵行。特別是選擇男女朋友時,我很少聽見有人認真看待這句經文的。這句經文告訴我們什麼?

1﹑離開父母︰

  請注意,是與「妻子成為一體」,不是與「父母成為一體」,所以,妻子的優先順位,已經是在父母之上了哦!還有,所謂「離開父母」,「並非指不能與父母住一起」。所以,請不要隨便拿這句經文來要求婚後不與婆婆一起住。聖經這兒的「離開父母」,指的是「心態上、生活上,要脫離父母,以妻子為優先順位」。因此,一個丈夫可以完全不與父母住一起,但是心態上卻將父母的順位擺在妻子之上;一個丈夫也可以與父母住一起,但是心態上卻將妻子的順位擺在父母之上。看見這原則對男友選擇的重要性了嗎?

  1. 萬一未來婚後婆媳發生衝突時,男友會選擇父母,還是選擇女友?
  2. 假使婚後婆婆虐待媳婦,男友有決心保護自己未來的妻子嗎?
  3. 男友有決心自己與妻子二人努力來維生,而不在經濟上企圖靠父母來養嗎?

  我還可以列出更多,但是原則都同樣,就是男朋友對婚姻的觀念,是選擇將妻子的順位擺在父母之上,而且在心態上、經濟上,願意自立更生的嗎?這不表示婚後就不能與婆婆一起住,但是,萬一發生嚴重衝突與適應不良時,丈夫願意為保護妻子,而搬離家中嗎?

  這也不表示婚後夫妻都不能接受父母金錢協助、不能住在父母提供的房子,但是,是不是已經做好了決心與準備,沒有父母的協助,也願意辛苦過生活?請不要告訴我你現在不知道未來會怎樣,因為,你現在就可以模擬未來的狀況,自己測驗自己的立場與態度,並且,妳也可以詢問對方的立場與態度。

  我要很不客氣講:現今的基督徒未婚兄弟,有很多都答不出來的哦!有很多會對妳打馬虎眼、想要隨便敷衍過去的哦!這都表示對方還不成熟,根本沒有做好婚姻的準備。這些人,沒有資格當男朋友!

2﹑與妻子連合,二人成為一體︰

  這句話其實與上一句話是要擺在一起來看的,所以有些我們上面已經講過了。這裡繼續講稍微不同樣的部分。連合、成為一體,並不是說你們婚前就可以發生性行為,也不是說都不能有各自的生活、不能有任何獨處的空間、不能有任何的私密、所有過往私密都必須主動坦白告知,不是這種意思。但是,身為兄弟,你已經準備好與姊妹成為一體了嗎?你已經準備以妻子為優先順位,其他順位擺在後面了嗎?若是這樣,你還可以有紅粉知己嗎?你還可以在沒有其他人陪伴的場合下,單獨與其他異性相處嗎?

  除非你可以坦然告訴我你女朋友可以完全介入、完全不在意、隨時可以介入、隨時可以觀看你與現今其他異性的信件、隨時可以詢問你現今與異性的一切事務,否則,你就是違反與妻子成為一體的命令!你的男朋友,會將朋友的順位擺在你之上嗎?很多男人會這樣哦!他們的「麻吉」,比妳更重要!他會願意將時間、精力、精神、甚至金錢,都拿去與朋友分享,但是卻將妳擺在後面的順位哦!

  這都是違反「與妻子連合,二人成為一體」的聖經命令的。至於未經討論,就擅自做出重大決定,好比:買車、買房、離職、轉換工作……,這不用講,同樣是違反「與妻子連合,二人成為一體」的聖經命令。

二﹑丈夫是妻子的頭,妻子要順服丈夫︰

  「妳們作妻子的,當順服自己的丈夫,如同順服主。因為丈夫是妻子的頭,如同基督是教會的頭;他又是教會全體的救主。教會怎樣順服基督,妻子也要怎樣凡事順服丈夫。……妻子也當敬重她的丈夫」(弗5:22-33)。這是另外一條非常重要上帝的命令。偏偏,也是有很多基督徒毫不在意,甚至違反的命令。這句經文,有對丈夫講的部分,也有對妻子講的部分。我們今日著重在「你是不是夠資格成為男朋友」、「妳的男朋友是不是夠資格與妳邁向婚姻」的立場來講解。

  另外的「妳是不是夠資格成為人家女朋友」、「你的女朋友是不是夠資格與你邁向婚姻」的立場,另外一篇文章會講述。請不要對我講女性主義、女性神學。我不接受那一套世界學問與潮流、新派神學的路線。支持那條路線的,請不要來對我講東講西。我只對那些願意唯獨聖經、回到聖經、正解聖經的兄弟姊妹講述。

  是的!「丈夫是妻子的頭」(弗5:23),這句經文在今日這個時代聽起來,好似格外刺耳與落伍。但是,聖經就是上帝的話,上帝這樣說,我們就這樣遵行。其實,道理很簡單,一點都不難懂:一部火車,可以有幾個車頭,同時決定方向?一部汽車,可以有幾個方向盤,同時決定方向?請不要告訴我「夫妻彼此協調」,我當然知道,而且舉雙手雙腳絕對贊成。問題是,即使再恩愛、再協調的夫妻,也會有意見不同的時候,不是嗎?

  這句經文告訴我們的就是:萬一就是意見不合,不管如何協調都不合的時候,以誰的意見為第一順位?這問題與前面所講的「離開父母,與妻子連合,二人成為一體」的經文有異曲同工之妙,因為這經文不是叫我們不要孝順,也不是叫我們不用努力協調,而是萬一就是無法協調時,優先順位是什麼?我講更白一點:萬一媽媽與妻子,二者只能救其中一人,你要救誰?另外一句則是:妳要往東,妳的丈夫要往西,最終要聽誰的?看見了嗎?權柄!順位!這正是聖經裡一貫的立場與講述?

  當我們正解聖經的時候,會發現聖經是完全和諧、毫無矛盾、彼此相容相協調的。很多道理,都可以輕易舉一反三、融會貫通的。相反的,假使我們不照正意正解釋聖經,我們就會發現聖經常常出現矛盾,支離破碎,連對教義教理的認知也支離破碎。對於夫妻關係,聖經講得很清楚:

  1. 丈夫是妻子的頭。
  2. 妻子要順服丈夫。

  那麼,這對男女朋友,又有什麼實際上的意義?當然有!意義就是:

  1. 你夠格當人家的頭嗎?你夠格讓人家順服嗎?
  2. 妳願意這個男人未來當妳的頭嗎?這個男人夠格讓妳順服嗎?妳願意順服這個男人嗎?

  有多少未婚的兄弟姊妹,會將這段經文放在心裡,做為婚友選擇的依據?聖經是很令人敬畏的,上帝的話是超級銳利的寶劍(來4:12),會使很多東西無所遁形、令人痛苦萬分的哦!聖經可不僅是大家以為的溫柔、安慰……這樣的柔性的東西。事實上,很多時候,聖經是一種比原子彈還強大的可怕的武器,會使我們在省察自己、查驗對方時,使自己或是對方粉身碎骨的哦!

  兄弟們!你夠資格當人家的頭嗎?你性格是不是優柔寡斷呢?你是不是毫無主見呢?你可以放心讓人家倚靠你的領導嗎?你有決心當一個頭了嗎?真的嗎?什麼叫做「頭」,你知道嗎?就是要「愛妻子,愛到願意為她而死」!因為基督就是這樣當我們的頭的!聖經要丈夫必須愛到願意為妻子死,可是卻沒叫妻子必須愛丈夫愛到願意為丈夫死。

  不過,我們常常看見的卻是完全相反的,因為社會上一大堆笨女孩、笨妻子,願意為男朋友、為丈夫而死,可是這些男人卻是孬種,一點也不願意為女朋友、妻子死哦!假使有一天你們陷入苦境,妻子餓肚子,你必須淪為乞丐,身為丈夫,你願意捨棄一切尊嚴去乞討來養活妻子嗎?

  這個問題很尖銳,但是用這種尖銳的問題,可以逼我們很認真去省察嚴肅的事情。假使丈夫願意愛妻子甚至願意為妻子捨命,那麼,又怎會有暴力毆妻、推妻子入火坑(西3:19;彼前3:1)……這麼多不當的事件?同樣的,身為姊妹,1.妳認真思考過這個男人是不是夠資格當妳的頭嗎?2.妳願意順服這個男人嗎?3.這男人夠資格讓妳順服嗎?4.這男人願意為愛妳而捨命嗎?請不要告訴我對方說「願意」,因為,假使妳以為男人嘴裡講的話就是真話,妳就是笨蛋!

  多少花言巧語的男人,什麼愛妳到海枯石爛的鬼話講不出來的?問題是,從他們的行為,我們可以檢驗出他們講的是真話還是假話。很多人都會說婚前與婚後不一樣,其實,是自己笨蛋,沒認真在婚前看清楚。很多時候,婚前就已經露出許多嚴重線索,但是姊妹常常一相情願、看而不見、或是進行各種合理化,來自我欺騙。這樣,就是使自己陷入危險的境界,婚後萬一不幸,其實是自找的苦果與重軛,而不是上帝要我們背的十字架。

三﹑信與不信不能同負一軛︰

  「你們和不信的原不相配,不要同負一軛」(林後6:14),「丈夫若死了,妻子就可以自由,隨意再嫁,只是要嫁在主裡的人」(林前7:39)這是老生常談了,很多人都知道,但是很多人都軟弱守不住。對這些經文,我不再多講,求主幫助我們。對兄弟來講,因為我們要當頭,所以,我們的信仰必須比妻子好。因此,我們當時常省察自己,我是不是有好的信仰見證?我是不是有聖經的世界觀?(唯獨以聖經為一切最高的原則與指引)。

  對姊妹來講,因為這個男人是妳未來的頭,是妳未來要順服的對象,因此,他的信仰好嗎?有聖經的世界觀嗎?請別給我講他當過團契會長,就以為他信仰好。團契會長結婚後發生婚外情的一大堆!很多人只是表面敬虔,內心一點兒都不敬虔。一個男人是不是真正內心敬虔,你自己要睜大眼睛詳細看,而且,不可能看不出來,一定看得出。

四﹑要有獨身的打算︰

  「因為現今的艱難,照我看來,人不如守素安常才好。你有妻子纏著呢,就不要求脫離;你沒有妻子纏著呢,就不要求妻子。你若娶妻,並不是犯罪;處女若出嫁,也不是犯罪。不過這等人肉身必受苦難,我卻願意你們免受這苦難。兄弟們,我對你們說:時候減少了。從此以後,那有妻子的,要像沒有妻子的;……我願你們無所掛慮。沒有娶妻的,是為主的事掛慮,想要怎樣叫主喜悅。娶了妻的,是為世上的事掛慮,想要怎樣叫妻子歡喜。婦人與處女也有分別。沒有出嫁的,是為主的事掛慮,要身體、靈魂都聖潔;已經出嫁的,是為世上的事掛慮,想要怎樣叫丈夫歡喜。我說這話是為你們的益處,不是要牢籠你們,是要叫你們行合宜的事,得以殷勤服事主,沒有分心的事」(林前7:25-35)。

  「因現今的艱難」!這個時代,是邪惡的世代,報章雜誌我們看多了,各種婚姻的不幸我們也都知道。我們必須照聖經說的:

  1. 準備邁入婚姻。
  2. 準備終生獨身。

  表面上看,這二者彼此矛盾,其實不然。聖經常常告訴我們不管哪一種境遇,我們都要能處之泰然。因此,做好心志與準備,才能遇到好對象,感謝主,我們為主邁入婚姻;沒遇到好對象,也感謝主,我們為主獨身。請小心,假使你很「瘋妻子」或「瘋丈夫」,急欲找對象,你很容易犯大錯!因為,這種「瘋妻子」或「瘋丈夫」,會使人喪失理性,使人不願意等待,更使人不願獨身。我不是說不需要在適婚年齡積極尋找婚配對象,請不要誤解。

  我說的是不能「著急」!很多人很急,這時很容易犯大錯。「積極」與「著急」是兩回事,請自行體會。

五﹑留意普遍恩惠下的智慧︰

  「要當智慧人,不要當愚昧人」(詩篇、箴言經文極多,不再舉列)。所有生物,只有人類是照著上帝的形象創造的。人的理性,是上帝所賜寶貴的禮物。任何基督徒假使廢棄理性,然後宣稱自己純粹倚靠上帝的帶領,那就是欺騙自己,使自己淪為愚昧人。上帝當然會對基督徒有特殊的帶領,但是,上帝許多時候,是透過自然律、各種普遍恩惠,來要我們善用理性與智慧來行事。

  這種普遍恩惠下的智慧,不多說,因為太多了。好比:有暴力傾向的男人(箴22:24),不應該輕率與他成為男女朋友,甚至應該考慮離開。好比:個性偏激的男人,我們要小心。好比:男女雙方學歷、家世背景差距太大,婚姻比較艱難。這種智慧很多,無法一一舉列。事實上,這些東西,連一般未信者都知道,基督徒沒有不知的理由。以上所講的,只是一些簡單的講述。盼望能夠幫助兄弟姊妹。

Read More

2020-04-10
Try KubeCTL by Proxy

Setup proxy

Add the following to ~/ssh_proxy.sh:

gcloud config configurations activate sandbox-account
gcloud compute ssh --zone "us-west1-b" "andrew@jhub-gce" --tunnel-through-iap --project "sandbox-project" -- -D 2244

Change bash permission:

chmod +x ~/ssh_proxy.sh

Add the following to ~/env_proxy.sh:

export http_proxy='socks5://127.0.0.1:2244'
export https_proxy='socks5://127.0.0.1:2244'

Change bash permission:

chmod +x ~/env_proxy.sh

Enabling autocompletion

Upgrade bash

You can install/upgrade it using Homebrew:

brew install bash
sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
chsh -s /usr/local/bin/bash

Reload your shell and verify that the desired version is being used:

echo $BASH_VERSION $SHELL

Install bash-completion

You can test if you have bash-completion v2 already installed with type _init_completion. If not, you can install it with Homebrew:

brew install bash-completion@2

As stated in the output of this command, add the following to your ~/.bash_profile file:

export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"

Reload your shell and verify that bash-completion v2 is correctly installed with

type _init_completion

Enable kubectl autocompletion

Source the completion script in your ~/.bash_profile file:

echo 'source <(kubectl completion bash)' >>~/.bash_profile

Add the completion script to the /usr/local/etc/bash_completion.d directory:

kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl

If you have an alias for kubectl, you can extend shell completion to work with that alias by adding the following to your ~/.bash_profile file:

alias kroxyctl="http_proxy='socks5://127.0.0.1:2244' https_proxy='socks5://127.0.0.1:2244' kubectl"
complete -F __start_kubectl kroxyctl

Setup cluster-info

gcloud container clusters get-credentials jhub-cluster --zone us-central1-b --project sandbox-project
kubectl config rename-context gke_sandbox-project_us-central1-b_jhub-cluster jhub-cluster

Try kubectl by proxy

kroxyctl --context=jhub-cluster get pods
Read More

2020-04-10
Try JupyterHub and BinderHub

Add a custom login page and assignments directory for each user on a Jupyter Hub server

https://pythonforundergradengineers.com/assignments-dir-and-custom-login-page-to-jupyterhub.html

Try BinderHub

In [ ]:
!gcloud container clusters create \
  --machine-type n1-standard-1 \
  --num-nodes 1 --enable-autoscaling --min-nodes 0 --max-nodes 2 \
  --zone us-central1-b --cluster-version latest \
  jhub
In [ ]:
!gcloud container clusters get-credentials jhub --zone us-central1-b --project sandbox-243014
In [ ]:
!kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole=cluster-admin \
  --user=saintway.sakaru@gmail.com
In [ ]:
!kubectl --namespace kube-system create serviceaccount tiller
In [ ]:
!kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
In [ ]:
!helm init --service-account tiller --wait --upgrade
In [ ]:
!kubectl create namespace kronhub

Install JupyterHub

In [ ]:
%%bash
helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
helm repo update
helm upgrade jupyterhub jupyterhub/jupyterhub --install --namespace kronhub --values config.yaml
helm list
In [ ]:
!kubectl get service --namespace kronhub
In [ ]:
!kubectl describe service proxy-public --namespace kronhub

Install BinderHub

In [ ]:
# Create Service Account kronhub-builder (groups can be set!)
!mkdir ~/kronhub
  • one way for secret.yaml
In [ ]:
%%bash
cat << EOF > ~/kronhub/secret.yaml
jupyterhub:
  hub:
    services:
      binder:
        apiToken: "$(openssl rand -hex 32)"
  proxy:
    secretToken: "$(openssl rand -hex 32)"
registry:
  url: https://gcr.io
  password: |
$(cat ~/sandbox-243014-09712d6ea91c.json | sed -r 's#[ ]*([^ ].*)#    \1#g')
EOF
  • another way for secret.yaml
In [ ]:
%%bash
echo "\
jupyterhub:
  hub:
    services:
      binder:
        apiToken: \"$(openssl rand -hex 32)\"
  proxy:
    secretToken: \"$(openssl rand -hex 32)\"
registry:
  url: https://gcr.io
  password: |
$(cat ~/sandbox-243014-09712d6ea91c.json | sed -r 's#[ ]*([^ ].*)#    \1#g')\
" > ~/kronhub/secret.yaml
  • config.yaml
In [ ]:
%%bash
cat << EOF > ~/kronhub/config.yaml
replicas: 1.0
config:
  BinderHub:
    use_registry: true
    image_prefix: gcr.io/$(\
      cat ~/sandbox-243014-09712d6ea91c.json \
    | grep -oe '"project_id": "[^"]*",' \
    | sed -r 's#"project_id": "([^"]*)",#\1#g' \
    )/kronhub-
EOF
In [ ]:
# get project id in many ways
!gcloud config get-value project
!gcloud config list --format 'value(core.project)'
!gcloud config configurations list --format 'value(PROJECT)'
In [ ]:
%%bash
helm repo add jupyterhub https://jupyterhub.github.io/helm-chart
helm repo update

helm install

In [ ]:
%%bash
helm install jupyterhub/binderhub --version=0.2.0-29e7546 --name=binderhub --namespace=kronhub \
  -f ~/kronhub/secret.yaml -f ~/kronhub/config.yaml
In [ ]:
!cd ~ && git clone https://github.com/jupyterhub/binderhub.git
In [ ]:
!cd ~/binderhub/helm-chart/binderhub && helm dependency update
In [ ]:
!cd ~/binderhub/helm-chart && helm dep up binderhub
In [ ]:
!helm list
In [ ]:
%%bash
cat << EOF > ~/kronhub/config.yaml
replicas: 1.0
config:
  BinderHub:
    use_registry: true
    image_prefix: gcr.io/$(\
      cat ~/sandbox-243014-09712d6ea91c.json \
    | grep -oe '"project_id": "[^"]*",' \
    | sed -r 's#"project_id": "([^"]*)",#\1#g' \
    )/kronhub-
    hub_url: $(kubectl --namespace=kronhub get svc proxy-public \
               -o custom-columns=':.status.loadBalancer.ingress[0].ip' \
             | grep -oe '[^\n]*')
EOF
In [ ]:
!helm upgrade binderhub jupyterhub/binderhub --version=0.2.0-29e7546 -f ~/kronhub/secret.yaml -f ~/kronhub/config.yaml
In [ ]:
!kubectl get svc --namespace kronhub proxy-public -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
In [ ]:
!kubectl --namespace=kronhub get svc binder
In [ ]:
%%bash
cat << EOF > ~/kronhub/config.yaml
replicas: 1.0
config:
  BinderHub:
    use_registry: true
    image_prefix: gcr.io/$(\
      cat ~/sandbox-243014-09712d6ea91c.json \
    | grep -oe '"project_id": "[^"]*",' \
    | sed -r 's#"project_id": "([^"]*)",#\1#g' \
    )/kronhub-
    hub_url: $(kubectl --namespace=kronhub get svc proxy-public \
               -o custom-columns=':.status.loadBalancer.ingress[0].ip' \
             | grep -oe '[^\n]*')
    auth_enabled: true

jupyterhub:
  cull:
    # do cull authenticated users
    users: True

  hub:
    redirectToServer: false
    services:
      binder:
        oauth_redirect_uri: "http://$(kubectl --namespace=kronhub get svc binder -o jsonpath='{.status.loadBalancer.ingress[0].ip}')/oauth_callback"
        oauth_client_id: "binder-oauth-client-test"
    extraConfig:
      binder: |
        from kubespawner import KubeSpawner

        class BinderSpawner(KubeSpawner):
          def start(self):
            if 'image' in self.user_options:
              # binder service sets the image spec via user options
              self.image = self.user_options['image']
            return super().start()
        c.JupyterHub.spawner_class = BinderSpawner

  singleuser:
    # to make notebook servers aware of hub
    cmd: jupyterhub-singleuser

  auth: {}
EOF
Read More

2020-04-10
Try NTERACT

In [ ]:
from IPython.display import YouTubeVideo
YouTubeVideo('xU_xdogXFeE', width=600, height=400)
Out[ ]:
In [ ]:
from IPython.display import YouTubeVideo
YouTubeVideo('3FmBJ847_y8', width=600, height=400)
Out[ ]:

Notebooks.

A rendered REPL combining

REPL (Read–Eval–Print Loop)

  • Code
  • Logs
  • Documentation
  • Execution Results

Useful for

  • Iterative Development
  • Sharing Results
  • Integrating Various API Calls

Wins.

  • Shareable
  • Easy to Read
  • Documentation with Code
  • Outputs as Reports
  • Familiar Interface
  • Multi-Language

Notebooks: A REPL Protocol + UIs

Exploring and Prototyping.

The Good.

Notebooks have several attractive attributes that lend themselves to particular development stories:

  • Quick iteration cycles
  • Expensive queries once
  • Recorded outputs
  • Easy to modify

The Bad.

But they have drawbacks, some of which kept Notebooks from being used in wider development stories:

  • Lack of history
  • Difficult to test
  • Mutable document
  • Hard to parameterize
  • Live collaboration

Focus points to extend uses.

Things to preserve:

  • Results linked to code
  • Good visuals
  • Easy to share

Things to improve:

  • Not versioned
  • Mutable state
  • Templating

Notebooks are good integration tools.

  • Notebooks are good at connecting pieces of technology and building a result or taking an action with that technology.
  • They're unreliable to reuse when complex and when they have a high branching factor.

Some development guidelines.

  • Keep a low branching factor
  • Short and simple is better
  • Keep to one primary outcome
  • (Try to) Leave library functions in libraries
    • Move complexity to libraries
Read More

2020-02-06
约翰的二元论

别爱世界、或世界上的事物了。人若爱世界,爱父的心就不在他里面了。因为世界上的事物、肉体的私欲、眼目的私欲、和人生的矜夸、都不是出于父,而是出于世界。并且世界和世界的私欲、是正在过去;惟独实行上帝旨意的、永远长存。
(约翰一书 2:15-17 吕振中)

Do not love the world nor the things in the world. If anyone loves the world, love for the Father is not in him; Because all that is in the world, the lust of the flesh and the lust of the eyes and the vainglory of life, is not of the Father but is of the world. And the world is passing away, and its lust, but he who does the will of God abides forever.
(1 John 2:15-17 Recovery Version)


不要爱世界,和世界上的事。人若爱世界,爱父的心就不在他里面了;因为凡世界上的事,就是肉体的情欲、眼目的情欲、并今生的骄傲,都不是出于父,乃是出于世界。这世界和其上的情欲,正在过去;惟独实行神旨意的,永远长存。
(约翰一书 2:15-17 恢复版)

这个版本的约翰的眼中的世界真是狭隘。

可能是因为和合本翻译上的错误?或者是因为约翰使用了两个连接词「和」产生了歧义,所以造成了两个翻译版本之间微小的差异?


整个世界虽然不是从父来的,但不是也是父造的吗?


约翰的二元论

两个世界 约翰的二元论,表面上看来,似乎和符类福音的二元论不同。这是约翰的神学思想中最困难的难题。符类福音中的二元论,基本上是横向二元论:是两个世代(现世与来世)之间的对比。约翰福音的二元论,基本上是纵向二元论:是两个世界(上头的世界与下头的世界)之间的对比。「你们是从下头来的,我是从上头来的;你们是属这世界的,我不是属这世界的」(约八23)。符类福音对比现世与来世,我们并从保罗的用法知道:「这世界」可以是来世二元论中「这个世代」的同义词。但在约翰福音中,「这世界」几乎每一次都与上头的世界对比。「这世界」是邪恶的,是魔鬼管辖的(约十六11)。耶稣来作这世上的光(约十一9)。耶稣作工的权柄,不是从「这世界」来的,乃是从上头的世界来的,是从神来的(约十八36)。耶稣完成了他的使命,他就必须离开「这世界」(约十三1)。

  当耶稣论到他从天上降下到地上,并且再上升到天上,也显明了同样的二元论。「除了从天降下仍旧在天的人子,没有人升过天」(约三13)。耶稣从天上降下来,是要成就他从神领受的使命(约六38)。他从天上降下来,作「生命的粮」。人若吃这粮,就永远不死,就有永生(约六33,41,50,51,58)。当耶稣完成他的使命,他必须升到天上他原来所在之处(约六62)。耶稣复活以后,当马利亚要依附他,他叫她不要紧抓住他,因为他还没有升上去见他的父,他却要往门徒那里去,告诉他们说:「我要升上去,见我的父,也是你们的父;见我的神,也是你们的神」(约廿17)。

黑暗与光明 下头的世界是黑暗的领域,但上头的世界是光明的世界。基督来,进入黑暗的领域,把光带来。光明与黑暗被看为彼此相争的两个法则。「光照在黑暗里,黑暗却不能胜过光(约一5,另译)。耶稣自己是那光(约八12),他来了,好叫人不留在黑暗里,却要得着生命的光,使人能行在光中,就不至跌倒(约八12;九5;十一9;十二35;46)。凡信从这光的,就成为光明之子(约十二36)。可是,虽然光已经来到世间,世人却不爱光倒爱黑暗,并且拒绝来就光,因为他们的行为是恶的。凡「行真理」的,必来就光,要显明他的真实品性(约三19、20)。约翰福音认为,最大的恶就是恨恶那光,就是不相信耶稣。

肉体与灵 约翰的二元论还有一项对比,就是肉体与灵,虽然用得不多。肉体属于下头的领域;灵属于上头的领域。就像保罗的用法一样,肉体不是恶的,但肉体是下头领域的软弱与无能。人类生命通常是「从肉体的意生的」(约一13,另译),即借人类天然繁殖而生的。肉体不是罪恶,因为「道成了肉身,住在我们中间」(约一14)。肉体是人性、人类的同义词。可是,肉体被限制在下头的领域,不能够到上头世界的生命。「从肉身生的,就是肉身」(约三6);人必须从上头而生。耶稣进一步描述,从上头而生是从圣灵生。人本身与靠自己都是软弱会死的;惟有借着神之灵内在的工作,人才能明白或经历天上领域的恩典(约三12)。永生是神之灵的赏赐;按永恒看来,肉体是无用的。肉体不能使人得到永远的生命(约六63)。

  在耶稣论及崇拜的话中,有一不同的层次插入约翰的二元论。「神是个灵,所以拜他的,必须用心灵和诚实拜他」(约四24)。「用心灵拜」原文作「在灵里拜」,这句话不是指「在人的灵里拜」,不是对比「用外面形式与礼仪拜」;这句话是指「靠着神的灵而有的礼拜」。此处的对比并非上头世界与下头世界之间的对比,也不是以前时代的礼拜与在耶稣开启的新纪元的礼拜之间的对比。此处的对比是在圣灵与真理里礼拜与在耶路撒冷或基利心山的礼拜之间的对比。此处是「末世取代了暂时的制度(像圣殿)。」「圣灵把人提升高过属地、肉体的层面,并帮助人能正确地敬拜神。」此处我们首次遇见纵向与横向汇合。因为耶稣已经从天上来到世间,他已经设立万事万物的新制度。

Kosmos(世界) 进行约翰神学的研究,重要的是要知道他如何使用「世界」(Kosmos)这个字。该字有几种不同用法。有时类似符类福音的用法,Kosmos(世界)这字,正如希腊哲学用语,可以指整个受造的宇宙(约十七5,24),也可以专指大地(约十一9;十六21;廿一25)。大地往往是指人的居所,用在一些类似犹太用语的句子中:进到世界来(六14;九39;十一27;十八37),在世界里(九5上),离开世界(十三1;十六28下)。虽然这些句子有些因为上下文的缘故而有神学意义,但这用语本身却是常用的犹太用语。进到世界来就是诞生;在世界里就是生存;离开世界就是死亡。

  没有半点迹象显示有「世界是恶的」概念。「万有是借着他造的;凡被造的,没有一样不是籍着他造的」(约一3)。约翰福音没有天体二元论的成份,也没有否定世界的成份。受造的世界一直都是神的世界。

  Kosmos(世界)借换喻不只可以指这世界,也可以指那些居住在这世界上的人类(十二19;十八20;七4;十四22)。查考上述这些经文可以知道:Kosmos(世界)不是特别用来指居住在地上所有的人,便只简单地泛指人类。「世人都随从他去了」(约十二19)这句话意指耶稣得到许多人的回应。「我(耶稣)从来是明明的对世人说话」(约十八20)这句话意指他是公开地传道。约翰这个用法和希利尼的希腊文并七十士译本希腊文的用法相同,但古典希腊文则不常这样用。该法也出现在符类福音,在马太福音五章十四节和十八章七节。

  Kosmos(世界)用来指人类,最值得注意的是那些以世界(人类 )为神所爱和拯救对象的句子。神爱世界(世人)(约三16),并且差他的儿子去拯救世界(世人)(约三17下;十二47)。耶稣是世界(世人)的救主(约四42);他来要除去世界(世人)的罪孽(约一29),并且赐生命给世界(约六33)。就像前述第一组引用的经文,这些句子并没有特别强调普世性,只是简单地泛指人类是神的爱和拯救行动的对象。

Kosmos(世界):与神为敌的人 讨论迄今,Kosmos(世界)的约翰用法类似符类福音的用法。可是,约翰有一种 Kosmos(世界)的独特用法,是符类福音所没有的。人不只简单地被看为地上的居民并神爱与拯救行动的对象而已,人也被看为(与神对比之下)是罪恶的、叛逆的、并远离神的,是堕落的人。Kosmos(世界,世人)的特性是邪恶(约七7),并且不认识神(约十七25),也不认识神所差来的基督(约一10)。世界(世人)这样行不是因为世界(世人)有什么与生俱来的邪恶。当约翰说:「Kosmos(世界)也是借着他造的」(约一10),从上下文显示, Kosmos(世界)在此处是指人类,不是仅指宇宙或大地。Kosmos(世界)之所以邪恶,并不是与生俱来的,乃是因为世界转离其造物主,并且作了邪恶权势的奴隶。世界远离神表现在世界对神所差来拯救世界之基督的憎恶(约七7;十五18),奴役这世界,叫这世界背叛神的邪恶权势在约翰福音中曾三次被称为这世界的王(约十二31;十四30;十六11;见约壹五19)。世界与耶稣的门徒针锋相对。门徒从前属于世界,但神会把他们从世界中挑选出来,归给基督(约十七6);虽然他们要继续活在世界里(约十三1;十七11,15)。他们不再与世界共有一样的品格,因为他们属于耶稣基督,领受了他的道(约十七14)。就如耶稣的目标是要按他父的旨意而活,不纯粹为人的目标而活,因而他虽然活在世上,却不属于这世界,他的门徒也可以这样说,他们已经改变了他们的喜爱,从单是人的目标转成神的目标,因此他们不属这世界(约十五19;十七14)。耶稣来了,已经实际上在人当中造成了划分区别,虽然他们仍然继续生活在一起。神已经从世界当中拣选了人出来(约十五19),使他们可以以耶稣为核心,形成一个新的团契(约十七15)。因为这世界恨恶耶稣,所以这世界也将恨恶跟随耶稣的人(约十五18;十七14)。

  门徒的反应不是要从世界退隐,乃是要活在世上,其动机不是爱世界,乃是爱神。门徒要在世界负起使命,就是彻底继续耶稣的使命(约十七18)。就如耶稣把自己委身于完成他父对世界的旨意,并且完成他救赎世人的计划,因此跟随他的人也照样不从人的层面去寻找他们的安全感和满足,乃是委身于神的救赎计划(约十七17 ;19)。他们要保守自己脱离这世界的恶者(约十七15),其方法是以神为他们爱的核心。

  这种把人类区分为神的百姓与世界不是绝对的分割。人可以借着听信耶稣的工作和信息而从世界移转到神的百姓(约十七6;三16)。因此门徒要继续耶稣在世界的传道事工,叫人可以认识福音而得拯救(约廿31),脱离这世界。这世界不能接受圣灵(约十四17),不然世界早就不再是世界了;但许多在世界的人将要接受耶稣门徒的见证(约十七21),并且要相信他,虽然未曾看见过他(约廿39)。

撒但 约翰幅音和符类福音一样,认为世界是在一邪恶超自然的权势掌握之中,这权势称为魔鬼(约八44;十三2)或撒但(约十三27)。它被描述为「这世界的王」(约十二31;十四30;十六11)。保罗也有类似的措辞。符类福音称它为鬼「王」(archon)(太十二24)。约翰没有提到它管辖众污鬼,但约翰和保罗一样,说「全 kosmos(世界)受这 archon(王)所管辖」。它的目标是要拦阻神的工作。当犹大正要出卖耶稣,「撒但就入了他的心」(约十三27)。犹太人自称他们是亚伯拉罕的后裔,并正因为这原因,他们是承受了亚伯拉罕恩典的应许。耶稣回答说,他们憎恨他,便证明他们不是亚伯拉罕的子孙,他们实在是魔鬼的儿女,因为魔鬼从起初是杀人的,不守真理,因它心里没有真理(约八39及以下)。耶稣来带给人真理(约一17);但魔鬼是说谎的,也是说谎之人的父。

  虽然约翰福音不像符类福音那样叙述耶稣赶运污鬼,但在约翰福音,耶稣的工作显然也同样包括了超自然权势的争战。撒但是这世界的王,它试图征服耶稣(约十四30),但它无能为力。相反的,耶稣要得胜他的仇敌。耶稣在十字架上胜过了撒但,以致撒但可以说是「被赶出去」(约十二31)。换句话说,这个得胜可以描述为「这世界的王受了审判」(约十六11)。约翰并不臆测撒但的来源或本质。约翰只描述撒但为邪恶的超自然权势,是这世界的主,却被耶稣在他十字架上征服了。

  许多现代学者不能接受超自然权势的观念,尤其是不能接受耶稣所说,犹太人是魔鬼的儿女。「拿撒勒人耶稣居然说过这些话,这种记载简直匪夷所思。」他们认为这些话不是耶稣的教训,乃是约翰福音作者一个激烈的反犹太人论调。可是,我们必须承认,这句话与整个约翰福音的教训相符合。「(犹太人)不能自称为神的儿女,因为他们的行为否定了这个身份。犹太人对耶稣的态度,抗拒他从父启示给他们的真理,并且决定要杀死他,这些都相当符合他们的父魔鬼的性情,这魔鬼反叛神,因为神的国度是真理,魔鬼从起初就是杀人的。它的本质是虚谎,而它的母语是谎言。因它的嫉妒和凶恶,带给人类背逆和死亡。它的儿女不能欢迎从独一真神来的启示,他们且被驱使图谋杀害圣子,就是父所差来,要带给世界人类光明与自由的基督。」

hamartia(罪)在符类福音中用来指罪恶的行动,罪恶的彰显。约翰福音较多强调罪的本质。圣灵要定这世界的罪(单数,不是诸罪「复数」)(约十六 8)。罪是一种本质,这本质在这例子中彰显在不信基督的事上。每一位活在罪行中的人就是罪的奴仆,就是在罪的捆绑之下(约八34)。「人的罪是服役于邪灵的权势,并因此完全与神隔离。」除非人相信耶稣是基督,不然他们将要死在他们的罪中(约八24)。

  罪是黑暗;而罪恶世界的特性是黑暗。但神未曾遗弃这世界。那光照在黑暗中,亦即说,神借着道,用超自然启示的光穿透黑暗;虽然黑暗很漆黑,但黑暗不能熄灭那光(约一5)。耶稣也用类似的字句称他的传道事工。耶稣告诉人,这光在他们中间,还有不多的时候,他们应当趁着有光行走,免得拒绝了这光,黑暗就吞噬了(Katalam-bano)他们。那些拒绝这光的人,在黑暗中瞎眼跌倒,不知道往何处去。只有借着相信这光,人才能成为光明之子(约十二35)。

罪是不信 不信基督是恨恶神的进一步彰显。耶稣临在人中间,使他们对神的恨恶到了一个紧急关头,以致对神的恨恶变成清楚彰显为恨恶基督(约三19一21)。人若决定不信基督,他就要死在他的罪中(约八24)。约翰壹书五章十六节及以下的「至于死的罪」也许要按约翰福音八章廿四节来了解。也就是说,顽梗不信的罪其本身就判决了这人永远与神隔绝。因为这个缘故,约翰福音非常强调相信(Pi-steuo eis「信入」)基督。这句话在符类福音只出现过一次(太十八6)。这句话却在约翰福音出现过卅四次,其中十一三次是耶稣说的,廿一次是约翰的注释。不信是罪的精髓(约十六 9)。除非人相信,不然他们要灭亡(约三16),神的震怒常在他身上(约三36)。

死亡 约翰福音,除了认为是人生存在世上的一项事实外。多讲死亡。他极少臆测有关撒但、罪、或死亡的根源。人若没有基督带来的生命,人类是在死亡的手中,人类要为此负责,因为人类犯了罪。死亡是这世界的特色;但生命已经从上头来到这世界里,叫一切的人可以脱离死亡,并且进入永远的生命(约五24)。

末世二元论 讨论迄今,我们已经追溯约翰二元论的纵向面。下头的世界是黑暗的领域,是撒但权势、罪与死亡的领域。上头的世界是光明的世界,是圣灵和生命的世界。光明与生命已经借着耶稣的传道事工,闯进黑暗,并且把人从黑暗、罪恶与死亡里解救出来,赐给他们圣灵的生命。

  但是,这还不是约翰二元论的全貌。因为约翰福音有纵向末世论与横向末世论之间的紧张状态。约翰不只知道上头的世间闯进下头的世界、闯进「历史」。布特曼认为,约翰的二元论其实是抉择二元论(a dualism of decision),是诺斯底主义天体二元论转化而成的。陶德则认为,约翰的二元论其实是柏拉图二元论,就是「这世界各物各事所拥有的实体都源自他们蕴含的永恒观念。」因此,了解约翰有否救赎历史的概念,就更加重要了。

  库尔曼认为,必须从救赎历史的角度来看约翰的神学。虽然约翰有些用语的确在诺斯底主义的思想中出现过,并且虽然约翰也许真的故意使用这些用语向有诺斯底主义倾向的人阐释福音,可是我们不必再以为约翰的用语是源自诺斯底主义的思想。这些用语也在巴勒斯坦的思想,就是库穆兰作品中有出现过。同样重要的是,约翰把「道」的降临放在历史之中。约翰福音固然没有像符类福音那样频繁使用旧约圣经来证明耶稣是旧约盼望的成全。但约翰福音也多次引述旧约圣经的预言来证明这些预言已经在耶稣生平事件中成全了。施洗约翰就是那在旷野有人声喊着说:「修直主的道路」,正如先知以赛亚所说的(约一23)。耶稣洁净圣殿,又对卖鸽子的说:「把这些东西拿去;不要将『我父』的殿,当作买卖的地方。」约翰福音跟着便记载:「他的门徒就想起经上记着说:『我为你的殿,心里焦急,如同火烧。』」(约二13一17)约翰以耶稣对圣殿的主权为成就了诗篇六十九篇9节的预言。约翰记载:耶稣开启了新的纪元,所有人都比旧时代的人更能直接认识神。约翰福音跟着便记述:「在先知书上写着说:『他们都要蒙神的教训。』」(约六45)表示耶稣成就了旧约先知的预言(可能是以赛亚书五四章十三节)。约翰记述耶稣最后一次进入耶路撒冷,他记载:「如经上所记的说:『锡安的民哪,不要惧怕,你的王骑着驴驹来了了』」(约十二12一16)约翰认为这是以色列王君临耶京,应验了诗篇一一八篇廿五节及撒迦利亚书九章九节所预言的。约翰福音也记载:以色列拒绝耶稣,「这是要应验先知以赛亚的话,说:『主阿,我们所传的,有谁信呢?主的膀臂向谁显露呢?』他们所以不能信,因为以赛亚又说:『主叫他们瞎了眼,硬了心,免得他们眼睛看见,心里明白,回转过来,我就医治他们。』」引述了以赛亚书五三章一节及六章十节的话。约翰也记载耶稣被卖是要应验诗篇四一篇十节的话说:「同我吃饭的人,用脚踢我。」(约十三18)。约翰甚至认为,耶稣受死时发生的事,都一一应验了诗篇廿二篇十九节(约十九24),诗篇卅四篇廿节(约十九36),和撒迦利亚书十二章十节(约十九37)。可是,比明确引述旧约圣经更令人印象深刻的,是约翰福音的整个格调,并对旧约圣经的整个态度。「约翰的写作方法大体说来,不是要从旧约圣经,这里一点或那里一点的,摘取一些经文来支撑那几项基督教教义和历史;约翰乃是把新启示建基在全部旧约圣经所形成的背景或架构上。」支持这个论据有一件事实:绝大部份约翰主音的整个历史背景是在耶路撒冷的犹人节期。

  约翰非常了解,耶稣开启了新的纪元,实现了旧约时代的盼望。这是他在开场白的主题。律法本是借着摩西传的;恩典和真理(相等于旧约圣经的 hesed(忠爱)和 emeth(信实),都是由耶稣基督来的(约一17)。约翰记载耶稣经常提到摩西(十一次),又和犹太人辩论有关谁才是亚伯拉罕的后裔(约八33—58),耶稣强调,他来是要赐人真自由,犹太人自以为他们在亚伯拉罕里面就已经有了这种真自由,其实并非如此(约八33,36):他甚至声言:「你们的祖宗亚伯拉罕欢欢喜喜仰望我的日子;既看见了,就快乐。」(约八56)无论我们怎样注释这节圣经,这句话都肯定,耶稣已经实现了亚伯拉罕从应许而来的盼望。

  约翰福音以耶稣为旧约弥赛亚盼望的实现,这可从下述事实得知;约翰福音使用与符类福音相同的名号来称呼耶稣,如弥赛亚、以色列的王、人子、与神的儿子,虽然约翰福音使用时,多少有点不同。耶稣从未自称为神的道,但这并不重要。这是约翰自己对耶稣的独特见证。

  无可置疑地,许多约翰福音叙述的事件都有象征意义,把耶稣的传道事工放在救赎历史的流里。头一件神迹——在迦拿婚宴变水为酒——是个象征,是个记号(约二11)。婚宴象征弥赛亚的日子(赛五四4-8;六二4-5),并且婚宴和大筵席都出现在符类福音中,象征弥赛亚纪元(太八11;廿二1-14;路廿二16-18)。启示录以婚宴描述弥赛亚的极致完成(启十九9)。约翰福音的迦拿婚宴象征弥赛亚救恩的临在;而酒象征弥赛亚筵席的欢乐(见可二19);那六口作为犹太人洁净之礼的石缸,象征旧约时代,这时代现今正要结束;而马利亚的话:「他们没有酒了,」象征犹太人洁净礼的遗传徒有其表,就像马可福音七章一到廿四节所说的。

  约翰故意把洁净圣殿写在他的福音书的最前面,就像路加把耶稣在拿撒勒遭弃写在耶稣传道事工的前头一样,这是另外一项征兆(约二23)。约翰以此为耶稣表明他是圣殿的弥赛亚主。这圣殿要被拆毁,并且被耶稣复活所表明的一切所取代(约二19-20)。约翰福音四章廿到廿四节记载,耶稣公开声明,耶路撒冷和撒玛利亚的圣殿礼拜,要被圣灵带领的敬拜取代。

  真理(aletheia)和真(alethinos)是约翰常用的两个字。约翰常常描述神在基督里的启示是真理、是真实的。他的意思不只是错误、虚假的反面,也不只是天上恩典与地上事物的对比,乃是新世代的恩典和从前已逝世代的事物的对比。「那真光」(约一9)固然与地上的黑暗对比,但这对比不是与外邦宗教的假光对比,乃是与在耶稣之前犹太人那些部份、不完全的光对比。施冼约翰也算是个光(约五35),但耶稣却是完全的光。「那真粮」(约六32)是那满足灵里饥饿的粮;但这不是与日常食物、乃是与神借摩西赐下的吗哪对比,这吗哪只能够维持肉身的生命。基督是「那真葡萄树」(约十五1),因为他赐下真生命的源头给常在他里面的人,与从前时代以色列这葡萄树里面的一份子成对比(耶二21;结十五1一8;诗八8一16)。

  约翰福音常常出现「时候」的字和观念(约二4;八20;十二23,等等)。这就进一步强调,约翰福音以耶稣为救恩历史的核心。耶稣受苦、死亡、复活与升天的时候是神对待人的漫长历史的顶点。「现在」(nun)这个字一再使用,也同样强调这点。「时候将到,如今就是了」(约四23;五25)。「现在」耶稣的使命要到最高峰,这将意味:得胜魔鬼和世界(约十三31)、他自己在死亡里的荣耀(约十七5)、并他的回到父那里(约十六5;十七13)。救赎历史的最高峰也是末世极致完成的预尝。「在约翰福音的 nun(现在)里,已经…… 显示约翰知道是在过渡时期,是在几乎完全投向实现里,就是末日、极致完成而借基督已『现在』临在了。但约翰的『现在』(nun)…… 不是独一无二的。这不过是初期基督教的普通观念的增强形式而已。」

  约翰也展望将来。虽然约翰并没有明显的教会论,但他预见耶稣门徒的传道事工。他的使命是「要将神四散的子民,都聚集归一」(约十一52)。这明显反映外邦人的传道事工。他也曾说他是好牧人,他必须领「我另外有羊、不是这圈里的」来(约十16)。这句话也同样反映出向外邦人传福音的使命。

  约翰有实现的、未来的末世论成份(正如我们将要讨论到的)。虽然约翰福音的永生往往是「实现末世论」的现今的生命,但有时候是未来的和末世的(约三36;五39)。有一句话反映出末世二元论的两个世代。纵或不用这特殊的用语(永生),也比符类福音平行的经文更清楚。「在这世上恨恶自己生命的,就要保守生命到永生」(约十二25)。生命是将来世代的生命,而这句话的「这世界上」,与符类福音的「这世代」同义。

  我们结论说:「约翰的救恩观是纵向的,也是横向的。纵向表示神借耶稣介入的独一无二性;横向方面建立了这项介入与救恩历史的关系。」剩下来的问题是:这个与符类福音没有不一致的看法是否真正合符圣经的看法?抑或这看法是希伯来和希腊的救恩观的融合,并实际上歪曲了福音?

希腊二元论 讨论约翰的二元论,必须了解希腊二元论(包括诺斯底主义)的背景,也要了解新近发现的犹太二元论(就是库穆兰文献所代表)的背景。正如前面说过,有些学者,布特曼是当中最杰出的,使用「宗教历史」(religions geschichte)的方法,认为诺斯底主义基本上不是希腊二元论与福音混合的结果,却是发源于主前的东方宗教混合运动的最后产物。可是,除非发现主前犹太人或东方资料清楚反映这二元论,不然,下面结论比较安全:「诺斯底主义…… 其实只是根深蒂固的希腊思想倾向的演变发展结果。」

  纵览各式各样的希腊文作家,像哲学家柏拉图,文学家蒲鲁塔克(Plutarch),并犹太人斐罗(Philo),便可以证明二元论是希腊哲学与宗教思想中根深蒂固的观念。值得注意的是,犹太人斐罗承认旧约圣经是神的启示,他用不折不扣的哲学性二元论来注释旧约圣经。这二元论认为,有两种存在的领域——现象界与真相(本体)界:易变、过渡、可见的世界与不可见、永恒的、神的领域。最终实体只属于上头的世界。人,像宇宙一样,是个二元体:身体与灵魂。身体属于现象界,而灵魂属于真相(本体)界。可见的世界,包括人的身体,本身并非邪恶,但却是灵魂的累赘和羁绊。描述这两者之间的关系有一句名言:Soma-sema,身体是灵魂的坟墓或牢房。智就是那些能够主宰他身体的七情六欲、并让他的 nous(心智)管辖他的较低欲望的人。「得救」属于那些克制他们情欲的人;而他们死时,灵魂要从他们属地、身体的捆绑中得释放,并且自由地享受有福的不朽。得救是人借知识而获得的。柏拉图教导说,人的理性能够了解世界与人本身存有的真相,并因此主宰身体。斐罗也教导说,从属地捆绑中得释放是借着对神与世界的知识;柏拉图用辩证推理来获得这项知识,但斐罗则以摩西律法的启示和预言代替。

  最重要的诺斯底主义早期资料是黑尔梅文献,它反映出柏拉图主义和其他哲学的融合。我们已经讨论过约翰福音与黑尔梅文集之间有令人惊异的相似之处。

  神称为心智、光明、与生命。第一篇论文 Poimandres 以无限光明(就是神)的异象开始。与这原始光明遥遥相对的是一片混沌的黑暗之洋。有一圣道(logos),神的儿子,从这光出来,分隔高等的元素与低等的元素。天体是从低等元素,土与水所形成。自然界的低等元素没有丝毫理性,都是纯粹物质。人是按心智(nons)的样式受造。心智是光明和生命。但因迷恋受造之物,因而堕落并与非理性的自然界掺杂。人有两面:由于他的身体,所以是会朽坏的;但因他的本质存有,所以是不朽的。拯救可以在死后获得,那时人一步一步脱去他感官性质的成份,并且借着获得灵智(gnosis),就可神化。这学说认为,神的领域是光明,而低等领域是混沌的黑暗。

  充分发展完成的诺斯底主义认为,物质本身是邪恶的,人要得救必须借接受灵智(gnosis),这灵智是那位从天降下,又升上天的救赎者所赐与的。

库穆兰二元论 库穆兰文献的二元论与希腊的二元论非常不同。库穆兰文献的教规卷轴(Scroll of the Rule)(IQS)三章十三节至四章廿六节,是一般很好的范例,包含了库穆兰二元论各种基要成份。宇宙中有两组灵,互相交战。一组是真理的灵,一组是邪恶的灵。灭命的天使从光明的泉源,流放出真理之灵的忿怒;也从黑暗的泉源,流放出邪恶的云。这两组灵各管辖人类一部份。人类清楚划分成两个阵营,一个是光明与真理的众子,一个是邪恶的众子。可是,这两组灵也在人的心中开辟战场。犹太拉比的思想也有类似的观念。每一个人里头都有两种倾向,一种是善的倾向(yetzer hatob),一种是恶的倾向(yetzer hara)。当人(像库穆兰会员)决志严格遵行公义教师注释的律法书,真理的灵就在他身上掌权。其他所有的人都受邪恶的灵管辖。这争战并不限于在人的心内,也在全宇宙中,因为这争战要待末日大火时才结束。当审判的日子,神要毁灭邪恶的灵,灭命的天使要流放神的忿怒在邪恶的灵及跟随这灵的人身上。库穆兰文献的另外一卷战规卷轴(The Scroll of the War Rule)详细描述这末日的战争(IQM)。约翰福音与上述教规卷轴一段有好些相同的措辞:真理的灵、圣灵、光明之子、永生、生命的光、在黑暗中行、神的忿怒、瞎眼、丰盛的恩典、神的作为。

与约翰比较 希腊二元论与犹太二元论对解释约翰二元论有什么用处?虽然布特曼的学术极具份量,但仍难以令人相信约翰受诺斯底主义二元论的影响。相反的,约翰似乎反驳诺斯底主义那种二元论。当约翰强调说:「道成了肉身,住在我们中间」(约一14),他有意反驳诺斯底主义在属灵世界与物质世界之间放置深渊悬隔的观念。再者,虽然约翰少讲末世论,但约翰的救赎论并非诺斯底主义老的那种灵魂逃脱世界和历史。约翰的救赎论是在世界与历史之内与神活泼的相交,这种相交最终将在末日复活时臻于完全。约翰福音与黑尔梅文集间类似之处的重要性,已随库穆兰二元论的发现而大大减低。「库穆兰卷轴显示约翰福音的二元论与诺斯底主义无关,约翰二元论确是源自巴勒斯坦。」耶利米亚跟看指出约翰二元论类似爱色尼派二元论,都是独一神论,伦理的,和末世论的,都期盼光明的得胜。

  然而,约翰二元论与库穆兰二元论两者之间有显著的差异。库穆兰二元论的争战是两组灵的争战,这两组灵都是神创造的;但约翰二元论的争战,是世界和世界的王,与道成肉身之耶稣的争战。虽然约翰著作与库穆兰文献显然在光明与黑暗,光明之子与邪恶(黑暗)之子这些用语上相似,但约翰并没有以此表达两组灵管辖两类人,他却以此表达:成肉身的道是光,所有的人都在黑暗中,但都受邀请来就光。再者,光进入世界的黑暗中是一项实现末世论,与任何库穆兰神学完全不同。并且,罪论也非常不同。库穆兰认为,光明之子就是那些决志遵行公义的教师所注释的摩西律法,并且与世界(邪恶之子)隔离的人。约翰认为,光明之子就是那些相信耶稣,并因而承受永生的人。库穆兰认为,黑暗就是不遵从律法。约翰认为,黑暗就是拒绝耶稣。上述这些差异导致下列结论:库穆兰对约翰任何的影响,只在用语措辞的范围,不是在基本神学上。

  库穆兰文献与约翰福音有一相似之处,对了解约翰二元论尤为重要。库穆兰也有道德二元论(光明对黑暗),也有末世二元论(期盼光明最终末日的得胜)。库穆兰卷轴和约翰福音一样很少使用两个世代的二元论措辞。但库穆兰显然期盼审判的日子,神要审判黑暗的权势,恶人要在一场末日大战争中毁灭,那时善有善报,恶有恶报。有些学者认为库穆兰会员期盼身体复活;有些库穆兰残卷似乎描述新耶路撒冷,显示库穆兰会员期待神创造一个新世界。

  犹太启示文学作品显然融合纵向与横向二元论。以诺一书记载许多在天上神面前隐藏的隐秘事的启示;但这卷书最主要的是神鉴察的日子的末日极致完成。以斯拉的启示录都提到天上的耶路撒冷城,这城向亚当和摩西启示,也提到乐园,将要在末日审判之后显现。

  圣经也有同样的双重二元论。虽然符类福音的基本结构是末世二元论(末世神国已经借耶稣闯进历史的信息),但符类福音也反映出纵向二元论。天上被认为是神的居所,是耶稣门徒力量的来源。那些认识神国福乐,并为此受苦的人,在天上有大赏赐(太五12)。耶稣劝人积攒财宝在天上(太六20)。倘若那位富有的少年官愿意抛弃对地上事物的爱,跟随耶稣,他就必有财宝在天上(太十九21)。最生动的描述是新约启示录,约翰看见天上的异象,见证神对历史救赎计划的大结局。虽然他看见殉道者的灵魂在天上的祭坛底下(启六9及以下),末日极致完全却是不折不扣的天上耶路撒冷降临地上(启廿一2)。圣经的基本结构是:天上有一位神,他在历史中寻访人,并将最后临到他们,要改变这堕落的世界,并要在蒙救赎的地上住在人当中。这和希腊二元论完全不同,希腊二元论的救恩观,是灵魂逃脱历史,进入天上的世界。约翰的二元论是符合圣经的,因为他宣告神在历史中借道成肉身的耶稣本人寻访世人;而最终目标是死人复活、审判,并有将来世代的生命。约翰福音的着重点也许与符类福音不同,但其基本神学思想是一致的。符类福音宣告,末世神国的救恩已经借耶稣本人及其传道事工闯进历史。约翰福音宣告,借着耶稣本人及其传道事工,已经临在的救恩将有一末日极致的完成。

——《赖氏新约神学》

Read More