找回密码
 FreeOZ用户注册
12
返回列表 发新帖回复
楼主: key
打印 上一主题 下一主题

[论坛技术] 向苹果学系统设计的理念

[复制链接]
31#
发表于 21-8-2010 20:16:29 | 只看该作者
回复  

使用道具 举报

32#
 楼主| 发表于 21-8-2010 20:21:44 | 只看该作者
原帖由 coredump 于 21-8-2010 20:16 发表

那就更不属于无歧义了,典型的BUG


我copy & paste过去的,copy的时候带了回车,结果paste进去也回车了。你说bug,估计苹果是打死也不认的。
再说了,那个${ANT_HOME}/binPATH你也不能轻易说是bug嘛。
我后来发现这个问题,是因为我用env | grep 看到了最原始的定义。
不过,我觉得在shell执行的时候,bash应该是做过转换的。这是在shell一层做,
在苹果那里却没有做。
回复  

使用道具 举报

33#
发表于 21-8-2010 20:42:51 | 只看该作者
原帖由 key 于 21-8-2010 19:32 发表


我来数1 :8看看吧,我不一定对,尽力而为了。
首先是resizer的定义,其实质是一个button,鼠标点击后进行拖动的定义是随着鼠标的位置做位置取值,然后用同样的值来输入窗口的长宽。
现在来定义边角控制。相应 ...

你其实给我分析了半天,还是只在分析一个resizer是怎么弄的,而没有说一个resizer和4个resizer工作量上有什么区别。

你这个“原始设计者”的视角,呵呵, 真够原始的...
不才刚好对UI编程方面略有心得,觉得你做这个Resizer有点要命,UI的编程哪有像你这样的思路:
首先不管是什么OS上做Resizer,肯定不会以Button为基础构建Resizer。第二,窗口的边框和窗口的内容一般是由不同的Handle来处理的消息,标题栏和状态栏也肯定是另一个独立的消息handle,所以你想象的要控制鼠标在各个区域不同的指针其实是很简单很自然的事,有什么困难的。
在边界的指针选择,无非就是判断下是左上-右下还是左下右上,真是再简单没有了。拖动调整窗口的逻辑,看起来像是“八个方向”,算法上要处理的其实只有横向和纵向的区别,只需几行简单的程序,四个Resizer全部搞定。
回复  

使用道具 举报

34#
发表于 21-8-2010 20:52:51 | 只看该作者
原帖由 key 于 21-8-2010 19:32 发表

但作为一个设计者,必须把每个角和每条边都详细考虑一次,还要针对不同的环境元素进行考虑


“设计者”的思路不是针对每条边+不同的环境元素进行考虑,而是对边角进行定性分析和归纳抽象,再研究这些抽象和系统内其它抽象元素间的关系。
一个系统里那么多东西,如果都像你这么死板板的思路,“设计者”非累死不可。即便累不死,用这种思路写的代码啊   我祈祷不要让我碰上了
回复  

使用道具 举报

35#
发表于 21-8-2010 21:21:42 | 只看该作者
原帖由 key 于 21-8-2010 19:48 发表
这位同事经验少了些,满足你建议的shut up要求。
但我不能这样做,因为我还需要从他们那里听到更有益的建议。


但愿他们愿意陪你玩儿
回复  

使用道具 举报

36#
 楼主| 发表于 21-8-2010 21:42:21 | 只看该作者
原帖由 woodheadz 于 21-8-2010 20:52 发表


“设计者”的思路不是针对每条边+不同的环境元素进行考虑,而是对边角进行定性分析和归纳抽象,再研究这些抽象和系统内其它抽象元素间的关系。
一个系统里那么多东西,如果都像你这么死板板的思路,“设计者”非 ...


相信你也从DOS时代走过来,如果你是win 1.0的设计者,你会怎样
设计你的系统?几行代码?

既然你在UI编程有心得,相信你也知道WinMain吧?WinMain里的事件响应模型
是怎样实现的?你再想想最早期的Win系统应该是如何定义这一系列东西?
每一个动作,都是有血有肉几百行上千行的代码。更不用说每个鼠标图标都需要
精心定义和设计了。

我很相信你理解我的意思。只是你站的角度和我的角度完全不同而已。
回复  

使用道具 举报

37#
 楼主| 发表于 21-8-2010 22:03:57 | 只看该作者
原帖由 woodheadz 于 21-8-2010 20:42 发表

你其实给我分析了半天,还是只在分析一个resizer是怎么弄的,而没有说一个resizer和4个resizer工作量上有什么区别。

你这个“原始设计者”的视角,呵呵, 真够原始的...
不才刚好对UI编程方面略有心 ...


我想到一个很有趣的证明,不知道你有没有兴趣。用你最熟悉的编程语言,不允许使用任何窗口创建和移动API,
直接用绘图方法来由头构建一个简单的可控大小的窗口系统,来响应鼠标事件,你试试看需要做什么?
如果再要求你必须不同于当于Windows系统的模式,另外建立一套界面,但需要实现四边四角的操控,
先不用考虑实现,你看看设计说明书应该怎样写?

你试试从这两个问题出发,考虑一下。我看过你之前的讨论,知道你是一个不错的程序员。如果我们能调整一下
视角,或者你有不同的看法。

当然,没兴趣就当我上面都是废话好了。
回复  

使用道具 举报

38#
发表于 21-8-2010 22:06:19 | 只看该作者
原帖由 key 于 21-8-2010 21:42 发表


相信你也从DOS时代走过来,如果你是win 1.0的设计者,你会怎样
设计你的系统?几行代码?

既然你在UI编程有心得,相信你也知道WinMain吧?WinMain里的事件响应模型
是怎样实现的?你再想想最早期的Win系统应 ...

唉,不幸我自己写过winmain,更不幸的是我甚至自己曾经用C从HitTest、消息分发开始写过UI系统...
我们之前说的是在一个已经成熟的平台(MacOS)上写Resizer, 根本就用不到这些东西。我现在退一步,即便我们是凭空从消息循环开始写UI,我们是需要处理消息分发,重绘和失效之类的一大堆复杂问题,但这些问题我们只需要处理一次。
我们讨论的是Resizer,也就是窗口已经在那里了,我们只需要为他加上拖动改变大小的控制而已。我需要做的就是在非客户区对鼠标消息做点处理,修改下窗口大小,改改指针之类的,真是再简单不过了。
至于绘制Resizer,修改鼠标指针,这些工作肯定不用重头写一次吧? 不管你是个窗口,还是个按钮或者是Resizer,都是用同样的方式,调用同样的代码。如果你非要说不是,那么只能说明UI系统的“设计者”过分脑残,也说明你说的UI系统非MacOS

[ 本帖最后由 woodheadz 于 21-8-2010 22:08 编辑 ]
回复  

使用道具 举报

39#
发表于 21-8-2010 22:22:14 | 只看该作者
原帖由 key 于 21-8-2010 22:03 发表


我想到一个很有趣的证明,不知道你有没有兴趣。用你最熟悉的编程语言,不允许使用任何窗口创建和移动API,
直接用绘图方法来由头构建一个简单的可控大小的窗口系统,来响应鼠标事件,你试试看需要做什么?
如果 ...


为了向你证明在Mac OS上可以很容易弄个Resizer出来,我得从窗口的绘制和移动开始?
那么我也给你出个题目吧,为了证明“不hard code PORT定义是个很简单的事”,你从编译器开始入手,来试试看需要做什么? 不要把代码编辑器忘了哦,不然你连coding都做不了,更不要说不“hard coding”了。

不是想和你抬杠,只是想说你顶楼举的例子实在是不怎么地而已。
你把我们拉倒巨人Apple前面,我们可以和你一起仰视他,但仰视他不能说明他脚板边上那块发臭了死皮我们也一样需要仰视。也许我们是没资格去说他的脚臭,但捂鼻子权利还是要保留的
回复  

使用道具 举报

40#
发表于 21-8-2010 22:26:45 | 只看该作者
原帖由 花蕾般的钟声 于 21-8-2010 22:14 发表


再打你的屁屁!


回打屁屁100下
回复  

使用道具 举报

41#
发表于 21-8-2010 22:42:30 | 只看该作者
听到花蕾般的打屁声
回复  

使用道具 举报

42#
 楼主| 发表于 21-8-2010 22:43:13 | 只看该作者
我明白你的观点,其实你的观点就是,这些东西都有现成的支撑,
一句话就写完的东西,多想也是多余。

我也明白到通过软件分层,界面组件化之设计之后,这些东西即使重头开始做,
也不是一条边一个框地考虑。

我明白你这些观点。然后如果你喜欢觉得我脑残,我也没有办法。
不过你可能不明白,我和你一样b4这些臭脚皮,我只是思考一个市值两千亿(我没记错吧)的公司
的一块臭脚皮是怎样做出来的。如果一定要说,这是高傲的某人拍脑袋弄出来,我觉得可信度不高。


原帖由 woodheadz 于 21-8-2010 22:06 发表

唉,不幸我自己写过winmain,更不幸的是我甚至自己曾经用C从HitTest、消息分发开始写过UI系统...
我们之前说的是在一个已经成熟的平台(MacOS)上写Resizer, 根本就用不到这些东西。我现在退一步,即便我们是 ...
回复  

使用道具 举报

43#
发表于 21-8-2010 22:48:38 | 只看该作者
原帖由 key 于 21-8-2010 22:43 发表
我明白你的观点,其实你的观点就是,这些东西都有现成的支撑,
一句话就写完的东西,多想也是多余。

我也明白到通过软件分层,界面组件化之设计之后,这些东西即使重头开始做,
也不是一条边一个框地考虑。

...

呵呵,求同存异,继续灌水
对了,还要去打那个花蕾般的屁屁
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 30-4-2024 14:35 , Processed in 0.061157 second(s), 27 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表