Skip to content Skip to main navigation Skip to footer

Linux

Linux:Everpad 适应 Uuntu unity 桌面的 Evernote 客户端

  Evernote是一款日志云服务软件,支持文本, 图片, 声音事, 并可添加附件,但是官方Evernote 客户端支持 Windows, Mac OSX, Android, iOS 和 WebOS,唯独缺少 Linux 客户端。

  在Linux上,我们能使用 NixNote (之前的 Nevernote), 一款非官方的 Evernote 客户端,使用Java 编写,轻量级, 现在你还可以使用这款软件: Everpad, 一款最新的 Evernote 客户端完美支持 Unity 桌面。

https://dn-linuxcn.qbox.me/data/attachment/album/201209/18/125254umh8ccumeiahy6py.png

  可以通过官方PPA安装(支持Ubuntu 12.10, 12.04 / 11.10.)本人本来想安装截图,但是使用的是ubuntu 10.04,所以无法安装。

打开终端,输入命令:

sudo add-apt-repository ppa:nvbn-rm/ppa sudo apt-get update sudo apt-get install everpad

如果出现滚动天错误,使用以下命令:

LIBOVERLAY_SCROLLBAR=0 everpad

Evernote提供中文的 windows /mac/android/ios/webos等安装包,官方网站: http://evernote.com/intl/zh-cn/

来自:http://imcn.me/html/y2012/13003.html

Linux:如何加密 Ubuntu 安装后的主文件夹

  Ubuntu 在安装后会有一个非常重要的主文件夹,这个文件夹事关很多安全方面的问题。而现在计算机行业和互联网行业中,黑客人群的迅速扩大和成长,让我们连接到互联网的计算机硬盘时刻都处于不安全的状态下。所以如果能给这个主文件夹或者硬盘进行加密,那么在安全方面,就有了一道安全屏障,从而增加 Ubuntu 的安全性。下面我来和大家一起研究研究如何加密这个文件夹。

  目前为止 Ubuntu 的几个版本在安装的时候都有选项让您选择是否加密主文件夹,不过如果由于一些原因,您没有选择或者忘记了选择加密主文件夹,那么我们也可以在安装后在来使用这个功能。

  下面是将主文件夹从未加密设定为加密的步骤和过程,您可以从这个步骤中了解哪些文件的重要性,从而让它们更加安全。

注意事项:在开始下面的操作之前,您需要查看您的硬盘空间大小,硬盘剩余空间需要大约是您主目录现在容量大小的 2.5 倍(比如您的主目录现在是 10GB 大小,那么您需要 25GB 的剩余空间)。如果硬盘空间不足,那么这个加密过程将不能完成,会提示您“Not enough free disk space”这个错误。

  另外一个需要提示您的是,在您进行下面的操作前,您最好最好最好在其他存储设备(比如移动硬盘)上复制您的主文件夹,从而以防不测。

  好了,我们开始!

第一步:安装需求软件

  首先,我们要安装使用的软件,从而加密主目录。打开一个终端窗口(快捷键CTRL+ALT+T)或者从程序菜单中点击终端图标。然后在终端窗口中输入如下命令:

sudo apt-get install ecryptfs-utils

  然后,我们需要添加一个测试用户。我们可以在 “System Settings”==>”User Accounts” 中找到添加用户的功能。

  您可能需要点击右上角的 “Unlock” 按钮然后输入管理员密码来获得管理员权限。

  然后左下角的”+”号按钮就可以使用了。点击它,在 “Account Type” 中选择 “Administrator”(我们需要一个管理员账户),然后输入我们要建立账户的名字,如 “test” 。

  输入名字后,点击 “Create” 按钮来创建这个用户。

  接下来,用户创建好了以后,现在我们还没有给这个账号建立密码,而且账号默认也是 “Lock” 的,所以我们也要再次点击右上角的 “Unlock” 按钮来解锁它。在解锁以后,我们就可以点击 “Password” 右侧的 “Account disabled” 来给这个账号建立一个密码。

  我们给它一个强壮的密码(数字+英文+特殊符号),哈。点击 “Change” 来确认密码。

  这时,原本是 “Account disabled” 的地方已经变成了一些小星星。

  用户已经创建完毕,我们需要重启一下 Ubuntu 。以让我们可以用我们新建立的账户来登录。

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

Linux:在 Ubuntu 12.04/12.10 上安装Cinnamon 1.6

Cinnamon 是linuxmin 默认桌面。Cinnamon 1.6 正式版本即将发布并带来新酷设计和功能。本文是教大家如何在 Ubuntu 12.10 / 12.04上安装测试版并发即将发布正式版本的PPA。

1.6版本变化:

https://dn-linuxcn.qbox.me/data/attachment/album/201209/19/090713obb0d4tl7ultcsdx.png

安装 Cinnamon 1.6 通过 PPA:

每日创建版本ppa,同时按Ctrl+Alt+T 打开终端输入以下命令:

sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-nightly sudo apt-get update sudo apt-get install cinnamon

https://dn-linuxcn.qbox.me/data/attachment/album/201209/19/090714nzfalal3arw37kad.png

当正式版本发布了可通过下面PPA进行安装,安装命令:

sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable sudo apt-get update sudo apt-get install cinnamon

来自:http://imcn.me/html/y2012/13008.html

Linux:深入试用SUSE Cloud

  OpenStack 这个开源云端基建方案,相信大家亦时有所闻。众所周知 OpenStack 的功能强大,但进行部署时却需要高度的技巧和经验。有见及此 Novell表示将会推出采用 OpenStack 技术的云端基建方案 SUSE Cloud。

  SUSE Cloud以OpenStack的最新版本Diablo为基础开发,卖点是预先把OpenStack 和 SUSE Linux Enterprise整合,从而降低架设 OpenStack 时的技术门槛。目前Novell已经在官方网站发布了SUSE Cloud的测试版本。

完整的OpenStack方案

  OpenStack相容VMware ESX、Microsoft Hyper-V、Citrix Xen 和 Linux的KVM,基本上已覆盖了目前业界绝大部分的Hypervisor。SUSE Cloud将会是一个完整的OpenStack方案,以往利用OpenStack架设私有云,必须同时使用其他工具以补OpenStack的不 足,SUSE Cloud则会建基于SUSE Linux Enterprise平台上,要制作虚拟机器映像档,可以用免费的SUSE Studio,伺服器管理方面,则可沿用 Novell的SUSE Manager。

提供标准化的API

  OpenStack有望成为云端世界的游戏规则改变者,因为它可提供标准化的API集合,OpenStack社区希望这将会终结厂商锁定,允许企业在自身 开发的私有 OpenStack云端,和其他任意的公有OpenStack云端之间随意迁移工作负载。OpenStack是一个包含作业系统、储存媒体和网路组件的开 源云端平台,目前已获得业界的广泛支持。它最早由NASA开发的Nebula云端项目的演变,且获得了Rackspace的支援。今天Amazon的云端 平台是最流行的基础设施即服务(IaaS),尽管Amazon提供API,但它的云端并不是由类似OpenStack社区所开发的开源技 术,OpenStack提供的便是一个开源的选择。

由业内人士设计

  OpenStack的其中一个优点是Rackspace的参与。众所周知Rackspace是一家提供主机托管服务的公司,换言之OpenStack实际 上是由业内人士设计的,因此非常适用于公有云端的大型伺服器、多租户的工作负载。此外 OpenStack成熟的功能性、Hypervisor无关性设计及其可扩展特性等亦是理由之一。业界的主流厂商也倾向使用 OpenStack,因为开发社区表示目前已有128家厂商在参与该项目的开发,其中包括思科、Citrix、Extreme、惠普、Arista和 Vyatta等等。目前 OpenStack仍由Rackspace主导,但未来OpenStack项目将会移交给计划在2012年成立的OpenStack基金会,保证了 OpenStack的独立性。 OpenStack 的结构

  OpenStack是一种免费的开源平台,帮助服务提供商实现类似 Amazon EC2和S3的基础设施服务。OpenStack运算服务由3个元件组成,包括负责云端基建(OpenStack Compute)的Nova,分散式储存系统(OpenStack Storage)的Swift,以及映像档服务(OpenStack Image Service)的Glance。其中Nova和Swift都采用了分散的架构,所有伺服器都以复数方式构成,保证了将来的扩充性。Glance提供了一 个机制来寻找、记录虚拟机器的磁碟映像档,支援不同磁碟映像档格式,纵使是运作中的虚拟机器也可追加磁碟,并快速处理磁碟空间需求和分割区。灵活度是 OpenStack最大的优点之一,用户可以根据自己的需要建立基础设施,轻松地扩充群集规模。

SUSE Cloud抢先看

  刚发布的SUSE Cloud Development Preview以64位元版本的SUSE Linux Enterprise Server 11 SP1(SLES 11 SP1) 为基础,并采用 OpenStack代号Essex 的版本。SUSE Cloud 追加了两个系统服务,分别是名为Keystone的认证服务OpenStack Identity Service,以及名为 Horizon的控制台(OpenStack Dashboard)。原则上SUSE Cloud是为 SLES 11 SP1而设计的,但开发人员表示在openSUSE上也可成功执行。SUSE Cloud 的映像档已经在SUSE Gallery上发布,并提供硬碟用和USB随身碟专用的版本。

试用SUSE Cloud

  目前SUSE Cloud 的最新版本ISO可在 VirtualBox、VMWare 或实体机上执行。如果身边没有虚拟化软体或实体机,SUSE Gallery上的 SUSE Cloud下载页面右方也提供了 Testdrive 的连结,用户可在浏览器上即时试用SUSE Cloud,条件是每次只能使用15分钟。启用后进行一般设定,系统会询问是否同意SLES使用条款,输入“y”即可。

  预设登入名称和密码分别是root和openstack,登入后即可利用浏览器进入Web界面,Web界面的登入名称和密码分别是admin和 openstack。虚拟机器的映像档必须自行上载至SUSE Cloud才可执行。要自制客制化的映像档,可使用免费的SUSE Studio。

用SUSE Studio制作映像档

  SUSE Studio是Novell SUSE Appliance Program计划中的一环,这项计划能使独立软体厂商 (ISV) 得到全面支援的关键业务作业系统,进而架设和测试完整的软体堆叠的产品。在SUSE Linux Enterprise平台之上架设的SUSE Appliance Program,将改变ISV封装和发布软体产品的方式,使他们能够快速地将现有应用交付给实体、虚拟和云端运算环境,缩短销售周期并追求新的市场机会。 SUSE Studio是 openSUSE的线上Build服务,用户只需使用浏览器,便可直接在 SUSE Studio中,设定一个基于 openSUSE 或 SLED 版本的 Linux。用户可以选择 32 和 64 位元的版本,并对所包括的软体,针对虚拟机器的硬体设定、启动文字稿等进行设置,完成后您可以选择生成硬碟和 USB 映像档、ISO (LiveCD 和 DVD)、虚拟机器映像档(VMware 和 Xen)然后下载。

上载映像档

  制作好映像档后便可上载至 SUSE Cloud,当然也可在网上直接抓取映像档测试。为节省时间和空间,我们抓取的是openSUSE的精简版本JeOS,只有135MB 大小,在SUSE Cloud下执行以下命令: curl http://mirror.zq1.de/opensuse/images/openSUSE_11.4_JeOS.i686-0.0.1.raw.gz | gzip -d > jeos.raw (ENTER)

然后以 jeos 为名汇入:

glance -A $TOKEN add name=”jeos” is_public=True < jeos.raw (ENTER)

完成后看看 Glance 上有没有列出 jeos。

glance -A $TOKEN index (ENTER)

正常的话在 Nova 下也应同样看到此档案。

nova image-list (ENTER)

接下来告诉 Nova 在哪一个网段可供虚拟机器使用。

nova-manage network create –fixed_range_v4=10.10.134.16/29 –label=testnet (ENTER)

用以下命令查看可使用的虚拟机器大小。

nova flavor-list (ENTER)

之后便可启用名为 test 的虚拟机器。

nova boot –flavor 2 –image 1 test (ENTER)

然后检查虚拟机器是否已经成功启动,没反应的话可能是虚拟机器还未来得及启动,等几分钟后再试即可。

nova list (ENTER)

要进入虚拟机器内部就要用 VNC,假设虚拟机器的 IP 位址是 192.168.1.100,便可用以下命令。

vncviewer 192.168.1.100:0 (ENTER)

基于安全理由,SUSE Cloud 在预设值下,防火墙会关闭所有外来连线,要从外面网路进入虚拟机器就要修改 Nova 的防火墙规则。要开启埠号容许 ping、SSH 和 TCP/UDP。

nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 (ENTER) nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 (ENTER) nova secgroup-add-rule default tcp 1 65535 0.0.0.0/0 (ENTER) nova secgroup-add-rule default udp 1 65535 0.0.0.0/0 (ENTER)

要查看修改后的规则,可用以下命令:

nova secgroup-list-rules default (ENTER)

  之后就可外面正常进入虚拟机器。

  如想了解更多有关 SUSE Linux Enterprise Server、SUSE Manager 和 SUSE Studio 的产品资料,请联络Novell的Jerry Sham(jsham@novell.com)或致电+852 2588 5238。

来自:http://www.linuxpilot.net/industry/news/2012092001susecloud

Linux:xShow@Home v5.1.20120908 发布

xShow@Home 是我开发的视频平台xShow的一个分支,用于家庭视频直播和分享,可将一个视频(电影或摄像头采集的视频)在PC、Mac、Linux、Android上同时播放。软件是FreeWare,暂时不提供源码,等分支稳定后我会开放源代码。

1.执行xShow@Home.exe后启动服务(Http和Rtmp)

2.修改和启动 xRtmpClient.cmd 可编码视频到Rtmp。

3.打开浏览器,打开本机IP的80端口即可看到媒体,播放器可以选择拉伸、按比例缩放、静音、全屏。

下载地址:

http://code.google.com/p/openfiler-cn/downloads/detail?name=xShowAtHome.v5.1.20120908.7z

http://xinghestudio.com/download/xShowAtHome.v5.1.20120908.zip

项目页面:

http://xinghestudio.com/index.php/opensource/30-xshowathome

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

Linux:六款优秀的替代文本编辑器

开源社区的重新发明轮子一直饱受批评,众多的同质软件会影响开源软件的推广。

但Linux生态系统的一大优势就在于其可选择性,可满足不同用户需 求。以文本编辑器为例,它是操作系统的一种基本应用程序,可用于编辑纯文本文件,写代码,改配置,做笔记等等。

在一些著名的文本编辑器如EmacsVim之外,还有许多值得一试的优秀替代文本编辑器,LinuxLinks的这篇文章给大街介绍了六款可用来替代他们的文本编辑器

medit 轻量级可编程编辑器

点击查看原始大图

Textadept

点击查看原始大图

RText Java语言编写的编辑器

Zile 轻量级Emacs克隆

https://dn-linuxcn.qbox.me/data/attachment/album/201209/24/0914457z2p2j87sbhphgjc.png

XML Copy Editor

https://dn-linuxcn.qbox.me/data/attachment/album/201209/24/0914485m5zizm0034uio8l.png

Editra

点击查看原始大图

Linux:Ubuntu 12.04 操作系统如何提高笔记本电池的寿命和性能

笔记本电脑管理电池是一个很重要的事情,管理好了,可以延长电池的使用时间,从而延长电池的寿命。除了默认的一些管理选项外,Ubuntu 12.04 还提供了几个另外比较不常用的管理电池的功能,因为不是能配合所有笔记本来使用的,所以不是那么直观的可以管理到,下面我们就来看看它们。

首先,我们要打开电源管理的ALPM功能,这是一个把 SATA AHCI 控制器的 SATA 连接器在 I/O 非活动期降到低功耗的机制。打开一个终端窗口,以 root 权限输入如下命令:

echo SATA_ALPM_ENABLE=true | sudo tee /etc/pm/config.d/sata_alpm

如果您不想使用这个功能,那么输入如下命令来关闭它:

echo SATA_ALPM_ENABLE=false | sudo tee /etc/pm/config.d/sata_alpm

节约电量的第二种方法是缓存压缩 i915 帧。缓存压缩 i915 帧可以减少显示所占用的内存,从而降低功耗,在 ~/etc/default/ 目录下打开一个终端,以 root 权限执行下面的命令:

sudo gedit grub

GRUB 文件被打开后,在里面查找如下一行:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

将这行修改为:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash i915.lvds_downclock=1″

保存并关闭 GRUB 文件。然后打开一个终端窗口,执行如下命令:

sudo update-grub

第三种方法我们可以使用 Inter 的 PowerTOP 工具。打开一个终端窗口,以 root 身份输入如下命令:

sudo apt-get install powertopsudo powertop

使用这个工具,您可以把摄像头、DRAM、音频、网卡、无线网络、蓝牙、SATA连接、MMC/SD 等设备都设置成优良的耗电环境,从而节省电量。

最后,向大家提供一个一直以来我们认识上的误区——我们总以为让显示器显示一个黑色的背景会更加节省电量。而事实上却刚好相反,显示一个白色背景将能更加省电。将您的桌布换一个浅颜色的试试。

Linux:LINUX 查看硬件配置命令

系统

  # uname -a # 查看内核/操作系统/CPU信息  # head -n 1 /etc/issue # 查看操作系统版本  # cat /proc/cpuinfo # 查看CPU信息  # hostname # 查看计算机名  # lspci -tv # 列出所有PCI设备  # lsusb -tv # 列出所有USB设备  # lsmod # 列出加载的内核模块  # env # 查看环境变量

资源

  # free -m # 查看内存使用量和交换区使用量  # df -h # 查看各分区使用情况  # du -sh <目录名> # 查看指定目录的大小  # grep MemTotal /proc/meminfo # 查看内存总量  # grep MemFree /proc/meminfo # 查看空闲内存量  # uptime # 查看系统运行时间、用户数、负载  # cat /proc/loadavg # 查看系统负载

磁盘和分区

  # mount | column -t # 查看挂接的分区状态  # fdisk -l # 查看所有分区  # swapon -s # 查看所有交换分区  # hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)  # dmesg | grep IDE # 查看启动时IDE设备检测状况

网络

  # ifconfig # 查看所有网络接口的属性  # iptables -L # 查看防火墙设置  # route -n # 查看路由表  # netstat -lntp # 查看所有监听端口  # netstat -antp # 查看所有已经建立的连接  # netstat -s # 查看网络统计信息

进程

  # ps -ef # 查看所有进程  # top # 实时显示进程状态

用户

  # w # 查看活动用户  # id <用户名> # 查看指定用户信息  # last # 查看用户登录日志  # cut -d: -f1 /etc/passwd # 查看系统所有用户  # cut -d: -f1 /etc/group # 查看系统所有组  # crontab -l # 查看当前用户的计划任务

服务

  # chkconfig –list # 列出所有系统服务  # chkconfig –list | grep on # 列出所有启动的系统服务

程序

  # rpm -qa # 查看所有安装的软件包

其他常用命令整理如下:

  查看主板的序列号:dmidecode | grep -i ‘serial number’  用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)  查看CPU信息:cat /proc/cpuinfo [dmesg | grep -i ‘cpu’][dmidecode -t processor]  查看内存信息:cat /proc/meminfo [free -m][vmstat]  查看板卡信息:cat /proc/pci  查看显卡/声卡信息:lspci |grep -i ‘VGA'[dmesg | grep -i ‘VGA’]  查看网卡信息:dmesg | grep -i ‘eth'[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i ‘eth’]  查看PCI信息:lspci (相比cat /proc/pci更直观)  查看USB设备:cat /proc/bus/usb/devices  查看键盘和鼠标:cat /proc/bus/input/devices  查看系统硬盘信息和使用情况:fdisk & disk – l & df  查看各设备的中断请求(IRQ):cat /proc/interrupts  查看系统体系结构:uname -a  查看及启动系统的32位或64位内核模式:isalist –v [isainfo –v][isainfo –b]  查看硬件信息,包括bios、cpu、内存等信息:dmidecode  测定当前的显示器刷新频率:/usr/sbin/ffbconfig –rev \?  查看系统配置:/usr/platform/sun4u/sbin/prtdiag –v  查看当前系统中已经应用的补丁:showrev –p  显示当前的运行级别:who –rH  查看当前的bind版本信息:nslookup –class=chaos –q=txt version.bind  查看硬件信息:dmesg | more  显示外设信息, 如usb,网卡等信息:lspci  查看已加载的驱动:

  lsnod  lshw

  查看当前处理器的类型和速度(主频):psrinfo -v  打印当前的OBP版本号:prtconf -v  查看硬盘物理信息(vendor, RPM, Capacity):iostat –E  查看磁盘的几何参数和分区信息:prtvtoc /dev/rdsk/c0t0d0s   显示已经使用和未使用的i-node数目:

  df –F ufs –o i   isalist –v

对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:

  主机CPU信息:Cpuinfo   主机DMA通道信息:Dma   文件系统信息:Filesystems   主机中断信息:Interrupts   主机I/O端口号信息:Ioprots   主机内存信息:Meninfo   Linux内存版本信息:Version

  备注: proc – process information pseudo-filesystem 进程信息伪装文件系统

Linux:十二条提升Ubuntu桌面体验的技巧

  大家都在说要从Windows移至Ubuntu。但是Linux用户的想法则不同。不管你想使用Ubuntu还是其他版本,事实都是Ubuntu能带来高效率的桌面。

  本文将分享Datamation网站作者Matt Hartley使用Ubuntu的技巧,包括一些应用。

从桌面体验中获得更多:

  Pithos:使用Pithos是在Ubuntu桌面用Pandora听音乐的最佳方式。它是个简单的有效的用户界面,不用与Flash和讨厌的广告打交道,让你轻松享受音乐带来的乐趣。

  反观web页面应用里发现的功能,几乎所有的Pandora音乐功能都能在Pithos里使用。你也可以使用Pithos选择、禁止和跳过歌曲。

  Dropbox:这是个大型web服务,Linux这个应用与Ubuntu桌面很好集成。可轻松添加、移除或创建目录,放置在Dropbox账户中。

  最好的是,可与UbuntuOne一起使用。虽然它不是数据备份解决方案,但真的是在平台之间分享文件的便捷方式。

  Synapse:我活在键盘世界里啊。现在,我尽量控制自己少用鼠标。有了Synapse启动器,我能轻松找到文件,还能发布应用,甚至运行不同的系统任务,以前都得靠键盘呢。

  Parcelite:没了剪贴板管理器,Parcelite雄起了。使用装了Parcelite的剪贴板,可复 制任何东西,还可以在复制其他东西后唤醒之前的动作。不同于标准的复制与粘贴,Parcelite允许用户“存储”多个复制条目到粘贴板。甚 至,Parcelite能与其他的Ubuntu同步剪切复制的内容。

  System Monitor applet:在使用GNOME 2的日子里,我需要依靠很多小程序。我经常使用的程序必须是System Monitor applet。虽然可以使用命令行做相同的事情,但我喜欢运行可视化的程序,让人能看到资源是如何被消耗的呢。

  Jungle Disk:过去几年我用了好多备份工具。我是主目录的粉丝,但同时,站外备份也有必要。基于我的经验,使用JungleDisk很安全,它很便宜,依赖Amazon S3提供的弹性存储,本身就支持Linux桌面的备份客户端。

  Synaptic:当谈及Ubuntu桌面,少有像Synaptic这样的GUI应用能轻松进行安装、更新或迁移包。它能提供的功能类似于Ubuntu Software Center,而且Synaptic还有额外惊喜,比如可对所有应用实行完全控制。

  VLC:媒体播放器中的战斗机。我爱VLC是因为它不仅能播放所有格式,还可从Web流化内容。甚至,也能流化内容并在本地编译。另一个很酷的选项是捕捉网络摄像头视频的功能。总体来说,它是个用途广泛的应用。

  Skype Call Recorder:虽然Skype封闭源码,但它仍是使用Ubuntu获得统一桌面体验的关键部分。其他工具,如谷歌自己的视频聊天很好,但只有Skype的用户体验最好,提供了受欢迎的视频软件与功能。

  捆绑Skype与Skype Call Recorder,就设置成为Skype音频会议模式,可记录下会议内容。不过在使用记录软件之前,首先要确认一下本地的法律是否允许。

  Y PPA Manager:与Synaptic一样好用,进行包处理很不错,但其PPA备份功能不是完美的。所以我推荐使用真正的PPA管理工具,如Y PPA Manager,能轻松添加、移除和输出Ubuntu PPA。还有个额外好处,能处理输出的PPA gpg key。

  Gufw:与Ubuntu ufw(防火墙)一样简单,事实是用于新手,CLI选项很逆天。幸好,有个坚固的GUI叫做Gufw。该软件允许终端用户设置防火墙规则,甚至支持基于应用的防火墙控制。

  OpenDNS:有了父级控制,更快的DNS方案和安全web浏览,OpenDNS带来大量好处。你所需要做的就是注册该服务,听从指挥并安装ddclient。

转自:http://os.51cto.com/art/201210/360222.htm

Linux:如何解决Ubuntu上压缩包乱码问题

  安装Linux版7zip:

sudo apt-get install p7zip p7zip-full p7zip-rar

  卸载可能安装过的rar相关包(默认是没有安装的):

sudo apt-get remove rar unrar

  经过这样操作,以后解压rar和zip文件时,file-roller(归档管理器)自动会调用7z来解压,而7z能识别中文编码,不会出现乱码,解压和压缩都通过图形程序file-roller操作,完全不用涉及命令行。

  如果不卸载掉rar,file-roller默认使用rar解压,而rar不能识别中文编码,所以可能会出现乱码。当然你也就不能在Linux上创建rar文件了,但有必要打包成rar格式吗?

  unrar虽然能识别中文编码,但它和rar一样不是自由软件,它们都是WinRAR那家公司的商业软件,既然7z能解压rar文件,我又何必用它呢?

  总之file-roller默认使用7z解压7z/rar/zip,创建7z/zip包时也是使用7z,所以统一使用7z格式能保证自己的压缩包不会乱码。在Linux创建7z包时,也可以像Windows版那样加密压缩包目录。

来自:http://www.2cto.com/os/201210/160953.html

Linux:Ubuntu桌面生存指南 (2) — Ubuntu桌面体验简介

选择 Ubuntu

对于准备迁徙到 Linux 的用户来说,另一个头疼的问题就是选择发行版。所谓发行版是指在同一个 Linux Kernal 上由不同厂商,社区定制包装了不同桌面管理系统和附带了常用软件的 Linux 发行版本,通俗来说就是可以交付给用户安装的 Linux 系统。常见的发行版有 Ubuntu, Mint,RedHat, Fedora 等等,总数不下几百种。面对数量庞大的发行版,新人总是很难做出选择。好在每个发行版本都比较有针对性,有些是针对桌面应用,有些是针对服务器系统,还有 一些比较适合初级用户,或者资深极客,大致了解各自的特性以及用户自己的需求也不难做出选择,另外实际上每种发行版之间的区别幷没有大到完全对立的地步, 即便随便选择一种用起来上手,大多数的知识还是可以延续和继承在另一种发行版上的。只要不是三天两头换装各种发行版,也不算浪费时间和精力。

点击查看原始大图

选择 Ubuntu 的理由:

1. 简单,易用,美观,默认软件齐全,适合入门

Ubuntu 在发行之初就以打造一个适合上手,容易入门的 Linux 系统而著称,吸引了大量来自 Windows 的用户。它的发行方式众多,包括 CD / DVD / U盘 等传播方式,用户可以自行下载 ISO 文件刻盘或者制作启动U盘,甚至可以免费向 Ubuntu 的母公司 Canonical 索取邮寄光盘。它的体验安装方式也很丰富,包括:

a) 试用体验:无论用户的电脑是什么系统,都可以在启动的时候选择从光盘或者U盘启动 Ubuntu 进行试用,不破坏原有数据。再次从硬盘启动后仍旧进入用户的原有系统,很方便那些想尝鲜的用户。很多时候,在原有系统无法启动的情况下,甚至可以利用 Ubuntu 的这个特性来进行硬盘修复,挽救数据的工作。

b) Wubi安装: 直接将 Ubuntu 作为 Windows 系统的一个应用程序安装,再次启动后出现双启动菜单,避免了破坏原有 Windows 分区的风险,如果对 Ubuntu 不满意,可以直接在 Windows 中像删除任意一个应用软件那样删除 Ubuntu,完全没有损害系统和数据的担心。如果使用一段时间以后决定将 Wubi 系统转移到物理分区也相当简单,虽然没有官方的方法,网络上有现成的脚本可以在几分钟内完成这个工作。

c) 虚拟机安装:这种方式则允许你在启动 Windows 的同时,试用虚拟机里的 Ubuntu 系统。暂时无法离开 Windows 环境生存的用户可以通过这种方式进行过度。

d) 硬盘安装:得益于良好的硬件兼容性测试和完备的驱动兼容,安装 Ubuntu 系统甚至比安装 Windows 的过程更流畅和简单,几次点击和设置以后就可以顺利的完成。天然先进的 Linux 内核架构也使得启动过程异常的迅速,几秒之内完成开机。硬盘安装使得操作系统在本机可以获得最高的运行效率,充分发挥硬件机能,也迫使用户在心理和生理上 彻底隔绝对原有系统的依赖,更有利于提高自己在 Ubuntu 系统上的生存能力。在物理分区上安装 Ubuntu 是普罗大众彻底告别专利世界,走向自由世界,完成自我救赎的重要一步,笔者在这里呼吁更多的读者选择这种安装方式,开启心智,提升生产力。

综上所述,Ubuntu 在降低 Linux 的学习曲线上做了大量的工作,也因此一度成为最流行的 Linux 发行版。

2. 先进方便的软件包管理 apt-get

在 Linux 下安装软件有两种方式:1. 从源代码开始编译安装 2. 选择发行版自带的软件包管理系统。前者需要一定的开发知识,了解一些编译器,makefile的基本工作原理,如果安装过程中出现问题,要有一定解决问题 的能力,能够根据错误信息做相应的调整,对于新手来说有不小的难度。后者则是由厂商直接提供经过测试的,和当前系统匹配的二进制软件。官方和第三方厂商都 会提供相应的软件源,只要连接互联网,你就可以通过命令的方式下载需要的软件,例如在终端运行:

1
sudo apt-get install firefox

就下载了火狐浏览器,如果连接国外的网速比较慢,还可以通过选择国内的镜像网站加速下载。有人会说敲击命令下载软件有多麻烦?那么参见上一篇 选择Linux。一般来说,官方源里的软件很少有兼容性问题,因为他们都是经过测试的。如果对某个软件不满意你只需要:

1
sudo apt-get purge firefox

经过一段时间以后,系统还会定期提示哪些软件有新版本,你同样只需要运行一个命令完成所有软件的升级:

1
sudo apt-get upgrade

回想 Windows 系统,你需要在互联网上满世界找下载链接,还可能携带病毒,相当不方便,反倒是360软件管家提供了类似的功能。

大多数的发行版都有自己的软件包管理器,例如 redhat 系列的 rpm, Debian/Ubuntu 系列的 deb,哪个管理器可以更方便的使用,更少存在安装卸载问题,更好的理清楚软件之间的依赖关系都是我们选择发行版的重要依据, Ubuntu在这方面天然强大。

3. 强大的文档,社区支持

使用开源软件的另一个问题在于虽然用户有免费使用系统,修改系统,甚至再发行的权利,但是毕竟没有为系统支付过任何费用,因此除非你主动付费否则无 法在出现状况的时候要求厂商提供技术支持。对于学习型人才不算什么太大的问题,对于迁徙到这个系统的新人就又束手无策了。正版的 Windows 用户应该是享有这样的权利,Mac 电脑同样可以通过苹果店一对一的专家技术服务解决问题或者购买相关技术支持服务。如果这个时候没有一个强大而且团结的社区组织,一群热心解决问题的技术专 家,新人仍然无法生存在这个系统中。好在作为最流行的 Linux 发行版,Ubuntu 在这方面依然很强大。大多数的问题可以通过 Ubuntu官方Ubuntu中文社区 解决。

Linux:Ubuntu桌面生存指南 (1) — 选择 Linux



Linux:动画壁纸 LiveWallpaper 0.3

  Ubuntu 系统本身的桌布功能已经非常不错了,基本上我们能想到的对桌布的需求也都可以实现。默认的几张壁纸也看得非常让我们轻松愉悦。

  不过,用户的需求总是会不断的发展和出乎大多数的需求的,有很多人就希望能有动态的桌面。一般按我们的理解,系统本身就支持自动换桌布,而且你也可以弄个动画 gif 图来看看效果。不过就像很多特殊的主题一样,要在桌面上实现类似视频动画的效果,那就得借助一些其他的软件了,系统本身还做不到(要求 Ubuntu 系统本身就具有这个功能的话,也有点太牵强了,哈),下面的这个软件就可以实现一定的动画桌面的功能,而且我试了一下,效果还是非常不错的,不过性能嘛,就是对计算机需求还是有点需求的,就像你在玩全屏的 flash 网页游戏一样,如果计算机不够强劲,那么……

  LiveWallpaper 就是一个可以让你实现动画桌面的软件。目前版本为 0.3 版,大家如果用 Android 的手机系统的话,很可能已经使用过一款在手机上的更换桌布的名字非常一样的 LiveWallpaper 软件了。不过我们这个是在 Ubuntu 桌面系统上使用的,目前来说,我还不知道计算机桌面系统上的 LiveWallpaper 和 Android 系统上的 LiveWallpaper 有什么内在的关系。大家如果有知道的,不妨在这里说一说。

  LiveWallpaper 原来是 Compiz (Compiz 是基于 OpenGL 的混合型窗口管理器,是一个可以在 Linux 桌面系统内提供类似于 Vista 和 Mac OS 的 3D 桌面效果的软件) 的一个插件,现在的 0.3 版作为一个单独的软件发布了。可惜的就是软件目前只内置了一个旋转宇宙星空的动画桌面,短时间内我们只能看这个了,希望开发团队能尽快的做出其他的更多的动画桌面了。

  如同 Linux 上的其他软件一样,安装使用卸载都通过几行命令就可以实现了。

点击查看原始大图

  大家可以通过如下命令安装 LiveWallpaper 0.3 :

sudo add-apt-repository ppa:fyrmir/livewallpaper-dailysudo apt-get updatesudo apt-get install livewallpapersudo apt-get install livewallpaper-config livewallpaper-indicator

  安装完后,大家可以在 Dash 中找到它的图标启动它和配置图标来配置它。或者直接执行命令行来运行(livewallpaper)和配置(livewallpaper-config)它。配置选项众多,大家如果发现了什么好玩的配置参数,也来这里给大家共享共享哦。

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

Linux:Ubuntu 12.10 (Quantal Quetzal) 启用root登录

  Ubuntu 默认是关闭 root 账户,但是可以通过 sudo 来提升权限,这种做法也是比较安全的做法。

  在 Ubuntu 12.10 中使用 root 进行登录方法如下:

    1. 给 root 设置一个密码:sudo passwd root

    2. lightdm 启用手动输入用户名登录:

sudo sh -c ‘echo “greeter-show-manual-login=true” >> /etc/lightdm/lightdm.conf’

  执行完毕后重启,登录时点击 lightdm 下的登录按钮,输入 root 和密码即可使用 root 登录。

  如果有特殊用途可以尝试,但是强烈建议不要这么做,sudo 已经很方便了。

  顺便提示一个比较方便的命令:

https://dn-linuxcn.qbox.me/data/attachment/album/201210/28/160804oii9i6ooi89tdx6e.png

  如果忘记输入 sudo 可以使用“sudo !!” (!!代表上一个命令)。

来自:http://www.ubuntuhome.com/ubuntu-12-10-quantal-quetzal-root-login.html

Linux:RHEL6.3下载接口收藏

1、虚拟化

  • 提供一个 Virt-P2V工具,可以将windows和RedHat Linux的物理机转换成虚拟机,使用KVM进行部署。
  • 可以进行文件卷的在线resizing,提高了虚拟机的可用性
  • 增强qcow2磁盘镜像的存储性能,存取更加异步,从而降低vCPU占用和提高整体性能
  • 对虚拟机进行性能监控,采用vPMU,可以在主机上诊断虚拟机的性能。
  • 动态的vCPUs分配,不再需要重启,这个对计算资源伸缩有利(什么时候对内存可以在线伸缩?)
  • 虚拟机的休眠状态,支持S3、S4(休眠到磁盘、休眠到内存)

2、伸缩性

  • 最多支持的虚拟CPU数(vCPUs),从64提高到了160
  • 虚拟机支持的最多内存从512MB提高到2TB

 

3、存储

  • 全面支持FCoE,该特性还是预览测试阶段
  • LVM支持 raid4, 5, 6(以前这些raid是依靠MD来支持的),这样将存储管理的常见功能(创建卷、增缩卷大小、创建Raid、创建快照等)集成在一个界面里,简化了存储管理。该特性还是预览测试阶段
  • LVM支持 thin provisioned logical volumes(按需分配逻辑卷)。之前存储空间都是在创建的时候分配的,需要监控文件系统使用情况,手工增加卷空间。现在可以自动按需分配,自动扩展,不再需要人工干预。该特性还是预览测试阶段

4、支持 OpenJDK 7

5、Mysql InnoDB 的插件支持

这个插件,比内置的InnoDB引擎提供更多功能和更好的性能。

32bit下载 MD5: edd93cda6935bcf04c3381446764eb26

64bit下载 MD5: d717af33dd258945e6304f9955487017

这个网址不错:

Linux:《Linux服务器安装和配置教程》(Lynda.com Up and Running with Linux fo

中文名: Linux服务器安装和配置教程英文名: Lynda.com Up and Running with Linux for PHP Developers资源格式: 光盘镜像主讲人: Jon Peck发行日期: 2012年8月7日地区: 美国对白语言: 英语文字语言: 英文简介: 语言:英语网址:http://www.lynda.com/PHP-tutorials/Up-Running-Linux-PHP-Developers/101840-2.html类别:教程由Lynda出品的Linux服务器安装和配置教程。教学时长:1小时17分钟,主讲: Jon Peck教程所使用的软件:Linux, Apache, LAMP课程显示了如何安装和配置一个本地的Linux服务器,进行优化Web应用程序开发的Linux / Apache / MySQL / PHP的LAMP。Jon Peck介绍了组件和它们如何协同工作,告诉您如何安装和配置虚拟化Linux服务器,并详细介绍了如何配置Apache ,MySQL和PHP 。课程安装了几个主要的PHP开发框架和内容管理系统,从Linux命令行故障排除常见的安装和配置问题。Jon Peck启用Ubuntu的Linux发行版,课程内容也适用于其他的Linux发行版。Install and configure a local Linux server optimized for web application development with the LAMP (Linux/Apache/MySQL/PHP) software stack. Author Jon Peck describes the components and how they work together, shows you how to install and configure a virtualized Linux server, and details how to configure the additional stack elements: Apache, MySQL, and PHP.The course also explores topics such as working from the Linux command line, installing several major PHP development frameworks and content management systems, and troubleshooting common installation and configuration issues. The demonstrations are performed with the Ubuntu distribution of Linux, but are also applicable to other Linux distributions.Topics include:What is Linux and why should I use it?Introducing the LAMP stackCreating and configuring a virtual machineWorking with the command lineConfiguring the server components, including the Exim email serverBuilding a simple web site that connects to the local databaseInstalling Drupal, WordPress, and more on the serverTroubleshooting and maintaining Linux server componentsManaging the server with Webmin

  • [Linux服务器安装和配置教程].TLF-SOFT-Lynda.com.Up.and.Running.With.Linux.for.PHP.Developers-iRONiSO.bin
  • [Linux服务器安装和配置教程].TLF-SOFT-Lynda.com.Up.and.Running.With.Linux.for.PHP.Developers-iRONiSO.cue
  • [Linux服务器安装和配置教程].TLF-SOFT-Lynda.com.Up.and.Running.With.Linux.for.PHP.Developers-iRONiSO.nfo

 

Linux:Ubuntu使用CrossOver完美安装Office

前两天使用了 wine 来安装运行 Microsoft Office 软件,那么对于不想使用 wine 的人来说,我们还可以使用 CrossOver 这个软件。

CrossOver是一款让Linux和Mac上安装运行Windows软件的程序,CrossOver可以比较完美的运行微软的office软件。经过测试在Ubuntu 12.04和12.10上运行office十分稳定,如果在linux下需要经常使用office绝对值得一试。

第一步,先安装CrossOver,CrossOver是收费的,这里有我一份当时限时免费时下载的deb的包,大家可以下载安 装:

http://pan.baidu.com/share/link?shareid=114576&uk=1694675257。

在 Ubuntu 12.10 中最好使用GDebi进行安装,不要使用命令或者软件中心。

第二步,就是安装我们所需要的Windows软件了。CrossOver支持的软件不多,但是不代表其他的不能安装。

https://dn-linuxcn.qbox.me/data/attachment/album/201211/14/1038567lse2lez3dd0u4ng.png

  1. 先选择你需要安装的软件。(如果不存在可以选择下面不受支持的程序)
  2. 选择一个安装程序,你可以选择一个可执行程序,或者一个目录。(如果是iso文件请先用归档管理器进行解压,直接挂载可能有问题)
  3. 选择一个容器,没有可以创建一个容器,最好都安装到一个容器中。(容器名可以随时进行更改)
  4. 点击下面的安装进行安装即可。(安装过程同windows,有些软件安装界面出现方块字,但是不影响使用,安装时会帮你下载一些需要的软件和字体等)

office 07和10版本我在不同电脑上尝试过,安装速度比我在Windows上还要迅速,运行和Windows上没发现有啥区别。什么wps,永中office等都弱爆了,wps这么长时间连个beta版都没有,Alpha中也没有表格,wps得加加油。

visio 2010我没有安装成功,不知道什么原因。最后来张图:

https://dn-linuxcn.qbox.me/data/attachment/album/201211/14/103857mlmpq5izfy7ogl7m.png

来自:http://www.ubuntuhome.com/crossover-install-office.html

Linux:tty与console以及terminal的区别

           在看《orange‘s,操作系统的实现》这本书的时候,第七章同时出现了tty和console这两个名词。我查了一些网页,但都解释不清,结合自己的思考,给出了一些理解。

            tty,包括鼠标、键盘、触摸屏等,它们都是字符设备,通常用来输入

            console,它的作用是用来显示结果的,通常console是显示屏,它只能输出,不能输入。

           terminal的作用是与用户交互的,因此可以接收tty设备的输入。包括一套可以显示出来的图形界面来接收输入,再外加对这些输入的基本处理。

            windows开机后的界面就是我们面临的一个terminal,这个界面提供了一套对鼠标单击、双击、、拖动、敲击键盘等的支持,并且支持双击打开各种应用程序,并将结果通过屏幕显示给我们看到。

           在linux中,terminal比较直观的例子,是命令窗口。而console的直观例子就是显示屏。我们在命令窗口中敲命令,就会在屏幕上得到显示。比如ls以下,能看到文件夹中的内容,这是显示在屏幕上的。

          我们可以简化理解为:通常情况下,terminal接收tty的输入,并且进行处理,结果通过console来显示

          需要说得是:这三个词都可以翻译为终端,因此linux下很难区分这三个概念,特别混乱。

Linux:如何在Win8中的Hyper-V上快速运行Ubuntu

Win8中的Hyper-V安装Ubuntu

  Windows 8正式版已经发布将近一个月的时间,相信很多朋友已经体验过新一代的Windows8操作系统的一些新功能,Windows 8各种特性也逐渐展示出来,比如新的UI界面、全新操作方式、IE10、文件管理窗口Explorer新的Ribbon界面等等。

如何在Win8中的Hyper-V上快速运行Ubuntu

  当然,Windows 8的新功能远远不仅这些,而对于经常喜欢尝试新系统的用户来说,Windows 8还带来了一个全新的功能,Windows 8系统中内置Hyper-V 3.0的虚拟化技术。在Windows XP/Windows 7中并不具备这个功能,以前我们不得不使用VMware Workstation或VirtualBox来安装双系统,但用着些软件可能会导致VPN客户端和一些其他的问题。

  如今Windows 8操作系统中内置了最新的Hyper-V 3.0,让用户可以很容易的就安装,我在之前的文章《亮瞎你的眼:3分钟搞定Win8中的Hyper-V》中已经介绍了如何在Windows 8中安全Hyper-V,这里将为大家讲解一下在Windows 8中的Hyper-V中如何安装Ubuntu 12.10。

  让我们来看看在Windows 8中的Hyper-V安装Ubuntu Linux是多么容易

 

如何在Win8中的Hyper-V上快速运行Ubuntu 运行Hyper-V

  运行在Windows 8中的Hyper-V

如何在Windows 8中的Hyper-V上运行Ubuntu快速
命名

  从Windows 8的Hyper-V管理器中,创建一个新的虚拟机。打开Windows 8的Hyper-V的向导,我们首先需要给虚拟机命名描述性名称。我们就安照安装的版本命名为Ubuntu 12.10。

  附:(点击查看)Win8操作系统公司白领应用反馈视频调查。

Linux:Linux 下查看某一个程序所使用的内存方法

在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里给大家列举几个:

1:

top -p pid 查看程序的情况

2:

ps -aux | grep process_name

3:

cat /proc/pid/status

  这里会打印出当前进程详细的情况,其中,内存是 VmRSS。

Linux:Firefox OS 模拟器

  为了方便网页开发者为 Firefox OS 及 Firefox Marketplace 测试程序,Mozilla 发布了 Firefox OS 模拟器安装扩展,在现有稳定 Firefox 稳定版本亦可使用。

  有了这个扩展的帮助,搭建 Firefox OS 开发环境易如反掌。由于 Firefox OS 应用程序开发基于 HTML5 的网页技术,所以相比其他移动平台,其所谓“模拟器”也简单许多。

  扩展安装完成之后会自动打开模拟器控制中心,也可以在开发者菜单中找到它。

  在那里你可以直接指定本地的 Web 程序 Manifest.xml 文件,或者云端的 Github 地址,它们会直接加载到模拟器中运行,非常方便。 之后点击左侧的滑块启动模拟器就可以了,意料之中的瞬间启动。当然,这里只能用鼠标模拟触屏操作了。

  毫无意外的是开发、调试等一系列操作都可以通过 Firefox 内置的网页开发工具完成。

  身为网页开发者的您,还等什么呢?什么,手把手教程?看这里

消息来源:Mozilla Hacks

来自:http://linuxtoy.org/archives/firefox-os-simulator.html

Linux:给 man pages 设置颜色

Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。在windows中F1可能不经常用,但在linux中man命令可是比不可少的。

默认的man pages 只有一种颜色,有些文字是进行加粗的,习惯了vim的颜色高亮显示,man pages显得单调很多:

点击查看原始大图

方法比较简单:

打开/etc/bash.bashrc(需要root权限)或者~/.bashrc文件加入如下内容:

# Set colors for man pages
man() {
  env \
  LESS_TERMCAP_mb=$(printf "\e[1;31m") \
  LESS_TERMCAP_md=$(printf "\e[1;31m") \
  LESS_TERMCAP_me=$(printf "\e[0m") \
  LESS_TERMCAP_se=$(printf "\e[0m") \
  LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
  LESS_TERMCAP_ue=$(printf "\e[0m") \
  LESS_TERMCAP_us=$(printf "\e[1;32m") \
  man "$@"
}

重新打开终端,现在执行man就有颜色了。

该脚本其实定义了一个man函数,每次我们执行man的时候都是执行的该函数。如果执行原始的man运行/usr/bin/man 即可。

来自LinuxDeepin博客,并进行一定的修改。

来自:http://www.ubuntuhome.com/man-pages-set-color.html

 

 

Linux:ScreenCloud: 截图及分享工具

ScreenCloud 是一款简单易用的跨平台截图工具,支持 Linux 、Mac 及 Windows 。同时它也提供在线图片分享服务,用户可以利用 ScreenCloud 截图后并在线分享屏幕截图。

除了支持 ScreenCloud 本身的图片分享服务外,它还支持 FTP 及 SFTP ,最新版还支持 Dropbox , Imgur , Ubuntu one 等第三方存储服务。

点击查看原始大图

项目主页: http://screencloud.net/

ScreenClound 已进入 Ubuntu 官方软件源,用户可通过以下命令直接安装:

sudo apt-get install screencloud

来自:http://wowubuntu.com/screencloud.html

Linux:最全的 Twitter Bootstrap 开发资源清单

Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,由Twitter的设计师Mark Otto和Jacob Thornton合作开发。Bootstrap提供了优雅的HTML和CSS规范,它由动态CSS语言LESS写成,与CSS框架Blueprint存在很多相似之处。Bootstrap推出后颇受欢迎,一直是GitHub上的热门开源项目。

Bootstraphero网站搜集了大量关于Bootstrap的开发资源,本文列举如下(关于这些资源的介绍请参阅原文或资源链接)。

一、组件(用来扩展Bootstrap的基本功能)

显示组件

表单组件

输入组件

二、框架集成(将bootstrap集成到你的应用框架或cms中)

ASP

Java

JavaScript

Joomla

PHP

Python

Ruby

WordPress

三、界面构建(一些用于设计bootstrap布局结构或其他方面的可视化工具)

显示

架构

主题

四、模板工具

五、工具和服务(使bootstrap开发更快、更容易)

开发工具

服务

六、教程

文章

演示

视频

七、JavaScript扩展(基于Bootstrap的JavaScript/jQuery插件)

原文:The Big Badass List Of 180 Useful Twitter Bootstrap Resources

译文:http://www.iteye.com/news/26653

Linux:如何改造 Linux 虚拟终端显示文字

简介: 本文就 CJKTTY 补丁如何让 linux 虚拟终端显示汉字的原理进行了讨论,为此介绍了 Linux 虚拟终端和其依赖的硬件的工作原理。过程中我们分析了 Linux 字符终端的不足之处,并向读者介绍前沿的 Wayland system compositor 是什么以及为什么 需要它。

CJKTTY 补丁是什么,为什么我写了它

  当你不使用 X 的时候,打开电脑,你就在使用虚拟终端。这么多年来它工作的很好,直到它来到了中国。包含中文字符的文件名无法正确显示,中文文档无法阅读。当然可以使用 X , 但是我为什么不能让终端也能显示汉字呢?如果在 X 下我能让屏幕显示汉字,终端下一定也能。为此我开始了 internet 上的搜寻。 我找到了 fbterm,这是个可以利用 /dev/fb0 实现的终端模拟器,和 XTERM 一样,只不过 XTERM 利用的 X 绘制文字,而 fbterm 直接写入 /dev/fb0。

/dev/fb0 是什么?

帧缓冲区设备。帧缓冲区是一块存储区域(内存或者显存或者其他的输出设备的存储空间),内核将其抽象为一个设备。通过访问该设备就能访问帧缓冲区。帧缓冲区的内容既是屏幕映像。由输出设备不停的扫描帧缓冲区生成显示设备的控制信号。

  然而我似乎总是忘记登录后开启 fbterm,对我来说,等看到乱码的时候突然想起没有开启 fbterm 并不是那么愉快的经历。这只是其中一个缺点。fbterm 占用了帧缓冲区设备,导致 w3m 这类使用帧缓存绘制图像的终端 www 浏览器不能正常工作。许多依赖帧缓冲区设备的终端程序都不能被 fbterm 良好的兼容。 于是我继续寻找,找到了 youbest 写的中文补丁。 我有个喜欢使用最新内核的习惯,当内核升级导致 youbest 的补丁再也不能使用的时候,我开始到 youbest 发布补丁的页面留言,希望 youbest 百忙中能修改一下他的补丁。

  Youbest 似乎很忙,在新内核的诱惑下,我决定自己在修改。那个时候我才真正的开始看内核的代码。终于了解了虚拟终端的工作原理后,我开始修改内核。由于内核内部结 构变动导致 youbest 的补丁无法应用,我几乎是从头开始了开发而不是简单的将无法应用的部分进行修整。唯一得到保留的就是 youbest 补丁中的点阵字库。我将其命名为 CJKTTY , 取能显示 CJK 的 TTY 之意。

从那里获得中文显示补丁呢?

  我将补丁托管在了 http://repo.or.cz/w/linux-2.6/cjktty.git,依据你使用的内核版本,签出内核版本 -utf8 分支就可以。

控制台是如何显示文字呢?

  那么,为了能在控制台下显示出汉字到底需要做什么样的修改么?在开始前,我想先介绍一些名字,并介绍一些控制台在硬件上是如何进行文字显示的。 首先我解释一下几个名词,知道的人可以到这里开始阅读。

UNICODE

  为每一个字符分配全球唯一的一个数字,但是并没有规定这个数字的表示方法。数字的表示方法由 UTF 规范规定。UTF-16 使用 2 个字节表示一个 UNICODE 数字,但是对于 >=216的数字使用 4 字节来表达。UTF-8 则对于

GLYPH

  GLYPH 指的是字体里的字形。字符总是要在特定的字体下表示的,该表示就是字形。比如一个只包含 26 个大小写字母的字体,只包含了 52 个字形,如果该字体是先大写后小写排列的,那么数字 0 就表示字形 ‘A’ , 数字 1 就表示字形 ‘B’。UNICODE 或者 ASCII 到 GLYPH 的映射是由一个称作 CMAP 的映射表做的。如果字体里字符就是按照 UNICODE 排列的,则其 CMAP 就是 UNICODE CMAP。同理也有 ASCII CMAP。 VGA 自带字体没有提供 CMAP,操作系统假定它的 CMAP 是 ASCII CMAP。事实上也是如此。

TTY

  内核为终端提供的接口,对应用程序而言就是 TTY 设备。通常是使用 stdin stdout 来访问。TTY 提供各种 IOCTL 用来设置终端的模式。TTY 也提供了用户控制程序的方法,比如 Ctrl-C 终止当前程序。 TTY 可以是显示器 + 键盘构成的控制台,也可以是串口(可以通过猫链接到电话线上),可以通过 pts 模拟。XTERM 即利用 pts 为里面运行的程序提供的模拟的终端 , 对应的设备文件 /dev/pts/* 由模拟终端程序动态创建。

控制台 (CONSOLE)

  控制台特指由显示器 + 键盘构成的终端。其中显示器由显卡控制,而且当前 VGA 兼容显卡有两种模式,文字模式和图形模式。Linux 即可以使用文字模式也可以使用图形模式。

  控制台对于程序是无法访问的,程序只能通过虚拟终端使用控制台

虚拟终端 (VT)

  如果你的电脑只有一个终端,那将是多么乏味。一个需要长时间执行的任务就能导致你什么也做不了,Linux 的多任务机制的好处荡然无存。所以,你需要更多的终端。Linux 内核使用复用机制,将一个控制台复用为多个终端 (63 个,/dev/tty1 到 dev/tty63)。 按键 Alt+F1-F12 ( 如果当前在 X 中,需要再按下 Ctrl 键 ) 能在 12 个终端中进行切换。事实上你拥有 63 个终端,键盘只能切换其中的 12 个,其他的终端你可以通过 chvt 命令进行切换。

  当前拥有显示器和键盘的虚拟终端被称为活动终端或者当前终端。

TTY、控制台和虚拟终端有啥区别和联系?

  当你按下 Ctrl-C 的时候,当前执行的程序会被终止。因为 Linux 发送了 SIGTERM 信号给此终端的前台程序。该信号并不是由 Shell 产生,而是内核。不论是在虚拟终端下,还是在 X 里的终端模拟器里,这个功能都是一样的。终端的一大功能就是进行任务控制,另一个功能是输入输出。输入输出模式下,还可以选择行编辑模式,回显模式,设置 终端速率等等。不管你使用的是何种终端,这些功能都是存在的,因为他们都是一个类型的设备。内核将他们抽象为 TTY 设备。也就是说,应用程序都是在和 TTY 这个抽象层打交道,而不是和具体的设备打交道。 能作为 TTY 的设备除了控制台外,还有串口。将两台电脑的串口连接起来,其中一台电脑为串口打开登录程序(执行 /sbin/agetty ttyS0 38400),另一台就能通过可以进行串口通信的程序 ( 比如 putty、minicom) 登录对方。 控制台可以作为 TTY 设备,但是一台电脑一般只有一个屏幕,也就使用一个控制台,所以 Linux 在控制台和 TTY 之间加了一层虚拟终端。由虚拟终端将控制台复用,这样就可以使用多个终端而不是只有一个了。多个虚拟终端设备合作使用一个控制台。 除了串口和虚拟终端,这些都是在内核实现的 TTY 设备,内核还提供了一个叫 PTY 的为终端设备,XTERM 之类的程序利用 PTY 提供的功能可以在程序里实现 TTY 的功能。 那么,虚拟终端就是利用控制台复用出了多个 TTY 。TTY 逻辑由 TTY 子系统完成,复用逻辑由虚拟终端实现,而具体的显示则交给控制台完成。如果说这是一个观察者模型的话,控制台就是观察者,它将虚拟终端的内容呈现到屏幕 上。 在 Linux 下,控制台分文字模式控制台(vgacon)和图形模式控制台 (fbcon)。

文字模式控制台 (VGA 文字模式 )

  文字模式控制台使用 VGA 兼容显卡的文字模式实现 VGA 兼容显卡初始化时默认就处于文字模式,能显示 80×25 个字符。

  在文字模式下,显卡虽然输出给显示器的是图像,但是显卡提供给内核的却只能显示文字功能。要显示一个字符,内核将要显示的字符的代码和属性写入字符缓冲区相应地址即可。缓冲区如下面所示:

图 1. 缓冲区 图 1. 缓冲区

表 1. 每个字符的格式

属性字节 字符字节
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
闪烁 背景色 前景色 GLYPH

  VGA 显卡处于文字模式时,物理地址 0xB8000 即文字缓冲区起始地址,大小由其文字模式决定,最大 32KB 。VGA 显卡内建字符发生器,不断的扫描字符缓冲区并将文字转换为图形驱动显示器显示。其 GLYPH 即为字符的 ASCII 码。

字符发生器和字体

  字符发生器内建一个或者多个位图字体。使用何种字体取决于设置的文字模式代码。Linux 默认使用 80×25 字符 16 色模式 , 每字符 8×16 点阵。 字符发生器的字体包含 256 个字形。字符发生器里的文字和字符的对应关系在 DOS 系统下被称为代码页。显卡自带的被称为 OEM 代码页。

  字符发生器的字体可以修改。DOS 下通过修改代码页实现。Linux 下可以使用 setfont。

  因为这一历史原因,VGA 的文字模式最多同屏出现 256 种不同的字符。对于只有 26 个字母的拉丁文字绰绰有余,但是却无法满足拥有上万字符的中文。 文字模式控制台由 vgacon (drivers/video/console/vgacon.c)实现。 VGA 还有不常使用的单色文字模式,起始地址为 0xB0000 。并且字符格式也有所不同,这里不再介绍。

图形模式控制台

  图形模式控制台直接操作帧缓冲区显示文字。帧缓冲区是一块存储区域(通常是在显存中),其内容就是显示在屏幕上的图像。显卡直接将其内容转化为显示器控制信号。对于程序而言,帧缓冲区就是屏幕。

  图像模式控制台使用帧缓冲区作为屏幕输出,要想使用图像模式控制台,必须加载帧缓冲区驱动并有相应的硬件。

  不同的显示设备通常使用不同的帧缓冲区驱动,对于 VGA 兼容显卡,除了能使用针对显卡写的帧缓冲区驱动 ( 如果有的话 ),还可以使用通用的 VESA 驱动。 VESA 驱动利用 VGA 兼容的显卡的 BIOS 将显卡转入 VGA 图形模式并设置期望的缓冲区模式,由显示模式内核参数 vga= 给出。 VGA 图形模式下,帧缓冲区的起始地址为 0xA0000 ,最大 64KB 大小。像素格式看显示色深。典型的 256 色模式下每像素一个字节。 如果 BIOS 支持 VBE 扩展,能设置更大的分辨率和色彩深度,帧缓冲区大小也会超过 64KB,因而起始地址也不再是 0xA0000,具体细节请参考 基百科. 帧缓存模式下,Linux 内核将需要显示的字符首先转换为位图,然后将位图字体写入帧缓存即可变呈现于屏幕。 也就是说,图形模式下,由内核来承担字符发生器的工作。理论上来说,这个内核自带的字符发生器将能支持显示多于 255 种字符。但是我将在后面告诉读者,因为历史原因,内核实现的字符发生器和 VGA 的字符发生器有着一样的缺点。 图形控制台由 fbcon(drivers/video/console/fbcon.c)实现。图形控制台由于需要生成位图字形,需要带上位图字体,编译内核的时候至 少需要选择一个字体。位图字体在内核是一个大数组,不同的字体 ( drivers/video/console/font_* ) 存储在各自的数组中。

为何图形模式控制台也不能显示汉字

  要解释图形模式控制台为何不能显示汉字,首先我们来了解一下虚拟终端是怎么管理屏幕上的文字显示的。 虚拟终端的实现在 drivers/tty/vt/vt.c 。代表虚拟终端的数据是 struct vc。

 struct vc{
	 struct vc_data;
	 struct work_struct;
 };
故而 struct vc_data 才是我們要的虛擬終端的定義。我們先來看看 struct vc_data 到底定義了什麼東西吧。
 struct vc_data 的定義在 include/linux/console_struct.h, 定義摘錄如下,爲了不延長篇幅,有省略的部分:
 struct vc_data {
	 struct tty_port port; 			 /* Upper level data */
	 unsigned short 	 vc_num; 			 /* Console number */
	 unsigned int 	 vc_cols; 		 /* [#] Console size */
	 unsigned int 	 vc_rows;
	省略 ...
	 const struct consw *vc_sw;
	 unsigned short *vc_screenbuf;  /* In-memory character/attribute buffer */
	 unsigned int 	 vc_screenbuf_size;
	省略 ...
 };
      

  其中 vc_screenbuf 存储了虚拟终端要显示在屏幕上的文字。 const struct consw *vc_sw 指向控制台驱动提供的函数。虚拟终端利用里面的函数指针调用相应的操作,比如重绘屏幕,绘制一个字符等等。这些操作由 vgacon 和 fbcon 等控制台驱动实现。 当你切换终端的时候,实际上就是把当前终端设置为你要切换过去的终端,并且重新绘制当前终端 vc_data->vc_screenbuf 存储的内容。 当你从键盘输入命令或者程序运行过程中要输出内容的时候,虚拟终端首先将输出的字符进行编码转化,转化为对于字符的 GLYPH 代码,并且将 GLYPH 和当前字符属性结合,最后将合成结果写入当前光标所处的位置。内核中实际的算法要复杂的多,还牵涉到中断,但是为了简单快递的把我们关心的部分的核心表达 出来,我使用一下伪代码表示不那么严谨的过程。希望了解全部的读者可以自行查看内核相关的代码,主要代码在 drivers/tty/vt.c 的 do_con_write() 中。

清单 1. 伪代码

 vc_write(vc_data * vc, const char * string, int count){
            for( ; count ; ){
   /* 和当前编码有关,如果是 utf8 就以 utf8 方式解码不是 utf8 就按照 扩展的 ASCII 方式,也就是一个字节就是一个字母。*/
        int glyph = next_char(vc->utf,&string,&count);
        int c = vc_build_attribute(vc)|(vc_glyph_mask& glyph);
        // 把当前设置的前景色背景色等属性结合 ,glyph 不能超过描述它的位段 ;
        vc->vc_screenbuf[vc->vc_pos] = c; // 写入当前位置
		 update_pos(); // 更新当前光标位置
     }
     notify_redraw(vc); // 调用 cosole 这个观察者重会屏幕
 }
      

  你也许想知道 vc_screenbuf 指向的缓冲区的格式到底是怎样的,现在也可以回答 前面提 到过的为何图像控制台依然不能支持汉字显示的问题了:vc_screenbuf 的格式就是 VGA 文字模式时显卡所使用的文字缓冲区格式。上述伪代码中的 vc_glyph_mask 就是 0xFF, 也就是 glyph 被截断只能 8 比特长度。 打从一开始,fbcon 就是按照 VGA 字符发生器设计的。因为当 vc_screenbuf 的格式和 VGA 字符缓冲区的格式一致的时候,切换终端就可以只需要 memcpy ——快速的拷贝到 VGA 字符缓冲区就能实现“重绘”当前终端。现在看来这种做法局限性非常大,但是单年 PC 性能还不够强大的时候,能做到快速的重绘是非常重要的。 重绘例程中,notify_redraw(vc) 用伪代码表示为

清单 2. notify_redraw(vc) 伪代码

 notify_redraw(vc_data * vc){
   for(int rows = 0 ; rows < vc->rows ; rows ++){
    unsigned short * current_line = &
        vc->vc_screen_buf [vc_size_row * rows + vc->vc_visible_origin ] ;
     // 在屏幕的第 row 行第 0 列绘制一行 current_line 指向的内容共 vc->cols 个字符。
     vc->vc_sw->con_puts(vc,current_line,vc->cols,0,rows);
   }
 } 

  vc_sw 是个由控制台代码提供的指针,类型为 structconsw * , 控制台驱动的初始化部分会使用 vt_unbind() 将自己绑定为虚拟终端使用的控制台,传入的信息中就包括 vc_sw。 在 vgacon 中 vc_sw->con_puts 事实上就是将要显示的内容简单的拷贝到 VGA 的字符缓冲区。对于 fbcon 而言则要复杂的多。 fbcon 提供的 con_puts 将 glyph 作为一个下标在 vc->vc_font 中找到对应的位图数据,然后拷贝到帧缓冲区。 TTY-> 虚拟终端 -> 控制台 -> 屏幕的路径用一幅图片表达为:

图 2. 路径 图 2. 路径

图形模式控制台的改造

  fbcon 将 glyph 作为下标到 vc_font 中获取位图数据,而 glyph 要么是一个 unicode (vc->utf=1 的时候,当然是被截断到 8 个比特)要么就是扩展的 ASCII 代码。 由于扩展 ASCII 只有 8 个比特位表示一个字符,所以只能请出 unicode 作为中文的数字表示。要想控制台能支持汉字显示,需要解决 3 个问题:

  1. 必须使用 UTF-8 模式 ( 默认 vc->utf=1 即可 )
  2. 虚拟控制台的 vc_screenbuf 必须修改以为 glyph 提供至少 16bit 的空间。
  3. 图形控制台需要 vc_font 包含更多的字符,不只是 255 个,并提供代码绘制双倍宽度的中文字形,字体中的字符按照 UNICODE 排列,这样 glyph 就是字符的 UNICODE 编码。

修改虚拟控制台

  一开始,我的打算是 vc_screenbuf 修改为 unsigned long long* 类型,32bit 给字符属性,分别表示 16bit 终端前景色和背景色。glyph 则拥有 31bit 的空间 , 因为汉字的宽度为双倍的英文字母 ,其中 1 bit 用来表示双字符宽度。比如 ‘我’ 会表达为 两个 ‘我’,第二个’我’的最高位为 1:绘制任何字形的时候,只绘制字形的左半部分;如果发现最高位为 1 则绘制字体位图中的右半部分。这样同样的绘制代码可以适应英文字母和汉字。 写入 vc_screenbuf 的时候, 如果是双倍宽度的字符,需要同时写入两份,第二份的最高位置 1 就可以。 但是 vc_screenbuf 的格式已经被到处假定为每字符两个字节。如此修改导致牵一发动全身。许多艰涩难懂的代码都依赖 vc_screenbuf 是 每字符两个字节的设定,直接修改定义后,光是编译器能直接检测出来的就有百余个地方需要修改,还有更多的逻辑并不能被编译器检测出来。 如此修改的后果就是会出现许多隐晦的错误,非常难于调式。挣扎后,为最终选择了另一条道路 :

为汉字重新分配一块 vc_unicode_screenbuf

  vc_unicode_screenbuf 紧挨着 vc_screenbuf , 事实上 vc_screenbuf 在分配空间的时候,多分配了一倍的空间,多分配的空间充作 vc_unicode_screenbuf,因此 struct vc_data 里并没有添加 vc_unicode_screenbuf 成员。 vc_unicode_screenbuf 同样为每字符 2 个字节,并不包含字符属性,所以 2 个字节如数用来保存 glyph。vc_screenbuf 格式未变,所以 vgacon 不需要修改,这就减少了大量的工作量。 向 vc_screenbuf 写入字符的时候,同时写入一份到 vc_unicode_screenbuf 。如果是汉字,由于其 glyph 大于 254 , 所以 vc_screenbuf 的那两个字符 ( 汉字双倍宽度 ) 实际写入的是 0xff 和 0xfe ( 故而上文提到是 glyph 大于 254 的字符 ,0xfe 被保留它用了 )。0xff 表示该字符的 glyph 要到 vc_unicode_screenbuf 提取,然后绘制左半部分;0xfe 表示该字符的 glyph 要到 vc_unicode_screenbuf 提取,然后绘制右半部分。对于 glyph 大于 254 但是又不是双倍宽度的字符,就不需要 0xfe 作陪了。 比如屏幕上显示的文字是黑底白字的 “牛 B” , vc_screenbuf 的内容就是 “0x00ff, 0x0ffe, 0x0f42 ” , vc_unicode_screenbuf 的内容则是 “牛 , 牛 ,b” 。这是因为一个汉字为两倍的英文字母宽度。在屏幕文字缓冲区上也必须占用两个字符的位置。并且必须有一种机制能知道应该绘制左半部分和右半部分,我使用的 就是 0xff 和 0xfe。

修改图形控制台绘制代码

  要修改的地方只有 3 个。

  1. struct console_font 添加 charcount 成员。将主线内核的字体设置为 charcount = 255。 主线内核带的字体都是 255 个 glyph 的,所以没有添加字符个数的必要。不过我们即将要添加的字体会有数万字符。
  2. 添加一个新的字体,复盖 UNICODE BMP 基本区域的所有符号。
  3. 修改字符绘制代码,添加 vc_unicode_screenbuf 的支持。

  字符绘制代码的修改比较繁琐,代码分布在 drivers/video/console/ 下的多个文件中。fbcon_putc(s) 由由 vc->vc_sw->con_putc(s) 调用, fbcon_putc(s) 转而调用分散于 drivers/video/console/ 的多个 puts 实现。因为终端要支持 console_rotate , decoration , timing , 故而每种模式下的绘制实现都是不同的。 我拿 drivers/video/console/bitblt.c 最常用的不倾斜、不加装饰等的终端模式为例来讲解绘图部分的修改。 由于中文字体为 16×16 点阵,是对齐的字体,故而其绘制代码为 bit_putcs_aligned() 原先的代码以 glyph 为下标到 vc->vc_font->data 获得字体数据,然后调用 fb_pad_aligned_buffer 执行块拷贝操作。 我的修改很简单,原来获得字体数据的代码修改后放入 font_bits() 辅助函数。 在 font_bits 里,要判断 glyph 是否为 0xff 或者 0xfe, 如果不是,使用 glyph 为下标获得字体的左半部分后并返回。 如果是,则从 vc_unicode_screenbuf 获得真正的 glyph 数值,然后再依据现有的 glyph 是 0xff 还是 0xfe 去获得字体的右半部分还是左半部分返回。font_bits 获得字体数据后执行 fb_pad_aligned_buffer 块拷贝。 需要修改的地方还有 drivers/video/console/fbcon_ccw.c fbcon_cw.c fbcon_ub.c 。依原理进行修改即可。

虚拟终端的不足之处

  虽然费尽心机添加了中文支持,那只是一个 workaround , 并不能算真正的支持。要真正的支持必须彻底重写虚拟终端和控制台。而要支持中文,就需要更进一步,全面支持 UNICODE , 包括支持从右向左的书写习惯。 在内核里实现一个全面支持 UNICODE 的控制台并不是一件容易的事情,何况内核的政策也不允许将如此庞大的字库装入内核。于是乎,这里出现了死胡同。KMS 和 Wayland 的出现让这死胡同似乎有了个完美的解。

KMS:

KMS 是内核模式设置 (Kernel Mode Setting)的缩写。传统上内核使用 VGA 模式,该模式由 BIOS 或者 bootloader 设置。如果启动 Xorg, 则 Xorg 使用自己的驱动将显示模式进行切换。这导致内核并不知道显卡的当前工作状态,虚拟终端切换必须依赖 X 进行。X 锁死会导致整个终端被锁定无法进行切换。待机、休眠等功能必须依靠 X 和内核双方进行深度合作才能实现。让一个用户程序搞垮内核是不可以接受的,故有 KMS , 希望通过把模式设置代码移入内核,减少内核对 X 的依赖。

  如果不使用 X , KMS 对于控制台来说就是支持了显示器的本地本分辨率。KMS 优势并不显着。但是 Wayland 的介入使事情发生了变化。 有关于 Wayland 的详细文档请参考 freedesktop.org 上的 项目首页。Wayland 并不只是对桌面带来了福音,同时也为控制台带来了福音,因为 Wayland 可以代替内核自身的虚拟终端和控制台实现。 而这个代替者就是 System Compositor

System Compositor?

  System Compositor 是一个 wayland compositor,只是运行于系统全局范围。

  为了懒人我这里稍微讲解一下 wayland compositor 吧。 Wayland 不同于 X , 在 wayland 的世界里,只有 compositor 和 client。Client 利用各种 API (wayland 给出的示例使用的是 OpenGL ES, 但其实 wayland 并不限制使用的绘图 API 类型 ) 进行窗口绘图,然后将窗口的绘制结果直接提交给 compositor 合成到屏幕上。这样 wayland 本身就不包含绘图 API 而大大简化了 wayland 的设计。Wayland compositor 可以同 X 一样操作显卡向屏幕输出合成后的结果,也可以作为另一个 wayland compositor 的 client。

  对于多账户同时登录的实现,固然可以让每一个本地 GUI 会话开启一个 wayland compositor,但是存在更好的办法就是固定开启一个 system compositor。而让所有用户会话的 wayland compositor 再作为 system compositor 的 client. 藉由 system compositor 的合成效果,进行快速用户切换也可以进行一些视觉效果。而且 Xorg 本身也已经支持作为 wayland client 运行,这样可以使用传统的 X 提供桌面,而让 wayland system compositor 实现终端切换。 这还有一个好处,只有 wayland system compositor 是以 root 运行的,而用户会话的 compositor 或 X 就不必以 root 权限运行。 因为 Wayland 非常轻量,所以 system compositor 可以作为系统级服务常驻内存运行。而因为有了 system compositor , 内核也不再需要实现虚拟终端了:只需要实现终端模拟器作为 system compositor 的 client 。由于是在用户空间实现的,所有可以加入 UNICODE,矢量字体,国际化的书写习惯等等的支持,再也不用受限于内核啦。 Wayland 还是一个非常年轻的项目,Wayland system compositor 目前还只是设想中的概念,需要更多的人关注参与。笔者相信不久的将来 wayland 一定能大有作为。

写在最后

  本篇简要介绍了 Linux 虚拟终端的工作原理和依赖的硬件细节实现,然后使用了不太优雅的办法让虚拟终端在帧缓存模式下实现汉字的显示。让大家对虚拟终端有了一点点更多的了解,希 望本文能对想了解 Linux 的人有所帮助。也再次感谢 IBM DevelopWorks, 它让我有机会把自己的知识共享给更多的人知道。

关于作者

蔡万钊, 自由职业

Linux 爱好者 , 喜欢使用 Gentoo 发行版,目前是 Gentoo-zh Overlay 维护者。喜欢捣鼓系统,是个爱折腾的人。

来自:http://www.ibm.com/developerworks/cn/linux/l-cn-termi-hanzi/index.html

Linux:开始使用 Markdown

本文面向不了解 markdown 或刚准备上手的同学。

它是什么

首先,什么是 markdown?我们可以直接看一下 WIKI……不过 wiki很长,让人没有耐心读下去。那么,简单来说,markdown 其实是一种轻量级的标记语言;或者说,它规定了一些文本的书写格式,就像这样:

写上你的标题
============
开始书写正文吧
当然也可以用 *列表* 的形式:
 * 列表项目
 * 还是列表项目

上面这一段东西就是 markdown 了——它看上去和普通的文本没什么两样,只不过文字“被一些标记 格式化”了,所以看上去会感觉比较漂亮,书面化一点形容叫做 具备更高的可读性

这一段 markdown 给我们的直观感受是我们能够清楚地识别出其中的“标题”、“段落”以及“列表”,对,就和我们熟知的 html 一样,用来格式化内容

为何使用

接下来的问题自然是,我们为什么要使用 markdown?

我们可以把这个问题进一步拆分为三个问题:

  • 使用 markdown 而不是 html 的好处在哪
  • 在哪些场景下使用?
  • 这个东西的普及度如何?(这意味着它的前途)

接下来一一回答:

  • 前文已说,markdown 和 html 都是一路的标记语言,用来格式化内容。而内容之所以要显得很格式化,是因为这样我们更容易阅读和理解。被渲染后的 html 是很可读的,但是 html 代码读起来就很糟糕,因为它夹杂着大量 ;而 markdown 不管是写还是读,都很舒服

    有一点需要注意的是,markdown 并不是为了取代 Html,因为根本取代不了。Markdown 的理念是,能让文档更容易读、写和随意改。HTML 是一种发布的格式,Markdown 是一种书写的格式

    最后一点,markdown 可以被编译为 html,比如使用在线的 Pandoc

  • 我个人认为,我们在 txt 上写的文档或随手记之类的东西,就完全可以使用 markdown,简单且美观

    另外,最重要的一点,我们可以在 支持把 markdown 编译为 html 的地方书写 markdown,好处是显而易见的:书写简单、展现美观。典型的场景有:github 仓库的 README 描述文件、github 中的issue、评论框等。总而言之,把它用在要写文档的地方,妥妥的

  • 我们知道,这世界上还有很多类似于 markdown 的轻量级标记语言,比如形形色色的 wiki 语法。所以,我们凭什么使用 markdown 而不是 markup 或者 wikidown?

    答案很简单,因为它很流行。至少著名的程序员社区如 github 和 stackoverflow都提供了对它的大量支持

说了那么多,结论就是,学习并且使用 markdown,必须的!何况 markdown 学起来非常简单

语法简要介绍

接下来会非常简单地介绍一下语法,而详细的语法大全可以直接去 作者的官网 查看。作者对语法的介绍富有条理且细致入微。

语法介绍之后会着重说一下几个比较给力的特性,这个部分是重点

部分语法如下:

  • 使用一个或多个空行分隔内容段来生成段落 

     

  • 标题(h1~h6)格式为使用相应个数的“#”作前缀,比如以下代码表示 h3:

    ### this is a level-3 header ### 
  • 使用“>”作为段落前缀来标识引用文字段落。这其实是 email 中标记引用文字的标准方式:

    > 引用的内容
    > 这个记号直接借鉴的邮件标准 
  • 使用“*”“+”“-”来表示无序列表;使用数字加“.”表示有序列表。如:

    1. I am ordered list item 1...
    2. So I should be item 2!? 
  • 使用 4 个以上 空格或 1 个以上 的 tab 来标记代码段落,它们将被

     和  包裹,这意味着代码段内的字体会是 monospace家族的,并且特殊符号不会被转义。
    1. 使用 [test](http://example.net “optional title”) 来标记普通链接。

    2. 使用 ![img](http://example.net/img.png “optional title”) 来标记图片。

    引号内的 title 文字是可选的,链接也可以使用相对路径。

  • 使用 * 或 _ 包裹文本产生 strong 效果:

    _语气很重的文本_ 以及 **语气更重的文本** 

给力的特性

  • 普通换行并不产生新的段落或 ,但是产生空格。

    其实这个和 html 对 line-break 换行 的处理方式是一致的。为了使文本良好地展示在视野内,我们会选择 手动地 将文字折行,但是并不意味着这两行在逻辑上不是一个段落。

    我们也可以插入真正的手动换行符 ,如果要问  在什么时候有用,下面是一个例子:

    我 其实 是一首 诗……

    楼上 这一段 说得漂亮!

  • 支持 setext-style 的 header 定义:

    1. 定义 h1:

      THIS IS THE MAIN TITLE
      ====================== 
    2. 定义 h2:

      This is the subtitle
      -------------------- 

    更低级别的 header 就无法使用这种方式定义了。我们不用管 setext-style 是什么意思,只需要知道这种标记方式更能凸显文章标题

  • 在 blockquote(“>”标记的段落) 之内可以嵌套使用其他标签,甚至可以再嵌套blockquote——

    上古神书《商古》写道:
    > 今有一鼎,镌以奇文:
    > > 吾乃鼎,非杯具也。 
  • 支持引用式的链接格式。什么叫做“引用式”的链接呢,举例来说,对于本文中的一段文字,相应的 mkd 代码是:

    首先,什么是 markdown?我们可以直接看一下 [WIKI][1]……
    另外,markdown 可以被编译为 html,比如使用在线的 [Pandoc][2]
    [1]: http://en.wikipedia.org/wiki/Markdown "wiki_markdown"
    [2]: http://johnmacfarlane.net/pandoc/try "pandoc online" 

    看上去就好像是“引用文献”的格式一样。好处非常易见:

    • 正文文本中不会出现 url 链接这种读者不关心的信息,从而不影响读者的阅读
    • 链接地址可以当做一个变量,进行复用
  • 支持快捷链接。一般来说,我们如果要显示一段 url 文本,最好也希望这个 url本身能够点击。比如 http://ued.taobao.com

    如果使用 html,则要写作

    http://ued.taobao.com 

    包含了冗余信息且可读性很差,而在 mkd 中,只要写

     

    就 OK 了,非常方便。

结尾

以上便是对 markdown 的一个简要介绍了,需要了解进一步内容的,请移步

 

VIA http://ued.taobao.com/blog/2012/07/getting-started-with-markdown/

Linux:Web网站压力及性能测试工具WebBench使用指南

Webbench是知名的网站压力方面的测试工具,它是由Lionbridge公司开发。

官方主页:http://home.tiscali.cz/~cz210552/webbench.html

在运维工作中,网站压力及性能测试是一项很重要的工作。比如在一个网站上线之前,能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接 影响用户体验。但是,在压力及性能测试中存在一个共性,那就是压力及性能测试的结果与实际负载结果不会完全相同,就算压力及性能测试工作做的再好,也不能 保证100%和线上性能指标相同。面对这些问题,我们只能尽量去想方设法去模拟。所以,压力及性能测试非常有必要,有了这些数据,我们就能对自己做维护的 平台做到心中有数。

Web Bench最多可以模拟3万个并发连接去测试网站的负载能力。Web Bench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。Web Bech的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。Web Bench不但能具有静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力。还有就是他支持对含有SSL的安全网站例 如电子商务网站进行静态或动态的性能测试。

  适用于linux操作系统

  1、WebBench安装:

  wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz  tar zxvf webbench-1.5.tar.gz  cd webbench-1.5  make  make install

  补充:安装过程中如提示缺少组件请安装,缺少目录,请手动创建。

  2、WebBench使用:

  webbench -c 1000 -t 60 http://192.168.1.188/test.php  webbench -c 并发数 -t 运行测试时间 URL

  3、测试结果示例:

  #webbench -c 300 -t 60 http://192.168.1.188/test.php  Webbench – Simple Web Benchmark 1.5  Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.  Benchmarking: GET http://192.168.80.157/phpinfo.php  300 clients, running 60 sec.  Speed=24525 pages/min, 20794612 bytes/sec.  Requests: 24525 susceed, 0 failed.

  每秒钟响应请求数:24525/60= X pages/sec,每秒钟传输数据量20794612 bytes/sec。

  当并发1000时,已经显示有87个连接failed了,说明超负荷了。

  #webbench -c 1000 -t 60 http://192.168.1.188/test.php  Webbench – Simple Web Benchmark 1.5  Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.  Benchmarking: GET http://192.168.80.157/phpinfo.php  1000 clients, running 60 sec.  Speed=24920 pages/min, 21037312 bytes/sec.  Requests: 24833 susceed, 87 failed

  补充:

  1、压力及性能测试工作应该放到产品上线之前,而不是上线以后;  2、测试时并发应当由小逐渐加大,比如并发100时观察一下网站负载是多少、打开页面是否流畅,并发200时又是多少、网站打开缓慢时并发是多少、网站打不开时并发又是多少;  3、更详细的进行某个页面测试,如电商网站可以着重测试购物车、推广页面等,因为这些页面占整个网站访问量比重较大。

  备注:webbench 做压力及性能测试时,该软件自身也会消耗CPU和内存资源,为了测试准确,建议将 webbench 安装在其他的服务器上,已达到测试数据更加精确。

Linux:ipad_charge:Ubuntu Linux 下为ipad 充电

最近发现原生的Ubuntu 还无法为ipad 充电,需要安装一个叫 ipad_charge 的程序

下面是安装方法:

如果你的系统有装git ,可以直接

sudo apt-get install libusb-1.0-0 libusb-1.0-0-devgit clone https://github.com/mkorenkov/ipad_charge.gitcd ipad_charge/makesudo make install

否则的话,请到项目主页下载它的安装包:https://github.com/mkorenkov/ipad_charge/archive/master.zip (注意,地址可能会改变,请自行到项目主页下载)

然后解压。

安装方式和上面一致,只不过是自行下载解压替代git clone 步骤。

在Ubuntu 12.10 下测试成功。

使用方法也很简单,重新插入ipad 即可。

支持的设备:

  • iPad
  • iPad2
  • iPad3
  • iPad4
  • iPad Mini
  • iPod Touch 2G
  • iPod Touch 3G
  • iPod Touch 4G
  • iPhone 3GS
  • iPhone 4
  • iPhone 4S
  • iPhone 5

项目首页:https://github.com/mkorenkov/ipad_charge

来自:http://www.ubuntusoft.com/ipad-charge.html

Linux:Ubuntu性能调优:故障排查

我是不是忘记了什么?

  你已明明花了一些钱用于硬件配置,购买了另外那8GB的内存,可为什么安装的发行版运行起来速度还是那么慢?想确信你的系统看到已安装的所有内存, 最快捷的办法就是使用’free’这个命令。默认情况下,这个命令会列出它”看到”的你系统上安装的所有内存(包括物理内存和交换内存)。下面是查看你所 寻找的内存的最简便方法:

free -h –si

  会显示类似这样的结果:

https://dn-linuxcn.qbox.me/data/attachment/album/201303/04/193206mgtgp43lc7dbzgcp.jpg

  我们这个命令后面的两个参数’-h -si’告诉它以”人可读”的格式来显示输出(自动选择最合适的类型:兆字节、吉字节和太字节),并使用兆字节/吉字节/太字节的十进制与二进制定义。如 果你在这里看到的内容与你知道电脑上实际安装的情况不一致,那么有几个办法可以尝试一下。首先,如果你安装了4GB以上的内存,确信已安装了64位版本的 发行版,不然你最多只能看到4GB的存储空间。(如果你安装了32位版本,又需要4GB以上的内存,可以安装一个名为”PAE”的特殊内核,PAE代表” 物理地址扩展”–它让你的系统可以在32位操作系统上看到4GB以上的内存。)

  如果你将内核更新到PAE(32位)或者重新安装了发行版(64位)后,你的系统还是看不到全部数量的内存,那么你就应该关闭系统,重新插拔一下内存。你也可以拨出所有内存,就只剩一条内存芯片,通过逐个排除的方法,确定是否存在内存芯片硬件问题。

到底是怎么个状况?

  想确定新安装的系统上到底是怎么个状况,一种功能更强大的工具是’atsar’(注意:另外大多数发行版有同样的工具,但是名为’sar’,就像原 始的伯克利Unix工具)。该应用程序可以为你提供诸多方面的统计数字,包括内存、处理器、负载、网络、线程、插座、错误和交换等方面。想了解”全面”的 状况,最快捷的办法就是使用下列命令:

atsar -A

https://dn-linuxcn.qbox.me/data/attachment/album/201303/04/193206bvnb7zghughhbz4g.jpg

  这会给出你系统上几乎任何方面的随意读出结果,就像这样(上面的屏幕截图只是一部分,完整的读出结果要长得多)。

  ’-A’参数意味着”给我显示可能显示的一切信息”,是获得简要的完整系统视图的好方法,以便查看哪里出了异常(即你是否看到频繁地交换?为何 MySQL占用该处理器的全部资源?为何有那么多的进程用于Apache?我的系统负载有多大?)这可以帮助你重点关注需要更多一点信息的某个方面。

问题来自里面还是外面?

  我们现在通过上面的’atsar’报告表明了当前状况。系统上有许多的输入输出等待(IOWait),那么它们又都来自哪里呢?嗯,输入输出可能与磁盘有关(读取/写入),或者与网络有关(发送/接收)。我们可以使用’iostat’,深入分析统计数字,如下所示:

iostat -h -p ALL

  显示下列长长的输出

https://dn-linuxcn.qbox.me/data/attachment/album/201303/04/1932063legtpl5laa55lcn.jpg

  显示下列长长的输出

https://dn-linuxcn.qbox.me/data/attachment/album/201303/04/193207dsqmseeqmsmmsb9x.jpg

  这会以人可读的格式(再次使用了’-h’参数)显示所有的网络、内存和磁盘设备(包括挂载的Samba或NFS设备,如果你有这些设备)及其事务、 每秒读取/写入。如果你想看到在一段时间内不断提供的这种信息(或者更实用的是,把这些信息输出到某个文件),不妨在末尾添加一个整数(比如说,那样 ‘iostat -h -t -p ALL 5 > results.txt’就会每隔5秒生成这份报告,每个段落有一个起始时间,并保存到文件–注意这个操作会不断持续,直到你摁住 CTRL-C组合键中断这个过程,或者如果你在后台运行,直到你终止该过程)。

  眼下有了内存、处理器、内存、网络、磁盘和输入输出方面的统计数字,你对系统当前的状况多少应该有所了解。别忘了使用我们的老朋友:’top’命令,看看到底哪些进程在运行,这会帮助你把当前运行的进程与你在我们的演练期间发现的那种类型的性能度量标准关联起来。

轻松搞定锁定问题

  有时候,尤其是在排查故障时,你会发现自己采取的某个操作使得情况反而更糟糕了(比如终止了不该终止的进程,结果锁定了XWindows,等等)。 你似乎根本什么都干不了。如果是这样,你总是可以摁住CTRL-ALT-F1组合键,看看是否能得到明文外壳。如果能,你只要重启系统,再试一下 (’sudo reboot’)。有时候,连这一招都不管用。

  这里有一招可以让你无须关闭系统电源、希望EXT3/4中的文件系统日志可以避免文件受损:REISUB。这是冷启动之外最安全的办法,而且几乎总是屡试不爽,不管你的系统怎样被”锁定”了。你可以执行这个神奇的操作,如下所示:

  摁住ALT和SYSREQ(PRINT SC)键的同时,输入R E I S U B

  现在,有几个方面需要考虑。首先,你的键盘得有SYSREQ(PRINT SC)这个键,一些比较现代或比较紧凑的键盘没有这个键。要是你的键盘没有这个键,这一招显然不管用。其次,那些字母输入时不要太快。因为它们各自执行一 个操作,每个字母之间最好间隔五秒左右,那样它们就能完成各自的工作。具体来说,这几个字母分别代表:

  • R = 切换到XLATE
  • E= 终止向所有运行中的进程(INIT除外)发信号
  • I= 终止init除外的所有进程(针对没有响应终止命令的进程)
  • S= 同步所有文件系统
  • U= 重新挂载文件系统,只读格式
  • B= 重启系统

  这个小技巧几乎被人们所遗忘。我觉得要记住这个顺序的最简便办法就是记住这个短语Reboot Even If System Utterly Broken(即使系统完全坏掉,也可以重启)。我听过别人倒过来识记,称之为”BUSIER”,但相对较短的这个BUSIER对我来说似乎太容易了

结束语

  与互联网时代的许多方面一样,排查问题的能力俨然成了一门失传的技艺。就像本文中一样,有好多地方可以查询你所要找的答案。不过,仅仅知道几个基本的命令和高效排查故障的顺序,就可以替你节省时间,完全可能让你迈上一个台阶。

原文链接:http://pinehead.tv/linux/ubuntu-performance-troubleshooting/

译文:http://os.51cto.com/art/201302/382255.htm