linux


Ubuntu中安装NodeJS

得益于Debian系强大的应用仓库,在Ubuntu中安装NodeJS非常简单: # npm — NodeJS Package Manager,非常重要且好用的NodeJS包管理工具,非装不可! sudo apt-get install nodejs npm 装好后,我们可以通过以下命令确定NodeJS的版本: node -v # 我的结果是:v0.10.15 什么?运行不了,提示: bash: node: command not found 这是咋回事呢?! 别急,Google一下,就有答案:原来,已经有其他软件包(Amateur Packet Radio Node Program)含有名为“node”的程序了,这样,一旦同时安装NodeJS和Amateur Packet Radio Node Program,就会出现覆盖,导致其中一个无法运行。于是大家商量了一下,决定将NodeJS的node程序改名为nodejs,彻底杜绝冲突。但是这样改又会带来兼容性问题:npm以及其他使用名称“node”来调用NodeJS的程序,就都失效了。何况,很多人都不会安装Amateur Packet Radio Node Program这个包,凭什么要做这么大改动啊?于是乎,我们又迎来了曙光: sudo apt-get install nodejs-legacy 安装这个包后,我们总算迎回了熟悉的“node”!好吧,最后告诉大家,其实nodejs-legacy这个包啥也没做,就只是建了一个软链接: ls -l /usr/bin/node # 结果是:lrwxrwxrwx 1 root root […]


NodeJS监听80端口时运行出错的解决方法

高高兴兴写了个测试程序来跑NodeJS应用,满心欢喜以为一定没有问题,在终端输入命令: node server.js 结果出错退出,一下子傻眼了: events.js:72 throw er; // Unhandled ‘error’ event ^ Error: listen EACCES at errnoException (net.js:904:11) at Server._listen2 (net.js:1023:19) at listen (net.js:1064:10) at Server.listen (net.js:1138:5) 奇了怪了,之前运行示例程序都能正常的,自己的这个程序也没改什么,怎么就跑不了了呢?! 仔细检查修改后的代码,发现因为我机器上没有其他Web Server,所以我把端口从8080改成了默认的80了,难道是这个导致的?我试着把端口改回了8080–果然就正常了! 原因是找到了,但我们不能就此止步,凡事要有点刨根问底的精神不是?^_^ 皇天不负有心人,Google一番后,总算找到原因:原来,在Linux(我认为是Unix系都会,因为我测试的机器是一台Mac OSX)系统中默认要求只有root权限的程序才能访问1024以下的端口,我用普通权限想要访问80端口,所以因为权限不够被拒绝了。解决方法也很简单,要么换个端口(如8080),要么,就用超级权限(用root账户或者sudo)跑node。 Author: Rex Shen Created: 2014-07-17 Thu 14:41 Emacs 24.3.1 (Org mode 8.2.7b) Validate


Linux下Thunderbird要安装的插件

  网络时代,总少不了跟邮件打交道,日常生活使用时多数是直接用网页版邮箱,在职场中一般要求用邮件客户端。使用Windows的朋友一般要么用Outlook,要么用Foxmail,其实,我们还有一个很不错的选择:Thunderbird。   Thunderbird是一个开源、跨平台的邮件客户端,由大名鼎鼎的Mozilla基金会维护,与Firefox是亲兄弟。众所周知,Firefox以其丰富且强大的扩展(Addon)著称,而Thunderbird和Firefox除了名份上的亲缘关系,更重要的是,这两款软件能共享许多扩展。   作为一个著名的开源邮件客户端,Thunderbird目前的功能已经非常完善了,但是难免有些功能还不完善,或者默认不预装。自从有了Addons,一切便有了可能。   由于我自己平常用到的功能也比较简单,所以在此仅简单介绍下我自己用的几个扩展: FireTray(Linux Only):可以在任务栏中显示Thunderbird邮箱状态(有多少未读邮件) Thunderbird Conversations:将邮件组织成类似于gmail的按照主题分组方式,以方便阅读和联系上下文 Lightning:在Thunderbird中集成日历功能 Provider for Google Calendar:提供将Google的日历数据导入到Lightning的功能 Google Task Sync:提供在Thunderbird(Lightning)上显示和管理Google帐号上的Task的功能  


(K)ubuntu上将分区格式化成NTFS格式

  新买了硬盘,装系统时,为Windows预留了几个分区,由于没有其他选择,因此将分区格式化成了fat32格式。装完系统后,总是很纠结,想把这些分区格式化成NTFS格式。   google了一下,从这个网址(http://www.ehow.com/how_7235886_format-ntfs-partition-linux.html)上找到了方法:   安装ntfsprogs(Kubuntu上没有这个包,但是其自带的ntfs-3g中已经包含这个工具了,所以不需要安装)   umount要格式化的分区(如:sudo umount /dev/sda1)   (可选步骤)sudo fdisk /dev/sda1,然后输入命令“t”(改变分区的系统id),选择分区号(如果不想变分区号,则输入原来的分区号即可,这里是sda1,所以输入1),然后输入十六进制的分区格式码,NTFS的话应该用87;还可以用b命令给分区添加盘符;之后输入命令“w”保存退出。   重启系统,以便使得修改生效。   调用mkntfs命令进行格式化(如:sudo mkntfs /dev/sda1)。整个格式化过程会几乎占满CPU(对我的Dell 1420n而言)   重启系统   是的,就是这么简单,哈!   注意:网上大部分帖子都建议在Windows下完成格式化操作,因为NTFS是私有格式,Linux下的工具并不能保证其能完美工作。


Kubuntu中thunderbird最小化到任务栏

作为邮件客户端,如果没有办法显示在任务栏中,实在是说不过去。遗憾的是thunderbird默认真不带这个功能(因为Linux的桌面系统太混乱了?)。。。当然,解决也十分简单,只要安装Firetray这个插件就可以了,哈!以前在gnome shell里也配置过,就是比较麻烦些,要把任务栏给整出来,具体步骤忘了,有兴趣的兄弟自己再查查资料吧,嘿嘿!这个插件有个美中不足的地方,就是在某种操作下,当窗口最小化到任务栏后,无论再怎么点击任务栏中的图标,窗口都恢复不了了,很遗憾,没找到解决方法,只能在任务栏图标上右键-》退出,然后重新启动thunderbird了。做个标记,后面有空研究下代码,看看能不能解决这个问题。。。


Ubuntu使用ttyS*(如mincom)时不需root权限的方法

  很久很久以前,我们在Ubuntu下使用软件(如minicom、screen等)访问串口时,是不需要任何超级权限的(使用minicom时,只有使用-s选项时需要root权限);不知道从哪个版本(12.04?)开始,我们发现原来那招就不好使了;于是很多人开始习惯无论什么时候使用minicom,都使用sudo来运行,更有甚者,直接就用root帐号来登录系统了。   其实只要很简单的一步,就能够实现非root权限就能访问/dev/ttyS*设备了。   首先我们来看看为什么普通账户会没有权限访问ttyS设备了: ls -l /dev/ttyS0 crw-rw—- 1 root dialout 4, 64 8月 30 21:53 /dev/ttyS0   从上面的输出,我们很容易看出来,ttyS设备的用户主是root,而所属的组是dialout,并且owner和group都是有相同的rw权限的,但others是没有任何权限的。   使用groups命令,我们就明了了:我们在安装Ubuntu时,安装时使用的账户并不会默认加入dialout组,因此该用户就没有权限可以访问ttyS设备了。   解决方法也非常简单: sudo usermod -a -G dialout user_name   这样,重启系统后,用户“user_name”就会加入dialout组了,之后我们就能自由自在地访问ttyS设备了,enjoy yourself!


Ubuntu开机自动挂载分区

虽然我基本上都是使用Linux的,但是仍然有些时候需要切换到Windows(双系统),如果所有的分区都使用ext4等Linux分区格式,则在Windows下访问十分不方便。 因此,我一般会将一些两个系统都会用到的资料存放在NTFS分区中,这样无论在什么系统下,都能够挂载并访问。 如果在安装的时候没有指定挂载点,则安装完成后,Ubuntu启动时并不会自动挂载;你可以每次需要用时再手动挂载,但时间久了,就会觉得很不方便。怎么来解决呢? 我们可以利用/etc/fstab来解决这个问题。通过在终端运行命令“man fstab”,我们可以了解关于fstab的一些细节。 以下是我的fstab文件的内容(阉割版) # /etc/fstab: static file system information. # # Use ‘blkid’ to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. […]


使screen支持滚动

在Linux中,常用的串口工具有minicom和screen,minicom可能使用得比较多,但是我比较喜欢screen,因为它的输出是彩色的,更舒服、更能突出重点。 使用screen来打开串口也非常简单,如:screen /dev/ttyS0 115200 默认情况下,screen使用自己的缓冲区,使得无法方便地使用鼠标的滚轮或者终端(如konsole)的滚动条来拖动查看之前的输出信息。实际上,我们完全可以简单地通过配置文件(~/.screenrc)来实现这个功能: termcapinfo xterm* ti@:te@ termcapinfo xterm|xterms|xs|rxvt ‘hs:ts=\E]2;:fs=07:ds=\E]2;screen07’ 其实,只需要第一句就够了。第二句干嘛用的?其实我也不知道。。。 参考资料:http://unix.stackexchange.com/questions/43229/is-there-a-way-to-make-screen-scroll-like-a-normal-terminal http://www.saltycrane.com/blog/2008/01/how-to-scroll-in-gnu-screen/


Kubuntu上截屏的小技巧

Kubuntu上自带了截屏软件ksnapshot,只需要按Print Screen就会自动调起,实际上挺方便的;但是,Print Screen的默认行为是截下整个屏幕,这往往不是我们需要的。 实际上,ksnapshot不仅仅能截全屏,还有其他几种模式:   这几种模式分别为:   Full Screen:截取全屏   Window Under Cursor:截取光标下的整个窗口   Rectangular Region:截取方形区域   Freehand Region:截取自由形状的区域   Section of Window:采用这种模式,可以智能选中窗口或者窗口的一个区域 这几个模式本身很容易理解,大家可能都很清楚怎么用了,我就不多做解释了。下面详细介绍下“Snapshot delay”。从字面意义解释,这个选项翻译为截屏延时,但从字面意义上看,可能猜不出它的作用,那么,究竟什么时候需要用到这个呢? 抛砖引玉,我先提一个问题:如果我们需要截取ksnapshot本身,怎么做呢? 。。。 对了,可以利用延时功能,具体这样操作:   首先调出ksnapshot   “Capture mode”项选择“Window Under Cursor”或者其它你习惯的截屏方式   然后选择一个合适的延时时间,如4秒,填入“Snapshot delay”一栏   左击“Take a new Snapshot”按钮,这时ksnapshot会消失   这时再通过Print Screen按键或其他方式调出一个新的ksnapshot窗口   等到延时时间到后,就会自动截下新ksnapshot的窗口(选择“Window Under Cursor”的话),或是光标变成选择光标(选择如“Section of Window”模式的话) 利用这个技巧,可以截取一些会被其他窗口抢占的窗口(如任务栏中点出的网络信息面板),非常方便。 有点郁闷的是,ksnapshot不支持截取滚动条的全部内容,初步搜索了一下,Linux下貌似没有一个截屏软件是支持这个功能的(如果仅是截取网页,则有如Google的Screen Capture工具)。


Kubuntu上连接PPTP

生活在天朝,如果没备几招翻墙的本领,都不敢说自己还活着。。。 前两天从朋友那抢了个VPN帐号,使用的是PPTP的,在google上找了一会,发现网上大都是讲VPN服务搭建的,就算是介绍客户端的,也大都是命令行的客户端。可能是Kubuntu用的人不多,也可能是太简单了,大家都不屑把Kubuntu自带的功能特意拿出来说。 既然搜索引擎能搜到的结果很少,那么就由我来添个瓦吧。 其实在Kubuntu上,装好系统默认就有VPN连接的支持了。左键单击任务栏中的网络图标,在弹出的面板中左击“Manage Connections”: 在弹出的配置窗口中,选择“VPN”标签,左击面板中的“Add”: 会弹出一个选择框,选择VPN的连接方式(如PPTP等),选择后便会再弹出一个具体的设置框。我用的是PPTP,所以只需要填写“Connection Name”(只是方便自己标识,可以不填),“Gateway”(你使用的服务器IP或者域名),“Login”(VPN帐号)以及“Password”(VPN密码)即可,如果想要自动连接,那么就把“Connect automatically”的选择框选上吧;其他连接方式,请根据实际情况填写,应该也都挺简单的。 配置完后,点击“OK”保存,就完成配置过程啦,非常简单吧!然后再点开任务栏中的网络图标,就能在右上角的“Connections”列表中,看到你刚刚建好的连接了(名称为你填写的“Connection Name”),左击这个连接,就会连接这个网络了。 OK,现在尽情享受吧! 比较郁闷的是,Kubuntu下默认不支持L2TP的,而我恰恰有一个L2TP的VPN帐号。。。下回再找时间看怎么弄吧,哈!