2013年6月21日星期五

突然的研一

突然系列停了一年多了。我打算重新捡起来。
在万柳的宿舍里,我发现写字可以让自己从情绪化中走出来。在水木论坛发了个帖到青年教师版吐槽一下,反而被汇集于该版的青椒们拍醒了。
我确实需要清醒。
所谓江山易改本性难移,其实一年多的时间里,我感觉我没有变,只是我经历了一些事,见过了一些人,我觉得自己很累。但是看看周围的同学,以及不在周围的同学,他们都很平常的学习着,工作着。所以,我几乎确定了,是自己出了一点问题。
是什么问题呢?面对选择的综合症。
是的。在2012年9月,我面临着选择。我拥有选择的权利。只是在当时的上下文环境中,我做出了一个local的决定,而不是global的决定。这个local决定在后来上下文环境发生变化后,被自己否定了。当然导致的就是后悔和无可奈何。这种心理状态一直萦绕着自己,终于还是让情绪变得紊乱。
是时候总结一下了。既然做了决定,就要承担责任和后果。
只能事后解释,当时的local的决定不够成熟,而之所以仓促的做出了决定,是因为处在当时的上下文,碰到一点小问题,就蔫了,胆小了。或者说自己的抗压能力太弱,内心不够强大。再加上自己说话不太过脑子,答应一件事情太快。今后,遇到事情,我会告诉自己,回答“我考虑一下吧”。
这个决定过去这么久,自己耿耿于怀了这么久,又说明了自己不够大气。
看完《致青春》,我觉得自己长得没有赵又廷帅,但是心态和赵又廷饰演的角色非常接近。人生的全部信仰就是“人生不能有一厘米的差错”,而真的出现和自己计划好的道路出现了差错之后,却只剩下了惊慌失措和悔不当初。
接着往下走,其实没有自己想象的那么糟糕。不过可能需付出更大的代价和努力。
我想说,在一年多的时间里,我的经验教训真是大大的有。要好好分析和吸取。
最重要的是,要迈对第一步。这样就省下之后的很多麻烦。毕业了之后不管找工作还是出国,找个气场相和的老板或者公司,不要信哪些飘渺的东西。
还有,记得“我考虑一下吧”,而不是“好吧”这样害自己的言语。
还有就是,遇到事情不要心虚,脸皮厚一点可能好很多。
还有就是不得不吐槽,人在屋檐下,不得不低头。没想到遇到这样一个实验室,这样一个大老板,这样一个小老板,研究生的角色似乎就是得天天求着人家大小老板似的。
说点题外话,其实就人生而言,遇到这样的境遇,算是一笔巨大的人生财富。只是这笔财富的得来,沉没成本不知几何。
让自己欣慰的是,这一年的研一生活中看了好多书,学到了好多东西,当然,是自学而来。

2011年12月30日星期五

安装openmotif

sudo apt-get install x11proto-print-dev
sudo apt-get install libmotif-dev libmotif3 motif-clients


ubuntu 10.04

2011年12月20日星期二

程序员技术练级攻略,转自酷壳

前言

你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校 课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发)
建议:
  • 不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。
  • 回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。
  • 一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。
  • 一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。
:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在 未来很没有前途,原因如下:

  • 现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的图形界面不吃香了。
  • 越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。
  • 微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革 命史
所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。

启蒙入门

1、 学习一门脚本语言,例如Python/Ruby
可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
  • 处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)
  • 遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
  • 跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
  • 学会用各种print之类简单粗暴的方式进行调试
  • 学会用Google (phrase, domain, use reader to follow tech blogs)
为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具
  • Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
  • Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
3、 熟悉Unix/Linux Shell和常见的命令行
  • 如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧
  • 一定要少用少用图形界面。
  • 学会使用man来查看帮助
  • 文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
  • 学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
  • 学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
  • 了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
  • 了解正则表达式,使用正则表达式来查找文件。
对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其 实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。
4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)
未来必然是Web的世界,学习WEB基础的最佳网站是W3School
  • 学习HTML基本语法
  • 学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
  • 学会用  Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。
  • 学习使用Javascript操纵HTML元件。理解DOM和动态网页(http://oreilly.com/catalog/9780596527402) 网上有免费的章节,足够用了。或参看 DOM 。
  • 学会用  Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)
  • 在一台机器上配置Apache Nginx
  • 学习PHP, 让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
  • 把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
  • 跟完一个名校的网络编程课程(例如:http://www.stanford.edu/~ouster/cgi-bin/cs142-fall10/index.php ) 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上
  • 学习一个javascript库(例如jQuery 或 ExtJS)+  Ajax (异步读入一个服务器端图片或者数据库内容)+JSON数据格式。
  • HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)
  • 做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)
  • 买个域名,租个空间,做个自己的网站。

进阶加深

1、 C语言和操作系统调用
  • 重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构。推荐《计 算机程序设计艺术》、《算 法导论》和《编 程珠玑》。
  • 学习(麻省理工免费课程) 计算机科学和编程导论
  • 学习(麻省理工免费课 程)C语言内存管理
  • 学习Unix/Linux系统调用(Unix 高级环境编程),,了解系统层面的东西。
    • 用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)
    • 用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序。多进程多进程购票的程序。
    • 用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序。
    • 学会使用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)
    • 学会使用makefile来编译程序。(参看我的《跟我一起写makefile》)
    • IPC和Socket的东西可以放到高级中来实践。
  • 学习Windows SDK编程(Windows 程序设计 MFC 程序设计
    • 写一个窗口,了解WinMain/WinProcedure,以及Windows的消息机制。
    • 写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程。
    • 学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程。
    • 这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程。
    • 不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形界面的编程。@virushuo 说:“ 我 觉得GUI确实不那么热门了,但充分理解GUI工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解GUI工 作,或者在win那边学,或者在mac/iOS上学”。
2、学习Java
  • Java 的学习主要是看经典的Core Java 《Java 核心技术编程》和《Java 编程思想》(有两卷,我仅链了第一卷,足够了,因为Java的图形界面了解就可以了)
  • 学习JDK,学会查阅Java API Doc http://download.oracle.com/javase/6/docs/api/
  • 了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、Java、Python思考一下“跨平台”这种技术。
  • 学会使用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序。
  • 建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的那个PHP的小项目试着用JSP和 Servlet实现一下。
3、Web的安全与架构
  • 学习HTML5,网上有很多很多教程,以前酷壳也 介绍过很多,我在这里就不罗列了。
  • 学习Web开发的安全问题(参考新浪微博被攻击的这个 事,以及Ruby 的这篇文章
  • 学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM
  • 学习Web的静态页面缓存技术。
  • 学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。
  • 实践任务:
    • 使用HTML5的canvas 制作一些Web动画。
    • 尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击。
    • 把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站
4、学习关系型数据库
  • 你可以安装MSSQLServer或MySQL来学习数据库。
  • 学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……
  • 学习数据库的存过,触发器,视图,建索引,游标等。
  • 学习SQL语句,明白表连接的各种概念(参看《SQL  Join的图示》)
  • 学习如何优化数据库查询(参看《MySQL的优化》)
  • 实践任务:设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文章,评论最多的文 章,最活跃用户。
5、一些开发工具
  • 学会使用SVN或Git来管理程序版本。
  • 学会使用JUnit来对Java进行单元测试。
  • 学习C语言和Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编 程修养》,这样的东西你可以上网查一下,一大堆)。
  • 推荐阅读《代 码大全》《重 构》《代 码整洁之道

高级深入

1、C++ / Java 和面向对象
我个人以为学好C++,Java也就是举手之劳。但是C++的学习曲线相当的陡。不过,我觉得C++是最需要学好的语言了。参看两篇趣文“C++学习信心图” 和“21天学好C++
  • 学习(麻省理工免费课 程)C++面向对象编程
  • 读我的 “如何学好C++” 中所推荐的那些书至少两遍以上(如果你对C++的理解能够深入到像我所写的《C++ 虚函数表解析》或是《C++ 对象内存存局) ()》, 或是《C/C++ 返回内部静态成员的陷阱》那就非常不错了)
  • 然后反思为什么C++要干成这样,Java则不是?你一定要学会对比C++和Java的不同。比如,Java中的初始化,垃圾回收,接口,异常, 虚函数,等等。
  • 实践任务:
    • 用C++实现一个BigInt,支持128位的整形的加减乘除的操作。
    • 用C++封装一个数据结构的容量,比如hash table。
    • 用C++封装并实现一个智能指针(一定要使用模板)。
  • 设 计模式》必需一读,两遍以上,思考一下,这23个模式的应用场景。主要是两点:1)钟爱组合而不是继承,2)钟爱接口而不是实现。(也推荐《深 入浅出设计模式》)
  • 实践任务:
    • 使用工厂模式实现一个内存池。
    • 使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐。
    • 使用命令模式实现一个命令行计算器,并支持undo和redo。
    • 使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素。
  • 学习STL的用法和其设计概念  - 容器,算法,迭代器,函数子。如果可能,请读一下其源码。
  • 实践任务:尝试使用面向对象、STL,设计模式、和WindowsSDK图形编程的各种技能
    • 做一个贪吃蛇或是俄罗斯方块的游戏。支持不同的级别和难度。
    • 做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3或avi文件可以播 放,图片文件可以展示图片。
  • 学习C++的一些类库的设计,如: MFC(看看候捷老师的《深 入浅出MFC》) ,Boost, ACE,  CPPUnit,STL (STL可能会太难了,但是如果你能了解其中的设计模式和设计那就太好了,如果你能深入到我写的《STL string类的写时拷贝技术》那就非常不错了,ACE需要很强在的系统知识,参见后面的“加强对系统的了解”)
  • Java是真正的面向对象的语言,Java的设计模式多得不能再多,也是用来学习面向对象的设计模式的最佳语言了(参看Java中的设计模式)。
  • 推荐阅读《Effective Java》 and 《Java 解惑
  • 学习Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是学习Java的设计,如IoC等。
  • Java的技术也是烂多,重点学习J2EE架构以及JMS, RMI, 等消息传递和远程调用的技术。
  • 学习使用Java做Web Service (官 方教程在这里
  • 实践任务: 尝试在Spring或Hibernate框架下构建一个有网络的Web Service的远程调用程序,并可以在两个Service中通过JMS传递消息。
C++和Java都不是能在短时间内能学好的,C++玩是的深,Java玩的是广,我建议两者选一个。我个人的学习经历是:
  • 深究C++(我深究C/C++了十来年了)
  • 学习Java的各种设计模式。
2、加强系统了解
重要阅读下面的几本书:
  • Unix 编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。你一定会有一种醍醐灌顶的感觉。
  • Unix 网络编程卷1,套接字》这是一本看完你就明白网络编程的书。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll 的差别。
  • TCP/IP 详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的书。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优。
  • 实践任务:
    • 理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术。
    • 写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast)。
    • 写一个简易的HTTP服务器。
  • Unix 网络编程卷2,进程间通信》信号量,管道,共享内存,消息等各种IPC…… 这些技术好像有点老掉牙了,不过还是值得了解。
  • 实践任务:
    • 主要实践各种IPC进程序通信的方法。
    • 尝试写一个管道程序,父子进程通过管道交换数据。
    • 尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构体数组。
  • 学习《Windows 核心编程》一书。把CreateProcess,Windows线程、线程调度、线程同步(Event,  信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞精通。
  • 实践任务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行。把前面写过的那个简易 的HTTP服务用线程池实现一下。写一个DLL的钩子程序监控指定窗口的关闭事件,或是记录某个窗口的按键。
  • 有了多线程、多进程通信,TCP/IP,套接字,C++和设计模式的基本,你可以研究一下ACE了。使用ACE重写上述的聊天程序和HTTP服务 器(带线程池)
  • 实践任务:通过以上的所有知识,尝试
    • 写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上。(注意,磁盘I/O和网络I/O可能会很有问题,想一想怎么解决,另外,请 注意网络传输最大单元MTU)
    • 了解BT下载的工作原理,用多进程的方式模拟BT下载的原理。
3、系统架构
  • 负载均衡。HASH式的,纯动态式的。(可以到Google学术里搜一些关 于负载均衡的文章读读)
  • 多层分布式系统 – 客户端服务结点层、计算结点层、数据cache层,数据层。J2EE是经典的多层结构。
  • CDN 系统 – 就近访问,内容边缘化。
  • P2P 式系统,研究一下BT和电驴的算法。比如:DHT 算法
  • 服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方?集群主结点备份。
  • 虚 拟化技术,使用这个技术,可以把操作系统当应用程序一下切换或重新配置和部署。
  • 学习Thrift, 二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。
  • 学习Hadoop。 Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的 一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。
  • 了解NoSQL 数据库(有人说可能是一个过渡炒作的技术), 不过因为超大规模以及高并发的纯动态型网站日渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求,这使得目前NoSQL数据库慢慢成了人们 所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势。当前NoSQL数据库很多,大部分都是开源的,其中比较知名的 有:MemcacheDB、Redis、Tokyo Cabinet(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
写了那么多,回顾一下,觉得自己相当的有成就感。希望大家不要吓着,我自己这十来年也在不断地学习,今天我也在学习中,人生本来就是一个不断学习和 练级的过程。不过,一定有漏的,也有不对的,还希望大家补充和更正。(我会根据大家的反馈随时更新此文)欢迎大家通过我的微博(@ 左耳朵耗子)和twitter(@haoel) 和我交流。
—– 更新  2011/07/19 —–
1)有朋友奇怪为什么我在这篇文章开头说了web+移动,却没有在后面提到iOS/Android的前端开发。因为我心里有一种感觉,移动设备上的 UI最终也会被Javascript取代。大家可以用iPhone或Android看看google+,你就会明白了。
2)有朋友说我这里的东西太多了,不能为了学习而学习,我非常同意。我在文章的前面也说了要思考。另外,千万不要以为我说的这些东西是一些新的技 术,这份攻略里95%以上的全是基础。而且都是久经考验的基础技术。即是可以让你一通百通的技术,也是可以让你找到一份不错工作的技术。
3)有朋友说学这些东西学完都40了,还不如想想怎么去挣钱。我想告诉大家,一是我今年还没有40岁,二是学无止境啊,三是我不觉得挣钱有多难,难 的是怎么让你值那么多钱?无论是打工还是创业,是什么东西让你自己的价值,让你公司的价值更值钱?别的地方我不敢说,对于互联网或IT公司来说,技术实力 绝对是其中之一。
4)有朋友说技术都是工具,不应该如此痴迷这句话没有错,有时候我们需要更多的是抬起头来看看技术以外的事情,或者是说我们在作技术的时候不去思考 为什么会有这个技术,为什么不是别的,问题不在于技术,问题在于我们死读书,读死书,成了技术的书呆子。
5) 对于NoSQL,最近比较火,但我对其有点保守,所以,我只是说了解就可以。对于Hadoop,我觉得其在分布式系统上有巨大的潜力,所以需要学习。 对 于关系型数据库,的确是很重要的东西,这点是我的疏忽,在原文里补充。

美国为什么会爆发金融危机?

美国为什么会爆发金融危机?  

    一直以来包括中外媒体,在笔者所能接触的范围之内,好像没有一家说的清楚为 
什么美国会爆发金融危机,只是泛泛而谈是美国长期的低利率造成的恶果,至于美国为 
什么长期实行低利率,却没有一个让人信服的理由,最可笑的是台湾一位相当知名的所 
谓的经济学家说美联储的那帮人都是白痴,所以实行了低利率的市场政策。今天笔者来 
揭开这些个“白痴”是如何剥削世界并引发美国金融危机的。 
   
    美国金融危机爆发的根本原因,在笔者看来是美国一手主导的所谓的不合理的 
国际经济秩序及美国这个帝国的贪婪造成的!这样说可能太抽象,笔者就尽可能的简化 
描述出美国经济危机形成的流程及原因。 
   
    首先需要明确的一个前提就是现存的美元霸权是美国国家的最高利益,它给美 
国带来的巨大利益。美国可以通过印钱来支付任何费用(这也是美国金融危机爆发的根 
源之一,后面会说到),所以美国就凭着这个特权,建立在全球最强的军队,最强的媒 
体,最强的科技能力,最强的经济实力…………。尤其美元霸权还有一个好处就是建立 
世界上的会计结算标准,信用评级标准和唯一能够控制和监督美元的流向(这一条很重 
要,它意味着美国可以运用这些条件,以金融的手段定向冲击某个国家或某个经济体。 
) 
   
    既然美元给美国带来这么多利益,美国当然不愿意放弃美元霸权,美国不惜一 
切手段的打压欧元就是出于这个原因,可以这样说,任何可能威胁到美元霸权的国家或 
者地区都是美国严厉的打击对象。 
   
    好了,这个前提说清楚了,我们就来描绘为什么美国坚持不合理的美元霸权是 
如何导致了美国的金融危机的。通过下面的描述大家能很清楚的了解一直以来大家都在 
问的问题,美国为什么会长时间实行零利率的货币政策?美国的钱到底都去哪了?也能 
了解为什么美国一直督促人民币短期内的大幅升值。 
   
    最近20年来,全世界的发展中国家经济迅速发展,国际贸易更是每年以10 
%以上的速度增长。如此迅速成长的国际贸易,理论上需要与此相适应的用于国际支付 
的货币同比增长,也就是需要美元同比增长。只有这样,国际贸易才能顺利进行。如果 
没有同等比例的美元投入市场,那么就会出现这样的两种结果1、美元供不应求,美元 
长期大幅度升值,这是美国不可能承受的,因为这样会对美国产业形成致命打击。2、 
在美元出现短缺之后,进行国际贸易的国家会寻求替代美元的货币,如欧元等,这样欧 
元就会迅速抢占美元的市场份额,从而在世界范围内蚕食美元的货币霸权地位。这两种 
结果都是美国不可能承受的,因此美国必须供应世界市场相同比例的美元,就是说美国 
要不断的印钞票。美元印出来后,这些美元如何投入世界市场,就成为另外的一个问题 
。美国的做法就是长时间的零利率政策,促成美国民间的投资与消费。印出的美元通过 
银行就流到了投资者和最终消费者手中,通过投资者和消费者的大量投资和消费,流到 
的世界各地。从美元的印刷和流出的过程来看,我们理所当然的会得出这样的一个结论 
,就是每年世界贸易的增加部分有相当部分是被美国消费了,并不是美国人想消费这个 
部分,而是他不得不消费这个部分,因为,他们不消费的话,市场上就没有足够的美元 
供应,就会出现上面所论述的那两个结果。换句话说,美国要想保持美元霸权,贸易逆 
差是其必须承受的,也是不得不承受的! 
   
    这些每年以10%以上的速度印刷出来的美元通过国际贸易流向的广大的发展中国 
家,如中国、印度等。对于美国来说,流出的这么多美元,如果没有合理的控制对于美 
国来说是不可想象的。因为,不受美国约束的美元很可能冲击美国经济,如美国股市好 
的时候,大批的世界各地的美元流入美国股市,可能就会无限推高美国股市,如果美元 
低迷的时候,又会群起抛售,从而使美元更低迷。也就是不受美国监控的美元,很可能 
造成美国经济的巨幅动荡。因此为了吸收这些国外的美元,美国就设计了多种投资方式 
,让这些国外的美元重新回流美国,重新掌控在美国手里,美国国债就是其中最重要的 
一个吸纳散流世界各地美元的工具。 
   
    这样新印刷出来的美元到美国国债就完成了一个循环:从美国流出又回到美国 
。 
   
    然而回流到美国的美元却是要付各种报酬的,对美国来说,美国每年巨额增幅 
的国债,也意味着每年巨额的国债利息。从正常的思维角度来说,这种循环是不可能持 
续的。因为这种做法就是债务越积越多,最终有一天是要爆掉的。美国的决策层深刻的 
知道这一点,他们要想方设法的消减国外政府和民间持有的美元和美国国债。只有不断 
的消减国外持有的美元和美国国债,美元的这种循环才能持续,美元作为世界霸权的地 
位也才能继续。 
   
    那么他们如何消减美国国债呢?在我看来,美国主要做这样几件事情:1、利用 
美国国债的回流资本建立世界超强的军队,抢占世界经济政治的至高点,从而硬性压制 
世界各国。这从美国最近打的两场战争可以清楚的看出来。占领阿富汗,是为了在亚欧 
大陆中楔一个楔子,从而阻止中欧的接近。避免出现亚欧经济一体化,从而边缘化美国 
经济,边缘化美元。占领伊拉克,是为了控制中东的石油,维持和强化美国在中东的势 
力,进而事实上形成美国控制中东、控制石油,控制住世界各国经济发展的命脉。2、持 
续的不间断的推动美元的贬值。3、美国利用美元是世界支付货币及其主导制定的世界贸 
易规则,通过定向的控制美元流动冲击某些国家的经济,从而制造机会洗劫这些国家的 
美元储备,并控制该国经济。我们能清楚的看到80年代的日本,90年代的东南亚及21世 
纪初的南美洲都是美国在全球范围内回收美元的杰作。所到之处这些国家的外汇储备无 
一例外的被洗劫一空。挣钱的、真正从经济危机中获利的就是美国,每一次经济危机之 
后,美国总是更加空前的强大。 
   
    好了,美国的美元霸权的这个循环大致讲完了。我们回头总结一下,就是这样 
的一个路径:1、世界经济的发展促进贸易的发展------2、导致世界需要更多的美元--- 
-----3、美国要想维持其世界霸权的地位必须提供与世界贸易增长相适应的美元------- 
--4、这些美元就通过零利率的方式贷给了投资者和消费者------------5、通过投资者 
的投资和消费者的消费,这些发行的美元迅速的进入世界市场,流入发展中国家,相当 
部分成为世界各国的外汇储备------------6、美国为了管理这些散流在世界各地的美元 
就开展多种形式的美元投资方式,在全球范围内回收美元,使美元重新回到美国国内, 
最主要的就是借助美国国债-----------7、这些回流的美元是需要支付利息等各种报酬 
的,因此导致美国债务的迅速增长-------------8、这种债务是美国不可承受的,美国 
要通过多种手段来消减这些债务-----------9消减债务之后,美国才有能力进入本循环 
从1开始的另一次循环。 
   
    简化的循环模式使我们一眼就能看出这个循环能得以循环往复的一个关键点, 
就是,美国必须要通过多种方式和手段消减债务,如果不能消减债务,美国的这种循环 
就不可能持续(其实从这个简单的循环模型就能看到,消减债务本质就是美国巧取豪夺 
其他国家的财富,本质上是一种强盗行为,所以从这个意义上说,美国是一个吸血的国 
家,其特点跟武侠小说中的邪恶武功吸星大法是一样的!格林斯潘不是在国会上说美国 
的债务是不用偿还的吗?其中的意义就在于此)。在20世纪后面的几十年里,世界经济 
发展的速度不是很快,成长中的主要是一些中小经济体,如日本,亚洲四小龙等,这些 
国家的力量无论是在政治经济等方面都不可能与美国抗衡,因此我们看到的日本的广场 
协议,东南亚经济危机南美洲的金融危机,美国都能顺利的实施其消减美元计划,这些 
国家在洗劫之后,无一例外是美元洗劫一空,经济陷入停滞、混乱。世界进入21世界之 
后,经济发展模式出现了重大变化,那就是以前以小经济体为主题引导的世界经济成长 
,转变成以第三世界大经济体引导的经济成长。并且这些大的经济体大多是有核国家, 
它们不仅经济发展快,科技军事的发展都很迅速,这几个经济体就成了美国啃不动的硬 
石头,美国以前对付中小经济体所采用的消减债务方式,在这些大国身上不起任何作用 
(我们看到的2000年后中国外汇储备迅速增长的过程也是美国国债迅速成长的过程 
,这两者的同步性说明了什么?2008年,美国资本就曾经利用中国奥运会的机会, 
使得大量的资本通过地下热钱的方式流入中国,想借中国奥运题材拉抬中国的股市,然 
后做空赚取超额利润,扰乱中国的经济秩序。没想到中国政府果断的在奥运会之前把股 
市由6000点打回到1800点,反剪了美国资本的一次羊毛。多少美国热钱至此沉 
淀的中国股市!由于这些热钱大部分是在3500点至4500点入场的,因此可以想 
见,如果这些热钱不退出中国市场,中国的股市永远会在3500点以下徘徊。与这次 
反剪羊毛的时间点巧合的是,美国的金融危机在2008年底爆发了)。 
    剪不到羊毛债务就无法消减,而美国为了美元的世界货币的地位,又不得不继 
续稳定的向世界市场提供美元,这样就形成了当前美国的困境,即美国的国债在以前所 
未有的速度增加,如果这种情况持续下去,到2020年美国的国债总量超过20万亿 
美元也不是不可想象的。所以作为美国现任的国务卿希拉里才会在国会上大骂格林斯潘 
是骗子;才会在会见澳大利亚总理陆克文的时候问如何才能不还中国人的钱(维基解密 
)。我相信希拉里的话是其肺腑之言,因为这种情况持续下去,美国只有两种选择,要 
么放弃美元霸权,要么听任美国经济崩盘。也许有些人会说美国还有第三条路就是发动 
战争,在我看来发动战争也是不可能改变美国的困境的。为什么呢?美国的战争对象选 
择谁?选择小国就会像伊拉克、阿富汗一样重新使美国陷入战争的泥潭,其效果只能是 
慢慢的腐蚀美国的经济。何况这些小国也不会对美国摆脱困境产生太大的作用。选择中 
、俄这养的国家基本上是美国在自找死路,其结果是美国的美元霸权会在一夜之间坍塌 
,美国的经济也会瞬间崩溃。为什么这么说呢?我们设想一下,如果中国反击的导弹落 
到美国本土,哪怕是边远的荒漠会怎么样?由于中国是有核国家,拥有毁灭任何国家的 
实力,哪怕落在美国的两枚导弹是常规弹头,哪怕是落在西部的荒漠,哪怕是打死了一 
只蚊子,它也具有震撼世人的宣誓意义:那就是美国已不是一个安全的国家,他是世界 
最危险的国家;美元也不是安全的货币,它是世界最危险的货币。到了这时候请问谁还 
敢持有美元?美元一定会被世界各国的央行和民间机构所抛售,换取相对安全的货币, 
如欧元等!这些在市场上抛售的美元,最后的目的地只有一个就是美国。因为其他国家 
的贸易,为了安全起见,绝对不会再使用美元结算。美元的唯一流动方向就是回流美国 
。以美国国内的财富来应付美国几十年来超量发行的美元,其结果可想而知,就是恶性 
的通货膨胀,美国民众一夜之间的生活倒退几十年。更可怕的是,这时候美国如果想要 
进口必要的军备物资、民生物资就必须要靠自己的产品换取外汇,然后才能在国际市场 
上购买到自己急需的物资。那么到这个时候我们想问美国一个问题,他还有什么能力养 
活他的十几个航母战斗群。到时候恐怕不是被打垮也是被自己的经济压垮!所以,美国 
在阿富汗、伊拉克等这些小国面前,他的实力确实超强不可逾越的;但是在中、俄这些 
大国面前它是很脆弱的。这也是俄罗斯2008年肢解格鲁吉亚美国屁都不敢放一个的 
原因。了解了美国的这些特点,我们对美国近期在中国周边兴风作浪就姑且看之吧,必 
要的时候就紧紧抓住美国,和其贴身肉搏,免得上了美国利用周边小国消耗中国实力的 
圈套) 
   
    话说的多了,回到正题。简化模型同时也告诉我们美国当前的处境是美元霸权 
和世界经济发展的不可调和的矛盾的产物。作为美国政府来说,放弃美元霸权就是放弃 
美国的超级大国地位,这是不可想象的,所以他们要想方设法延续美元霸权的存续。他 
们做法无非是下面几条:1、加强军事,这个大棒是美元最强有力的保护神了,没有它美 
元是啥还有人认识吗?2、不惜一切力量打倒欧元和其他有可能对美元构成威胁的经济合 
作组织(如中国主导的东亚的10+3) ,确保美元的不可替代性(最近欧元的后院连 
续失火,金砖5国放风要联合救助还不能够说明问题吗?)。3、坚决实施在世界范围内 
剪羊毛的计划,也就是过去的QE1、QE2计划,还有即将出台的QE3等。同时, 
对剪羊毛的最大对象国中国展开全面的行动,软的方面G2;硬的方面全面恶化中国的 
周边环境,对中国施加军事压力;逼迫人民币升值等。4、限制国际贸易的增长速度, 
这里面包括限制其他国家经济发展的速度和限制国际贸易的增长速度。如原材料产地出 
现大规模动乱,海盗猖獗,国际贸易保护抬头等。 
   
    好了,想要表达的意思差不多都说了,现在就回到本文开头人们经常问到的几 
个问题。1、,美国为什么会长时间实行零利率的货币政策?美国长时间实行零利率的 
货币政策是为了通过居民的消费,快速的让货币流向世界市场,维持世界贸易中货币与 
实物之间的平衡。2、美国的钱到底都去哪了?美国民众的钱都通过超前的消费流入了发 
展中国家,发展中国家又通过收买美国的国债流入美国,以美国国债的形式存在。如果 
美国能通过手段成功的消减国外政府、机构、及私有资本持有的美元或美国国债。那么 
这些钱就真正的回流到美国了。如果美国政府不能做到这些,那么这些钱就留在了发展 
中国家。美国现阶段就是如此,一方面是美国的钱大量流到国外,另一方面是不断增加 
军事费用,双重压力下,美国还能有钱吗?3、为什么美国一直督促人民币短期内的大幅 
升值。人民币短期内的大幅度升值对中国是有百害而无一利,对美国是有百利而无一害 
。为什么这么说呢?短期内的大幅度升值之后,沉淀在中国市场上的热钱就会立马出逃 
,中国的外汇储备立刻缩水,这是美国当前必需的;还有大幅度的升值会给中国的中小 
型出口企业造成致命的伤害,并且这种伤害有可能带来经济上的连锁反应,中国经济的 
稳定性与成长性就会顷刻之间化为乌有。如果经济困难通过美国的操作发展成为社会动 
荡,这更是美国所求之不得的结果。中国有可能因为此而失去几十年的经济发展成果, 
使中国真正成为美国转嫁危机的牺牲者。 
   
    写到这就让我想起了温家宝总理的意味深长的两句话:“美国要用常识去解决 
自己的经济问题!”;“发展好自己就是对世界经济的最大贡献!”。 

2011年12月19日星期一

microsoft hardware computing group

代友发微软亚洲研究院硬件计算小组实习生招聘信息一则,如下:
Group:  Hardware Computing Group
Work Location: Beijing
Group Overview
Push forward the state of the art in hardware computing to innovate in softwa
re services and to realize novel devices. Research fundamental computer archi
tecture, identifies hardware opportunities in specific services, and builds i
ntegrated hardware/software solutions. Extrapolate hardware trends, study new
 interaction models, and construct working prototypes. The end goal is to del
iver rich and responsive user experiences at work, at home, and on the move.
Roles & Responsibilities
We are looking for proactive fresh young minds to working with us and buildin
g the next generation of specialized acceleration platform; the successful in
ternship candidate will be working with group of talented researchers and eng
ineers to develop, implement and validate the reconfigurable logic blocks at
30% of his/her time and for the rest 70% will participate in system-level des
ign on realistic hardware platforms. Desired candidate should have good analy
tical skills with can-do attitude. If you are a good self-starter searching f
or the rewarding experience then we are looking for you.
Required Qualifications:
Electrical Engineering or Computer Sciences Background
Experience at FPGA Hardware Design, Proficient at hardware programming in Ver
ilog/VHDL
Device driver programming experience
Experience at programming in C/C++
Excellent communication skill and able to working at a strong teamwork enviro
nment
Experience in high-speed interface troubleshooting is considered a plus
Requires your advisor’s approval and can commit at least 6 months as fulltim
e internship
Qualified applicants please fill in the application and send it together with
 a full resume in both English and Chinese to jingyan@microsoft.com

AMD intern

Platform diagnostics team has immediate opening for diagnostics release engineer. Key responsibilities of the position is listed below

KEY RESPONSIBILITIES
• Responsible for AMD APU/GPU diagnostics release suite build, packaging, testing and debugging, and documentation
• Responsible for release script (Linux Shell, Ruby) development
• Deliver release testing report on time per assignment
• Work together with diagnostics IP developers to debug and narrow down the root cause in timely manner
• Create diagnostic release documents

REQUIREMENTS
• B.S. or M.S. In EE or CS or equivalent is required
• Good English required

EXPERIENCE AND SKILLS
• Good knowledge of Linux and C/C++ programming
• Experience with Linux shell or ruby script development
• Experience with software and hardware troubleshooting and testing, Linux/Windows driver development and testing experience is highly desired
• Good communication skills in English
• Experience in semiconductor industry is highly desired
• Knowledge for any of bootloader, 3D, Video encoding/decoding, PCIE, Memory and Display is highly desired

This team is essential to the success of AMD. You will be working with the very best in our technology, while working on some of the most exciting projects the industry has to offer.

You can send your CV to XiaoBing.Zhang@amd.com

欧洲常识

巴尔干半岛:意大利半岛以东的地中海叫做亚德里亚海。亚得里亚海与黑海之间的半岛叫做巴尔干半岛。
亚平宁半岛:就是意大利半岛。
伊比利亚半岛:可以理解为西班牙那地儿。
波罗的海:看地图。
巴尔干半岛与土耳其之间的地中海叫做爱琴海。
亚速海:黑海以北的部分。
克里米亚半岛:黑海以北,亚速海以西的哪个地方,目前是克里米亚共和国
突尼斯:虽然现在属于北非,但是在欧洲史很重要。紧靠地中海,看地图。突尼斯省在突尼斯国的最北。
斯堪的纳维亚半岛:可以理解为挪威加瑞典。
小亚细亚:约等于现伊斯坦布尔附近。
阿尔卑斯山:覆盖意大利北,瑞士,奥地利。
北海:欧洲大陆以北,不列颠群岛西北,斯堪的纳维亚半岛以南,叫北海。
莱茵河:从瑞士境内的阿尔卑斯山往北流,于荷兰入北海。
日内瓦湖(莱芒湖):法国与瑞士边界附近,靠近阿尔卑斯山西部。
易北河:发源于捷克与波兰交接的苏台德,流经德国,从汉堡入北海。
多瑙河:德国南部发源,是往东流的,流经10个中东欧国家,最后入黑海。
塞纳河:法国境内的河,因为流经巴黎,所以很出名。
巴伐利亚:阿尔卑斯以北,德国南部,以慕尼黑为中心。
欧洲民族大迁徙:就是通常所谓的蛮族入侵,直接导致西罗马帝国覆灭,欧洲中世纪的开始。
斯拉夫人:最早起源于波兰。分东斯拉夫(俄罗斯,白俄罗斯,乌克兰),西斯拉夫(波兰,捷克,斯洛伐克),南斯拉夫(巴尔干半岛上,希腊以北的部分)。
日耳曼:很复杂的概念,北日耳曼后来发展为斯堪的纳维亚民族,东日耳曼比如波罗的海南的勃艮第人,汪达尔人,哥特人。西日耳曼人是德国人,法国人,英国人的祖先。
拜占庭帝国:希腊(中心),土耳其,巴以地区等,首都为土耳其西部的伊斯坦布尔(君士坦丁堡)。为奥斯曼土耳其灭。