2007年11月25日星期日
蹭网上
2007年10月20日星期六
我为伊烦
今天IIS莫名无法启动了,在网上查解决方案。发现windows下的好多设置以前都没有听说过,我开始在想:若不是windows做得这么傻瓜,人们是否也会像解决Linux设置问题那样乐此不疲呢?易用性是在牺牲灵活性的代价换来的,这些我在做软件开发的几年里面深有感触。而现在,我在公司用着正版的Windows xp,笔记本上也是HP OEM的windows xp,我是否还需要执着要花时间在这台机器上装一个Linux呢?cygwin已经够用了。
在windows上,我同样用着大量自由软件,这些软件让我的工作变得容易和有趣:Dia, Freemind, Eclipse, Opera, Cygwin, Netbeans...,毕竟我需要的只是可以帮助我工作的桌面系统。虽然服务器是Linux,家里的电脑是Linux,那么公司的这个呢,装不上就不装了。真怀疑是硬盘的问题,发现大的iso镜像,两次运行md5sum得到的结果居然不一样!但是在windows上又没有问题,又不能送联想修。在这体现了linux和windows兼容性的区别了~
2007年10月19日星期五
小心:JDBC的executeQuery和executeUpdate
这些我都清清楚楚,但是今天遇到一个奇怪的问题。
程序部署到服务器上和MS SQL Server使用时总是报错:executeUpdate must not return a result set,并且只有insert操作出错,而update不出错!但是在本机上和hsqldb使用时又是正常的。我试了几次之后,开到报错的行数,JtdsStatement.java中有错,我开始怀疑可能是jTds的bug,于是看jTds的源码,怎么看也没有问题,在google中搜索也没有结果。后来我怀疑是不是Hibernate的哪个地方的故障啊,于是有自己写了测试程序,不用Hibernate而之间用JDBC,首先测试了一个insert语句,没有问题;这就怪了,jtds没有问题啊。于是把问题程序中生成的SQL语句拿来试了一把,不行了!怪事!突然一想,那么在SQL Server的查询分析器中试一下呢?放到查询分析器中一查:居然返回了一条记录!哈哈,问题发现了,问题出在了触发器上:为了集成另外一个系统而不在我的程序中增加代码而做到insert触发器!同事在我操作的那个表上写的触发器用了select语句,但是没有把返回结果付给变量,所以我的程序对表进行插入操作会返回一个Result set,而Jdbc是严格定义了的,于是就出错了。改了一下触发器就好了。说实在的我对SQL Server不熟,开始也没有意识到触发器会这样工作。调这个程序调了大半天,所以这里提醒大家还有自己要小心一下。
2007年10月17日星期三
2007年10月15日星期一
我的右手-真男人
---------
别人都说那是一座很巍峨的山
而我也知道那是你也会疲倦的肩
别人看到你胸前的荣誉和花环
而我数不清你背后付出的血汗
从来没有风沙让你 让你低过头
从来没有荆棘让你停留
每次把我的手握痛你才走
你的背影是握深情的眼眸
一生只对你微笑
再长的路陪你千里迢迢
虽然你不能给我一个完整的拥抱
我愿温暖你的暮暮朝朝
2007年8月24日星期五
Blogger招谁惹谁了?
2007年8月6日星期一
有点想换Java IDE了,想换到Netbeans
Eclipse很漂亮,3.0之后的版本比2.0漂亮;Eclipse的增量编译很爽.Eclipse的实时语言提示和纠错很爽,总之,用Eclipse编写Java代码是一种享受.
后来实际应用Java时,主要是来做WEB项目,最早的时候使用Tomcat Plugin和lomboz插件来做.在2004年的时候,我在CSDN发了一篇关于使用tomcat plug集成和断点调试的文章到现在时而都有人来邮件询问这方面得问题,我都会回复他们,现在我都不用这些了,用Eclipse的WTP或者直接用JbossIDE绑定的Eclipse,它可以免去许多插件集成的麻烦.然而这却有一些麻烦了.JbossIDE2.0绑定得Eclipse3.2在Linux下很不稳定,问题集中体现在启动Tomcat时总会是不是Crash.这也就是为什么现在手中项目的WEB部分在Windows下开发的原因.我不能使用Linux,总觉得心里不爽.
项目的下一期工程需要开发一个客户端,以弥补WEB页面客户端的一些不足.这面临这两种选择,找一个合适的技术和工具构建Java版本的GUI程序,考虑的当然是SWT和Swing;另外一种方法,是用DotNet来做图形界面程序,那么也就是底层通信协议的程序用C#重新实现,或者用Web-service方式让已有的Java代码和新的客户端程序一起工作.
我找到了Netbeans,先不说别的,它的Swing界面设计器很棒,这是我急切需要的功能.别给我提Eclipse,它的VE简直慢得像蜗牛.但是最初我感到不爽得是它的代码编辑器的字体不好看.我把代码字体设置成Counter new,英文的代码好看了,但是中文就不能显示了.还有在Note book上,菜单的字体偏小,都缩成一团了.后来在网上查了Netbean,才发现它现在已经引起了广泛关注,特别是即将发布的Netbeans6,关于它和Eclipse的比较的文章也很多.其实早在2,3年前我就知道Netbeans,那个时候好像是4.0版本吧,我推荐其他人用它,因为它有中文版本,并且可以绑定JDK,对于某些新手来说,免去了设置等等步骤.我自己觉得它集成的服务器的功能不错,而我自己却没有真正的用过它.一是它看起来没有Eclipse漂亮,特别是代码编辑器.然而这一切似乎都成了过去时了.新的Netbeans,比如现在的最新稳定版本5.5.1,通过设置之后,可以很漂亮:在Windows下把所有语言的缺省字体设置为DialogInput,那么英文字体是等宽的Courier New字体,而中文会用新宋体,这就和Eclipse中的表现一致了.可以调整启动参数使得菜单的字体大起来,比如调整为12pt,那么在我的Note book上显示就相当漂亮了,自然在办公室工作机器的Linux上面使用也会没有问题.有时间试试看吧,如果用起来顺手,就决定转用Netbeans了.并且期待着Netbeans6的稳定版本.据说它的代码编辑器可以赶超Eclipse!不过还能有一点得到满足就完美了,FreeMarker-IDE的NB插件!网上找过了没有,不知道什么时候能有,或者自己来研究一下,尝试能否开发.
2007年8月3日星期五
FreeMarker2.3.7开始增加的一个很爽的特性
* This file is part of the Frequent Passenger Service System
* which was created by China Southern Airlines Hunan Branch
* All Rights Reserved, Any organization or individual <b>must not</b>
* modify or re-distribute all of or part of the software at any form without permission.
*
* IT Department of Hunan Branch, China Southern Airlines, Ltd.
*
* Author:Yi Can yican@cs-air.com alva.yi@gmail.com
*
* Version: $Id: TemplateEngine.java 197 2007-06-01 09:40:14Z vulcan $
*/
package com.csair.hunan.pss.web.sms;
import java.io.StringWriter;
import org.apache.commons.logging.LogFactory;
import freemarker.template.Template;
* render the template with filling the variables
* based on the syntax of Freemarker
* @author Alva alva.yi@gmail.com yican@cs-air.com
*
*/
public class TemplateEngine {
private static Configuration cfg = new Configuration();
private static Log log = LogFactory.getLog(TemplateEngine.class);
public static String render(Object varMap, SmsTemplate t) {
//builder a reader and a writer for the FreeMarker template engine
StringReader rd = new StringReader(t.getBody());
StringWriter wt = new StringWriter();
try {
Template ft = new Template(t.getName(), rd, cfg);
ft.process(varMap, wt);
} catch (Exception e) {
log.error("Cann't render Template for:" + t.getName());
e.printStackTrace();
}
return wt.getBuffer().toString();
}
}
2007年7月30日星期一
解决Webwork,tomcat5.x一起使用时GET方法乱码问题
在FilterDispather.java里找到了这样的一句:
// prepare the request no matter what - this ensures that the proper character encoding
// is used before invoking the mapper (see WW-9127)
DispatcherUtils du = DispatcherUtils.getInstance();
看到DispatcherUtils.java果然Webwork采用的方法和以前解决中文问题用Filter的方式其实一样,无非是先设置request的编码:
public void prepare(HttpServletRequest request, HttpServletResponse response) {
String encoding = null;
if (Configuration.isSet(WebWorkConstants.WEBWORK_I18N_ENCODING)) {
encoding = Configuration.getString(WebWorkConstants.WEBWORK_I18N_ENCODING);
}
Locale locale = null;
if (Configuration.isSet(WebWorkConstants.WEBWORK_LOCALE)) {
locale = LocalizedTextUtil.localeFromString(Configuration.getString(WebWorkConstants.WEBWORK_LOCALE), request.getLocale());
}
if (encoding != null) {
try {
request.setCharacterEncoding(encoding);
} catch (Exception e) {
LOG.error("Error setting character encoding to '" + encoding + "' - ignoring.", e);
}
}
if (locale != null) {
response.setLocale(locale);
}
if (paramsWorkaroundEnabled) {
request.getParameter("foo"); // simply read any parameter (existing or not) to "prime" the request
}
}
原来猜想是webwork会对参数做一些包装和处理,但是只是直接取得parameterMap:
public Map createContextMap(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping, ServletContext context) {
// request map wrapping the http request objects
Map requestMap = new RequestMap(request);
// parameters map wrapping the http paraneters.
Map params = null;
if (mapping != null) {
params = mapping.getParams();
}
Map requestParams = new HashMap(request.getParameterMap());
if (params != null) {
params.putAll(requestParams);
} else {
params = requestParams;
}
// session map wrapping the http session
Map session = new SessionMap(request);
// application map wrapping the ServletContext
Map application = new ApplicationMap(context);
return createContextMap(requestMap, params, session, application, request, response, context);
}
由此可以猜想Get的乱码并不是webwork的问题,很可能与tomcat有关。再google了一下发现了tomcat5对get和post方法分开处理,并且request.setCharacterEncoding对get方法没有作用,这需要设置server.xml可以从根本上解决QueryString中文乱码的问题了。具体方法是对Connector元素设置URIEncoding或者useBodyEncodingForURI=true。这样代码中的那些丑陋的转编码设置就可以去掉了。
2007年7月5日星期四
2007年6月24日星期日
An experience of Mac os x86
-Intel P4(Ht) 3.0 GHz
-Nvidia Fx 5200
-Realteak 8139
-AC 97, integrated sound card
Jas 10.4.8 is built with a Titian NV40 display card driver, but FX5200 is not belong to the NV40 serials, so when install, the NV40 driven should be excluded. The display card driver should be installed after enter the system. The Titian and Natit auto install package would be found in the http://wiki.osx86project.org/. The network and sound card work perfectly with the Mac OS x86 10.4.8. For the sound card, may be line connecting have to be changed to the line-out(line-in) socket, from the green one to the blue one. I have Fun Input Toy installed instead of the system default Chinese Input Method, it's really good. For the PS/2 keyboard, maybe you have to disable the USB keyboard support in the BIOS setting. And then, I got a real Mac OS!
2007年5月26日星期六
2007年5月8日星期二
新系统新生活
2007年4月28日星期六
tomcat5.0.x的bug?
2007年4月25日星期三
vs-ftp和samba配合使用要注意的问题
有一台机器提供了文件服务器的功能,以前是提供ftp下载,但是后来发现有问题,如果想在线安装个软件啥的,ftp没有windows的文件共享好用,所以就需要装上samba了。默认samba的配置,如果服务器端的中文是UTF-8的编码,那么通过windows访问正确显示中文是不成问题的。但是如果这些中文的文件是通过ftp上传的,那么samba的配置要改一下。下面是相关charset的配置部分解释:
As of Samba-3, Samba can (and will) talk Unicode over the wire. Internally, Samba knows of three kinds of character sets:既然服务器上/home/ftp/pub中的中文文件都是通过ftp从windows上传上去的,那么这些字符它实际上都是GB2312的,所以根据需要设置这三项:
- unix charset
This is the charset used internally by your operating system. The default is
UTF-8, which is fine for most systems and covers all characters in all languages. The default in previous Samba releases was to save filenames in the encoding of the clients for example, CP850 for Western European countries.- display charset
This is the charset Samba uses to print messages on your screen. It should generally be the same as the
unix charset.- dos charset
This is the charset Samba uses when communicating with DOS and Windows 9x/Me clients. It will talk Unicode to all newer clients. The default depends on the charsets you have installed on your system. Run testparm -v | grep "dos charset" to see what the default is on your system.
display charset = gb2312
dos charset = cp936
unix charset = gb2312 #由服务器上文件名的实际编码定
这样的配置在服务器是看不到中文的,但是我这边不在乎,反正没有图形界面,不用看中文,要管理通过ftp走就好了。vs-ftpd如果不打补丁,好像不能解决中文上传的问题,比如由windows机器上传到linux自动转成服务器上的编码啥的,所以这样了。
2007年4月22日星期日
我的毕业设计论文
下载:基于光电原理的五轮测速方法的研究
论文中主要包含下列内容:
- 光电鼠标原理(第二章)
- AVR单片机及其在Linux下的开发(第三章)
- PS/2协议及其AVR单片机上的C语言实现(第四章)
2007年4月19日星期四
BlogSpot终于又能访问了
2007年4月10日星期二
有谁是你?
我知道你一定在的,一定在前方某个路口或者某个站台上等我。我知道你最终会出其不意地走过来,出其不意地和我相识并且相知。
就这样,我很孤独、很快乐地走在这条路上,我的目光总是坚定不移总是向着前方。而且全然不顾荆榛如林、险壑遍地。
我时常检查自己的脚步是否坚定,时常希望跨度大些再大些。我老是想像即将与你相会的日子,老是回味你。我甚至已经感觉到你的存在,感受到你的呼吸。我已经看到你在前面不远的地方正摇曳着一束鲜花,向我频频致意,频频呼唤……所有的阳光铺满这条道路,有一种充满魅力的幸福在牵引着我,与你相随我信心勃勃、步伐坚韧。
就这么走向你,我满是尘土、满是疲惫。
就这么奔向你,我泪流满面、笑容满面。
纵然不知――现在有你是谁?究竟有谁是你?!
2007年4月7日星期六
同步启用MSN Space和Blogger博客
2007年4月3日星期二
2007年3月21日星期三
原谅别人的无知
2007年3月20日星期二
2007年3月11日星期日
我想成为领导
所以说,大学里面我几乎是个边缘人,与所谓的主流完全脱开的人,试验室,教室,工作室,图书馆,运动场,学习锻炼,简简单单。按我的想法,所谓的那些可以锻炼能力的活动,以致于后来上纲上线的课外活动加分是为那些从小心理有问题的,不善于交际的人准备的,有自己想法的人根本不用管那些。想来好笑,那个所谓的大学生素质拓展认证后来造成了一个什么样的状况呢,有些人为了多得分,疯狂的去认证,拿着胸卡到各个社团活动点现一下。以致于,某些学生社团都用素质拓展加分一项来吸引参加的学生。对于我而言,根本想不通,花如此多的时间在与自己无关的Topic之上,为什么不找到自己的追求?科研,兴趣,或者就只是学习而已。而某些人为自己加官晋爵的体制,所谓的仿照清华建立的体制,不是在害人是在干什么?至少,很多学生们为获得素质拓展加分连诚信都放弃!
讲得有点远了,虽然从学校毕业不到一年,但是很多学生时代的事情已经模糊了,我只记得我是我很"愤青",但是没有那么极端,守着自己的清规戒律过日子。"穷则独善其身,达则兼济天下",这是我很多年的座右铭。然而大多数的时间,我守在了前半句上面,最终能"达"吗,再说吧,为天下人而达,想来确实是一件很伟大的事情,所以我愿意为之付出。
记得大概是大三的时候,上计算机控制,张老师有一节课讲到,我们自动化出身的人,如果要当官,那么肯定都是将才。是啊,将才,我现在想成为的人才。当领导,对我最大的吸引力在于,"可以用一个团队的力量来达到一个目标"。一个人,太势单力薄。管人,应该也是一门科学,但是似乎是神乎其神的东西,做决断不能通过波特图来分析,我不知道我能否真正做好,但是就是想,很多很多的原因让我很想。
那天跟小小谈我的疑惑,她说当她那会参加工作的时候,她也想着能做出一番什么大事业,但是大多数人注定了选择平凡甚至是平庸的过这一生,过两年就好了,适应了就好了,国企就是这个样子。但是如果真是那么去适应,我想我也注定了平庸,然而我还年轻,如果这样那么我这一辈子都毁了。
2007年3月4日星期日
A Handsome wife
认识小小是在碧花园培训的最后一个星期,开始熟识的时候,却要分开了,相见恨晚。小小是乘务员,所以比较高,比我只矮一点,大概有170的样子。很爽快的一个女孩子,很“刷拉”,武汉话里面就是很麻利的意思。我打心眼里不喜欢说话做事拖泥带水的人。她还会弹钢琴,10级,这点很让我看不出来,怎么也不会想到such a big girl,会弹钢琴,怎么看也像运动型的 :)。记得那天早晨从客房里面出来去吃早餐的时候,不知道由于什么事情说到了这个,着实让我对走在旁边的这个big big girl 刮目相看。
上次去广州学RT的时候,碰到那边的教员,说起小小,他们介绍说小小叫学生们大叔的事情,原来还真有这事,我忍俊不禁。
2007年3月1日星期四
理解Hibernate SessionFactory.getCurrentSession
CurrentSessionContext impl configured for use* @see com.csair.hunan.pss.web.dao.UserManage#saveUser(com.csair.hunan.pss.web.dao.User)
*/
public boolean saveUser(User user) {
Session session = adapter.getSessionFactory().getCurrentSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.saveOrUpdate(user);
tx.commit();
return true;
} catch (HibernateException he) {
if(tx != null) {
tx.rollback();
}
return false;
} finally {
session.close();
}
}
factory.getCurrentSession().beginTransaction();
// Do some work
factory.getCurrentSession().load(...);
factory.getCurrentSession().persist(...);
factory.getCurrentSession().getTransaction().commit();
}
catch (RuntimeException e) {
factory.getCurrentSession().getTransaction().rollback();
throw e; // or display error message
}
它在每一行代码都用getCurrentSession取得当前的session, 而我的代码中是在最开始取得这个session,现在疑惑的是如果是多线程的程序,那么通过我那样获得的currentSession是否还有效?
2007年2月25日星期日
怀念在碧花园的日子
按计划是明天要开课了,初五就回来开始备课。怎么说呢,毕竟是第一次上讲台,尽管当初培训的时候有Teaching Practice,然而面对真正的学生,而不是我们自己所熟悉的同学们,课程是否会真的那样的顺利:Set Context->Elicit->Target Lanuage->Practice(CP, LCP, FP),并且全英文,西式的教学环境是否真的会被大家接受,我现在仍然有些怀疑。然而,这样的教育理论是比我们传统的教学方式更加合适于语言教学,特别是以听说交流为侧重点的语言学习。
最近好忙,才备了刚够一周讲的内容;而手里的软件项目也压得紧,还有另外的一些琐事占用时间,老觉得时间不够用。今天看了看以前的照片,看到某些时会对着屏幕傻笑;开始怀念在碧花园和同学们一起接受培训的日子,尽管也忙,但是遇到了如此多的朋友们!现在他们是不是也在忙着呢,本职工作+兼职教员。
2007年2月11日星期日
随便转了转,居然中招了
2007年2月10日星期六
对update-grub的理解
但是这个过程/dev/hda的序号号变了。比如以前linux根分区是/dev/hda8, 现在变成了/dev/hda6, 尽管在物理硬盘中是同一块区域没有变。
但是之后却发现安装自己编译的内核包之后,自动配置的menu.lst还是把启动项中的root设为了/dev/hda8,而不是/dev/hda6,要手动改到/dev/hda6才是
正确的,才可以启动。用dpkg-reconfigure效果也一样。由于南方电信的网络访问gentoo源的问题,所以从gentoo转来使用ubuntu,对debian(ubuntu)
的这种自动配置的机制不了解,有什么办法能让自动设置正确吗?是否这个reconfigure有个模板一样的东西存在,在第一次安装好系统之后,这个东西就定
了?上午google了很久找不到,下午继续研究这一问题,得到了答案。
原来之前想错了方向,原来总想可能deb包中有一个脚本会根据某个设置的情况来做此设置,但是实际的情况是这个postinst调用的就是update-grub,
#/etc/kernel-img.conf
do_symlinks = yes
relative_links = yes
do_bootloader = no
do_bootfloppy = no
do_initrd = yes
link_in_boot = no
postinst_hook = /sbin/update-grub #调用update-grub
postrm_hook = /sbin/update-grub
也就是说直接运行update-grub就可以自动的更新menu.lst设置。
而update-grub是根据什么来自动生成menu.lst呢?
答案很简单,但是容易让人忽略,实际上就是/boot/menu.lst,当menu.lst文件不存在时,update-grub将会生成一个新的menu.lst,但是可能不正确。
有则直接根据之前的menu.lst模板生成新的实际的menu.lst,老的进行备份。
所以要解决我提出来的情况,就是修改menu.lst模板就可以了,然后重新运行update-grub即可。修改menu.lst如下:
59 ## default kernel options
60 ## default kernel options for automagic boot options
61 ## If you want special options for specific kernels use kopt_x_y_z
62 ## where x.y.z is kernel version. Minor versions can be omitted.
63 ## e.g. kopt=root=/dev/hda1 ro
64 ## kopt_2_6_8=root=/dev/hdc1 ro
65 ## kopt_2_6_8_2_686=root=/dev/hdc2 ro
66 # kopt=root=UUID=a764e67f-e242-4d6e-b874-3f5ffcf30bfc ro
67 # kopt_2_6=root=/dev/hda6 ro
68
69 ## default grub root device
70 ## e.g. groot=(hd0,0)
71 # groot=(hd0,5)
改变以单个#的行中间的值即可,比如我改为了 kopt_2_6=root=/dev/hda6, groot=(hd0,5)
引申开去,如果要给内核加其他的启动选项,也可以加到这个模板当中,那么下次安装内核时,那些选项就不会被去掉了,比如vga=792等等内核参数。具体
的,请建menu.lst中间的注释
2007年2月7日星期三
Ubuntu终于认出两个CPU了
两条命令就可以完成内核的编译:
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image
kernel_headers
之后完成内核的安装,用dpkg -i。
最后一个问题是nvidia的驱动,我安装好内核之后只能用xorg的nv驱动,效果不让人满意。不过能够用P4 CPU和SMP的选项编译成功,并且得到/proc/cpuinfo中有两个CPU的信息已经让我狂喜了。我一直担心这个问题。然而,看到一篇文章上直接用从nvidia网站上下来的驱动安装的方法,让我从执着于怎么从ubuntu的代码库中搞出能用的nvidia驱动的想法解脱了出来,我原来甚至想再编译一个和6.10默认内核版本相同的内核出来,以使用它的restricted-modules。说实话,从nvidia官方网站上下驱动来直接安装我之前都不知道!被gentoo宠坏了:).不过这个方法确实很简单,并且奏效。
至此,所有问题解决:Ubuntu 6.10用支持P4 smp的内核,用nvidia驱动,再没有
键盘鼠标不响应的情况了。
2007年1月28日星期日
Blogger的Mail-To-Blog测试
2007年1月27日星期六
在寂寞中追求完美
心理分析大师佛洛姆在他的畅销作“爱的艺术”中曾经申言,衡量一个人是否有爱的能力,端看他是否能够孤独自处而定。换句话说,能够抛开寂寞,安于孤独一人的处境,则反映了内在性格的健全和独立自主,这样的人才有能力去爱人,去和另一个个体分享生命中的悲欢和喜悦。
确实我们看到一般人的认定的爱的能力,指的都是如何吸引对方的魅力,和如何感动对方的耐力。然而吸引、感动后相处在一起,原初的新鲜感、魅力、耐力渐次消失,引领两个人去寻寻觅觅,相互探求的寂寞又冒了出来,于是爱的失落、爱的背叛。和相互的怨怒争执就浮现了。根植于消解寂寞、抚慰孤独的爱情,看似炽热红艳,但是如火柴棒的光焰,就如此灰飞烟灭,消逝无踪。
修为,我喜欢用这个词来鼓励自己,在生活和工作上追求完美被我称之为“修行”,所以我选择了现在这样的生活,也许经历过,也明白了一些事情,所以自己觉得也平常。
寻寻觅觅到这里
之前也知道blogger,然而那时在国内访问不了,也许后来被google收购之后,google摆平了一些障碍,现在是终于能够访问了。很喜欢Google,更喜欢它的don't be evil的哲学。说到用户体验,我想google始终是走在前面的,而且现在凭google的实力,应该可以信赖,而不用担心自己发布的东西某一天都付诸东流了。好了,准备跟在这安家了。


