踏踏实实干工作,推进开源大发展!
  • 开源ERP真的会必死无疑吗?

    leryo 发布于 2008-07-04 18:47:01

     【IT168 信息化

        笔者所在单位曾使用某著名品牌的商业ERP,但以失败告终。后由笔者负责实施了国内一家公司的开源ERP产品,且取得了成功。因此,我对开源ERP非常感激也非常看好,所谓理越辩越明,请各位听听我的理由。

        笔者仅根据原文作者的观点提出不同见解,这些见解都来源于实践,希望对企业信息化部门的朋友们有所帮助,个人也认为开源ERP会越走越好,不但不会死掉,而且我坚信开源ERP会成为企业信息化行业的一股主要力量。

        最近在网上看到两篇文章,题目分别是:“大话ERP之开源ERP之我观”和“ERP并非是个软件!开源ERP必死无疑!”,读完两篇文章后,发现除了标题、发布时间不一样,内容完全一样,都是说开源ERP如何不好,特别是后一篇,甚至把题目改成了完全恶毒的诅咒。

        对于这两篇文章的内容,大多数观点笔者均不认同。因为笔者所在单位曾使用某著名品牌的商业ERP,但以失败告终。后由笔者负责实施了国内一家公司的开源ERP产品,且取得了成功。因此,我对开源ERP非常感激也非常看好,所谓理越辩越明,请各位听听我的理由。

        一、ERP项目成败关键的因素是产品的优劣

        原文作者强调:ERP项目是“三分软件七分实施”,认为软件产品本身在ERP项目中的作用最多占30%,而实施顾问团队的作用占70%。企业ERP项目的成功与失败完全掌握在实施顾问的控制中。

        笔者想反问原文作者:根据原文意思,是否表示水平高的实施团队能用质量差、功能差的产品把客户“忽悠”过去,让客户满意?而水平差的实施团队则只能能把质量好、功能好的产品搞的客户不满意?原文作者是不是在承认过去ERP失败的原因是因为有大量能“忽悠”的实施顾问把质量一般、功能很差的产品推给了用户,最终造成成功率低,今儿造成客户对ERP失去信心呢?

        笔者认为,ERP项目主要拚的是产品质量、优秀的功能,而不是什么实施顾问。其实现在行业内实施顾问的角色很尴尬,他们很多时候更像一个销售人员,经常有夸大其词的行为。我们单位在早些时候实施商业ERP项目时,就是因为过分相信了“资深顾问”的劝说,接受了他所推荐的流程设定而放弃了原来的个性化业务需求而造成最终项目失败的结局。说实话,在当时觉得顾问的话特别有道理,但后来在本企业做应用推广时却遇到了极大的困难,该顾问所推荐的方案根本不能在实际中使用。后来我们才知道这位顾问所实施的ERP产品根本就无法提供客户所需要的个性化功能,只是用用一些销售技巧蒙住了我们。

        ERP也是软件,软件产品的属性是决定项目成败的关键。例如,我们现在需要B/S架构、完全支持互联网还能实现个性化功能的ERP,传统C/S架构ERP产品无论由多高水平的顾问去实施,也根本无法让我们满意。

        我们上过当,即使他们还能去蒙住别的客户,但我相信早晚还是会被揭穿,我倒是认为ERP项目是七分软件三分实施。

        二、在开源ERP的基础上能轻松实现二次开发

        原文作者说:“对于软件开发人员来说,若从零开始进行开发,可能还会简单一点;但是,若要在原有软件的基础之上,进行软件二次开发的话,难度可能会比较大。因为他们首先要先去了解原有软件的思想、结构、设计思路等等……”

        据笔者所知,由于行业的差异、个体的差异,企业对于ERP的个性化应用有着非常强烈的需求,这是客观存在。既然客观存在,二次开发就无法避免,我们应理性的对待二次开发问题。如何把二次开发工作搞得容易才是真正为客户着想。源代码开放是二次开发的基础,也是最起码的保障。我们单位实施的开源ERP,厂家提供的产品不仅开放源代码,而且还在这个基础上为我们提供了三个层次的二次开发方式:1、通过个性化的设置实现非代码的二次开发;2、通过前端的工具实现自动生成代码的二次开发;3、直接改动源代码来实现的二次开发。

        因此,我认为原文作者对二次开发的理解和认识过于片面,误认为开源ERP的二次开发作就只能修改源代码。

        三、开源ERP也是有分工的产业

        原文作者提到,“这都是因为企业没有比较专业的人来分析、调查企业需求所造成的。而商业软件不同。他们会把企业的需求调研当作项目实施过程中的一项重中之重的工作来对待。因为他们清楚,把企业的需求搞清楚了,那么企业的ERP项目也就成功一大半了”

        我认为,这是典型的以偏概全,原文作者又一次的把开源ERP看成了极端的DIY项目。仍然以我所在企业为例,我们对开源ERP最看重的是可以对自己的项目做到心里有数,能很好地对项目开发。其实开源ERP的具体实施也是由厂商的合作伙伴来负责的,而且二次开发工作我们还是会找实施方,啥事都自己干这不符合社会分工的原则。

        据我观察,开源ERP的实施方法与商业的ERP方法并没有本质的不同,但却比传统的实施更节约成本。因为用开源ERP不需付软件产品的许可费用,只需要付服务的费用。

        四、独到的技术能保障开源ERP平滑升级

        原文作者提到,“在原先版本上所做的需求,如何迁移到新版本之上呢?这是用户在版本升级过程中遇到的第二个难题。在商业软件中,这一般不是问题,只要你交了每年的服务费用,则他们在软件升级的过程中,他们会帮你完成二次开发需求的迁移工作……”

        我认为原文作者用“商业软件公司收了服务费后帮助客户作迁移工作”来否定开源ERP的升级有失偏颇。

        首先,开源软件的方案提供商同样能够提供这样的收费服务。其次,目前很多软件都已经具备了保障平滑升级的技术解决方案,只要在二次开发时遵循一定的标准,并且使用正确的开发工具就可以实现。

        笔者所在企业使用的开源ERP产品就支持这些功能,比如:数据表升级管理功能,二次开发者能通过浏览器实现数据表的设计,并且通过Xml实现与其他程序同步升级,保护已发布的数据表结构,实现增量升级;模块设计管理,能实现在线设计多层次业务功能模块,同步生成公用程序、数据表等,同步实现部分后台功能;二次开发发布管理,能保证在二次开发时,既能实现对现有版本的保护,又能实现对开发版本进行有效控制;数据平滑升级管理,能够实现ERP不同版本间数据平滑迁移。

  • 解惑—Linux中的地址空间(一) *

    陈莉君 发布于 2008-07-06 11:57:10

    有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核编译后地址空间在什么范围内?要对外设进行访问,I/O的地址空间又是什么样的?
    先回答第一个问题。Linux最常见的可执行文件格式为elf(Executable and Linkable Format)。在elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段”,对每个程序都是这样。至于程序执行时在物理内存中的实际地址,则由内核为其建立内存映射时临时分配,具体地址取决于当时所分配的物理内存页面。

    我们可以用Linux的实用程序objdump对你的程序进行反汇编,从而知晓其地址范围。
    例如:假定我们有一个简单的C程序Hello.c
      # include <stdio.h>
      greeting ( )
      {
                  printf(“Hello,world!\n”);
      }
      main()
       {
             greeting();
       }
    之所以把这样简单的程序写成两个函数,是为了说明指令的转移过程。我们用gccld对其进行编译和连接,得到可执行代码hello。然后,用Linux的实用程序objdump对其进行反汇编:
    $objdump –d hello
    得到的主要片段为:
    08048568 <greeting>:
       8048568:     pushl  %ebp
       8048569:     movl  %esp, %ebp
       804856b:     pushl  $0x809404
       8048570:     call    8048474  <_init+0x84>
       8048575:     addl   $0x4, %esp
       8048578:     leave
       8048579:     ret
       804857a:     movl  %esi, %esi
       0804857c <main>:
       804857c:     pushl  %ebp
       804857d:     movl  %esp, %ebp
       804857f:     call    8048568  <greeting>
       8048584:     leave
       8048585:     ret
       8048586:     nop
       8048587:     nop

    其中,像08048568这样的地址,就是我们常说的虚地址(这个地址实实在在的存在,只不过因为物理地址的存在,显得它是“虚”的罢了)。

    .虚拟内存、内核空间和用户空间

       Linux虚拟内存的大小为2^32(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节(从虚地址0xC00000000xFFFFFFFF)供内核使用,称为“内核空间”。而较低的3G字节(从虚地址0x000000000xBFFFFFFF),供各个进程使用,称为“用户空间”。因为每个进程可以通过系统调用进入内核,因此,Linux内核空间由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟地址空间(也叫虚拟内存)
       
        每个进程有各自的私有用户空间(03G),这个空间对系统中的其他进程是不可见的。最高的1GB内核空间则为所有进程以及内核所共享。另外,进程的“用户空间”也叫“地址空间”,在后面的叙述中,我们对这两个术语不再区分。
    用户空间不是进程共享的,而是进程隔离的。每个进程最大都可以有3GB的用户空间。一个进程对其中一个地址的访问,与其它进程对于同一地址的访问绝不冲突。比如,一个进程从其用户空间的地址0x1234ABCD处可以读出整数8,而另外一个进程从其用户空间的地址0x1234ABCD处可以读出整数20,这取决于进程自身的逻辑。
    任意一个时刻,在一个CPU上只有一个进程在运行。所以对于此CPU来讲,在这一时刻,整个系统只存在一个4GB的虚拟地址空间,这个虚拟地址空间是面向此进程的。当进程发生切换的时候,虚拟地址空间也随着切换。由此可以看出,每个进程都有自己的虚拟地址空间,只有此进程运行的时候,其虚拟地址空间才被运行它的CPU所知。在其它时刻,其虚拟地址空间对于CPU来说,是不可知的。所以尽管每个进程都可以有4 GB的虚拟地址空间,但在CPU眼中,只有一个虚拟地址空间存在。虚拟地址空间的变化,随着进程切换而变化。
    从上面我们知道,一个程序编译连接后形成的地址空间是一个虚拟地址空间,但是程序最终还是要运行在物理内存中。因此,应用程序所给出的任何虚地址最终必须被转化为物理地址,所以,虚拟地址空间必须被映射到物理内存空间中,这个映射关系需要通过硬件体系结构所规定的数据结构来建立。这就是我们所说的段描述符表和页表,Linux主要通过页表来进行映射。
    于是,我们得出一个结论,如果给出的页表不同,那么CPU将某一虚拟地址空间中的地址转化成的物理地址就会不同。所以我们为每一个进程都建立其页表,将每个进程的虚拟地址空间根据自己的需要映射到物理地址空间上。既然某一时刻在某一CPU上只能有一个进程在运行,那么当进程发生切换的时候,将页表也更换为相应进程的页表,这就可以实现每个进程都有自己的虚拟地址空间而互不影响。所以,在任意时刻,对于一个CPU来说,只需要有当前进程的页表,就可以实现其虚拟地址到物理地址的转化。

    .内核空间到物理内存的映射  

       内核空间对所有的进程都是共享的,其中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据,不管是内核程序还是用户程序,它们被编译和连接以后,所形成的指令和符号地址都是虚地址(参见2.5节中的例子),而不是物理内存中的物理地址。
    虽然内核空间占据了每个虚拟空间中的最高1GB字节,但映射到物理内存却总是从最低地址(0x00000000)开始的,如图4.2所示,之所以这么规定,是为了在内核空间与物理内存之间建立简单的线性映射关系。其中,3GB0xC0000000)就是物理地址与虚拟地址之间的位移量,在Linux代码中就叫做PAGE_OFFSET
                      
    我们来看一下在include/asm/i386/page.h头文件中对内核空间中地址映射的说明及定义:

    #define __PAGE_OFFSET           (0xC0000000)
    ……
    #define PAGE_OFFSET             ((unsigned long)__PAGE_OFFSET)
    #define __pa(x)                 ((unsigned long)(x)-PAGE_OFFSET)
    #define __va(x)                 ((void *)((unsigned long)(x)+PAGE_OFFSET))
    对于内核空间而言,给定一个虚地址x,其物理地址为“x- PAGE_OFFSET”,给定一个物理地址x,其虚地址为“x+ PAGE_OFFSET”。

    这里再次说明,宏__pa()仅仅把一个内核空间的虚地址映射到物理地址,而决不适用于用户空间,用户空间的地址映射要复杂得多,它通过分页机制完成。



  • 手机上网

    sky_xu 发布于 2008-07-05 15:52:49

    今天在湖州,晚上的时候附近的变压器给烧了,原因是变电所边上是个废品收购站,最近的废铁收的太多,离变压器太近了。整个一片都停电了,结果没有空调,实在热得不行,和老婆商量了一下,到宾馆开了一个房间,但是还是没有办法上网。忽然想起现在和老婆换了手机,应该可以用手机上网的。想到就做,立刻给10086打了一个电话,由于上次iphone的事情,我已经把gprs给关闭了,这次费了番口舌,开了10元的套餐,80m的流量,估计该够了。

    简单的在手机上作了设置,其实也就是在运营商配置选项改了参数,在wap,gprs,彩信上都打了勾。然后在笔记本电脑上打开蓝牙,找到手机,然后在nokia套件上运行一键接入,就可以了。nikia的手机,在使用和配置上还是比苹果的iphone方便多了。

    看了一下带宽,居然达到了115.2kbps,远高于普通modem的56k,应该是使用了edge的技术,想起几年前,在去上海的火车上,也曾经通过gprs上网,那时候用的是pc卡借口的,牌子应该是南京产的panda,当时给我的感觉是慢且不稳定,最高也就是64kbps,而且流量忽高忽低,非常不稳定,上了一会儿,pc卡的温度就很高了,用手摸极烫。

    这次用nokia 的n 81上网,手机温度基本上没有什么变化,而且速度极快,看来即使不用cdma的3g技术,gprs在一段时间内,应该也可以满足要求了,毕竟我上网最主要的目的,也就是查查资料,看看新闻,要求其实不高。

    顺便说说用过的2个手机,nokia n81简单易用,实用性强,是款非常好用的手机,苹果的iphone 功能强大,界面华丽,但是实用性真的不及nokia,无论是汉字输入,还是和笔记本电脑的互联。

  • 运行游戏跳过升级!不变砖!同学各位进来看

    nfb2008 发布于 2008-07-06 01:04:15

    由热心会员wykonxp提供

    1、确保你的Wii主机版本是3.3一下
    2、下载下面的压缩包Wii_good_job(解压后有三个压缩包,分别对应日版JAP、美版USA和欧版EUR)
    3、解压缩对应你主机的版本
    4、刻录光盘
    5、将光盘放入主机启动,按3次reset开始安装
    6、下载hbc_apps.tar.gz,把hbc_apps 里的几个文件夹copy到sd 卡根目录。(MD5: 4d16f3760c1f6d3eef509c552ca6600d)
    7、运行the homebrew channel 在运行Gecko Region Free 1.5,放入游戏碟,日版、美版按A,欧按版1
    8、会花屏,然后游戏就开启了。跳过了升级。

    PS:有人反映3.3也可以用。

  • Linux,Here I Come!

    bilyecit 发布于 2008-07-06 02:32:46

       该开始我的LINUX之旅了!
  • 陆首群:全力支持中国人的开源创新行动

    陆首群 发布于 2008-07-03 17:15:17

      中国开源软件推进联盟主席陆首群在《2008第三届中国开源软件竞赛暨开源软件创新与企业应用创新大赛》启动仪式上的讲话

      背景介绍

      为了营造和谐创新的软件环境,提升软件企业创新能力,支持国人奋起开发创新和应用推广,为在中国培育开源人才发展开源技术,并对全球开源运动作出贡献,进而推动中国软件业和服务业的大发展,在科技部和工信部指导下,在科技部火炬中心与高技术中心策划组织下,由中国软件行业协会共创软件分会与中国高新区软件协会软件园分会主办的《2008第三届中国开源软件竞赛暨开源软件创新与企业应用创新大赛》,于2008年7月2日在北京举行了启动仪式。会议除邀请广大开源企业、社区、学校等的代表参加外,还邀请了国内各省市规模较大的十四家软件园的代表参加。

      陆首群主席的讲话:

      众所周知,中国软件市场是全球最大的软件潜在市场;近年来中国软件的发展取得了骄人的成绩;但是,在全球软件市场中,中国软件产业所占的份额不足6%,现实与潜力之间的差距还很大;中国软件出口外包发展很快,但也只及印度的20%;具有自主知识产权的基础软件还很薄弱;互联网(特别是移动互联网)的发展,现代服务业的发展,为软件大发展提供了新机遇;开源软件的兴起,给中国软件发展提供了一个历史机遇;在互联网上,开源技术占绝对优势:在全球,开源技术开始进入主流:一些私有商业软件(闭源软件)向开源转化也开始形成潮流:由全球最大的手机制造商NOKIA控股的Symbian公司,最近宣布向其联合成员提供开放(开源)、免费的Symbian操作系统(软件);Apple公司MacOS操作系统也开始向第三方开发敞开大门;IBM公司不少中间件(如WebSphere CE)、数据库(如Cloudscape/Derby)、开发工具(如Eclipse)等也由闭源转为开源:Sun公司的Net Beans、Solaris、SPARC、Java均已Open,并支持、开放了OpenOffice,还收购了开源数据库MySQL;Google公司的Android手机平台也决定对外开放;Intel公司围绕超便携PC-MID成立了开源(软件)的Moblin社区,红旗/亚联是该平台和MID生态系统的主力;连微软也已申请两个开源许可证,对其部分软件实行开源。

      开源社区是立足于“草根”,并探索出一条“草根”成长为“精英”之路,这是最具创新活力的环境;企业开源应用是开源软件应用的主要阵地,“企业级”也代表高水平的规范,也呼唤着创新。

      关于在国内开展的开源软件竞赛活动,今年已经办到第三届了,今年更有规模较大的各省市十四家软件园参加,声势更大;在前两届竞赛中获奖的优秀作品和新锐,一部分也在中日韩开源论坛竞赛中评选上榜,取得了国际声誉,为全球开源运动做出了贡献。

      2008第三届开源软件竞赛活动暨企业开源应用创新大赛,可说是应运而生,为培养人才,评选优秀作品(个人、集体),鼓励创新,推动应用,持续不断地做的一件好事。
  • fceu如何使用键盘输入

    mic 发布于 2008-07-03 15:30:23

    其实并不需要修改任何代码,fceu本身就支持键盘输入。
    ./arm-fceu -inputcfg gamepad1 Mighty Final Fight.nes
    通过设定方向键,select, start, a,b, super a, super b键之后,便可以开始游戏。


    应该说还是比较好用的。

    但是我在玩魂斗罗的时候遇到一个问题,就是两颗键同时按下的时候出现问题。比如玩超级玛丽的时候按跳的同时按前,还是笔直得往上跳。

    所以fceu这个工具要能够使用在板子上完美的使用还是需要做些优化的。

    而且键盘输入还有一个问题,之前在定义的键值不能用,按下一个键,sdl
    static void handle_keyboard(_THIS)函数里居然读到三个按键事件
        nread = read(keyboard_fd, keybuf, BUFSIZ);
        printf("%s nread is 0x%d\n",__FUNCTION__,nread);
    nread的值是3.

    将键值改成KEY_A,KEY_B...等之后,便正常了。
  • 网上开店要办理营业执照

    qq36097691 发布于 2008-07-03 20:28:53

    网售小物件 也得办执照

    根据管理意见,3种情况不需要办照或重新登记:已经有照的企业和个体工商户从事电子商务经营活动,且经营范围与登记注册的经营范围相一致的;取得信息产业部或市通信管理局颁发的互联网信息服务经营许可证或完成网站备案,并到工商行政管理部门领取了营业执照的电子商务经营者;在互联网上出售、置换自用物品,且不以营利为目的的个人。

    此前,在办法征集意见时,各界对如何界定“非营利”有争议,“曾有人提出按照商品数量进行界定,但经过论证认为,这种单纯界定不妥当。”市工商局特种交易监督管理处处长王靖表示,意见出台的主旨是促进支持互联网商业发展,不宜对个人物品做出硬性规定,希望交易双方按照商业活动的原则和规范,一旦发生消费纠纷将由法院等仲裁部门进行个案甄别。

    在网上出售首饰、化妆品等小型物件在家里邮寄就能完成交易,这种经营活动也需办照。根据办法,将住宅作为住所(经营场所)从事电子商务经营活动的,其登记注册按照《关于解决无证照经营场所以及其他经营住所问题的意见》,即必须经过邻居、居委会等相关利害人的同意方能作为登记注册地址。

    容纳无照者 网站要挨罚

    电子商务交易平台、网上商城、网络黄页等电子商务服务提供商有义务查验并留存商户的资质证明;建立电子交易记录,并将交易记录保存至少两年;建立内部消费者权益保护制度,设置机构或者配备人员,及时、妥善处理消费者投诉。

    明知道商户无照还准许其在自家平台上经营的电子商务服务提供商,将由工商部门依据《无照经营查处取缔办法》第十五条的规定予以查处,由工商部门对此行为没收违法所得,并处2万元以下的罚款;为危害人体健康、存在重大安全隐患、威胁公共安全、破坏环境资源的无照经营行为提供生产经营场所的,处5万元以上50万元以下的罚款。

    特别提示 办照留出一个月缓冲期

    意见从8月1日起实施,王靖提醒网商应尽快在7月底前办理相关手续。此外,今年年底之前,电子商务经营者应当在其设立的商务网站、网上商店或宣传网页首页下方,建立“电子商务经营者信息公示”链接,指向其信息公示子页面,信息包括企业(个体工商户)全称、经营范围和住所(经营场所)等。

  • ULK一周总结(2008-7-3)

    jinlongfei 发布于 2008-07-03 22:08:40

    这一周工作挺忙,ULK学的少了点。
    1. 32位系统中用户进程不能寻址1G以上,PAE(物理地址扩展)下用户进程不能寻址4G以上。

    2. machine_specific_memory_setup: 建立物理映射;setup_memory: 分析物理内存区域表,并初始化一些表示物理内存布局的变量。

    3. 用户线性空间地址和内核线性地址以PAGE_OFFSET(0xc0000000,3G)分界

    4. 三级模式下:页全局目录项中1项=4k * 2的10次方 = 4M,全局页表1024项,可寻址4G,前768项表示768*4M=3G,因此第768项开始表示3G以上的内核地址。

    5. 建立内核页表:(1)创建128K地址空间;(2)初始化临时内核表;(3)建立最终内核表

    6. 因为内核初始化在8M以内,临时内核表需要将物理内存前8M映射到用户空间和内核空间,8M需要2个页全局目录项,所以临时页全局目录中第0、1(用户空间前8M)、768、769项(内核空间前8M)需要有内容。

    7. 用Linux线程组实现POSIX多线程应用程序。

    8. 内核通过进程描述符指针来引用进程,进程标识符是访问进程的另一种方式。

    9. tgid:线程组ID,getpid系统调用返回的是tgid而不是pid。

    10. 内核分配thread_union时,让这8K空间的第一个页框起始地址是2的13次方的倍数,这样可以直接高效取得进程描述符。

    11. 因为有140个优先级,所以每个CPU都有140个不同的队列。

  • 电脑课

    小恒 发布于 2008-07-04 08:52:10

    今天上电脑课。

    教我们发邮件。

    可以上网。

  • Linux嵌入式无线可视门铃系统的设计

    ww007 发布于 2008-02-03 15:22:44

    1、引言

      在当前的电子行业中,无线技术已经渗透到方方面面,无论是电视机的遥控设备,还是计算机的外围设备都是如此,有的键盘鼠标甚至也使用了无线技术。无线网络技术已经成为热门技术。无线网络产品广泛应用于家庭网络、小型办公室、会展中心、体育中心、飞机厂、医院、学校、港口、住宅小区、酒店、宽带接入。它使人们在Internet应用中摆脱了无穷无尽电线电缆的束缚,进入真正的无网不在的Internet自由空间。无线网络技术可望成为新的经济增长点。 展览公司

      近几年来, 随着市场上智能化楼宇的不断升温, 门铃系统已作为智能化办公室和智能化住宅小区的一个重要组成部分,被各商家和用户所接受。人们已开始习惯用门铃系统代替传统的铁钥匙去管理各通道门, 这使门铃系统得到了飞跃性的发展。

      2、 linux操作系统介绍

      linux是一种很受欢迎的操作系统,它与UNIX系统兼容,开放源代码,它原本被设计为桌面系统,现在广泛应用于服务器领域。而更大的影响在于它正逐渐的应用于嵌入式设备。但是它仍保持了桌面Linux操作系统的主要的优点,如稳定性、强大的网络功能和出色的文件系统支持等。linux有一个完整的TCP/IP协议栈,同时对其他许多的网络协议都提供支持。

      这些网络协议都在linux上得到了很好的实现。linux可以称作是一个针对嵌入式系统的优秀网络操作系统。linux以其优异的性能、免费开放的代码等优点,博得众多嵌入式开发者的青睐,和过去基于简单RTOS甚至没有使用任何操作系统的嵌入式程序设计相比,基于Linux这样的成熟的、高效的、健壮的、可靠的、模块化的、易于配置的操作系统来开发自己的应用程序,无疑能进一步提高效率,并具有很好的可移植性。

      3、 无线可视门铃系统原理框图

    无线可视门铃系统服务器端的原理框图

      3.1无线可视门铃服务器端基本工作原理

      无线可视门铃是一个基于高性能嵌入式处理器和硬件实时编解码芯片,结合linux操作系统,由服务器端和客户端两部分组成的系统。主要实现音频视频的高质量编解码和网络转发功能,服务器端具体实现功能如下:

      由CCD Sensor和音视频端口进来的输入信号,经过视频A/D和音频A/D转换后,进行MPEG4视频编码和MPEG MP3音频编码。编码后的视音频码流送到网络复用模块打包后,经过802.11x无线网络送到客户端。具体功能如下:

      1)基于IDT RC32434高性能嵌入式处理器等硬件系统的加电自举Boot Loader功能,具有系统硬件初始化和检测,嵌入式操作系统或用户程序的装载启动功能。

      2).在嵌入式操作系统环境下,对以VW2010为核心的A/V模块进行初始化配置和VW2010驱动程序加载。

      3).对模拟音频视频进行A/D转换,并以MPEG-4的格式进行压缩编码。

      4).将压缩编码后的数据流通过无线网络进行转发。

      5)可以对压缩编码后的数据流/文件进行保存,对输入的压缩编码音频/视频文件进行解码和模拟音频视频播放输出。

      3.2无线可视门铃客户端基本工作原理

    无线可视门铃系统客户端的原理框图

      由无线网络接收的传送流数据,经过网络解复用模块解复用后,获得的视频码流和音频码流分别送至视频解码模块和音频解码模块进行MPEG4视频解码 和MPEG MP3音频解码。解码后的数据经过视频模拟编码、D/A和音频D/A转换后送到可视终端进行显示。 4、无线可视门铃系统设计

      4.1 系统设计原理

      系统设计包括硬件和软件。硬件主要分控制系统和输入、输出数据源三部分。输入、输出数据源可以是IDE接口设备(如硬盘)或网络端口。控制系统对系统各部分进行监测和控制、完成数据流的传输等。控制系统主要由主控芯片、Flash和SRAM组成。主控芯片通过PCI总线控制系统其他模块,是控制系统的核心;Flash里固化嵌入式Linux操作系统,存放应用软件和备份数据;SDRAM作为内存供系统运行使用。MPEG-4硬件编、解码系统采用硬编、解码方式,负责将输入的MPEG-4数据流编、解码成普通的电视信号,其核心是编、解码芯片。为解决数据流不稳定的问题,编、解码芯片通常使用SDRAM进行数据缓冲才可以保证正常编、解码过程。

      软件主要包括嵌入式Linux移植、编、解码驱动和应用程序编写。嵌入式Linux移植到由主控芯片Flash控制器控制的Flash里,操作系统程序文件分成五个主要部分:bootloader、kernel、ramdisk、usr和boot_param,分别放在Flash内的五个模块中。根据不同模块的具体功能采用不同的文件方式:bootloader、kernel、ramdisk和boot param,开发好后不需要动态改变,且容量小,使用节省空间的ROMFS只读文件系统,usr模块内容较多并需要进行读写操作,要使用支持动态擦写保存的JFFS文件系统。

      4.2 系统硬件设计

      系统的硬件设计主要分两部分:数据源接口设计、控制系统设计。数据流先要从数据源经数据源接口送至PCI总线,此系统数据源接口为PCI总线上的PCI/IDE桥芯片和网络控制芯片。

      控制系统调配系统资源、控制系统各个部分以及数据流的传输。主控芯片采用IDT RC32434。它是一款64位MIPS,内部集成了NAND Flash控制器(FlashC)、32位PCI总线控制器(PCIC)、4通道DMA控制器、4通道SDRAM控制器(SDRAMC)、外部总线控制器(EBUSC)、外部总线接口(E—BUSI)以及2个通用串口等,并通过内部总线对它们分别进行控制。其工作主频400MHz,处理速度快,功能强,性价比高,能很好满足嵌入式Linux系统的需求。

      MIPS通过内部的FlashC和SDRAMC实现对外围Flash和SDRAM的控制,其中SDRAM的数据地址线要与外部总线控制接口(EBUSI)连接,Flash的数据地址线连接到对应的FlashC的数据地址端口。MIPS通过PCI总线控制器(PCIC)控制其他PCI接口设备。

      4.3系统软件设计

      本系统软件设计主要分为嵌入式Linux操作系统内核移植、编码和解码芯片、PCI桥芯片及网口等系统驱动程序编写和解码应用程序的编写,其体系结构及与硬件的关系如图6所示。

       嵌入式Linux操作系统是用户控制系统的硬件平台,系统驱动程序采用模块化形式,向上为用户层的应用程序提供API函数,向下通过系统硬件API函数控制系统硬件。编、解码驱动模块采用实时加载方式,其他如网口、I2C和PCI/IDE接口等驱动通用性强,直接编译入内核。编、解码应用程序则实现系统MPEG-4数据流的传输和编、解码。图7和图8分别是无线可视门铃服务器端和客户端主程序流程图。

    系统软件原理图

    无线可视门铃服务器端主程序流程图

    无线可视门铃客户端主程序流程图

      5、 结论

      上述介绍了一种嵌入式无线可视门铃系统,该系统采用硬件编、解码方式实现IDE接口设备或网络端口输入和输出的MPEG-4码流。系统采用64位MIPS芯片IDT RC32434作为主控制器,以VW2010作为MPEG-4编、解码芯片;采用嵌入式Linux作为操作系统和模块化的VW2010驱动程序,编、解码应用程序简单实用,可扩展性强。实验证明此系统可广泛用于IP电视、卫星电视、无线可视门铃和基于MPEG-4标准的数字电视广播系统中,应用前景十分广阔。

  • 教育部-LUPA开源软件应用实训教材有奖试读系列活动

    sanool 发布于 2008-07-02 18:38:47

    开放源代码高校推进联盟(LUPA),秉承“开源、创新、就业,创业”的宗旨,一直致力于开源人才的培养和开源技术在高校的推广、应用,几年来在培养大批 开源人才的过程中,积累了丰富的经验。去年LUPA更是获得了教育部的批准,成为了国内唯一的教育部的开源软件实训基地,轰轰烈烈的高校开源软件实训基地 的建设活动将在全国的高校不断展开。与此同时,LUPA证书的含金量也不断提高,LUPA的开源认证工作也在各大高校不断拓展,有不少高校已经开设了 Linux相关课程。为了满足各个高校关于Linux课程教育和认证的相关需要,LUPA应教育部高教司及浙江省教育厅的要求,邀请了国内知名大学的教授 及企业资深专家编写了“教育部-LUPA 开源软件应用实训教材”,现已由科学出版社编辑出版,即将正式和广大读者见面。

      为了让大家能更好地了解这套系列教材,也为了让更多的高校教师和学生认识开源的巨大作用,LUPA特别企划了LUPA开放源代码软件职业技能认证指定教材有奖试读系列活动,希望能让更多的读者了解开源,认识本系列教材的作用和价值,也进一步加深对LUPA的了解。

    一、书籍介绍

    “教育部-LUPA开源软件应用实训教材”包括以下书目:

    《Linux系统操作员实用教程》
    《Linux网络管理员实用教程》
    《Linux信息安全管理员实用教程》
    《Linux程序员(C语言)实用教程》
    《Linux程序员(JAVA语言)实用教程》
    《Linux嵌入式技术员实用教程》
    《Linux系统维护工程师实用教程》
    《Linux软件工程师(C语言)实用教程》
    《Linux软件工程师(JAVA语言)实用教程》
    《Linux数据库工程师实用教程》
    《LAMP系统工程师实用教程》
    《Linux嵌入式工程师实用教程》

    详见 http://bbs.lupaworld.com/thread-38146-1-1.html
  • 科技展示未来

    M_doct 发布于 2008-07-01 19:24:43

        离上次发表日志的时间已经很长了。应为我刚刚跑到一个我根本不熟悉的行业学习去了,我到工厂学习打孔,磨钻头去了。

        制造业在中国可以说是支柱行业了。很多人在这里干活,为了混口饭吃。我学徒一个月工资800,工作就是打孔,说实话,看起来容易作起来枯燥无味。对着刻度盘不停的要记忆数字,记错了一套机器估计就完蛋了。心理压力很大,又只是一个人钻,错了自己负责。^_^

        工厂不是没有数控。我不明白很多的数控可作的事情为什么作到手工上来了。我知道很多多数控刀的机床,打孔都是随便打就可以了。我想是老板想节约成本吧,其实在中国要是全用数控估计有20%的人没有工作了。

        不过我们在看看中国的计算机行业,程序员估计3000~4000一个月。还有双修日。制作出的三维广告很不错。达到国际水平了。

        我深深的感觉到中国人于人之间的差距。我只想说。计算机是很NB,不过程序就如同灵魂一样,强大的灵魂不代表拥有力量。幻想解决不了普通大众的问题。(这里有个例子:阿基米德用根针就可以烧掉战船,不过他依然组阻止不了战斧劈开他的脑袋)而且中国的计算机业也只是偏向应用,对于基础反而没有加强学习。

        我希望更多的年轻人注意到基础行业,如数学,物理等。数学是欧美技术的关键,可惜年轻人学的不多也不好。而对于计算机行业,也应该尽量多的参与开源项目。锻炼思维方式。上网关注国外网站,留意国外对国内的评价。留意国外年轻人对未来的关注。我们本是一个整体,我们千年之前本是一家。

  • 喜欢去的网站,做个记录

    sky_xu 发布于 2008-07-01 11:40:32

    列一下自己喜欢去的地方

    www.hi-pda.com

    www.jd-bbs.com

    www.51nb.com

    www.taobao.com

    bbs.myit365.com

    bbs.tompda.com

     

  • arm ADS文档下载(一)

    qrskc 发布于 2008-06-27 18:58:23

      ADS开发文档,arm开发必备,下载
  • 回到开源社区

    flysea0719 发布于 2008-06-27 14:47:15

    好久没有到我的开源空间来了,想用忙作为借口,但既然自己都知道是借口,又不好意思启口。

    真的很忙,第一次接触SAP,就进了这么大的一个项目,中石油的实际情况实在是太复杂,SAP在中石油的应用实施也是空前的。

    感觉需要反省一下自己,首先用户虽然是上帝,但是用户的需求不一定是合理的。做项目,如果只是一味地想着去满足用户千奇百怪的需求, 不仅会把自己弄的很累很累,而且往往还会得不偿失。总之一句话,要学会跟用户交流,最终做到:他好,我也好。嘿嘿。

    还是回到开源来吧。惭愧的是,已经有快一年没有莫LINUX,可能出了基本的shell命令,大部分的东西都已经都还给不知道who了。同样需要反省自己,为了工作,把自己的兴趣爱好抛到一边,这是多么违背自己意愿的一件事情阿,等于就是在犯罪。

    还是很爱很爱开源,还是很希望跟这边的朋友多多交流。开源,才是正道!

  • PHPing

    wuhua0904 发布于 2008-06-27 16:01:44

    昨日终于踏出PHP学习第一步,在电脑上听了孙仲岳老师一堂课。

    第一次感受到什么叫相见恨晚

    PHP确实是非常的不错东东

    台湾老师讲课真的很棒

    风趣幽默,有条不紊,十分有亲合力

    接下来就是PHPing

    6/28 浙图借PHP相关书籍

    6/29 完成teacher孙的另外4堂课,编写几个段小代码

  • 编程语言分类简介

    yunhai_222 发布于 2008-06-27 23:54:50

    计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。 

    电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 

    计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。 

    目前通用的编程语言有两种形式:汇编语言和高级语言。 

    汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。 

    高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。 

    高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。 

    高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类: 

    解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。 

    编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。 

    [NextPage] 

    学习编程,从何入手 

    如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧! 
    ============================================== 
    方案一 Basic语言 & Visual Basic 

    优点 
    (1)Basic 简单易学,很容易上手。 
    (2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。 
    (3)众多的控件让编程变得象垒积木一样简单。 
    (4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。 

    缺点 
    (1)Visual Basic 不是真正的面向对象的开发文具。 
    (2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。 
    (3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。 

    综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。 

    Basic/Visual Basic简介 
    ============================================== 
    方案二 Pascal语言 & Delphi 

    优点 
    (1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。 
    (2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。 
    (3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。 
    (4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。 

    缺点 
    Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。 

    综述: 方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。 

    Pascal语言简介 
    Delphi简介 
    ============================================== 
    方案三 C语言 & Visual C++ 

    优点 
    (1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。 
    (2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。 
    (3)VC是微软制作的产品,与操作系统的结合更加紧密。 

    缺点 
    对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它的过于专业使得一般的编程爱好者学习起来会有不小的困难。 

    综述: VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。 

    C语言简介 
    ============================================== 
    方案四 C++语言 & C++ Builder 

    优点 
    (1)C++语言的优点全部得以继承。 
    (2)完全的可是化。 
    (3)极强的兼容性,支持OWL、VCL和MFC三大类库。 
    (4)编译速度非常快。 

    缺点 
    由于推出的时间太短,关于它的各种资料还不太多。 

    综述:我认为C++ Builder 是最好的编程工具。它既保持了C++语言编程的优点,又做到了完全的可视化。 

    C语言简介 
    ============================================== 
    方案五 SQL语言 & Power Builder 

    对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,PowerBuilder也许是最好的数据库开发工具。各种各样的控件,功能强大的PowerBuilder语言都会帮助你开发出自己的数据库应用程序。 

    [NextPage] 
    JSP简介 

    在Sun正式发布JSP(Java Server Pages)之后,这种新的Web应用开发技术很快引起了人们的关注。JSP为创建高度动态的Web应用提供了一个独特的开发环境。按照 Sun 的说法,JSP能够适应市场上包括Apache WebServer 、IIS4.0在内的85%的服务器产品。 

    JSP与ASP的简单比较 

    JSP与Microsoft的ASP技术非常相似。两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在ASP或JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面只依赖于Web服务器,而ASP和JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP和JSP都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。 

    ASP的编程语言是VBscrīpt之类的脚本语言,JSP使用的是Java,这是两者最明显的区别。 

    此外,ASP与JSP还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在ASP下,VBscrīpt代码被ASP引擎解释执行;在JSP下,代码被编译成Servlet并由Java虚拟机执行,这种编译操作仅在对JSP页面的第一次请求时发生。 

    运行环境 

    执行 JSP 代码需要在服务器上安装 JSP 引擎。此处我们使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。为便于学习,这个软件包提供了大量可供修改的示例。安装 JSWDK 之后,只需执行 startserver 命令即可启动服务器。在默认配置下服务器在端口 8080 监听,使用 
    http://localhost:8080 即可打开缺省页面。 

    在运行 JSP 示例页面之前,请注意一下安装 JSWDK 的目录,特别是" work "子目录下的内容。执行示例页面时,可以在这里看到 JSP 页面如何被转换成 Java 源文件,然后又被编译成 class 文件(即 Servlet )。 JSWDK 软件包中的示例页面分为两类,它们或者是 JSP 文件,或者是包含一个表单的 HTML 文件,这些表单均由 JSP 代码处理。与 ASP 一样, JSP 中的 Java 代码均在服务器端执行。因此,在浏览器中使用"查看源文件"菜单是无法看到 JSP 源代码的,只能看到结果 HTML 代码。所有示例的源代码均通过一个单独的" examples "页面提供。 

    Java Servlet是一种开发Web应用的理想构架。 JSP以Servlet技术为基础,又在许多方面作了改进。JSP页面看起来象普通HTML页面,但它允许嵌入执行代码,在这一点上,它和ASP技术非常相似。利用跨平台运行的JavaBean 组件,JSP为分离处理逻辑与显示样式提供了卓越的解决方案。JSP必将成为ASP技术的有力竞争者。 

    [NextPage] 
    SQL语言简介 

    SQL全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。 

    Structured Query Language包含4个部分: 

    数据查询语言DQL-Data Query Language Select 
    数据操纵语言DQL-Data Manipulation Language Insert, Update, Delete 
    数据定义语言DQL-Data Definition Language Create, Alter, Drop 
    数据控制语言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK 

    SQL的历史 

    在70年代初,E.E.Codd首先提出了关系模型。70年代中期,IBM公司在研制 SYSTEM R关系数据库管理系统中研制了SQL语言,最早的SQL语言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of R&D上公布的。 

    1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS数据库系统中也实现了SQL。 

    1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。 

    1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89, 该标准替代ANSI X3.135-1986版本。该标准为下列组织所采纳: 

    ● 国际标准化组织(ISO),为ISO 9075-1989报告“Database Language SQL With Integrity Enhancement” 
    ● 美国联邦政府,发布在The Federal Information Processing Standard Publication(FIPS PUB)127 

    目前,所有主要的关系数据库管理系统支持某些形式的SQL语言, 大部分数据库打算遵守ANSI SQL89标准。 

    SQL的优点 

    SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。 

    (1) 非过程化语言 

    SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。 这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。 

    (2) 统一的语言 

    SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。 SQL为许多任务提供了命令,包括: 

    ● 查询数据 
    ● 在表中插入、修改和删除记录 
    ● 建立、修改和删除数据对象 
    ● 控制对数据和数据对象的存取 
    ● 保证数据库一致性和完整性 

    以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。 

    (3) 是所有关系数据库的公共语言 

    由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。 

    [NextPage] 
    Java语言简介 

    一. Java的由来 

    当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢? 

    Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。 

    在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。 

    二. Java的定义 

    Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。 

    Java的开发环境有不同的版本,如sun公司的Java Developers Kit, 简称 JDK。后来微软公司推出了支持Java规范的Microsoft Visual J++ Java开发环境,简称 VJ++。 

    三. Java的特点 

    1. 平台无关性 

    平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使 用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在 硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。 

    2. 安全性 

    Java的编程类似C++,学习过C++的读者将很快掌握Java的精 髓。Java舍弃了C++的指针对存储器地址的直接操作,程序 运行时,内存由操作系统分配,这样可以避免病毒通过指 针侵入系统。Java对程序提供了安全管理器,防止程序的 非法访问。 

    3. 面向对象 

    Java 吸取了C++面向对象的概念,将数据封装于类中,利用类 的优点,实现了程序的简洁性和便于维护性。类的封装性、 继承性等有关对象的特性,使程序代码只需一次编译,然后 通过上述特性反复利用。程序员只需把主要精力用在类和接 口的设计和应用上。Java 提供了众多的一般对象的类,通 过继承即可使用父类的方法。在 Java 中,类的继承关系是单一的非多重的,一个子类 只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类 为 Object 类, Object 类功能强大,经常会使用到它及其 它派生的子类。 

    4. 分布式 

    Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 

    5. 键壮性 

    Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供: Null指针检测、 数组边界检测、 异常出口、 Byte code校验。 

    四. Java与C/C++语言 

    Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C++安全性不好,但C和C++被大家接受,所以Java设计成C++形式,让大家很容易学习。 

    Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。 

    Java去掉了以下几个C和C++功能: 
    指针运算 
    结构 
    typedefs 
    #define 
    需要释放内存 

    这将减少了平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。 

    面象对象:Java实现了C++的基本面象对象技术并有一些增强,(为了语言简单,删除了一些功能)。Java处理数据方式和用对象接口处理对象数据方式一样。 

    五. Java与Internet 

    我们知道,早先的 www 仅可以传送文本和图片,Java的出现实现了互动的页面,是一次伟大的革命。 

    Java并不是为 Internet,WWW而设计的,它也可以用来编写独立的应用程序。Java 是一种面向对象语言。Java 语言类似于 C++ 语言,所以已熟练掌握 C++语言的编程人员,再学习 Java 语言就容易得多!Java 程序需要编译。实际上有两种 Java 程序:一种 Java 应用程序是一个完整的程序,如 Web 浏览器。一种 Java 小应用程序是运行于 Web 浏览器中的一个程序. 

    Java程序和它的浏览器HotJava,提供了可让你的浏览器运行程序的方法。你能从你的浏览器里直接播放声音。你还能播放页面里的动画。Java还能告诉你的浏览器怎样处理新的类型文件。当我们能在2400 baud线上传输视频图象时,HotJava将能显示这些视频。 

    当今Internet的一大发展趋势是电子商务,而Internet的安全问题是必须解决的问题,通常大的部门应设置防火墙,阻止非法侵入。 

    电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能 与运行于不同平台的机器的全世界客户开展业务。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。 

    Java程序被放置在Internet服务器上,当用户访问服务器时,Java程序被下载到本地的用户机上,由浏览器解释运行。 

    [NextPage] 
    PowerBuilder简介 

    PowerBuilder的产生 

    PowerBuilder是美国著名的数据库应用开发工具生产厂商PowerSoft推出的成功产品,其第一版于1991年6月正式投入市场。它是完全按照客户/服务器体系结构研制设计的,采用面向对象技术,图形化的应用开发环境,是数据库的前端开发工具。 

    PowerBuilder的特点 

    它支持应用系统同时访问多种数据库,其中既包括Oracel,Sybase之类的大型数据库,又包括FOXPRO之类支持ODBC接口的小型数据库,PowerBuilder是完全可视化的数据库开发工具,它提供了大量的控件,大大加快了项目的开发速度,也使开发者更容易掌握数据库的开发。 

    它使用的编程语言叫做工PowerScripr,它也是一种高级的,结构化的编程语言。Powerscrīpt提供了一套完整的嵌入式SQL语句,开发人员可以像使用其它语句一样自由地使用SQL语言,这样就大大增强了程序操纵和访问数据库的能力。可以说PowerBuilder既适合初学者快速学习数据库的开发,又可以让有经验的开发人员开发出功能强大的数据库,是一种适用面非常广的开发工具。 

    PowerBuilder是一个用来进行客户/服务器开发的完全的可视化开发环境。使用PowerBuilder,你可以用一种可视的直观的方式来创建应用程序的用户界面和数据库接口。这是一个总的概念,实际上是开发人员使用PowerBuilder去开发应用程序,由于所开发的各种应用程序充分利用了图形用户接口(GUI)的优点,所以PowerBuilder被认为是一个图形工具。 

    在客户/服务器结构的应用中,PowerBuilder具有描述多个数据库连接与检索的能力。特别是PowerBuilder能从大多数流行的RDBMS中存取数据,且不管数据存放在什麽地方;另外,各种应用程序又可以独立于RDBMS,因为PowerBuilder可以使用数据库的标准操作语言SQL(结构化查询语言)进行。 

    使用PowerBuilder,可以很容易地开发出功能强大的图形界面的访问服务器数据库的应用程序,PowerBuilder提供了建立符合工业标准的应用程序(例如订单登记、会计及制造系统)所需的所有工具。 

    PowerBuilder应用程序由窗口组成,这些窗口包含用户与之交互的控件。开发人员可以使用所有标准空间(如按钮、复选框、下拉式列表框或编辑框)以及PowerBuilder提供的特殊的使应用程序更易于开发和使用的控件。 

    通常人们把PowerBuilder看成是一种开发工具,实际上它比其他工具强得多,是一种强有力的开发环境。开发人员不仅能用它来开发用户容易使用的各种应用程序还可以通过PowerBuilder修改数据库,利用400多个内部定义函数,可以开发能和其他应用程序进行的各种应用程序。 

    PowerBuilder正在成为客户/服务器应用开发的标准。相对于其他任何客户/服务器开发环境,PowerBuilder使开发人员的工作更快、成本更低、质量更高、功能更强。 

    PowerBuilder为应用开发提供了全面综合性的支持,可以分别概括为如下几点: 

    事件驱动的应用程序 
    功能强大的编程语言与函数 
    面向对象的编程 
    跨平台开发 
    开放的数据库连结系统 

    PowerBuilder开发环境 

    PowerBuilder开发环境由一系列集成的图形画板(Painter)组成,应用开发人员通过简单的鼠标操作即可设计、建立、交互检验和测试客户/服务器应用程序。 
     (转载)

  • 在ubuntu下调通了XPCOM

    jinlongfei 发布于 2008-06-28 09:57:34

    1.安装SDK
    sudo apt-get install xulrunner-1.9-dev
    2.新建nsIMyCom.idl
    #include "nsISupports.idl"
    [scrīptable, uuid(0a00c48b-e956-4812-a142-aac76cbdcb56)]
    interface nsIMyCom : nsISupports
    {
            long Add(in long a, in long b);
    };
    3.新建nsMyCom.h
    #ifndef _nsMyCom_h_
    #define _nsMyCom_h_

    #include "nsIClassInfoImpl.h"
    #include "nsIMyCom.h"

    #define NS_MYCOM_CID \
      {0xdcc47191, 0x4c95, 0x415d, \
      {0x97, 0xb4, 0xc6, 0xb9, 0x0f, 0xf0, 0x9e, 0xe8}}

    #define NS_MYCOM_CONTRACTID "@lws.org/mycom;1"
    #define NS_MYCOM_NAME    "XPCOM TEST"

    class nsMyCom : public nsIMyCom
    {
    public:
      NS_DECL_ISUPPORTS
      NS_DECL_NSIMYCOM

      nsMyCom();

    private:
      ~nsMyCom();

    protected:
      /* additional members */
    };

    #endif
    4.新建nsMyCom.cpp
    #include "nsMyCom.h"
    #include "nsMemory.h"
    NS_IMPL_ISUPPORTS1_CI(nsMyCom, nsIMyCom)

    nsMyCom::nsMyCom()
    {
    }

    nsMyCom::~nsMyCom()
    {
    }

    NS_IMETHODIMP nsMyCom::Add(PRInt32 a, PRInt32 b, PRInt32 *_retval)
    {
        *_retval = a + b;
        return NS_OK;
    }
    5.新建nsMyComModule.cpp
    #include "nsIGenericFactory.h"
    #include "nsMyCom.h"
     
    NS_GENERIC_FACTORY_CONSTRUCTOR(nsMyCom)

    NS_DECL_CLASSINFO(nsMyCom)
     
    static const nsModuleComponentInfo components[] =
    {
        {
             NS_MYCOM_NAME,
            NS_MYCOM_CID,
            NS_MYCOM_CONTRACTID,
            nsMyComConstructor
        }
    };

    NS_IMPL_NSGETMODULE(nsMyComModule, components)
    6.新建Makefile
    CPP = g++
    CPPFLAGS += -fno-rtti -fno-exceptions -shared
    GECKO_SDK_PATH = /usr/lib/xulrunner-devel-1.9/sdk
    XPIDL = $(GECKO_SDK_PATH)/../bin/xpidl
    CPPHEADER = -m header
    TYPELIB = -m typelib
    REGDIR = /usr/lib/xulrunner-1.9
    OUTDIR = $(REGDIR)/components
    GECKO_CONFIG_INCLUDE = -include xpcom-config.h
    GECKO_DEFINES  = -DMOZILLA_INTERNAL_API
    GECKO_INCLUDES = -I$(GECKO_SDK_PATH)/include \
        -I/usr/include/nspr
    GECKO_LDFLAGS =  $(GECKO_SDK_PATH)/lib/libxpcomglue_s.a \
        -L$(GECKO_SDK_PATH)/lib -L$(GECKO_SDK_PATH)/../bin -lmozjs -lxul -lxpcom -lsqlite3 \
        -L/usr/lib/nspr -lnspr4

    GECKO_IDL = -I$(GECKO_SDK_PATH)/idl
     
    build: idl nsMyCom.o nsMyComModule.o
        $(CPP) $(CPPFLAGS) -o libxpmycom.so $(GECKO_DEFINES) \
        nsMyCom.o nsMyComModule.o $(GECKO_LDFLAGS)
     
    idl: nsIMyCom.idl
        $(XPIDL) $(GECKO_IDL) $(CPPHEADER) nsIMyCom.idl
        $(XPIDL) $(GECKO_IDL) $(TYPELIB) nsIMyCom.idl
     
    nsMyCom.o: nsMyCom.cpp
        $(CPP) $(GECKO_CONFIG_INCLUDE) $(GECKO_DEFINES) \
        $(GECKO_INCLUDES) -c nsMyCom.cpp -o nsMyCom.o
        
    nsMyComModule.o: nsMyComModule.cpp
        $(CPP) $(GECKO_CONFIG_INCLUDE) $(GECKO_DEFINES) \
        $(GECKO_INCLUDES) -c nsMyComModule.cpp -o nsMyComModule.o
             
    install:
        cp nsIMyCom.xpt $(OUTDIR)/
        cp libxpmycom.so $(OUTDIR)/
     
    clean:
        rm *.o
        rm *.so
        rm *.*~
        rm *~
    7.编译生成
    make clean
    make
    sudo make install
    8.新建测试网页test.html
    <html>
    <head>
    <title>
    测试XPCOM组件
    </title>
    </head>
    <body>
    <scrīpt>
    function test()
    {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    var mycom = Components.classes["@lws.org/mycom;1"].createInstance();
    mycom = mycom.QueryInterface(Components.interfaces.nsIMyCom);
    alert(mycom.Add(3,5));
    }
    </scrīpt>
    <form name="form_test">
    <input type="button" value="testxpcom" ōnClick = "test();">
    </form>
    </body>
    </html>
    9.测试
    sudo touch /usr/lib/xulrunner-1.9/.autoreg
    firefox test.html

    10. 其它
    将Makefile中CPPFLAG注释掉,可以帮助检查component编译的情况
    使用:
    export NSPR_LOG_MODULES=nsNativeModuleLoader:5
    export NSPR_LOG_FILE=~/log
    可以将firefox运行的日志记录下来,里面有components注册的信息

  • 求助的态度

    jibaojin 发布于 2008-06-28 13:05:32

    我们每个人,在学习中,生活中,工作中等等可能随时随地都有要求助别人的事情。那么我们该怎么去有效的获得别人的帮助,以及使别人能够很乐意的去帮助你并且之后也同样很开心呢,我想这是一个很值得研究的问题,也一定有很多前辈已经研究了很多,我只是想在这里谈谈自己的一些切身感受和想法,因为今天发生的一件不愉快的事情触发了一些积压了很久的一些情绪。

    这是今天早晨发生的一幕。“小姬,过来给我看个问题”,好的,我很乐意去帮你。是一个关于图像存储的问题,我们分析了一会儿得出的结论是:图像数据并没有被改变,所以存储的当然还是原来的图像,并不是想要的画了特征点的图像,而这个图像也并没有存储的意义,因为后续的运算也并不用到它,只算是一个演示效果图而已,那么结论是:截取这个运行结果图像就可以了,不用存储。“这个我也知道,早就想到了,问你等于白问了”,瞠目结舌,但也并没有很吃惊,因为这不是第一次帮助她的不愉快。但是这一次真的让我几乎要爆发,“好,是我犯贱了!”我的胸怀真的还没有这么宽广,我没有办法容忍这样的无礼和无知!

    我想每个人都没有责任一定要去帮助别人什么,但我们大多数人还是乐意去帮助别人的。但是无论结果如何,不管别人有没有真的帮到你,只要有心去帮你了,无论如何都不应该去以怨报德吧?我们怎么说也算是有些文化的人吧?怎么就会如此的不开窍呢?站在帮助者的立场上来想,既然愿意提供帮助,我想我们当然希望能够帮到受助者,但有时候可能我们能力有限等等原因,并没有真的解决问题,即使是这样,我们的努力就毫无价值了吗?我想这几乎是一些基本的道德问题吧。从受助者的角度来讲,为什么就不能有一颗感恩的心,为什么不去想想别人为什么一定要帮我们?所以不管有没有真的获得我们所希望的帮助,至少别人有这样的心,别人努力过,我们就应该去感谢,这不算什么过分的要求吧?

    自己在学习工作中遇到的问题也经常在论坛中发帖求助,不管每一个回复的答案能不能真的解决问题,但我很感谢那些能够回复的人,因为他们关注过。记得前段时间的毕设指导的几个学弟,他们论文致谢中一句感谢的话,就让我感觉很温暖很有成就感。只是一句简单的话,足以彰显人性的美和善良。生活中,我们也总是在扮演着求助者或者受助者的角色,如果我们能够学会尊重和感恩,我想生活也许就会变得容易了很多。

    今天的不愉快就到此为止吧,写下这些文字,提醒自己,也勉励每一个人:我们不应该忘记尊重和感恩。

    ps:看到了这样的一篇文章觉得说的很有一些道理,也许我们都遇到过这样或者那样相似的一些场景,转贴于此,共同勉励:

    实早就想写这样一个贴来说说心里话,因为在这方面,现在的自己有太深太多的感触。。。需要说明的是,写这样一个贴表达这样一种“情绪”,并非想侧面去彰显自己什么“成绩”,也并非想暗示自己什么方面“能耐”;大猫遵循做人原则一直是谦逊、塌实,不想去刻意得到别人什么认可,更不想曲意迎奉他人;走自己选择的路,做自己喜欢的事,结交合自己“脾性”的朋友足矣~
    凡开店时间稍长,都会遇到被他人“求助”之时;说个不恰当比喻~,动物尚有“团队合作的互助本能”,作为高智商群居生活的人,当然更是都有“求人之急”和“被求之需”的时候;而正因为人类有别于动物还上升到更高一层精神境界,所以在前赴后继的淘宝队伍中,总有那么一些无私的前辈在为我们默默无闻的“奉献”,而我在最初也深受其惠;靠借鉴“前人”摸索的经验少走了很多弯路;现在,自己也从一个新人变成别人口中的“前辈”了,很自然地就循着“前人轨迹”,力所能及尽着一些“举手之劳”;因为我知道,当一个人在一条四分五叉的路口上,而眼前一片黑暗又不知如何行进,却有人适时地把他(她)朝光明的一面“推”了一把;尽管结果可能做不到马上“逢凶化吉、逢难必解”,但怎么说“朝向光明”的人心里也会感受到一丝被人关怀的温暖,而这样的“余热”或许会绵长久远的伴随他(她)更有信心的走下去
    现在见过太多这样的新人抱怨或者感叹:“如今愿意有耐心去帮助别人的人太少”,他们向我诉说屡遭闭门羹或得到置之不理的郁闷;而我却在想,当他们感叹“世态炎凉”、抱怨无人热情相助之时,有没有对自身去好好的反思反思?在淘宝我相信绝大多卖家都是自己学习、逐渐进步成长的,他们唯一借鉴的就是“前人”经验和自己反复实践,在无数个问题面前,不是选择放弃逃避而是穷追不舍直到“柳暗花明”,但这样的摸索积累过程,在有些新手眼里,是在浪费时间浪费精力,他们不愿花时间去学而只希望依靠别人相助解决,而由此产生的各式各样求助心态,也让很多被“求助”者感到无奈甚至失望;我现在也算是面对过不少形形色色的“求助”者,今天总结出来,意思很简单,“求助”与“被求助”者之间如果多一份理解和宽容,淘宝这个大家共同为之奋斗的家园也许会变得更和谐美好一些。(为清晰直观,每类都有具代表性对话样版一例,这些版例大部分都是自己亲历,希望与众多新老朋友一起探讨交流~)。
    一、啥问题都依赖别人相助的“求助”者
    “请教为什么我的宝贝图片显示不出来呢?”
    “是不是图片像素太大没有压缩?如果是在500X500像素,120K以下就没问题”
    “哦,这样吗?还要压缩阿?晕死”
    类似还有“顾客刚拍了我的东西我到哪去看呢?”,“顾客刚拍了我一件东西我怎么完成交易阿?”,“告诉我我要怎么发货呢?”等等这些作为一个淘宝卖家最应掌握的基本常识问题,但这样的“求助”者却占了询问中的90%还要多;我在想,如果一个立志创业的新手连最起码的基础学习时间都省免,出现问题再去一个个临时抱佛脚,怎么不会受到别人不理睬的对待呢?象这样的基础知识一条条列出来,恐怕上百条都有,你有时间问得过来恐怕别人未必正好有时间帮得过去;我就试过一次最多被近十个“求助”者同时询问的无奈;但反观这些“难题”又都是完全可以靠自己解决的基本常识,这怎不叫我常常去无奈的感叹;大家来淘宝都是开店的,很多都是利用空余时间勤恳经营,虽然没有规定谁有这个义务去为他人解答;可如果要你天天去面对这样的“求助”问题,不感到心累是假的~
    二、毫无礼貌且无感恩之心的“求助”者
    “在?”
    “在的”
    “有个问题问你一下”
    “请说”
    ……问题解决过程省略……
    “恩,知道了,下次有问题还找你,88”
    愿意助人之人其实都不会刻意去寻求什么回报,也许他们满足于这种心灵付出的惬意,看到别人因自己微薄之力而茅塞顿开,甚至有比别人还开心的甜蜜~,不是有句话叫“助人为快乐之源”吗?说的就是这样一种境界;而我更觉得,在看似“举手之劳”的背后,却有着一份热忱被人认同和尊重的期望,哪怕对方只是一个“请”字、一句“谢谢”、一个笑脸的回应也足以会让人感到欣慰;如果诚心相助相对的却是冷语冷面,我觉得这就是对付出者善心的轻视。或许这样说有些严重,但就象“感恩的心”这首歌名一样,哪怕只是怀着感恩的心,这个社会也会多一份理解的温情
    三、不尊重理解别人的“求助”者
    “在吗?”
    “现在好忙对不起”(旺状态已显示忙碌中)
    “我有个问题想问”
    “过会请理解好吗?”
    “就是顾客买了我的东西后却一声不吭给了中评,我怎么办呢?”
    “晕,过会好吗?”(我汗都出来了)
    “我好气愤阿5555,你告诉我怎么办5555”
    “@@......”()
    (老总电话再次催交,我只好丢下“求助”者……个中滋味真是难以言表……)
    这样的求助者我遇到也不少,真的可谓是心有余而力不足;我真的没有更好的办法去两全其美,只能弱弱的希望这样的“求助”者,有时能换一种角度去替别人着想一下;可以说,当你向别人提出一个问题时,别人是要放下手头工作才能尽到帮助之宜;而如果正好赶上别人心急忙乱在处理工作或别的事务,你却“不依不绕”去“追根刨底”,那不亚于就是在给别人头上“火上浇油”,这样的“咄咄逼人”不遭遇“怠慢”的后果才怪~;如果都以体己之心去体恤他人,彼此之间的关系是不是会更融洽更轻松一些呢?。
    四、大言不惭“理所当然”的“求助”者
    “大猫在吗?可以帮我个忙吗?”
    “在的~,有什么问题吗?”
    “我学着做签名档可做不会,好烦”
    “没有谁一次就行,是要多尝试,我当初也是做了十几二十次才成功呢~”
    “你跟我做一个好吗?反正你已经学会了”
    “@@……”(我还能说什么呢)
    类似还有“你经验比我丰富帮我去申诉好吗?”,“我想要几个银币你发个“求救贴”把银币赏给我吧”等等,我想不少人也会遇到这样大言不惭的“求助”者,而我却屡屡遭遇;虽然我真的想尽心帮每一个人,可自己的能力、精力毕竟太有限,在加上遇到的是这样的“要求”,叫我怎么不“欲哭无泪”~;因为这不象顶贴,几秒钟可以搞定的事,而自己的水平也是半壶水在荡,真要跟别人帮做,什么事都放下忙2天也不定做得出来,可这样现实吗?我不知道轻易向别人提这样“要求”的人是怎么考虑的,而这样的“要求”打死我也跟别人开不了这个口;现在每遇到这样的“求助”问题,我只好在内心不解地摇头感叹一番,因为无可奈何所以很多时我都无措
    五、“以怨报德”恼羞成怒的“求助”者
    “在吗?帮我看一个问题吧”
    “在的~,但我现在在上班有点忙,有什么站内信或留言,我会尽力”
    “你不帮就不帮,扯那么多理由干什么呢?”
    “??? @@……”
    “问你是看得起你,你牛什么阿?”
    “@@ ……@@……”(我遭谁惹谁了我?)
    帮人如果帮到这份上我看还真是有点“心寒”,有句话说“得人一掬还人一桶”我们不奢求别人还什么“一桶”,但也不至于要遭惹这样的埋汰吧~;难道“求助”者不知道你是在做一件要别人帮助你的事吗?难道你去找别人仅仅是为了发泄胸中郁闷?难道你义愤填膺的对象竞可以信手拈来?这样的人性是不是有点偏执呢?我看要全都是这样的“求助”者,恐怕没有谁再敢理会任何“求助”问题了;我只有又一次弱弱的希望,请多理解一点还存有助人之心的人,请不要打击还愿意伸出友爱之手的善良之人
    六、以“利”为诱的“求助”者
    “你的签名档做的真漂亮”
    “是吗谢谢,自己学的呢”
    “可以教我做一个吗?如果我学会了我买你一样东西”
    “真的吗?可以阿~,那一言为定哦”(因为是新手当然很期待用自己的努力换来成交)
    在用了几天时间认真教会对方后,对方即消失得无影无踪……
    这是我认识的一个朋友真实案例,在我们聊到助人的无奈时,她告诉了我这样一个故事,说实话,虽然不足挂齿,但不知道为什么很痛心听到这样的事,因为我知道,在那样一个带着小小的简单而纯粹的“希望”面前,她是在多么认真的去帮助对方,可结果却是那么的无助和失望;我不知道,这样的“求助”者何以要用这样的“手段”去得到自己的想要,何以要用这样的方式去欺骗一个涉世未深带着渴求和梦想的纯朴心灵,难道你在享受别人辛劳付出后获得的“成功”时,没有去扪心自问:自己是否在堂堂正正活着,清清白白的做人
    七、要求完全有些过份的“求助”者
    “你的宝贝模版是自己做的?太好了,跟我产品风格很接近,那把代码发给我,我也顺便用用,反正是你自己做的不费事”
    “我也想有一个你这样的店面装修效果,但我学不进去,大家都是朋友了跟我做一套吧”(还指明是一套晕死@@……)
    “跟我写个精华贴,要是你觉得不划算我给你钱”
    “我开业好长时间没人,你帮我买个东西好吗?”
    ……
    面对这样的求助者可以说让人“晕眩”,不知道还有没有人象我一样遇到这类型“高难度”“求助”者;我觉得这完全是在考验人的“耐性和忍受力”,我甚至觉得是在间接“伤害”还愿意去助人之人的积极性,“求助”者不知道要给这些存有助人之心的人一点宽容和理解;不知道有些“要求”可以提,有些要求不合理就不要去让对方为难犯蹙
    以我们提倡:对于助者,有助人之德当值得褒扬,但无须无原则的一概应允,让一些太过依赖的惰性泛滥;对于“问”者,善解人意值得相帮,但切忌理所当然最后还怨天由人;只有彼此互体谅、互友善、互理解、互仁爱才是快乐的和平之道。
951/512345>
Open Toolbar