预览模式: 普通 | 列表
    如果管制指的是限定最高价格的话,效率会提高。如果价格管制指的是公共定价(政府制定一个固定价格),那么免税也不会引起效率改变。
    比如一件产品100块时有100个人买假定需求弹性是1,也就是单位弹性,也就是说价格上涨1块,买产品的人少1个(如果弹性高于1,那么价格上涨一块买的人会少很多,即富有弹性,如果弹性低于1,则销售量的减少比价格的上升量要小,即缺乏弹性)。
    现在假如政府开始征税,税收是40,那么对企业来说,最佳的定价是120。因为假如税完全让客户承担,那么市场价格变为100+40=140,销量则变为100-40=60,收入是(140-40)×60=6000。而如果完全自己承担,则收入为(100-40)×100=6000。实际上可以求出价格在120时企业的毛利正好最大化,为(120-40)×80=6400。
    价格为120的时候,企业收入是6400,政府税收是40×80=3200,总效率是9600,原来的总效率是100×100=10000,两者相减可得税收造成的效率损失是400。
因此如果此时减税,比如从40减到20,那么同理,市场价格应该变为110,总效率是110×90=9900,效率提高了300。
    如果价格是由政府限定的,必须为120,那么减税造成的结果是企业收入8000,政府税收1600,总效率仍为9600。也就是说,有两千块钱从公共财政转移给了企业,没有造成社会总效率的变化。
    理论上就是这样,比如政府限定了汽油的价格,那么减税对效率也没啥作用。假如原油价格上涨,而政府不希望石油产品涨价,那么只要一方面规定油价不变,一方面相应减税,就行了。

查看更多...

Tags: 经济学

分类:思考感悟 | 固定链接 | 评论: -1 | 引用: -3 | 查看次数: 7956

    Windows、Mac OS X和Linux的动态链接库/共享库各有千秋。在这里简单介绍下Mac OS X的共享库。Mac OS X的内核是BSD和Mach混合而成的。由于Mach核心处理CPU相关的最核心的任务,包括线程调度等,因此Mac OS X的原生可执行文件是Mach-O(O是Object的缩写)格式。因此Mac OS X的共享库也一般基于该格式。
    Mac OS X除了有框架和包罗框架(又译伞状框架,两者的扩展名都为.framework的包,在此不多做介绍)之外,还有两种共享库格式。一种的扩展名为.dylib,被称为MH_DYLIB格式,是一种仅仅在内存中共享代码的简单的动态库,它不能被其它代码显式的载入。一般在XCode直接创建的BSD、Carbon或Cocoa动态库并进行编译,就能得到这种库。
    另外有一种能被代码(一个程序或另一个共享库)显式载入的“插件”库,它是.so的单一格式文件,或者为.bundle的包(如果有相关资源的话,实际上包中的主程序也是.so格式的库)。它被称为MH_BUNDLE。比如ODBC Driver在Mac上一般应该被编译为这种格式,这样它才能被ODBC Driver Manager(也是一个共享库,请参见
软件开发技术科普之一)显式载入。MS Office的Mac版中的一些.bundle包也是这种格式的动态库。
    用XCode 2.2以上版本编译MH_BUNDLE有些麻烦,曾一度被怀疑为Bug,并在国外一些知名苹果软件开发论坛或邮件列表中有相关的讨论,做法如下:
1、双击Targets中的项目
2、弹出Target Info对话框,切换到Build选项卡以修改其中的选项(每个选项均对应一个GCC 4的编译选项)
3、将Mach-O Type改为bundle
4、此时如在XCode 2.2以上(我用的是2.4)中编译会遇到编译器错误:-compatibility_version only allowed with -dynamiclib,无法link。
5、打开Target Info对话框,在build面板中找到Current Library Version项,默认值为1,单击Edit,清空随后弹出的下拉对话单(sheet window)中的内容,注意直接将1删除是没用,XCode还会把它改回来。
6、再次编译,遇到错误-current_version only allowed with -dynamiclib
7、回到Target Info对话框,找到并用同样的办法清空Compatibility Version。
8、第三次编译,会显示-single_module or -multi_module flags can only be used when -dylib is also specified错误。
9、再次回到Target Info对话框,在build面板中找到Perform Single-Object Prelink,将其选中。
10、这次编译应该能通过了,在编译前,最好将Executable Extension(文件扩展名)改为.so。
11、可以在Build Results窗口(单击主窗口右下角──状态栏最右边的链接)中,将编译设置改为release,编译之——成功!

Tags: 软件开发 Mac XCode GCC

分类:编程开发 | 固定链接 | 评论: 0 | 引用: -10 | 查看次数: 21976

软件开发技术科普之一:ODBC科普

一、ODBC的目标:
ODBC技术的目标是让数据库应用程序可以链接到各种各样的数据源,而不必重新编译或链接。比如一个程序在启动时,让用户选择数据源,随后执行一系列代码,比如创建一个表、添加几条记录,然后执行完毕。不管用户选择的数据源是什么类型的数据库、是哪个数据库、它的实际操作如何。也就是说可以写出与数据源无关的程序。
比如下面这组REALbasic代码(需要安装Rb的ODBCDatabase插件)能在数据源名称(DSN)“RSS”所指代的数据库中创建一个空白的表,而不必知道“RSS”的类型。用户如果在ODBC管理器中修改了“RSS”,比如将类型从MySQL改为MS SQL Server,这段代码仍能在不需要重新编译、链接的状况下运行,之不过最后会在MS SQL的数据库中创建表而已。
  Dim db As ODBCDatabase
  db = New ODBCDatabase
  
  db.DataSource = "rss" 'the DSN you set
  
  If db.Connect Then
    'Return the database name set by ODBC Setup
    msgbox db.DatabaseName    
    'Create a table
    db.SQLExecute ("Create Table test (texta Text, textb Text)")
    if db.Error then
      MsgBox db.ErrorMessage
    else
      db.Commit
      MsgBox "Create Table Successed!"
    end if    
  Else
    MsgBox db.ErrorMessage
  End If
 
二、如何实现这一目标
实现这一目标的方法是在数据库应用程序和数据源之间添加一个中间层,即ODBC技术。
一般的数据库链接方式是这样的:
数据库程序<——>数据源
加了中间层之后的链接变成了:
数据库程序<——>ODBC Driver Manager<——>ODBC Driver<——>数据源
甚至:
数据库程序<——>ODBC Driver Manager<——>ODBC Driver<—…(多个ODBC Driver)…—>ODBC Driver<——>数据源
或者:
客户端数据库程序<——>客户端ODBC Driver Manager<——>客户端ODBC Driver<—Gateway及其他软件—>服务器端ODBC Driver Manager<——>一系列服务器端ODBC Driver<——>一系列服务器端数据源
 
三、ODBC Driver
就像需要不同的显卡或打印机驱动程序才能将应用程序中需要输出的内容,在不同的显示屏或打印机上输出出来一样,ODBC驱动程序用于将应用程序与数据源链接起来。它专为特定的数据源编写,提供了操作数据源的功能,并为数据库程序提供了一致的接口,这样数据库应用程序就不需要了解数据源的情况而能直接与之通讯了。ODBC驱动程序本质上十一个动态连接库(共享库),在用户访问特定的数据源时被动态加载。
 
四、ODBC Driver Manager
ODBC驱动程序管理器也是一个动态链接库。要它干嘛呢?仔细想一下就知道了,虽然ODBC Driver是一个动态库,因此数据库程序不用与它静态链接起来,但程序中也要定义动态库中所有需要使用的成员函数或结构之类。在C/C++/Obj-C之类的语言中,要包含改驱动的头文件,在Basic中要Declare该库中的所需使用的函数。这样不重新编译或链接应用程序就能操作各种不同的数据源的想法显然没法实现。这样ODBC驱动程序管理器就登场了,它通过数据源名称(DSN)中的信息来操作各种各样的ODBC Driver,而用户开发的数据库应用程序则只要操作ODBC Driver Manager这个动态库就行了。因此在C/C++/Obj-C之类的语言中,如果要使用ODBC来开发程序,一般需要包含ODBC Driver Manager的头文件,而ODBC Driver要通过ODBC Driver Manager才能把处理好的结果反馈给用户写的程序,因此当然也要包含ODBC Driver Manager的头文件。
 
五、ODBC Administrator/DNS (ODBC)和ODBC Setup库
有了ODBC Driver和ODBC Driver Manager,只需要数据源名称(DSN)信息就能操作到数据源了。但驱动也好驱动管理器也好都是动态库,那么用户怎么配置数据源名称(DSN)呢?用户可以手动写注册表(Windows)或ini配置文件(非Windows),或者使用ODBC管理程序,在Windows中叫做“数据源(ODBC)”(控制面板中)。如果需要以图形化方式来配置,还需要带有对话框资源的ODBC Setup动态库(在Windows中一般是必须的)。像Windows ODBC管理器、unixODBC、iODBC一般是ODBC Driver Manager和ODBC Administrator的合称,是带有这两个程序和一些其它实用工具及帮助说明文件的软件包。

查看更多...

Tags: ODBC database

分类:编程开发 | 固定链接 | 评论: 0 | 引用: -3 | 查看次数: 6687

REALbasic图书资料一览

1、REALbasic跨平台应用程序开发
综合类图书
Mark Choate 著
Sams出版公司出版
电子版下载:
CHM格式:http://www.3exware.com/online/Sams.REALbasic.Cross.Platform.Application.Development.Apr.2006.chm
PDF格式:<已删除>
简介:后面有详细的介绍。

2、REALbasic起点教程-从菜鸟到专家
综合类图书
小Jerry Lee Ford著
Apress公司出版
电子版下载:http://www.3exware.com/online/Apress.Beginning.REALbasic.From.Novice.to.Professional.May.2006.pdf
简介:非常好的零起点教程。

3、REALbasic University
综合类图书
作者:《REALbasic Magazine》主编兼出版人Marc Zeedar
电子版下载:http://www.3exware.com/online/REALbasic.University.pdf
简介:虽然是REALbasic 2005前的老东西了,但仍有不少可借鉴之处,http://www.sinomac.com有部分译文,原载:http://www.applelinks.com/rbu/

4、I Declare - Calling External Functions in REALbasic
专业类图书
作者:Charles Yeomans
电子版:http://www.declaresub.com/iDeclare/
电子版下载:请向作者本人购买,如果没有Paypal帐户可通过本人代购(不收取任何手续费只是把好人做到底罢了,价格2美元起)
简介:详细介绍了在REALbasic程序中调用动态链接库和共享库API的原理、方法与技巧,范例翔实完整,在Mac平台的Carbon和Cocoa框架上着墨较多。

5、Windows Api For Visual Basic And REALbasic
专业类资料
作者:Petur J. Skulason
电子版下载:http://www.3exware.com/online/Windows.Api.For.Visual.Basic.And.REALbasic.pdf
简介:详细介绍和比较了在REALbasic和Visual Basic程序中调用Windows动态链接库API的方法,虽然书名中Visual Basic在前,但所有主要范例都是针对REALbasic的,可以作为对I Declare的补充。

免费午餐就到这里了,在http://www.rblibrary.com/中也有不少写的不错的资料,比如Beginning Object-Oriented Programming with REALbasic (http://www.rblibrary.com/rblibrary/index.php?main_page=product_info&cPath=1&products_id=59),可惜没钱是下不到的啊。

查看更多...

Tags: REALbasic

分类:编程开发 | 固定链接 | 评论: 0 | 引用: -3 | 查看次数: 9636

Leopard Tech Talk Confirmation

今天(写完后发现变昨天了)的技术会议搞了一天,根本没有什么休息的时间,一直被大量内容灌,5个人搞了7场报告,涉及9个专题。

演讲者(都是苹果员工)
今天很不爽,跟一个看上去最像中国人的苹果人打招呼,那人对我说“No Chinese”,后来发现是韩国人,对一个和其他演讲者说活都用很西化的英文的人用英文打招呼,那人竟然用中文回答——后来发现是新加坡人。此外还有一个来自苹果总部的技术支持部门总监(一个美国人,不过似乎血统不太纯),和国内技术支持部门的几个人(只有两个演讲了,哦,其中有一个还兼iPod的技术经理,他说:大家要做“iPod”可以找我——吓我一跳,还以为iPod改走品牌授权生产道路了,估计是指车载设备和音响之类的周边产品吧)。

观众
今年来得人超多,竟然超过了百人,还有从南京、杭州等地赶过来的,以及与苹果有直接关系的单位和很多同济大二、三软院常泡苹果实验室的本科生。今天抽了点休息时间和上海镁原的张总经理(张总问旁边一个人“你知道JetPhoto吗?”因此被我当场识破身份)以及上海锐弘的王技术经理进行了一些交流(王感叹说:东北人好多啊……)——和Apple技术搭点边的上海公司差不多都来了,还来了1个杭州的公司,大部分公司主营业务都与硬件、通讯设备等相关,唉,这就是国内Mac开发商的现状吧——纯软件地饿死。总之,我被左边来自吉林的王经理和右边来自哈尔滨的同济软院的小江夹在中间,不过我的出生地比他们还东北。今天,我被MacBook、iBook和MacBook Pro包围了,此外Apple的这几个人还带了3台iMac和至少一台MacBook Pro,只有一位仁兄带个Dell的本子和我HP的平板作伴,因此整个场子中所有计算机相关设备,似乎除了台Sony的投影仪外全部都是美国企业的产品(Sony:慢着,我们不是日本公司)。有一处于众星捧月状态的PLMM在温习9号的MacWorld夹不死大人的Keynots,似乎对技术毫不感兴趣的样子,忽然猛一抬头给上面演讲的仁兄纠正了一个错误(这个表述不太准确),厥~。今日MM有限,但似乎男士们看本本更多于看MM,果然还是Macintosh的魅力大啊!

事故
今天Mac OS X 10.5 Leopard 的开发人员版(还算Beta吧)在演示Spotlight功能时死机了一次。Xcode 3.0 Beta版在build application时Crash了一次。[注:这句话是新加坡语,下文会详细解释新加坡语。]我在开启自己的TC1000平板上屏时被禁用的无线网卡后,系统要求重启,但肯能因为硬件冲突手写笔失灵,我又没带鼠标和键盘以至于无法操作(按关机按钮只会休眠——被我设置的)——怪不得Bill Gates每次带Tablet PC必须另备纸笔——总所周知Windows Tablet PC 2005和Windows Media Center 2005操作系统并没有想象的那么美嘛——可能比手写功能不知道能不能支持中文的Mac OS X好——有点担心XX公司即将布的装有Mac OS X的名为ModBook的平板。

地点
五星级酒店服务不错,现磨咖啡、红茶、点心、水果随意,自助餐也非常丰盛——不好意思扯远了,因为现在有点饿。此外,纸笔齐全,有无线网络,右边的王经理时不时的用鸭子和别人聊天、还吧iChat AV和鸭子升级了,要不是比较费电和麻烦,说不定用Parallels打开Windows用Tencent Messager/QQ了。

第一场
第一场是美国大哥(姓名没听明白)讲的,因为他说Under NDA,因此不好多透露细节,主要是Leopard的15个重要改进
1、分辨率无关性:我哭,这意味着以前写的按像素描绘的代码以后会造成很恶心的效果。。。不过这更意味着窗口和字符的大小不会随着分辨率的提高而越变越小,Apple的显示器才96DPI,我就开始怀念72DPI时代文字的大小了,以后如果100朝上没有分辨率无关肯定要用放大镜来操作电脑了。。。
2、Printing Dialog与界面、屏幕打印之类有关,不展开
3、Spotlight改进,主要是plugins for custom file format,这样就一切格式都可搜索了。
4、Quick Look预览的功能了,也可以自己开发Plugins,这样什么格式都能预览。
5、Core Animation 这个超牛,简直和MS.Net Frameworks 3.0的WFP中的部分功能有一拼,Just Set It and Forget It就是这么回事。后面再说,就是没有Carbon框架的支持,哭
6、Time Machine 不提了,自己找资料吧
7、Core Image & Image I/O 后面展开,也牛的说
8、ImageKit Frameworks 后面展开,这个是C-styled的库,因此Carbon和REALbasic程序也有调用的可能吧。
9、Quartz Composition,尤其是那个Quartz Composter工具给我留下深刻印象,一句话介绍:Motion Image without Programming
10、Safari & Webkit, Safari的首个Open Source版本值得期待。
11、Dashboard 有较大改进,至少所有Widgets都被放在一个进程中是好事情,我一开机它就开上一打Widgets还各占一个进程实在比较浪费资源。
12、Dashcode 所见即所得的Dashboard Widgets开发工具,见识了一下封装和自动完成了很多东西,工程管理和开发流程管理也被放进来了,不编写代码也能开发简单而专业的Widgets,比Yahoo的类似同类好用N多,牛啊。
13、Address Book Framework、Calendar Store Framework、iChat Framework。
14、新版Mail
15、新版Automation 从没用过自动化工具,我也搞不清和编写AppleScript之类进行自动化有啥不同,懂的人补充~

第二场
苹果技术支持兼苹果中国iPod技术经理宋振轩讲的。内容是Core Animation。这个太牛了,所有的View类型的控件(继承自NSView的吧)都能Layer画,图层化了之后控件、图像、动画都能旋转、加阴影...实现数百种动画效果,只要设置相应的属性或调用API即可,剩下的就不用管了,Just Set It and Forget It就是这么回事~~~无法用语言表达的牛东东啊。。。反正所有相关的类都是属于LayerKit的因此都已LK开头,比如LKAnimation(根类)、LKTiming(辅助类)、LKAnimationGroup、LKPropertyAnmation及其子类LKBasicAnimation和LKFrameAnimation等。使用Animator代理来使原有代码采用这些效果的做法很不错。

第三场
是韩国人讲的。内容是Xcode 3.0和Interface Builder 3.0。感觉上新版本Xcode 3.0的代码重构功能很强了,语法及编译错误提示更友好了。至于代码紧缩(Block甚至Function级的代码块紧缩)之类的功能Visual Studio早实现了,REALbasic因为是一个Function一个编辑器,因此不存在太大的代码紧缩需要(除非一个函数有上千行),因此也不是什么新东西。至于Objective-C/Objective-C++的似乎没有什么大进步,因此我看到的还是[Object Method:参数值]这样的语法。为啥要用这么搞怪的语言,真够Think Different的,可是Obj-C的语言用户排名都降到49位了,AppleScript和REALbasic则更要靠后,Mac相关的语言都是小语种。。。其他还有Code Focus(除某个Block之外的视野范围内的代码上面都照上灰色)这类小功能。Cocoa和Carbon的hybrid程序介绍。
主要新功能:1、64bit支持——和REALbasic一样增加64的数据类型等等;2、分辨率无关性;3、全新设计的CocoaText(支持Open和MS两种国际标准文件了),而且这个类库是C-styled的;4、新控件和类(DataPicker、NSGradient渐变色图形、菜单项可以是一些复杂的组件——比如滚动条、图标按钮一类的——即MenuItemView对象、NSPathControl——像使用Finder搜索功能时窗口下面会显示的那种路径显示控件、预览一组图片且内置支持CoreAnimation的PhotoGreed控件、跟踪鼠标的NSTrackingArea、类似与Finder搜索功能的策略编辑器的PredicateEditor控件、用于逐一启动并执行一组任务的NSOpertion类...);5、NSView这个基类的新特性:可全屏、支持Dock;6、NSWindow这个基类的新特性:多线程共享;7、NSAlert基类的新特性:提示和警告等对话框上能轻松的加入“不要再次提示”这类复选框,只要修改几个属性即可实现;8、Foundation的新特性(略);9、Obj-C语言改进:自动垃圾收集(可关闭,向Java/C#学习?)、许多新语言功能和新API。

第四场
Spotlight和Quick Look,演讲者。。。忘了,没啥好说的,Demo为主。。。。。。

第五场
开发商支持部的陈志桥讲的吧。题目是Leopard中的图像处理和操作。
主要是:
一、Image I/O框架(支持爆多类型的图象读写,包括各种数码相机自己的RAW原始数据,比QT API用起来简单哦);ImageKit框架,包括:1、由IKImageView控件和ImageView API组成的ImageView;
二、由EditPanel控件和IKImageEditPanelDataSource(用于提供图像的meta数据)等类组成的EditPanel;3、超高性能,同时可以载如和预览上十万张图的Brower控件及类库;4、用于选择图片,也可以用iSight及时拍摄图片,以及作些处理的将被当作一中“Common Dialog”使用的(PictureTaber)控件及类库;5、Slideshow(幻灯片式播放图片的控件及类库);带过滤器(滤镜吧)的FilterBrower控件及类库;
三、增强的CoreImage框架,支持Raw格式、DashBroad(?)、ImageUnit等。。。

第六场
开发商支持部的陈志桥讲的Carbon和Cocoa都有关的内容,最终离不开Carbon——〉Cocoa迁移和上面提到的Carbon与Cocoa混合且Obj-C与C/C++混合的杂种(hybrid)程序。

第七场
Safari与Webkit,Dashboard与Dashcode——总归是网页专题。由新加坡的Chen Leon讲的,用的是以现代汉语语法、句型、虚词和连接词为骨架,以英文实词为肉的hybrid语言,每句句子中的汉语词汇搞不好比日文书面语(尤其是文学作品)中的汉语词汇比例(52%左右)还低。主要内容有很多:
一、Safari:原以KDE浏览器的底层为基础,被Apple在去年开源的WebKit框架(可以看作是内核浏览器)与Safari的外壳浏览器结合的产物,即将出3.0,完全支持所有W3C标准(如CSS2.0之类),支持尚未定案的CSS 3.0标准,支持HttpRequest等微软常用的非标准方法,支持Apple自定义的<canvas></canvas>(新版Opera和FireFox也支持了);对JavaScript增强,如增加Setter/Getter方法(模糊了属性和方法的边界);开始支持SVG(一种用XML描述的矢量图,这个还是比较有名的,因为Adobe的许多产品都支持)。
相关内容还有如何让网页Cross Platform(其实应该是Cross Browser)、可通过终端开启的内置的调试工具、开源的JavaScript调试工具Drosera、Embedding Safari(主要是在自己的程序中用Webkit,比如Mail等用的也是它,REALbasic的HTMLViewer控件在Mac下用的还是它)。
二、DashBoard与Dashcode:前者的改进和后者的演示。

总算完了,欢迎大家修改补充~

Zhu

-------------------------------------------------------
谢谢 Zhu 对这次 Mac
技术交流会详尽地解说!看文章犹如身在会场:)

以下是我对一些东西的小评价:

1、分辨率无关性
Apple
确实是对用户体验极端关注的公司,以后显示器分辨率提高,如果不采取任何措施,那么现在按照常规设计的一些文字、图片等在新显示器上真要用放大镜了:)有了这个技术,程序员们真轻松不少?

2、关于Core Animation/Core Image/ImageKit/Quartz Composition
没有错,苹果机器确实在做设计、图形方面超强,这些改进就是一个证明。

3、Safari & Webkit
很早就知道Safari使用了KDE浏览器的核心,但是发现它改进了不少(因为对比Linux下KDE和Safari对相同页面的解析,结果并不一样);这次它OpenSource,也算在情理中,因为KDE组件都是GPL的。

4、XCode 3.0 & Obj-C 2.0
这些改进还是值得赞许的,虽然苹果的开发算小众群体,怎么说苹果也在努力向“先进的技术方向”靠拢。
“垃圾收集”,更好的IDE支持,对苹果开发者来说真是福音(这些对Win开发者来说已习以为常了)。

最后补充2点,一个是已确认 Apple
在Leopard中会默认支持Ruby/Python的Cocoa绑定。
所以我对Obj-C的改进并不是很期待了,因为有Ruby-Cocoa可以使用了,这个比Obj-C更易用。
还有就是REALbasic2007r2也将支持“代码折叠”,也就是“Code
Folding”,一个好消息!
参见:
http://www.realsoftware.com/feedback/viewreport.php?reportid=esxbbmwt

Ok,就这些,have a nice day!
         Jellen

Tags: Leopard Mac

分类:编程开发 | 固定链接 | 评论: 0 | 引用: -8 | 查看次数: 17928