苹果电脑升级操作系统教程
2012-05-11

 

首先要讲一下Mac操作系统跟windows操作系统的不同,以及一些基本知识:

引导程序

苹果电脑采用EFI来引导系统,而不是BIOS。EFI比BIOS简单好用的多。EFI支持从U盘、外置硬盘、光盘、硬盘的某个分区启动。选择用那种方式启动只需开机的时候按住alt(option)键不放就可以了。

安装盘

Mac系统的安装盘可以在网上下载,一般是dmg格式。dmg是mac的压缩打包格式,类似于iso格式。下载回来之后,可以用Mac系统自带的“磁盘工具”软件将dmg文件恢复到某个硬盘分区,或者刻录到某DVD光盘中。不过建议恢复到硬盘里面,这样安装系统的时候速度会快很多。

序列号

Mac系统只能装在苹果电脑上(经过破解之后也能装在PC上),所以操作系统的价格在你买苹果电脑的时候就算交过了。之后只要你能得到dmg格式的系统镜像,就可以随便在电脑上安装而不需要任何激活码或者序列号。

Timemachine

时间机器是Mac自带的系统备份恢复软件。通过差量备份将系统不同时候的状态全部记录下来,可以随时找回之前的文件。也可以将资料从一台电脑恢复到另外一台。 我们将会使用Timemachine来备份当前电脑的所有资料(超大的文件貌似不会被备份,例如虚拟机文件),然后等新系统装好后,再从Timemachine里面把资料还原回来。这里说的“资料”不仅仅包含个人文档,而是计算机的所有人为改变,包括你下载的程序,你的浏览器看过的网站记录,甚至你桌面上图标的位置。

备份磁盘分区

系统自带的“磁盘工具”的功能十分强大。它支持在开机状态下把系统盘完整拷贝到另外的分区或者外置磁盘分区。同样,新系统装好后,也可以从这个拷贝恢复个人数据。而且备份整个系统分区貌似要比使用Timemachine备份要快一些(如果你是第一次使用Timemachine的话)。

迁移助理

“迁移助理”是Mac系统自带的系统恢复软件。支持网络迁移、从Timemachine或者磁盘恢复。在新系统刚刚装好的时候,建立任何用户之前,系统会提示是否需要迁移。如果错过了这次机会也没关系,任何时候都可以启动“迁移助理”来进行迁移。

系统分区

一般情况下,苹果电脑的内置硬盘只需要1个分区。并且请保证磁盘的分区图方案是GUID分区表。否则会影响启动速度。格式化在苹果系统里面叫做“抹掉”。苹果的分区抹掉的时候要选则格式为“Mac OS 扩展(日志式)”。

修复权限

Mac系统是基于BSD的,跟Linux很像。系统对文件权限的控制非常严格,这点跟windows很不像。想像一下windows下面,你不小心双击了一个病毒文件,然后。。。然后就没有然后了。。。而Mac下面就算你运行了一个病毒文件,在你输入密码之前,它是没有权限修改系统文件的,顶多就是把你的个人文件删了。  而且很多系统问题都是由于权限错误造成的。所以一般在完成迁移之后都会做一次“修复磁盘权限”操作,以保证系统的稳定运行。这个功能可以在“磁盘工具”的“急救”选项卡里面找到。

 

步骤:

好了,现在来说说怎样升级或者重装Mac系统。

首先,从网上找到需要的系统镜像文件。下载下来。 

找一个usb硬盘,分一个10GB左右的分区。(或者使用本机的硬盘,新增加一个分区)。

打开磁盘工具软件,将这个分区抹掉(注意选择格式)。

点击“恢复”选项卡点击“源磁盘”后面的“映像”按钮,找到刚刚下载的dmg系统文件。将左侧刚刚抹掉的10GB分区拖入“目的磁盘”的空白框内。然后点击“恢复”按钮。

坐等完成。

如果你想保留你的个人文件的话,在安装新系统之前请用Timemachine备份一次或者用磁盘工具把系统盘备份到外置硬盘(外置硬盘的分区需要比系统盘稍大)。

完成了之后你就可以重启,“当”一声之前按住alt不放,进入启动选择界面,选择安装盘分区启动。

进入安装盘系统之后,最好不要着急安装。先打开磁盘工具(对,安装盘里面也自带了磁盘工具软件),然后抹掉系统分区。如果是用外置磁盘安装,甚至可以抹掉整个系统磁盘。

抹掉之后就可以继续系统安装步骤了。没什么特别的,一直点“继续”就是了。完了之后建议先建立一个临时账号(不要跟老系统的用户名一样),进入系统看看。看看新系统满不满意,运行起来卡不卡。

如果没问题就启动“迁移助理”,把之前备份的个人资料迁移到新系统中来。

迁移完成之后注销或者重启,进入之前的用户,再进入“系统偏好设置”把刚刚的临时账号删除。然后再进行“修复权限”操作。完成之后重启。

 

好了,现在你的系统已经升级,并且保留了你所有的文件(注意Timemachine不会备份超大文件,.hosts文件,请自行备份)。 

 

另外,貌似Lion系统支持直接升级安装,直接从App Store下载Lion系统,然后直接运行就可以了。不过我还是建议在安装之前先备份一下,否则万一。。。就一切都完了。

完。

13837 read 4 comment(s)
更新iTunes同步歌词显示小工具
2012-04-20

    之前的版本:http://php.js.cn/blog/itunes-geci-lrc-widget-for-mac-os-dashboard/

    这次在此基础上修改了下界面。修复了一些bug。 去掉了歌名和歌手一直显示的功能。只在歌曲开始的时候显示歌名。

    看截图:

    点击这里下载。解压后直接双击就可以了。

    注:这是个Mac OS 操作系统的Dashboard小工具!Windows用户请无视之。

完。

10487 read 2 comment(s)
Titanium开发iOS应用使用中文appname
2012-04-20

    用Titanium做iOS的APP挺简单的。完全不需要Object-C的知识,看官方的API文档基本就可以了。我最近做了个应用准备发布。不过遇到了个问题,就是app name不能设置成中文。 想了下,貌似App Name也有语言问题,不同语言环境下应该显示不同的名字才对。 后来网上找了一大圈,终于搞定。 下面是步骤:

    环境: Titanium Studio, build: 1.0.9, Titanium Mobile SDK 2.0.1 , Mac OS Snow Leopard

  1. 首先在你的项目根目录下新建一个文件夹,i18n,这个是国际化文件夹,下面应该放各种语言的语言文件
  2. i18n下面新建en文件夹用于英文,zh_CN文件夹用于中文,ja 日文 ... 
  3. 在每个语言文件夹下面新建app.xml文件
  4. app.xml文件里面写:

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
        <string name="appname">APP NAME</string>
    </resources>

  5. 不同语言文件夹下的app.xml写不同的APP NAME就可以了。
  6. 如果没效果可以试试先clean再run

搞定。

另外,推荐一个可以下载免费icon素材的网站,http://www.softicons.com/ 里面好多开源免费的icon!!

完。

11839 read 2 comment(s)
让Javascript函数支持事件绑定/触发
2012-03-28

    JQuery支持事件绑定,触发等操作。不仅仅对DOM元素有效,对普通的函数或者对象一样可以。比如

var a = {};
$(a).bind('msg',function(){ alert(1); });
$(a).trigger('msg');

    我刚做了个函数,可以为自己写的普通函数增加类似上面这种事件监听、绑定功能。并且支持跟JQuery一样的事件命名空间。例如:

function ClasssA() {} //某个函数
EventMachine.call(ClassA); //为此函数的prototype增加几个方法(bind,unbind,trigger,unbindAll),此函数源代码见后面的链接

var a = new ClassA(); //实例化ClassA
a.bind('msg',callback1);  //click的时候执行callback1
a.bind('msg.a',callback2); //click的时候执行callback2
a.bind('msg.b',callback3); //click的时候执行callback3
a.bind('logout.a',callback4); //mouseover的时候执行callback4

a.unbind('msg'); //干掉 callback1,2,3
a.unbind('msg.a'); //干掉 callback2
a.unbind('.a'); //干掉callback2,4
a.unbind('msg',callback2); //干掉callback2
a.unbind('.b'); //干掉callback3
a.unbindAll(); //干掉所有

a.trigger('msg','abc'); //触发callback1,2,3 并传递'abc'参数

    源代码及demo看这里

    因为目前采用的方案是往this的prototype上写方法,所以暂时只支持函数。 不过可以经过很简单的修改来支持普通的对象(貌似没什么必要。。。)

    因为没有用到任何平台相关的东西,所以EventMachine函数可以运行在几乎所有支持Javascript的地方。比如NodeJS, Web, Titanium等

完。

9290 read 2 comment(s)
Javascript程序员也可以开发iOS原生应用
2012-03-19

    主要方向是前端的我曾经也想过学学iOS的Object-C或者Android的Java。但是写习惯Javascript这种弱类型的脚本语言,突然去写严谨的C和繁琐的Java变成一件很煎熬的事情。所以这个学习过程就逐渐被搁浅了。

    HTML5在移动设备上的普及使得前端程序员开心了。自己的网站稍微改改,使之能够适应移动设备上较小的屏幕,然后再加上几个meta信息,就可以通过iOS上Safari的“添加至主屏幕”功能在桌面上添加一个叫做"Home screen app"的App了。这比学习Object-C => 用XCode开发app => 提交到app store => 等待苹果通过 => 从app store下载应用 这个漫长的过程要来的简单许许多多。而且完全不用看苹果的脸色。我认为这种方式在以后将会越来越流行。

    但是HTML5创建的Home screen app有几个不足之处:

  • 无法调用很多系统资源 (虽然现在某些接口可以提供地理位置调用,重力传感器信息调用,但比起原生程序来说还是太少了)
  • 无法控制设备旋转,所以必须要让网站适合设备竖看和横看
  • 虽然HTML5可以实现离线浏览,但是操作起来比较复杂
  • 无法通过app store来推广

    我认为HTML和Javascript这些技术在未来很长一段时间里面都是很主流的语言,而且应该会得到越来越多的应用(btw,很期待webOS发展壮大啊)。所以国外很多公司就瞄准了这块市场,纷纷开发出使用Javascript技术来写Native App的解决方案。其中比较流行的有PhonegapTitanium

    Phonegap是提供一个webview(浏览器界面),使得你可以在里面载入自己的HTML文件,执行JS程序等。然后Phonegap提供比Safari更多的接口,让你可以调用更多的系统资源。这样,Phonegap就有非常优秀的跨平台性。但是由于界面是用HTML绘制的,所以运行效率上会稍微差点(我本人无法接受)。我就不多讲了,因为我也没仔细研究过。

    而Titanium声称的Native,指的是用Javascript调用接口来生成原生的界面。程序具体的运行逻辑还是使用Javascript来实现。因为有太多的Native things,所以Titanium的某些接口只能在iOS上用,另外有一些只能在Android上用。有点违背“write once, run anywhere"的思想。不过如果写好一个平台的app,再迁移到其他平台还是比较容易的。

    我本人比较认同Titanium的思路。界面用Object-C调用系统UI来创建,保证了界面的流畅程度。我在iPhone上安装了Titanium的Kichensink (Titanium的各种接口演示程序) 。其流畅程度的确跟Object-C开发出来的程序在一个等级上。各种动画十分流畅。然后其他部分用我们熟悉的Javascript来实现。官方提供的接口足以满足绝大部分需求(当然开发大型的游戏是比较不现实的)。

    我尝试的第一个应用是做一个匿名随机聊天的app(对,EndTalk的iOS客户端)。界面用的是类似iOS上短信对话框的界面。然后通过Socket.IO与服务端的NodeJS通信。支持文字与图片。 这个需求对一个Object-C程序员来说还是挺多工作量的,但是在Titanium的帮助下,我用了一个晚上了解Titanium,另一个晚上来写app。就已经实现了主要功能。而且在真机和模拟器之间测试通过。

    另外,虽然用TItanium来绘制界面是件挺简单的事情。但是要绘制一些复杂一点的界面就有点力不从心了。不过还好Titanium推出了一个Marketplace,允许Object-C开发者为Titanium开发各种模块,提供给Javascript来调用。比如我用的那个短信界面就是一个免费的模块。哈哈,这样就可以跟其他Object-C开发者合作,开发一些应用了。大部分事情用Javascript来做,JS做不了的,就开发一个Object-C写的模块,JS调用就是了。

    虽然以前那种随便开发个app就可以在app store上赚很多钱的时代已经过去。但是越来越多的iOS客户端需求仍然得不到满足,所以目前Object-C开发者的工资都很高,很高。但是绝大部分的各种客户端都可以使用Titanium来做。比如微博客户端、B2C网站客户端、淘宝客户端、聊天软件客户端、电子图书、电子阅读器等等。

    所以,前端开发者们也可以很快速的入手iOS App开发,而且开发效率绝对比Object-C开发者快! 人力成本降低,在当前的市场中会很有竞争力。

    Javascript的应用环境其实非常多。稍微列举一下吧:网页、WebOS App、Titanium开发、Asp.NET中的JScript也算是吧、Windows的JScript脚本、Mac的Dashboard Widget、Windows的桌面小工具、最重要的:服务端的NodeJS! 欢迎补充。

完。

15086 read 8 comment(s)
Copyright © Longbill 2008-2017 , Designed by EndTo , Powered by EndCMS