分类 未分类 下的文章

初上手不太熟悉, 在vue-router的官方文档中也没有找到结合单文件组件怎么使用. 通过vux的模板摸索如下规律:

  1. 根目录下面的index.html可以不做任何修改;
  2. 路由的引入主要是在src目录下的main.js文件中, 示例:
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
import Home from './components/HelloFromVux' // 引入各个 .vue文件, 这儿有HelloFromVux.vue和Hello.vue. 这儿省略了.vue后缀, 需要在webpack的配置文件中配置, 后面说.
import Hello from './components/Hello'
Vue.use(VueRouter)  // 单文件组件开发中必须要引入

const routes = [
    {path: '/', component: Home},
    {path: '/hello', component: Hello}
]

const router = new VueRouter({
  routes
})

/* eslint-disable no-new */
new Vue({
  el: '#app-box',
  router,
  render: h => h(App)
}) // .$mount('#app-box')
// .$mount或者 el: 两种方式的mount都可以. 因为是加在在#app-box中的, index.html中的div id需要是app-box

3.项目根目录webpack中配置(webpack.config.js)如下内容可以在import时省略.vue后缀:

  resolve: {
    extensions: ['.js', '.vue', '.json']
  },
  1. 那么在哪儿放呢? 不用放在index.html里面, 在任何一个.vue文件的template里面都可以, 并且不需要在.vue的script里面import vue-router
    例如在app.vue中:
<template>
  <div id="app">
  i am app
  <router-link to='/Hello'>Hello</router-link>
  <router-link to='/'>home</router-link>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'app'
}
</script>

<style lang="less">
</style>

sublime中jshint是使用用户目录下的.jshintrc做配置的. 在windows系统中位置在:

C:\Users\YourUserName\.jshintrc

默认这个配置文件不存在, 需要自己新建一个.
.jshintrc内容如下, 我做了些修改以适应vue的风格
(asi:true, 不检查分号, esversion:6, 使用es6语法; browser: true, 加入浏览器的全局变量)

{
  "asi": true,
  "boss": false,
  "camelcase": true,
  "curly": true,
  "eqeqeq": true,
  "eqnull": false,
  "esversion": 6,
  "evil": false,
  "expr": false,
  "forin": true,
  "funcscope": false,
  "immed": true,
  "indent": 2,
  "latedef": true,
  "loopfunc": false,
  "maxerr": 7,
  "newcap": true,
  "node": true,
  "nonew": true,
  "plusplus": true,
  "quotmark": "single",
  "regexdash": false,
  "shadow": false,
  "strict": false,
  "sub": false,
  "supernew": false,
  "trailing": true,
  "undef": true,
  "unused": true,
  "white": true,
  "browser": true
}

更多详细配置请参考JS Hint Options

跨域是JS的xhr跨域请求。静态资源无跨域限制。
不同端口/二级域名/一级域名都存在跨域问题。
一个经典跨域问题是页面通过iframe内嵌其他域的页面。
最古老解决跨域的方法是iframe代理页面。受限最多。
次古老解决跨域问题是jsonp。据说请求限于get/head/post。
最新解决跨域问题是cors。适用于restful。

tortoiseSVN commit的时候忽然不能显示新的文件了, 只好用命令行.

svn add * --force

可是这个命令行居然也不起作用了. 难道是有忽略文件?

svn add *  --force --no-ignore

这次可以了, 可是是在哪儿忽略的呢?似乎是忽略了所有任意的文件啊

似乎很难搜索到Node.js与C++对比的资料. 当然不对比也知道C/C++一定更快, 但究竟快多少?
这儿有一篇解决最长共有子串问题的对比, 但看起来更像是CUDA的软文... (CUDA vs. C++ vs. Node.js: Genomic Algorithm Performance)[http://www.glassenberg.com/blog/3d-graphics/cuda-vs-c-vs-node-js-genomic-algorithm-performance/]
从文中来看, 这种算法下C++是Node.js的10倍. 当然CUDA更快.
从Java和C++的对比来曲线比较Node.js呢? 这篇2010年文章(C++ vs Java performance; It’s a tie!)[http://blog.cfelde.com/2010/06/c-vs-java-performance/]. 从文中的12项测试来说, Java与C++各有胜负打了个平手. 然而作者在2003年做的比较中, java居然获胜了... 我猜测这是否由于测试中任务太高级的原因?
在google的一篇对比论文中(Google pits C++ against Java, Scala, and Go)[http://www.theregister.co.uk/2011/06/03/google_paper_on_cplusplus_java_scala_go/],google对比了C++, java, scala,go, 当然C++获胜, 可有个前提: 除非你是个天才. Google在论文中提到, 让C++获胜需要很多深度的优化调整, 而这种程度的调整对于平均水平的程序猿来说是不可能的.
因此, 如果C++没有赢,那是因为你的程序写的不够好(逃..),当然了, C/C++是距离汇编最近的语言了, 这个层次上没人赢得了.

话说回来, 既然C/C++这么难搞, JavaScript能不能用于嵌入式?
已经有这样的项目了, 国内有(ruff)[https://www.ruff.io/], 国外有(Espruino)[http://www.espruino.com/], 以及Espruino衍生的(Puck.js)[https://www.puck-js.com/]项目, 但这些项目粗看起来都是要你买他们的板子...似乎还不存在一个较为通用的编译器可以编译为51, AVR或者STM32的.不过这已经不错了是不, 特别看到Espruino Pico这么小巧还有一个STM32!

也许正如ruff的CEO所言, JavaScript可以让前端工程师开发硬件, 可能会带来硬件创业爆发式的春天.

Node.js比Python更快, 我在之前已经试验过了, 甚至比Python的性能优化项目pypy更快. 快得不是一个数量级.
Node.js甚至也比PHP更快, 以至于快过了Facebook对PHP的优化项目HHVMComparing Node.js vs PHP Performance, 但是比不过go语言.
Node.js比Java更快, 在这篇文章里快20% (Performance Comparison Between Node.js and Java EE)[https://dzone.com/articles/performance-comparison-between]
那下一步令人好奇的是,

  • Node.js和C/C++谁更快? 已经有一个项目将C/C++编译为JavaScript的子集(asm.js)[https://github.com/dherman/asm.js/], 为的是让C/C++项目可以在浏览器环境运行(更多是游戏运行于webGL), 还有一个LLJS项目,LowLevelJavaScript,似乎与之有关, LLJS不提供动态GC(垃圾收集), 而是交给程序猿手动收集(LLJS on GitHub)[https://github.com/mbebenita/LLJS]
  • Node.js能不能用于嵌入式开发? 与C/C++相比, 性能如何?

是的, 继前一篇JS可以使用字符串做函数名之后, 又可以使用object做函数名了. 事实上, 它还能使用Number, Boolean, Symbol(ES6)做函数名.

秘诀其实是对象的key可以这么做. 你可以使用字符串, number,boolean, symbol, object做key.

而你又知道所有的全局变量其实都是window(node下是global)的子元素, 所以你可以这么定义:

obj = {x:1}
window[obj] = function(){console.log('obj')}
window[obj]() // 输出 'obj'

window[true] = function(){console.log('true')}
window[1] = function(){console.log('1')}
s = Symbol()
window[s] = function(){console.log('s')}

window[true]() // 输出true
window[1]() //输出 1
window[s]() //输出 s

但这又有什么用? 不知道...谁能告诉我?

是的, 并且是es5就已经只支持的.
因为函数和变量一样, 默认是全局变量的子元素, 并且子元素除了用点'.'调用外,还可以用数组方括号[]调用. 区别是方括号内是写字符串的.

p = console.log //省字数
function x(){p('x')}
function y(){p('y')}
f = 'x'

这时候, window.x === window['x'] 都是x函数.(在node中window甩global替换) 于是可以这样调用

window[f]() // 输出x
f = 'y'
window[f]() // 输出y

这样执行相同的指令window[f]可以实际执行不同的函数x,y
参考how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string
后面有一个回答很有价值的, 就是将函数的点链式调用写在字符串里面,复制过来,感觉如果和科里化/pointfree结合会很有用, 似乎能创造一种自然语言一般的编程方式.

来自Jason Bunting的回答:

Don't use eval unless you absolutely, positively have no other choice.

As has been mentioned, using something like this would be the best way to do it:

window["functionName"](arguments);

That, however, will not work with a namespace'd function:

window["My.Namespace.functionName"](arguments); // fail

This is how you would do that:

window["My"]["Namespace"]["functionName"](arguments); // succeeds

In order to make that easier and provide some flexibility, here is a convenience function:

function executeFunctionByName(functionName, context /*, args */) {
  var args = [].slice.call(arguments).splice(2);
  var namespaces = functionName.split(".");
  var func = namespaces.pop();
  for(var i = 0; i < namespaces.length; i++) {
    context = context[namespaces[i]];
  }
  return context[func].apply(context, args);
}

You would call it like so:

executeFunctionByName("My.Namespace.functionName", window, arguments);

Note, you can pass in whatever context you want, so this would do the same as above:

executeFunctionByName("Namespace.functionName", My, arguments);

如果把上面的My.Namespace.functionName改成My Namespace FunctionName是不是就像是自然语言了?

官方原文为系统内置事件之触摸事件冒泡
感觉原文讲得并不清晰, 并且似乎和实际有出入.
原文中讲到两种冒泡:
* 一种是沿着节点树, 也就是层级管理器中的节点关系, 从子节点向父节点冒泡;
* 另一种是沿着视图中的上下层覆盖关系, 从上层往下层冒泡.
经过测试发现, 沿着节点树冒泡, 每一层节点都可以捕获到事件, 除非在某一层上明确使用e.stopPropagation()
而沿着视图冒泡, 有两点不同:
1. 事件会在最先捕获touch事件的节点上终止,不继续向下层冒泡;
2. 捕获任一touch事件(如touchend), 其他touch事件(touchstart, touchmove, touchcancel)都在此节点上终止, 下层视图都不能收到事件;

href里面也可以运行javascript!

<a href="javascript:alert('i am href')">

那么, onclick和href哪个先运行? 答案是onclick

<a href="javascript:alert('i am href')" onclick="alert('i am onclick')">

并且onclick返回false会阻止href的运行.

<a href="javascript:alert('i am href')" onclick="alert('i am onclick');return false;">

额, 当然是替代console.log了. 在node.js中用process.stdout.write(). 浏览器环境? 如果你是为了不换行输出数组值, 可以先把数组连接了再输出: console.log(somearray.join())

  1. 早上约9点访问魅族官网, 选择寄送快修服务, 填写如下资料:

序列号, 手机号, 故障类型, 收件地址, 返回地址等.
页面UI体验, 然而存在问题是:

A. 显示可以填写SN/IMEI的地方, 填入IMEI, 在第二步提交时候却报错,需要返回第一步, 重新填写SN, 而第一步又是再次需要输入手机验证码的. 这样的话, 应该在第一步验证好了IMEI或者SN后再继续下一步.
B. 第一页的SN在手机的关于页面中写的是"序列号", 很多人其实不知道SN就是序列号的.

  1. 大约1个半小时后(10:50),魅族来电, 一个mm询问手机故障类型是否和网上所选的相同, 我是进水后触屏不能用. 额外再问了这几个问题:

A. 手机触屏不能使用是在进水前还是进水后;
B. 是否购买了手机保险;

回答完后, MM做了如下警示:

A. 如维修发现是人为问题, 需要支付费用, 费用以检测为准;
B. 送修邮寄费用双程往返为40元, 含保价费.(额, 有点儿贵, 深圳同城单程一般是6元)询问是要自己寄送还是上门来收. 选择上门来收体验一下,也方便些.
C. 说明会清理所有个人信息, 要求我做好备份. 手机外表请我自行拍照以防备损害. 同时发送了短信请我查看.
D. 询问还有什么问题, 请我评价服务.

  1. 查收短信

立刻收到的第一条短信

尊敬的用户,您好:感谢您选择魅族寄送快修服务,请您在寄出之前按照以下事项操作:1、请自行备份资料,公司不做备份;2、配件、贴膜、装饰物,请您自行保留无需寄出;3、如有保修卡和包装盒,请尽量随机器一同寄出;4、请在包裹内附上一张纸注明机器的报修故障,以便于工程师处理;5、寄出前对手机进行拍照自行保留,以免运输造成物流损坏可作为凭证;6、建议选择顺丰“到付”至寄修中心(请勿保价)。【魅族科技】

几乎同时收到的第二条短信

您好,您的服务请求已受理,快递工作人员将尽快为您上门取件,请保持电话畅通。如超时未能取得联系,请致电魅族客服为您重新预约,或可自行邮寄至以下地址:深圳市福田区华强北路1002号赛格广场38层3809,腾新奎收,0755-23895496/23895497。【魅族科技】

约半小时后收到的第三条短信

顺丰小哥150xxxxxxxx正上门收件,运单号xxxxxxxxxxxxxx,验证码xxxx。【顺丰速运】
  1. 写好了故障纸条, 清理好手机, 大约过了40分钟, 到12:00时顺丰上门收件. 额, 这个收件过程感觉很不专业, 直接拿走了手机和纸条, 没有现场封装, 也没有给任何回执, 拿了就走....???问了一下没有什么单据吗? 回答是系统里有...

  2. 之后约5个小时顺丰的这个运单都查不到的物流跟踪, 心想似乎真的不如自己寄送的好... 直到下午5:00物流跟踪出现"已收取快件"信息.

  3. 第二天早上10:43分, 显示已签收.
  4. 在10:40的时候(额, 比签收时间还早), 收到0755-23895480的来电, 说屏幕要换, 加邮费总共需要收302元...额, 赶上一台二手机价格了...考虑了一下, 给此电话回电说不需要了, 你还是给我寄回来吧...
  5. 卖掉如何? 在魅族的手机回收mcycle上评估了一下, 价格为50元...汗...

由于serialport里面有一些原生编译的代码需要运行node-gyp提前build一下, 而node-gyp使用的node V8引擎版本与electron的V8引擎版本不同, 导致直接在node中可以require('serialport'),而在electron中却不行.
在electron中报错如下:

var SP = require('serialport')
C:\r\electron\macgetter\node_modules\bindings\bindings.js:83 Uncaught Error: A dynamic link library (DLL) initialization routine failed.
\\?\C:\r\electron\macgetter\node_modules\serialport\build\Release\serialport.node
    at Error (native)
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:168:20)
    at Object.Module._extensions..node (module.js:583:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:168:20)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at bindings (C:\r\electron\macgetter\node_modules\bindings\bindings.js:76:44)module.(anonymous function) @ ELECTRON_ASAR.js:168Module._extensions..node @ module.js:583module.(anonymous function) @ ELECTRON_ASAR.js:168Module.load @ module.js:473tryModuleLoad @ module.js:432Module._load @ module.js:424Module.require @ module.js:483require @ internal/module.js:20bindings @ C:\r\electron\macgetter\node_modules\bindings\bindings.js:76(anonymous function) @ C:\r\electron\macgetter\node_modules\serialport\lib\bindings.js:3Module._compile @ module.js:556Module._extensions..js @ module.js:565Module.load @ module.js:473tryModuleLoad @ module.js:432Module._load @ module.js:424Module.require @ module.js:483require @ internal/module.js:20(anonymous function) @ C:\r\electron\macgetter\node_modules\serialport\lib\serialport.js:12Module._compile @ module.js:556Module._extensions..js @ module.js:565Module.load @ module.js:473tryModuleLoad @ module.js:432Module._load @ module.js:424Module.require @ module.js:483require @ internal/module.js:20(anonymous function) @ VM133:1

查找了一些相关文档, 如下:
electron使用serialport
Using node-serialport in an electron app

node-serialport的官方回答, 看下面voodootikigod的回答:
Tracking Electron support #538

electron的官方回答:
Using Native Node Modules

先实践着...

下面这篇文章看完让人感慨万分, 父母将自己从一个习惯而舒适的老地方连根拔起, 随着儿女看小孩, 甚至再次为儿女付出金钱的故事, 可能每天都在上演, 尤其对于深圳, 是一种很典型的情况. 其实去了美国只是这种典型情况的极端表现. 我们这一代人拼命意图在一个看上去更好的城市甚至更好的国家扎根, 意图有更好的工作甚至跟着风潮去创业, 而生活稍有波动起伏就难以承受. 除此文中之人外, 前阵子那个疑似华为的离职员工, 房租加月供近两万, 一旦离职便哭穷又是一个例子. 而今年春节后的深圳新闻又提到反向过年: 父母随子女在大城市过年已经渐渐成了气候, 更说明了上一代父母随儿女而动已经渐渐成了典型而普遍的事情. 在这其中, 年迈的父母们又成为了身心钱财的付出对象. 身为这些父母们的儿女, 我们这一代人是不是太自私了?

“卖房投儿”赴美养老的悲剧

         (文/茕茕 海海)      
———————————
      朱力和刘晓莉夫妇是天津实验中学退休老师,朱显明是他们的独生儿子。朱显明很争气,1997年被美国圣迭戈大学录取。在美留学期间,朱显明和东北姑娘柳婷婷相恋,两人大学毕业后决定在美国创业。当时朱力的弟弟已经在美国成家立业。朱力夫妇表示支持,节衣缩食,补课挣钱,尽全力资助儿子在美国亚凯迪亚市买房、结婚、生子。
      作为一对空巢老人,朱力和刘晓莉的烦恼难以启齿:这些年儿子非但没有寄回一分钱美金,结婚和生子也要老两口换些美金补贴他,一辈子的积蓄已被儿子掏空;由于家中只剩两位老人,每天毫无生气,水管坏了、灯管坏了也得去找邻居家的儿子帮忙。2000年,朱力又查出了心脏病。老两口经常叹息:把儿子送到国外去,是不是错了?朱显明在美的日子也不容易。由于他学的机械专业就业率低,工资也少,生活入不敷出。而妻子柳婷婷一直没固定工作,偶尔为企业做设计赚钱。
2012年底,朱显明携妻儿回天津过年。三代人聊起了各自的艰辛都感慨万分。朱显明告诉父母,他想创业,经营卡车租赁。可由于曾经拖欠信用卡还款,现在他和妻子无法贷款。朱力夫妇也没什么存款,但市中心的房子价值300多万。柳婷婷说:“天津雾霾很重,医疗条件比美国差,二老在这边我们也不放心……不如跟我们去美国养老吧。”
      老两口终于动了卖掉房子帮儿子创业的念头——去美国养老,不但一家团圆,还能帮他们带孩子、卖房钱帮他们解决创业资金,一举多得……但朱力和刘晓莉还是慎重,又电话咨询在美国的弟弟,弟弟认为:“在美国养老当然不错,离我也近。不过你们先把财产分清楚,省得发生纠纷……”
      2013年夏天,朱力、刘晓莉卖掉房子,把300多万房款换成美元,然后飞往美国。
      朱显明住的是一套联排公寓,倒也够用。白天朱显明跑业务,柳婷婷在家画图。朱力夫妇像国内退休老人一样做饭、接送孙子上学,其乐融融。
      但朱力和刘晓莉在美住了半个多月,新奇劲儿过了,开始感到诸多不便。
      虽然附近也有中国人,可大家并不熟识,很难交心。以前朱力喜欢在楼下找其他老头儿下象棋,刘晓莉喜欢跳广场舞,在这边都不可能。且他们买菜必须去超市。虽然受过高等教育,可他们的英语早已退化,只靠认识的寥寥几个单词根本没办法生存,看不懂家用电器说明书,听不懂大家讲话,没办法看电视,没办法问路,慢慢地对出门产生了恐惧。
      柳婷婷性子比较急躁。一天早上她和朱显明去办事,冰箱里没有食物了,朱力随口说:“你买了菜再走吧。”柳婷婷不耐烦地叫:“哎呀,你们不会英语就不知道学吗?谁生下来就会英语?再说你们早晚得学买菜。实在不行买点牛肉罐头凑合一下算了。”
      柳婷婷走后,朱力压抑多日的火气蹿了上来。他问刘晓莉:“咱们来给他们当保姆的?又出钱又出力还讨不到好脸色?”刘晓莉虽然心中不快,但为了避免矛盾加深,只得安慰老伴:“想跟孩子住一块儿,这一点咱们就得有心理准备。”更让他们无法接受的是,孙子也不太领他们的情,感情也不深,每次老人对他们说话声音大点,他们就会立刻跑到妈妈面前用英语告状。朱力夫妇听不懂嘀咕什么,但感到柳婷婷安慰孙子的时候会说自己的不好,好像他们就是一些外人。
慢慢地,朱力和刘晓莉感到在这个家里,其实比在国内更加孤独。见老伴不开心,刘晓莉无奈地提醒他:“是咱们需要孩子,不是孩子需要咱们。再说到美国来也是咱们自己的选择。”
      7月的一天,朱力邀请住在洛杉矶的弟弟一家过来做客。弟弟带来几张学英语的碟片,刘晓莉让他把碟片放自己卧室柜子上,免得被贪玩的小孙子弄坏。结果朱力的弟弟推错孩子们的房门,大孙子和小孙子在房内“嗷嗷”地叫起来,大声让他出去。媳妇柳婷婷也在房内和孩子游戏,但她既不阻止和安抚孩子,就连向叔叔抱歉的表示也没有。
      朱力气坏了,找柳婷婷兴师问罪:“不管怎么说我弟弟是他们的长辈,你是怎么教育的孩子?”柳婷婷却反问道:“是谁没有礼貌在先?”朱力说:“朱显明是我生的,这房子是我们掏了大半钱支援你们买的,你们创业的钱也是我们出的,我弟弟开错一个门就是没有礼貌了?”不料柳婷婷一点也不饶人:“这就是我们不愿回国的原因,你们始终不尊重孩子,他们是全新的个体,不属于任何人。”一直不赞成双方吵架的刘晓莉忍不住,替老伴帮腔:“孩子需要尊重,老人不需要尊重吗?”事后,刘晓莉曾向朱力的弟弟抱怨:“柳婷婷既想享受中国式的长辈为她牺牲,又想享受美国式的自由和不负责,谁能有她鸡贼?”弟弟一家深表理解,说:“如果你们觉得生活不便,可以把卖房子的钱要回来,重新归国养老,谁也别指望。”
      朱力和刘晓莉在失落之余,心中有些动摇。此后不久,双方再次爆发大战争。
      那天早上,朱力推着两岁的小孙子去买东西,没注意小孙子拆了一袋饼干。店员在监控里看到,大声制止他。朱力深感抱歉,就像小时候训诫儿子一样,呵斥小孙子把小手伸出来,在他的手上拍了两下。不料店员立马打电话报警。朱力好说歹说,店员答应先打电话让孩子的监护人过来。
      柳婷婷和刘晓莉匆匆赶来,一见面就和朱力吵起来。朱力解释:“我这么做一是训诫孩子,二也是做给店员看的,孩子的手轻轻地拍两下怎么了?”柳婷婷大叫:“一是一二是二,孩子吃了饼干你买单就是了,做给店员看什么?你知道这对孩子是多大的伤害吗?”刘晓莉见朱力委屈,也心头很有气,加入争吵阵营:“我和你爸爸从小这么教育朱显明的,不也照样把他培养到美国来了吗?”
      店员见双方越吵越凶,再一次电话报警。警方赶到后,做了笔录,要求他们当面和解。
      为防止事情闹大,刘晓莉再一次说服老伴忍气吞声。因为两人非但不通这边的语言,连法律也不懂,根本不知自己哪一步会惹来什么样的后果。
      回家后,朱力和刘晓莉拒绝和儿媳说话,也不做晚饭。朱显明听说此事,先和妻子谈,过了会儿他到父母房间叹了一声:“我生意焦头烂额,对你们的矛盾有心无力。我跟柳婷婷说过很多次,让她别给我添乱,她就是不听,也只能求你们做出让步。要不你们去叔叔家住段时间,我手头缓一缓帮你们凑点钱再回国买一套房子吧。”见40出头的儿子已经早生华发,刘晓莉心里也不是滋味,她和老伴接受了他的建议。
      第二天一清早,朱力夫妇暂时搬到了洛杉矶的朱力弟弟家。自从到美国,他们经常感到心慌气短、焦虑抑郁。有时打电话给天津的亲朋好友,一听到他们的声音刘晓莉就想流泪。天津的老头老太们都对朱力夫妇万分羡慕,他们的酸楚也不知道该怎么说起……恨不得立即回国的念头越来越强烈。
      朱力和刘晓莉决定,只要儿子把卖房的钱还给他们,他们立刻回天津,以后养老也不需他负责。“与其死在美国养老院,还不如死在中国养老院。”一辈子没这么憋屈的朱力恨恨地说。
      2014年1月,老两口回到朱显明家,和他商量回国的事。但朱显明告诉他们,他确实拿不出钱来。1月6日晚,朱力又和儿子、媳妇谈,没有谈好。
      第二天朱显明出门上班了,大孙子上幼儿园。朱力和刘晓莉决定说服最大的障碍——媳妇。没想到当朱力一张嘴,柳婷婷就用汉语夹着英语讲起来:“当初到美国难道是我们逼你们来的吗?卖房子的时候我们用枪指着你们了吗?”她的刻薄和“装佯”瞬间将朱力的怒火点燃。双方大吵起来。柳婷婷在吵的时候说,在美国人们无需对父母生老病死负责,一切交给政府。她又用英语说了几句:“当初我有机会嫁给某某某的,如果不是你儿子死缠烂打我过得比现在好多了。”朱力和刘晓莉听懂了大概。朱力气得脸色发白。突然,他冲进厨房操起一把菜刀,当着刘晓莉和2岁孙子的面一顿乱砍!柳婷婷的“机关枪”一刹那变成惨叫,立即就被砍倒在地,浑身往外冒血!
      当吓蒙的刘晓莉反应过来,战战兢兢地拨打911报警。此时柳婷婷还在抽搐,朱力忽然又冲她踢了几脚,嘴里叫道:“你是活该!”
      案发后,刘晓莉说:“我也能理解老头子当时的愤怒和绝望。我们不适应美国生活,和儿子媳妇不能共同生活,没法在那边养老。唯一办法就是儿子把钱还给我们,我们回国。但这条路也被媳妇堵死了,我们怎么过呢?老头子比我更急,心理压力更大,但我万万没想到他会做出这种事来。”她告诉记者,老伴一辈子为人师表,口碑很好,性格爽朗,实在是把感情和精神全部寄托在儿子身上,最后过度失望,加上故乡的一切都被连根拔起,想回也回不了,无比绝望导致这样的悲剧。
      朱力满身是血一边往路上奔跑一边给弟弟打电话。看到一位华裔邻居,他放下电话说:“我捅死人了,我要死了。”这位邻居未反应过来,几名警察已经端枪冲上来,把朱力按倒在地铐上手铐。与此同时救援人员在家中宣告柳婷婷已当场死亡。
      朱力被扣押在洛杉矶双塔监狱内,警方要求支付100万美元方能保释。9日晚上9点左右,狱警发现朱力已经死亡。他将床单撕成布条,自缢身亡。
      两个月后,刘晓莉处理完后事,心力交瘁地与儿子重新生活。朱显明感到已经无法在美国生活,决意带孩子一起回到天津。飞机上,四人一路恸哭。朱力和刘晓莉望断的归国路,倾尽心血的养老梦,在众人羡慕中以最惨烈的结局落下帷幕……
      柳婷婷的父母也是千辛万苦将女儿培养出国,她同样是家中的骄傲、是父母的掌上明珠。活生生的女儿去了美国,回来却只是一捧骨灰,两位老人同样地悲痛欲绝,多次病倒。2015年底,柳婷婷的父母委托天津君荐律师事务所主任郭文礼担任代理律师,准备向刘晓莉和朱显明要求民事赔偿。此时刘晓莉和朱显明的日子非常狼狈。朱显明在美国投资和生意均失败,房子已抵押,又加上房里发生血案无法拍卖,资不抵债,已落得身无分文。两个儿子要抚养、要读书,刘晓莉回国元气大伤,经常因高血压住院,和儿子、孙子同住一套简陋的出租屋,生活惨不忍睹。
      据代理律师郭文礼介绍,这起民事诉讼案件的起诉程序很复杂,必须取得美国警方的相关资料和许多证明材料。目前律师已经向天津市南开区人民法院递交诉状和取证申请,获得受理,但尚未确定开庭审理时间。
一起悲剧,浮出两道现实的难题:当儿女亟须父母“倾家荡产”支援创业,父母怎么办?当父母把生活连根拔起,赴异国养老,他们传统的养老期望和儿女“中西合璧”的思维怎么磨合?读者朋友,你对此有何高见?欢迎你登录知音网或关注知音、知音虎妈微信公众号参与讨论。
编辑/夏志军