delphij's Chaos
选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……
在次贷危机导致房产泡沫破裂之后,美国这几年一直处于经济衰退中。这次金融海啸影响的范围相当深远,许多地方的房价被直接腰斩到一半左右的水平,并且银行业不再敢于放贷给中小企业和个人。为了刺激经济,联储局(相当于美国的中央银行)采取了多轮"量化宽松"政策,通过直接以虚拟的货币购入债券来压低利率。
个人一直认为房地产不是一个好的投资,因为它的流动性很差,并且杠杆率很高,例如,在需要用钱的时候有可能必须以非常亏的价格来一次性出售(与此相反,证券如股票等,可以以"sell-to-cover"这样的方式去交易);另一方面,美国的房产需要根据其价值向地方政府缴纳物业税,这在每年都会是一笔不小的开支,此外,屋主需要对房屋进行各种修缮,而租房则不需要操心这些问题。
不过,从另外的角度看,房地产又是很好的投资方式。首先,如果一个地区的人口在持续增加,由于地皮不会增多,这个地方的房地产价格便会不断增加;其次,美国税法规定,物业税、向银行支付的利息等可以部分或全部冲销收入,因而节省的这部分税金会变成个人的产权;还有就是,在预期会发生通货膨胀的情况下,投资或负债是要好过持有现金的。
在这个背景下,到了2010年9月左右的时候,我开始考虑是不是要买房的问题。经过长时间的准备、看房、下单,最后在2012年1月底买到了位于 San Jose 的 Evergreen 地区的一栋 Single Family House。这里总结一下经验教训,供其他有类似情况的同学参考,也给自己留下一个记录。
Read more...来美国快5年了,这5年中一直住在旧金山湾区的 Mountain View (中文通常译为山景城)。今天终于到了离开的时候,虽然以后还是会经常来这里,不过不会再有那么多的机会了吧。
Mountain View 是湾区的一个新兴城市,由于距离 旧金山国际机场 (SFO) 和 圣何塞国际机场 (SJC) 距离都比较适中,同时拥有连接穿过东湾的州际 I-880 高速公路的州 CA-237 高速公路,以及连接 Cupertino - San Jose 的西硅谷高速公路 CA-85,并且连接美国西海岸的 US-101 也穿过这里,因此硅谷的许多高科技企业都在这里设立分公司或总部。其中比较著名的有 Google、 Microsoft、 Symantec、Intuit 等。此外,这里也是 Intel、Netscape、SGI 等许多重要的硅谷企业的诞生地。
Mountain View 的地标性建筑是位于 Moffet Field 的 NASA Ames 研究中心,以及在 Google 附近的 Shoreline 露天剧场。此外, Mountain View 也是附近治安较好的城市之一。
Read more...问题:如果银行要求购买贷款保险,并且已知贷款保险在本金+首付达到22%时会自动撤销,但已经支付或预付的部分不会退还,已知贷款总金额、固定利率、年限,计算采用不同还款方案(按PMT计划,比PMT多还定额等)中一次性支付,以及每月支付的金额变化,以及若 cash out 时的收益差异。
(本质上这个问题是个动态规划问题,不过具体的计算过程比较有实用价值,本文以 Google Docs 的 Spreadsheet 来举例,其他电子表格软件如 OpenOffice 的 Calc,以及 Excel 大同小异)。
假定总共的还款期数为 360 期(30年),可以创建一个有362行的表格(第一行是表头)。A列填入月份的序号,0 .. 360,B列填入还款日期(这个可以用公式做,也可以直接填充,这些日期并不参与计算,因此不太重要)。C列全部填0(计划多还)。
首先要算出贷款的 PMT 值,这个很容易,假设年名义利率为 RATE,贷款金额为 PV,贷款期数为 NPER(按月算),则公式为 =PMT(RATE/12,NPER,PV) 。把这个数字(由于 Google Docs 的限制,最好直接复制这个数字然后填充,如果是公式,则会因为填充时会自动根据单元格位置来调整导致数字不对)填入所有360行的 E 列,标记为"原计划还款"。
由于需要考虑提前还款的情况,我们不能用 PPMT 和 IPMT 来直接计算本利的偿还情况。但是,如果知道上一月份的本金余额,当月偿还的利息是容易计算的(相当于以同样利率、上月本金余额,按360-当月序号的长度来重新贷款)。在 L 列填入当月本金余额:在第0个月,很明显这个金额就是总价 - 首付。因此,在L2这一行填写这个数值。接下来就可以知道每个月所偿还的利息了,我们用 J 列来表示所付利息,在 J3 填写 =IPMT(RATE/12,1,360-A3+1,L2),然后将其填充至 J4..J362。此时,J4..J362还无法算出(因为我们并不知道 L3..L361 的数值)。
为了方便观察提前 payoff 的效果,我们还应算出每个月累计偿还的总利息。在 K 列填入利息偿还累计,K2填0, K3 公式为 K2+J3,填充至 K4..K362。
想要知道当月的本金余额,就必须知道当月偿还的本金金额。这个金额是当月支付的还款额减去当月应该支付的利息,即 E列 + C列 - J列。对于固定利率的贷款,如果提前还款的话,由于本金减少但每月还款额并不减少,因此会导致之后每个月偿还的本金增加(这也是为什么提前还款可以减少很多利息)。所以为了直观起见,在 I3 填入公式 =PPMT(RATE/12,1,360-A3+1,L2),并填充到 I4..I362。这样,当月额外偿还的本金就可以用 C 列 + (E列 - I列 - J列) 算出。我们将这个公式填充到 D 列(额外偿还本金),并在 L3 填入公式 =IF(L3+I4+D4>0,L3+I4+D4,0),填充至 L4..L362。
Read more...之前一直对市场如何决定一件东西的价值有疑问,现在记录一下其中一种方法。注意,这是个人对于这个问题的认识,而非科学论述,文责不负。对于读者自己遇到的具体问题,请咨询有关专业人士。
以房屋价值为例,房屋的价格是不太容易确定的,因为每一个房子都不一样,决定房屋价值的因素又很多,例如它的位置、朝向、内外部装修的情况、保养的情况、内部电器的摊销价值,甚至买家卖家的心情,等等。在买卖双方没有必须成交的压力(例如法院拍卖,或因为人口增加必须购买房子)的情况下,往往会有一个讨价还价的过程,最终双方会共同认可一个交易价格,这个价格通常也会成为最终的交易价格。
但是,对普通人而言,因为房屋是一种金额巨大的投资,往往在交易时会涉及贷款。这样就牵扯进来了一个新的利益攸关方—-银行。从银行的角度来看,它既不太关心房子是否能够卖掉或者买进房子,而是需要关注风险(借贷人是否有偿还能力、房屋价格是否与价值相符,或者说贷款金额小于房屋合理价格的某个比例)和投资回报。因此,银行在提供贷款时就必须首先对房屋的价值进行评估。
于是估价师就出现了。估价师不隶属于上面任何一个利益攸关方,最符合估价师利益的是尽量给出一个合理的评估,拿到相关报酬走人。那么,如何做出合理的评估呢?
首先是收集数据。第一个来源,是郡政府公开的、用于征收地产税的房屋估值数据。在美国,对房屋的价值估算包括两部分,第一部分是土地价值(“land”),另一部分是土地上面的建筑等的价值(“improvement”)。在加利福尼亚州,依据1978年通过的第13号州宪公投,用于收税的房产估值每年可根据通胀情况上调最多2%。房产用于收税的估值,可根据其土地 APN 在对应郡的政府查询,但由于前面所述的13号公投,除非房屋在最近发生过交易,或发生了类似房产泡沫破裂这样的情况令纳税人主动要求调低估值,这个估值往往会比实际的市场价值低很多。
另一个来源,也是比较可信的数据,是周围房屋在近期的交易价格。在进行房地产交易时,会在对应的政府部门进行登记;此外,由 MLS 维护的公开的数据中也会包含房屋从开始放到市场上,到最终完成交易的每一次价格变动记录。估价师会查找附近情况类似(面积、建筑年限、地皮尺寸等)的房屋在最近一段时间的成交价格和具体情况,并根据每一栋房屋的具体情况对交易价格进行一致化,所谓一致化就是消除房屋之间差异所导致的价格差异,例如,如果房屋位于较为安静的小路,通常在这个地区的交易价格会比位于较忙的路边的房屋高一万美元,则应在评估时使用的一致化价格中减去。
有了足够多的市场价格,并根据具体情况分别进行一致化之后,估价师会得出一组一致化价格,并取其中位数来得到市场所认可的价格。
有些估价师还会用其他估价方式给出另外的估值。例如,将土地价格加上按房屋年限摊销后的现时新建造价,再加上新增改建/家电设施的价格得到房屋的价格;或者,计算房屋按租赁价格和可以"经济地"租赁出去的时间来计算房屋的租赁价值,等等。
Read more...可以在 这里 下载。
和过去一样,风险自担 USE AT YOUR OWN RISK!
和 FreeBSD 9.0-RELEASE 相比的改动:
我国在最晚不晚于宋代发明了水密隔舱。所谓水密隔舱,是指将船体分成若干个互不相通的舱区,这样当一个或几个舱区进水时,整个船体仍然可以有足够的浮力而不致沉没。这是一项相当重要的发明,类似的设计思路在其他领域也有应用。
在计算系统中,往往也会采取类似的设计思想。例如,操作系统会对进程地址空间的访问提供隔离,这样当一个进程吐核的时候不会影响其他进程的运行。又比如,在设计安全方案时,采用分层、相互隔离的信任状实体,分隔特权服务和非特权服务,把绝大多数的输入处理放在非特权服务中运行。再比如,在设计大容量计算系统时,可以将高优先级的任务单独设计一个队列,并限制所有worker能够容纳的任务总数,在运营时以逐步提高上限的方式来避免出现超载导致大家都无法使用的情况。
总之,我不认为中国人在宋代就已经想出来的方法,到了21世纪还可以被中国人认为是「非常特别的系统」「应用的场合很少」「中国目前研究这种系统的人不多」的高精尖。这么想的人,是的,你也就配做个末学。
Read more...有一种错误的观念是,对于不太敏感的内容(例如论坛之类),只要用 https 保护登录过程中提交密码的部分就足够了。例如国内非常流行的网易邮箱,很早以前便提供了"SSL安全登录"的选项,这样做显然是比完全不提供SSL登录选项的新浪邮箱要强多了
\[注1\],但是仍然是不够的。
为什么呢?因为通过明文传输的网页没有提供任何保护,而通过 https 传输的内容则是提供端到端(从服务器到客户的浏览器)的安全保证的。例如,代理服务器可以根据需要按URL(这是非常成熟的技术)来替换掉页面,而配合 DNS 攻击,或者攻击者掌握了受害人使用的网络基础设施,便可以在对方不知情的情况下把敏感数据传到攻击者控制的服务器上。假如采用了 https,攻击者能够选择的选项就大大减少了(例如,攻击者必须能够伪造适当的证书,并劫持、解密所有流量,等等)。
当然,使用 https 并不能阻止用户访问钓鱼网站并在其中输入敏感数据。这类用户应远离 Internet。
不过很讽刺的是,新浪邮箱的登录首页实际上是有 https 版本的,但是这个 https 版本并不处理提交;而网易邮箱则完全没有提供 https 版本的登录首页。
Read more...我的 blog 在之前一直是用 Apache HTTPD 来作为 CGI 引擎来跑 Movable Type。在迁移到北美之前,使用两个域名/IP来分别运行静态页面 (lighttpd) 和 CGI 内容。后来因为全面转向 nginx,在迁移过程中改成了使用一个域名、使用 nginx 在前面跑静态页,并作为反向代理来连接后端的 Apache 1.3.x 实例(先前是 Apache 2.2.x,由于这个实例只用来跑 CGI,所以采用了较低版本的 Apache 以节省资源)。
之前一直有完全停用 Apache HTTPD 的想法,不过一直没有时间去实作。由于 Apache 1.3.x 早已是不再维护的分支,近期发现的 CVE-2011-3368 虽然和我的用法完全没有关系,但 FreeBSD 的 port 已经被标记为 “FORBIDDEN” 状态,于是最近找时间学习了一下如何在 nginx 上跑这些 cgi。现在,这台服务器已经完全停用 Apache HTTPD 了。
nginx 有很多跑 CGI 的办法,但是没有一种是原生的。官方推荐的方法是使用 thttpd,然而大概看了看代码之后发现 thttpd 虽然代码量很少,但不支持使用 Unix socket 连接,而且我只要能支持 FastCGI 接口就好,并不真的需要封好 HTTP,所以改为用 fcgiwrap (ports/www/fcgiwrap)。
fcgiwrap 没有什么特别的配置。 FreeBSD 上提供了一个 rc.d 脚本,直接拿来用。
对应的 rc.conf.local 配置如下:
fcgiwrap_enable="YES"
fcgiwrap_socket="unix:/var/run/www/fcgiwrap.sock"
fcgiwrap_user="www"
fcgiwrap_group="www"
这里没有使用通常的 /var/run/fcgiwrap.sock, 而是单独建立了一级目录 (/var/run/www/),其 owner 用户和组均为 www。上述配置令 rc.d 系统在启动时使用 www 身份,如果不单独建立目录,则系统会无法创建对应的 socket 文件。
Read more...来自新浪微博:王小山:同意的请转,郑重承诺:拒绝蒙牛一切产品,从我做起,从现在做起:不为蒙牛打工,不使用蒙牛产品,告诉别人蒙牛是垃圾企业,不接蒙牛订单,不接蒙牛广告,不买有蒙牛广告的报纸,不看蒙牛赞助的节目,微博辩论再不说对方"脑残",只说"喝蒙牛长大的吧"。
我们也许没有办法改变监管体制,但我们至少可以拒绝那些有问题的企业。监管部门不让它们倒闭,消费者就必须让它们倒闭!请爱惜自己的家人和生命。
Read more...记一笔,没啥特别。
Unix 系统的分时调度中,nice值(通过 nice(1) 来控制)是管理员告诉调度器的一个参数,这个参数令内核在考虑就绪进程优先级时,根据其值适当增大或减少执行绪的动态优先级。很明显,如果采用抢占式调度,如果执行绪等待时间较长,或者由于某种原因获得了优先级奖励(例如I/O导致的等待),即使有更重要的任务需要执行,内核还是会将这个执行绪调度进来并进行执行;反之,如果执行绪使用的 CPU 很多(计算密集型任务,如压缩等等),即使这个执行绪进行的就是最重要的任务,它仍然可能被置入休眠状态。
在 FreeBSD 的及时调度 (real-time scheduling) 实现中,增加了32个’及时(realtime)‘优先级和32个’闲时调度(idle)‘优先级。用户态进程可以通过 rtprio(2) 或 rtprio_thread(2) 系统调用来为进程或线程指定这些优先级。这些优先级不会动态调整,故在抢占式调度中可以一直获得时间片,或只有在系统闲时才获得时间片。
为了方便管理员使用,FreeBSD提供了与之对应的 rtprio(1) 和 idprio(1) 命令。出于显然的安全考虑,rtprio 和减少 nice 值一样需要超级用户权限,而 idprio 默认也需要超级用户权限(目前,持锁执行绪可能由于优先级太低而被抢断,从而导致死锁),但可以通过将 security.bsd.unprivileged_idprio 设为 1 来允许非特权用户使用它。
典型的用法包括:
将 Xorg 设为 realtime 优先级,以改善其响应。这个命令必须以 root 身份运行。
副作用:如果 Xorg 陷入死循环,将没有机会令其终止。
# rtprio 31 -
pgrep Xorg``
以 idle 优先级运行 make buildworld。需要以 root 身份运行或将 sysctl security.bsd.unprivileged_idprio 设为 1。
# idprio 31 make buildworld
对于单机运行的网站来说,也可以用类似的方法来做后台的日志分析处理。
Read more...