Ubuntu下使用QQ2012

昨天和朋友聊天他给我介绍了一个wine项目,关于QQ2012,好像是深度做的,今天下载下来装上试了一下,蛮好用的,与大家分享一下,有截图为证!

首先要安装wine;

然后下载定制的QQ2012的安装包即可;

附下载地址:http://mirrors.tuna.tsinghua.edu.cn/deepin/pool/main/d/deepinwine-qq2012/

下载后直接打开安装包,安装即可!

截图:

 

内核源码阅读vim+cscope+ctags+taglist

自己学linux也快两年了,赵桥学长给我们教怎么样学习内核,很是对不起他,因为自己选择了自己喜欢的另一个方向,苹苹选择了内核方向,她们学内核的又从头开始了,苹苹让我教她搭建看源代码的环境,自己这么长时间了也忘的差不多了,在自己的博客中找了一下只有一个cscope的笔记,今天重新整理一下笔记。

“工欲善其事,必先利其器”。在阅读内核源码时,配置好自己的系统是很重要的一件事。

在linux下我们常用的就是vim+cscope+ctags+taglist组合,下来一一介绍。

1. vim

这个只要有linux系统就OK了。但是ubuntu系统安装后默认的是vi,所以还得安装一下vim:

顺便可以配置一下vim这样的话,代码会高亮的显示出来,方便阅读源码。

vim配置详见:http://blog.db89.org/my-vim-configuration-file/

2. cscope

cscope是一个源码阅读工具,现在大多数linux系统源里都有这个软件,可以直接用yum或者apt来安装,或者下载源码来进行安装。

使用apt系统的使用一下命令:

使用yum的系统使用以下命令:

用源码安装使用参看一下命令:

附:源码编译教程:http://blog.db89.org/under-linux-compile-the-basic-steps-of-the-software-source-code/

附:cscope源码下载地址:http://cscope.sourceforge.net/

附:cscope常用命令:http://blog.db89.org/the-cscope-commonly-command/

安装好了就是配置,在kernel.org下载需要的源码,解压后,在该目录下执行:

其中:

3. ctags

ctags是一个生成链接的一款软件,这个的安装和cscope是一样的过程。

同样的配置,在源码目录下执行:

4. taglist

taglist是一款vim的插件,它能够将一个文件中的变量,宏,函数单独的提出来,再加上分屏功能,作用就类似于vc下那个编辑器。

附:taglist下载地址:http://www.vim.org/scripts/script.php?script_id=273

taglist插件有两个:taglist.vim和taglist.txt,

将taglist.vim置于/usr/share/vim/vim72/plugin/taglist.vim下,

将taglist.txt置于/usr/share/vim/vim72/doc/taglist.vim下。

这样taglist就安装OK了。

taglist窗口快捷键:

最后在vim配置文件vimrc中添加:

到此,该工具链就安装完毕了,下面是简单的使用。

在源码目录下输入vim,然后在命令模式下:

在后面跟需要查找的就OK了,这套工具开始用着可能会有点不习惯,但是,一段时间后,会让你感到非常爽的。

如果有什么问题,欢迎大家一起讨论!

linux内核五大模块

学习Linux这么长时间了竟然不知道linux内核是由那几部分组成的,今天学习了!

Linux内核的五大模块 :

  1. 进程调度模块
  2. 内存管理模块
  3. 文件系统模块
  4. 进程间通信模块
  5. 网络接口模块.

进程调度模块

用来负责控制进程对CPU 资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU, 同时保证内核能及时地执行硬件操作。

内存管理模块

用于确保所有进程能够安全地共享机器主内存区, 同时, 内存管理模块还支持虚拟内存管理方式, 使得Linux 支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统, 对暂时不用的内存数据块交换到外部存储设备上去, 当需要时再交换回来。

文件系统模块

用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系统兼容的多种文件系统格式。

进程间通信模块

用于支持多种进程间的信息交换方式

网络接口模块

提供对多种网络通信标准的访问并支持许多网络硬件。

有感于2012五月的最后一天

时间过得真快,转眼间这学期又快结束了,我们的四级考试马上就要来临了!第一次将要参加四级,但是什么也还没准备!

刚刚和一个朋友在QQ上聊了一下,他想进“深度”,参与到linux的研发中来,我觉得挺好的,因为虽然现在许多人在学linux,但是真正搞开源的人不多,挺看好他的。

也就在不久之前,我也选择了自己的发展方向,一个原因是:我喜欢这个东西,另一个原因是:这个东西会在未来的几年内很火。虽然选择了这条路,但是这条路并不是自己想想的这么容易,慢慢来吧,毕竟还有一年的时间!

关于四级这个东西,我想应该不会有什么问题,和苹苹今天才去买了一套卷子,冲刺一下,毕竟剩两周的时间了!

昨天晚上睡得很晚,大概三点多了,因为都在打游戏,自己睡不着,睡得时候我又多说了两句,好吧不说了!

今天交了一份学习总结,突然间发现,自己学到的知识并不是很多,还得下深功夫,让自己在这一年中过得有意义些!

没考研的学长们实习工作都找了,和往年一样,基本都是腾讯,百度,还有个360,压力有点大呀。还有那个祝凯才大二就拿到360的offer了,你说这能不让人各种羡慕吗?

五月份就这样过去了,六月份接踵而来,妹妹就要参加高考了,胜负难定,很是替她的未来担忧,还有就是自己的四级,这几套卷子做完,应该问题也不大了,期末考试也要来了,剩下的几周里要好好的复习文化课了,争取这学期再拿个奖学金。

最后,希望自己努力学习,好好做人,加油!

PHP不实用大型系统的九大原因

PHP确实十分容易编写。但是PHP也有一些十分严重的缺陷。下面我会给出我的理由,为什么PHP不适合于比小型业余网站更大的网站。

1、对递归的不良支持

递归是一种函数调用自身的机制。这是一种强大的特性可以把某些复杂的东西变得很简单。有一个使用递归的例子是快速排序(quicksort)。不幸的是,PHP并不擅长递归。Zeev,一个PHP开发人员,说道:“PHP 4.0(Zend)对密集数据使用了栈方式,而不是使用堆方式。也就是说它能容忍的递归函数的数量限制和其他语言比起来明显少。”见bug 1901。这是一个很不好的借口。每一个编程语言都应该提供良好的递归支持。

2、许多PHP模块都不是线程安全的

在几年前,Apache发布了Web服务器的2.0版。这个版本支持多线程模式,在这个模式下,软件一个一部分可以同时运行多个。PHP的发明者说PHP的核心是线程安全的,但是非核心模块不一定是。但是十次有九次,你想要在PHP脚本中使用这种模块,但这又使你的脚本不能合适Apache的多线程模式。这也是为什么PHP小组不推荐在Apache 2 的多线程模式下运行PHP。不良的多线程模式支持使PHP常被认为是Apache 2依然不流行的原因之一。

3、PHP 由于商业原因而不健全

通过使用缓存,PHP的性能可以陡增500%[见基准测试]。那么为什么缓存没有被构建在PHP中呢?因为Zend——PHP的制造者,它在销售自己的Zend Accelerator,所以当然,他们不想抛弃自己的商业产品这块肥肉。

但是有另一个可选择的: APC. (Zend后来推出Zend Optimizer,免费的加速器——译者)

4、没有命名空间

设想某个人制作了一个PHP模块用来阅读文件。模块中一个函数叫做read。然后另一个人的模块可以读取网页的,同样包含一个函数read。然后我们就无法同时使用这两个模块了,因为PHP不知道你要用哪个函数。但是有一个很简单的解决方法,那就是命名空间。曾经有人建议PHP5加入这个特性,但不幸的是他没有这么做。现在,没有命名空间,每个函数都必须加上模块名作为前缀,来避免名称冲突。这导致了函数名恐怖得长,例如xsl_xsltprocessor_transform_to_XML让代码难于书写和理解。

5、不标准的日期格式字符

很多程序员对 日期格式字符 都很熟悉,它是从UNIX和C语言中来的。其他一些编程语言采用了这个标准,但是很奇怪的,PHP有它自己的一套完全不兼容的日期格式字符。在C中,“%j”表示一年中的当天,在PHP中他表示一个月中的当天。然而使事情更混乱的是:Smarty (一个很流行的PHP模版引擎)的 strftime 函数和 date_format 函数,却使用了C/UNIX的格式化字符。

6、混乱的许可证

你也许认为PHP是免费的,所有的在手册中提到的PHP模块也是免费的。错了!例如,如果你想在PHP中生成PDF文件,你会在手册中发现两个模块:PDF 和 ClibPDF。但是这两个都是有商业许可证的。所以,你所使用的每个模块,你都要确保你同意他的许可证。

7、不一致的函数命名规则

有些函数名称是有多个单词组成的。一般有三种单词组合的习惯:

直接拼接:getnumberoffiles

用下划线分开:get_number_of_files

骆驼法则:getNumberOfFiles

大部分语言选择其中一中。但是PHP都用到了。

例如,你想要把一些特殊字符转换成HTML实体,你会使用函数htmlentities (直接拼接单词)。如果你要使用相反的功能,你要用到它的小弟html_entity_decode。由于某些特殊的原因,这个函数名是由下划线分隔单词。怎么能这样呢?你知道有一个函数叫strpad。或者他是str_pad?每次你都要查看一下到底这个符号是什么或者直接等他出现一个错误。函数是不分大小写的,所以对于PHP来说rawurldecode 和RawUrlDecode之间没有什么区别。这也很糟糕,因为两个都使用到了同时他们看上去还不一样,混淆了阅读者。

8、魔法引用的地狱

魔法引用(Magic quote)可以保护PHP脚本免受SQL注入攻击。这很好。但是出于某些原因,你可以在php.ini中关闭这个配置。所以你如果要写出一个有弹性的脚本,你总要检查魔法引用是开启还是关闭。这样一个“特性”应该让编程更简单,而事实上变得更复杂了。

9、缺少标准框架

一个成长中的网站没有一个整体框架,最终会变成维护的噩梦。一个框架可以让很多工作变得简单。现在最流行的框架模型时MVC-模型,在其中表现层、业务逻辑和数据库访问都分离开了。

很多PHP网站不使用MVC-模型。他们甚至没有一个框架。甚至现在有一些PHP框架同时你都可以自己写一个,关于PHP的文章和手册没有提高框架的一个字。同时JSP-开发人员使用像Struts的框架、ASP开发人员使用.net,看起来好像这些概念都广泛被PHP开发人员所了解。这就说明了PHP实际上到底是多专业。

总结

什么问题?

对于非常小的项目,它可以是一个十分符合人意的编程语言。但是对于较大的和更为复杂的项目,PHP就显出他的薄弱了。当你不断地摸索之后,你会发现我提到的某些问题的解决方案。所以,当解决方案已知之后,为什么不能修正他呢?另外,为什么这些修补不在手册中提到呢? 一个开源的语言十分流行是一件好事。但不幸得是,它不是一个伟大的语言。我希望所有的问题能有一天得到解决(也许在PHP6),然后,我们就将拥有一个开源语言,他既开源,又好用。

到现在,当你要启动一个多于5个脚本页面的项目的时候,你最好考虑C#/ASP.NET或者 Java/JSP或者也许Python同样是一个更好的选择。

 

Linux Mint 13正式版(附下载地址)

Linux Mint 13 正式版重要发布了,该版本包含 MATE 1.2 桌面系统以及 Cinnamon 1.4 ,这两个桌面跟 Linux Mint 集成非常紧密,为 Gnome 2 的用户提供更好的选择。Linux Mint 13 是一个 LTS 版本。

 

附各版本下载地址:

http://ftp.heanet.ie/pub/linuxmint.com/stable/13/

Linux Mint是一份基于Ubuntu的发行,其目标是提供一份更完整意义上的即刻可用的体验,而这通过包含浏览器插件、多媒体编码解码器、DVD播放支持、 Java及其他组件来实现。它也增加了一套定制桌面及各种菜单,一些独特的配置工具,以及一份基于web的软件包安装界面。Linux Mint兼容Ubuntu软件仓库。

可以毫不夸张地说 Linux Mint 在某些方面的用户体验比 Ubuntu 还要优秀。

php获取当前的url

今天学了一个新东东分享一下,用php获取当前的url.

如何创建phpinfo查看php信息?

记得以前好像用VPS是见过phpinfo.php这个文件,刚好这几天看php碰到这个东东,书上给了一段代码,我没有看懂,在谷歌上查了一下很简单!

创建一个info.php文件在其中插入以下这段代码:

保存即可,然后看看通过网页打开这个info.php看看效果!

效果截图如下:

Linux下Virtualbox挂载U盘和网卡启动的解决方法

今天用VirtualBox时遇到这个问题,不能挂载U盘,不能用虚拟网卡启动,网上的教程很多都用不了,要不很麻烦,其实很简单,在VirtualBox的官网下载一个额外的包就可以解决这些问题,这个包的名字叫做VirtualBox 4.1.16 Oracle VM VirtualBox Extension Pack ,当然版本不同就要选择不同的版本,我的ubutnu12.04上的版本是;4.1.12所以要下载相应的版本额外包,要不然你懂的!

附下载链接,自己查找所对应的版本号:

https://www.virtualbox.org/wiki/Downloads

 

KVM下桥接的设置(ubuntu)

前天把KVM装上了,但是发现其网络链接方式为NAT模式,很是不爽,因为本人经常要打站,在几个不同的虚拟机之间要进行测试,所以今天研究了一下其桥接的模式。

KVM的安装详见:

http://blog.db89.org/kvm-virtual-machine/

环境:Ubuntu12.04+KVM

首先:要停止网络服务

其次:修改网络配置文件

如果想手动设置ip等请将以下代码复制到编辑的文件中,注意:IP等设置自己按照需要修改。

如果想自动从DHCP获取,请将一下代码复制到编辑的文件中。

最后:重新启动网络服务便可

网卡的配置完成了,还要对虚拟机进行一下设置.

打开虚拟机控制器:

将虚拟机的网络属性更改为:br0

有图为例:

通过以上步骤的设置KVM的桥接问题解决了,但是还是有问题的, 无线网卡桥接是不成功的,默认的是有线网卡!

使用过程中如果有问题欢迎交流!