博文
求一个数的质因数分解式(2007-08-22 23:14:00)
摘要:
朱金灿
一个数的质因数分解式就是把一个数分为一个个质数因子,比如60,它的质因数分解式就是2 2 3 5 ,首先这几个数都是质数,其次它们相乘为60。看《算法设计与分析基础》,见到书上提到数的质因数分解式,便编了一个小程序实现求一个数的质因数分解式。算法思路是这样的:
1. 首先判断该数是否为质数,如果不是就进行分解,如果是就输出;
2. 分解步骤是这样的:使用循环从被分解数的平方根中开始相除,一旦相除余数为0,就分别对余数和商进行类似分解,退出循环。
很显然,这个算法要使用递归。
代码如下:
#include <iostream>
using namespace std;
#include <math.h>
#include <conio.h>
// 判断一个数是否是素数
bool IsPrimeNum(int number)
{
bool bIsPrimeNum = true;
for (int i = int(sqrt((double)number));i>1;i--)
{
if((number%i)==0)
......
UCanImg工程正式开工!(2007-08-19 15:10:00)
摘要: 朱金灿
我终于觉得必须给自己一点压力,或者给一个挑战自己潜力的机会,于是决定自己做一个遥感图像处理系统,初步命名为UCanImg,意义是you can make a image progessing system(你可以制造一个遥感图像处理系统)。
目的:
熟悉数字图像处理的各种算法,为高校的数字图像处理课程提供一种参考(在适当的时候会开源,至于采用哪种开源协议现在还未想好),保留成为商业软件的权利。
现在能想到的这个图像处理系统的功能是:
1.对通用图像格式的读取和浏览;
2.对各大图像处理系统(如ERDAS IMAGINE、PCI和ENVI )的文件格式的读取和浏览
3.常用图像处理
4.高光谱方面的处理
5.不打算提供一种宏语言进行二次开发,但会提供接口供主流开发语言进行二次开发
6.主要的模块划分参考成熟的图像处理系统。
7.争取做到跨平台,如把系统移植到Ubuntu Linux和Debian Linux等等。
依靠力量:
1. 成熟开源代码,如GDAL库和Cximage,……
2. 图书:《VC++实践与提高——数字图像处理与工程应用篇》、《数字图像处理》(冈萨雷斯著)……
3. 论坛:CSDN,www.image2003.com,研学论坛,......
4. 朋友:......
开发工具:
VC++6.0,开发平台是:Windows XP sp2。以后或许要开发一个java版本的。
开发计......
Windows是现实主义,Linux是理想主义(2007-08-18 11:54:00)
摘要: 朱金灿
偶然在希赛社区看到一篇文章《Linux永远不可能战胜Windows的三个理由》(http://bbs.csai.cn/bbs/view.asp?id=%7B22459827-BB07-48ED-9E07-F1555BAEA17D%7D),我感到自己有些话要说。打一个不恰当的比喻:Windows是现实主义,Linux是理想主义。现实主义和理想主义虽存在矛盾,但都是人类社会发展的两大动力。借用居里夫人的一句名言:人类的确需要注重自己实际利益的人,他们努力工作,谋取自身的利益,而且与人类普遍利益不相违背;但是,人类也不可缺少具有理想主义的人,他们追求大公无私的崇高境界,毫无自私自利之心,无暇顾及本身的物质利益。” 而linux正是一种自由创造的产物,与金钱无关。据国外媒体报道,Linux之父李纳斯·托沃兹(Linus Torvalds)近日表示,当初并没想到Linux会达到今天这样的普及程度。托沃兹说,当初公开Linux源代码,既不是为了金钱,也不是为了名利,只是为了娱乐而已。当然,公开源代码本身并没有什么乐趣,真正感到有趣的是得到回馈和评论。如果把比尔.盖茨看作是人间软件帝国的国王,那么李纳斯·托沃兹则像我们武侠小说的武林高手,神秘,幽居,内功深厚。我总在想linux的存在对于普通消费者的意义在哪里?最大的意义在于它打断了微软在操作系统领域的垄断。至于垄断的危害,我就不多说了。因此我不愿意看到的是Windows打跨了Linux或者Linux打垮了Windows。我希望看到的是二者共存,通过竞争为人类创造更好的技术体验。......
生病后收到的搞笑短信(2007-08-15 21:14:00)
摘要: 朱金灿
前天,偶染小恙,于是请假回宿舍休息,生病了顿觉百无聊赖,于是给众多老同学和朋友发短信:灿哥生病了,请大家发短信慰问一下,特别欢迎搞笑的短信。大家还真给面子,纷纷发来短信。特摘抄一些如下:
(一)
老夫妇去拍照,摄影师问:“大爷,你是要侧光,逆光,还是全光?”大爷腼腆地说:“我是无所谓,能不能给你大妈留条裤衩?”
(二)
唐僧师徒四人正在赶路,妖魔从天而降,抓起八戒就跑,八戒大奇:“白白胖胖的才是唐僧啊?”,妖怪回道:“如今猪肉价格暴涨,三年不知肉味了,吃顿猪肉才是正经啊!”
......
我们教材的缺陷(2007-08-10 00:14:00)
摘要:
朱金灿
最近准备做一个高光谱找矿系统。做这个系统主要用到遥感图像处理方面的知识。现在想来大学学到的遥感知识纯粹是扯淡。现在我在实际工作中碰到的遥感很形象,很有用,但是想想我们在大学里选修的那门遥感课:使用的是浙大的教材,里面介绍一堆枯燥的理论和难懂的数学公式。当时我看到一个书上一个数学名词:卷积,但是我很郁闷,因为我老是弄不清卷积是什么东东。虽然我当时选修了这门课,但是还是毫不犹豫地经常逃课,因为我实在受不了这门课的枯燥无味了。当时我就下定决心:以后再也不想碰遥感了。到了公司还是冤家路窄地和要遥感打上交道:从事遥感图像处理,但也因此重新认识了遥感(虽然也不敢说就完全认识了遥感了,但是至少觉得它是有用的,可理解的,形象的)。遥感,顾名思义是说遥远地感知。一颗卫星围着地球转,拍摄地球,将地球信息以图像方式传回地球,所传回的图像就叫遥感图像。为什么要进行遥感图像处理?因为图像传回地球的过程中因为种种原因会发生畸变,图像变得模糊,为方便人们浏览,就必须先进行图像处理。那么遥感有什么用呢?说实话在写这些话我没有看过遥感方面的科普书,但是我们依然能够想象遥感方面的应用。遥感从本质上说是为人类提供信息。比如在农业,大面积的稻田受到蝗虫灾害,但是你怎么知道受灾面积和受灾程度?照传统的调查方法,必然要耗费大量的人力物力,而且调查结果也不一定准确全面,有了遥感,一切都变得简单了,因为受蝗灾的植物和健康的植物所呈现的波谱特征是不一样的,因此只要让遥感这位伟大的摄影师给受灾区域拍上几张相片,一切就变得一目了然;又比如森林防火,一大片森林着火了,但是一时之间你如何判断着火面积和火灾蔓延趋势,利用遥感技术帮森林拍几张照片就知道了;又比如国防,你怎么侦察敌国的军事要地,过去派侦察机,但往往被别人打下来,还被别人谴责一通,说你侵犯他国领空。有了遥感,情况就不一样了,我想拍什么就拍什么,想拍什么就拍什么,而且无了侵犯他人领空之说……总之遥感是很有用的。说了......
(转载)毛泽东的精神遗产(2007-08-09 21:19:00)
摘要:
他是一个真正的男子汉,他从未被任何困难所压倒,更不会像有人那样在困难和危机中被吓晕了菜。
毛主席是男子汉,这不仅为他的同志们所公认,也为形形色色、国内国外的敌手所公认。
他是古今中外罕见的战略家。他从不被浮云遮住望眼 ,他从不贪图小利,他从未有过“数小钱”的习惯。他是一个伟大的战略家,终其一生,在任何错综复杂的形势下,他从来都能抓住对手、敌手的鼻子,而到目前为止,我还没有发现他被对手、敌手牵住鼻子走的情况──这才是真正的战略家。
他亲手发动了文革。也只有毛泽东这样的英雄才敢于向这个千年顽症发起了勇敢的冲锋──悲剧式的冲锋。希望今天的我们的智慧,能在文革的悲剧中汲取教训,至少部分地解决这种问题,而不是借否定文革否定或回避问题,这个问题本身就是悲剧,只有毛泽东敢于正视它。但这样的伟人也不能超越历史 ──超越历史就是悲剧。
毛泽东精神永放光芒!毛泽东思想固然伟大,但如同一切思想一样,他会随时代发展而过时, 但毛泽东精神永远不会过时,时代愈发展,我们愈加需要毛泽东精神。
毛泽东的精神就是一个人,一个民族要活得顶天立地,他一扫千余年来吾民族文弱不武的积习,他一扫百余年来自卑奴性的固疾,他不为任何敌人所吓倒,倒是吓倒了一个又一个的敌人。毛泽东的精神给了吾民族以灵魂,毛泽东的精神就是我们民族的精神,我们要呵护这种天行健,自强不息的灵魂,我们就是继承光大民族复兴的精神。一个人不能没有灵魂── 没有灵魂那是行尸走肉,一个民族更不能没有灵魂─ ─没有灵魂就成了任人宰杀的一盘散沙。一个民族,不管经济多发达,而没有了灵魂,那就是沙滩上的大厦,决不可能实现真正的强大。
对利用Session纪录datagrid模板列中CheckBox的状态的一点改进(2007-08-06 20:33:00)
摘要:朱金灿
前言:最近使用asp.net做开发,有了一些心得,特写出来,望能起一个抛砖引玉的作用。
在DataGrid 的模板列中加入CheckBox ,如果对DataGrid设置分页,前一页已经选中的CheckBox在回到原页时,CheckBox的状态会变为初始状态。
如果想保存checkbox的状态,则可以用Session保存。我从网上下载了一篇文章是这样做的:
1、首先,建立DataGrid.
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 12px; POSITION: absolute; TOP: 88px" runat="server" AllowPaging="True" Width="416px" Height="248px">
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<ItemStyle Font-Size="12px" Font-Names="宋体"></ItemStyle>
<HeaderStyle Font-Size="......
暑假到哪里上自习?——略论大学的社会服务使命(2007-08-04 23:05:00)
摘要: 朱金灿
首先声明我不是北科的学生,我也不是在校学生。我已经大学毕业工作一年多了。
周六(7月28日)下午,我背起书包想到北京科技大学的教室去看书。因为在宿舍看书总是免不了受诸如电脑的诱惑。我喜欢在大学教室看书那种氛围,因为那种环境让人做事格外专注。
但是来到北科我失望了。我发现诺大一个北科找不到一个可以看书的教室。问了一位同学。她叫我去经管楼。于是我去经管楼。经管楼里面的教室修得曲径通幽,我找了很多个也是铁将军把门。无奈之下我只得失望而去。晚上在北科饭堂吃饭,和一位北科学生聊起,发现原来那位同学叫我去经管楼是以为我想去上网,至于去教室看书,因为现在是暑假,教室基本上都关了。我顿时晕了,如果是上网,我在宿舍就可以了,何苦要到北科。
应该说在假期期间大学封闭教室这个现象并不是北科独有的。当然这样做也有它冠冕堂皇的理由,这个我就不说了。但是它究竟合理还是不合理呢?我发挥自己丰富的想象力想到一个严肃的命题:大学教室在假期不对外开放是有违大学使命。大学的使命是什么呢?大学的一个重要使命是为社会服务。为社会服务难道是一句空话吗?如果不是它就应该具体的实现形式。大学的为社会服务的一个重要体现就是为当地社区服务,在假期开放教室就是一个重要形式,当然还有其它形式(诸如开放体育场地,举办知识讲座之类的)。而且这样在法理上也是完全说得通的,因为公立大学是使用全体纳税人的钱建起的,因此它的享用权并不仅限于在校学生,若是在平时,使用教室还有影响教学秩序之嫌,但是放假了这个就完全谈不上了。倒是那个冠冕堂皇的理由倒是有违法理,因为理由成立的前提是假定进入教室的人里面有破坏分子,这个倒有先入为主的有罪推定的味道。讲完道理我再说说国外大学的做法。一下摘自薛涌先生的《草根才是主流》的一段文字:
美国是一个以社区为本的社会。无论是个人还是机构,对自己的社区都负有某种 责任。私立大学虽然不靠纳税人的钱,却是免税的非赢利机构......
(转载)六种方法,做一名更好的开发者(2007-07-27 23:47:00)
摘要:【CSDN 编译】本文原作者结合自身经历,总结以下六种方法,可以帮助我们成为一名更好的开发者。
1. 交谈
尽可能多地跟其他软件开发者交谈;培养个人关系;跟意见与你相左的人交流;跟经验更丰富的人交流;跟阅历丰富的人交流。多到Groups 中去,尤其是交谈自由随意的Groups——不约束主题,不约束交谈内容。
2. 选择更好的环境
我遇到好多开发者,在我看来他们有成为优秀开发者的所有优点,只是他们没有机会在好的环境中工作。这里所说的好的环境,是指周围有一帮愿意且能够分享他们知识的开发者。如果你是“菜鸟级”开发者,你的成长路线将因他们而大为缩短;如果你是“高级”开发者,你的能力也会因为同伴的刺激和挑战而提高。
我之前就是在一个非常糟糕的小店打工,钱挣得不少,却是无法提升能力的地方。后来我冒险般地决定去了一家咨询公司,在那里我遇到了很多优秀的开发者。虽然这次换工作给我的家庭和个人来说并没有多大好处,但它给我的职业生涯带来了巨大的发展动力。
3. 参与开源
也许你的工作会枯燥,甚至不合你的兴趣,你也从未从你的开发中得到乐趣。那么,你该参与一个开源项目了。
你可以选择你感兴趣的项目和技术,选择能促使你提高开发技能、让你尝试全新开发思路的项目,而且更为可贵的是,很多都是免费的。搞不好,还能赚点外快呢。
4. 写博客
我曾不止一次地告诉我的妻子,我职业道路上一直在做的唯一一件明智的事情就是写博客。写博客,尤其是观点争论性质的博客,会帮助你整理最近一段时间的思考,没有什么比自己表达自己更引发思考的了,尤其是当有成百上千人读你博客的时候。
5. 多浏览
博客圈中有丰富的资源,自由而免费。除了自己写,多浏览甚至留言跟他们争论都是提高自己很好的方法。
6. 扩大阅读面
保持RSS订阅的平衡性。以前我订阅的技术类几乎全是敏捷开发的,但是......
MFC滑块控件的一个设计缺陷(2007-05-19 15:26:00)
摘要:朱金灿
首先声明这里的MFC版本对应的VC版本是VC6.0。
前一段时间写一个程序,其中涉及到在工具栏上创建一个滑块控件(功能大致是通过拖动滑块控件拖动客户区的一幅bmp图像)。从中我认识到MFC滑块控件的一个设计缺陷:它并没有足够的消息宏来处理它的一些动作。使用过滑块控件的朋友都有这样的经验:当用户拖动滑块时,滑动条控制将向其父窗口发送WM_HSCROLL消息,所以这个消息处理函数是在应用程序中重栽父窗口的OnHScroll()函数。在基于对话框的程序估计体会不到它的设计失误,因为一般来说对话框是滑块控件的父窗口嘛,直接重载OnHScroll()函数得了。但是当你在基于单文档或多文档的程序的工具栏上创建一个滑块控件和其它类(如视图类)进行交互时,你就会发现滑块控件的设计缺陷——把滑块控件的滑动消息交给父窗口进行处理是不明智的,因为它会限制滑块控件和其它类的交互。因为滑块控件的父窗口是某一工具栏,因为必须在该工具栏上重载OnHScroll()函数。这样滑块控件和视图的交流代码就放在这里了。这意味着滑块控件在滑动时和视图的交互必须通过它的父窗口。如果工具栏类和视图类是在同一个工程里,似乎也没什么。要命的是我碰到了这样一种情况:工具栏类是早已在另一个工程封装好了,是一个底层基类,不能派生,而且只能加载这种工具栏对象,框架加载不了自己新建的工具栏类对象。当然公司的这个工具栏基类不能派生就不是一种好的设计。但是不管怎么说,滑块控件和其它类交互必须通过它的父窗口本身就不是一种好的设计。
实际上滑块控件是有自己的消息处理的,如NM_RELEASEDCAPTURE消息。测试程序:
1. 打开MainFrm.cpp 添加创建代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
......
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableD......