Author: qingbo

  • 快回家了

    忙得连写blog的时间都没了,呵呵,回家可以放松一下。家里和北京完全是两个世界,没什么压力。

    准备坐个D车回去,虽然贵了点,不过到保定这么一段距离,也贵不到哪里去,哈哈,体验一下。

    其实还有十几天才回去,明天去送人,顺带把票买了。

    上完的课还有没交的作业,考完的课还有没出来的分数,实验室有没完成的工作,还有。。。更重要的事情

  • AS3如何fade文本(text)?

    fade文本的效果在很多时候是需要的,但初试时总不成功。找到的答案是,文本必须是static,或者如果文本是dynamic的话,必须embed字体进去。

    在Adobe的这篇文章里,讲到了如何在Flash中潜入字体,末尾还给了一个利用Tween类做Fading的例子,然而文中似乎并没有提到只有潜入了字体才可以做这样的Fading

  • Flash中如何让一个Label使用手形光标?

    原来光label.useHandCursor = true;还不够,要加下面两条语句:
    label.mouseChildren = false;
    label.buttonMode = true;

  • AS3的Dictionary是个好东西

    最近在学习Flash的简单东西。为了数据和表现的分离,我把读取数据的代码做成一个类,跟显示数据的控件分开。

    在第一帧的AS中,将一个数组的数据用循环显示到控件上,控件也是一个数组。但是,如果要给控件加上事件处理,比如点击,在处理函数中想获得数据,怎么办呢?

    最直接的办法是用Array.indexOf()函数取得控件在数组中的下标,然后再取数据数组中的对应下标的元素,不是太好。

    本来我是想在控件中找类似“setAttribute/getAttribute”的函数的(Java的HttpServletRequest有get/setAttribute,另外Eclipse JDT的编译器语法结构类都有get/setProperty:) )。后来发现了帮助中在讲Array时提到两种,一种indexed,一种associative,后者就是Dictionary。

    你可以写,

    var map:Dictionary = new Dictionary();
    map[displayObject] = data;

    在event handler里,map[e.target]就可以取得对应数据了。嗯,也可以叫做Map

  • FCKEditor的Packager

    FCKEditor的js很大,它特意提供了一个packager来压缩。

    FCKEditor的下载页提供了最新2.4.3版的下载,包括源代码及压缩过的代码。然而当我改动了JS想重新打包的时候问题来了,从同一下载页下载到的FCKEditor.Packager却不能使用,报错说找不到_packager.xml。搞笑的是那个下载的下面还提示2.4以前版本的Packager请到某某地下载。

    最后浏览FCKEditor的Trac站点终于找到了想要的东西,下载地址

    把它放在FCKEditor的目录下(和editor和_samples两个目录在同一层)运行即可。

  • Visual C++ 2005, ArcGIS Engine 9.2, ATL对话框程序

    首先向还在被迫学习或使用MFC、ATL之类代表原始社会生产力的工具的同志们道一声,你们辛苦了!

    我郁闷了好长时间才把一个使用ArcGIS Engine的ATL程序弄起来。把详细过程分享出来,避免像我一样不熟悉ATL/COM的人走弯路。ArcGIS可以用C#或Java开发,但有时候你不能自己决定。

    准备工作:

    1. Ctrl+Shift+N,New Project
    2. 选择Visual C++下的ATL,在右侧选择ATL Project,在Name栏填写project name,ATLDialog,OK
    3. 在随即出现的ATL Project Wizard里,选择“Application Settings”,Server Type选择Executable,点击Finish
    4. 项目已经生成。在Class View中,右击ATLDialog,Add=>Class
    5. 在Add Class对话框中,选择ATL Dialog,点击Add。接下来的ATL Dialog Wizard中,在Short name中填写TestDialog,点击Finish
    6. 向导已经为我们生成了一个ATL对话框的框架。

    试一下吧。在文件ATLDialog.cpp中,找到_tWinMain函数,在前面添加代码:

    CTestDialog dlg;
    dlg.DoModal();

    并且在前面要包含我们对话框的声明:#include “TestDialog.h”
    按下F7,编译结束后对话框弹出了,按下OK,程序正常结束。

    接下来,我们就可以在此基础上加上ArcGIS的控件了(给地图控件加一个点击事件处理)。

    1. Resource View中,ATLDialog->ATLDialog.rc->Dialog->IDD_TESTDIALOG,打开对话框编辑窗口
    2. 对话框稍微拉大点,右键->Insert ActiveX Control。在弹出的框中选择ESRI MapControl,同样方法加入ESRI LicenseControl
    3. 调整好MapControl的大小位置后,右键->Add Event Handler
    4. 弹出的向导中,选择CTestDialog类,Message Type选择OnMouseUp,点击Add and Edit
    5. 输入代码:

      IMapControl3Ptr ipMapControl;
      GetDlgControl(IDC_MAPCONTROL1, IID_IMapControl3, (void**) &ipMapControl);
      ipMapControl->AboutBox();

    6. 关键时刻来了。IMapControl3Ptr这些接口的定义在哪里呢?不要试图在ArcGIS的VC++ Help for VS2005中找到答案,它会让你郁闷几天的。
      在stdafx.h中找到#include <atlcom.h>这行,把它替换成下面的代码(根据你的ArcGIS安装位置更改):

      #define ISegment IMSSegment
      #include <atlcom.h>
      #include <atlwin.h>
      #undef ISegment

      #include “C:\Program Files\ArcGIS\include\CPPAPI\SDK_Windows.h”

    7. 按下F7,对话框又出现了,并且有淡蓝色背景的地图控件,在上面点右键,ESRI的授权声明就跳出来了。

    ArcGIS的文档里,我没有发现有关于如何解决ISegment重复定义的介绍。而且文档中也没有提到SDK_Windows.h这个文件,只说那些控件的定义应该如何去导入,很繁琐,其实包含这个文件就可以了。

    好了,有了这个基础,其它的翻翻文档和Sample应该就问题不大了,你可以试试加载一幅地图进来。

  • 迷茫的一代啊

    我也是这一代人中的一个。

    光公布出来的数据,跳楼自杀的就数不清了,一定还有一些死在宿舍里没有张扬出来的,我就知道一个在宿舍割腕自杀的。

    今天有个老乡发短信说她学校有个人跳湖自尽了。我去过那个学校,很漂亮,湖上有漂亮的桥,多可惜,漂亮的景色有了令人生畏的死亡气息。

    大一时我苦学了不到半年,就开始想每天晚睡早起学那些东西到底是为了什么。后来我不学了,在牛人如林的班里很快落后,于是转系。曾经非常堕落,堕落的时候也非常懊悔,但就是不知道该做什么。找信任的老师谈话,找学校的心理老师谈,找关系好的同学谈。再后来面临读研和工作选择时又迷茫,到底是该工作为家里减轻负担呢,还是该继续躲在学校这个温室(或者说棺材,如果你不经常挣扎的话)里呢?因为对社会的恐惧,我选择了后者。前段时间,又在彷徨,到底是该退学,离开这个垃圾坑呢,还是混两年,拿到那张明明是废纸却被人看作是人才的第一标准的文凭?我又选择了后者。非常感谢在这些迷茫的时候听我诉说给我建议的朋友和老师。

    当然,自杀对自己来说没有什么好坏。如果真的没有灵魂,死去后万事结束,世界也就没了,一切消失,有什么好有什么坏?人不是为自己活的,有许多人在乎你。父母花了多少心血把我们养了这么大,一瞬间,他们的付出全成了空。

    记得有一次有同学发给我一个类似点名的消息,他说他也想到过自杀。我也想到过自杀,但是没想到他也有过这种念头。看来人人都有难过的时候。在想到自杀的时候,多找人谈谈吧,尽管最后还得靠自己解决,至少你会知道有人关心你,在意你。

    这个社会的大部分不会在乎我们有没有信仰。他们以盈利为第一目的,甚至利用我们的迷茫。于是湖南卫视才会发财,捧出了几个缺少应有能力甚至不可想象的明星。在这样的时代里,文化也会腐朽。

    上午听到有人跳湖的消息,下午看到SillySnail写的文章,感叹感叹。

  • 并行?

    并行的应用其实已经很久了,不过最近几年普通PC的CPU也普遍采用多核,并行普及的时代已经到来了。Intel又开始在桌面系统中推它的四核处理器,前几天还看到消息说它几年后将推出32核到48核的图形芯片。

    编写桌面程序的人可以不用太担心,依赖操作系统的调度就可以了。而如果是开发专用的算法之类,那就得自己处理,使得多个核心或CPU能够联合起来发挥足够的优势。还有针对32核、48核的图形芯片编程,怎么办?微软的DirectX会支持吗?

    想当年刚刚有计算机的时候0101地写程序是多么变态,到现在写个漂亮的程序如同搭积木一样简单(微软不是想让奶奶级别的也会变成吗)。并行的概念虽然很早提出,应用也比较早,但我觉得到现在也没有一个像当初编译器出现那样的飞跃。将来会有吗?

    OpenMP、MPI之类基本都是在现有编译器的基础上加东西,对很多人还是有一定的难度。程序员还得精心地考虑如何调度进程(或线程),如何降低调度引入的负载。如同编译器的出现一样,尽管编译器的优化不可能完美,但它毕竟使得大型的项目更容易开发了。对于关键部位的代码,仍然可以用汇编来写。

    嗯,其实我的认识也很粗浅,随便联想一下。

  • 本地连接受限或无连接

    伸缩网线挺好玩的,不用时收起来成为一个小盒子,不用为纷乱的线烦恼。生活中的烦恼太多了,是吧。

    起初在海龙买了一只,在那里测试没有问题。但拿回来后街上,插口旁边的指示灯闪烁都跟其它网线不同,系统托盘显示“本地连接受限或无连接”,换普通的网线是好的。心里暗骂奸商,可是当时连票都没开,在几楼买的也忘了。于是又上淘宝买了一只,叮嘱卖家一定帮我测试好。收到后赶紧试用,结果竟然跟在海龙买的一样,这下我开始怀疑自己了。跟卖家联系,他说是测试过的,而且以前也有客户遇到这样的情况。

    在网上搜了一下,找到这个网页。打开本地连接,属性,配置网卡,高级,选择speed/duplex属性,默认为auto,根据自己网络环境改,不知道可以试,我选择了10Mbps/Full。

    终于可以用了,不过只能用10M,太慢了。原来海龙那家没骗我。。。

  • 从五笔转向拼音

    五笔还是我在高考完的时候学的,当时我们那个小地方学电脑的主要课程都是学打字,大部分出路都是打字员。学会了,过了几个月,到了学校,又忘了。当时比较有决心,坚持用五笔,没过多久就记起来了。

    记得那时候还有人问我借五笔打字的书来着,不过已经有同宿舍的同学开始讲拼音输入法的好处。那时用的是智能陈桥,在机房的破机器上,切换出来要几秒钟。

    用五笔也有不知道编码的时候,就用拼音打,我最开始习惯用智能ABC,微软拼音是从来不想用。到现在搜狗拼音、Google拼音盛行并传出绯闻,五笔的确是要退出普通人的生活了。

    如果有一个五笔输入法可以像Google拼音一样自动网络同步,该多好。如果可以方便地修改默认的中文输入法该多好,改注册表真麻烦。如果我不添加拼音输入法,别人过来用机器又很不方便。主要就是这两点促使了我转向拼音输入法,Google拼音刚推出时用了一下,太舒服了。

    当然五笔也有好处,上大一的时候同班一个MM用“恩”作QQ昵称,我问为什么,她说打不出口字旁的。。。(可能应该打ng而不是en)于是我用五笔打了个“嗯”(KLDN),看着别人的QQ昵称是自己创作的,别提多有成就感了。有时候在BBS上看到有人问,那个“有”字缺两横怎么打啊?五笔很简单,DMB,冇。又有人问,Orz那个O换成汉字是什么啊?是冏(MWKD)。尤其对着手写的花名册输入一些生僻的人名时,五笔真的有拼音起不到的实际作用。当然,可以用手写板解决。

    去年到Meimei家的时候,她二哥拿着对讲机跟同楼的哥们一起打传奇。我发现他竟然用的是五笔输入——原来他不会拼音,呵呵。跟用五笔的人聊天,一出错就能辨别出来是五笔用户,比如用五笔的人打“程度”可能打出“程序”,而拼音不会,最多是“成都” 🙂

    一个是音,一个是形。还真希望Google弄个五笔输入法出来,虽然可能性不大。