2008 Archives

4 years my MacBooks

| 1 Comment | No TrackBacks
Thanks Mr. Wan & Duanmu
macbooksofyarshure.png


---yarshure kong的珍藏

美国签证这么容易?

| No Comments | No TrackBacks
当初等了35天,下面的文章中申请加急,隔天就去面签,而且过了,不干想象,但是还是感觉第一次电话就应该定下面签的日子,比加急后的8/29还早9天呢,看来敲打是一件很难让人决定的事情!

来自鸡皮疙瘩撒一地 blog
1。北京还是上海?在北京,上海,广州,沈阳,成都哪一个领事馆签证,取决于长期居住地。出差一个月在北京,原来想在北京签的。但是因为领事馆规定要住满半年以上方可在当地申请签证,而我在北京的暂住证从7月25日才开始,会被认为故意为了签证才到北京暂住,被拒签概率较高。想了半天,还是决定到上海去签了。

2。面签时间约不到,怎么办?在我决定到上海去签证的那天早上,我给美国签证服务热线打电话,在上海有个8月20日的面签,我挂了电话想了十分钟,再打电话会去要约的时候说是排到了9月18日。要知道我9月15日就应该在日内瓦了,欲哭无泪啊~~ 我伤心了整整一天,后来我发现有一种中介服务可以帮我们提前约时间,支付若干千元的费用,我当时已经想付钱了。在妈妈的提醒下,我想中介可以做的事情,为啥俺不可以自己做?发现美国领事馆提供加急服务,需要给领事馆发传真,解释需要加急的原因并提供相关凭证。传真模板网上都有,北京领事馆的传真号码是:010-65323178,上海领事馆的传真号码是:021-62172072,领馆管各自辖区的申请,不可以相互代办。我起初就先发给了北京领事馆,直到8月22日早上才幡然醒悟,转给了上海领事馆。。。在8月28日早上我终于收到美领馆的电话,让我第二天早上8点去面签。我至此才长长的吁了一口气。

3。填表,面签。DS156,DS157的具体填写方法网上很多,我就不说了。记得每个空格都要填,没有就填no,还有DS156一定要双面打印。在上海的领馆存包处有两个阿姨会主动帮你看填得对不对,倘若不对她们就会带你绕过弯弯曲曲的楼梯,付150元让专人代你重填,有米的人不妨直接去花了这个钱,免得像我一样折腾到半夜12点心力交瘁最后还是花了钱。B1签证面试很简单,面试官叔叔很nice,这个我就不多说了:P

Cocoa MVC设计名称解释

| No Comments | No TrackBacks

  • Model: Model classes describe your data. For example, if you write banking systems, you would probably create a model class called SavingsAccount that would have a list of transactions and a current balance. The best model classes include nothing about the user interface and can be used in several applications.

  • View: A view class is part of the GUI. For example, NSSlider is a view class. The best view classes are general-purpose classes and can be used in several applications.

  • Controller: Application-specific controller classes are responsible for controlling the flow of the application. The user needs to see the data, so a controller object reads the model from a file or a database and then displays the model by using view classes. When the user makes changes, the view objects inform the controller, which subsequently updates the model objects. The controller also saves the data to the filesystem or database.

  • Attributes of a Property

    | No Comments | No TrackBacks

    In general, the declaration of a property looks like this:

    @property (attributes) type name;

    The attributes can include readwrite (the default) or readonly. A property marked readonly gets no setter method.

    To describe how the setter method should work, the attributes can also include one of the following: assignretaincopy. Let's look at each in turn:

    • assign (the default) makes a simple assignment happen. assign does not retain the new value. If you are dealing with an object type and you are not using the garbage collector, you probably don't want assign.

    • retain releases the old value and retains the new value. This attribute is used only for Objective-C object types. If you are using the garbage collector, assign and retain are equivalent.

    • copy makes a copy of the new value and assigns the variable to the copy. This attribute is often used for properties that are strings.

    Finally, the attributes can also include nonatomic. If your application is multithreaded, it is sometimes important that your setter methods be atomic. That is, the execution of the setter method from one thread will not conflict with the execution of the same setter method on another thread. By default, the @synthesize call will generate accessors with this property. On an application that is not using the garbage collector, this involves using a lock to ensure that only one thread at a time is executing the setter. Creating and using the locks introduces some overhead. If you know that the accessors for a property don't need to be atomic, you can eliminate the overhead by adding nonatomic to the attributes.

    Cocoa bindings

    | No Comments | No TrackBacks
    Cocoa bindings is a collection of technologies you can use in your applications to fully implement a Model-View-Controller paradigm where models encapsulate application data, views display and edit that data, and controllers mediate between the two. Cocoa bindings reduces the code dependencies between models, views and controllers, supports multiple ways of viewing your data, and automatically synchronizes views when models change. Cocoa bindings provides extensible controllers, protocols for models and views to adopt, and additions to classes in Foundation and the Application Kit. You can eliminate most of your glue code by using bindings available in Interface Builder to connect controllers with models and views.

    Cocoa bindings is ideal for developers writing new applications who have some familiarity with Cocoa, and for developers of existing applications who want to simply clean up or eliminate their existing glue code. In most cases, Cocoa bindings can be used to replace traditional Cocoa mechanisms such as target-action, delegation, and some data source protocols. However, great care has been taken to ensure that both approaches can be used side by side within the same application.

    The Advantages of Using Bindings

    The Cocoa bindings technology offers a way to increase the functionality and consistency of your application while at the same time decreasing the amount of code you have to write and maintain. It takes care of most aspects of user interface management for you by allowing you to off load the work of custom glue code onto reusable pre-built controllers. It helps you build polished, easy-to-use applications that leverage object relationships, provide sortable tables, and include intelligent selection management.

    Typically you do not need to completely rewrite your application in order to adopt Cocoa bindings. For example, it is likely that you can factor out User Preferences to be managed by Cocoa bindings without affecting the rest of an application. You will find it easier to make use of Cocoa bindings if your application adopts the recommended design patterns.

    The Model-View-Controller Design Pattern

    Cocoa applications generally adopt the Model-View-Controller (MVC) design pattern. When you develop a Cocoa application, you typically use model, view, and controller objects, each of which performs a different function. Model objects represent data and are typically saved to a file or some other permanent data store. View objects display model attributes. Controller objects act as go-betweens, to make sure that what a view displays is consistent with the corresponding model value and that any updates a user makes to a value in a view are propagated to the model. An understanding of the MVC design pattern is essential to fully understand and leverage Cocoa bindings. If you need to know more, read "The Model-View-Controller Design Pattern."

    If you adopt the MVC design pattern, much of your application code is easier to reuse and extend--you can reuse model and view classes in different applications. Much of the implementation of a controller object consists of what is commonly referred to as "glue code." Glue code is the code that keeps the model values and views synchronized, and is unique to each application. It is typically tedious and cumbersome to write, contributes little to the fundamental function of the application, but you must do it well to provide a good user experience.


    FreeBSD Jave Developder 的福音!
    Date: Wed, 27 Aug 2008 11:12:47 -0600
    From: Deb Goodkin <deb@freebsd.org>
    Subject: [FreeBSD-Announce] Java Installable Packages Now Available
    To: freebsd-announce@freebsd.org
    Message-ID: <48B58B0F.1000605@freebsd.org>
    Content-Type: text/plain; charset=ISO-8859-1; format=flowed

    Dear FreeBSD Community,

    The FreeBSD Foundation is pleased to announce the availability of the 
    Java JDK and JRE 6.0 binary installable packages for FreeBSD 6.x and 7.x
    on the i386 and amd64 architectures! The binaries are available at
    http://www.freebsdfoundation.org/downloads/java.shtml.

    We would like to thank Kurt Miller for his hard work on this project. We
    would also like to thank Greg Lewis and Jung-uk Kim from the FreeBSD
    Java Project for their help and support.

    These releases would not be possible without the help of the volunteers
    developing Java for FreeBSD, Sun Microsystems, and your donations!

    We hope you will consider making a donation to help us fund more
    development projects to improve FreeBSD. Please go to
    http://www.freebsdfoundation.org/donate/ to find out how to make a donation.

    Sincerely,

    The FreeBSD Foundation

    原文

    七月关于 iPhone 的消息一直围绕着 2.0 firmware, iPhone 3G, official SDK 1.0 这几个关键词,而非官方关心的也只是 Pwnage Tool 2.0,却对没有 iPhone Developer Program 的开发进展甚少介绍,我想在这里做一点记录。

    随着 SDK 1.0 的正式发布 (遗憾的是,因为 NDA 的存在,甚至它都算不上发布..),iPhone 2.0 firmware 和 App Store 的上线,在 Apple 监视下的 iPhone OS/Cocoa Touch 程序开发的局限性暴露得越来越明显,saurikNerveGas 等开发者坚持开发 Open Toolchain 的重要性也越来越明显。为什么在拥有一个如此完善的 SDK 的情况下我们还需要 Open Toolchain 和相关工具?因为:

    • Apple 严格限制了第三方应用对 API 的使用,非 Apple 自己开发的应用程序不能使用许多极为有用的 Private API,否则就是违反 SDK 的授权协议,所以第三方应用始终只能是"二等公民"。
    • App Store 的发行方式要求每次更新软件都要由 Apple 审核才能出现,而列出应用的页面对于用户 feedback 和开发者交流的功能也非常局限----毕竟这个模式根本就是 iTunes Music Store 改头换面了一点点,Album 到 Application 其实并不能做到一一映射。所以我们需要更自由的 iPhone OS 软件发行方式。
    • 软件分发要求所有只开发 Open Source/Free 应用程序的开发者都必须至少缴纳 $99 年费,这极大打击了 Open Source 开发/移植者的积极性,在 Pwnage Tool 的大环境支持下,我们完全可以跳过这个限制,自行分发软件。

    因为上面这些原因,我一直非常关注 open toolchain 的开发,到了 4 月份的时候,有半个月的时间一直在跟踪 saurik 在这方面开发的结果,其结果是这篇 Upgrading the iPhone Toolchain,可惜的是因为 saurik 一直不满意用 git 来跟踪上游代码的修改,所以这篇文章其实相当难付诸实施,不过,考虑到 SDK 1.0 的发布后上游代码应该有一个相对稳定期,所以希望 saurik 能够尽快整理出更新的文档和代码来吧。

    不过 saurik 在他的 Cydia repo 里提供了 iPhone 上完整的 toolchain,你可以在自己的 iPhone/iPod Touch 上用 gcc 编译,用 gdb 调试.... 当然考虑到有限的硬件资源,这种方式对很多人来说太 geeky 了,包括我。

    然而,目前用官方 SDK 提供的编译器和调试器来给编写在 pwn 过的 iPhone 上免费分发的应用程序已经完全可行了,详情可以参考 saurik 的 Bypassing iPhone Code Signatures 和 246tNt 的说明。未 pwn 的 iPhone 因为目前事实上只有通过 App Store 一条路安装应用程序,所以谈怎么分发也是没有意义的。

    简单的说,这种方式是因为 pwn 过的 iPhone 的内核已经被打上了 patch,弱化了签名校验----不再要求非要有 Apple 的签名了,可是签名校验依然存在,要完全去掉不大现实,所以现在你可以通过 Apple 自己提供的 codesign 工具来给应用自行签名,或者在别的平台下用 saurik 开发的 ldid 签名工具来保证通过 iPhone 的签名检查。对于大部分 Mac 开发者而言,这也只是在 Xcode 的项目中,新增一个 Build Phase 的事情,所以不会增加什么工作量。

    而 246tNt 进一步延展了 saurik 的工作,分析了 entitlements 文件在签名后的 iPhone App 中对安全控制的作用,使得这种自签名的应用程序也能像有 Dev Program 的应用一样,可以用 Xcode 自带的 gdb 进行远程调试。此外,246tNt 还找出了办法对 iPhone OS 中的 SpringBoard 和 MobileInstallation 打上补丁,使得我们可以直接把应用程序用 Xcode Organizer (或者 Build and Go!) 上传到 iPhone 上,并自动开始调试。

    感谢这些开发者的工作,目前我们获得的开发环境和支付了 $99 美元的 Dev Program 开发者毫无二致了。可是,分发环境还是有区别,假定我们的程序并没有做任何逾越 SDK 授权的事情,如果还希望通过 App Store 分发,那还是只能去购买 Dev Program。不过毫无疑问,对于开放的应用程序而言,Cydia 应该是更好的分发方式,考虑到因为 Pwnage Tool 2.0 的包含,Cydia 几乎已经成为了标准的应用分发方式。

    (待续)


    ObjC内存管理

    | No Comments | No TrackBacks

  • The old solution uses retain counts: Every object has a retain count, which should represent the number of other objects that have pointers to it. If the color is the favorite of two people, the retain count of that color should be 2. When it goes to zero, the object is deallocated.

  • The new solution, introduced in 10.5, is a garbage collector, which babysits the entire object graph, looking for objects that can't be reached from the variables that are in scope. The unreachable objects are automatically deallocated

    为什么不一直使用GC? If you use the garbage collector, your application will not run on any version of Mac OS before 10.5. Also, the garbage collector requires some CPU time to scan through the objects, looking for garbage. This can sometimes result in poorer performance. In an application that does a lot of audio or video processing, the garbage collector can cause hiccups in the processing while it is doing a scan.


    Rules Concerning Release

    • Objects created by allocnewcopy, or mutableCopy have a retain count of 1 and are not in the autorelease pool.

    • If you get an object by any other method, assume that it has a retain count of 1 and is in the autorelease pool. If you do not wish it to be deallocated with the current autorelease pool, you must retain it.


  • NSApp如何工作?

    | No Comments | No TrackBacks
    chronology of an application: When the process is started, it runs theNSApplicationMain function, which creates an instance of NSApplication. The application object reads the main nib file and unarchives the objects inside. The objects are all sent the message awakeFromNib. Then the application object checks for events. The timeline for these events appears in PIC 1

    Timeline.jpg

    When it receives an event from the keyboard and mouse, the window server puts the event data into the event queue for the appropriate application, as shown in PIC2. The application object reads the event data from its queue and forwards it to a user interface object (like a button), and your code gets triggered. If your code changes the data in a view, the view is redisplayed. Then the application object checks its event queue for another event. This process of checking for events and reacting to them constitutes the main event loop.
    windowserver.jpg

    When the user chooses Quit from the menu, NSApp is sent the terminate: message. This ends the process, and all your objects are destroyed.

    ObjC 类型和常量

    | No Comments | No TrackBacks

    Types and Constants in Objective-C

    Objective-C programmers use a few types that are not found in the rest of the C world.

    • id is a pointer to any type of object.

    • BOOL is the same as char but is used as a Boolean value.

    • YES is 1.

    • NO is 0.

    • IBOutlet is a macro that evaluates to nothing. Ignore it. (IBOutlet is a hint to Interface Builder when it reads the declaration of a class from a .h file.)

    • IBAction is the same as void and acts as a hint to Interface Builder.

    • nil is the same as NULL. We use nil instead of NULL for pointers to objects.

    Use 'po" print-object IN GDB

    | No Comments | No TrackBacks

    In the console, you have full access to all gdb's capabilities. One very handy feature is "print-object" ("po"). If a variable is a pointer to an object, it is sent the messagedescription when you "po" it, and the result is printed in the console. Try printing the newEntry variable.

    po newEntry

    Table 3.1. Possible Tokens in Objective-C Format Strings
    SymbolDisplays
    %@id
    %d, %D, %ilong
    %u, %Uunsigned long
    %hishort
    %huunsigned short
    %qilong long
    %quunsigned long long
    %x, %Xunsigned long printed as hexadecimal
    %o, %Ounsigned long printed as octal
    %f, %e, %E, %g, %Gdouble
    %cunsigned char as ASCII character
    %Cunichar as Unicode character
    %schar * (a null-terminated C string of ASCII characters)
    %Sunichar * (a null-terminated C string of Unicode characters)
    %pvoid * (an address printed in hexadecimal with a leading 0x)
    %%% character




    setCalendarFormat 用法

    | No Comments | No TrackBacks

    - (void)setCalendarFormat:(NSString *)format


    This method sets the default calendar format for the receiver. A calendar format is a string formatted with date-conversion specifiers, as given in Table 3.2.

    Table 3.2. Possible Tokens in the Calendar Format String
    SymbolMeaning
    %yYear without century (00-99)
    %YYear with century ("1990")
    %bAbbreviated month name ("Jan")
    %BFull month name ("January")
    %mMonth as a decimal number (01-12)
    %aAbbreviated weekday name ("Fri")
    %AFull weekday name ("Friday")
    %wWeekday as a decimal number (0-6), where Sunday is 0
    %dDay of the month as a decimal number (01-31)
    %eSame as %d but does not print the leading 0
    %jDay of the year as a decimal number (001-366)
    %HHour based on a 24-hour clock as a decimal number (00-23)
    %IHour based on a 12-hour clock as a decimal number (01-12)
    %pA.M./P.M. designation for the locale
    %MMinute as a decimal number (00-59)
    %SSecond as a decimal number (00-59)
    %FMilliseconds as a decimal number (000-999)
    %xDate using the date representation for the locale
    %XTime using the time representation for the locale
    %cShorthand for %X %x, the locale format for date and time
    %ZTime zone name
    %zTime zone offset in hours and minutes from GMT (HHMM)
    %%% character

    我的Storage For Mac

    | No Comments | No TrackBacks
    上图,盒子是X宝搞来的垃圾WD盒子,两个1394A一个USB方口.由于掏来的时候没有带电源,今天中文去五角场赛博掏了一个TENGDA的山寨垃圾,凑合用,还不错,我害怕不能用!
     wd1394.png

    firewiresysinfo.png
    内置HD速度比较慢,和Storage相差将近一半,备份时表现不出Storage性能,内置的读速度在30M+/s已经很不错了
    diskio.png


    Google.com不再自動跳轉dot CN

    | No Comments | No TrackBacks
    Update:重新启动一次,貌似可以了?why?

    最近重新安裝系統,發現Safari和FireFox 搜索欄輸入後進入www.goolge.com/xxxxxxx 類是的url.
    但是瀏覽器無法取得任何數據.原來是直接redirct www.google.cn/xxxxx 的樣子.感覺非常地不習慣!

    什麼世道?人類的智慧很大一部分用來降低人類文明,這是歷史車輪到幾步還是倒退?

    一點數據:

    [MacBook-Pro:~/corebook/3-libraries] yarshure% ping www.google.com
    PING www-china.l.google.com (72.14.235.99): 56 data bytes
    ^C
    --- www-china.l.google.com ping statistics ---
    13 packets transmitted, 0 packets received, 100% packet loss
    [MacBook-Pro:~/corebook/3-libraries] yarshure% ping www.google.cn
    PING cn.l.google.com (203.208.39.99): 56 data bytes
    64 bytes from 203.208.39.99: icmp_seq=0 ttl=245 time=147.815 ms
    64 bytes from 203.208.39.99: icmp_seq=1 ttl=245 time=145.398 ms
    64 bytes from 203.208.39.99: icmp_seq=2 ttl=245 time=144.584 ms
    64 bytes from 203.208.39.99: icmp_seq=3 ttl=245 time=141.543 ms
    ^C
    --- cn.l.google.com ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 141.543/144.835/147.815/2.242 ms

    iDP To Be, Or not To Be

    | 1 Comment | No TrackBacks
    我在研究iPhone SDK花了很多心思,從最初的Beta1到Final,中間還專程赴美參加WWDC08.
    我不是開發熟練工,更不是專家,我的付出究竟為了什麼?愛好,還是商業機會?

    iDP不是Apple的重要產品,甚至聯產品都談不上,只是一個橋梁而已.那我該不該走這座橋?iDP To Be, Or not To Be?

    有的時候感覺很可惜,很多激情都被一些瑣碎的事情削磨.我該何去和從?


    IMG_0005.PNG
    snow Leopard下使用Xcode建立demo proj,编译选项选x86_64,没有任何错误,完美编译运行 ! snow_leopard_x86_64.png

    OpenCL真的很快

    | 1 Comment | No TrackBacks
    Demo Code来在WWDC08,很强大 opencl.png

    AA Store blocked 留影纪念

    | No Comments | No TrackBacks
    20080819ituneisblocked.png

    osxiphoneinstall.JPG

    今日上海天气晴,心情不错

    | No Comments | No TrackBacks
    昨天reinstall系统,要装n多更新,xcode,FireFox,Office 2008,iWork,Aperture,工程浩大.
    以后还是避免为好.

    昨天下班将两箱Cocoa入门拉回家,快到家天公不作美,狂降大雨.还好包装的严实,否则就泡汤了.


    今天心情很好,纪念一下!
    8/19/2008

    one shot on history

    | No Comments | No TrackBacks
    nbc.png

    nosay.png

    美利堅之旅拍攝 EOS20D

    | No Comments | No TrackBacks
    機器已經被朋友出掉了,紀念一下!


    cloud.png

    macgeeks 開放2周訪問情況

    | No Comments | No TrackBacks
    blog.macgeeks.cn 577 IP
    [yarshure@zion] ~/logs/> awk '{print $1}' blog.log | sort -u|wc -l
         577
    macgeeks.cn 457 IP
    [yarshure@zion] ~/logs/> awk '{print $1}' mac.log | sort -u | wc -l
         457

    訪問PV就不統計了!
    0xE8000001 on install Error, please read maillist at apple



    字体显示和wwdc07中的方式不一样了,不知道这种方式iPhone/iPod Touch是否兼容,期待wwdc08视频!!
    剛剛將板磚恢復,終於可以使用了,UPLOAD 1-01 Publishing on the App Store.開啟ipod app,發現字幕可以顯示,很happy.對於我這種英文很菜的人,很適合.效果請看第二張圖,播放控制部分有個小鍵盤,點擊一下就知道了.只有英文字幕,不確認是否支持多種語言,SDK裡面應該有寫!


    publishingonappstore.png

    IMG_0003.PNG

    莫名奇妙,CPU 62度

    | No Comments | No TrackBacks
    明显不正常啊,啥破机器。风扇跑到2k多,晕啊!


    cputemp.png

    OSx86 10.5.4 iso

    | No Comments | No TrackBacks
    Finally after much hard work and effort, repackaging / cutting driver to have the most stable release I could, along with months of hard work my version of OS X for Intel based systems is ready. This release features upgrading from the customize installation menu along with StageXNU (SSe2 SSe3 kernel thx everyone in xnu-chat for keeping older hardware alive with this great kernel) , NVKush (thx Diabolik) , chameleon (thx zef & Kabyl), SMBIOSResolver (thx Superhai), SMBIOS (thx iGuru) The whole range of Radeon HD Series drivers (thx netkas and lastExile). HDA drivers (thx Taruga) Along with the standard drivers usually found in other leopard install dvds.This release does not include any apps/mods to the UI. Also this is a OS X 10.5.4 Server (thx for the packages f41qu3 and SJobs) / Client installation dvd. Installation of Server will require a valid serial that I have not included. The base for this release was built with slipstream (thx Dense). DVD art by Realityiswhere.

    Thanks to everyone over at irc.osx86.hu , irc.moofspeak.net , hackint0sh.org , insanelymac , and osx86scene.

    Remember the point of this is to have some fun and learn a bit if we can. Also to help each other out, remember " no one left behind that can be supported" this is our motto and our creed.

    JaS_OSx86_10.5.4_Client_Server_Intel_SSE2_SSE3.4336004.TPB.torrent

    看看QQ的退信

    | No Comments | No TrackBacks
    连个理由也没有,就退回来了,啥东西!呸!
    您发送的邮件:

    > 日期:Mon, 11 Aug 2008 13:23:56 +0800
    > 发件人: yarshure@gmail.com
    > 收件人: koaca@qq.com
    黑色的是我拆开用的,白色盒子的是没有拆封过的

    南京西路上的摩天大楼

    | No Comments | No TrackBacks
    zhongxin.png

    原始人赛车

    | No Comments | No TrackBacks
    saiche.png saiche1.png saiche2.png saiche3.png saiche4.png
    [yarshure@zion] ~/> traceroute 61.129.66.7
    traceroute to 61.129.66.7 (61.129.66.7), 64 hops max, 40 byte packets
     1  220.189.226.241 (220.189.226.241)  0.970 ms  1.840 ms  0.821 ms
     2  220.187.253.73 (220.187.253.73)  0.424 ms  0.453 ms  0.371 ms
     3  220.187.253.81 (220.187.253.81)  0.794 ms  0.962 ms  1.027 ms
     4  220.187.241.117 (220.187.241.117)  2.008 ms  1.957 ms  1.489 ms
     5  220.187.248.53 (220.187.248.53)  2.677 ms  2.389 ms  2.314 ms
     6  61.152.80.161 (61.152.80.161)  10.961 ms
        61.152.80.145 (61.152.80.145)  10.280 ms  10.588 ms
     7  124.74.254.14 (124.74.254.14)  20.173 ms
        124.74.254.18 (124.74.254.18)  29.473 ms
        124.74.254.14 (124.74.254.14)  21.580 ms
     8  * * *


    [Cocoa-2:~] yarshure% traceroute 61.129.66.48
    traceroute to 61.129.66.48 (61.129.66.48), 64 hops max, 40 byte packets
     1  172.17.2.254 (172.17.2.254)  1.133 ms  0.651 ms  0.566 ms
     2  218.1.shuxun.net (211.144.218.1)  11.768 ms  13.602 ms  12.536 ms
     3  208.61.dsnet (211.144.208.61)  29.973 ms  17.571 ms  14.632 ms
     4  208.166.dsnet (211.144.208.166)  265.172 ms  235.041 ms  238.263 ms
     5  202.96.195.205 (202.96.195.205)  23.598 ms  21.607 ms  15.576 ms
     6  202.101.63.173 (202.101.63.173)  18.691 ms  22.116 ms  31.103 ms
     7  * *^C

    YY壹则

    | No Comments | No TrackBacks
    大家好
    我是梅客水果农场XYO,今年我们梅垦农场在农学家的辛勤工作下,培育了多种可口味美水果。欢迎品偿新型橙子菠萝香蕉。今年秋季我们研究的舞光型水果很快 就要上市,请各位食客耐心等待! 在国际市场持续低靡的环境下,我们农场的水果很畅销,目前我们的现金有二百多壹元,足够可以培育两百种新型水果或者并购50个小型农场。我们对手哎迪尔已 经可以种植可他吃水果,个位科学家要抓住机遇,报纸我们农场的领先地位。今天是200发年大家发财发福,把观看闹晕会做未一件大事来做。

    梅客水果农场XYO 2008/08/08

    可以他吃

    | No Comments | No TrackBacks
    让三寨来的更猛烈些吧,看我们国内农场生产的可以他吃水果!


    sanzai.png

    苦苦等了一周,终于到了。好兴奋! cocoadev.jpg

    逝去的青春和点点的会议

    | No Comments | No TrackBacks
    一晃已经十年,听听这首歌!
    1997年夏天的某个日子......................

    那一天
        词曲/编曲 峦树
    那一天,我留下眼泪
    那一天,看着你离开
    生命原来那么脆弱,一切在瞬间
    从未想要触摸的世界出现在你面前
    那一天,你是那么的遥远
    那一天,没有说一声再见
    你说不愿每天醒来,渴望的等待
    等待阳光拥有自己的脸,只为拥有自己
    我用歌声伴你飞向天堂
    那里洒满温暖的阳光
    你的身边从此不再有冰冷目光
    只怀念你的笑容
    我用歌声伴你飞向天堂
    那里洒满温暖的阳光
    从此不在世间寂寞
    一个人更自由自在,还拥有我们拥抱的那一天

    iPhone App青蛙截图

    | No Comments | No TrackBacks
    logo.png logo_x.png
    screen_2.png screen_1.pngscreen.png

    iPhone App 猴子截图

    | No Comments | No TrackBacks
    monkey_ball.png

    monkey_ball2.png monkey_ball3.png

    Xcode也crash

    | No Comments | No TrackBacks
    Uncaught Exception:
    *** -[NSCFString replaceCharactersInRange:withString:]: nil argument
    Stack Backtrace:
    The stack backtrace has been logged to the console.

    08-8-4 下午03:27:05 com.apple.launchd[107] ([0x0-0x11011].com.apple.Xcode[140]) Exited with exit code: 1
    08-8-4 下午03:30:50 Xcode[259] Failed to load specification for platform '<unknown>'. Reason: malformed property list dictionary (required key 'Identifier' not present)
    08-8-4 下午03:30:51 Xcode[259] -[NSConcreteMutableAttributedString initWithString:attributes:] called with nil string argument. This has undefined behavior and will raise an exception in post-Leopard linked apps. This warning is displayed only once.
    08-8-4 下午03:30:52 Xcode[259] ** INTERNAL ERROR: Uncaught Exception **
    Exception: *** -[NSCFString replaceCharactersInRange:withString:]: nil argument
    Stack:
    0 0x9568314b __raiseError (in CoreFoundation)
    1 0x915610fb objc_exception_throw (in libobjc.A.dylib)
    2 0x95682f2b +[NSException raise:format:arguments:] (in CoreFoundation)
    3 0x95682f6a +[NSException raise:format:] (in CoreFoundation)
    4 0x95bd800e mutateError (in Foundation)
    5 0x95b14d5c -[NSConcreteMutableAttributedString replaceCharactersInRange:withString:] (in Foundation)
    6 0x95b14b21 -[NSConcreteMutableAttributedString initWithString:attributes:] (in Foundation)
    7 0x000cd129 -[NSMutableAttributedString(TSFoundationExtra) appendString:attributes:] (in DevToolsSupport)
    8 0x00c9274c -[PBXAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageFormat:arguments:] (in DevToolsInterface)
    9 0x00787f74 _XCAssertionFailureHandler (in DevToolsCore)
    10 0x00774b82 -[XCPlatformSpecification initWithPropertyListDictionary:path:inDomain:] (in DevToolsCore)
    11 0x007764b7 +[XCPlatformSpecification loadAllPlatforms] (in DevToolsCore)
    12 0x00761c17 XCInitializeCoreIfNeeded (in DevToolsCore)
    13 0x0000330a
    14 0x95ae754a _nsnote_callback (in Foundation)
    15 0x955eaaba __CFXNotificationPost (in CoreFoundation)
    16 0x955ead93 _CFXNotificationPostNotification (in CoreFoundation)
    17 0x95ae47b0 -[NSNotificationCenter postNotificationName:object:userInfo:] (in Foundation)
    18 0x95aedff8 -[NSNotificationCenter postNotificationName:object:] (in Foundation)
    19 0x922860a5 -[NSApplication finishLaunching] (in AppKit)
    20 0x92285b2b -[NSApplication run] (in AppKit)
    21 0x92253030 NSApplicationMain (in AppKit)
    22 0x00002c82

    Cocoa/Carbon 区别

    | No Comments | No TrackBacks
    原文http://osxchat.blogspot.com/2004_12_19_archive.html
    這一陣子在 IRC 上,因為開發 OV 的緣故,經常有機會提到 OS X 程式設計相關的問題。我們經常提及像 Carbon, Cocoa, Objective-C 這類的關鍵詞,也開始有朋友問及,Carbon 是什麼?Cocoa 又是啥?我如果想在 OS X 上開發程式,該從哪下手好?

    這篇文章先回答頭兩個問題:Carbon 跟 Cocoa 是什麼?順便也講講這兩者的差別在哪。

    簡單地說,Carbon 和 Cocoa 都是 Mac OS X 的 API,也就是在 OS X 上寫程式,所必須用到的程式庫。就好像在 Windows 上要用 MFC 或 Win32 SDK,在 X-Window 上有 Qt/Gtk 等等。

    那為什麼又會有「兩套」程式庫呢?熟悉 Windows 程式設計的人可能已經在猜了:「喔,一套是『低階』的程式庫,像是用 C 寫的 Win32 SDK,一套是『高階』程式庫,像是 C++ 寫的 MFC,對吧?」

    答案呢,並不完全正確。Carbon 和 Cocoa 是兩套歷史背景不同的 API。因為我從是從 OS X 才開始使用 Mac 的人,講太多歷史背景可能會露餡。英文版 Wikipedia 上倒是有兩篇不錯的文章 (Wikipedia: Carbon / Cocoa)簡介這兩套 API 的故事,有興趣的朋友可以前往閱讀。

    不過,我還是就我有限的認識,說明一下 Carbon 和 Cocoa 的背景。Carbon 是 Apple 自 OS 9 時代末期,為了協助開發者將舊程式移植到 OS X ,所提出的 API 架構。當時有個名詞叫「碳化」(Carbonize),意思是把 OS 9 時代的程式,套上 Carbon 重新編譯,成為 OS X 的軟體。大多數 OS X 上的大型應用程式,都是從這條線過來的,例如 Adobe 系列的程式,微軟的 Word, Excel 等,它們全是 Carbon 寫的應用程式。

    Cocoa 就比較有傳奇色彩一點。用最簡單最簡單的說法:Cocoa 就是當年 NeXTSTEP 作業系統的 API。Apple 當年決定把 NeXTSTEP 買下,採用 Mach-BSD 為基底的作業系統的同時也引進了這套以 Objective-C 寫成的 API。說 Cocoa 「就是」NeXTSTEP 並不是太誇張的說法,因為所有 Cocoa 的 API ,都是以 "NS" 的名稱開頭的。NS 就是 NextStep 的縮寫。晚近的應用程式,例如 Safari, TextEdit, 可愛的 Adium,就都是用 Cocoa 寫成的了。

    那麼,Carbon 和 Cocoa 的關係是什麼?差別又在哪裡?就某些方面來說,Carbon 的確是較「低階」的 API,而 Cocoa 也的確有相當多的實作,底層是呼叫 Carbon。但偶爾也有 Carbon 呼叫Cocoa 的情形。

    就 OS X 目前的發展趨勢,Carbon 和 Cocoa 是並行發展的。Carbon 仍然主要供 C/C++ 程式設計者使用,而 Cocoa 主要供 Objective-C/Objective-C++/Java (沒錯,Cocoa 據說有相當好的 Java 支援)的程式設計者使用。由於 Mac 上仍有相當多的重量級軟體使用 Carbon ,Apple 一時三刻間是不可能宣佈 Carbon 淡出的。

    所以,與其說 Carbon/Cocoa 是兩套「平行」的 API,不如說它們是互補的 API。Apple 的「搜循功能」API(以及即將在 10.4 Tiger 中導入的 Spotlight 技術),便只有 Carbon 的 C API 可用。至於 Apple 大大有名的 WebKit 和 TextView (讓你可以在「十五分鐘內寫一套功能完整的編輯器/瀏覽器」),則只有 Cocoa 套件可用。

    介紹到這裡,寫個範例程式吧。就拿字串操作來說好了,下面這個程式示範如何在 Carbon 裡建立一個字串:

    char *str="Hello, world!"; // 我們想提供建立的字串



    CFStringRef cfstr=CFStringCreateWithCString(NULL, str, kCFStringEncodingUTF8);

    // 用字串...

    CFRelease(cfstr); // 把建立好的字串釋放掉


    如果是 Cocoa ,這個程式可以這樣寫:

    char *str="Hello, world!";

    NSString *nsstr=[[NSString alloc] initWithCString: str];

    // 用字串

    [nsstr release];


    當然,這是最簡單的操作,這裡是看不出 Carbon/Cocoa 的差別在哪裡。下面這一行程式,則是把 http://www.google.com 的內容,讀進一個字串裡:

    NSString *s=[NSString stringWithContentsOfURL: [NSURL URLWithString: @"http://www.google.com"]];


    這件事呢,呃,Carbon 是辦不到的。不過,Carbon/Cocoa 有個神奇的地方是:核心的基礎物件,例如字串、陣列等等,是可以互換的!例如某個 Carbon API 需要 CFStringRef 的參數,你可以直接把 NSString* 傳過去。如果某個 Cocoa API 需要 NSArray* 參數,你也可以直接傳 Carbon 的 CFArrayRef 給它。所以,如果你得寫個Carbon的程式去網頁上抓那容,你可以先用上面的程式把網頁抓下來(我有沒有說用 Objective-C 寫 wget 這樣的工具,只要用上面那行,程式就等於寫完了?),然後再把 NSString* s 當成 CFStringRef 來用。如果想把剛剛的內容印出來,你也可以這樣做:

    printf ("%s\n", [s UTF8String]);


    像 NSString/CFStringRef 這種可以互轉的資料結構設計,Apple 將之稱為「無痛轉接」 (toll-free bridging),非常高段。

    接下來有兩個常見的問題,第一個問題,我該選擇那套來入手?這個問題,就我參與 OV 開發的經驗,我會說,直接從 Cocoa 開始!Cocoa 再怎麼說,都是比較新的設計,同時也是徹底物件導向的應用程式介面。Apple Mac OS X 上的各種新型程式設計工具,尤其是 Interface Builder ,幾乎全是為 Cocoa 量身訂作的。更何況 Cocoa 有不錯的 Java 支援,也可以簡單呼叫 AppleScript,種種原因加起來,Cocoa 都是發展 OS X 應用程式的首選。

    但是接下來的問題便是,那麼,我是不是得為此學習 Objective-C ?這問題簡單的回答是:要,但是很快可以學會。大體上,如果你發展的是 GUI 程式,又多半是用 Interface Builder 拉選單和對話盒,所用到的 Objective-C ,其實份量並不會太多。大多數時候,只需要知道怎麼呼叫 Cocoa 物件的method,也就完全夠用了。

    其實,對於已經學會 C++/C#/Java 的人來說,Objective-C 應該是很好上手的。另外,Apple 為了讓 C++ 的程式設計者可以更方便設計程式,還設計出 Objective-C++ 這樣一套語言。簡單地說,就是讓 C++ 可以呼叫 Objective-C 的物件,或是反過來用 Objective-C 來呼叫 C++。

    Objective-C 配上 C++ 是相當銳利的工具。OpenVanilla 在開發之初,載入器的 OS X 相依程式碼部份,仍是以 Carbon 為主。但初期為了快速將輸入法模組開發出來,於是採用了 C++/Cocoa/Carbon 混用的模式,也就是使用了 Objective-C++ 並呼叫 Carbon 及 Cocoa。Objective-C++ 非常適合快速原型開發,我們一個晚上寫出了「大易輸入法模組」的原型,隔了一陣子又花了一個晚上「白話字輸入法」的原型,這些都是用 Objective-C++ 寫完的。當然,寫過程式的人都知道,寫出原型跟實際上能完全符合要求,有很大的一段距離,我只是舉例說明 Objective-C++ 對於程式設計的幫助而已。當然,世事難兩全,Objective-C++ 目前只有 Apple OS X 平台能使用(Objective-C 的話倒是拜 GCC 及 GNUstep 之賜,已經到處都有了),而 Cocoa 用多了,就很難習慣其他 API 了,因為真的是太簡單好用。

    Cocoa 倒不僅只有 Objective-C, Objective-C++ 及 Java 能使用。Cocoa 已經有 Python 的介面,Perl 的話也有 CamelBones 這套程式庫可以接口。

    簡單地說,Cocoa 是會令人上癮的,我一直覺得,Apple 應該要在未來的版本中,將它改名叫 Cocaine (古柯鹼/可卡因)才對。
    使用10.5编译完成,不能打开文件log如下
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: CHMDocument:readFromFile:/book/OReilly.Twisted.Network.Programming.Essentials.Oct.2005.eBook-DDU.chm
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Found object /#WINDOWS (204 bytes)
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Found object /#STRINGS (2958 bytes)
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Entries: 1 x 196 bytes
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Title: Twisted Network Programming Essentials @Team DDU
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Table of contents: 0596100329.hhc
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Index:
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Home: 0596100329/main.html
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Found object /#SYSTEM (4353 bytes)
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: SYSTEM Compiler: HHA Version 4.74.8702
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: SYSTEM Encoding: iso8859_1
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: SYSTEM compiled file: 0596100329-oreilly.twisted.network.programming.essentials.ebook-ddu
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: UniqueId=ce62c5f5b369c9c429f714c125fcd083585c706
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Found object /0596100329.hhc (29351 bytes)
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Found object /0596100329/main.html (4640 bytes)
    Aug  4 14:44:15 Cocoa-2 Chmox[7613]: Column identifiers used with NSTableView autosave feature must conform to NSCoding protocol
    使用10.4|Development编译就没有问题,可以正常打开log如下
    Aug  4 15:07:29 Cocoa-2 Chmox[7894]: CHMVersionChecker :: automaticallyCheckForNewVersion
    Aug  4 15:07:29 Cocoa-2 Chmox[7894]: CHMVersionChecker: 38 days since last time
    Aug  4 15:07:29 Cocoa-2 Chmox[7894]: CHMURLProtocol cannot handle <NSURLRequest http://chmox.sourceforge.net/MacPAD.plist>
    Aug  4 15:07:29 Cocoa-2 Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x2f1fdc0, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x2f2f840, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x30c8ee0, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x30dbdc0, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x32ebe10, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x32ee640, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 [0x0-0x23023].com.apple.Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x2f1fdc0, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 [0x0-0x23023].com.apple.Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x2f2f840, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 [0x0-0x23023].com.apple.Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x30c8ee0, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 [0x0-0x23023].com.apple.Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x30dbdc0, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 [0x0-0x23023].com.apple.Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x32ebe10, has non-zero refcount = 1
    Aug  4 15:07:29 Cocoa-2 [0x0-0x23023].com.apple.Xcode[7418]: Xcode(7418,0xb0103000) malloc: free_garbage: garbage ptr = 0x32ee640, has non-zero refcount = 1
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: CHMDocument:readFromFile:/Users/yarshure/Downloads/SimpleAnimation/Mac OS X Internals - A Systems Approach.chm
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /#WINDOWS (204 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /#STRINGS (5700 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Entries: 1 x 196 bytes
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Title: Mac OS X Internals - A Systems Approach
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Table of contents: 0321278542.hhc
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Index:
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Home: 0321278542/main.html
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /#SYSTEM (4287 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: SYSTEM Compiler: HHA Version 4.74.8702
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: SYSTEM Encoding: iso8859_1
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: SYSTEM compiled file: 0321278542
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: UniqueId=ec7178ad7d1cf9a45ac89e5044d9e9f6937ef8e4
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /0321278542.hhc (42094 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /0321278542/main.html (4587 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Exception raised during posting of notification.  Ignored.  exception: 'Column identifiers used with NSTableView autosave feature must conform to NSCoding protocol.'  invoked observer method: '*** -[NSTableView superviewFrameChanged:]'  observer: 0x1e5070  notification name: 'NSViewFrameDidChangeNotification'
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: CHMURLProtocol:startLoading <NSURLRequest chmox-internal://ec7178ad7d1cf9a45ac89e5044d9e9f6937ef8e4/0321278542/main.html>
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /0321278542/main.html (4587 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: CHMURLProtocol:startLoading <NSURLRequest chmox-internal://ec7178ad7d1cf9a45ac89e5044d9e9f6937ef8e4/0321278542/images/0321278542_xs.jpg>
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /0321278542/images/0321278542_xs.jpg (4206 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: CHMURLProtocol:startLoading <NSURLRequest chmox-internal://ec7178ad7d1cf9a45ac89e5044d9e9f6937ef8e4/0321278542/images/next.gif>
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /0321278542/images/next.gif (929 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: CHMURLProtocol:startLoading <NSURLRequest chmox-internal://ec7178ad7d1cf9a45ac89e5044d9e9f6937ef8e4/0321278542/images/docsafari.css>
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /0321278542/images/docsafari.css (4636 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: CHMURLProtocol:startLoading <NSURLRequest chmox-internal://ec7178ad7d1cf9a45ac89e5044d9e9f6937ef8e4/0321278542/images/overview_hed.gif>
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /0321278542/images/overview_hed.gif (694 bytes)
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: CHMURLProtocol:startLoading <NSURLRequest chmox-internal://ec7178ad7d1cf9a45ac89e5044d9e9f6937ef8e4/0321278542/images/style.css>
    Aug  4 15:07:35 Cocoa-2 Chmox[7894]: Found object /0321278542/images/style.css (15721 bytes)
     
    supermarket.png

    Play with Math

    | No Comments | No TrackBacks
    func.png

    你和Mac兼容吗?

    | No Comments | No TrackBacks
    今天看到一个帖子"对于别人问你苹果系统的兼容性,你该怎么回答?"

    衍生一个新问题,你和Mac兼容吗?我的答案
    1 目前90%的工作可以在Mac上完成,还有10%必须用Windows,因为我负责的游戏跑在Win上,还有就是那个报销系统打印的时候必须用Windows
    2 Objective-C/C,Python coding完全兼容
    3 淘宝/网银还是需要Win,不过我不是做生意的,这方面需求的比较少。
    其他我也没啥要用Win的了!

    June9 Morning Self

    | No Comments | No TrackBacks
    yarshureATwwdc08.png

    Blog.MacGeeks.cn来了

    | No Comments | No TrackBacks
    rt