PURSUE ULTIMATE FACTS

2020-10-20
What is Marriage?

To BrightID:


TL;DR: Hey, guys! You have made an amazing identification system in crypto space. How about building a DAO with civil law? We can start with creating some smart contracts of marriage, concerning crypto property. And isn’t NFT a good way to digitalize and represent marriage certificate? If we can connect two people, then we can connect three and build a real community. We can connect crypto space with the real world.


You know I’m falling in love with a girl. And I’m considering a lot about marriage these days. I’m facing some problems of international marriage. What is marriage? This is some kind of a philosophy question. Does marriage begin with getting certificates of marriage? Does marriage begin with the wedding of putting the rings on the fingers and promising in front of godfather? Or does marriage begin with changing relationship status on Facebook’s WhatsApp? You know I’m a christian. And this question is critical to me because I can not make love before marriage. :) So I just thought that if I could get a certificate from crypto space… Just kidding. I and my girlfriend will get three certificates from three nations if I would go to Australia.


best regards,
Andrew


To my ex-girlfriend:


I don’t want to be with you anymore. Your world is just too narrow.
May you be happy with whoever you want to be with, although I hate them all.


best regards,
Andrew

Read More

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 吉勒莱日记」 - 克尔凯郭尔

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


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


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


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

  1. 邻人的爱是一种超越偏爱和自私的普遍之爱。
  2. 『爱邻如己』要求你把对自己的爱复制到任何『他者』身上。
  3. 重要的不在于辨识邻人,而在于成为邻人,通过行动和责任展现爱。
  4. 撒玛利亚人的故事告诉我们,真正的邻人是那些主动去爱、去承担义务的人。

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

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