• L
    leyafo

    Coffee in, Code Out
    --from Stack Overflow

    “最近越来越不对了”。张大锤端着手里的咖啡喃喃自语道。无论是产品经理改需求,还是二逼运维拔网线,还是 VPN 无法使用,还是 PHP 文档魔幻。从未见到张大锤会如此难受。张大锤从入行之初为应付加班喝雀巢开始,一直喝到现在手摇不加糖美式咖啡。这其中经历的风霜雨雪无法简单的用几门编程语言去描述。曾几何时张大锤认为喝咖啡是种过于矫情的行为,但丰富的临床 debug 经验让大锤开始重视喝咖啡这一行为带来的影响。写代码时经常会碰到写 C 语言忘记加分号,写 python 忘记缩进,写 PHP 忘记写 dollar 符号,写 ruby 忘记写 hash 里面的冒号。经历过多次这样一系列问题痛苦的 debug 后,张大锤发现一切都是咖啡引起的祸。

    阿拉比卡豆子偏硬,会导致代码容易占用 CPU 过高。如果把磨豆机从电动换成手摇会改善这一情况,但这样会导致网络 IO 负载过高,处理数据会有延迟。这时如果换成哥伦比亚产的豆子会缓解这一系列问题。其主要特征是酸、苦、甜味重,豆子大且富含水分,所以耐烘焙。但无法掌控好烘焙的深度与湿度喝完后写代码会导致 CPU 无故飙升,却又无故空转。长期来看问题不明显,但每次凌晨半夜被电话叫起去服务器 debug 的经历让大锤觉得不寒而栗,渐渐的开始彻底放弃哥伦比亚豆子转而使用牙买加产的蓝山咖啡。蓝山的豆子无论水份与质地都肥肠稳定,烘焙也容易掌控。但喝多了让他不免开始怀疑起自己的代码老是有问题,可就是 debug 不出来问题在哪里。线上虽然稳定,但老是需要十天半个月去干一次重启服务器这样的危险操作。这就是张大锤开始不断报怨“最近越来越不对”的根本原因。

    无独有偶,张大锤开始改进了咖啡冲泡的萃取工艺。一开始使用热水壶直接冲泡,高温经过咖啡粉快速的萃取。产生的味道只在温度未退去时会有一种浓郁的香味,香味随着温度的下降而消散。喝咖啡的速度稍有不甚会产生代码尿频,尿急,尿不净的运行方式。这种情况随着后来邻桌的王大锤从遥远的日本带回一把高工艺无焊疤的细嘴壶而彻底解决。高温的热水经过细水壶慢慢悠悠的流过咖啡粉,产生源源不断的细流萃取后的咖啡肥肠的细腻,甘甜,清澈。代码也一改以前一蹶不振的作风开始变的丝般顺滑。唯一需要注意的问题是细嘴壶倾倒热水时需要注意地球转动带来的磁场效应,在南半球必须顺时针拿着细嘴壶转,在北半球必须逆时针拿着细嘴壶转。否则网络传输数据时大小端字节序将会变得让人难以捉摸。

    水源的质量非常影响咖啡的味道,咖啡味道不稳定会影响编译器的语法分析与词法分析。自来水富含抗生素,每个区的抗生素的含量不经相同。闸北比长宁的含量少,金山比浦东的含量浓度高,黄埔比静安的含量贵。这些变量让人非常难以琢磨,所以张大锤开始采用农夫山泉。但由于农夫山泉在千岛湖装运,中间汽车的运输抖动频率无法控制,会让代码的循环变得时快时慢。所以张大锤开始周末骑士 mobike 去郊外的水井里面取水。由于 mobike 整车偏重,张大锤的大腿蹬起来会频率更加趋于一致。但郊区由于无人看管,经常有无良的动物与人会在水源处撒尿。经过几次尿波酸含量的检测后,张大锤在水源的 50 米外分别用中文,英文,动物文三种语言写上“此处严禁随地大小便”。水源这个问题基本上以这种优雅的方式得到了解决。

    见得多了,也就不怪了。张大锤开始接受这个世界无法做出一杯完美咖啡的设定,就像这个世界上不存在完美的编程语言一样。多年以前张大锤去山东德州出差帮村干部调试大虾价格控制程序,那里的天很蓝,民风淳朴,村里人从来不打老婆。张大锤一直无法忘记那个除了鸡腿和汉堡,还有大虾的地方。当然更忘不了那一天晚上 debug 完了以后,坐在海边喝的那一杯无法猜透豆子烘焙温度与冲泡工艺的咖啡。张大锤无数次回忆起那个晚上他戴着耳机,听着 <It Never Rains in Southern California> 时喝的那杯咖啡。这种感觉无法描述,只能通过音乐去回忆。就好像多年以后,尹志平爵士无数次通过音乐 <英雄的黎明> 回忆起他成为龙骑士的那一个夜晚。

    发布在 故事 阅读更多
  • L
    leyafo

    这几天要部署自己做的一个小板凳,是用 sinatra 写的一个简单的 blog 程序。这个程序很简单,代码非常少,可以像 php 那样直接使用 async 将代码。但我想熟悉下 Ruby 关于部署方面的技术,因此找到了 Capistrano 这个东西。Rails 的 web 后台对环境非常挑剔,Capistrano 是 Ruby 写的, 虽然它可以部署各种语言的代码,但可以部署 Rails 的程序不会太简单。

    Capistrano 这个东西产生的一大堆配置文件有点让人迷糊。Capfile 相当于一个 makefile 文件,里面设置了一些任务是如何运行的。config目录下有三个配置文件,其中 deploy 子目录是用于配置部署不同的环境。默认的是 production 和 staging 环境配置项分别对应两个同名的文件。deploy.rb 这个文件相当于一个总配置文件,里面的是一些公共的配置项。
    Capistrano 非常依赖版本控制,在 deploy.rb 文件中 repo_url 是用于设置代码仓库的地址的,配置好这个参数后需要确认服务器有访问代码仓库的权限。 scm 是设置具体的版本控制软件的。Capistrano 支持最好的是 git 和 svn。 deploy_to 是一个非常重要的参数,它指示了代码上传到服务器的具体位置,另外需要确保这个目录与配置好的用户名有足够的访问权限。这几个参数设置好后,其他的参数可以使用默认的了。然后再配置对应环境的具体配置项。 在环境配置项中,role 参数指示的三项分别是 app,web 和 db。这个三项分开的好处是可以让他们部署到不同的服务器上做负载均衡。单台服务器不用太关心,三项指向同一个地址即可。然后配置服务器的访问权限,配置非常简单,设置好用户名和 ssh public key就可以了。到这里基本的配置已经完成了,运行cap deploy:check 可以检测配置是否成功。这个时候如果 check 成功的话使用 cap deploy 命令就可以成功上传代码了。

    Click here to see the full blog post

    发布在 Leyafo 阅读更多
  • L
    leyafo

    a blatant attempt to influence your music taste.

    今天早上看到关于中国游泳选手尿检阳性的消息。我当时的感受就是:”干得漂亮!最好能彻底查一查那些患有心脏病的选手到底是怎么回事“。有人说你这不爱国。我想说,现在的年轻人啊,你可以去爱生活,爱你身边的人,爱这个世界,为什么偏偏要做爱国这么 low 的事情呢?奥运会拿的那几块牌子对你的生活有任何影响吗?你跟着瞎起哄还上升到民族大义,傻不傻?

    Click here to see the full blog post

    发布在 Leyafo 阅读更多
  • L
    leyafo

    git 不是一个对新手友好的工具,大多数新手第一次面对 git 总会有点手无足措。这时当你开始怀疑是不是一个蠢货时请不要停止,继续保持怀疑。面对一大堆命令和魔法般的黑色 terminal 大多数新手都会手无足措,不知道该怎么去用 git 去提交自己的代码。更可怕的事情是,如果搞砸了还会导致你旁边的豹子头同事把你给撕了的危险。本文档的主要作用是就是可以让你顺利的把代码提交到 git 库,避免产生意外的人身伤害。

    在被我忽悠 git 后你可能会偷偷的跑去网上找 git 相关的教程读。或者在看到我贱指如飞、神乎奇技地在键盘上狂按一通的时候你偷偷的拿笔在旁边记录我敲过的顺序。作为一个踏坑无数,身经百战的老司机有必要在这时告诉你一点儿人生经验,你这么做并没有什么卵用!!!因为你碰到的问题和网上那些教程说的是不一样的,老司机和你看到的世界也是不一样的(隔壁老王用的撩妹技能你直接拿去用会有什么后果?)。因此我们现在以平常工作中最简单的一个应用场景来解释 git 的基本用法。

    Click here to see the full blog post

    发布在 Leyafo 阅读更多
  • L
    leyafo

    Introduce

    git 不是一个对新手友好的工具,大多数新手第一次面对 git 总会有点手无足措。这时当你开始怀疑是不是一个蠢货时请不要停止,继续保持怀疑。面对一大堆命令和魔法般的黑色 terminal 大多数新手都会手无足措,不知道该怎么去用 git 去提交自己的代码。更可怕的事情是,如果搞砸了还会导致你旁边的豹子头同事把你给撕了的危险。本文档的主要作用是就是可以让你顺利的把代码提交到 git 库,避免产生意外的人身伤害。

    Example

    在被我忽悠 git 后你可能会偷偷的跑去网上找 git 相关的教程读。或者在看到我贱指如飞、神乎奇技地在键盘上狂按一通的时候你偷偷的拿笔在旁边记录我敲过的顺序。作为一个踏坑无数,身经百战的老司机有必要在这时告诉你一点儿人生经验,你这么做并没有什么卵用!!!因为你碰到的问题和网上那些教程说的是不一样的,老司机和你看到的世界也是不一样的(隔壁老王用的撩妹技能你直接拿去用会有什么后果?)。因此我们现在以平常工作中最简单的一个应用场景来解释 git 的基本用法。

    现在假设有两个农民工张大锤,王大锤,以下简称老张和老王。老张和老王每天搬砖太累了,他们决定写一部电影剧本来改变世界。但两个人在同一个剧情时间点上写同一件事情的时候总是会产生冲突。老张本来在 1970 年10月24日把男主角写挂了。但老王由于刚在淘宝买了块机械键盘,打字打得太爽了。在1970年10月24日这一天写成男主角正在吃着火锅唱着歌。这个时候冲突产生了,老王和老张为了这个事情从相亲相爱变成了砖角遇到爱。下面我们开始详细描述这一起恶性暴力的流血事件。

    Commit

    张大锤和王大锤已经写好了一些剧情了。他们的最开始的共同成果如下:

     1	从前有个人,名字叫赵铁柱。他人长得帅,又多金,还会写代码。
    

    最前面那个 1 表示第一行。

    老张刚和前女友分手,伤心难过,悲痛欲绝,以致于影响了日常严肃文学创作。所以他把接下来的剧本改成了这样:

     1	从前有个人,名字叫赵铁柱。他人长得帅,又多金,还会写代码。
     2	后来他死了。
    

    写完后老张开始提交代码,他先输入 git status 查看 git 库给出的文件改动信息。(git status 是一个人畜无害的命令,你敲破桌子也不会有人理你)。

    [老张]$ git status                                                                      
    On branch master
    Your branch is up-to-date with 'origin/master'.
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
    	modified:   scenario
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    这里给出的信息我们可以得到如下信息:

    1.现在所在的分支在 master 上。(你可以先不用管什么是分支)

    2.改动的文件是 scenario。

    3.提示显示如果你要提交这个改动先使用 git add 和 git commit -a。

    这里解释下 git add 和 git commit 这两个命令,这两个命令是要合用的。git add 是添加改动,git commit 是提交改动。git commit -a 表示的是添加并提交。现在看不懂 git commit -a 这个命令没关系,只要使用按照流程先用 git add 再用 git commit 就可以了。

    老张按照流程输入了如下的命令进行 commit。

    [老张]$ git add scenario
    [老张]$ git commit -m "自古空情多余恨,此恨绵绵无绝期。"
    

    其中 -m 后面双引号括起来的那一串表示你对提交的改动信息说明,主要为了让别人能快速理解你的修改。

    老张输入了 git status 查看 git 库给出的信息。

    [老张]$ git status                                                                       
    On branch master
    Your branch is ahead of 'origin/master' by 1 commit.
      (use "git push" to publish your local commits)
    nothing to commit, working directory clean
    

    这个时候提示我们可以往远程的 git 库进行提交了。

    于是老张使用了 git push origin master (你只需要知道 origin 表示仓库,master 表示分支就可以了)

    [老张]$ git push origin master
    Counting objects: 3, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 342 bytes | 0 bytes/s, done.
    Total 3 (delta 1), reused 0 (delta 0)
    To git@data-git.mana.com:yafo_bitch/git-tutorial.git
       84179ac..060cd28  master -> master
    

    以上信息告诉我们提交到远程库成功了,master -> master 表示远程的与本地的 master 同步了。

    张大锤的工作到此为止,幸福生活依然还很幸福。但以下事情开始让张大锤觉得生活并不是那么的一帆风顺。

    Conflict

    王大锤鬼混了一天后开始改邪归正为改变世界写剧本了。他也从如下状态的剧本开始写。

     1	从前有个人,名字叫赵铁柱。他人长得帅,又多金,还会写代码。
    

    老王自从用上了淘宝买的机械键盘后,打字快如狗。他使用了他那把逼格甚高的上等无刻 HHKB 添加如下的剧情:

     1	从前有个人,名字叫赵铁柱。他人长得帅,又多金,还会写代码。
     2	他最大的爱好是吃着火锅,听着 beatles 与高富帅们谈笑风声。
    

    老王也按照流程开始提交他本地的改动

    [老王]$ git add scenario
    [老王]$ git commit -m "两情若是久长时,一枝红杏出墙来。"
    

    然后他把本地的改动 push 到远程的 git 库。但是 push 不上去了,提示信息告诉他与远程的 git 库冲突了。

    [老王]$ git push origin master 
    To git@data-git.mana.com:yafo_bitch/git-tutorial.git
     ! [rejected]        master -> master (fetch first)
    error: failed to push some refs to 'git@data-git.mana.com:yafo_bitch/git-tutorial.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    

    提示信息显示远程库的改动和本地不一致,必须要先 pull 下来再 push。这个时候可以使用命令 pull(用 pull 命令一定要加 --rebase 参数) 先把远程的改动拉下来。拉下来后会出现两种情况。

    一、你和别人代码没有冲突。pull 完了以后,这个时候你可以再一次 push 就好了。

    二、你和别人的代码有冲突,这种情况一般是你和别人改了同一个位置的代码。就像这次王大锤和张大锤同时改了第二行的剧本一样。会产生如下的输出:

    [老王]$ git pull --rebase origin master   #一定要加 --rebase 参数。
    remote: Counting objects: 3, done.
    remote: Compressing objects: 100% (2/2), done.
    remote: Total 3 (delta 1), reused 0 (delta 0)
    Unpacking objects: 100% (3/3), done.
    From data-git.mana.com:yafo_bitch/git-tutorial
     * branch            master     -> FETCH_HEAD
       84179ac..060cd28  master     -> origin/master
    First, rewinding head to replay your work on top of it...
    Applying: 两情若是久长时,一枝红杏出墙来。
    Using index info to reconstruct a base tree...
    M	scenario
    Falling back to patching base and 3-way merge...
    Auto-merging scenario
    CONFLICT (content): Merge conflict in scenario
    Failed to merge in the changes.
    Patch failed at 0001 两情若是久长时,一枝红杏出墙来。
    The copy of the patch that failed is found in:
       /Users/老王/t/1/.git/rebase-apply/patch
    
    When you have resolved this problem, run "git rebase --continue".
    If you prefer to skip this patch, run "git rebase --skip" instead.
    To check out the original branch and stop rebasing, run "git rebase --abort".
    

    以上信息显示同时被修改的文件是 scenario(注意前面那个大写的 M,表示 modify 的意思),conflict 出现在了这个文件。我们先把注意力放到最下的三行。下面有请伟大的中文,英文,计算机文,三语使用者张全蛋先生为我们翻译。

    When you have resolved this problem, run "git rebase --continue".
    搞定所有的麻烦后请使用 "git rebase --continue" 命令.
    
    If you prefer to skip this patch, run "git rebase --skip" instead.
    如果你想挨揍请使用 "git rebase --skip" 命令。
    
    To check out the original branch and stop rebasing, run "git rebase --abort".
    如果你想被开除请使用 "git rebase --abort" 命令。
    

    很明显,为了生命安全,生活质量我们要按照第一条规则来行事。为了更方便解决冲突我们可以使用 git status 来查看更具体的冲突信息。

    [老王]$ git status
    rebase in progress; onto 060cd28
    You are currently rebasing branch 'master' on '060cd28'.
      (fix conflicts and then run "git rebase --continue")
      (use "git rebase --skip" to skip this patch)
      (use "git rebase --abort" to check out the original branch)
    
    Unmerged paths:
      (use "git reset HEAD <file>..." to unstage)
      (use "git add <file>..." to mark resolution)
    
    	both modified:   scenario
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    这样就可以更清楚的看到具体的 both modified 文件路径。现在我们打开 scenario 文件可以看到另一个作者张大锤先生写的剧本。

         1	从前有个人,名字叫赵铁柱。他人长得帅,又多金,还会写代码。
         2	<<<<<<< HEAD
         3	后来他死了。
         4	=======
         5	他最大的爱好是吃着火锅,听着 beatles 与高富帅们谈笑风声。
         6	>>>>>>> 两情若是久长时,一枝红杏出墙来。
    

    现在 scenario 文件告诉我们具体冲突的地方(使用git diff scenario 可以快速查看冲突) 。

    就是以 <<<<<<< HEAD 开始到 >>>>>>> 结束的地方。中间的 ======= 用来分割开两次的改动。

    <<<<<<< HEAD 下面的是别人那边提交过来的代码

    ======= 下面的是我们这次修改后的代码

    决定好留低3行或第5行后,在文件里面其他的所有东西都要都要删除掉。

    王大锤和张大锤后来打了很多场架,留过很多血后,终于决定了到底保留第3行还是第5行。

    这时王大锤可以继续提交了。以下是修改好冲突后提交的流程:

    [老王]$ git add scenario  #由于只是修改冲突,所以并不需要再使用 commit
    [老王]$ git rebase --continue
    

    这时可以使用 push 把本地的修改提交到远程去。

    [老王]$ git push origin master
    Counting objects: 3, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 462 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To git@data-git.mana.com:yafo_bitch/git-tutorial.git
       060cd28..7f1794c  master -> master
    

    Ok,Everything is all right. 幸福的生活可以继续了。

    Summary

    为了在关键时刻不手忙脚乱的再从头开始读文章,我把所有的步骤全列在下面供你们快速查看。$ 后面表示命令行。千万别使用 Ctrl-C copy 任何命令,否则出现生命危险后果请自负!

    #正常步骤
    ....  edit some files ....
    $ git add edited_file
    $ git commit -m "some changes message"
    $ git push origin master
    
    #冲突步骤
    ....  edit some files ....
    $ git add edited_file
    $ git commit -m "some changes message"
    $ git push origin master
    ....  failed to push some refs to ....
    $ git pull --rebase origin master
    
    ## 如果没有冲突?
    $ git push origin master
    
    ## 如果有冲突?
    ... resolved all of conflicts ...
    $ git add some_resolved_file
    $ git rebase --contine
    $ git push origin master
    

    发布在 Leyafo 阅读更多
  • L
    leyafo

    Ah, but I was so much older then I'm younger than that now.
    Bob Dylan - My Back Pages

    对于 Bob Dylan 能获文学奖我一点儿也不觉得稀奇,早在 2008 年前他就被提名过了。Bob Dylan 在音乐界被称为民谣(folk music)诗人。他的音乐旋律单一,唱法也非常单一,但歌词寓意非常丰富。对比大众这几年流行的中国好声音式的唱功,Bob Dylan 那抽烟过于严重的嗓音对大众来说简直堪比驴叫。这就是 Bob Dylan 的魅力,他的歌词在 50 年前征服了美国的人民,在 50 年后征服了诺贝尔奖的评委。他的歌词指向性都非常明确,早期的歌词很多描写都是一些社会问题。这些社会时事包括黑人种族歧视、战争、冤案、抗议。他的早期非常著名的一首歌 Blowin’ in the wind 我认为是他的这种音乐风格的代表。这首歌的一部分旋律来自传统的奴隶音乐,旋律非常简单。歌词控诉了当时美国社会的一些现状和弊端。这首歌后来成为经典,被无数人翻唱过,甚至被一些歌星再次翻唱后,成为了他们的热门歌曲。

    Bob Dylan 早年喜欢在乡村音乐电台上听 blues(布鲁斯),在青少年时期喜欢摇滚乐。在高中时组过几个乐队,主要翻唱  Little Richard(小理查德) 和 Elvis Presley (猫王)的作品。高中毕业后进入大学(明尼苏达州大学)后他开始逐渐把表演风格转向了民谣(folk music)。对此他的解释是:“摇滚在很多方面都无法满足我,尽管摇滚有很好表现语境与节奏感,但它不够严肃,不能实际的反应出生活的本质。而民谣更加严肃,民谣能够更好的表现出绝望、愤怒、喜悦、失败、信仰等更深层次的感知”。 Bob Dylan 早期的几张专辑里面的主要是口琴和木吉他演奏,这让他的专辑销量非常惨淡,甚至一度到了快要被唱片公司放弃的地步了,这种情况在后来换了一个厉害的经纪人才得到解决。在他的音乐被大众慢慢熟知以后,大家开始认可了他音乐的表达方式,称他的嗓音有别样的的风味。

    Bob Dylan 现在拿奖了,肯定会有一大波人会凑热闹跑去听他的音乐。不出意外的话这一大波人里面大部分人很快就会放弃,因为 Bob Dylan 的嗓音实在过于难听,一开始很难适应这种风格。他那几首比较出名的作品像 Blowin’ in the wind,Knockin' On Heaven's Door,Like a Rolling Stone 都是一开始听非常难听,不太像是音乐作品。坊间一直传闻 Bob Dylan 的音乐的是翻唱比原唱要好听,对此我是认同的。我第一次喜欢上 Bob Dylan 的音乐是他的那首 My back pages。这首歌我是在 Bob Dylan The 30th Anniversary Concert Celebration 这个演唱会专辑里面听到的。如果你有时间去网上找一找这个演唱会的视频,看了后我相信你也会喜欢上的。Bob Dylan 这种级别的人开的这种演唱会请的都是音乐界顶级的人过来演奏,无论是唱法和演奏水平都非常之高。这场演场会请的都是诸如 Neil Young、Lou Reed、Eric Clapton 这种级别的人,都是一些老家伙,所以大家戏称这是“诸神的黄昏”。 实际上通过演唱会的演奏水平去判断一个乐队/歌手的演奏水平是非常靠谱的,毕竟现场演奏需要的水平更高。

    发布在 评论 阅读更多
  • L
    leyafo

    我一直以来不喜欢看丧尸、鬼怪、恐怖、灵异这一类型的的电影电视作品。这种电影品味不知道是什么时候被培养起来的。可能是我看电影习惯于看评分,以及早些年看多了 TOP250,TOP100 之类的电影。这些高评分的作品里面剧情向的电影占多数,很少会有鬼片这一类型的电影。基于此这几年很多朋友在我身边和我说起这部电影时我是略带战五渣的眼神去看他们的。直到后来有人说这是一部披着丧尸皮的末日团队生存电影,我便开始看起了这部美剧。

    这部美剧一开始就很高能。第一季各种惊险刺激的场景吊足了观众的胃口,这为这部美剧的续篇打下了良好的基础。影片的开头描绘了一副末日景象,交代了故事所在的时代背景。男主 Rick 一出场面对的是家人失踪,街上全部都是各种可怕的形尸。好在不久后他在附近找到了和他同样遭遇的人们。很快他们便组成了一个临时的、小型的 Team 对丧尸群进行突围。编剧按照了观众预想的那样把 Rick 失踪的家人团圆了。由于主角 Rick 以前做过警察,和歹徒有过斗智斗勇的经历,自然而然的他便成了这个临时 Team 的 leader。在随后的剧情发展中我们可以看到 Rick 是如何一步一步变成一个更优秀的 leader,以及他们这个 Team 是如何慢慢地成长起来。

    这部美剧一直在传递一个观点:“没有永远安全的堡垒”。Rick 和他的 Team 成员一开始对这种末日景象非常的手无足措,非常难以适应这种生活状况。更可怕的是身边的队友随时有可能会死去,他们还要担心食物短缺的问题。所一开始面对这些事情大家都是抱着这是一个灾难,它很快就会过去,政府会有解决的措施,这样一种想法在生存。他们当时倾向的解决方案就是找个丧尸进入不了的地方躲起来,然后等待政府的救援。他们也真找到了这样的地方,就是老 Hershel 兽医的农场。在 Hershel 的农场里面他们暂时性的过上安全的生活,虽然时不时有那么几只形尸跑出来客串一下,但这并不妨碍他们的日常生活。该谈恋爱的就谈恋爱,团队相处上有矛盾还偶尔来点儿内斗。这个阶段团队最大的矛盾来自于 Rick 以前的搭档 Shane。Shane 行事风格非常果断勇敢,面对形尸完全没有任何恻隐之心,是一个很适合在这种末日时代单枪匹马生存下来的人。唯一的缺点就是过于自私不太照顾团队成员的利益,这也让他后来彻底同 Rick 团队决裂。在 Hershel 农场 Rick 团队没过多久便遭遇了一场超大规模行尸群的攻击。团队失去了几名成员,其中有一个比较特别的人也死了,他的名字叫 Dale。Dale 是个很善良的老头,也很智慧,他是最早发现 Shane 不适合他们这个团队的人。他的缺点就是太过于善良,以致于忘记了他所处的时代是一个乱世。这也预示着这部电影后面的基调,再善良的人如果没有生存能力在这里是无法生存的。

    从 Hershel 农场逃出来以后,作为 leader 的 Rick 发现了团队里面存在着一个很大的问题。就是民主制度导致了他们在做各种决策时会无法当机立断,需要照顾到太多人的情绪与个别成员不正确的处事方式。Rick 明白了事情的严重性,当即做了一个非常正确的决定,就是独裁制,让所有成员的意见保持一致前行。如果谁不愿意听他指挥,就请立马滚蛋。然后告诉他们不要去试图找一个安全的地方躲起来,因为已经没有任何地方是永远安全的。对于刚刚经历了一场精心动魄的逃亡,团队成员们都意识到了这个问题的严重性。他们开始抛弃掉在以往生活中唧唧歪歪无用的仁波切。Rick 和他团队在这时候开始成长了。随后团队成员在占领空旷房子时表现得如军队一般的规整,主动攻击行尸时毫无手软。大家各司其职,共同前进,很好的抵御了行尸的攻击。但接下来等待他们的是更厉害的挑战,就是比行尸要厉害 N 倍歹毒的人心。就像最近大火的电影《釜山行》里面剧情发展的那样,关键时刻歹毒的人心才是最难以对付的。

    Rick 一伙人碰到了第一个大 BOSS,名字叫 Governor。Governor 人如其名,是一个乱世领袖。此人表面作风一副面慈目善、心胸开阔、 愿世界美好和平的仁波切作风。私下里却非常独裁,心狠手辣,心胸狭窄,对异己赶尽杀绝。同时也擅长忽悠,他组建了一支军队守护了一座小的城镇,让外面的丧尸无法攻击他们。在这座小城镇里面他极尽仁波切之能把这座城镇忽悠成一个不会受到任何的伤害与攻击的乌托邦。一些排除异己,杀人放火的脏活却由他自己的军队代劳,从来不会让别人看见。Governor 在这里享受着国王一般的拥戴,城镇里面每一个居民一边享受着安逸生活,一边打心里感激着 Governor 给他们生活带来的一切虚幻的美好。Governor 成功的让他们忘记了外面是一个充满行尸的危险世界。Rick 一伙人的到来让 Governor 感到备受威胁。因为他头一次碰到一支独立生存,不愿接受他任何好处的团队。这个团队里面的每一个成员经历了外面无处不在的丧尸威胁,每个人都变得骁勇善战,独当一面。这种能独立生存,不愿接受“招安”的团队对于 Governor 来说是个巨大的威胁。Governor 一定要干掉 Rick 团队。于是 Governor 在他的城镇开始了他的演讲(洗脑),忽悠城镇里面的人去对 Rick 团队发动战争。经历的长时间被虚幻乌托邦洗脑的城镇居民很快就被打败了,在败北途中 Governor 一个人用机枪扫射掉了所有和他一起参战的人,自己一个人跑了。经此一役 Rick 团队损失惨重,丢失了堡垒般的监狱避难所。团队成员也在此时解散了。

    Rick 团队解散了,编剧开始着手安排他们重聚的剧情。这个剧情的关键的连接点就是一条铁路的 Terminal Station。他们被这个地方吸引过去的原因是铁路沿途放满了这个地方是一个救援避难所的指引。这一次他们选择了相信这个地方,相信这是一个可以避难的地方。这个避难所本来确实是用来帮助人们避难的地方,一开始里面住着一些心地善良的人帮助来到这里的人避难。但经历了一次被一些不怀好意的人绑架后,这帮善良的人变异了,他们开始将善良转化为恐惧去保护自己。他们开始利用避难所欺骗外面的人进来,然后吃掉。他们之所以会做出吃人这一恐怖的举动是因为他们曾被恐惧威胁了。Rick 团队被这么一伙人抓住了,眼看就要被全部吃掉了。这个时候另外一个次元的编剧解救了他们,还让他们团队重新团聚了。这很不科学,但故事要继续,不能就这么让他们挂了。

    Rick 团队经历了变态的 Governor 和伪装的避难所,他们去到了一个新的地方,这个地方叫 Alexandria Safe-Zone。这个地方的名字让饱经风霜的 Rick 团队觉得非常不靠谱。随着 Rick 团队在外面经历的磨难越多,团队成员直接的团结与亲密程度也变的越来越高。他们开始变得像一个大家庭一样彼此之间互相信赖,事实也证明他们这一团队的策略在这种乱世是非常有效的。经历了外面比丧尸更可怕的人以后,他们很难以相信会有真正善良的人发自内心的帮助他们。但他们别无选择了,他们在外面居无定所的漂泊让他们一直忍受着食物短缺带来的问题。他们必须加入到 Alexandria Safe-Zone,否则他们将会饿死。他们带着防备与疑惑进入了 Alexandria Safe-Zone。在 Alexandria Safe-Zone 里面的人们非常友善,友善到像回到了文明的社会,这更令他们感到恐惧。随着时间的推移,他们对 Alexandria Safe-Zone 里面的人了解越来越多以后发现这里的人是真正的善良。但他们的善良不是原因的。Rick 团队自己调查后发现这个社区有一个非常巨大的好运气,就是大批量的丧尸被天然的隔绝了。也就是说,这里的人根本没有经历过外面可怕的丧尸威胁。也没有不怀好意的人对他们进行掠夺与攻击,他们一直生活在一个不需要考虑外界威胁的 Safe-Zone 里面。所以社区里面的人连最基本的战斗能力都没有,他们以后会不会领盒饭这个事情就可想而知了。

    好逸恶劳是人的天性,我们总是试图去找一个一劳永逸的安全地带。寄托于体制给我们带来的保护,为此我们不惜贡献出自己独立思考的能力主动去接受某一体制给我们洗脑。体制的强大群众基础让体制内的人很容易产生它是一个非常稳固且永远不倒的幻觉。这也是为什么洗脑在无利益相关的体制外的人看来是那么的愚蠢。而体制内的人却乐此不疲的迎合伟人教他们跳着蹩脚且丑陋的舞蹈。无数次的海市蜃楼倒塌在我们的面前,我们却从未放弃寻找安全地带。一次又一次前赴后继的让自己跳入所谓的安全地带。N 年前最可爱的人,30 年前上山下乡的知青,20 年前的国企职工,10 年前的外企,5 年前的 BAT,现在的..........

    First you hate 'em, then you get used to 'em. Enough time passes, gets so you depend on them. That's institutionalized.

    发布在 评论 阅读更多
  • L
    leyafo

    驾校的教练之所以这么暴躁,是因为他们根本无法胜任这个职位。驾校的教练上岗没有任何要求,顶多只是车开得熟练一点而已。他们哪里会教学呀。靠打靠骂这种简单粗暴的军事化教学是人人都会,人人都不需要学习的。新入行的教练员看到别人这么教,他们也没有学过其他的知识,当然也照猫画虎跟着其他教练一起屌学员了。

    这种军事化教学有没有用?
    ​我认为是没什么卵用的。你学车学得好学不好,骂你几句,打你几下并不会让你把车开得更好。反而会让你心里产生一些阴影,再次操作汽车时动作话变得不那么连贯了,该犯的错误还是会继续犯。理想的教学状况是每当你犯错时,教练细心的指出来哪里错了,为什么这样做是正确的,那样做是错误的。然后等你下次再做的时候再说一遍,多说几遍多做几遍就不会再犯同样的错误了。不知道你们看明白了没有?这些过程教练在里面起到的作用是没那么大的,因为最终驾驶车辆的是你,不是教练。你需要去把一些东西一次又一次重复的做,知道做到那一正确动作变成一个下意识的动作为止。我相信现在任何一个通过驾校体检的人经过一次又一次重复的去做这些动作都能做好,包括你们口中的那些“女司机”。当然,有些人确实是学得慢,但你要给人家机会去多重复几次。

    新手需要犯错误
    ​任何人初学任何技能都会犯错误的。学车也是,汽车驾驶如果犯错误确实是会引发危险。而教练在这里面还有个关键的角色就是让你在驾驶过程中犯错能及时踩刹车。让你犯的错误不会成为危险。驾车时需要操作的各种各样零部件对于新手来说根本一下子很难记住怎么操作,说一遍几乎是肯定记不住的。而驾校的这帮教练总是默认为你和他的驾龄和他的驾龄是一样的,动不动就说这么简单怎么不会,说过了为什么老是记不住。他们完全忘记了他是在教一个学员在开车。而且这帮人一旦和你上车就好像被一股奇怪的魔法附体了,瞬间人车合一,身体包了块铁皮到处横冲直撞。完全忘记了他们也就会开个车也已。那些自己会开车了,跑去教别人也用同样在驾校被虐待的方式去教身边的人,还美名其曰:“这是安全,为你好”。殊不知,如果你教你身边开车的时候,他犯了错误其实就是你的错误,这是你没有教好的错误。这个时候你不应该去骂他,而是应该立即踩下刹车防止他酿成更大的错误。这也是为什么驾校全部开在荒郊野外的原因,这就是给新手学员在少人少车的地方犯错误用的。

    为什么这种军事化的教学没有用?
    ​很简单呀,现在路上跑的车各种不遵守交通规则,到处横冲直撞。你以为这些人是从哪里出来的?这还用问,肯定是驾校教出来的呀。我相信 90% 的人学车碰到的教练都是暴躁型的,受到的教学方法肯定也是暴躁型的教学方式。如果这种“骂你是为了让你更安全”的教学方式真的有用,就不会有这么多不遵守交通规则的人了。驾校为了多赚钱恨不得让你最好不练车就去考试。为了节省成本又大肆招“暴躁”型的便宜教练,这让整个市场变得异常混乱。我们自己也不得不承认驾校里学的那些东西真的只是为了应付考试,要开好车还得多去外面重复练习。有些人在驾校初学驾驶受惯了教练的虐待,以为开车就是要像野狗一样的教练暴躁,也不难解释为啥我们经常会见到路怒症。可怜那些所谓的“女司机”,在驾校好不容易考了驾照出来,出去想让身边的那个“老司机男友”再教一教,重复练习一下,却还要被骂,这到底图的啥。

    学车最重要的是重复练习。因为我自己也是这样,我犯过很多错误,很多各种各样低级的错误我都犯过。在学科目二时我也经常忘记各种各样的操作,也干过把刹车当油门踩。考科目二之前教练还在那边吐槽我说我这样去考试肯定挂。结果科目二我一次满分 100 通过。我并不觉得这是多么了不得的事情,这全部归功于我报的那个驾校是一人一车的计时驾校,这让我可以有许多的重复练习机会。我也挺受不了教练挨骂,也挺烦他们 BB 的。如果他们能闭上嘴我练车时的效果会更好,我只需要他们在我犯错误时告诉我哪里错了,遇到复杂的情况帮我踩一脚刹车。仅仅这些其实就够了,可他们连这些都做不好。上课聊微信,打电话,每小时的学时故意多扣掉十分钟。这就是他们经常干的事情,缺乏基本的职业素养,这是一群非常令人讨厌的人。我现在能做的就是赶紧学完,赶紧走,以后再也不要见到这帮人。现在自动驾驶出来了,这帮子人未来肯定是会失业的。有时想到这心里就平衡多了,也不再会去想着和他们计较什么。

    发布在 评论 阅读更多

与 V2MM 的连接断开,我们正在尝试重连,请耐心等待