使用Hamachi和Screen Share远程管理你的Mac

这年头越来越多的同学有了一台以上的Mac电脑,这时候各种数据的同步就显的尤为重要了.

文档同步我使用的是 EverNote ,从09年使用至今,非常好用,备忘录,便携帖,代办实现,文字同步皆可搞定.而且支持图片中的文字识别搜索.

文件同步我使用的是 DropBox ,前不久被墙了一段时间,现在仍然无法打开主页但可正常使用. 如果你翻越长城可点击这个链接注册 http://db.tt/7egLc0l ,同时会带给我250M额外的空间 :D

远程控制就不需要额外的软件了,苹果系统中内嵌了了Screen Share程序. 屏幕共享可以在网络比较差的情况下仍然保持着顺畅的连接,你可以使用它来:

  • 远程操作Mac
  • 在公司监视家中电脑下载小片片的进度
  • 远程玩游戏,看电影
  • 在远程机器上启动PhotoBooth 做远程监视器

屏幕共享还有两个很赞的功能

  • 支持两个机器间的复制/粘贴!!! 非常方便工作的同学
  • 支持大部分快捷键,甚至包括截图,程序切换

你可以在目标机器(需要被远程控制的机器)的控制面板的共享中找到”屏幕共享”选项(本人英文版的系统,勉强看下了)

Preference-Sharing

激活屏幕共享,然后添加常用的用户(比如你当前用户),当然你还可以在电脑设定里面增加连接时需要额外的密码确认.

连接远程Mac

  • 局域网

在局域网下你应该能在Finder侧面的共享里看到另一台电脑,选中,点击屏幕共享就可以连接上了.

Finder-Shared

如果无法在共享中看到机器(比如局域网过大,比如偶公司的超级局域网,比如RP问题),可以在Finder的菜单中 选择/前往/服务器 Command+K

输入 vnc://远程机器的ip地址 进行访问

  • 非同一个网段(比如某机器在公司,某机器在家里)

对于没有外网的机器来说就无法使用屏幕共享连接了,但是有了Hamachi这个虚拟局域网软件,可以模拟任何电脑在一个局域网中(类似浩方游戏对战平台的实现).

首先下载 Hamachi 免费版, 官方已经提供了中文版服务 ,应该很容易下载并安装了.

在两个机器上分别安装Hamachi后在其中一台机器上选择创建网络,另一电脑上选择加入网络. 这时候你的虚拟局域网就搭建完成了.

[当然你也可以选择和logmein的账号绑定起来,以后管理更方便]

成功后的截图,可以看到当前机器是air,远程机器是iMac. 绿点就表示链接成功啦

Hamachi-success

接下来要做的和局域网的步骤一致,在Finder上找到机器或直接输入IP地址!

附上远程机器截图一张,还开了个虚拟xp系统.嘿嘿Enjoy!!!

Screen-Sharing-Demo

最后,如果大家觉得Dock上一直有个蘑菇头的图标很不舒服,可以使用如下方法去掉:

  • 进入/Application/文件夹, 点击Hamachi右键,选择显示包内详情.
  • 找到content/info.plist 文件,打开
  • 添加一行内容 key LSUIElement, type : Boolean, Value: YES
  • 重新允许程序!!

UIViewController 的内存管理

在iOS3.0后,UIViewController多了一个叫做viewDidUnLoad的方法.不少人都不清楚这个方法的具体意义,苹果的文档也就一句”Called when the controller’s view is released from memory” 简单的解释了下,并要求你把IBOutlet绑定的视图给清空,为什么呢?

先看下UIViewController从创建view到展示的流程的几个函数

-init
-initWithNibName:bundle:

这两个方法都是初始化一个vc,但请注意view不是这时候载入的

-loadView
-viewDidLoad

当一个视图准备展现时,vc首先会判断view是否已经创建,否则便通过之前指定的xib文件来初始化view,以及绑定其他关系(若没有指定xib文件,则默认会搜索和vc同名的xib,比如myNameViewController就会搜索 myNameViewController.xib文件)

若是没有xib文件,你就可以在loadview中自己手动创建这个viewControoler需要的视图.
接下来就是调用到 -viewDidLoad,许多人喜欢在这里做些其他事情,比如做个http请求,建立个数组啥的, 这里若不处理正确, -viewDidUnload 激活时内存就容易泄露了,稍后提到.

-view()appear
-view()disappear

这几个方法就不解释了

-viewDidUnload

该方法在收到内存警告,同时该视图并不在当前界面显示时候会被调用,此时该controller的view已经被释放并赋值为nil.
接下来你要做的是

  1. 把实例变量的子视图释放(IBOulet的,以及自己添加的),.
  2. 其他实例变量,比如之前在-viewDidLoaded中实例的数据数组,http请求释放掉.

因为当该viewController再次被激活准备显示时(比如navigationControler返回到上一级),vc发现自己的view为空后会重复之前的流程直到把view给创建起来,若没将自己额外添加的子视图,各种类实例变量释放,这里便会重新再次创建.

于是,内存泄露了.

苹果系统狮子已提供预览版本下载

原来不仅仅是macbook pro更新了. 进入开发者页面你看到了什么!!

没错,现在即可下载狮子的预览版!

火速围观:

http://developer.apple.com/technologies/mac/whats-new.html

 

 

Read UTF8 code at specify position from an NSString

如何获取nsstring制定某个位置的utf8编码的字符呢?

我也不知道,所以在stackoverflow问了下.

很快就有人回复了解决方案.

在贴代码之前写介绍下几个编码格式:

UTF8 和 UTF16均为字符编码方式.

UTF-8使用一至四個位元組為每個字符編碼:

  1. 128個US-ASCII字符只需一個位元組編碼(Unicode範圍由U+0000至U+007F)。
  2. 帶有附加符号拉丁文希臘文西里爾字母亞美尼亞語希伯來文阿拉伯文敘利亞文它拿字母則需要二個位元組編碼(Unicode範圍由U+0080至U+07FF)。
  3. 其他基本多文種平面(BMP)中的字元(這包含了大部分常用字)使用三個位元組編碼。
  4. 其他極少使用的Unicode 輔助平面的字元使用四位元組編碼。

UTF-16Unicode的其中一個使用方式。UTF是Unicode/UCS Transformation Format,即把Unicode轉做某種格式的意思。

其編碼方法是:

1如果字符編碼U小於0×10000,也就是十進制的0到65535之內,則直接使用兩字節表示;

2如果字符編碼U大於0×10000,由於UNICODE編碼範圍最大為0x10FFFF,從0×10000到0x10FFFF之間 共有0xFFFFF個編碼,也就是需要20個bit就可以標示這些編碼。用U’表示從0-0xFFFFF之間的值,將其前 10 bit作為高位和16 bit的數值0xD800進行 邏輯or 操作,將後10 bit作為低位和0xDC00做 邏輯or 操作,這樣組成的 4個byte就構成了U的編碼。

而NSString使用的就是unicode存储的, 唯一一个获取unichar的方法叫做 -characterAtIndex: , 但是问题是 unichar 其实是个 unsigned short,也就是2个字节,所以它并不能展现所有的字符.

终极解决方法:

@interface NSString (UTF8)
- (NSRange) rangeOfUTFCodePoint:(NSUInteger)number;
@end
@implementation NSString (UTF8)
- (NSRange) rangeOfUTFCodePoint:(NSUInteger)number
{
    if (number >= [self length]) {
        return NSMakeRange(NSNotFound, NSNotFound);
    }
    NSUInteger codeUnit = 0;
    NSRange result;
    for(NSUInteger ix = 0; ix <= number; ix++)
    {
        result = [self rangeOfComposedCharacterSequenceAtIndex:codeUnit];
        codeUnit += result.length;
    }
    return result;
}
@end

突然的新年

老家这边有虚岁和实岁概念.一个从1岁开始计算,一个从零开始.

小时候偏爱虚岁,而如今更爱实岁的说法.

小时候天天盼望着时间过去,而如今开始感触事情太多太杂乱.

2010年时候许下几个愿望,但悲剧的是全未实现.不知是定的不够现实或是不够努力,但明白愿景这 东西和百米跑不一样—跑了1米就少了一米. 它可能像学骑车,突然哪天就会了,然后以后怎么骑怎么舒服.

2010年末开始正式试水app store, 选择的都是复杂度不超过2晚上的难度.但是来自这上面的反馈却是让我非常惊讶,除开程序产品本身,能自己亲身经历销售,推广,和用户交互是件非常有趣的事情.

第一次上架
第一次收到用户评价
第一次自己尝试各种推广方法
第一次合作推广(谢谢iapp.im,创造了半天3000条评论的景色.改行做媒体吧)
第一次日收入破千CNY
第一次收到Featuring App Artwork request 邮件
第一次收到版权纠纷邮件
第一次应用被拒绝(娱乐性不够 =.=)

2011年,期待收获更多的体验,这回不再是些cool little things,而是些真正的我所谓的软件.blabla…..

但是这之前,LessLyrics 已经挤压了太多留言要处理了.

以及停不下来的各种小小的想法.

2010年不好也不坏,比较郁闷的是公司的产品一直没啥动静,处于热情耗尽状态中.

希望2011年一切更好.

可不是么,本命年来了,大兔子小兔子们要红红火火滴.

新年快乐!

– 透露下,我要写个短信群发的软件!!! (谢谢xiaobo大师的提醒!)
– 今年的年过的非常的棒非常的有意思非常的热血,可惜家里冷了点
– 题目中的”突然”表达了作者对时间飞逝而表达出惋惜的感情,别无他意

麻了个球球

一不小心再過2個月本命年了,一不小心就24了。
麻了个球球

寡人這幾天仍然穿著唯一的打補丁的牛仔褲上下班,這兩天發現路途上冷得有點兒頂不住了。
一查溫度,零下6度!
麻了个球球

最近項目很討厭,開會,和pm談需求,和ued談怎麼切圖,和服務端談接口,還得寫代碼!
差點忘記我是寫代碼的
麻了个球球

這個博客原本計劃記錄程序開發上的各種事件
結果最後失控成這樣
麻了个球球

剛剛把輸入法切成繁體,想上去體驗下狼人。結果發現還得下更新包。
麻了个球球
麻了个球球
麻了个球球

发愤图强

今天瘦了点不温不火的打击。

在不是很遥远的一段时间前写了个mac app提交到了app store。

近一个月后今天打开邮箱收到份邮件。

not very useful or do not provide any lasting entertainment value

于是我觉得很伤心。

本以为这个应用可以一下子震撼全球的。

虽然这个软件只花费了我半天时间,可是为了找这个漂亮的图标花了几小时。

我决定尝试下申诉下看看。

==

今天回家路上和小鱼扯到这事情,

然后我说我太鄙视苹果了。

然后提到以前在公交车上看过电视一个节目,里面男主持说,你知道apple吗,iphone就是他们公司的,他们公司什么都简约简单,甚至电梯里只有一个按钮!

然后女主持说,那他们怎么做呢,难道每层都要停吗?

然后就没然后了,因为到站了。

这时候小鱼表现出一个职业PM的专业水准,说他们员工用工卡刷下就能到他们的楼层了。

那如果他要去其他层楼呢?

我给自己一个答案,他们员工一人可以有7张电梯卡,这样一个按钮就能上各种楼层拉。

gmail spam的小细节

今天照例把以前冲动订阅的一些邮件选中,点击spam。
(每天给google 的spam分析库贡献些数据)
结果意外的出现个提示框:

关于我现在每天这有点儿傻的行为,也曾经想过一次性退订就好了。但是我需要点开邮件,寻找unsubscribe链接(可能不一定找到,还得去官网,个人中心,什么的),最后又会收到份确认unsubscribe的邮件。

大懒人自然选择了承受每天多几个邮件然后选中spam,毕竟无脑的行为做起来更觉得轻松。

这个改进对我来说就如那些经常忘记附上附件的马虎在发送邮件时能得到个温馨提示一样,真的非常惊喜。

作为个1/3研究产品的人,居然每天默默承受却不去思考为什么,有点儿失败。

==

最近在看王坚的结网。

为什么花生米和花生壳是悬空的?

google reader 用户的数字消灭症

。。。

非常有感触。

所有IT行业的人都值得一看, 字字珠玑哈哈。

照片和视频

秋末,去了趟凤凰岭烧烤。

路上百度了下,海拔1k多米,甚是期待。

结果没多久便到了顶峰,这感觉和长沙的岳麓山真没什么区别。

沮丧之余同行人一语点破,你知道北京海拔多少。

原来如此。

下山换了条路(中路),风景开始渐渐显现

够曲折,够荡气回肠

图片均为手机所拍,颜色不正常点的是使用了软件 Instagram 的缘由。

(小花那张确实没有!)

—- 分割线 ——

昨天看了在办公室流言了很久的老男孩,超感动。

听到改版的比利姐后震惊了

听到片尾曲后我什么也不是了

分享个有点类似的视频

Mr.Children

2010年11月3日

前些日子

弱贝尔奖

两流氓在用户电脑上吵架

今天

某傻逼公司居然开始威胁起用户

幸亏不是windows用户

生在乱世也是种乐趣。

:D

mark