Shuhai Shen

You may find more about me @ http://leonax.net/about/

102011
 

在iPhone上玩游戏的时候,是不是很想截个屏幕的截图和朋友分享呢

iPhone的机身上有没有Print Screen键,不过截屏的方法也很简单:

  1. 按住Home键(不要松开),就是用来回到初始界面的按键
  2. 再按一下顶端的休眠按钮
  3. 松开Home键

这时候屏幕会闪一下,然后一张截图就保存在你的相册里了,连上数据线即可传到电脑中,或者用彩信发出去。

*此方法同样适用于其它iOS设备,如iPod Touch和iPad.

092011
 

科普系列

  1. 内存 vs 硬盘
  2. 32位 vs 64位
  3. Byte vs bit
  4. 高清 vs 1080p
  5. ARM vs x86
  6. 多核 vs 超线程
  7. IPv4 vs IPv6
  8. HDD vs SSD

以前在选购硬盘的时候,注重的参数大概只有容量(320G、500G或1T之类)和转速(5400rpm或7200rpm),而现在又多了一个名词:SSD(固态硬盘)。相比之下,传统的硬盘可被称机械硬盘(HDD)。

机械硬盘的工作原理和光盘类似,硬盘内部的盘片高速旋转,有一个磁头在它表面读取(或写入)数据;而固态硬盘更像是U盘(闪存),内部没有转动的部件,读取靠电路实现,于是固态硬盘没有转速(rpm)这个参数。

两种类型的硬盘各有千秋,尽管很多厂商都看好SSD的前景,但也有不看好的。这里有一些粗略的比较,希望对你选购硬盘有帮助:

  • 价格:SSD技术仍在发展中,而HDD已经相当成熟了,所以SSD的价格远高于HDD。一块250G、2.5寸的笔记本HDD售价大概是400元,同样的价格只能买一个30G的SSD。
  • 容量:目前发售的SSD通常在512G以下,HDD的容量可能2T或3T。
  • 重量:相对来说SSD轻一点。
  • 可靠性:由于HDD中有活动部件,在使用过程中应尽量避免倾斜或震动,而SSD没有这种担忧。
  • 读写速度:SSD的读写速度是HDD的10倍以上,且SSD不受磁盘碎片的影响。
  • 寿命:HDD中每个存储单元的读写次数理论上没有限制,SSD中每个单元的读写次数上限大概是2百万次,在SSD的使用中应该尽量避免频繁地读写某一块特定区域,比如虚拟内存文件之类的。Windows 7中已经对SSD提供了比较好的支持

如果你既想享受SSD的速度,又只想花费HDD的价格的话,有一个折衷的方案——双硬盘。一些OEM厂商提供了双硬盘的机型,一个较小的SSD用来装系统和应用程序,一个较大的HDD用来存放数据,这样既加快了系统的运行速度,又不用花太多钱。

082011
 

放假在家里玩Fruit Ninja(俗称切西瓜),刷了几天终于把Zen Mode刷上300分了,哦耶~~

在Fruit Ninja的三种离线模式中,我最喜欢Zen模式,就是90秒没炸弹的那个,Classic模式太花时间,打一局要至少5分钟,Arcade模式太拼RP,还是Zen模式比较练技术,又不会花很多时间。

Zen模式中主要拼的是连击(Combo),假设所有的水果都属于某一个连击,那分数的理论上限是算得出来的,大约330左右。于是在实际切的时候,少切到一个Combo水果就少一分。有时候水果是接连出现的,而不是一起出来的,这时候比较好的策略是三个一切,虽然后面可能只出现一个或两个,但等得久了漏掉的概率就大了……

072011
 

Windows中删除文件的操作大家都会,对着文件(或文件夹)的图标按“Delete”键嘛,这样被删除的文件(默认)就进了回收站,要么就是按Shift+Delete使文件不经过回收站直接被删除。这样文件是否真的被删除了呢?

答案是否定的。Delete操作只是让你在资源管理器(或我的电脑)中看不到某个文件,但这个文件的内容,还依然保存在硬盘上。

Windows出于性能的考虑,在删除文件的时候,并不会完整地删除文件内容,而是在文件的开头部位标记了一下,说这个文件被删掉了,之后在浏览文件夹的时候,这个文件就不会被显示出来。所以说,即使误删了一些重要文件,不要慌,使用某些文件还原工具就可以找回被删掉的文件。

接下去就是另一个重要的问题了:如何彻底删除一个文件。(想象一下陈老师,后果很严重呀……)基本上有以下几种方法:

  1. 创建一个新文件去覆盖被删掉的文件。由于系统认为之前那个文件已经无效了,新写入的文件有可能被写在之前那个文件所处的位置上,当然这个是看RP的,系统有自己的策略来决定新文件写在哪里。比较安全的方法是把整个分区(盘)填满,这样就能保证删除的文件都被覆盖掉了。
  2. 格式化。Windows提供了2种格式的方法:快速格式化和完整格式化。顾名思义,快速格式化不会真正地删除磁盘上的内容,只是重写了某些标记。而完整格式化是会把整个分区清理掉的。所以如果你需要确保安全的话,请在格式化的时候,不要勾选“快速格式化”的选项。
  3. 使用安全删除工具,如微软提供的SDelete。这些工具通常会在删除文件的同时,在那个文件的位置上写入一个垃圾内容,从而清理掉原来的文件内容。

附:SDelete是一个命令行工具,它的参数是:
sdelete [-p 次数] [-s] [-q] <文件名或文件夹名>
sdelete [-p 次数] [-z|-c] [盘符]

-c 将空闲空间置零(对于优化虚拟磁盘有好处)
-p 次数 复写文件的次数
-s 递归删除子目录
-q 不打印错误信息(安静模式)
-z 清理多余空间

062011
 

在我读大学的时候,C++课程是完全讲解理论知识的,连最后的考试也是纯笔试,所以我对类似《编程方法》课中的习题一直都很感兴趣。

《编程方法》第二课讲完之后,需要完成习题1(Assignment 1):《编程方法》习题1 (2011年1月) [198.02 kB]

一共有4道题目,都是关于Karel的,在做题目之前,你需要下载一个Standford特制的Eclipse并安装Java RE 1.6,然后下载习题1的模板并导入进Eclipse,然后就可以开始做题目了。

由于时间原因,我只完成了第4题。题意很简单,在地图的第一行的中间位置摆放一个Beeper,如果有双数列,放在中间两列中任一列皆可。地图保证高度大于等于宽度。

以下内容为剧透,请慎重。

Continue reading »

052011
 

《编程方法》系列课程

  1. 《编程方法》第一课 欢迎来到CS106A
  2. 《编程方法》第二课 Karel的世界
  3. 《编程方法》第三课 Karel与Java
  4. 《编程方法》习题1
  5. 《编程方法》第四课 计算机科学发展史
  6. 《编程方法》第五课 变量

如果你喜欢这门课程,请在新开学网站上支持一下,使译者更有积极性。顺便也请支持一下《算法导论》课程,非常希望这门课能推广出去……

以下视频来自优酷:http://v.youku.com/v_show/id_XMjI2ODU1MzQ0.html

以下是我的笔记:
[00:40] Karel程序文件都以.java结尾
[03:20] 死循环(Infinite Loop)
[05:20] “少一”(Off By One Bug)错误
[08:10] 注释,在程序中用来向程序员作解释的语法,并不影响程序的运行
[11:30] 注释中可以写清楚方法的前置和后置状态,也就是说这个方法假设在运行之前,系统已处于某个(前置)状态,并且保证运行之后,系统必然处于某个(后置)状态。
[16:40] 程序的分解,抽象->细化,自顶向下 / 自下向上
[20:00] 双倍程序的演示
[21:20] Algorithm一词的来历
[25:30] 用原始的方法来实现计数器。
[35:00] 地图上的每个点,对于Karel来说,实际上是一个整型的计数器,所以它可以作所有类型的数学计算。
[35:50] 格式不好的代码的例子。编程风格对于软件工程来说非常重要。
[38:20] 在Java中方法名以小写字母开头,被称为骆驼表示法,Camel Case。Camel Case分为两种,Upper Camel Case(首字母大写)和Lower Camel Case(首字母小写),Upper Camel Case又称Pascal表示法。还有他提到的用下划线连接的小写单词,是标准C++的表示法。还有一种很恶心的是小写单词但不用下划线……
[40:00] Java对方法定义的顺序没有要求,以C#一样,但C++和C是有的。
[40:30] 程序分解的原则:一个方法解决一个问题;方法的长度在1行到15行之间(传统的要求是一个方法要能完整得在屏幕中显示出来);方法名描述了它在干什么;注释很重要
[45:00] 清理房间的Karel程序
[49:30] 使用turnAround巧妙地解决了程序死循环的问题

042011
 
Kaley Cuoco

这几天在重温Prison Break,发现了一个熟悉的身影:

S02E15 The Message中Kaley Cuoco饰演Sasha,和怪人Haywire聊过几句,后来她继父被Haywire干掉了。看上去有点小胖,到了The Big Bang Theory中就正常一点了:

另外附一张Kaley的艳照(点击看大图):

022011
 

《编程方法》系列课程

  1. 《编程方法》第一课 欢迎来到CS106A
  2. 《编程方法》第二课 Karel的世界
  3. 《编程方法》第三课 Karel与Java
  4. 《编程方法》习题1
  5. 《编程方法》第四课 计算机科学发展史
  6. 《编程方法》第五课 变量

如果你喜欢这门课程,请在新开学网站上支持一下,使译者更有积极性。顺便也请支持一下《算法导论》课程,非常希望这门课能推广出去……

以下视频来自优酷:

以下是我的笔记:
[04:30] 之前的都是废话
[04:50] Karel只懂4种指令(method):move (前移一格)、turnLeft(左转)、pickBeeper、putBeeper(捡起或放下Beeper)
[07:40] Karel程序的演示
[09:00] 第一个Karel程序
[10:30] 算法和程序的区别:算法是做事情的步骤,程序是符合编程语言的规则合法组织的语句。
[12:00] 算法->合法的Java程序,讲解了一下Java程序的结构
[16:00] class的继承
[18:10] Import的语法和意义。顺便说一句,美国的学生很喜欢提问题,尽管问题的命案很简单,但这些问题可以开拓思路。
[19:30] 运行第一个Karel程序
[21:30] 创建一个新的指令:turnRight (右转)
[28:10] 非常强大的对于for语句的解释
[29:50] 老师对程序的格式讲解地很详细,尽管多数编程语言对格式的要求不高,但养成良好的编程风格是非常重要的。
[30:15] 这里他讲错了,左转6次相当于向后转,左转7次才等价于右转。
[31:30] while循环
[35:20] if/else语句
[37:30] else前后的空格并不是必须的
[37:50] 语句嵌套
[39:50] 使用讲解过的语句来写个新程序
[42:20] 把程序分解成多个函数,会增强可读性。编程中很重要的一点是,程序不仅要让机器能理解,也要让其他人能读懂,这是软件工程的必备条件。
[47:30] 程序的通用性:程序要在任何环境下都能运行,不能仅局限于种特定情况。

012011
 

科普系列

  1. 内存 vs 硬盘
  2. 32位 vs 64位
  3. Byte vs bit
  4. 高清 vs 1080p
  5. ARM vs x86
  6. 多核 vs 超线程
  7. IPv4 vs IPv6
  8. HDD vs SSD

这几天关于IPv4地址耗尽的报道几乎天天有啊……这东西倒底和我们的生活有什么关系呢?

IPv4是指IP(Internet Protocol)协议第4版,IPv6就是第6版了(至于第5版是什么,有兴趣的同学可以自己查查)。IP协议是网络通信中的一个基础协议。每一个连上网(无论是局域网还是英特网)的设备,都会有一个IP地址,作用和电话号码一样。在浏览网站(如http://leonax.net)的时候,浏览器会先得到这个网站的IP地址,如182.50.148.163,向这个地址来发送请求,然后网站向你的电脑所使用的IP发回网页数据。想像一下你打电话订餐的流程,差不多。

IPv4中的地址格式由4个0到255的整数组成(形如x.x.x.x),就一共可能有256的4次方(即4294967296)种变化。尽管其中有一些特殊用途的地址,比如常见的127.0.0.1和192.168.0.1,英特网中可用的IPv4地址数量在42亿以上。听上去数字蛮吓人的,但仔细想想其实不多啦,全世界人口已经超过60亿了,每人一台设备,地址就分配不过来了……

于是IPv6就产生了,它的地址格式由8个0到65535的整数组成(形如x:x:x:x:x:x:x:x),数量是IPv4地址数量的4次方,具体多少不高兴算了,反正IPv6号称可以给地球上每一粒沙子分配一个地址。取之不尽,用之不竭啊……

既然这样,还用IPv4干啥呀,大家一起上v6不就得了。IPv6在设计的时候并没有考虑兼容性的问题,也就是说IPv4并不能平滑地迁移到IPv6,迁移过程中需要电信运营商、网站等各种机构开展大量的工作,而他们却从中得不到什么好处,于是大家就都拖着,耗到IPv4用完没办法了,才开始着手解决。

那在迁移过程中,家庭用户需要做些什么呢?简单来说:什么都不用做。个人电脑(PC)上,主流的操作系统(Windows / Mac / Linux)都已支持IPv6;而手机所用的3G协议似乎不受IPv6的影响(3G协议不熟,请高手指点)。咱们就坐等电信(或者长宽啥的)的客服上门升级IPv6吧……

*温习一下:IP协议处于OSI 7层协议中的第3层网络层,OSI 7层协议从下到上从别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。