Skip to content Skip to main navigation Skip to footer

Linux

Linux:如何在Ubuntu中屏蔽一个网站

Linux:如何在Ubuntu中屏蔽一个网站
Linux:如何在Ubuntu中屏蔽一个网站

亲爱的ubuntu极客们,

在本教程中我将教你如何通过编辑/etc/hosts文件来屏蔽在Ubuntu Linux上不受欢迎的网站,这是用来处理DNS和Linux网络的系统文件。

我很喜欢这种方法,因为我不需要依靠第三方应用程序,这是非常容易使用的。您需要做的就是在/etc/hosts文件文件中做一个简单的变化。

请确保您有使用此方法时在机器上处于root用户访问状态,因为/etc/hosts文件文件由root用户拥有的,所以它不能被不被普通用户编辑。

编辑 /etc/hosts 文件您需要什么?root权限和一个文本编辑器。

在本教程中我将用我喜欢的文本编辑器,vim。好了,打开一个新的终端(CTRL+ALT+T),然后运行下面的命令来打开/etc/hosts文件进行编辑。

vim /etc/hosts

添加下面这行

127.0.0.1   domain.com

更换domain.com为你要屏蔽的网站,你完成了编辑处理后,保存该文件并退出。

现在是时候来测试该方法是否成功了。尝试访问你屏蔽的网站。

我的表弟是沉迷于Facebook的社交网络,每次他发现我的笔记本电脑的时候,他就打开它,并去facebook.com陪陪他的朋友。

我应该怎么做呢?

我编辑/etc/hosts文件,这样他想访问的网站就像已关闭了一样。

您也可以使用这个方法来保护孩子免受互联网成人内容的危害,如色情和恐怖电影。


via: http://www.unixmen.com/block-website-ubuntu/

译者:乌龙茶 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2786-1.html

Linux:Linux 上的 MAC 地址欺骗

网卡生产商在每一张网卡(NIC)在出厂时都会在上面刻上一个48位的全球唯一标识符(GUID,例如08:4f:b5:05:56:a0),这串 GUID 就是网卡的 MAC 地址,用于确定一张网卡的身份。MAC 地址的高24位叫 OUI(Organizationally Unique Identifier 组织唯一标示符),是为网卡设置 MAC 地址的组织的标识符,这样一来,不同组织设置的 MAC 地址就不会冲突了。(译注:实际生产中,并不是每个网络设备都有不同的MAC地址,有时候地址空间不足,生产商会给发往不同地区国家的产品中用相同的地址空间。)

虽然 MAC 地址由厂商指定,但用户可以改变它,这就是传说中的“MAC 地址欺骗”。本文将向大家展示如何在 Linux 上玩 MAC 地址欺骗

为什么要玩 MAC 地址欺骗?

想要理由?这里就给几个比较有技术含量的理由。 一些网络供应商会通过绑定你家路由器上的 MAC 地址来验证你的身份,这个时候如果你的路由器坏了,你怎么办?你可以暂时把你的电脑的 MAC 地址改成你家路由器的 MAC 地址,让你的 ISP 重新将你连入外网。(译注:有这种事情么?)

很多 DHCP 服务器会依赖 MAC 地址来分配 IP 地址。如果你想换一个分配给你的 IP 地址,你可以改改你的 MAC 地址。这样一来,你不必等着 DHCP 服务器给你重新分一个 IP 地址,而是马上就能得到一个新的。

除了技术原因外,这里也有一些比较正当的理由来说明你为什么需要改变你的 MAC 地址:为了隐私、为了安全,你要把你真正的 MAC 地址隐藏起来。不像处在 ISO 模型第三层的 IP 地址会经常变来变去,你的 MAC 地址可不会改变。在你说我多疑之前,请确定你知道你的隐私到底是什么东西。有一个入侵手段叫 piggybacking,黑客会在公共 WiFi 网络下伪装成你的 MAC 地址,并且在你不在场的时候伪装成你的身份进行黑客活动。

怎么临时性地改变 MAC 地址?

你可以在 Linux 运行的时候改变 MAC 地址。需要注意的是当 MAC 地址转换的那一会时间,你的网络会掉线。当电脑重启时 MAC 地址又会变回原来的。下面介绍几种方法来改变你的 MAC 地址。

方法一:iproute2

$ sudo ip link set dev eth0 down
$ sudo ip link set dev eth0 address 00:00:00:00:00:01
$ sudo ip link set dev eth0 up

方法二:macchanger

macchanger 这个命令可以让你把 MAC 地址改成不同生产厂商的序列号。

在 Debian,Ubuntu 或 Linux Mint 下安装 macchanger:

$ sudo apt-get install macchanger

在 Fedora 下安装 macchanger:

$ sudo yum install macchanger

在 CentOS 或 RHEL 下安装 macchanger:

$ wget http://ftp.club.cc.cmu.edu/pub/gnu/macchanger/macchanger-1.6.0.tar.gz
$ tar xvfvz macchanger-1.6.0.tar.gz
$ cd macchanger-1.6.0
$ ./configure
$ make
$ sudo make install

下面给出一些 macchanger 的高级使用例子。使用 macchanger 你不必再手动禁用、启用你的网卡。

仅仅改变 MAC 地址:

$ sudo macchanger --mac=00:00:00:00:00:01 eth0

在保证 OUI 一致的情况下为 MAC 设置一个随机地址:

$ sudo macchanger -e eth0

为 MAC 设置一个完全随机的地址:

$ sudo macchanger -r eth0

获取所有网卡的 MAC 地址,然后只列出指定的厂商(比如 Juniper):

$ macchanger -l | grep -i juniper
Linux:Linux 上的 MAC 地址欺骗
Linux:Linux 上的 MAC 地址欺骗

显示一块网卡原来的 MAC 地址和伪装的 MAC 地址:

$ macchanger -s eth0Current MAC: 56:95:ac:ee:6e:77 (unknown) Permanent MAC: 00:0c:29:97:68:02 (Vmware, Inc.)

如何永久性地改变 MAC 地址?

如果你想在系统重启后还保持伪装 MAC 地址,你需要编辑配置文件。比如你想改变 eth0 的 MAC 地址,按以下方法搞起:

在 Fedora,CentOS 或 RHEL 下:

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
MACADDR=00:00:00:00:00:0

或者你可以建一个开机启动的脚本放在 /etc/NetworkManager/dispatcher.d 目录下,前提是你使用 Network Manager 管理你的网络。这里假设你已经装了 macchanger,脚本内容如下:

$ sudo vi /etc/NetworkManager/dispatcher.d/000-changemac
#!/bin/bash
case "$2" in
    up)
        macchanger --mac=00:00:00:00:00:01 "$1"
        ;;
esac
$ sudo chmod 755 /etc/NetworkManager/dispatcher.d/000-changemac

在 Debian,Ubuntu 或 Linux Mint 下:

新建一个开机启动脚本,放在 /etc/network/if-up.d/ 目录下:

$ sudo vi /etc/network/if-up.d/changemac
#!/bin/sh
if [ "$IFACE" = eth0 ]; then
  ip link set dev "$IFACE" address 00:00:00:00:00:01
fi
$ sudo chmod 755 /etc/network/if-up.d/changemac

via: http://xmodulo.com/2014/02/spoof-mac-address-network-interface-linux.html

译者:bazz2 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2793-1.html

Linux:如何在 Ubuntu server 中设置 RainLoop Webmail

Linux:如何在 Ubuntu server 中设置 RainLoop Webmail
Linux:如何在 Ubuntu server 中设置 RainLoop Webmail

Webmail无疑是任何邮件服务器必不可少的一部分。虽然本地邮件客户端通常比Webmail的功能更多,但通过电子邮件客户端从外部可信的网络访问IMAP或SMTP有时会很棘手。再者,当你需要在一个特定的工作站、笔记本电脑或者移动设备去使用一个电子邮件客户端时,你可以在任何地方使用Webmail服务,只要你接入互联网。

本教程的重点是在一个运行 Apache 的 Ubuntu 服务器上安装配置RainLoop Webmail。RainLoop 是基于 PHP 的Webmail,并且有以下功能。

  • 支持apache,nginx和其它网页服务器。
  • 标准接口补充了一个主题库可供选择。
  • 个人和非盈利项目可免费使用。

在写这篇文章时,RainLoop 还不支持邮件过滤和不在公司时的自动回复。

在 Ubuntu 服务器上安装 RainLoop

首先,在服务器上设置必备的软件包。

# apt-get install wget unzip apache2 php5 php5-mysql libmysqlclient15-dev mysql-server poppassd

接下来,下载和安装 RainLoop。

# mkdir /var/www/webmail
# cd /var/www/webmail
# wget http://repository.Rainloop.net/v1/Rainloop-1.6.3.706-e3c14e17bc4370a1561bcc68d1d494fd.zip
# unzip Rainloop-1.6.3.706-e3c14e17bc4370a1561bcc68d1d494fd.zip
# rm Rainloop-*.zip

然后设置必要的权限。

# cd /var/www/webmail
# find . -type d -exec chmod 755 {} ;
# find . -type f -exec chmod 644 {} ;
# chown –R www-data:www-data /var/www/webmail

我们马上就可以使用 RainLoop 了。最后,通过管理面板进行调整,接下来会有详细描述。

通过管理面板首次配置

很多配置参数通过一款界面友好的管理面板就能调整。使用以下凭证进入管理面板。

  1. URL: http://IP/webmail/?admin
  2. user: admin
  3. Pass: 12345

当然,建议尽快修改默认密码。我们将使用管理面板去调整一下设置。

增加邮件域

在 管理面板> 域> 增加域 页面设置有效的域。建议服务器 IP 是本地服务器,如 127.0.0.1。基于服务器配置,RainLoop 可以配置使用 IMAP/IMAPS 或 SMTP/SMTPS。并且,确认‘使用短登录表单’复选框已勾选。

Linux:如何在 Ubuntu server 中设置 RainLoop Webmail
Linux:如何在 Ubuntu server 中设置 RainLoop Webmail

使用‘测试连接’按钮验证设置。

启用联系人

联系人功能需要数据库支持。我们将使用 MySQL 数据库启用联系人。RainLoop 可以手动创建所需的数据库,如下。

# mysql -u root -p
mysqlcreate database rainloop;
mysqlexit;

现在这个功能可以通过管理面板>联系人页面启用。

Linux:如何在 Ubuntu server 中设置 RainLoop Webmail
Linux:如何在 Ubuntu server 中设置 RainLoop Webmail

再来一次,使用‘测试’按钮检查设置。

启动密码更改插件

在多数 linux 的邮件账户的邮件服务器是用自己的 UID 和 GID 操作系统的实际用户。因此,在过去更改这些账户的密码是很棘手的。幸好,今天有工具可以完成这个工作。这个工具是 poppassd。

第一步是在服务器上安装 poppassd,可以用 apt-get 来完成。

# apt-get install poppassd

接下来,去允许 RainLoop 使用 poppassd,从 管理面板> 软件包 页面安装 RainLoop 插件 poppassd。

Linux:如何在 Ubuntu server 中设置 RainLoop Webmail
Linux:如何在 Ubuntu server 中设置 RainLoop Webmail

最后,poppassd 插件可以从 管理面板> 插件页面启用。

Linux:如何在 Ubuntu server 中设置 RainLoop Webmail
Linux:如何在 Ubuntu server 中设置 RainLoop Webmail

现在所有参数已设置,用户可以从他们提供的凭证登录,如截图所示。

  • URL: http://IP/webmail
  • user: user@domain
  • pass: password
Linux:如何在 Ubuntu server 中设置 RainLoop Webmail
Linux:如何在 Ubuntu server 中设置 RainLoop Webmail

希望这篇文章能帮助到你。


via: http://xmodulo.com/2014/02/rainloop-webmail-ubuntu-server.html

译者:Vito 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2794-1.html

Linux:只要牛B ,我们可以把linux搞成Win8的样子

Linux:只要牛B ,我们可以把linux搞成Win8的样子
Linux:只要牛B ,我们可以把linux搞成Win8的样子

现在我居住的地方正值炎夏,但是相比较我正在写的文章将会引来的暴风雨,还是温和了不少:是的!我正在写关于Windows GTK主题的文章。

Linux:只要牛B ,我们可以把linux搞成Win8的样子
Linux:只要牛B ,我们可以把linux搞成Win8的样子

好吧,认错时间:我,个人并没有坐在桌前想着:“我的Ubuntu桌面真的需要…需要看起来像另一个操作系统一样!”。当我确认模仿另一个操作系统的外观的行为很不对我的胃口时,但世界上有那么多的用户,没准有些用户——可能也包括你——会对这有兴趣呢!

这件事本身也并没有任何问题。虽然这会引来很多狂热爱好者或者喷子,但是这提供的种灵活性也可以更好地为改进者,自定义者和主题制作者服务,因此我说:“何乐而不为呢?”

Winodws 8 的现代UI

“Windows XP的卡通蓝边界和过度透明的Aero Glass主题早就过时了”

Windows作为世界上最被广泛运用的操作系统(吁~ 一片嘘声),那么GTK的高山与Metacity主题再邀请下模仿Windows的外观一点也不让人惊奇。

 

但是Windows XP年长的卡通蓝边界以及过度透明的Aero Glass已经过时,当前的热门话题应该属于五彩缤纷的现代UI。

Windows 8引入了一种平整,实心而且转折角度明显的主题特色,这位微软桌面操作系统带来了新鲜的感觉。按照在微软其他产品中的统一的设计脉络,比如Windows Phone 8以及Xbox One为用户提供了不少的相似点。

Windows 8 GTK主题与其他主题相比,更体现了它的设计感觉。我承认我并没有常用Windows 8从而可以对其设计方方面面十分了解,但是这个主题已经包含了它大多数的表面设计,如果通过这个评分的话,这个主题可以算成功的了。

在这同时,扁平化主题并不由微软专属,类似Iris Light, which we shared recently等主题都在Linux中十分流行。

下载Linux上的Windows 8主题

从GNOME-Look上可以获取文件,将他们放在’/usr/share/theme’文件夹,然后用类似Unity Tweak的应用启用配置。


via: http://www.omgubuntu.co.uk/2014/02/windows-8-metro-gtk-theme

译者:ThomazL 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2795-1.html

Linux:厌倦了编程书?来试试这3种提高编程技能的有趣方法吧

fun1如果你曾经从书上学习编写代码,你就知道那有多乏味。为什么不试试一些激动人心的方法来使学习更有乐趣呢?

下面介绍的这些网站每个都有自己独特的风格,但是它们都加入了游戏元素。这些稀奇古怪而有趣的游戏能够使你找回学习的乐趣。

Code Combat

如果你正在学习JavaScript并且没有多少-或根本没有-编码经验,来试试这个免费的游戏。控制一个巫师和他的随从。关卡设置从简单的概念如预先编好的动作到带条件判断的行动到更高级的咒语例如计算。fun2学习过程是在一个可爱的魔幻RPG中进行,有骑士,食人魔和法师。移动你的随从,瞄准你的敌人,发动攻击,并且粉碎黑暗的爪牙吧!

Code Combat于2013年上线,所以现在关卡还很有限。但是Code Combat的开发团队将会像着了魔一样开发更多的教程和游戏,所以让我们共同期待。他们已经把所有东西开源了所以能人巧匠们(使用者)可以开发他们自己的关卡。fun3Code Combat福利:如果你能够通过Gridmancer关卡,他们将会帮助你在旧金山找一份编程工作

Code Wars

虽然你在Code Wars上不会带上法师的帽子,但是你可以通过完成kata,或者编程挑战来收集点数获得升级。你可以使用Ruby,JavaScript或Coffeescript来完成kata。一个kata可以由不同的语言完成,这样你就可以很好的理解不同的语言如何完成同样的任务。计划会加入更多的语言,例如Python,Java,PHP,和Objective-C,所有这些语言支持已经在开发中。fun4这个以武术/武士为主题的系统充满了乐趣和吸引力–每次当你完成了一个kata,你将会得到荣誉点数。收集足够的荣誉点数使你提升到下个级别,解锁更多的编程挑战。你也可以通过编写自己的kata,评论别人的kata,或者推荐你的朋友来到Code Wars获取荣誉点数。

这些挑战都非常有趣和实用,并且Code Wars是唯一一个教你测试你自己代码的站点。但是这里的说明信息很少,所以请做好大量google解决问题的准备。虽然这是一个缓慢的过程,但是它确实是一个学习真正写代码是什么样子的好方法。fun5

它不像Code Combat那么傻瓜式,但是支持更多的语言,并且对于初学者来说更加成熟。Code Wars也拥有一个很强力的社区,它能够帮助初学者入门并且坚持下去。并且升级和获得声望奖励对自己也是一种鼓励!

Code School

和前面两个站点不同,Code School不是免费的。服务费用是290刀每年(29刀每月),这感觉就像是打劫。但是Code School的团体创建了一个非常吸引人并且实用的网站,如果你热衷于学习编程,那这笔投资是值得的。通过订阅,你可以参加任何你喜欢的课程并且在任何时候切换它们。他们也提供了一个2天的”Hall Pass“,它使你能够在48小时内免费试用网站上的一切内容。fun6

这里有Ruby,Javascript,HTML/CSS和iOS开发课程,所以你的可选范围很宽泛。你也可以尝试一些选修内容例如Chrome开发工具,谷歌云端硬盘API,和Git。

在上面讨论的3个网站里,Code School最没有游戏的感觉。每一个课程由一个简短视频和一个挑战组成;完成一个挑战会获得点数,询问提示会扣除这个问题所值的点数。

fun7

Code School点数目前还干不了什么。在以前,完成一个课程,你会得到5刀可以用于Code School商店的代金券,但现在这个程序已经被废除了。但愿我们在将来能看到类似的机制!但现在,你可以收集点数和徽章并向你的朋友们展示。这确实代表了一些东西。

你应该选择哪一个

这里已经介绍了3种有趣的学习编程的方法 – 你应该先尝试哪一个呢?我推荐你先选一门编程语言并且根据你的经验水平和你想开发的东西来选择网站。举例来说,如果你想开发一个在线应用,你应该选择JavaScript。如果你没有或只有一点编程经验,注册Code Combat吧。如果你了解基本概念,来试试Code Wars。如果你想开发iPhone应用或者Ruby On Rails应用, Code School是你的不错选择。

如果你不知道你想要做什么或者不知道从哪开始, 我推荐Code Combat。它是三个网站中最友好并且最简单的,并且为你很好的介绍了编程语言的基本概念。如果你觉得你真的很喜欢它,那你就可以从那开始。

Code School,虽然很实用,但是在开始之前需要掌握一些知识。如果你不清楚一个方法和一个数组的区别,你可能会想从更简单一些的地方开始。

更进一步

一旦你经过了这些网站的耳濡目染,你就已经为更具挑战的任务做好准备了,比如创建你的第一个应用。这时,限制你的只有你的想象力!

为你的web应用找个安全的网页主机空间,或者写一个程序帮助你的日常工作。为你自己买一台树莓派或者Arduino来试验你的新技能。别忘了看看我们的树莓派指导Arduino指导

你原来使用过任何游戏或者有趣的站点来学习编程吗?对于学习编程你最喜欢的方式又是什么呢?

原文链接: Dann Albright 翻译: 极客范 – Boyd Wang译文链接: http://www.geekfan.net/7960/

Linux:NetHogs——Linux下按进程实时统计网络带宽利用率

网上有很多适用于Linux操作系统的开源网络监视工具.比如说,你可以用命令iftop来检查带宽使用情况. netstat用来查看接口统计报告,还有top监控系统当前运行进程.但是如果你想要找一个能够按进程实时统计网络带宽利用率,那么NetHogs就是你所需要的唯一工具.

Linux:NetHogs——Linux下按进程实时统计网络带宽利用率
Linux:NetHogs——Linux下按进程实时统计网络带宽利用率

NetHogs – 网络带宽监控

什么是NetHogs?

NetHogs 是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率.

来自NetHogs项目网站:

NetHogs是一个小型的’net top’工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照进程进行带宽分组.NetHogs NetHogs不需要依赖载入某个特殊的内核模块. 如果发生了网络阻塞你可以启动NetHogs立即看到哪个PID造成的这种状况.这样就很容易找出哪个程序跑飞了然后突然占用你的带宽.

这篇文章为你讲解了如何在Unix/Linux操作系统下如何安装和使用NetHogs按进程监控网络带宽使用率。

在RHEL,CentOS和Fedora下安装NetHogs:

要安装NetHogs,你必须要启用你所用Linux下的EPEL源.然后运行下面的yum命令下载安装NetHogs包.

[root@tecmint~]# yum -y install nethogs
Loaded plugins:fastest mirror,refresh-packagekit
Loading mirror speeds from cached hostfile
*base: mirrors.hns.net.in
*epel: mirror.nus.edu.sg
*extras: mirrors.hns.net.in
*rpmfusion-free-updates: mirrors.ustc.edu.cn
*rpmfusion-nonfree-updates: mirror.de.leaseweb.net
*updates: mirrors.hns.net.in
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nethogs.i6860:0.8.0-1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================================================
Package                Arch                Version                    Repository                    Size
===========================================================================================================
Installing:
nethogs                i686                0.8.0-1.el6                epel                        28k
Transaction Summary
===========================================================================================================
Install       1 Package(s)
Total download size:28k
Installed size:50k
Downloading Packages:
nethogs-0.8.0-1.el6.i686.rpm                                                        |  28kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing :nethogs-0.8.0-1.el6.i686                                                          1/1
  Verifying  :nethogs-0.8.0-1.el6.i686                                                          1/1
 
Installed:
  nethogs.i6860:0.8.0-1.el6
 
Complete!

在Ubuntu, Linux mint和Debian下安装NetHogs:

键入apt-get命令安装NetHogs包

$ sudo apt-get install nethogs

样例输出

tecmint@tecmint:~$ sudo apt-get install nethogs
[sudo]password fortecmint:
Reading package lists...Done
Building dependency tree
Reading state information...Done
The following NEW packages will be installed:
  nethogs
0 upgraded,1 newly installed,0 to remove and 318 not upgraded.
Need to get 27.1kB of archives.
After this operation,100kB of additional disk space will be used.
Get: 1 http://in.archive.ubuntu.com/ubuntu/ quantal/universe nethogs i386 0.8.0-1 [27.1 kB]
Fetched 27.1kB in 1s (19.8kB/s)
Selecting previously unselected package nethogs.
(Reading database... 216058 files and directories currently installed.)
Unpacking nethogs(from .../nethogs_0.8.0-1_i386.deb)...
Processing triggers forman-db...
Setting up nethogs(0.8.0-1)...

NetHogs用法

在基于RedHat系统下键入如下命令启动NetHogs工具.

要执行NetHogs你必须拥有root权限,即如图所示用sudo命令

$ sudo nethogs

样例预览:

Linux:NetHogs——Linux下按进程实时统计网络带宽利用率
Linux:NetHogs——Linux下按进程实时统计网络带宽利用率

CentOS 6.3 下的NetHogs预览

Linux:NetHogs——Linux下按进程实时统计网络带宽利用率
Linux:NetHogs——Linux下按进程实时统计网络带宽利用率

Ubuntu 12.10 下的NetHogs预览

正如上图所示, send列和received列显示的是按照每个进程的流量统计.总的收发数据带宽在最下方,而且可以用交互命令控制排序,下面将要讨论这些交互命令:

NetHogs 命令行参数

以下就是NetHogs命令行的参数,用’-d’来添加刷新频率参数,`device name` 用来检测给定的某个或者某些设备的带宽(默认是eth0).例如:设置5秒钟的刷新频率,键入如下命令即可:

如果只用来监视设备(eth0)的网络带宽可以使用如下命令:

$ sudo nethogs eth0

如果要同时监视eth0和eth1接口,使用以下命令即可:

# nethogs eth0 eth1

 或

其他参数和用法

NetHogs 交互控制

以下是NetHogs的一些很有用的交互控制(键盘快捷键)

想要NetHogs命令行工具的完整参数列表请参考NetHogs的手册,使用方法是在终端里输入‘man nethogs‘ 或者 ‘sudo man nethogs‘,更多信息请参考NetHogs项目主页.

原文链接: Ravi Saive 翻译: 极客范 – LQ译文链接: http://www.geekfan.net/8019/

Linux:10个在随机出现在面试中的Linux问题及答案

为了给你们带来一些小惊喜,这次我们准备了一些在面试中随机出现的问题而不是专门关于某个领域的问题。这些问题肯定会在不深入学习新知识的前提下使你在面试中脱颖而出。

Linux:10个在随机出现在面试中的Linux问题及答案
Linux:10个在随机出现在面试中的Linux问题及答案

1.假设你在为你工作的公司维护一份日常的备份。这份备份是以压缩后的格式而被维护着。现在你需要检查一份两个月之前的日志,你应该提出什么样的建议从而可以在不解压这份备份的前提下完成检查日志的任务?

答案: 在不解压文件的前提下检查文件内容,我们需要用到’zcat’。zcat这个工具可以轻松完成这个任务。

# zcat ­f phpshell­2.4.tar.gz

2.你需要追踪你系统中发生的事件,你应该怎么做?

答案: 为了追踪系统中发生的事件,我们需要用到叫做syslogd的这个后台程序。syslogd这个后台程序可以追踪系统信息并将其保存到指定的日志文件中。

启用’syslogd’这个后台进程会在路径’/var/log/syslog’中生成一个日志文件。syslogd应用对解决Linux系统中的问题十分有用。标准生成的日志文件和下面这个例子很像。

Linux:10个在随机出现在面试中的Linux问题及答案
Linux:10个在随机出现在面试中的Linux问题及答案

3.如何禁止特定IP访问FTP服务器?

答案: 我们可以通过运用tcpwrapper来禁止可疑的IP访问。首先在路径’/etc/vsftpd.conf’的配置文件中,将tcpwrapper这个参数设置为”tcp_wrapper=YES”,然后在’/etc/host.deny’文件中加入可疑的IP地址。

禁止访问的IP地址

打开’/etc/hosts.deny’文件。

# vi /etc/hosts.deny

在文件底端加入拒绝访问的IP地址

#
# hosts.deny    This file contains access rules which are used to
#               deny connections to network services that either use
#               the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               The rules in this file can also be set up in
#               /etc/hosts.allow with a 'deny' option instead.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
vsftpd:172.16.16.1

4.告诉我们Telnet和SSH之间的区别?

答案: Telnet和SSH都是用来远程管理系统的协议。与Telnet直接传输数据正好相反,安全的SSH通信协议需要通信中有密钥的交换,这说明telnet相比较于SSH不安全。

5.你需要终止你的X server,但当你尝试杀进程的时候,你遇到了表示不能退出X server的错误信息。你准备怎么做?

答案: 当你尝试杀X server的进程时,系统不会让你像使用’/etc/init.d/gdm stop’一样正常的退出X server。我们需要执行一个使X server重启的特别的键位组合’Ctrl+ Alt+ BackSpace’。

6.告诉我命令’ping’和’ping6’的区别?

答案: 这两个命令有同样的功能,但’ping6’命令可被用于ipv6的IP地址。

7.你想要在Home目录下寻找*.tar文件并一次性删除,你会怎么做?

答案: 我们要同时用到find和rm命令来删除所有*.tar文件

# find /home/ ­name '*.tar' | xargs rm ­rf

8.locate和slocate命令的区别?

答案: slocate(secure locate)会寻找所有用户有权限访问的文件,然而locate会搜索(它的数据库里面的)所有更新过的结果。

9.你要在当前目录中所有“.txt”文件中搜索“Tecmint”这个字符串,你怎么做?

答案: 用find命令在当前目录递归寻找文件中的“Tecmint”字符串。

# find ­name “*.txt” | xargs grep “Tecmint”

10.你要向所有已连接的用户发送“Server is going down for maintenance”这样一条信息,你怎么做?

答案: 运用wall命令就可以很容易地实现,wall命令可以向所有已连接服务器的用户发送信息。

# echo please save your work, immediately. The server is going down for Maintenance at 12:30 Pm, sharply. | wall
Linux:10个在随机出现在面试中的Linux问题及答案
Linux:10个在随机出现在面试中的Linux问题及答案

via: http://www.tecmint.com/useful-random-linux-interview-questions-and-answers/

译者:ThomazL 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2815-1.html

Linux:戴文的Linux内核专题:20 配置内核 (16)

Linux:戴文的Linux内核专题:20 配置内核 (16)
Linux:戴文的Linux内核专题:20 配置内核 (16)

欢迎来到下一篇Linux内核文章。在本篇里,我们将讨论输入/输出端口。

首先,PS/2鼠标和AT键盘需要”i8042 PC Keyboard controller”驱动。在USB之前,鼠标和键盘使用圆形端口的PS/2端口。AT键盘是一种84键使用AT端口的IBM键盘。AT端口有5针而PS/2口有六针。

使用COM口(有时也称RS232串口)的输入设备需要这个驱动(Serial port line discipline)。COM是一种串口,意味着每次传输一位。

TravelMate笔记本需要这个特殊的驱动来使用连接到QuickPort的鼠标(ct82c710 Aux port controller)。

对于PS/2 mice、AT keyboards 和 XT keyboards的并口适配器使用这个驱动(Parallel port keyboard adapter)。

“PS/2 driver library”用于PS/2鼠标和AT键盘。

可以启用”Raw access to serio ports”来允许设备文件作为字符文件来使用。

下面,下面有一个用于”Altera UP PS/2 controller”的驱动。

PS/2复用同样需要一个驱动(TQC PS/2 multiplexer)。

ARC FPGA平台对于PS/2控制器需要特殊的驱动(ARC PS/2 support)。

注意:我想要说清楚这篇文章中讨论的PS/2控制器并不是Sony的PlayStation上的游戏控制器。这篇文章讨论的是6针鼠标/键盘端口。控制器是一种有PS/2端口的卡。

“Gameport support”提供对15针gameport的支持。gameport是一种曾经被很多游戏设备使用直到USB端口的发明的15针口。

下一个驱动是在ISA或者PnP总线卡上的gameport驱动(Classic ISA and PnP gameport support)。ISA代表”Industry Standard Architecture”(工业标准架构)并且它是一种在PCI之前的并行总线标准。PnP代表”Plug-and-Play”(即插即用)并且他是一种在ISA之前的通用标准。

“PDPI Lightning 4 gamecard support”提供了一个有gameport的游戏卡的专有驱动。

SoundBlaster Audigy卡是一种专有gameport卡(SB Live and Audigy gameport support)。

ForteMedia FM801 PCI音频控制器在卡上有一个音频控制器(ForteMedia FM801 gameport support)。这个驱动只支持gameport。

下一步,我们可以进入”Character devices”。字符设备以字符传输数据。

首先,可以启用/禁用TTY(Enable TTY)。移除TTY会节约很多空间,但是许多终端和这类设备需要TTY。除非你知道你在做什么,否则不要禁用TTY。

致我的粉丝:如果你知道一个禁用TTY的理由,你能在下面发表你的答案并与我们共享么?谢谢!

下一步,可以启用/禁用”Virtual terminals”(虚拟终端)。再说一次,这个可以节约很多空间,但是虚拟终端很重要。

下一个驱动支持字体映射和Unicode转换(Enable character translations in console)。这用于转换ASCII到Unicode。

虚拟终端可以用这个驱动作为系统控制台(Support for console on virtual terminal)。系统控制台管理着登陆和内核信息/警告。

虚拟终端必须通过控制台驱动与物理终端交互(Support for binding and unbinding console drivers)。在虚拟终端可用之前,控制台驱动必须被加载。当虚拟终端关闭后,控制台终端必须被卸载。

下一个驱动提供了对Unix98 PTY驱动的支持(Unix98 PTY support)。这是Unix98伪终端。

有趣的事实:Linux内核允许某个文件系统一次在很多地方被多次挂载。

接下来,可以支持”Support multiple instances of devpts”(译注:允许多个”devpts”文件系统实例)。devpts文件系统用于伪终端的slave。

过时的PTY同样可以启用(Legacy (BSD) PTY support)。

可以设置最大数量的使用中的过时PTS(Maximum number of legacy PTY in use)。

下面的驱动可以用于提供对其他驱动不支持的串口的支持 (Non-standard serial port support)。

下面有一些用于特定板和卡的驱动。

这个驱动支持GSM MUX协议(GSM多路复用)(GSM MUX line discipline support (EXPERIMENTAL))。

下一个驱动启用kmem设备文件(/dev/kmem virtual device support)。kmem通常用于内核调试。kmem可以用于读取某些内核变量和状态。

Stallion卡上面有许多串口Stallion multiport serial support)。这个驱动特别支持这块卡。

下面,我们可以进入到串行设备驱动了。如前所述,串行设备每次传输一位。

第一个驱动用于标准串口支持(8250/16550 and compatible serial support)。

在这个驱动下,即插即用(Plug-and-Play)同样存在于串口中(8250/16550 PNP device support)。

下面的驱动允许串口用于连接一个终端后作为控制台(Console on 8250/16550 and compatible serial port)。

一些UART控制器支持直接内存访问(DMA support for 16550 compatible UART controllers)。UART代表的是”Universal Asynchronous Receiver/Transmitter”(通用异步收发)。UART控制器转换串行到并行,反之亦然。

下一步,这个驱动提供了标准PCI串行设备支持(8250/16550 PCI device support)。

16位PCMCIA串行设备由这个驱动支持(8250/16550 PCMCIA device support)。记住,PCMCIA是一种通常使用于笔记本的PC卡。

可以设置最大数量支持的串口(Maximum number of 8250/16550 serial ports),接着是在启动中注册的最大数量(Number of 8250/16550 serial ports to register at runtime)。

为了扩展像HUB6的串行能力,启用这个驱动(Extended 8250/16550 serial driver options)。

一个特殊驱动用于支持多于4种的过时串口(Support more than 4 legacy serial ports)。

当启用这个驱动后,可以共享串口中断(Support for sharing serial interrupts)。

使用这个驱动可以自动检测串口中断请求(Autodetect IRQ on standard ports)。

RSA串口同样也在Linux内核中支持(Support RSA serial ports)。RSA代表的是”Remote Supervisor Adapter”(远程管理适配器)。RSA是一种IBM特定的硬件。

下面,有不同的供应商/设备特定驱动。

下面有一个使用printk输出用户信息的TTY驱动(TTY driver to output user messages via printk)。printk(print kernel)是一种通常打印启动信息的特殊软件。任何由printk显示的字符串通常在/var/log/messages文件里。shell命令”dmesg”显示所有被printk使用的字符串。

下面,我们可以启用/禁用并口打印机的支持(Parallel printer support)。

接下来的驱动允许打印机作为一个控制台(Parallel printer support)。这意味着内核消息会被逐字地由打印机打印。通常地在这个系列中使用”print”(打印)这个单词时,意味这将输出信息到屏幕上。而这次,字面上的意思是将数据输出在纸上。

以下的驱动使设备文件在/dev/parport/中(Support for user-space parallel port device drivers)。这使得一些进程可以访问。

再说一次,Linux内核有许多特性和驱动,所以我们还会在下一篇文章中继续讨论更多的驱动。谢谢!

致粉丝:我们正在接近配置过程的终点。我有一张你们很多人想知道的内核话题列表。这些话题包含了安装内核、管理模块、加入第三方驱动、还有许多其他有趣的建议和要求。


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-16.4835/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2816-1.html

Linux:戴文的Linux内核专题:21 配置内核 (17)

Linux:戴文的Linux内核专题:21 配置内核 (17)
Linux:戴文的Linux内核专题:21 配置内核 (17)

你好!这篇文章会覆盖不同的驱动。

首先”virtio console”是一种用于hypervisors的虚拟控制台驱动。

“IPMI top-level message handler”是用于IPMI系统的消息管理器。IPMI代表的是”Intelligent Platform Management Interface”(智能平台管理系统)。IPMI是一种不需要shell通过网络管理系统的接口。

“/dev/nvram support”允许系统读取和写入实时时钟的内存。通常上,这个特性用于在掉电时保存数据。

下面一个驱动支持Siemens R3964包驱动(Siemens R3964 line discipline)。这个是设备对设备协议

现在,我们可以进入PCMCIA字符设备驱动。然而,大多数这里的驱动是供货商/设备特定的。

原始块设备驱动允许块设备绑定到设备文件上/dev/raw/rawN(RAW driver (/dev/raw/rawN))。这么做的好处是高效的零拷贝。然而,大多数软件更偏好通过/dev/sd** 或者 /dev/hd**访问存储设备。

下面,可以设置支持的原始设备的最大数量。

下面的驱动可以生成设备文件/dev/hpet (HPET – High Precision Event Timer)。

注意:你们中很多人可能会想知道为什么要启用这些设备文件问题。好的,这些设备文件充当了一个软件和硬件之间的接口。

通过这个驱动可以映射HPET驱动(Allow mmap of HPET)。映射是一个生成设备和文件在内存中的地址列表。文件接着可以通过内存地址更快地找到并且接着指挥硬盘从地址中得到数据。

“Hangcheck timer”用于检测系统是否被锁定。这个定时器监视着锁定进程。当一个进程被冻结了,定时器就开启。当定时器停止后,如果进程还没有重启或者关闭,那么定时器会强迫进程关闭。

引用Linus Torvalds的话:可移植性是对于那些无法写新程序的人而言的。

使用Trusted Computing Group(可信赖计算组)规范的TPM安全芯片会需要这个驱动(TPM Hardware Support)。

现在,我们可以进入I2C设备。I2C代表的是”Inter-Integrated Circuit”(内部集成电路)并经常被成为”eye two see”。然而,一些人会说”eye squared see”。I2C是一种串行总线标准。

一些旧的软件将I2C适配器作为类设备,但是如今的软件不会这么做(Enable compatibility bits for old user-space)。所以,这个驱动会提供对旧软件的向后支持。

接下来,可以生成I2C设备文件(I2C device interface)。

I2C可以通过这个驱动提供复用支持(I2C bus multiplexing support)。

I2C可以通过这个驱动支持GPIO控制的复用(GPIO-based I2C multiplexer)。

对于开发者用这个驱动可以在I2C和SMBus上执行不同的测试(I2C/SMBus Test Stub)。

I2C系统启用这个特性可以生成调试信息(I2C Core debugging messages)。

下一个驱动生成额外的I2C调试信息(I2C Algorithm debugging messages)。

引用Linus Torvalds的话:Linux中没有原始设备的原因似乎我个人任何原始设备是一个愚蠢的注意。

下面的驱动会使I2C驱动生成调试信息(I2C Bus debugging messages)。

接下来,我们有串行外设接口(Serial Peripheral Interface)支持(SPI support)。SPi是一种用于SPI总线的同步串行协议。

在这之后,有一个驱动用于高速同步串行接口(High speed synchronous Serial Interface support)支持(HSI support)。HSI是一种同步串行协议。

PPS同样在Linux内核中支持(PPS support)。

“IP-over-InfiniBand”驱动支持IP包通过InfiniBand(译注:一种无限带宽技术)传输。

在这之后,有一个调试驱动用于IP-over-InfiniBand(IP-over-InfiniBand debugging)。

SCSI的RDMA协议同样可以通过InfiniBand传输(InfiniBand SCSI RDMA Protocol)。

这里同样有一种通过InfiniBand传输iSCSI协议的扩展(iSCSI Extensions for RDMA (iSER))。

有时候,错误发生在了整个系统必须知道的核心系统中(EDAC (Error Detection And Correction) reporting)。这个驱动发送核心给系统。通常地,这类底层错误由处理器中报告并接着由这个驱动让其他系统进程知道或者处理错误。

这个驱动提供了在老版本中的sysfs中使用的过时EDAC的支持(EDAC legacy sysfs)。

EDAC可以用来设置发送调试信息给Linux的日志系统(Debugging)。

引用Linus Torvalds的话:没有人可以第一次创造如此好的代码,除了我。

“Machine Check Exceptions”(机器检测异常)(MCEs)通过这个驱动被转化成可读的信息(Decode MCEs in human-readable form (only on AMD for now))。MCEs是由CPU检测到的硬件错误。MCEs通常触发内核错误。

将MCE解码成可读的形式的过程可以被注射用于测试错误处理(Simple MCE injection interface over /sysfs)。

下一个驱动允许错误在内存中被检测到并纠正(Main Memory EDAC (Error Detection And Correction) reporting)。

下面,还有很多用于特定设备组的检测和纠正错误的驱动。

引用Linus Torvalds的话:理论和实践有时会冲突。那这个发生时,理论输了。每次都是。

现在我们可以进入实时时钟(“Real Time Clock”)。这通常缩写为”RTC”。RTC一直跟随着时间。

Linux:戴文的Linux内核专题:21 配置内核 (17)
Linux:戴文的Linux内核专题:21 配置内核 (17)

下面的设定允许用户在Linux系统中使用RTC时间作为”挂钟”时间(Set system time from RTC on startup and resume)。这个挂钟是我们在桌面上或者通过”date”命令看到的时间。

另外,挂钟可以通过NTP服务器得到时间并与RTC同步(Set the RTC time based on NTP synchronization)。

一些系统有几个RTC,所以用户必须设置哪一个是默认 (RTC used to set the system time)。最好设置第一个(/dev/rtc0)为主时钟。

可以设置RTC系统的调试特性(RTC debug support)。

RTC可以使用不同的接口给予操作系统当前时间。使用sysfs会需要这个驱动(/sys/class/rtc/rtcN (sysfs)),而似乎用proc需要这个驱动 (/proc/driver/rtc (procfs for rtcN))。特殊的RTC字符设备可以生成并使用 (/dev/rtcN (character devices))。shell命令”hwclock”使用/dev/rtc,所以RTC字符设备。

下一个驱动允许在/dev接口上模拟RTC中断(RTC UIE emulation on dev interface)。这个驱动读取时钟时间并允许新的时间从/dev中检索。

RTC系统可以通过测试驱动测试(Test driver/device)。

下面,我们会讨论直接内存访问系统。DMA是硬件独立于处理器的内存访问过程。DMA增加的系统性能因为处理器将做得更少如果硬件自身做了更多的任务。不然,硬件会等待处理器完成任务。

这是调试DMA系统的调试引擎(DMA Engine debugging)。

接下来,有许多的供货商/设备特定驱动用于DMA支持。

一些DMA通过这个驱动支持大端读取和写入(Use big endian I/O register access)。

大端指的是二进制码的排列。英语国家的数字系统将数字的最大端放在左边。比如,数字17,最左的数字是放置十位的地方大于个位。在大端中,每字节最大的放在左边。字节有8位。比如:10110100。每一处都有相应的值128、64、32、16、8、4、2、1。所以提到的为被转换成十进制180。

DMA系统可以使用网络减小CPU使用(Network: TCP receive copy offload)。

“DMA Test Client”用于测试DMA系统。

下一篇文章中,我们会讨论显示/视频驱动。谢谢!

参考:Linus Torvalds的引用来自于:http://en.wikiquote.org/wiki/Linus_Torvalds


via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-17.4875/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2817-1.html

Linux:解析OpenSSL漏洞:影响巨大 两年前已存在

  什么是SSL?

  SSL是一种流行的加密技术,可以保护用户通过互联网传输的隐私信息。当用户访问Gmail.com等安全网站时,就会在URL地址旁看到一个“锁”,表明你在该网站上的通讯信息都被加密。

  这个“锁”表明,第三方无法读取你与该网站之间的任何通讯信息。在后台,通过SSL加密的数据只有接收者才能解密。如果不法分子监听了用户的对话,也只能看到一串随机字符串,而无法了解电子邮件、Facebook帖子、信用卡账号或其他隐私信息的具体内容。

  SSL最早在1994年由网景推出,1990年代以来已经被所有主流浏览器采纳。最近几年,很多大型网络服务都已经默认利用这项技术加密数据。如今,谷歌雅虎和Facebook都在使用SSL默认对其网站和网络服务进行加密。

Linux:解析OpenSSL漏洞:影响巨大 两年前已存在
Linux:解析OpenSSL漏洞:影响巨大 两年前已存在

  什么是“心脏出血”漏洞?

  多数SSL加密的网站都使用名为OpenSSL的开源软件包。本周一,研究人员宣布这款软件存在严重漏洞,可能导致用户的通讯信息暴露给监听者。OpenSSL大约两年前就已经存在这一缺陷。

  工作原理:SSL标准包含一个心跳选项,允许SSL连接一端的电脑发出一条简短的信息,确认另一端的电脑仍然在线,并获取反馈。研究人员发现,可以通过巧妙的手段发出恶意心跳信息,欺骗另一端的电脑泄露机密信息。受影响的电脑可能会因此而被骗,并发送服务器内存中的信息。

  该漏洞的影响大不大?

  很大,因为有很多隐私信息都存储在服务器内存中。普林斯顿大学计算机科学家艾德·菲尔腾(Ed Felten)表示,使用这项技术的攻击者可以通过模式匹配对信息进行分类整理,从而找出密钥、密码,以及信用卡号等个人信息。

  丢失了信用卡号和密码的危害有多大,相信已经不言而喻。但密钥被盗的后果可能更加严重。这是是信息服务器用于整理加密信息的一组代码。如果攻击者获取了服务器的私钥,便可读取其收到的任何信息,甚至能够利用密钥假冒服务器,欺骗用户泄露密码和其他敏感信息。

  谁发现的这个问题?

  该漏洞是由Codenomicon和谷歌安全部门的研究人员独立发现的。为了将影响降到最低,研究人员已经与OpenSSL团队和其他关键的内部人士展开了合作,在公布该问题前就已经准备好修复方案。

  谁能利用“心脏流血”漏洞?

  “对于了解这项漏洞的人,要对其加以利用并不困难。”菲尔腾说。利用这项漏洞的软件在网上有很多,虽然这些软件并不像iPad应用那么容易使用,但任何拥有基本编程技能的人都能学会它的使用方法。

  当然,这项漏洞对情报机构的价值或许最大,他们拥有足够的基础设施来对用户流量展开大规模拦截。我们知道,美国国家安全局(以下简称“NSA”)已经与美国电信运营商签订了秘密协议,可以进入到互联网的骨干网中。用户或许认为,Gmail和Facebook等网站上的SSL加密技术可以保护他们不受监听,但NSA 却可以借助“心脏流血”漏洞获取解密通讯信息的私钥。

  虽然现在还不能确定,但如果NSA在“心脏流血”漏洞公之于众前就已经发现这一漏洞,也并不出人意料。OpenSSL是当今应用最广泛的加密软件之一,所以可以肯定的是,NSA的安全专家已经非常细致地研究过它的源代码。‘

  有多少网站受到影响?

  目前还没有具体的统计数据,但发现该漏洞的研究人员指出,当今最热门的两大网络服务器Apache和nginx都使用OpenSSL。总体来看,这两种服务器约占全球网站总数的三分之二。SSL还被用在其他互联网软件中,比如桌面电子邮件客户端和聊天软件。

  发现该漏洞的研究人员几天前就已经通知OpenSSL团队和重要的利益相关者。这让OpenSSL得以在漏洞公布当天就发布了修复版本。为了解决该问题,各大网站需要尽快安装最新版OpenSSL。

  雅虎发言人表示:“我们的团队已经在雅虎的主要资产中(包括雅虎主页、雅虎搜索、雅虎电邮、雅虎财经、雅虎体育、雅虎美食、雅虎科技、Flickr和Tumblr)成功部署了适当的修复措施,我们目前正在努力为旗下的其他网站部署修复措施。”

  谷歌表示:“我们已经评估了SSL漏洞,并且给谷歌的关键服务打上了补丁。”Facebook称,在该漏洞公开时,该公司已经解决了这一问题。

  微软发言人也表示:“我们正在关注OpenSSL问题的报道。如果确实对我们的设备和服务有影响,我们会采取必要措施保护用户。”

  用户应当如何应对该问题?

  不幸的是,如果访问了受影响的网站,用户无法采取任何自保措施。受影响的网站的管理员需要升级软件,才能为用户提供适当的保护。

  不过,一旦受影响的网站修复了这一问题,用户便可以通过修改密码来保护自己。攻击者或许已经拦截了用户的密码,但用户无法知道自己的密码是否已被他人窃取。

via : http://tech.sina.com.cn/i/2014-04-09/10049307446.shtml 

Linux:如何在 Linux 中安全擦除删除的文件内容

Linux:如何在 Linux 中安全擦除删除的文件内容
Linux:如何在 Linux 中安全擦除删除的文件内容

 

下面的教程将教给所有的 Linux 用户关于如何安全的擦除可用的硬盘驱动器(HDD)、固态硬盘驱动器(SSD)以及 USB 闪存驱动器空间,以使任何人都不能恢复被删除的文件。

是否有注意到,当你从系统中删除了一个文件,或从回收站中彻底删除后,它就会在文件系统中消失,但是,该文件实际上并未消失,它驻留在你的磁盘驱动器的可用空间中,仍然可以用数据恢复应用程序恢复回来。

这篇教程会提供两种方法。第一种是使用一款名叫 Wipe Free Space 的应用程序,它是由波兰开发者 Bogdan Drozdowski 开发的。第二种方法会使用众所周知的 BleachBit 软件。

虽然 BleachBit 是一款图形应用程序,Wipe Free Spac 是一款命令行软件,但开发者也提供了易用的图形用户界面(GUI),即使初级用户也可以容易使用,用来安全的擦除他们磁盘的可用空间。

选编者注:在继续往下阅读之前,最好知道这些应用程序会擦除未被使用的簇和块上的可用空间,也会擦除使用过的块上的所谓“闲置空间”,即删除文件和其他任意数据后可供再次使用的空间。

方法 1 – Wipe Free Space & Wipe Free Space GUI

Linux:如何在 Linux 中安全擦除删除的文件内容
Linux:如何在 Linux 中安全擦除删除的文件内容

从你的 Linux 发布版本的默认软件源仓库中可以很容易的就安装上 Wipe Free Space 命令行应用程序。可以使用基于 RPM 的 Linux 发行版二进制包,也可以直接用源代码来编译安装。

安装完成后,可以从这儿下载图形用户界面前端程序,保存在 home 目录下,解压缩,然后双击 run.sh (或者在终端窗口下执行 sh run.sh 命令)文件就可以打开。

应用程序打开后,你可以把 wipefreespace 目录的可执行文件路径添加进来,所以点击“浏览”按钮,到 /usr/bin/ 下查找。然后添加要被擦除的文件系统。

确保已经勾选了窗口左边的 “Wipe only with zeros” 选项。如果你需要勾选更多的选项,首先请查看手册来了解怎么使用,因为他们可能会使你的驱动器崩溃。现在,请点击“开始擦除”按钮开始执行。

方法 2 – BleachBit

这是最容易的方法,建议初级用户使用。从你的 Linux 发布版本的默认软件源仓库中很容易的就可以安装 BleachBit 应用程序。打开它,请确保您在侧边栏上的系统部分选中“可用磁盘空间”选项。点击“清除”按钮开始执行。

Linux:如何在 Linux 中安全擦除删除的文件内容
Linux:如何在 Linux 中安全擦除删除的文件内容

BleachBit 的可用空间选项

整个擦除操作会进行很长时间。在主窗口上你可以看到详细的进度。如果你在这篇教程中遇到问题,别犹豫,在下面发表评论吧。

Wipe Free Space GUI 0.5 下载:


via: http://news.softpedia.com/news/How-to-Wipe-Free-Disk-Space-in-Linux-429965.shtml

译者:runningwater 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2823-1.html

Linux:每日Ubuntu小技巧:解决VirtualBox中截屏时的黑屏故障

VirtualBox是一个可以让你在一台物理主机上运行多个系统的软件。它支持Windows,Mac OS X 和Linux 并且是Oracle公司在维护它。

Linux:每日Ubuntu小技巧:解决VirtualBox中截屏时的黑屏故障
Linux:每日Ubuntu小技巧:解决VirtualBox中截屏时的黑屏故障

我们在这里写了很多关于VirtualBox的文章,你可以做一个快速的查找来查看所有关于VirtualBox的文章。

现在,这里有一个故事:VirtualBox有一个功能,允许用户快速的截取虚拟机会话的屏幕截图。这些截图可以通过粘贴板和宿主机共享。

这就是我们这里要说的了。当某一个Ubuntu 虚拟机中的功能启用后,这项截图的功能就不能够正常的工作了。这种现象一直是一个痛点,直到最近我们偶然发现了这个解决方法。

如果不采取我们发现的这个方法,当你在Ubuntu的虚拟机里面截完屏幕之后,截屏的图片将会被存储成全黑的文件,这样的文件会毫无用处。

我一直在苦苦寻找解决方法,但是一直都没有好运气,直到刚刚。

要开启Ubuntu下的虚拟机和宿主机之间的双向黏贴板的话,请在Ubuntu虚拟机上面点击 “设置”,之后找到“普通->高级标签”,选择这个功能来开启它。

Linux:每日Ubuntu小技巧:解决VirtualBox中截屏时的黑屏故障
Linux:每日Ubuntu小技巧:解决VirtualBox中截屏时的黑屏故障

现在,理论上,当你开启Ubuntu的虚拟机之后,按下“截屏键”,或者按下“Ctrl+截屏键”,虚拟机就应该为当前的桌面会话来张截屏。

之后你就可以通过在宿主机上面使用粘贴板的功能来看到那些图片了。

但是!如果你同时启用了Ubuntu虚拟机中的“3D 加速”功能,那些图片将会变得漆黑一片。

为了解决这个问题,你必须关闭Ubuntu虚拟机的3D加速功能!

关闭3D加速功能可以这样做:在Ubuntu虚拟机种点击“设置”,之后找到“系统->显示->显卡”标签,关闭3D加速

Linux:每日Ubuntu小技巧:解决VirtualBox中截屏时的黑屏故障
Linux:每日Ubuntu小技巧:解决VirtualBox中截屏时的黑屏故障

现在你必须在Ubuntu的虚拟机中设置关闭3D加速才能让截屏正常工作。现在打开一个虚拟机尝试来截个屏幕吧。

希望这个方法能够帮到你!

希望你喜欢!


via: http://www.liberiangeek.net/2014/02/daily-ubuntu-tips-fix-black-screen-in-ubuntu-guest-with-virtualbox-screen-capture/

译者:FineFan 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2824-1.html

Linux:Linux命令及Linux终端的20个趣事

Linux其乐无穷!哈哈。不相信。记住我的话,在文章结尾时你就会相信Linux确实好玩了。

Linux:Linux命令及Linux终端的20个趣事
Linux:Linux命令及Linux终端的20个趣事

1. 命令:sl (蒸汽机车)

你可能了解 ‘ls’ 命令,并经常使用它来查看文件夹的内容。但是,有些时候你可能会拼写成 ‘sl’ ,这时我们应该如何获得一些乐趣而不是看见“command not found”呢?

安装 sl

root@tecmint:~# apt-get install sl      (In Debian like OS)
root@tecmint:~# yum -y install sl       (In Red Hat like OS)

输出

root@tecmint:~# sl
Linux:Linux命令及Linux终端的20个趣事
Linux:Linux命令及Linux终端的20个趣事

当你敲入的是‘LS‘而不是’ls‘时,这个命令也会运行。

2. 命令:telnet

非也!非也!!这可不像它平常那样复杂。你可能很熟悉telnet。Telnet 是一个文本化的双向网络协议。这里不需要安装什么东西。你需要的就是一个Linux系统和一个连通的网络。

root@tecmint:~# telnet towel.blinkenlights.nl
Linux:Linux命令及Linux终端的20个趣事
Linux:Linux命令及Linux终端的20个趣事

3. 命令:fortune

试试你未知的运气,终端里有时也有好玩的。

安装 fortune

root@tecmint:~# apt-get install fortune     (for aptitude based system)
root@tecmint:~# yum install fortune         (for yum based system)
root@tecmint:~# fortune
You're not my type.  For that matter, you're not even my species!!!
Future looks spotty.  You will spill soup in late evening.
You worry too much about your job.  Stop it.  You are not paid enough to worry.
Your love life will be... interesting.

4. 命令:rev(翻转)

它会把传递给它的的每个字符串都反过来,是不是很好玩。

root@tecmint:~# rev
123abc
cba321
xuniL eb ot nrob
born to be Linux

5. 命令:factor

该谈点儿关于Mathematics的了,这个命令输出给定数字的所有因子。

root@tecmint:~# factor
5
5: 5
12
12: 2 2 3
1001
1001: 7 11 13
5442134
5442134: 2 2721067

来源:https://linux.cn/article-2831-1.html

Linux:排名前8的 PHP 调试工具,你认可吗?

Web 开发并不是一项轻松的任务,有超级多服务端脚本语言提供给开发者,但是当前 PHP 因为具有额外的一些强大的功能而越来越流行。PHP 是最强大的服务端脚本语言之一,同时也是 web 开发者和设计者用的最多,最经常使用的语言。

PHP 有非常多的工具,其中包括测试和优化工具,文档工具,代码编辑器,安全工具,同时也支持框架和在线工具。这就是为什么在那么短的时间内吸引了那么的开发者使用它。工具总是能帮助简化和加速开发的过程。

今天我们主要是围绕最受开发者们欢迎的前 8个 PHP 的调试工具。调试工具在开发过程中占有很重要的地位,开发者的代码有特别多的行数,同时也可能存在错误,而调试工具就能帮助开发者找出这些错误并能很好的调试程序。

1) Pinba

Pinba 是个开源的 MySQL 存储引擎,主要任务是帮助 web 开发者监控所有 PHP 脚本的性能。使用 MySQL 作为只读接口,作为一个 PHP 的实时监控服务器。

Linux:排名前8的 PHP 调试工具,你认可吗?
Linux:排名前8的 PHP 调试工具,你认可吗?

2) PHP Dyn

PHP Dyn 是个令人惊奇的扩展,帮助调试 PHP 脚本。它的主要是能跟踪执行脚本,也是一款提供给 PHP 开发者的开源软件。

Linux:排名前8的 PHP 调试工具,你认可吗?
Linux:排名前8的 PHP 调试工具,你认可吗?

3) Kint

Kint 是另一个调试 PHP 脚本的最好的调试工具,非常容易使用,强大,而且 PHP 的 web 开发者可以随意定制。

Linux:排名前8的 PHP 调试工具,你认可吗?
Linux:排名前8的 PHP 调试工具,你认可吗?

4) PHP MD

PHPMD 可以从源代码中找到错误,并且使用一系列有限的定义规则就可以轻松解决问题。

Linux:排名前8的 PHP 调试工具,你认可吗?
Linux:排名前8的 PHP 调试工具,你认可吗?

5) PHP Debug Bar

PHP Debug Bar 是另一个非常棒的 PHP 调试工具,可以显示 web 应用的 pst 数据。

Linux:排名前8的 PHP 调试工具,你认可吗?
Linux:排名前8的 PHP 调试工具,你认可吗?

6) Whoops

Whoops 是个更高效的 PHP 调试库,帮助开发者构建和维护他们的项目,使其做得更好。Whoops 也是个开源软件,有着许多杰出的特性。

Linux:排名前8的 PHP 调试工具,你认可吗?
Linux:排名前8的 PHP 调试工具,你认可吗?

7) Xdebug

Xdebug 是提供给 PHP 用户的一个扩展,有着许多高级的特性,每一时刻都有不同类型的更新。

Linux:排名前8的 PHP 调试工具,你认可吗?
Linux:排名前8的 PHP 调试工具,你认可吗?

8) Krumo

Krumo 是 PHP 调试工具的杰出代表,可以显示任意的 PHP 变量的结构信息。

Linux:排名前8的 PHP 调试工具,你认可吗?
Linux:排名前8的 PHP 调试工具,你认可吗?

欣赏完这些超级棒的 PHP 调试工具,分享一下你的经验,大家畅所欲言吧!

文章转载自:开源中国社区 [http://www.oschina.nethttp://www.oschina.net/news/49207/best-php-debugging-tools

 

Linux:DNS攻击原理与防范

 编者注:这是一篇旧文,来源已不可考,但是依旧有参考价值,分享给诸君。

  随着网络的逐步普及,网络安全已成为INTERNET路上事实上的焦点,它关系着INTERNET的进一步发展和普及,甚至关系着INTERNET的生存。可喜的是我们那些互联网专家们并没有令广大INTERNET用户失望,网络安全技术也不断出现,使广大网民和企业有了更多的放心,下面就网络安全中的主要技术作一简介,希望能为网民和企业在网络安全方面提供一个网络安全方案参考。

Linux:DNS攻击原理与防范
Linux:DNS攻击原理与防范

  DNS的工作原理

  DNS分为Client和Server,Client扮演发问的角色,也就是问Server一个Domain Name,而Server必须要回答此Domain Name的真正IP地址。而当地的DNS先会查自己的资料库。如果自己的资料库没有,则会往该DNS上所设的的DNS询问,依此得到答案之后,将收到的答案存起来,并回答客户。

  DNS服务器会根据不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称。

  在每一个名称服务器中都有一个快取缓存区(Cache),这个快取缓存区的主要目的是将该名称服务器所查询出来的名称及相对的IP地址记录在快取缓存区中,这样当下一次还有另外一个客户端到次服务器上去查询相同的名称 时,服务器就不用在到别台主机上去寻找,而直接可以从缓存区中找到该笔名称记录资料,传回给客户端,加速客户端对名称查询的速度。例如:

  当DNS客户端向指定的DNS服务器查询网际网路上的某一台主机名称 DNS服务器会在该资料库中找寻用户所指定的名称 如果没有,该服务器会先在自己的快取缓存区中查询有无该笔纪录,如果找到该笔名称记录后,会从DNS服务器直接将所对应到的IP地址传回给客户端 ,如果名称服务器在资料记录查不到且快取缓存区中也没有时,服务器首先会才会向别的名称服务器查询所要的名称。例如:

  DNS客户端向指定的DNS服务器查询网际网路上某台主机名称,当DNS服务器在该资料记录找不到用户所指定的名称时,会转向该服务器的快取缓存区找寻是否有该资料 ,当快取缓存区也找不到时,会向最接近的名称服务器去要求帮忙找寻该名称的IP地址 ,在另一台服务器上也有相同的动作的查询,当查询到后会回复原本要求查询的服务器,该DNS服务器在接收到另一台DNS服务器查询的结果后,先将所查询到的主机名称及对应IP地址记录到快取缓存区中 ,最后在将所查询到的结果回复给客户端

  常见的DNS攻击

  1) 域名劫持

  通过采用黑客手段控制了域名管理密码和域名管理邮箱,然后将该域名的NS纪录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民访问该域名时,进入了黑客所指向的内容。

  这显然是DNS服务提供商的责任,用户束手无策。

  2) 缓存投毒

  利用控制DNS缓存服务器,把原本准备访问某网站的用户在不知不觉中带到黑客指向的其他网站上。其实现方式有多种,比如可以通过利用网民ISP端的DNS缓存服务器的漏洞进行攻击或控制,从而改变该ISP内的用户访问域名的响应结果;或者,黑客通过利用用户权威域名服务器上的漏洞,如当用户权威域名服务器同时可以被当作缓存服务器使用,黑客可以实现缓存投毒,将错误的域名纪录存入缓存中,从而使所有使用该缓存服务器的用户得到错误的DNS解析结果。

  最近发现的DNS重大缺陷,就是这种方式的。只所以说是“重大”缺陷,据报道是因为是协议自身的设计实现问题造成的,几乎所有的DNS软件都存在这样的问题。

  3)DDOS攻击

  一种攻击针对DNS服务器软件本身,通常利用BIND软件程序中的漏洞,导致DNS服务器崩溃或拒绝服务;另一种攻击的目标不是DNS服务器,而是利用DNS服务器作为中间的“攻击放大器”,去攻击其它互联网上的主机,导致被攻击主机拒绝服务。

  4)DNS欺骗

  DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。

  原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。

  防止DNS被攻击的若干防范性措施

  互联网上的DNS放大攻击(DNS amplification attacks)急剧增长。这种攻击是一种数据包的大量变体能够产生针对一个目标的大量的虚假的通讯。这种虚假通讯的数量有多大?每秒钟达数GB,足以阻止任何人进入互联网。

  与老式的“smurf attacks”攻击非常相似,DNS放大攻击使用针对无辜的第三方的欺骗性的数据包来放大通讯量,其目的是耗尽受害者的全部带宽。但是,“smurf attacks”攻击是向一个网络广播地址发送数据包以达到放大通讯的目的。DNS放大攻击不包括广播地址。相反,这种攻击向互联网上的一系列无辜的第三方DNS服务器发送小的和欺骗性的询问信息。这些DNS服务器随后将向表面上是提出查询的那台服务器发回大量的回复,导致通讯量的放大并且最终把攻击目标淹没。因为DNS是以无状态的UDP数据包为基础的,采取这种欺骗方式是司空见惯的。

  这种攻击主要依靠对DNS实施60个字节左右的查询,回复最多可达512个字节,从而使通讯量放大8.5倍。这对于攻击者来说是不错的,但是,仍没有达到攻击者希望得到了淹没的水平。最近,攻击者采用了一些更新的技术把目前的DNS放大攻击提高了好几倍。

  当前许多DNS服务器支持EDNS。EDNS是DNS的一套扩大机制,RFC 2671对次有介绍。一些选择能够让DNS回复超过512字节并且仍然使用UDP,如果要求者指出它能够处理这样大的DNS查询的话。攻击者已经利用这种方法产生了大量的通讯。通过发送一个60个字节的查询来获取一个大约4000个字节的记录,攻击者能够把通讯量放大66倍。一些这种性质的攻击已经产生了每秒钟许多GB的通讯量,对于某些目标的攻击甚至超过了每秒钟10GB的通讯量。

  要实现这种攻击,攻击者首先要找到几台代表互联网上的某个人实施循环查询工作的第三方DNS服务器(大多数DNS服务器都有这种设置)。由于支持循环查询,攻击者可以向一台DNS服务器发送一个查询,这台DNS服务器随后把这个查询(以循环的方式)发送给攻击者选择的一台DNS服务器。接下来,攻击者向这些服务器发送一个DNS记录查询,这个记录是攻击者在自己的DNS服务器上控制的。由于这些服务器被设置为循环查询,这些第三方服务器就向攻击者发回这些请求。攻击者在DNS服务器上存储了一个4000个字节的文本用于进行这种DNS放大攻击。

  现在,由于攻击者已经向第三方DNS服务器的缓存中加入了大量的记录,攻击者接下来向这些服务器发送DNS查询信息(带有启用大量回复的EDNS选项),并采取欺骗手段让那些DNS服务器认为这个查询信息是从攻击者希望攻击的那个IP地址发出来的。这些第三方DNS服务器于是就用这个4000个字节的文本记录进行回复,用大量的UDP数据包淹没受害者。攻击者向第三方DNS服务器发出数百万小的和欺骗性的查询信息,这些DNS服务器将用大量的DNS回复数据包淹没那个受害者。

  如何防御这种大规模攻击呢?首先,保证你拥有足够的带宽承受小规模的洪水般的攻击。一个单一的T1线路对于重要的互联网连接是不够的,因为任何恶意的脚本少年都可以消耗掉你的带宽。如果你的连接不是执行重要任务的,一条T1线路就够了。否则,你就需要更多的带宽以便承受小规模的洪水般的攻击。不过,几乎任何人都无法承受每秒钟数GB的DNS放大攻击。

  因此,你要保证手边有能够与你的ISP随时取得联系的应急电话号码。这样,一旦发生这种攻击,你可以马上与ISP联系,让他们在上游过滤掉这种攻击。要识别这种攻击,你要查看包含DNS回复的大量通讯(源UDP端口53),特别是要查看那些拥有大量DNS记录的端口。一些ISP已经在其整个网络上部署了传感器以便检测各种类型的早期大量通讯。这样,你的ISP很可能在你发现这种攻击之前就发现和避免了这种攻击。你要问一下你的ISP是否拥有这个能力。

  最后,为了帮助阻止恶意人员使用你的DNS服务器作为一个实施这种DNS放大攻击的代理,你要保证你的可以从外部访问的DNS服务器仅为你自己的网络执行循环查询,不为任何互联网上的地址进行这种查询。大多数主要DNS服务器拥有限制循环查询的能力,因此,它们仅接受某些网络的查询,比如你自己的网络。通过阻止利用循环查询装载大型有害的DNS记录,你就可以防止你的DNS服务器成为这个问题的一部分。

 

 

Linux:如何参与一个GitHub开源项目?

本文是Github官方给出的参与Github上开源项目的一些指导,对希望加入开源社区的开发者是一个不错的参考。

Linux:如何参与一个GitHub开源项目?
Linux:如何参与一个GitHub开源项目?

最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势。而Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力。对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Github开源项目,只能说你开源了自己的项目,可以任别人自由下载。

那么该如何参与Github的开源项目呢?相信很多人都有这方面的疑问,网上也有一些参差不齐的教程教大家如何“Pull Request”、如何“Commit”等等。但这些教程往往不够全面或不够完全正确,搞不好可能让你陷入一个误区。鉴于此,前几天Github官方团队写了一篇很棒的文章 Contributing to Open Source on GitHub,专业指导大家如何参与Github的开源项目。 下面是 原文的翻译。


参与开源项目的最佳办法就是加入到你正在使用的已有项目上来。Github上有500多万开源项目,涉及到各个领域的技术,像 recipesHTML/CSSRubyAstrophysics等等。该指南将涵盖你在一个典型的项目中可能出现的事情以及如何为开源项目作出贡献。 

找项目

我们推荐你从已正在使用的或感兴趣的项目开始。这里有几个很棒的地方供你参考: 

 

 

一个典型的项目

下面是一些你在Github开源项目中可能遇到的因素。

The Community(社区)

项目通常会有一个社区维护,由不同角色(正规或非正规)的其他用户组成: 

  • 所有者(Owner):即创建该项目且在他们Github账户上有该项目的用户或组织。 
  • 维护者和协作者(Maintainers and Collaborators): 致力于一个项目并促进该项目发展的用户。通常所有者和维护者是同一个用户或组织,他们对项目库都有写的权限。 
  • 贡献者(Contributors):每一个对该项目发出过pull request并合并到项目中的用户都是贡献者。 
  • 社区成员(Community Members):即那些经常使用且非常关心该项目的用户,他们在讨论功能特征和pull request上非常活跃。

The Docs(文档)

一般项目中都有的文件。 

  • Readme:几乎所有的Github项目都包含一个README.md文件。readme提供了该项目的一个概览及关于如何使用、构建甚至如何贡献于一个项目的相关细节。
  • Contributing:项目和项目维护者不同,所以每个项目所期望的作贡献的最佳方法也会有所不同。一定要注意一个标注为CONTRIBUTING的文档,Contributing文档详细描述了一个项目的维护者希望看到贡献的补丁或功能应该符合怎样的规格。这可能包含要写什么测试,代码语法规范或补丁集中的区域。
  • License:一个LICENSE文件当然就是该项目的许可证了。一个开源项目的license会告诉用户他们能做和不能做的(例如使用、修改、重新发布),及告诉贡献者他们允许其他人做的。有许多的办法对开源项目加上许可证,你可以在 choosealicense.com读到更多的关于每个许可证的含义。
  • Documentation and Wikis:许多大型项目有的不只有一个readme来指导人么如何使用他们的项目。在这种情况下你通常能够发现一个指向库中名为“docs”的另一个文件或文件夹的链接。
Linux:如何参与一个GitHub开源项目?
Linux:如何参与一个GitHub开源项目?

另外,该库也可能使用Github wiki来代替文档。 

Linux:如何参与一个GitHub开源项目?
Linux:如何参与一个GitHub开源项目?

 

贡献于一个项目

既然你已经找到了理解该项目的相关资料,下面你就可以采取一些行动了。

建立一个话题

如果你发现了你正在使用的项目中的一个bug(但是你不知道怎么去修复它),或对文档有不解或对项目有疑问 — 那么创建一个话题吧!这非常容易且一般你不管创建什么话题,你都可能不是唯一一个出现该问题的人,所以其他人可能会发现你的话题很有帮助。关于更多的话题介绍,请查看我们的 Issues guide

话题专业提示

  • 在建话题之前检查已有的话题:话题重复对双方都无利,所以搜索整个正开放和已关闭的话题以检查你遇到的问题是否已经有人解决了。 
  • 务必对自己的问题有清晰的认识:期望的结果是什么?然而却发生了什么? 详细描述其他人如何重现该问题。
  • 在像 JSFiddle或 CodePen类似的平台上重现该问题并给出问题demo的链接。 
  • 包含一些系统相关的细节,比如用的什么浏览器、库或操作系统及版本号。 
  • 在你的话题或在 Gist里贴出你的错误输出或日志。如果在话题里贴出来,请用三个反引号“` 包围起来使得能够良好的呈现给大家。

Pull Request

如果你能够修复bug或自己添加功能 — 太棒了,请发一个pull request吧!确保你已经读过任何关于contributing的文档,且需要理解license以及已经签过CLA(如果需要的话)。一旦你提交了一个pull request,维护者就会将你的分支与已有的分支作比较来决定是否要合并(即pull in)你作的改动。

Pull Request专业提示

  • Fork 该项目库及将它clone到本地。通过添加为远程的方式在本地连接到原来的‘upstream’库。经常从‘upstream’库pull in改动以保持库最新,这样当你提交pull request时,就不大可能发生合并冲突了。点 这里看更多的指导细节。 
  • 为你的编辑单独建立一个分支 。
  • 务必清楚所出现的问题以及如何重现该问题或为什么你的功能有帮助。然后同样的要清楚做一些改变有哪些步骤。 
  • 最好测试一下。在任何已有的测试(如果存在)上运行你所做的改动并在必要时创建新的测试。不管测试存不存在,都要确保你的改动不会破坏已有的项目。 
  • 如果你的改动包含了HTML/CSS方面的不同,那么请包含改动前和改动后的截图。将你的图片拖放到你pull request的正文里。 
  • 尽你所能的在项目的风格上多做努力。这可能意味着使用不同于你自己Github库中采用的缩进,分号或注释,但是这让维护者更容易合并,也让其他人更容易理解和以后的维护。

Linux:如何参与一个GitHub开源项目?
Linux:如何参与一个GitHub开源项目?

开放的Pull Requests

一旦你打开一个pull request,就会有一个讨论,围绕你提出的改变作出探讨。其他的贡献者和用户可能会参与进来,但最终由维护者做决定。你可能会被要求对你的pull request做一些改变,如果这样,请给你的分支添加更多的commit并push它们 — 它们将自动的加入到已有的pull request里。

如果你的pull request被合并了——太好了!如果没被合并的话,也没什么大不了的,也许这不是项目维护者所期望看到的改动,亦或者他们已经致力于该bug或功能。这种情况有可能发生,所以我们的建议是:对收到的结果做出反馈,进一步努力然后再次pull request出去— 或者创建你自己的开源项目。

VIA GitHub & CSDN 博客

Linux:Perl开发者必须了解的14个资源

Perl语言虽在上月编程排名中跌至其历史最低点,不过Perl语言设计者Larry Wall表示,开发团队正在对Perl 6进行全力开发,使其更快、更强、更具可移植性和扩展性,我们整理了Perl开发者需要了解的14个资源,仅供参考。

Perl语言虽然在上月编程排名中跌至其历史最低点,不过Perl语言设计者Larry Wall在我们对其专访中表示,Perl开发团队正在对Perl 6进行全力开发,使其更快、更强、更具可移植性和可扩展性 ,“我们是放长线钓大鱼,Perl 6一定会笑到最后的。”
Linux:Perl开发者必须了解的14个资源
Linux:Perl开发者必须了解的14个资源
下面,我们整理了Perl开发者不得不了解的14个资源,希望对Perl开发者有用,仅供参考。
0. Programming Perl:Perl语言设计者Larry Wall亲自操刀,经典的大骆驼书,重点推荐。
1. Beginning Perl:Perl官方推出的一本适合Perl语言初学者的一本书。如果已有相关的编程经验,可以更加快速上手Perl。
2. CatalystFramework.org:一款开源的Perl MVC web框架,可帮助开发者快速开发web应用。
3. CPAN.org:CPAN是“Perl程序库”(Comprehensive Perl Archive Network)的英文单词缩写,包 含了约10万个模块。
4. Tutorials Point:教你如何用Perl来写软件包和模块,给出了详细教程。
5. EPIC:一款基于Eclipse平台的开源的Perl IDE(包括编辑器和调试器),支持Windows、Mac和Linux三个平台,非常适合Perl编程。
6.  Extreme Perl:关于如何使用Perl来极限编程的一本书。
7. Learn Perl:官方给出的Perl学习指南。
8. Learning Perl the Hard Way:《笨方法学Perl》,这是笨方法学习编程语言的系列之一。
9. Mason + Poet:Mason是用来生成HTML和其他动态内容、基于Perl的模板系统,Amazon.com也有所应用。
10. Perl 6官网:想知道目前Perl 6进展如何?那就来Perl 6官网看看吧。
11.  Perl Design Patterns Tiny Wiki:关于Perl语言的任何事情,在这里都有记录。
12. Perl Object Oriented Programming:教你用Perl来面向对象编程。
13. Perl Regular Expressions:你需要知道的关于Perl正则表达式的基本知识。
相关链接:

via : http://code.csdn.net/news/2819314

Linux:在Ubuntu内使用声音切换器简单切换音频源

Linux:在Ubuntu内使用声音切换器简单切换音频源
Linux:在Ubuntu内使用声音切换器简单切换音频源

声音切换器是由Dmitry Kann开发的小程序。这个程序的目的很简单,让你在不同的音频源如喇叭、耳机和HDMI之间点击两下鼠标就能切换。

你可能会说“没什么大不了”。毕竟它不是火箭科学。你可以进入系统设置> 声音设定 并且可以简单地选择你想要的输入输出源。声音切换器没有做新的或者Ubuntu没有提供的功能,它只是简化整个过程。我想这可能是为什么这个没有列在最佳Ubuntu指示器程序中的原因。

你多久需要改变音频源?对于我来说,我不得不在每次从外部监视器的HDMI获取声音时切换音频源。并且我不得不在拔掉HDMI线时重新这么做。这个小程序指示器对于像我这样经常切换音频源又懒的人是很方便的。

在Ubuntu中安装音频切换器:

打开一个终端并且使用下面的命令在Ubuntu中安装音频切换器:

sudo apt-add-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher

重要提示:

音频切换器不会自动启动。为了自动启动,你要把它加到启动程序中。打开启动程序并点击添加。这里,给它一个名字,比如就称声音切换器,并是在命令部分使用 “indicator-sound-switcher”(没有引号)。如果你在加入启动程序遇到问题时请告诉我。

你认为音频切换器怎么样?像这样的小程序对用户有好处么?让我们知道你的看法。


via: http://itsfoss.com/sound-switcher-indicator-ubuntu/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2862-1.html

Linux:[大图] Linux 命令黑白备忘录

在你的桌面上保留一份打印的备忘录,我保证你会很快学会并成为一个专家。我们已经同时加入pdf和图片(png)两种格式的备忘录。如果你需要我们加入更多命令请保留我们的文章。命令依据它们的用途被分类成13类。我们将命令设计在如我们经常使用的linux shell那样的黑底白字。我们还加入了一些红色来提升注意。:-)

Linux:[大图] Linux 命令黑白备忘录
Linux:[大图] Linux 命令黑白备忘录

 原图大小:2551×3768,点击查看大图

PDF版本在此


via: http://linoxide.com/linux-command/linux-commands-cheat-sheet/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2863-1.html

Linux:数据流处理命令

Linux:数据流处理命令
Linux:数据流处理命令

1. awk:文本和数据处理工具

awk擅长于对数据进行分析并生成报告,简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

使用方法:awk ‘{pattern + action}’ {filenames}  

其中pattern 表示awk 在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。pattern就是要表示的正则表达式,用斜杠括起来。准备实例操作文件:netstat  -t >> netstat.txt

1.1 打印输出:

print,格式化打印输出:printf

awk '{print$1, $4}' netstat.txt
awk '{printf "%-8s %-8s %-8s %-18s %-22s %-15sn",$1,$2,$3,$4,$5,$6}' netstat.txt

1.2 过滤记录:

awk '$3==0 && $6=="LISTEN"' netstat.txt

其中的“==”为比较运算符。其他比较运算符:!=,>, <, >=, <=

awk '$3>0 {print $0}' netstat.txt

加入表头:内建变量NR

awk '$3==0 && $6=="LISTEN" || NR==1 ' netstat.txt

再加上格式化输出                     

awk '$3 ==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %sn",$4,$5,$6}' netstat.txt

ps:awk的内建变量

$0        当前记录(这个变量中存放着整个行的内容)
$1~$n        当前记录的第n个字段,字段间由FS分隔
FS        输入字段分隔符默认是空格或Tab
NF        当前记录中的字段个数,就是有多少列
NR        已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。
FNR        当前记录数,与NR不同的是,这个值会是各个文件自己的行号
RS        输入的记录分隔符,默认为换行符
OFS        输出字段分隔符,默认也是空格
ORS        输出的记录分隔符,默认为换行符
FILENAME        当前输入文件的名字

输出行号:

awk '$3 ==0 && $6=="ESTABLISHED"|| NR==1 {printf "%02s %s %-20s %-20s %sn",NR, FNR,$4,$5,$6}' netstat.txt

指定分隔符:

awk 'BEGIN{FS=":"} {print $1,$3,$6}' /etc/passwd

或者awk -F:

'{print $1,$3,$6}' /etc/passwd

以t作为分隔符输出:

awk -F: '{print $1,$3,$6}' OFS="t" /etc/passwd

1.3 字符串匹配:

~表示匹配模式开始,正则表达式匹配。

awk '$6 ~ /TIME/ || NR ==1 {print NR,$4,$5,$6}' OFS="t" netstat.txt
awk '$6 ~ /ESTABLISHED/ || NR==1 {print NR,$4,$5,$6}' OFS="t" netstat.txt
awk '/LISTEN/' netstat.txt

使用“/TIME|ESTABLISHED/” 来匹配TIME 或者ESTABLISHED :

awk '$6 ~ /FIN|TIME/ || NR==1 {print NR,$4,$5,$6}' OFS="t" netstat.txt

模式取反:!~

awk '$6 !~ /TIME/ || NR==1 {print NR,$4,$5,$6}' OFS="t" netstat.txt

或者awk ‘!/WAIT/’ netstat.txt

1.4 拆分文件:

使用数据流重定向”>”

awk 'NR!=1 {print > $6}' netstat.txt      NR!=1表示不处理表头

把指定的列输出到文件:  

awk 'NR!=1{print $4,$5 > $6}' netstat.txt

使用程序流进行条件拆分:if else

awk 'NR!=1{if($6 ~ /TIME|ESTABLISHED/) print > "1.txt";
else if($6 ~ /LISTEN/) print > "2.txt";
else print > "3.txt"}' netstat.txt

1.5 统计

计算所有的C文件,CPP文件和H文件的文件大小总和:

ls -l *.cpp *.c*.h | awk '{sum+=$5} END {print sum}'

统计各个connection状态的用法:使用数组

awk 'NR!=1{a[$6]++;} END {for (i in a) print i ", " a;}' netstat.txt

统计每个用户的进程的占了多少内存:

ps aux| awk 'NR!=1{a[$1]+=$6;} END { for(i in a) print i ", " a"KB";}'

数组:因为awk中数组的下标可以是数字和字母,数组的下标通常被称为关键字(key)。值和关键字都存储在内部的一张针对key/value应用hash的表格里。由于hash不是顺序存储,因此在显示数组内容时会发现,它们并不是按照你预料的顺序显示出来的。数组和变量一样,都是在使用时自动创建的,awk也同样会自动判断其存储的是数字还是字符串。一般而言,awk中的数组用来从记录中收集信息,可以用于计算总和、统计单词以及跟踪模板被匹配的次数等等。

1.6 使用脚本进行文本、数据处理

BEGIN、END关键字:BEGIN表示处理所有行之前的标识,END表示处理完所有行后的标识,具体语法:

BEGIN { 这里面放的是执行前的语句}

END {这里面放的是处理完所有的行后要执行的语句}

{这里面放的是处理每一行时要执行的语句}

实例操作文件:cat cal.awk

#!/bin/awk -f
#运行前
BEGIN {
   math= 0
   english= 0
   computer= 0
   printf"NAME    NO.     MATH  ENGLISH  COMPUTER   TOTALn"
   printf"---------------------------------------------n"
}
#运行中
{
   math+=$3
   english+=$4
   computer+=$5
   printf "%-6s %-6s %4d %8d %8d %8dn", $1, $2, $3,$4,$5, $3+$4+$5
}
#运行后
END{
   printf"---------------------------------------------n"
   printf "TOTAL:%10d %8d %8d n", math, english, computer
   printf "AVERAGE:%10.2f %8.2f %8.2fn", math/NR, english/NR,computer/NR
}

执行:awk -f cal.awk score.txt

1.7 变量声明和环境变量:

使用-v参数进行变量声明,ENVIRON关键字表示环境变量

$ x=5
$ y=10
$ export y                          #y被export为环境变量
$ echo $x $y
5    10
$awk -v val=$x '{print $1, $2, $3, $4+val, $5+ENVIRON["y"]}' OFS="t" score.txt

Linux:安装Ubuntu 14.04后要做的5件事情

Ubuntu最新版本Ubuntu 14.04已经发布,它是一个长期支持版本(LTS),提供软件包和安全更新的服务周期为5年。本文为大家简单介绍了Ubuntu 14.04版本新特性和安装Ubuntu 14.04后需要做的5件事情,以供参考。

Ubuntu目前是世界上最流行的Linux操作系统,它提供了桌面版本和服务器版本,其他流行的Linux发行版本如Linux Mint也是基于Ubuntu定制而来。

ubuntu-logo

Ubuntu的最新版本Ubuntu 14.04已经发布,它是一个长期支持版本(LTS),提供软件包和安全更新的服务周期为5年。本文为大家简单介绍了Ubuntu 14.04版本新特性和安装Ubuntu 14.04后需要做的5件事情,以供参考。

Ubuntu 14.04,版本代号“Trusty Tahr”,译为“值得信赖的 塔尔羊”,表达了Ubuntu 14.04追求恒久稳定的目标。

Linux:安装Ubuntu 14.04后要做的5件事情
Linux:安装Ubuntu 14.04后要做的5件事情

塔尔羊 

一、Ubuntu 14.04主要新特性

  • 搭载了较新的内核版本Linux Kernel 3.13.8;
  • 允许关闭顶部栏的全局菜单;
  • 新的菜单模式:Locally Integrated Menu(LIM),它会在窗口非最大化时显示,目前还不是默认的菜单模式,你可以尝试将鼠标移动到窗口的顶部面板来尝试下功能,它会自动显示;
  • 改进对Ubuntu Touch APP的支持;
  • 锁屏:界面改进,同时锁屏更加快捷。

二、安装Ubuntu 14.04后要做的5件事情

1. 安装Ubuntu应用提示器

应用提示器(AppIndicator),类似插件的形式,可以让Ubuntu系统使用起来更加方便。Ubuntu系统本身也搭载了基本的应用提示器,如用来显示日期与时间、登录用户等。下面,我们为您推荐几款常用的:

日历:支持新建活动,支持与Google日历同步; 

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install calendar-indicator

Pidgin消息提示器:与即时交流工具Pidgin搭配使用,方便调整Pidgin状态; 

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install pidgin-indicator

天气:My Weather Indicator,方便显示天气状况; 

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install my-weather-indicator

CPU频率提示器:可动态调整CPU频率;

sudo apt-get install indicator-cpufreq

更多的应用提示器,大家可以在Ubuntu软件中心搜索并安装。

2. Unity桌面环境调整

Unity是Ubuntu自己打造的桌面环境,有人认为Unity桌面环境糟糕的设计使很多Ubuntu用户不满,使其转向Linux Mint等非Unity系列系统。

  • Unity优化工具:Unity Tweak Tool,可用来调整外观设置、鼠标、Unity启动器、窗口行为等选项,可直接在Ubuntu软件中心搜索安装或使用命令: sudo apt-get install unity-tweak-tool 
  • 隐私设置:Ubuntu默认在其控制面板中显示用户最近访问的文件,可在“系统设置-安全与隐私”中进行调整。
  • 禁止显示在线搜索结果:可在Dash中点击需要禁用的插件,选择“禁用”即可。
  • 禁止显示购物建议:可在终端执行命令禁用,命令如下: 
gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']"

3. 安装驱动和多媒体编解码器

目前Steam已经推出Ubuntu的客户端,如果你想在游戏中获得较佳画面体验,需要安装对应你显卡型号的最新Linux驱动,可打开“软件和更新”工具,点击“附加驱动”标签安装启用。

Ubuntu由于版权问题,默认没有安装多媒体的编解码器,我们可以从Ubuntu软件中心搜索安装“Ubuntu resticted extras ”软件包。

4. 其他应用程序推荐

Ubuntu 14.04并没有搭载所有优秀软件(开源和非开源),我们还需要手动安装才行。下面,我们为大家推荐一些常用软件,以供参考:

  • Google Chrome:网络浏览器,使用Google帐号一键同步所有数据;
  • VLC:万能播放器,支持多种音视频格式;
  • Dropbox:云存储服务客户端;
  • WPS for Linux:虽然还没有发布正式版本,但相比自带的LibreOffice,相信会更加符合国人习惯;
  • Pidgin:即时交流工具,支持Gtalk、Twitter等,有由社区爱好者开发的WebQQ插件;
  • qBittorrent:BT下载工具,还能搜索网络资源;
  • Inkscape:矢量作图工具;
  • GIMP:Linux下的PhotoShop;
  • Wine:可以用来模拟运行Windows下优秀的软件,其商业版本为CrossOver
  • Emacs/GVim:优秀的文本编辑器和集成开发环境;
  • 搜狗输入法Linux版本:UbuntuKylin团队与搜狗输入法合作开发的搜狗输入法Linux版本已经推出,下载地址: http://pinyin.sogou.com/linux/

5. 体验Ubuntu 14.04!

用它来学习、办公,这才是最重要的。每次版本发布都是一次狂欢,请在热切的追逐之下,保持一颗冷静的心;关键不是你更新了多少新包,而是你用这些软件包都做了些什么。

提示,部分Ubuntu用户可能并不是从头重新安装Ubuntu 14.04,而是选择从较低的Ubuntu版本升级到Ubuntu 14.04,可尝试下面的升级命令(做好备份):

sudo apt-get install update-manager-coresudo do-release-upgrade -d

附:Ubuntu 14.04国内下载镜像(部分)

Ubuntu其他版本下载: 

via : http://code.csdn.net/news/2819356 

Linux:在 Linux/UNIX 终端下使用 nload 实时监控网络流量和带宽使用

如果你想在命令行界面监控网络吞吐量,nload 应用程序是个不错的选择。它是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量、最小/最大网络带宽使用量等附加信息。

安装

在 CentOS/RHEL/Red Hat/Fedora Linux 上安装 nload

首先在 CentOS 或者基于 RHEL 的操作系统上启用 EPEL 仓库,然后键入 yum 命令安装 nload:

# yum install nload

在 Debian 或者 Ubuntu Linux 上安装 nload

键入 apt-get 命令

$ sudo apt-get install nload

在 FreeBSD 操作系统上安装 nload

通过 port 安装 nload,键入:

# cd /usr/ports/net/nload/ && make install clean

或者添加包

# pkg install net/nload

在 OpenBSD 操作系统上安装 nload

键入下列命令:

$ sudo pkg_add -i nload

在类 Unix 操作系统上从源代码安装 nload

首先,使用 wget 或者 curl 命令获取源代码:

$ cd /tmp
$ wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz

使用 tar 命令解压缩名为 nload-0.7.4.tar.gz 的 tar 包,键入:

$ tar xvf nload-0.7.4.tar.gz

使用 cd 命令进入 nload 源代码所在目录:

$ cd nload*

然后键入 ./configure 为你的操作系统配置安装包:

$ sh ./configure

或者

$ ./configure

运行 configure 命令需要一点时间。完成后,使用 make 命令编译 nload:

$ make

最后,键入 make install 命令以 root 用户身份安装 nload 应用程序和相关文件:

$ sudo make install

或者

# make install

使用

如何使用 nload 显示当前网络使用量呢?

基本语法是:

nload
nload device
nload [options] device1 device2

键入下列命令:

$ nload
$ nload eth0
$ nload em0 em2

会得到输出:

Fig. 01: nload command in action

图01: 使用 nload 命令

操控 nload 应用程序

nload 命令一旦执行就会开始监控网络设备,你可以使用下列快捷键操控 nload 应用程序。

  1. 你可以按键盘上的 ← → 或者 Enter/Tab 键在设备间切换。
  2. 按 F2 显示选项窗口。
  3. 按 F5 将当前设置保存到用户配置文件。
  4. 按 F6 从配置文件重新加载设置。
  5. 按 q 或者 Ctrl+C 退出 nload。

设置显示刷新间隔

默认每 100 毫秒刷新一次显示数值,下面的例子将时间间隔设置成 500 毫秒:

$ nload -t {interval_number_in_millisec}
$ nload -t 500

输出:

Animated gif 01 - nload command in action

GIF 动画 01 – 使用 nload 命令

设置流量数值显示的单位

语法如下:

$ nload -u h|H|b|B|k|K|m|M|g|G
$ nload -U h|H|b|B|k|K|m|M|g|G
$ nload -u h
$ nload -u G
$ nload -U G

释义:

  • 小写选项 -u: h 意为自动格式化为人类易读的单位,b 意为 Bit/s,k 意为 kBit/s,m 意为 MBit/s,g 意为 GBit/s。大写字母意为使用 Byte 替代 Bit。默认为 k。
  • 大写选项 -U 与小写选项 -u 非常相似,不同之处在于它展示的是数据量,比如 Bit, kByte, GBit 等等。(没有 “/s”)。默认值是 M。

结论

我觉得 nload 是一个稳定可靠的应用程序,如果你喜欢 nload,你可能也想试试 Linux 和其他类 Unix 操作系统环境下的 vnstat 与 iftop 工具。


译自: http://www.cyberciti.biz/networking/nload-linux-command-to-monitor-network-traffic-bandwidth-usage/

译者:blueabysm 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2871-1.html

Linux:Ubuntu每日小技巧 – HPLIP 3.14.3发布 – 在Ubuntu中升级

HP Linux成像和打印(HPLIP)是由惠普赞助提供全功能的HP打印机驱动程序的Linux社区的开放源代码包。

安装这个包后将默认在Ubuntu和其他Linux发行版完整中支持数以千计的HP打印机。支持的打印机数量正在定期添加,目前已经超过2,300台HP打印机

这个版本,3.14.3增加了对更多打印机的支持,包括HP DeskJet Ink Advantage 4640 e-All-in-One Printer 系列,HP LaserJet Pro MFP M126nw,支持Debian 6.0.9,7.3,7.4 以及Fedora 20。

除了增加新的打印机和系统的支持,一些突出的问题在这个版本中也被解决。修复程序包括,HP Officejet 6100的功能定位问题,阻止第二传真队列中的互动问题,以及HP OfficeJet 7619 系列缺少No’ 6 3/4信封媒介尺寸。

关于这次发布的更多信息,请查看发布页面http://sourceforge.net/p/hplip/news/2014/03/hplip-3143-public-release-/

以下是新支持的HP打印机的完整列表:

  • HP DeskJet Ink Advantage 4640 e-All-in-One Printer series
  • HP DeskJet Ink Advantage 4645 e-All-in-One Printer
  • HP DeskJet Ink Advantage 4646 e-All-in-One Printer
  • HP DeskJet Ink Advantage 4648 e-All-in-One Printer
  • HP LaserJet Pro MFP M125a
  • HP LaserJet Pro MFP M125nw
  • HP LaserJet Pro MFP M125rnw
  • HP LaserJet Pro MFP M126a
  • HP LaserJet Pro MFP M126nw
  • HP LaserJet Pro MFP M127fp

安装/升级到这个版本,请在键盘上按Ctrl – Alt – T,打开终端。当它打开时,运行下面的命令来下载该软件包。

wget http://prdownloads.sourceforge.net/hplip/hplip-3.14.3.run

之后,运行以下命令来进行安装。

sh hplip-3.14.3.run

安装时,按照向导来指导你。这是很简单的。对于一个完整的一步一步的安装引导,请查看这个帖子了。

http://www.liberiangeek.net/2013/02/hp-linux-imaging-and-printer-hplip-version-3-13-2-releasedadds-support-for-more-printers/

安装完成之后,请重启你的电脑。

Linux:Ubuntu每日小技巧 – HPLIP 3.14.3发布 – 在Ubuntu中升级
Linux:Ubuntu每日小技巧 – HPLIP 3.14.3发布 – 在Ubuntu中升级

via: http://www.liberiangeek.net/2014/03/daily-ubuntu-tips-hplip-3-14-3-released-upgrade-in-ubuntu/

译者:乌龙茶 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2885-1.html

Linux:在终端上访问网站和下载文件

Linux 命令行工具很牛逼,Linux 命令行以及一些第三方应用让 Linux 变得更牛逼。Linux 命令行工具可以用于下载种子和文件,可以上网冲浪。

Linux:在终端上访问网站和下载文件
Linux:在终端上访问网站和下载文件

本文推荐的5个强悍的上网工具方便实用,是居家旅行的必备物品。

1. rTorrent

rTorrent 基于文本的 Torrent 客户端,用 C++ 调制而成,我们的目标是高性能!我们可运行在标准的 Linux 发行版中,包括 FreeBSD 和 Mac OS X。

安装 rTorrent

# apt-get install rtorrent    (基于 APT 的系统,如 Debian,Ubuntu)
# yum install rtorrent        (基于 YUM 的系统,如 RHEL,Fedora)

检查有没有安装成功,运行下面命令试试:

# rtorrent
Linux:在终端上访问网站和下载文件
Linux:在终端上访问网站和下载文件

rTorrent 的用法

下面是 rTorrent 比较常用的功能:

  • CTRL+ q – 退出 rTorrent。
  • CTRL+ s – 开始下载。
  • CTRL+ d – 暂停下载任务,或删除己被暂停的下载任务。
  • CTRL+ k – 关闭一个正在下载的任务
  • CTRL+ r – 在开始上传、下载之前,使用 Hash 检查文件,确保文件的完整性。
  • CTRL+ q – 按再次这个组合键,rTorrent 无条件退出。
  • Left Arrow Key – 回退到上个页面。
  • Right Arrow Key – 前进到下个页面。

2. Wget

Wget 是一个 GNU 项目,它的名称参考了 World Wide Web (WWW)。Wget 在递归下载方面做得很好,你可以将整个网站的内容都下到本地,然后访问本地的 HTML 文件。它支持多种操作系统:Windows,Mac,Linux。它支持多种协议,可通过 HTTP,HTTPS 和 FTP 下载文件。它可以对整个网站做一个镜像(完全将目标网站的文件下载到本机),支持代理,支持断点传输(即下载可暂停)。

安装 Wget

Wget 也是一个 GNU 项目,在标准 Linux 发行版中都有内置,就是说你不用下载安装它就可以使用了。万一,它没有被默认安装,你也可以通过 APTYUM 安装。

# apt-get install wget    (基于 APT 的系统,如 Debian,Ubuntu)
# yum install wget        (基于 YUM 的系统,如 RHEL,Fedora)

Wget 的用法

下载一个文件:

# wget http://www.website-name.com/file

下载整个网站:

# wget -r http://www.website-name.com

下载指定类型的文件(比如 PDF 和 PNG):

# wget -r -A png,pdf http://www.website-name.com

下面是一张 Wget 的截图,我们正在把 Yahoo.com 网站整个都镜像下来。

Linux:在终端上访问网站和下载文件
Linux:在终端上访问网站和下载文件

关于 wget 的更多用法,参考Wget 的10个的用法

来源:https://linux.cn/article-2889-1.html

Linux:分享20篇Linux入门教程

需要学习Linux但是不知道怎么开始?没事,因特网充满了数不尽的资源和教程,他们可以让你一步一步地享受体验Linux的精华之旅。所有必须要做的是选择那个适合你的教程,然后开始你的Linux之旅!

Linux:分享20篇Linux入门教程
Linux:分享20篇Linux入门教程

1. Linux Knowledge Base and Tutorial

这篇教程不仅仅是基础知识,还提供给你了解Linux系统的必要的知识。

2. HowtoForge – Linux Howtos and Tutorials

由多篇教程组成:包括如何转换Outlook PST 到 Thunderbird/Evolution兼容的SBD格式;如何准备一个CentOS 5.10 x86_64架构的服务器来安装ISPconfig 3 以及其他等等。

3. UNIX / Linux Tutorial for Beginners

Unix 和 linux 的新手指导教程。8个简单的教程,覆盖了UNIX/Linux的基础命令。

4. Linux Shell Scripting Tutorial – A Beginner’s handbook

这篇教程设计给新手,那些想要学习shell脚本/编程并且介绍了一些给力的工具,如awk,sed,等等。

5. LinuxCommand.org: Learn the Linux command line. Write shell scripts

为新的命令行用户设计。它出版的《The Linux Command Line》一书多达537页,增加了大量的细节,采用CC协议,可以从此下载。除了基础的命令行使用和shell脚本,这篇文章还包含了大量编程使用的命令章节,也有很多高级主题。

6. bash commands – Linux MAN Pages

7. Linux Online – Getting Started with Linux: Table of Contents

介绍所有频繁使用的linux术语

8. The Linux Documentation Project: Guides

这个教程的目标是关联所有Linux文档所关心的问题,范围从在线文档(man page,HTML,等等)到印刷的手册,包括,如安装,使用,和运行linux的话题。

9. LinuxCommand.org: Learning the shell

这篇文章是介绍shell的。

10. The Linux Documentation Project

提供免费,高质量的Linux操作系统文章

11. Linux Tutorial

这个网页有免费的linux学习课程,一个特别的Unix版本运行在普遍的个人电脑上。

12. Linux Network Configuration

这个Linux教程包含TCP/IP 网络,网络管理和系统配置基础。

13. Linux Online – Getting Started with Linux – Introduction

14. Linux Commands – A practical reference

这是关于linux命令行常见操作参考手册。

15. 20 Linux System Monitoring Tools Every SysAdmin Should Know

提供工具解决服务器瓶颈问题,与之相关的CPU,内存,硬盘和网络子系统。

16. Linux Newbie Guide: Shortcuts And Commands

选择介绍了linux中实用的命令。

17. Debian Linux Tutorial

这个指导界面带你领略,如何安装Debian Linux操作系统,和在一个系统中建立一个最常见的互联网和局域网服务器。

18. YoLinux: Index of Linux Tutorials

Linux教程和技术关于Linux桌面和服务器配置的信息和实例。无论新手或者专家都适合的在线Linux技术培训和Linux应用安装,配置和使用。

19. Linux Tutorial

这个页面打算作为一个教程,而不是作为一步一步的指令或者一个提供给你链接到其他Linux网页的地方。

20. Linux Online – Linux Courses


via: http://www.efytimes.com/e1/fullnews.asp?edid=132962

译者:Vic020 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2890-1.html

Linux:少有人知的 GitHub 使用技巧

GitHub 大家常上吧?可是使用 GitHub 的各种小窍门你就不一定知道了。本文将各种使用 GitHub 的小窍门分享给大家。

Linux:少有人知的 GitHub 使用技巧
Linux:少有人知的 GitHub 使用技巧

diff时忽略空格

有些修改只是增减了空格,在URL中添加?w=1就可以忽略。

Linux:少有人知的 GitHub 使用技巧
Linux:少有人知的 GitHub 使用技巧

查看某个作者的提交历史

在URL中添加?author=username,例如:

https://github.com/rails/rails/commits/master?author=dhh
Linux:少有人知的 GitHub 使用技巧
Linux:少有人知的 GitHub 使用技巧

比较版本

使用类似如下的URL比较分支:

https://github.com/rails/rails/compare/master...4-1-stable
Linux:少有人知的 GitHub 使用技巧
Linux:少有人知的 GitHub 使用技巧

同样可以使用一下格式:

https://github.com/rails/rails/compare/master@{1.day.ago}...master
https://github.com/rails/rails/compare/master@{2014-10-04}...master

如果想和派生仓库比较,加上派生仓库名作前缀即可:

https://github.com/rails/rails/compare/byroot:master...master

通过 HTML 方式嵌入 Gist

Gists是 GitHub 推出的基于 Git 的代码片段服务。Gists页面提供JavaScript代码,可以将 Gist 嵌入到其他站点。但是很多站点粘贴 JavaScript 无效,这时候你可以在 Gist URL 后附加.pibb,得到一个纯 HTML 的版本,然后就可以复制粘贴 HTML 源码到其他网站了。例如 https://gist.github.com/tiimgreen/10545817.pibb

Git.io

Git.io 是适用于 GitHub 的短网址服务。

当然,为了方便,也可以使用Curl访问:

$ curl -i http://git.io -F "url=https://github.com/..."
HTTP/1.1 201 Created
Location: http://git.io/abc123
$ curl -i http://git.io/abc123
HTTP/1.1 302 Found
Location: https://github.com/...

你甚至可以指定短网址的字段:

$ curl -i http://git.io -F "url=https://github.com/technoweenie"
    -F "code=t"
HTTP/1.1 201 Created
Location: http://git.io/t

高亮行

例如,在 URL 中加上 #L52 可以高亮第52行。或者你也可以直接点击行数。

多行高亮同样支持。你可以使用类似#L53-L60格式,或者在按住shift的同时点击。

https://github.com/rails/rails/blob/master/activemodel/lib/active_model.rb#L53-L60
Linux:少有人知的 GitHub 使用技巧
Linux:少有人知的 GitHub 使用技巧

快速引用

你可以选中别人的评论文字,然后按r,这些内容会以引用的形式被复制在文本框中:

Linux:少有人知的 GitHub 使用技巧
Linux:少有人知的 GitHub 使用技巧

任务列表

在工单或合并请求中,你可以使用任务列表语法:

- [ ] Be awesome
- [ ] Do stuff
- [ ] Sleep
Linux:少有人知的 GitHub 使用技巧
Linux:少有人知的 GitHub 使用技巧

勾选之后,会更新 Markdown:

- [x] Be awesome
- [x] Do stuff
- [ ] Sleep

合并请求的 diff 和 patch

可以在 URL 后添加 .diff 和 .patch,以对应的模式查看合并请求:

https://github.com/tiimgreen/github-cheat-sheet/pull/15
https://github.com/tiimgreen/github-cheat-sheet/pull/15.diff
https://github.com/tiimgreen/github-cheat-sheet/pull/15.patch

结果是纯文本的:

diff --git a/README.md b/README.md
index 88fcf69..8614873 100644
--- a/README.md)
+++ b/README.md
@@ -28,6 +28,7 @@ All the hidden and not hidden features of Git and GitHub. This cheat sheet was i
 - [Merged Branches](#merged-branches)
 - [Quick Licensing](#quick-licensing)
 - [TODO Lists](#todo-lists)
+- [Relative Links](#relative-links)
 - [.gitconfig Recommendations](#gitconfig-recommendations)
     - [Aliases](#aliases)
     - [Auto-correct](#auto-correct)
@@ -381,6 +382,19 @@ When they are clicked, they will be updated in the pure Markdown:
 - [ ] Sleep
(...)

编撰 SegmentFault参考 github-cheat-sheet 

via : http://segmentfault.com/a/1190000000475547 

Linux:5 个不用 Bootstrap 的理由

在以前我们的博客文章中,我们讨论了在web设计和开发项目中使用Twitter Bootstrap的好处。

Twitter Bootstrap也有很多的缺点。让我们看看这些主要的问题:

Linux:5 个不用 Bootstrap 的理由
Linux:5 个不用 Bootstrap 的理由

1. 它不遵循最佳实践

我们在使用Twitter Bootstrap时遇到的最大问题之一是你的DOM元素上将拥挤大量的类。这打破了良好的web设计基本规则之一,HTML不再有语义,而且内容和表示不再分离。前端纯粹主义者会觉得这相当令人讨厌,以为它使可扩展性、重用性和维护性遇到了更大的挑战。表示和交互不再独立于内容在Twitter Bootstrap中也被进一步的强化。

A snapshot of some HTML from one of the Twitter Bootstrap templates.

哦,如此多不必要的类!

2. 它将与我现有设置发生碰撞

如果你被空投到一个干了一半的大项目中,想要使用 Twitter Bootstrappy 享受其所有的好处会如何呢?糟糕的是,你会碰到一大堆的问题,冲突首先会从生成 HTML、CSS和JavaScript 开始。然后是它们的资源,你必须深入项目中那些阴暗的角落,搞清楚哪些脚本和样式需要删除或替换。Twitter Bootstrap 会潜在创建额外的工作,当你深入项目会不可避免地发现和修复奇怪的错误,你为自己辩护的理由将会击败你优先选用它的目的。

3. Twitter Bootstrap 太重

坦率的说,Twitter Bootstrap包括126kb的CSS和29kb的JavaScript。如果你想要使用Twitter Bootstap的所有功能,你应该好好考虑资源的加载时间。当然,对于一些地方这可能不是问题,但是在新西兰互联网不得不横跨太平洋,这时数据达到那儿将是很缓慢的。因此考虑你的目标市场。Twitter Bootstrap将帮助你建立一个有吸引力的、响应式的网站,但是一些手机用户将因为缓慢的加载时间和消耗电量的脚本而别拒之门外。

4. 不支持SASS

可能是最大的争论之一,BootStrap使用Less构建,原生不支持CompassSASS。现在请不要误会我的意思,Less是好的,我以前使用它,它肯定有它的优点。但是SASS是更好的,带有一个类似于Compass的框架,使用它好像完全不需要过多的考虑。一些人建立了Compass gem的Bootstrap,但是坦率的说,你将不得不使用Less。在将来的文章中,我将更多的讨论SASS和Less。与此同时,Chris Coyier已经写了一篇文章比较两者。

5. “晕!我的新网站看起来和其他人一个样!”

Twitter Bootstrap 超级受欢迎,因此几乎每个开发者都会使用它。虽然它以后当然可以自定义你的应用或网站设计,你会发现时间限制迫使你坚持使用大量的 vanilla Bootstrap 风格。这会导致无意中创造了很多类似的,通用和难忘的网站。因为使用 Twitter Bootstrap 现成的是很快速和容易的,结果创新往往被丢弃了。当你有紧迫的时间限制时,在 Bootstrap 的结构化环境中,与众不同的创新设计很难实现。

参与翻译(3人):地狱星星赵亮-碧海情天andylam

via : http://www.oschina.net/translate/5-reasons-not-to-use-twitter-bootstrap

Linux:PHP语言需要避免的10大误区

PHP是一种非常流行的开源服务器端脚本语言,你在万维网看到的大多数网站都是使用php开发的。但是,你大概很奇怪的注意到有少部分的人发誓要离php远远的。但是令人更奇怪的是或者很震惊的说他们不用php是因为一些被证实的语言缺点。他们决定不用php,是因为误解。

是的,你读到的那些是误解。

让我们看看这些误解是:

1. PHP是一种面向对象语言,但面向对象并不彻底

这完全不对。所有认为php不是彻底面向对象的程序员,尤其是Java程序员,都需要上一个PHP的基础培训;他们会发现PHP中大量面向对象的特性。例如:接口、方法、抽象类等等。我同意早期的PHP版本确实不支持太多面向对象的特性,但PHP5已经有强大的面向对象支持。而且,你一定想不到编码在PHP中会变得如此简单,那是因为PHP和面向对象结合的原因。 所以,消除这个误解吧。

2.PHP无法实现特定功能

我很清楚这种表述很含糊,但是我不能想出任何更好的说法。这是一个很含糊的误解,开发人员认为PHP不能帮助他们实现一些诸如内存访问的功能或者一些PHP主要发行版没有提供支持的功能。但事实是PHP是一种可扩展的语言,所以你需要做的是用C或者C++编码,然后创建对应的扩展。

Linux:PHP语言需要避免的10大误区
Linux:PHP语言需要避免的10大误区

其实,你根本不需要自己动手去创建扩展,因为这里已经有数以百计的可用扩展。你唯一需要做的就是去寻找它们。

3.PHP 是不安全的

开发者对PHP的另外一个误解就是PHP网站和应用是不安全的。但是,为什么你会希望它在默认情况下是安全,为什么不编写安全的代码? 我知道这里一直存在很多不安全的PHP代码,因为最初的学习曲线是简单的而且很容易上手。所以,作为一个开发者,你需要使它尽可能的安全。

.Net可以帮助你在默认情况下是安全的,相比之下PHP确实缺少很多。但是如果你是一个训练有素的程序员,那么你其实不要默认情况的安全帮助。Include通常是安全的,但是你需要要小心。如果它们的路径是动态生成的,对指令的透彻理解可以帮助你让代码更安全。

4. 它不能适应大型应用

大型复杂应用需要建立在自身可靠和高性能的语言之上,这是PHP在一定程度上所没有的。但是,如果你设计和开发的应用程序架构稳定,为什么你会对它的性能和可扩展性有疑问呢? 事实上一些顶尖网站,如Facebook、维基百科和雅虎等等,都是基于PHP构建的,就像我们所想的那样,这些巨型网站都工作的很好。

5. PHP只能用于网站开发

这也是一个误解,尽管看起来它有点合乎逻辑,因为PHP是网站开发中最常见的语言。但也有一些被称为命令行界面的东西,这可以确保你的PHP应用程序可以在Web服务器之外运行。 你可能不相信,但即使是那些很大程度上取决于CPU能力的应用程序,也可以用PHP开发的,使用PHP CLI来运行。 

更重要的是,如果你想使用PHP开发桌面应用程序,不用担心,使用Windows特定扩展你可以做到这一点。 

6.开发过程慢

这是一直广为流传的误解。我不知道起源于何处?这个流言可能来自于曾经一个时期php代码很乱并且代码中四处充斥着Mysql语句(他们以此为反例,但是实际上我们都不这样用)。问题是为什么这样开发过程就慢了?当大量的php框架出现时,可以大大的加速开发的过程。毋庸置疑,你可以在短时间内开发出很大的程序,不论它有多么的复杂。所以,你用php开发一点都不慢,特别是当你使用php框架的时候。

7.专业开发人员不使用PHP

PHP是针对初学者的,它是为那些不是认认真真做开发的人设计的。这些说法都和PHP的使用有关。这只是一种误解,认同它没有任何意义。这里有如此多的网络应用,包括一些大型的,都是使用PHP构建的。可以想象这些说法是多么不正确。

8. 性能问题

这是一个棘手问题。这不是一个误解。和硬币有两个面一样,这个问题也是两方面的。事实上到处充斥着垃圾代码,隐式转换、不适用的模块、缺少操作符重载等等都能影响一个php应用的性能。但是这个依赖于你是不是有足够的能力去用好这个语言,用它编写稳定地、快速地应用。

性能是由你设计的架构和你写的代码来决定的!

9. 便宜没好货

这条貌似在逻辑上很站得住脚,但是用到php上那就是完全是误解了!事实上,php的最大优势就是他的免费和开源,这意味着大多数提供应用开发服务的开发 者必须都精通它。虽然免费开源会带来一定问题,但是这也为了使用他们服务的客户提供成本优势。与商业开发语言相比较,php的开发成本比价低,但是这并非 意味着它的质量值得怀疑。和正确的开发者一起工作,可以获得更高性能的php应用。

10. PHP言过其实

真是这样么?你随口瞎说的吧。我不认为这样,还有很多的开发者也都不这样认为。

结束语

这不是所有php谎言的终结者。随着php语言不断的发展,变得越来与强大,误解也会跟着增长的。但请不要被他们忽悠了。多读,多问,自己动动手,然后你就知道,是不是真的了 转载自:开源中国

Linux:OpenStack将提供对Docker的支持

最近来自Docker官方网站的文章提到,从OpenStack Icehouse开始,Docker将与Heat集成。 而最早在OpenStack Havana 版本中,Docker 已经作为 Nova driver方式与OpenStack集成。本文将首先简单介绍Docker,然后介绍其与OpenStack 的集成。

Docker 简介

Docker 是一个开源的应用容器引擎,可以自动化地部署应用到可移植的的容器中,这些容器独立于硬件、语言、框架、打包系统。一个标准的Docker容器包含一个软件组件及其所有的依赖 ——二进制文件,库,配置文件,脚本等等。Docker扩展了LXC,使用高层的API,提供轻量虚拟化解决方案来实现进程间隔离。可以运行在任何支持 cgroups跟AUFS 的 64位Linux内核上。

Linux:OpenStack将提供对Docker的支持
Linux:OpenStack将提供对Docker的支持
Dock可以用来:

  • 自动化打包和部署任何应用
  • 创建一个轻量级私有PaaS云
  • 搭建开发测试环境
  • 部署可扩展的Web应用

Docker 发展迅速, 它的贡献者PaaS云提供商 https://dotcloud.com 2014年1月份获得了B轮1500万美元融资,Docker社区(https://www.docker.io/)也比较活跃,Docker中文社区(http://www.dockboard.org/)最近也在国内多个城市相继成功举行Docker meet up。关于docker更多详细介绍详见 http://www.openstack.cn/p828.html 

Docker与Nova集成

在OpenStack Havana版本中,Docker通过在Nova中以driver的形式与OpenStack的集成,这种实现把Docker容器当作虚拟机来使用。代码链接为 https://github.com/openstack/nova/tree/stable/havana/nova/virt/docker

但在香港OpenStack设计峰会上决定从Nova项目移出Docker driver,放入StackForge项目开发。Openstack的每个项目起初都在StackForge 培育,然后申请进入Incubated项目,考察期满且通过技术委员会投票正式成为Openstack集成项目。OpenStack 项目中Docker driver的主要维护者给出的解释是:“关于这个driver我们已经收到积极的反馈,缺少与Cinder、Neutron的集成是我们面临的障碍,在 StackForge中,允许我们快速迭代开发,持续集成新功能,以便在OpenStack Juno 版本中重新引入”  所以从Icehouse版本开始,Docker driver 代码树为https://github.com/stackforge/nova-docker

下面是Nova Docker driver 与OpenStack集成流程图。

dockerintegration
nova docker driver

Nova Docker driver 嵌入一个微小的HTTP 客户端 与 Docker内部REST API 通信,使用HTTP API 来控制Docker容器与获得容器信息。通过配置Glance,Docker 就能从Glance获得跟上传镜像。关于Docker与Nova集成详细配置方法,请详见https://wiki.openstack.org/wiki/Docker

Docker与Heat集成

在OpenStack中,社区更倾向于使 用Heat来协调使用Docker,而不是在Nova中把它当作一种hypervisor 使用。 Nova Docker driver这种方式有些缺点,例如,标准的API 扩展使用虚拟机特有的功能,但这些功能对于Docker并不适用,而且把Docker当作虚拟机来使用,Nova很难利用Docker有用的功能,例如连接容器(主要指Docker容器间通信),基于以上的原因,Heat是更好的选项。

Heat在OpenStack 中提供资源协调功能,与AWS 的 CloudFormation 兼容,允许用户上传描述资源的模版。使用Heat的插件机制,用户可以基于传统OpenStack部署方式部署跟管理Docker容器。Heat 插件已经被OpenStack 社区接受,将包含在Icehouse版本中。代码链接为https://github.com/openstack/heat/tree/master/contrib/docker

下面的例子显示如何使用Heat来协调使用Docker

description: Single compute instance running cirros in a Docker container.
resources:
  my_instance:
    type: OS::Nova::Server
    properties:
      key_name: ewindisch_key
      image: ubuntu-precise
      flavor: m1.large
      user_data: #include https://get.docker.io
  my_docker_container:
    type: DockerInc::Docker::Container
    docker_endpoint: { get_attr: [my_instance, first_address] }
    image: cirros

 

dockerheat

heat docker plugin

在上面的例子里,我们只需要添加更多类似”my_docker_container“的片段,就可以创建多个容器并把它们连接起来,它们将不受限于OpenStack API,可以充分利用Docker Remote API。 

结束语

Docker相对于虚拟机由较高的资源利用率,可以秒级部署, 跨平台打包部署应用。在众多PaaS平台产品中发展迅速,获得社区认可与支持,与多个知名项目合作集成。 而与Heat项目的集成,为打通IaaS,PaaS 平台提供了很好的途径。期待Docker在OpenStack Juno版本中与OpenStack Heat项目的更好集成。

作者@郭长波, EasyStack工程师

via : http://www.openstack.cn/p1423.html 

Linux:快乐Node码农的11个习惯

从问世到现在将近20年,JavaScript一直缺乏其它有吸引力的编程语言,比如Python和Ruby,的很多优点:命令行界面,REPL,包管理器,以及组织良好的开源社区。感谢Node.js和npm,现如今的JavaScript鸟枪换炮了。Web开发者有了强大的新工具,接下来就看他们的想象力了。

Linux:快乐Node码农的11个习惯
Linux:快乐Node码农的11个习惯

下面这个提示和技巧清单,能让你和你的node程序保持快乐。

1. 用npm init开始新项目

npm有个init命令,可以引导你完成创建package.json文件的过程。即便你非常熟悉package.json和它的属性,也可以把npm init当作将你的新程序或模块导入正轨的简便办法。 它可以聪明地为你设置默认值,比如通过上层目录的名称推断模块名,从~/.npmrc中读取创作者的信息,以及用你的git设置确定代码库。

mkdir my-node-app
cd my-node-app
npm init

2.声明所有依赖项

在将模块安装到项目本地时坚持使用–save (或 –save-dev)是个好习惯。这些选项会将指定的模块添加到package.json的dependencies(或devDependencies)清单中,并使用合理的默认semver范围

npm install domready --save

注意,现在npm使用插入符风格的semver范围

"dependencies": {
  "domready": "^1.0.4"
}

3.指定启动脚本

在package.json中设定scripts.start,你就可以在命令行中用npm start启动程序了。这个非常方便,因为克隆了你的程序的其他node开发人员不用猜就能轻松运行它。

额外奖励:如果在package.json中定义了scripts.start,你就不需要Procfile了(Heroku平台用Procfile来声明在你程序的dynos上运行什么命令)。使用npm start会自动创建一个作为web进程的Procfile。

这里有个启动脚本示例:

"scripts": {
  "start": "node index.js"
}

4.指定测试脚本

就像团队中的所有人都应该可以运行程序一样,他们也应该可以测试它。package.json中的scripts.test就是用来指定运行测试套件的脚本的。如果你用mocha之类的东西运行测试,一定要确保把它包含在package.json里的devDependencies中,并且指向安装在你项目本地的文件,而不是全局安装的mocha:

"scripts": {
  "test": "mocha"
}

5.不要把依赖项放在源码的版本控制中

很多node程序使用的npm模块带有C语言写的依赖项,比如bson、ws和hiredis,这些依赖项必须在Heroku的64位Linux架构下进行编译。编译过程可能非常耗时。为了让构建过程尽可能的快,Heroku的node buildpack在下载和编译完依赖项后会缓存它们,以便在后续部署中重用。这个缓存是为了降低网络流量并减少编译次数。

忽略node_modules目录也是模块创作者推荐的npm实践。应用程序和模块之间少了一个区别!

echo node_modules >> .gitignore

6.用环境变量配置npm

以下内容摘自npm配置

所有以npm_config_开头的环境变量都会被解释为配置参数。比如说环境中有npm_config_foo=bar时,会将配置参数foo设置为bar。任何没有给出值的环境配置的值都会设置为true。配置值对大小写不敏感,所以NPM_CONFIG_FOO=bar也一样。

最近在所有的Heroku构建中都有程序的环境。这一变化让Heroku上的node用户无需修改程序代码就可以控制他们的npm配置。习惯#7是这一方式的完美例证。

7.带着你自己的npm注册中心

最近几年公共npm注册中心出现了突飞猛进式的增长,因此会偶尔不稳定。所以很多node用户开始寻求公共注册中心之外的方案,他们或者是出于开发和构建过程中速度及稳定性方面的考虑,或者是因为要放置私有的node模块。

最近几个月冒出了一些可供选择的npm注册中心。NodejitsuGemfury提供收费的私有注册中心,此外也有一些免费的,比如Mozilla的只读S3/CloudFront镜像Maciej Małecki的欧洲镜像

在Heroku上配置node程序使用定制注册中心很容易:

heroku config:set npm_config_registry=http://registry.npmjs.eu

8.追踪过期的依赖项

如果你编程的时间足够长,可能已经领教过相依性地狱的厉害了。好在Node.js和npm接纳了semver,即 语义化版本管理规范 ,设置了一个健全的依赖项管理先例。在这个方案下,版本号和它们的变化方式传达的含义涉及到了底层代码,以及从一个版本到下一版本修改了什么。

npm有一个很少有人知道的命令,outdated。它可以跟npm update结合使用,能够找出程序的那些依赖项已经过期了,需要更新:

cd my-node-app
npm outdated
Package            Current  Wanted     Latest  Location
-------            -------  ------     ------  --------
express              3.4.8   3.4.8  4.0.0-rc2  express
jade                 1.1.5   1.1.5      1.3.0  jade
cors                 2.1.1   2.1.1      2.2.0  cors
jade                0.26.3  0.26.3      1.3.0  mocha > jade
diff                 1.0.7   1.0.7      1.0.8  mocha > diff
glob                 3.2.3   3.2.3      3.2.9  mocha > glob
commander            2.0.0   2.0.0      2.1.0  mocha > commander

如果你做的是开源的node程序或模块,可以看看david-dmNodeICOshields.io,你可以用这三个优秀服务所提供的图片徽章在项目的README或网站上显示生动的依赖信息。

9.用npm脚本运行定制的构建步骤

随着npm生态系统的持续增长,开发和构建过程的自动化选择也会随之增长。Grunt是迄今为止node世界中最流行的构建工具,但像gulp.js这种新工具,以及普通的老式npm脚本也因为较轻的负载受到欢迎。

在你把node程序部署到Heroku上时,要运行npm install –production命令以确保程序的npm依赖项会被下载下来装上。但那个命令也会做其它事情:它会运行你在package.json文件中定义的所有npm脚本钩子,比如preinstall和postinstall。这里有个样本:

{
  "name": "my-node-app",
  "version": "1.2.3",
  "scripts": {
    "preinstall": "echo here it comes!",
    "postinstall": "echo there it goes!",
    "start": "node index.js",
    "test": "tap test/*.js"
  }
}

这些脚本可以是行内bash命令,或者也可以指向可执行的命令行文件。你还可以在脚本内引用其他npm脚本:

{
  "scripts": {
    "postinstall": "npm run build && npm run rejoice",
    "build": "grunt",
    "rejoice": "echo yay!",
    "start": "node index.js"
  }
}

10.尝试新东西

ES6,也就是被大众称为JavaScript的ECMAScript语言规范的下一版,其工作名称为Harmony。 Harmony给JavaScript带来了很多振奋人心的新特性,其中很多已经出现在较新版本的node中了。

Harmony实现了很多新特性,比如块作用域生成器代理弱映射等等。

要在你的node程序中启用harmony的特性,需要指定一个比较新的node引擎,比如0.11.x,并在启动脚本中设置–harmony选项:

{
  "scripts": {
    "start": "node --harmony index.js"
  },
  "engines": {
    "node": "0.11.x"
  }
}

11. Browserify

客户端JavaScript有乱如麻团般的遗留代码,但那并不是语言本身的错。由于缺乏合理的依赖项管理工具,让jQuery-插件拷贝-粘帖的黑暗时代延续了好多年。感谢npm,带着我们步入了前端振兴的年代:npm注册中心像野草一样疯长,为浏览器设计的模块也呈现出了惊人的增长势头。

Browserify是一个让node模块可以用在浏览器中的神奇工具。如果你是前端开发人员,browserify将会改变你的人生。可能不是今天,也不是明天,但不会太久。如果你想开始使用browserify,请参阅这些文章

你有哪些习惯?

不管你已经做过一段时间node程序,还是刚刚开始,我们都希望这些小技巧能对你有所帮助。如果你有一些(健康的)node习惯想要跟大家分享,请在发tweet时带上#node_habits标签。编码快乐!

作者简介

本文最初由Zeke sikelianos发表在Heroku上。Zeke在Heroku工作,用ruby和coffeescript编写开源软件。他从事设计师这一职业已经有14年了,信奉信息自由的精神,并且相信用计算机可以创造出美好的事物。

查看英文原文:What’s New in Node.js v0.12 – Running Multiple Instances in a Single Process 

via : http://www.infoq.com/cn/articles/node.js-habits 


感谢吴海星对本文的策划。