2010年12月31日bye, 2010
2010,望着你,我无言以对。
午夜到了,发现一天即将过去,想抓住它,便每天熬夜;
周末到了,发现一周即将过去,想抓住它,便周六加班;
现在,一年即将过去,却没有一点点时间可以挽留。
有太多该做的事情没有做,有太多的想法没有时间实践,是时间溜走的太快还是我太贪婪?
2010,既然要走,请把一年的苦痛、孤独和迷茫带走,把一年欢乐、幸福和成就的回忆留下。
再见,2010~
2010,望着你,我无言以对。
午夜到了,发现一天即将过去,想抓住它,便每天熬夜;
周末到了,发现一周即将过去,想抓住它,便周六加班;
现在,一年即将过去,却没有一点点时间可以挽留。
有太多该做的事情没有做,有太多的想法没有时间实践,是时间溜走的太快还是我太贪婪?
2010,既然要走,请把一年的苦痛、孤独和迷茫带走,把一年欢乐、幸福和成就的回忆留下。
再见,2010~
2010年悄悄地来了,在我写代码时。我很想跟他打声招呼,结果错过了,因为我还在忙着完成2009的计划。
三天假期也算小有收获,重写了wml2html和mmsdecode,都是纯托管实现(C#),稍后作为彩信阅览器小工具程序提供给大家使用。
虽然晚了些,还是问候大家:元旦快乐!
文章来源:人民网(http://it.people.com.cn/GB/42891/42893/6515267.html)
美国圣迭戈托马斯·杰斐逊法学院的施瓦巴赫教授近日撰写报告指出,中国不是世界上盗版最猖獗的国家。按人均数来算,很多国家的盗版问题比中国更严重。
据美国麦克拉奇报业集团网站报道,施瓦巴赫在这份长达24页的报告中说,美国的媒体和政客都倾向于谴责中国。
他对照了美国电影协会提供的国际电影盗版数据,然后和这些国家的人口数量进行比较研究得出结论,美国的电影盗版问题比中国更严重,原因可能是美国人使用宽带上网更方便。此外,法国、西班牙和英国的盗版问题也比中国严重。
施瓦巴赫说,如何计算盗版造成的损失是个问题。他说:“国际唱片工业联合会提供的数据可能夸大了盗版的实际损失。”他说,就连墨西哥的CD盗版问题都比中国严重。
施瓦巴赫认为,其实一些西方国家的盗版现象才是最严重的,但没有引起媒体的注意,“可能是因为一切都在网上进行,没有那么引人注意”。
语录阅览器发布居然一年多了!我曾决定很认真地维护这个程序,不断扩充其功能,但世事难料,工作、生活压力使我一直没有时间来维护这个软件。
自认为语录阅览器设计初衷很好,是个很实用的程序,很多朋友曾留言告知我程序BUG和一些建议。当有一天我不再维护它,程序就面临“死亡”;但如果是开放源码,可能会有其他程序员“收留”它。开源应该是该程序的最佳出路。
我把去年的源代码放在google code上,并尽量花些时间更新它,主要目标在于:
1. 修正已知BUG;
2. 增加语录本地存储功能(你可以把一些不方便公开的看法记录在本地);
3. 设计更灵活的操作,去掉没用的按钮(如收藏等);
4. 其他
项目地址:http://anaviewer.googlecode.com/
程序第一次发布时的文章:http://chuangen.name/archives/2008/09/09/anaviewer_1_0_alpha.html
C#总是有些讨人喜欢的写法,即简洁又不会引起混乱。??运算符就是这样。为了确保赋值不为空,我们通常这样写:
1: string name = null;
2: string str = (name == null) ? "" : name;
有了??运算符,我们就有了更简洁的写法:
1: string name = null;
2: string str = name ?? "";
是不是很清爽?我用了好几年了,却是头一回看到,真是相见恨晚。
……Don’t ever let somebody tell you, you can’t do something-别让别人跟你说,你成不了大器; You got a dream,you have to pretend it-你有梦想的话,就必须保护它;People can’t do something themselves, they wana tell you can’t do it-那些自己没有成才的人会说你也不能成才;You want something,go get it-你想要什么的话,就得努力去得到。……
本文转自:新华网(http://news.xinhuanet.com/edu/2008-03/04/content_7713848.htm)
当幸福来敲门
片名:The Pursuit of Happyness
导演:加布里尔·穆西诺
主演:杰登·史密斯、珊迪·纽顿、威尔·史密斯
类型:剧情
发行:索尼哥伦比亚
电影简介:
1981年。旧金山。
克里斯·加德纳是个聪明的医疗器械推销员,
但在次经济萧条时期,他的日子很不好过。虽然每天奔波于各家医院和诊所,但医生们对他的骨密度扫描仪根本不感兴趣,因为这台仪器要比X光扫描仪贵出两倍。
他的妻子琳达无法继续忍受艰难的生活,撇下他和5岁的儿子克里斯托弗出走。但加德纳父子两人的背运还没有结束,他们因为缴不起房租而被房东扫地出门,有时甚至要在地铁的卫生间里过夜。
克里斯决心转行为有机会获得高收入的证券经纪人,他的努力和智慧打动了证券公司的经理杰·特维斯图,通过了初试。而在复试中,因为出师不利,克里斯不得不穿着粉刷工的衣服来到面试现场。但只念过高中的他决心极大,最终,公司的几位合伙人还是觉得给他一个机会比较好,于是,他成为20个实习生之一。
此后的半年实习期加德纳父子的生活将更加艰难,因为实习期没有工资,而20个实习生中只有一个能留下来。他们暂时还得依靠那几台骨密度扫描仪过活……
"上阵父子兵"用来形容这部电影非常适合。
小克里斯托弗的扮演者,现年八岁的杰登·史密斯,是威尔·史密斯的孩子。所以他很好地继承了威尔·史密斯天生的幽默与聪明才智。小杰登在此前华纳兄弟推出的热门剧集《我们这帮人》中已经成功塑造了一个人见人爱的小顽童瑞吉的形象。因此对于在本片中扮演一个聪慧可爱的五岁孩子,杰登堪称是轻车熟路。
在好莱坞流传着这样一句话"千万别和小孩子在一起拍戏!"因为那些活跃于好莱坞的小孩儿经常会轻易夺取明星们的星光。而第一次与儿子大演对手戏的威尔·史密斯就吃足了苦头。因为小杰登入戏非常快,且极度投入,而威尔·史密斯则因为"和儿子演戏很不适应"屡屡遭遇尴尬。不过还好,在导演加布里尔·穆西诺的"协调"下,父子俩亲密配合,很多桥段都是一气呵成。从专业角度看,史密斯父子俩在影片中的配合堪称是达到了戏里戏外合一的理想化。因此,观众可以看到很多父子俩激情感人、催人泪下的一幕。
电影《当幸福来敲门》是部励志片。而励志题材的故事大抵都离不开这样的模式-比如窘迫的处境、艰难的奋斗、没完没了的倒霉事……,然后便会出现戏剧化的一丝机遇……
虽然《当幸福来敲门》也不能落入俗套,也虽然这部电影没有靓丽的男女主演,没有唯美的画面与动人的背景音乐,但却仍不乏拥有一个好故事,并且,是一个足以将人打动的好故事。
每个人在心中都有自己的幸福标准,只要达到了这个标准,你就是幸福的。别人的幸福不一定是你所想要的,而你的幸福别人或许也未必认同。幸福是一件私有产品,只有自己才能体会那片刻的快乐。如果非要给幸福下个定论。我觉得无非有两种:一是你拥有完美的生活;一是做你最喜欢的事情。
克里斯·加德纳拥有的显然是后一种幸福。单亲家庭长大的他,在28岁的时候才见到自己的亲生父亲,于是他想让自己的儿子一直都活在自己的保护下。他的梦想是成为一名投资专家。可是生活的困苦,却让他的妻子离开了他。接着,没有房租的他开始带着儿子过着流浪的生活。一方面他不得不提着40多磅重的医疗仪器四处奔走推销用以糊口;一方面他要保护好只有5岁儿子的幼小心灵。他因交不上房租,而不得不义务粉墙;他因没钱交汽车罚单,而不得不在警察局里过夜;他因无处可去,而不得不抱着儿子在厕所过夜;他甚至不得不在下班后狂奔,那只为排队获得进收容所的机会……。太多太多的"不得不", 最终让克里斯·加德纳在获得工作机会的那一刻感到了莫大的幸福。
他终于成为了一名正式的经济师,这离他的梦想更近了。在那一刻,站在人群中的他激动得不知道如何来表达内心的感受,他飞快地跑到儿子面前和他相拥,眼中的泪花在这一刻则是幸福的泪水。虽然,这对他来说只是一个起步,不过,这确是他的人生转折。得到幸福的过程是如此的艰难,也正因为艰难,我们才会珍惜。他在球场上对儿子说:"如果你有梦想,那么请保护好它。"在那一刻,他都未必能坚持住自己的梦想,但是他却鼓励儿子能够坚信梦想。
幸福到底是什么?人的一生能体验到多少份量的幸福,其实关键在于你对人生所持的态度。你认为尽责任是一种幸福,你就有了幸福的体验;你认为知足是一种幸福,你就有了知足常乐的幸福体验;你认为平淡简朴是一种幸福,你就有了比别人多得多的幸福体验。
最后我们以片中原话结尾:Don’t ever let somebody tell you, you can’t do something-别让别人跟你说,你成不了大器; You got a dream,you have to pretend it-你有梦想的话,就必须保护它;People can’t do something themselves, they wana tell you can’t do it-那些自己没有成才的人会说你也不能成才;You want something,go get it-你想要什么的话,就得努力去得到。
今天是个很享受的日子,9.9.9这样一串数字使之更显特殊。细数一下今天开心的事吧
>母亲身体好起来了,整个家都轻松了;
>早上早早地上班,没有红灯和堵车;
>在公交车上看了by2的《don’t go away》MTV,很好听and很好看;
>晚上发现兴宁桥夜景很美,盘算着这几天就抽时间认真去玩一下;
>签了一张“契约”,也算是不坏的事情吧;
>做了一个iPhone风格的程序界面,陶醉其中。
有家庭的快乐,也有工作的满足,还有很美的景色和动听的音乐,人生还缺少什么呢?!
隐隐约约间,面前出现你的形象,心顿时失去平静。
总是忆起你,是因为爱恋还是孤寂,或是仅仅因为这首歌?
我试着擦去一切痕迹,远眺远方,开始新的路程。
这一次,我能否将你忘怀?
[ti:this time]
[ar:jonathan rhys meyers]
[al:august rush]
Tonight the sky above
今晚在上面的天空
Reminds me of you, love
使我记起你,(我的)爱
Walking through wintertime
冬天已不再来
Where the stars all shine
满天星光依旧
The angel on the stairs
台阶上的天使
Will tell you I was there
会告诉你我还在那里等待
Under the front porch light
在廊前的灯光下
Ona mystery night
在神秘的夜色中
I’ve been sitting watching life pass from the sidelines
我痴坐在那,看岁月走来又走去
Been waiting for a dream to seep in through my blinds
等待一个美梦渗透我的阴霾
I wondered what might happen if I left this all behind
抛下眷恋会怎样?我一直不停猜
Would the wind be at my back?
这一次,我能否离开?
Could I get you off my mind
这一次,我能否将你忘怀?
This time
The neon lights in bars
在酒吧中的霓虹
And headlights from the cars
来自汽车的前灯
Have started a symphony
已经开始一首交响乐
It’s around me
它包围着我
The things I left behind
我放下一切
Have melted in my mind
融铸在我心中
And now there’s a purity
现在这里很纯净
Inside of me
我的身体里
I’ve been sitting watching life pass from the sidelines
我痴坐在那,看岁月走来又走去
Been waiting for a dream to seep in through my blinds
等待一个美梦渗透我的阴霾
I wondered what might happen if I left this all behind
抛下眷恋会怎样?我一直不停猜
Would the wind be at my back?
这一次,我能否离开?
Could I get you off my mind
这一次,我能否将你忘怀?
This time
一个惊喜——使用分部类定义很久了,但刚刚发现:编译时将从所有分部类型定义中对“接口”进行合并,而不仅仅是类属性、成员和XML注释!
好吧,这的确不是什么新发现,但是,当我对修改类型化数据集一筹莫展时,而恍然发现可以在分部类中实现一个接口!请理解我的心情!
情况是这样的:为了支持多种数据源,我先定义一个接口IRecordRow,然后通过可视化方式添加一个类型化数据集,数据集中包含 Records 表,当然,会自动生成 RecordsDataTable 和 RecordsRow 类,RecordsRow 在 *DataSet.Designer.cs 文件中声明如下:
public partial class RecordsRow : global::System.Data.DataRow
那么,我们怎样让 RecordsRow 实现接口 IRecordRow 呢?在 *DataSet.Designer.cs 中修改是肯定不行的。使用分部类就可以这样做:新建一个文件如*DataSet.User.cs,编写代码:
partial class *DataSet { partial class RecordsRow : IRecordRow {...} }
这样就可以了,编译时,系统会把这两个声明合并为:
partial class *DataSet { partial class RecordsRow : global::System.Data.DataRow, IRecordRow {...} }
哇,如此完美!正如MSDN中描述的那样:当使用大项目或自动生成的代码时,将类、结构或接口类型拆分到多个文件中很有用。
用 iTextSharp (开源的.NET类库) 生成 PDF 文档是件很轻松的事情。iTextSharp 是 iText 的C#版本,文档可以参阅 Java 版本的 iText 文档。苟安廷撰写的《用C#制作PDF文件全攻略》写的很实用,特别是关于中文支持部分,推荐大家阅览。
数字图书复印机要生成的 PDF 文档很简单:将一组图片添加到PDF文档中,每张图片作为一个页面。相关的源代码在 /EbookCopier/Pdf 目录下。
需要注意的是,PDF 文档生成过程是件很耗时的操作,当你的图片很多时,可能需要几分钟的时间,因此我们把它到后台线程工作。使用 BackgroundWorker 可以很方便地报告进度和状态。我们先初始化一个 BackgroundWorker 实例:
bw = new BackgroundWorker(); bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
将 PDF 操作放在 DoWork 中:
void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bw = sender as BackgroundWorker; object[] args = e.Argument as object[]; if (args == null || args.Length < 3) return; string filename = args[0] as string; PdfSettings settings = args[1] as PdfSettings; IList<string> imagefiles = args[2] as IList<string>; CreatePdf(bw, e, filename, settings, imagefiles); }
同时在 PdfProcessForm 窗体界面报告进度,如下图所示。(实现代码在 /EbookCopier/Pdf/PdfProcessForm.cs 中)
使用这些信息创建 PDF 文档,如下:
// step 1: creation of a document-object Document document = new Document(); // step 2: // we create a writer that listens to the document // and directs a PDF-stream to a file PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create)); // step 3: we open the document document.Open();document.AddTitle(settings.Title); document.AddAuthor(settings.Author); document.AddSubject(settings.Subject); document.AddKeywords(settings.Keywords); document.AddCreator("数字图书复印机(EbookCopier)"); if (settings.Header != null && settings.Header.Trim() != "") {//添加页眉 document.Header = ParseHeaderFooter(settings.Header); } if (settings.Footer != null && settings.Footer.Trim() != "") { document.Footer = ParseHeaderFooter(settings.Footer); } document.SetMargins(settings.LeftMargin, settings.RightMargin, settings.TopMargin, settings.BottomMargin);
页眉和页脚可能包含中文字符,所以我们设置页面和页脚的字体为宋体以正确显示中文:
//宋体 BaseFont bfSun0 = BaseFont.CreateFont(Path.Combine(fontsPath, "SIMSUN.TTC,0"), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); font = new Font(bfSun0, 12, Font.BOLD);
接下来添加图片,并将每张图片铺满一个页面:
System.Drawing.Image iamge = System.Drawing.Image.FromFile(file); Image pdfImage = Image.GetInstance(iamge, System.Drawing.Imaging.ImageFormat.Png); pdfImage.Alignment = Image.MIDDLE_ALIGN; pdfImage.ScaleToFit(document.Right - document.Left - document.LeftMargin - document.RightMargin, document.Top - document.Bottom - document.TopMargin - document.Bottom); document.Add(pdfImage);
添加完毕,关闭文档:
document.Close();
到此为止,我们就得到了想要的 PDF 文档。
数字图书复印机(EbookCopier) 遵循 GPLv3 协议开源,如果你有更多的创意,欢迎请加入我们。
项目地址:http://code.google.com/p/ebookcopier/
源代码和可执行程序下载:http://code.google.com/p/ebookcopier/downloads/list