Think in G

Never stop ThinkinG…

逻辑、直觉、iBooks Author

without comments

{lang: 'zh-CN'}

原文链接:論理と直感とiBooks Author

译文

说起“逻辑”和“直觉”,人们通常认为这是两个相互对立的概念。关于这两者,可以讨论的方面有许多,在这篇博客中,我想就文书的格式和版式展开些讨论。

从文脉的技术角度来说,所有的文章其构造都应该具有逻辑性。计算机很喜欢这种逻辑结构鲜明的文章。具体说来,写文章的时候,先有标题,对吧?然后是章,每章也有自己的标题,而章又由节构成,节也有标题,其次才是正文…… 作者就是根据这样树状的逻辑结构将文章一点一点堆砌起来的。这样写文章,诸如抽出文章的大纲、简便地生成目录、明确检索目标这样的任务都会变得很方便。这是对于计算机而言的。

那么,文章要给别人看的时候呢?这就需要直觉上的版式了。在页面上布置标题的位置、设计页眉、正文分成四栏、给需要强调的内容配上插图…… 安排各种有助于阅读的要素。这些设计是为读者服务的。在这个过程中,会破坏文章的逻辑结构。心中想着文章的逻辑结构,默念“啊!绝对不能破坏逻辑结构!”,同时,直觉却告诉自己“这样改不是更有助于理解吗?” 于是,逻辑和直觉形成了一种对立。 Read the rest of this entry »

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

January 29th, 2012 at 1:47 pm

关于Core Animation工具箱的构想

with one comment

{lang: 'zh-CN'}

最近在构思一个用于Mac/iOS开发的工具。感觉比较庞大,脑子里的东西比较混乱,决定先把最初的设想写下来,然后再一步步细化。

问题的由来

这个构思的起因是2011年底前的一个iOS项目。设计MM为了吸引用户,在UI中设计了各种可爱的元素。也差不多在这同时,Path 2登场了。其精致的动画让设计MM意识到动画也是体现UI表现力的重要手段。于是,她就开始设计中增加动画元素。

围绕这这些动画效果,我发现在设计和开发过程中有不少问题:

  • UI设计师如何描述动画
    动画与传统的静态UI不同,单单凭借静态的设计是很难把问题说清楚的。如果采用关键帧的方式去绘制一些分镜头的脚本,会给设计师增加不少工作压力。
  • 开发人员如何实现动画
    在Mac/iOS平台上,实现动画主要靠的是Core Animation框架。然而Core Animation比较底层,因此Apple对其进行了封装,提供了Cocoa Animation以方便开发人员实现动画。但不论在Mac还是iOS上,通过编程方式实现动画效果依然需要大量的代码,而且对于比较复杂的动画,开发人员还是需要直接通过Core Animation操纵CALayer、CAAnimation来实现。在我的项目中,最重的view controller里,居然有80%的代码用于实现动画效果。

于是我意识到,这样的开发是有问题的。理由很简单,设计师所设计的是动画,既然是动画,就不应该是几个分镜,几个关键帧这样的半成品。更不应该等到开发人员将代码写出来,再就具体的效果进行讨论。而开发人员也不应该堆砌大量的代码用于动画,因为同时具有艺术感和代码实现能力的开发人员真的非常少。想要做出高质量的动画,这样的过程没有几个回合是搞不定的。总之一句话:

Does real animator write codes? Definitely NOT!

在设计师和开发人员之间必须有个工具扮演桥梁的角色。类似于Flash上的工作流,设计师能够通过该工具直接做出大部分动画效果,而开发人员则在项目中导入这些预先定义好的动画脚本,并根据需要进行一些优化和微调。

如果存在这样的工具,不仅能有效简化设计师和程序员之间的沟通过程,实现工作职责的更合理分配。更重要的是,它还能使代码变得干净,提升代码和动画的可复用性。 Read the rest of this entry »

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

January 8th, 2012 at 7:55 pm

Posted in Mac,软件

Tagged with , , , , ,

新年逛书店

without comments

{lang: 'zh-CN'}

因为最近想尝试一些OpenGL ES的开发,所以想找本入门+进阶的书。在amazon上找到几本,但仅凭preview和review没有办法确定这些书是否适合我,于是去书店逛了逛。

到了书店的计算机部,有好多书吸引了我,有的是因为主题,有的则是因为别致的设计。

令人震撼的骨董计算机之美

摄影和计算机让人联想起什么?如果你想到的只是PS,那么你绝对应该看看O’Reilly的这本 Core Memory : a visual survey of vintage computers (目前还没有中文版,我称之为《Core Memory:骨董计算机之美》),这是摄影艺术对于计算机之美的诠释、对于机器和人类智慧之美的诠释!

我从time.com上找来了一些书中的图片,在这里引用两幅。

Eniac的电子管阵列

Core Memory 肉眼能够看到的1比特

这本书是2007年出版的,这么久了,在国内却一直不知道…… Read the rest of this entry »

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

January 4th, 2012 at 3:05 pm

Posted in 书籍,软件

Tagged with , , ,

我的2011

with 4 comments

{lang: 'zh-CN'}

离2011年结束只有几小时了。就以这篇日志送走2011迎来新的一年吧!

2011年是我人生中重要的一年,因为这一年,我满30岁了。中国人说三十而立,虽然只有四个字,却着实带有分量,这一年中我有了不少变化。这些变化和经历也让今年变得精彩纷呈。 Read the rest of this entry »

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

December 31st, 2011 at 9:53 pm

架构师的选择(觉悟)

without comments

{lang: 'zh-CN'}

原文链接:アーキテクトの選択(あるいは覚悟)

架构师的工作大部分时间都是在“做选择”,这些选择都是在一切发生之前所做出的,因此,一旦决定就不能更改了。

架构师所要选择的是静态的结构。方案一旦确定,就开始转入退化过程。随着时间的推移,系统的适应性会变差,对做出的决定进行修改往往要付出巨大的代价。

当然,项目经理对于进度计划以及项目人员体制等方面的安排也属于“事先选择”。但是,这些选择对象都属于动态的过程。

动态的过程能够随着时间的推移适应其过程中出现的变化。包括敏捷等迭代式过程在内的开发过程,它们都推荐在开发过程中设立短期目标并根据实际作业情况做出调整。这是非常有效的方法。动态过程承认事先选择中所发生的过失和偏差,且允许在事情发生之后做出改变。

有这么一说:“Good managers do things right (优秀的管理者会做正确的事)”,项目经理所做的是把握事先选择(计划)和事后情况(实际)两者之间的偏差,针对这些偏差对各种各样的参数做出调整,将项目的发展方向始终沿着预定的轨道不断进行修正。

然而,架构师的选择却是静态的结构,敏捷的推进方式无法适用于这些静态结构

Read the rest of this entry »

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

November 24th, 2011 at 3:15 pm

Posted in 翻译,软件

Tagged with , , ,

isHUD v0.2发布声明

without comments

{lang: 'zh-CN'}

isHUD v0.2发布声明

目的

作为一个多语言的Mac OS X用户,我使用系统默认的快捷键(Command+空格, Option+Command+空格)切换输入法。但是,当我按下Option+Command+空格(即选择下一个输入源)的时候,系统并不会出现输入法选择框(按Command+空格时候出现的那个列表)。当启用的Lion的全屏模式的时候,要确认当前所使用的输入法十分不便。

于是isHUD诞生了!isHUD是“input source HUD”的缩写。

有了isHUD,每当切换输入法的时候,屏幕中央就会出现一个HUD窗口,提示选中的输入法,这样,你无须移动视线就能知道所选的输入法了。

如果你想要更快捷地切换输入法,那么这篇博客也许对你有用。其中也提到了为什么要做isHUD。

Read the rest of this entry »

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

November 16th, 2011 at 9:49 pm

OS X键盘应用技巧:一键切换输入法

without comments

{lang: 'zh-CN'}

工作的时候,我常常需要在多个输入法之间切来切去。

Mac默认的输入法切换是Command+空格和Option+Command+空格。虽然默认也没有什么不方便的,但是,我发现在我的键盘上有个键几乎从来没用过,那就是右侧的Option键,于是我想能不能通过这个键实现一键切换输入法呢?

Read the rest of this entry »

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

November 13th, 2011 at 4:04 pm

OS X键盘使用技巧:自动根据应用程序切换F1~Fx功能键

without comments

{lang: 'zh-CN'}

Mac用户应该都知道,就像下面这张图片那样,Apple的键盘最顶上一排默认情况下是多媒体控制键,而不是传统PC上所使用的F1~Fx功能键,要使用功能键的时候需要配合Fn键。

The keyboard of MBA 2011

对于原生的Mac应用来说,这并不成问题。但是如果像我这样时不时要用到终端(iTerm2)、虚拟机什么的,那么在这些环境中能无须使用Fn键就能得到F1~Fx键就会方便不少(比如vim的快捷键绑定)。当然,你可以通过“系统偏好设置”将功能键默认修改为传统的Fx键,不过这样的话,在Mac应用中调节音量,打开mission control什么的又不太方便了。

经过一番搜索,我找到了圆满解决这个问题的方法。答案就是——Palua,一款自动切换功能键行为的工具

Palua的图标已经非常直白地解释了它是做什么用的了。下面就简单介绍一下自动切换功能键的设置方法。安装好Palua之后,就能在系统菜单栏中看到其状态指示图标了。

要让Palua根据应用程序自动切换工作模式,需要进入其偏好窗口增加一些配置。很简单,看图,一目了然!

首先,要启用“Smart Mode”。然后,在应用程序列表中添加需要的应用程序,再设置对应的功能键的默认行为即可。完成后立即会生效,把应用程序开起来试试,方便多了吧~

最后,别忘记将Palua设置为开机自动启动。

美中不足的是,Palua并不是免费工具,在App Store上的价码是$0.99,不过只要花不到1美元就能解决问题的话,对于有需要的用户来说也不是很贵啦,毕竟有了它确实很方便!

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

November 13th, 2011 at 2:42 pm

利用mock发现接口

without comments

{lang: 'zh-CN'}

原文:モックによるインターフェイスの発見

引言

前几天,《Mock Roles, not Objects》一文的日语版《ロールをモックせよ(对角色进行模拟)》公开发表了。这是篇发表于2004年的论文,作者阵容相当豪华,他们是:Steve Freeman、Nat Pryce、Tim Mackinnon、Joe Walnes。另外,Steve Freeman和Nat Pryce还是《Growing Object-Oriented Software, Guided by Tests (Addison-Wesley 大师签名系列)》(即GOOS)的作者,《Mock Roles, not Object》可谓GOOS的思想根基。

在这篇文章中,我想就《Mock Roles, not Object》(以下略称为MRnO)所提到的使用Mock的基本思想,顺着GOOS的思路继续深入挖掘一下。 Read the rest of this entry »

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

November 8th, 2011 at 4:46 pm

为Linkstation NAS添加mldonkey

without comments

{lang: 'zh-CN'}

入手了一台心仪已久的MBA, 因为硬盘比较小,所以打算入一台NAS。因为用了Mac,所以想找款支持Time Machine的。比较了一下,发现Synology的DS110j是比较理想的家用机型,外形好看且功能齐全,可就是买起来不方便,所以只能选了第二方案——Baffalo的Linkstation ls-v1.5tl。后者整体上也还不错,唯一比较遗憾的是没有内建电驴的支持,也许是因为日本国内对电驴的争议吧。

但是,没关系,这种小问题是难不倒爱折腾的人们的~ 我就自己动手丰衣足食吧!

Google了一下,发现LS系列的NAS很早就有了,相关的改机方案也有许多,甚至还有专门的改机wiki。总体上有两种方案:保留原有的固件,在此基础上安装新软件;彻底改用第三方固件,和厂商说拜拜。鉴于原厂的固件对OS X Lion新采用的AFP 3.3协议支持良好,我也不是什么改机控,于是就选择了前者。虽然简单,可没想到还是折腾了一下午,期间几乎搜遍了google,就流水账地记录一番吧。

首先,就是要开启sshd服务。虽然都要使用acp_commander.jar,但在LS-VL系列上,传统的方法已经无效了,好在官网给出了详细的指南,照着做就能顺利通过ssh登录了。

登录后,安装mldonkey就可以了,原本以为这步很简单,可实际非常不顺利。我先是按照官网上给出的简单方法,尝试安装现成的预编译包。结果却始终无法启动,经过一番搜索,发现了这篇自行编译mldonkey的指南。立即动手,安装了ipkg和编译工具,配置源代码,开始编译,经过长达1个多小时的编译,总算完成了,结果一运行,出现segmentation fault,再搜索也没找到什么线索,顿时头皮发麻……

没办法,再装上gdb,用backtrace找到了出问题的地方,居然是libcrypto++的问题,又是一阵狂搜,又找到一篇博客,今天运气不是一般好啊~ 照做,运行下面这段命令进行配置和编译

$ CXXFLAGS="-DCRYPTOPP_DISABLE_ASM" ./confgiure
...
$ make

又经过漫长的编译,终于启动了mlnet!

服务器启动后,接下来就好办了,打开浏览器,对设置稍作调整就完成了。

分享家:Addthis中国
{lang: 'zh-CN'}

Written by ghawk.gu

November 5th, 2011 at 11:21 pm

 1 2 3 4 5 后一页