Dead Code
今天在网上看到腾讯的一个实习生招聘题,里面提到了dead code,便上wikipedia查了下,解释如下:
在计算机编程中,dead code是指那些被执行但执行结果在其他地方没有用到的代码。dead code的执行耗费cpu时间但是结果无用。
dead code的执行结果没用也就罢了,但它还可能同时导致异常或影响某些全局状态,所以移除这些dead code可能会改变程序的输出,并且排除那些意想不到的bugs。
参考文档:
…ASP.NET MVC Json()处理大数据异常解决方法
近几天一直忙于windows下的项目,rails的学习暂时搁置了,所以也有好几天没有用fedora了,博客大致也有一周没有更新。此博客本想只记录一些Linux平台下的相关操作,但这两天碰到的问题很棘手,虽最终得以解决,但不忍就此翻篇,想将解决之法记录下来,以避免今后再次碰到此类问题又得重头再寻求解决方案,同时也分享出来,避免其他人碰到此问题时多走弯路。所以便予以记录。下面切入正题:
先对项目做个简单介绍:
…计算机启动过程
计算机启动过程的详细介绍请参考阮一峰老师的两篇博文:
- http://www.ruanyifeng.com/blog/2013/02/booting.html
- http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html
写的非常通俗易懂,真的很佩服阮老师的文笔,有时候自己写的博客自己都有点目不忍视,更何况别人呢。要达到这样的水平真的还有好长的路要走。加油吧
…Ruby语言独特点
有时候真佩服别人的博文可以写的那么长,而且很有料,读起来也非常顺畅,而自己每次却不太善于总结,可能是平时积累的片段还不够,不足以总结,亦或是自己缺少这么一个总结性的思维,导致如今为止也没有产出一篇广为阅读的文章。不过即使如此,也没有打消我持续写博客的念头,不管好坏,不管是否有读者,我将会一如既往的写下去。正如哥哥的《我》:我就是我,是颜色不一样的烟火。每个人都有他存在的价值,无论高低贵贱,无论贫穷富贵,都有其独一无二不可替代的特性。所以无论自己的博文是否能带给大家一丝感触、一点帮助,我都会坚持,因为这也是对我自己学习的一个总结,同时也想尽力贡献一份自己的力量来帮助他人,但我想更多的还是能帮助自己,以便为未来某一天突然需要回味从前的知识提供便捷。我想这便是写博客的初衷。下面进入正题吧:
…Vim常用快捷键总结
Vim的学习之路真的很长,永远有记不完的命令,永远会突然冒出一个新插件。不过我总算从Vim的荆棘中一路走过来了,现在真的是苦尽甘来,时刻体会它带给我的喜悦和惊奇。下面对我所学习所了解到的常用命令做一个基本总结:
###Normal mode:
>> indent current line
n>> indent the next n line
. repeat last command
m,n>> indent from m to n line
== autoindent current line
n== autoindent the next n line
gg=G autoindent the whole file
instance_eval vs class_eval
Ruby中类其实也是Class的实例。而且instance_eval必须由实例来调用,class_eval必须由类来调用。具体参考下面的实例:
class A
end
a = new A
a.instance_eval do
self #=>a
def test
puts "this is a singleton method of instance a"
end
end
a.test #=>this is a singleton method of instance a
b = A.new
b.test #=>NoMethodError
搭建Git服务器
从开始用Git到现在也已经有一年时间了,但一直都在本地开发,用于管理本地的代码,没有进行多人协作开发,所以也没有必要搭建一个Git服务器。
但就在昨晚,我在教研室给大家介绍Git工具时,感觉大家对这个工具貌似没有太大的热情,猜其原因,可能是因为大家对这个工具过于陌生,而我又讲的太过细节,所以他们可能听得有点烦。但是只有试过之后才能感觉其方便之处,我也希望教研室的同学都能掌握它,所以便决定在教研室搭建一个Git服务器,供大家使用,也思索着今后的项目都用git来进行管理。毕竟现在教研室只有我一人使用git,其他同学都用svn,甚至不用(其实用svn的同学不超过3个),开发项目也难以统一,而我个人在使用过git后又不想转向svn,同时也非常希望身边的同学也能去使用git这么一个优秀工具,所以只能忽悠他们转向git了。不过经昨晚一役,证明了我忽悠人的本领完全不到家,看来今后得好好练练了。前奏有点过于冗长,下面进入正题吧。
…更新Octopress
现在已记不清接触Octopress多长时间了,只依稀记得当时配置Octopress配了好久,然后依然失败,后又忙于其他的事情,所以搭建工作便搁置一旁,七月中旬时间比较充足,所以又开始再次折腾,后来终于搭建成功,所以7.18便发表了第一篇博客。后来一个月之后又开始了我的换肤工作,一切都好,唯一的缺陷是Gravatar的图像没有显示出来,所以便向theme的作者发问,后来也忘了这茬事。就这样又过了一月,直到今天,突然发现我的unread消息里面有几条关于我的message,便打开浏览,才发现作者给的回复,说图像没显示是个bug,现已修复。具体见:
https://github.com/shashankmehta/greyshade/issues/42
我便立马更新了我的Octopress。更新方法如下:
# Get the latest Octopress
git pull octopress master
# Keep gems updated
bundle install
# update the template's source
rake update_source
具体参考:
http://octopress.org/docs/updating/
参考时请务必注意:如果您的octopress主题不是octopress默认主题,请不要执行rake update_style,否则会被还原成默认主题。
本博客采用的主题为:
…VirtualBox安装ArchLinux系统
都说ArchLinux很适合折腾,趁今天有时间,就试着安装了一把,不过看ArchLinux的Beginners’s Guide,照着其步骤来,结果还是看的云里雾里,看的人头大。便直接上Youtube上找了一个视频,顿时豁然开朗。安装概览如下:
##ArchLinux Install
- 分区
- 格式化分区
- 挂载分区
- 更改安装镜像
- 安装基本系统
- 生成fstab
- Chroot到新系统
- 配置系统
- 开启网络服务
- 创建初始化ramdisk环境
- 设置root密码
- 安装配置bootloader
- 卸载分区并重启系统
- 安装图形用户界面
详细步骤如下:
###1. 分区
虚拟机挂在iso镜像后,然后启动系统,进入后默认进入root提示符,然后输入:
root#cfdisk
进行分区,一般分三个即可。最后分区结果如下:
dev/sda1 / 8G
dev/sda2 /swap 1G(在空间最后)
dev/sda3 /home 4G
每个人的分区情况都可能不同,具体依照自己的分区来决定,以下操作都是根据我的分区来进行。
…Cookies vs Sessions
Http是无状态的协议,客户端给服务器发送请求,服务端响应客户端的请求,会话结束。这样两次会话间不便没有任何关联。但有时候需要在会话间进行信息共享,如:购物车,保存用户名与密码等。为此,cookie与session便诞生了,它们的存在就是为了弥补http协议无状态的缺陷。
cookie与session最大的不同是:cookie保存在用户的浏览器中,而session则保留在服务端。正是这种不同决定了它们的不用使用场合。
##Cookie
cookie机制是通过扩展http协议来实现的。服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。其实纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器端。
cookie主要内容包括:Name,Content,Path,Domain,Expires(过期时间)等。Domain与Path一起构成cookie的作用范围。
若不设置Expires,则默认的cookie生命周期为浏览器会话期间,一旦浏览器关闭,cookie则会被清理掉,这种生命周期为浏览器会话期的cookie被成为会话cookie。会话cookie存储在内存中而不是在硬盘上。
若设置了Expires,浏览器则会把生成的cookie保存在硬盘上,即使浏览器关闭后再打开,cookie依然有效,直至超过设置的expires。
另外,session大小有限制,一旦浏览器禁用cookie,则采用cookie的购物网站便不能进行购物,所以这时候得用session了。
…