Archive for 八月, 2010

Android的底层是基于C/C++的,但是做应用开发,需要使用java语言。而google官方推荐使用的开发工具是Eclipse。所以我们需要安装java开发必备的jre/jdk、android的库(SDK)、Eclipse以及Eclipse的插件(ADT)。

1、 一般,linux下已经安装了java,使用java -version看下版本,如果低于1.6的话,就需要重新安装了。

2、 下载SDK的管理包:sudo wget “http://dl.google.com/android/android-sdk_r06-linux_86.tgz”。注意,这里并不是直接把SDK安装了,解压之后,看到它“SDK\ Readme.txt”,需要执行“tools/android update sdk”,才会真正安装SDK。这里,需要有桌面系统,所以远程登录的同志们注意了。最好也使用root权限安装。

3、 下载Eclipse,从官网即可,需要对应的版本(linux、32/64位机)。解压即可。如果启动的时候出现问题,请查看/etc/sysconfig/selinux,关闭selinux的支持:

#SELINUX=enforcing
SELINUX=disabled

4、 安装Eclipse的插件ADT。可以通过Eclipse->help->install new software,使用ADT链接安装,也可以下载了ADT之后,解压,把plugins、features里的内容copy到Eclipse路径下的plugins、features下,并且删除eclipse/configuration/org.eclipse.update,重启Eclipse即可。

国内:http://paranimage.com/8-china-web2-0-music-sites/

刚在豆瓣听完范晓萱的最新赤辑《赤子》(P.S: 专辑名很不搭调),尤爱“管他什么音乐”。抽空推荐几个国内的Web2.0音乐网站

国外的音乐网站之前我们也介绍过很多,你可以通过帕兰映像内的音乐分类查找。但国外的有两个问题,速度和版权,听30秒那种事不太适合我。还是看看国内的。

1. Xiami (虾米)

个人觉得国内目前做得最好的Web 2.0音乐网站。好友和小组,相似度猜测推荐,精选集和电台。。。提供的博客Widget小工具也比较精美。虾米也允许用户发表上传音乐,且对音乐质量有很高的要求。只是发布过程我个人觉得比较繁琐,需要一点点专业知识,更需要的是耐心。

xiami 8个国内Web2.0音乐网站推荐

2. Yobo(友播)

本来也算个老牌Web2.0音乐网站了,帕兰很长一段时间也赖在友播。但前段时间他们的服务器实在让人提不起精神来,不知道现在稳定性怎么样。

yobo 8个国内Web2.0音乐网站推荐

3. SongTaste

我记得我当初是搜”TV Screen”这首歌的时候找到SongTaste的,光凭这点,我个人就觉得挺不错的 :)其推荐模式也挺棒的,UI设计的也不错,除了那个难看的播放器。

songtaste 8个国内Web2.0音乐网站推荐

4. iMusic.cn(音魁网)

这个应该是我最早熟悉的一个音乐网站。他的Web1.0时代的域名是inkui.com,后来改成imusic.cn后好像还使用过类豆瓣式的简洁风格界面,现在又换成了现在这个样子。现在的界面感觉很不Web2.0。

imusic 8个国内Web2.0音乐网站推荐

5. 8box(音乐八宝盒)

八宝盒上传音乐比较方便,所以其音乐库比较齐全,默默无名的某支地下乐队的歌都可能可以搜到。但也因为如此,音乐质量良那个什么不齐,一些歌播放的时候也比较卡。

8box 8个国内Web2.0音乐网站推荐

6. KoooK(酷客音乐网)

偏流行和伪地下的流行。着重于用户的创作和分享。

koookjpg 8个国内Web2.0音乐网站推荐

7. DoFaLa(都发啦)

光看网站头部如此明显的错位布局,就让人感觉很不专业。自动播放本身也是让人厌恶的,不过还好,听到的是一些很古色古香、清悠雅逸的琵琶音乐。再仔 细看一下,这根本算不上一个Web 2.0音乐网站,更主要的是音乐教室、钢琴培训课之类的。唯一的优点是,这里的音乐都很优美,在这个浮躁的夏天,很让人平静。

dofala 8个国内Web2.0音乐网站推荐

8. diymusic(独立音乐空间)

帕兰一直认为diymusic是国内最适合高级音乐爱好者和专业音乐人玩的地方。但很遗憾,他们最近似乎在处理服务器问题,网站暂停中。

国外:http://paranimage.com/88-foreign-music-websites/

互联网电台类音乐网站

  • Last.fm-地球人都知道
  • Slacker-号称iPod杀手就是它了
  • ShoutCast-互联网音乐类型电台,需要winamp支持
  • Live365-已进入中国市场的音乐类型电台服务
  • Yahoo!Music-Yahoo的音乐频道,除了电台还有音乐视频和下载服务
  • AOL Music-美国在线的音乐电台频道,还提供XM高品质的卫星电台服务
  • Pandora-点子最背的个性化音乐电台服务
  • YottaMusic-Rhapsody的扩展服务,其UI设计曾是在线音乐服务的经典案例(把它列入电台类似乎有些牵强)

音乐发现工具

社会化网络服务音乐网站

  • iLike-说得挺多了
  • purevolume-被称为音乐领域的MySpace,应该指的是服务模式,并非说它有myspace那么火爆
  • ProjectPlaylist-搜索+音乐列表,并通过其他SNS社区分享,最近特火
  • imeem-以音乐列表分享为核心的社区服务,个人比较喜欢它的widget
  • mp3.com-最拽的音乐服务域名了,与myspace的音乐频道有些相似
  • iJigg-音乐的Digg模式,可免费下载
  • MOG-近期增长迅速的音乐分享社区
  • Fuzz-音乐发现和音乐直销服务
  • eListeningPost-严格说来算是数字音乐自助分发服务
  • ProjectOpus-独立音乐人音乐社区,借助Widget推广音乐
  • Rapspace.tv-嘻哈(Rap/Hip-Hop)音乐类型的细分社区
  • Musocity-音乐导向的社区
  • Haystack-音乐列表和口味分享
  • Buzznet-提供与音乐相关的博客、视频和相片分享服务,另外它也是独立乐队推广自身的渠道
  • JukeboxAlive-上传并分享音乐
  • MusicHawk-跟踪乐队的新闻和评论
  • ReverbNation-包括音乐活动的分享
  • Grooveshark-评论、分享和发现新音乐,还在内部测试阶段
  • Dopetracks-上传分享、在线录音
  • Funk Player-通过flash播放器形式实现上传分享
  • FIQL-音乐列表分享
  • Soundflavor-音乐列表分享,品味匹配和发现新音乐
  • FineTune-相似性歌手电台和自定义音乐列表分享,播放器比较cool
  • MusicMobs-社会化音乐推荐社区

音乐分享应用程序和Widget类

  • uPlayMe-匹配音乐品味的客户端软件
  • DotTunes-通过浏览器分享iTunes的音乐收藏
  • Audiozue-Mac应用软件,能将iTunes音乐播放记录实时更新到博客
  • Sonific-单曲推广widget
  • Mediamaster-存储收藏的音乐并可用各种途径获取,也可用Widget张帖至博客
  • BooMP3-上传分享mp3文件
  • Goombah-iTunes的辅助WEB客户端,通过分析用户个人的iTunes音乐历史数据库,产生会员的匹配以及音乐的推荐
  • Maestro-存储收藏的音乐并可用各种途径获取

音乐商店网站

  • iTunes-全球最大的数字音乐商店
  • Amie Street-按需定价模式的独立音乐商店
  • emusic-全球最大的独立数字音乐商店
  • Bleep-提供高品质Mp3和FLAC格式的数字音乐商店
  • MP3 Tunes-数字音乐商店
  • Amazon-在线音乐CD销售扩展数字音乐销售服务
  • PayPlay.fm-提供wma/mp3双格式的独立音乐商店
  • Beatport-flash形式的音乐商店
  • Audio Lunchbox-200万首无DRM的高品质数字音乐商店
  • Indiepad-独立音乐直销商店
  • Indistr-同上
  • Mtraks-无DRM音乐销售服务
  • MagnaTune-可议价的音乐直销商店
  • Jamendo-音乐直销服务,有5万多歌曲免费下载
  • Musicane-音频、视频和铃声交易平台
  • Musiclovr-音乐搜索、推荐和零售
  • Snocap-数字音乐分发平台,与myspace合作建立mystore

音乐协作网站

  • eJamming-强大的音乐创作人协作演奏平台
  • Kompoz-音乐人协同创作新音乐,并可在线协同演奏和录音
  • JamNow-基于WEB的音乐协作及社会化网络服务
  • Indaba-音乐协作的SNS服务
  • JamJunky-音乐创作与交互回馈

翻唱平台网站

  • Singshot-在线卡拉Ok服务,竞赛模式比较突出,今年2月已被电子艺界收购
  • kSolo-福克斯旗下的在线卡拉Ok服务

混音服务网站

  • Jamglue-在线混音并分享
  • Splice-音乐作品、混音作品的分享社区
  • YourSpins-给收藏的歌曲混音,并通过博客分享,也可做成手机铃声

手机音乐服务网站

  • Flotones-提供独立音乐人销售他们的无线音乐内容社区
  • Entertonement-铃声下载服务
  • Mercora-社会化音乐电台服务,提供支持Windows Mobile手机的客户端

排行榜服务网站

音乐人数据库网站

  • Allmusic-最全的音乐数据库,据称包含了500多种音乐流派
  • Pandora Backstage-潘多拉的后台信息,数量很少

歌词数据库网站

在线音频转换工具

其他

  • Bluegrind-文字转换成音频,显然不可能支持中文
  • BePopular-客户端自动匹配用户的iTunes音乐库,找到这些音乐人在英国和爱尔兰的小型演出及购票方法
  • Getabuz-个性化的音频混合工具,并能用语音邮件和电子贺卡的形式发送给朋友
  • iden.tify.us-音乐流派和其他信息的自动识别工具
  • Houndbite-生活音频片段分享社区

: 本文收集于自说自划的三篇音乐服务列表(1,2,3)。自说自划是国内比较专业的一个音乐博客,区别于其它以推荐音乐为主的音乐博客,自说自划更注重于对数字音乐市场和模式的分析探索。

我妹开学大四,在中国的西南学服装设计。不很有自己的个人主见,但是身边有一些较时尚、潮的同学。在校的时候,可以一天泡在网上;在我家,被限制在2-4小时之内。

观察她上网的动作,主体只有两个:人人网+qq聊天。

她选择人人网,主要是因为“同学都在用人人网”,那里有别人的分享,有一些有意思的内容,喜欢看图片、视频,很无聊才会看文字。会听别人推荐的新歌,厌倦一直听老歌,但是没有什么主动的渠道去找。主要跟熟人交流,会关注一些自己感兴趣的大牌明星,即使怀疑那不是他本人在维护。会加入感兴趣的小组,比如时尚类的,理由是那里有别人推荐的好内容,有一些国外资源的链接。

选择QQ的理由类似,也是同学都在用,作为沟通的工具。喜欢用qq群。

由于我在MySpace.cn工作,所以给她展示了我们网站。

主页:不够炫,内容虽然多,但是抓不住眼球。喜欢看图片推荐,不喜欢文字的。对张靓颖的推荐内容感兴趣。对抢票有兴趣。反感两边的广告,觉得不够专业。居然强烈建议我们改版。。。。。。

左小祖咒的空间:黑色的背景挺炫的。头图不错,而且不收费很好,人人的背景定制10元/月(她买了)。同学有对左小很感兴趣的。

张靓颖的空间:第一感觉不错,但是内容不够新,不知道该干嘛。

有待Radio:很炫很酷!音乐也很好!一直打开在听。

马赛克:原来拼图可以这样产生啊!非常有兴趣!但是对于速度不满意,觉得会急死。

对于人人网推荐的感觉:如果重合好友非常多的人(比如共同好友几十人),可能就是认识的,会看下。

对于MySpace音乐频道的推荐音乐人,虽然不认识,但是也会仔细看下,觉得小众音乐人挺好,因为大牌不一定搭理人。尤其在我保证那些人是真正的音乐人,自己在维护之后,表达了强烈的兴趣。

问题:给你推荐相同兴趣的,比如看过共同内容的人,会聊一下吗?回答:肯定会。

zz from: http://www.catonmat.net/blog/top-ten-one-liners-from-commandlinefu-explained

中文地址:http://wowubuntu.com/linux_shell_1.html

I love working in the shell. Mastery of shell lets you get things done in seconds, rather than minutes or hours, if you chose to write a program instead.

In this article I’d like to explain the top one-liners from the commandlinefu.com. It’s a user-driven website where people get to choose the best and most useful shell one-liners.

But before I do that, I want to take the opportunity and link to a few of my articles that I wrote some time ago on working efficiently in the command line:

Working Efficiently in Bash (Part I).
Working Efficiently in Bash (Part II).
The Definitive Guide to Bash Command Line History.
A fun article on Set Operations in the Shell.
Another fun article on Solving Google Treasure Hunt in the Shell.
Update: Russian translation now available.

And now the explanation of top one-liners from commandlinefu.

#1. Run the last command as root

$ sudo !!
We all know what the sudo command does – it runs the command as another user, in this case, it runs the command as superuser because no other user was specified. But what’s really interesting is the bang-bang !! part of the command. It’s called the event designator. An event designator references a command in shell’s history. In this case the event designator references the previous command. Writing !! is the same as writing !-1. The -1 refers to the last command. You can generalize it, and write !-n to refer to the n-th previous command. To view all your previous commands, type history.

This one-liner is actually really bash-specific, as event designators are a feature of bash.

I wrote about event designators in much more detail in my article “The Definitive Guide to Bash Command Line History.” The article also comes with a printable cheat sheet for working with the history.

#2. Serve the current directory at http://localhost:8000/

$ python -m SimpleHTTPServer
This one-liner starts a web server on port 8000 with the contents of current directory on all the interfaces (address 0.0.0.0), not just localhost. If you have “index.html” or “index.htm” files, it will serve those, otherwise it will list the contents of the currently working directory.

It works because python comes with a standard module called SimpleHTTPServer. The -m argument makes python to search for a module named SimpleHTTPServer.py in all the possible system locations (listed in sys.path and $PYTHONPATH shell variable). Once found, it executes it as a script. If you look at the source code of this module, you’ll find that this module tests if it’s run as a script if __name__ == ‘__main__’, and if it is, it runs the test() method that makes it run a web server in the current directory.

To use a different port, specify it as the next argument:

$ python -m SimpleHTTPServer 8080
This command runs a HTTP server on all local interfaces on port 8080.

#3. Save a file you edited in vim without the needed permissions

:w !sudo tee %
This happens to me way too often. I open a system config file in vim and edit it just to find out that I don’t have permissions to save it. This one-liner saves the day. Instead of writing the while to a temporary file :w /tmp/foobar and then moving the temporary file to the right destination mv /tmp/foobar /etc/service.conf, you now just type the one-liner above in vim and it will save the file.

Here is how it works, if you look at the vim documentation (by typing :he :w in vim), you’ll find the reference to the command :w !{cmd} that says that vim runs {cmd} and passes it the contents of the file as standard input. In this one-liner the {cmd} part is the sudo tee % command. It runs tee % as superuser. But wait, what is %? Well, it’s a read-only register in vim that contains the filename of the current file! Therefore the command that vim executes becomes tee current_filename, with the current directory being whatever the current_file is in. Now what does tee do? The tee command takes standard input and write it to a file! Rephrasing, it takes the contents of the file edited in vim, and writes it to the file (while being root)! All done!

#4. Change to the previous working directory

$ cd –
Everyone knows this, right? The dash “-” is short for “previous working directory.” The previous working directory is defined by $OLDPWD shell variable. After you use the cd command, it sets the $OLDPWD environment variable, and then, if you type the short version cd -, it effectively becomes cd $OLDPWD and changes to the previous directory.

To change to a directory named “-“, you have to either cd to the parent directory and then do cd ./- or do cd /full/path/to/-.

#5. Run the previous shell command but replace string “foo” with “bar”

$ ^foo^bar^
This is another event designator. This one is for quick substitution. It replaces foo with bar and repeats the last command. It’s actually a shortcut for !!:s/foo/bar/. This one-liner applies the s modifier to the !! event designator. As we learned from one-liner #1, the !! event designator stands for the previous command. Now the s modifier stands for substitute (greetings to sed) and it substitutes the first word with the second word.

Note that this one-liner replaces just the first word in the previous command. To replace all words, add the g modifer (g for global):

$ !!:gs/foo/bar
This one-liner is also bash-specific, as event designators are a feature of bash.

Again, see my article “The Definitive Guide to Bash Command Line History.” I explain all this stuff in great detail.

#6. Quickly backup or copy a file

$ cp filename{,.bak}
This one-liner copies the file named filename to a file named filename.bak. Here is how it works. It uses brace expansion to construct a list of arguments for the cp command. Brace expansion is a mechanism by which arbitrary strings may be generated. In this one-liner filename{,.bak} gets brace expanded to filename filename.bak and puts in place of the brace expression. The command becomes cp filename filename.bak and file gets copied.

Talking more about brace expansion, you can do all kinds of combinatorics with it. Here is a fun application:

$ echo {a,b,c}{a,b,c}{a,b,c}
It generates all the possible strings 3-letter from the set {a, b, c}:

aaa aab aac aba abb abc aca acb acc
baa bab bac bba bbb bbc bca bcb bcc
caa cab cac cba cbb cbc cca ccb ccc
And here is how to generate all the possible 2-letter strings from the set of {a, b, c}:

$ echo {a,b,c}{a,b,c}
It produces:

aa ab ac ba bb bc ca cb cc
If you liked this, you may also like my article where I defined a bunch of set operations (such as intersection, union, symmetry, powerset, etc) by using just shell commands. The article is called “Set Operations in the Unix Shell.” (And since I have sets in the shell, I will soon write articles on on “Combinatorics in the Shell” and “Algebra in the Shell”. Fun topics to explore. Perhaps even “Topology in the Shell” :))

#7. mtr – traceroute and ping combined

$ mtr google.com
MTR, bettern known as “Matt’s Traceroute” combines both traceroute and ping command. After each successful hop, it sends a ping request to the found machine, this way it produces output of both traceroute and ping to better understand the quality of link. If it finds out a packet took an alternative route, it displays it, and by default it keeps updating the statistics so you knew what was going on in real time.

#8. Find the last command that begins with “whatever,” but avoid running it

$ !whatever:p
Another use of event designators. The !whatever designator searches the shell history for the most recently executed command that starts with whatever. But instead of executing it, it prints it. The :p modifier makes it print instead of executing.

This one-liner is bash-specific, as event designators are a feature of bash.

Once again, see my article “The Definitive Guide to Bash Command Line History.” I explain all this stuff in great detail.

#9. Copy your public-key to remote-machine for public-key authentication

$ ssh-copy-id remote-machine
This one-liner copies your public-key, that you generated with ssh-keygen (either SSHv1 file identity.pub or SSHv2 file id_rsa.pub) to the remote-machine and places it in ~/.ssh/authorized_keys file. This ensures that the next time you try to log into that machine, public-key authentication (commonly referred to as “passwordless authentication.”) will be used instead of the regular password authentication.

If you wished to do it yourself, you’d have to take the following steps:

your-machine$ scp ~/.ssh/identity.pub remote-machine:
your-machine$ ssh remote-machine
remote-machine$ cat identity.pub >> ~/.ssh/authorized_keys
This one-liner saves a great deal of typing. Actually I just found out that there was a shorter way to do it:

your-machine$ ssh remote-machine ‘cat >> .ssh/authorized_keys’ < .ssh/identity.pub
#10. Capture video of a linux desktop

$ ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
A pure coincidence, I have done so much video processing with ffmpeg that I know what most of this command does without looking much in the manual.

The ffmpeg generally can be descibed as a command that takes a bunch of options and the last option is the output file. In this case the options are -f x11grab -s wxga -r 25 -i :0.0 -sameq and the output file is /tmp/out.mpg.

Here is what the options mean:

-f x11grab makes ffmpeg to set the input video format as x11grab. The X11 framebuffer has a specific format it presents data in and it makes ffmpeg to decode it correctly.
-s wxga makes ffmpeg to set the size of the video to wxga which is shortcut for 1366×768. This is a strange resolution to use, I’d just write -s 800×600.
-r 25 sets the framerate of the video to 25fps.
-i :0.0 sets the video input file to X11 display 0.0 at localhost.
-sameq preserves the quality of input stream. It’s best to preserve the quality and post-process it later.
You can also specify ffmpeg to grab display from another x-server by changing the -i :0.0 to -i host:0.0.

If you’re interested in ffmpeg, here are my other articles on ffmpeg that I wrote while ago:

How to Extract Audio Tracks from YouTube Videos
Converting YouTube Flash Videos to a Better Format with ffmpeg
PS. This article was so fun to write, that I decided to write several more parts. Tune in the next time for “The Next Top Ten One-Liners from CommandLineFu Explained” :)

Have fun. See ya!

PSS. Follow me on twitter for updates.

This article was sponsored by:

Canadian domain names available through Netfirms.ca
Hosting.com offers Dedicated server hosting
Advanceware’s Inventory management software can help you organize your resources.
Sherweb provides Hosted Exchange solutions for your small business.
Contact me, if you wish to sponsor any other of my existing posts or future posts!

——

netstat -tulnp (监测端口)

1. 更友好的显示当前挂载的文件系统

mount | column -t

这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt 的用法。

下面是单单使用 mount 命令的结果:

$ mount

/dev/root on / type ext3 (rw)
/proc on /proc type proc (rw)
/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

而加了 column -t 命令后就成为这样了:

$ mount | column -t

/dev/root on / type ext3 (rw)
/proc on /proc type proc (rw)
/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

另外你可加上列名称来改善输出结果

$ (echo “DEVICE – PATH – TYPE FLAGS” && mount) | column -t

DEVICE – PATH – TYPE FLAGS
/dev/root on / type ext3 (rw)
/proc on /proc type proc (rw)
/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

列2和列4并不是很友好,我们可以用 awk 来再处理一下

$ (echo “DEVICE PATH TYPE FLAGS” && mount | awk ‘$2=$4=””;1′) | column -t

DEVICE PATH TYPE FLAGS
/dev/root / ext3 (rw)
/proc /proc proc (rw)
/dev/mapper/lvmraid-home /home ext3 (rw,noatime)

最后我们可以设置一个别名,为 nicemount

$ nicemount() { (echo “DEVICE PATH TYPE FLAGS” && mount | awk ‘$2=$4=””;1′) | column -t; }

试一下

$ nicemount

DEVICE PATH TYPE FLAGS
/dev/root / ext3 (rw)
/proc /proc proc (rw)
/dev/mapper/lvmraid-home /home ext3 (rw,noatime)

2. 运行前一个 Shell 命令,同时用 “bar” 替换掉命令行中的每一个 “foo”

!!:gs/foo/bar

!! 表示重复执行上一条命令,并用 :gs/foo/bar 进行替换操作。

关于 !! 这个用法在前一篇文章中已有详细的介绍。

3. 实时某个目录下查看最新改动过的文件

watch -d -n 1 ‘df; ls -FlAt /path’

在使用这条命令时你需要替换其中的 /path 部分,watch 是实时监控工具,-d 参数会高亮显示变化的区域,-n 1 参数表示刷新间隔为 1 秒。

df; ls -FlAt /path 运行了两条命令,df 是输出磁盘使用情况,ls -FlAt 则列出 /path 下面的所有文件。

ls -FlAt 的参数详解:

-F 在文件后面加一个文件符号表示文件类型,共有 */=>@| 这几种类型,* 表示可执行文件,/ 表示目录,= 表示接口( sockets) ,> 表示门, @ 表示符号链接, | 表示管道。
-l 以列表方式显示
-A 显示 . 和 ..
-t 根据时间排序文件

4. 通过 SSH 挂载远程主机上的文件夹

sshfs name@server:/path/to/folder /path/to/mount/point

这条命令可以让你通过 SSH 加载远程主机上的文件系统为本地磁盘,前提是你需要安装 FUSE 及 sshfs 这两个软件。

译者注:关于 sshfs 实际上我之前写过一篇文章介绍过,详见”在 Ubuntu 上使用 sshfs 映射远程 ssh 文件系统为本地磁盘“。

卸载的话使用 fusermount 命令:

fusermount -u /path/to/mount/point

5. 通过 DNS 来读取 Wikipedia 的词条

dig +short txt <keyword>.wp.dg.cx

这也许是最有趣的一条技巧了,David Leadbeater 创建了一个 DNS 服务器,通过它当你查询一个 TXT 记录类型时,会返回一条来自于 Wikipedia 的简短的词条文字,这是他的介绍

这里有一个样例,来查询 “hacker” 的含义:

$ dig +short txt hacker.wp.dg.cx

“Hacker may refer to: Hacker (computer security), someone involved
in computer security/insecurity, Hacker (programmer subculture), a
programmer subculture originating in the US academia in the 1960s,
which is nowadays mainly notable for the free software/” “open
source movement, Hacker (hobbyist), an enthusiastic home computer
hobbyist http://a.vu/w:Hacker

这里使用了 dig 命令,这是标准的用来查询 DNS 的系统管理工具,+short 参数是让其仅仅返回文字响应,txt 则是指定查询 TXT 记录类型。

更简单的做法是你可以为这个技巧创建一个别名:

wiki() { dig +short txt $1.wp.dg.cx; }

然后试试吧:

$ wiki hacker

“Hacker may refer to: Hacker (computer security), …”

如果你不想用 dig ,也可以用 host 命令:

host -t txt hacker.wp.dg.cx

6. 用 Wget 的递归方式下载整个网站

5997cb13642e21_

参数解释:

– -random-wait 等待 0.5 到 1.5 秒的时间来进行下一次请求
-r 开启递归检索
-e robots=off 忽略 robots.txt
-U Mozilla 设置 User-Agent 头为 Mozilla

其它一些有用的参数:

– -limit-rate=20K 限制下载速度为 20K
-o logfile.txt 记录下载日志
-l 0 删除深度(默认为5)
–wait=1h 每下载一个文件后等待1小时

7. 复制最后使用的命令中的参数

ALT + . (or ESC + .)

这个快捷键只能工作于 shell 的 emacs 编辑模式,它可以从最后使用的命令行中复制参数到当前命令行中,下面是一个样例:

$ echo a b c
a b c

$ echo <Press ALT + .>
$ echo c

你可以重复执行该快捷键,以便获取自已需要的参数,

以下是样例:

$ echo 1 2 3
1 2 3
$ echo a b c
a b c

$ echo <Press ALT + .>
$ echo c

$ echo <Press ALT + .> again
$ echo 3

另外,假如你想指定第1个或第2个,或者是第 n 个参数的话,可以按 ALT + 1 (或 ESC + 1) 或 ALT + 2 (或 ESC +2) 这样形式的快捷键。

以下是样例:

$ echo a b c
a b c

$ echo <Press ALT + 1> <Press ALT + .>
$ echo a
a

$ echo <Press ALT + 2> <Press ALT + .>
$ echo b
b

查看” Emacs Editing Mode Keyboard Shortcuts “ 一文获取更多类似的快捷键。

8. 执行一条命令但不保存到 history 中

<space> command

这条命令可运行于最新的 Bash shell 里,在其它 shell 中没测试过。

通过在命令行前面添加一个空格,就可以阻止这条命令被保存到 bash history (~/.bash_history) 文件中,这个行为可以通过 $HISTIGNORE shell 变量来控制。我的设置是 HISTIGNORE=”&:[ ]*” ,表示不保存重复的命令到 history 中,并且不保存以空格开头的命令行。$HISTIGNORE 中的值以冒号分隔。

如果你对此感兴趣,想深入了解的话,可进一步看此文”The Definitive Guide to Bash Command Line History

9. 显示当前目录中所有子目录的大小

5997cb13642e22_

– -max-depth=1 参数可以让 du 命令显示当前目录下 1 级子目录的统计信息,当然你也可以把 1 改为 2 ,进一步显示 2 级子目录的统计信息,可以灵活运用。而 -h 参数则是以 Mb 、G 这样的单位来显示大小。

译者注:在此推荐一个小工具 ncdu ,可以更方便的达到此效果。

10. 显示消耗内存最多的 10 个运行中的进程,以内存使用量排序

ps aux | sort -nk +4 | tail

显然这并不是最好的方法,但它确实用起还不错。

这是一个典型的管道应用,通过 ps aux 来输出到 sort 命令,并用 sort 排序列出 4 栏,再进一步转到 tail 命令,最终输出 10 行显示使用内存最多的进程情况。

假如想要发现哪个进程使用了大量内存的话,我通常会使用 htop 或 top 而非 ps 。

额外的:用 python 快速开启一个 SMTP 服务

python -m smtpd -n -c DebuggingServer localhost:1025

这是一个用 Python 标准库 smtpd (用 -m smtpd 指定) 实现在简易 SMTP 服务,运行于 1025 端口 。

另外三个参数的解释:

-n 参数让 Python 不要进行 setuid ( 改变用户)为 “nobody” ,也就是说直接用你的帐号来运行
-c DebuggingServer 参数是让 Python 运行时在屏幕上输出调试及运行信息
localhost:1025 参数则是让 Python 在本地的 1025 端口上开启 SMTP 服务

另外,假如你想让程序运行于标准的 25 的端口上的话,你必须使用 sudo 命令,因为只有 root 才能在 1-1024 端口上开启服务。如下:

sudo python -m smtpd -n -c DebuggingServer localhost:25

zz from: http://www.bopor.com/?p=1073

Web前端优化最佳实践之Content

1. 尽量减少 HTTP 请求 (Make Fewer HTTP Requests)

作为第一条,可能也是最重要的一条。根据 Yahoo! 研究团队的数据分析,有很大一部分用户访问会因为这一条而取得最大受益。有几种常见的方法能切实减少 HTTP 请求:

  • 1) 合并文件 ,比如把多个 CSS 文件合成一个;
  • 2) CSS Sprites 利用 CSS background 相关元素进行背景图绝对 定位;参见:CSS Sprites: Image Slicing’s Kiss of Death
  • 3) 图像地图
  • 4) 内联图象 使用 data: URL scheme 在实际的页面嵌入图像数据.

2. 减少 DNS 查找 (Reduce DNS Lookups)

必须明确的一点,DNS 查找的开销是很大的。另外,我倒是觉得这是 Yahoo! 所有站点的通病,Yahoo!主站点可能还不够明显,一些分站点,存在明显的类似问题。对于国内站点来说,如果过多的使用了站外的 Widget ,也很容易引起过多的 DNS 查找问题。

3. 避免重定向 (Avoid Redirects)

不是绝对的避免,尽量减少。另外,应该注意一些不必要的重定向。比如对 Web 站点子目录的后面添加个 / (Slash) ,就能有效避免一次重定向。http://www.dbanotes.net/arch 与 http://www.dbanotes.net/arch/ 二者之间是有差异的。如果是 Apache 服务器,通过配置 Alias 或mod_rewrite 或是 DirectorySlash 能够消除这个问题。

4. 使得 Ajax 可缓存 (Make Ajax Cacheable)

响应时间对 Ajax 来说至关重要,否则用户体验绝对好不到哪里去。提高响应时间的有效手段就是 Cache 。其它的一些优化规则对这一条也是有效的。

5. 延迟载入组件 (Post-load Components)

6. 预载入组件 (Preload Components)

上面两条严格说来,都是属于异步 这个思想灵活运用的事儿。

7. 减少 DOM 元素数量 (Reduce the Number of DOM Elements)

8. 切分组件到多个域 (Split Components Across Domains)

主要的目的是提高页面组件并行下载能力。但不要跨太多域名,否则就和第二条有些冲突了。

9. 最小化 iframe 的数量 (Minimize the Number of iframes)

熟悉 SEO 的朋友知道 iframe 是 SEO 的大忌。针对前端优化来说 iframe 有其好处,也有其弊端,一分为二看问题吧。

10. 杜绝 http 404 错误 (No 404s)

对页面链接的充分测试加上对 Web 服务器 error 日志的不断跟踪能有效减少 404 错误,亦能提升用户体验。值得一提的是,CSS 与 Java Script 引起的 404 错误因为定位稍稍”难”一点而往往容易被忽略。

Web前端优化最佳实践之Server

1. 使用 CDN (Use a Content Delivery Network)

国内 CDN 的普及还不够。不过我们有独特的电信、网通之间的问题 ,如果针对这个作优化,基本上也算能收到 CDN 或类似的效果吧(假装如此)。【Tin 说国内 CDN 用的挺多,看看 CDN 厂商的市场就知道了,还没走入寻常百姓家】

2. 添加 Expires Cache-Control 信息头 (Add an Expires or a Cache-Control Header)

各个浏览器都有针对的方案, Apache 例子【注意:下面的说明例子还不够精细,具体的环境上还要加一些调整】:

Conf代码

  1. ExpiresActive On ExpiresByType image/gif “modification plus 1 weeks”
  2. Lighttpd 启用 mod_expire 模块 后:
  3. $HTTP[“url”] =~ “\.(jpg|gif|png)$” { expire.url = ( “” => “access 1 years” ) }
  4. Nginx 例子参考:
  5. location ~* \.(jpg|gif|png)$ { if (-f $request_filename) { expires max; break; } }

3. 压缩内容 (Gzip Components)

对于绝大多数站点,这都是必要的一步,能有效减轻网络流量压力。或许有人担心对 CPU 压缩对于 CPU 的影响,放心大胆的整吧,没事儿。Nginx 例子:

gzip on; gzip_types text/plain text/html text/css ext/javascript;

另外参见:

IIS 如何启用 Gzip 压缩?

4. 设置 Etags (Configure ETags)

对于 Etag ,可能是多数网站维护者都会忽略的地方。在这一系列优化规则出现之前,可能互联网上绝大多数站点都对这个问题忽略了。当然,Etag 对多数站点性能的影响并不是很大。除非是面向 RSS 的网站。【看到有朋友批评说写的简略,并且说 IE 不支持 ETag。明确说一下:IE 支持 ETag,倒是使用 IIS 要注意相关 Etag Bug。】

补充:我的意思是”很多网站在不注意的情况下都是打开 Etag 的,而没有网站关心如何用,消耗资源而不知。并不是说 Etag 不好,合理利用 Etag ,绝对能取得很好的收益.

5. 尽早刷新 Buffer (Flush the Buffer Early)

对这一条,琢磨了半天,貌似还是异步 的思路。能更好的提升用户体验?

6. AJAX 请求使用 GET 方法 (Use GET for AJAX Requests)

XMLHttpRequest POST 要两步,而 GET 只需要一步。但要注意的是在 IE 上 GET 最大能处理的 URL 长度是 2K。

Web前端优化最佳实践之Cookie

1. 缩小 Cookie (Reduce Cookie Size)

Cookie 是个很有趣的话题。根据 RFC 2109 的描述,每个客户端最多保持 300 个 Cookie,针对每个域名最多 20 个 Cookie (实际上多数浏览器现在都比这个多,比如 Firefox 是 50 个) ,每个 Cookie 最多 4K,注意这里的 4K 根据不同的浏览器可能不是严格的 4096 。别扯远了,对于 Cookie 最重要的就是,尽量控制 Cookie 的大小,不要塞入一些无用的信息。

2. 针对 Web 组件使用域名无关性的 Cookie (Use Cookie-free Domains for Components)

这个话题在此前针对 Web 图片服务器 的讨论中曾经提及。这里说的 Web 组件(Component),多指静态文件,比如图片 CSS 等,Yahoo! 的静态文件都在 yimg.com 上,客户端请求静态文件的时候,减少了 Cookie 的反复传输对主域名 (yahoo.com) 的影响。

从这篇 When the Cookie Crumbles 能看出,MySpace 和 eBay 的 Cookie 都不小的,想必是对用户行为比较关心。eBay 前不久构造了 Personalization Platform ,就是从 Cookie 的限制中跳出来。

Web前端优化最佳实践第四部分面向CSS

1. CSS 放到代码页上端 (Put Stylesheets at the Top)

官方的解释我觉得多少有点语焉不详。这一条其实和用户访问期望 有关。CSS 放到最顶部,浏览器能够有针对性的对 HTML 页面从顶到下进行解析和渲染。没有人喜欢等待,而浏览器已经考虑到了这一点。

2. 避免 CSS 表达式 (Avoid CSS Expressions)

个人认为通过 CSS 表达式能做到的事情,通过其它手段也同样能做到而且风险更小一些。

3. 从页面中剥离 JavaScript CSS (Make JavaScript and CSS External)

剥离后,能够有针对性的对其进行单独的处理策略,比如压缩或者缓存策略。

4. 精简 JavaScript CSS (Minify JavaScript and CSS )

如果没有 JavaScript 与 CSS 可能更好。但,这是不可能的,SO,尽量小点吧。语法能简写的简写。

5. 使用 <link> 而不是@importChoose <link> over @import

在 IE 中 @import 指令等同于把 link 标记写在 HTML 的底部。而这与第一条相违背。

6. 避免使用Filter (Avoid Filters)

另请参见 Mozilla 开发者中心的文章:Writing Efficient CSS

Web前端优化最佳实践之JavaScript

1. 脚本放到 HTML 代码页底部 (Put Scripts at the Bottom)

当一个脚本在下载的时候,浏览器干不了其它的事儿(串行了)。所以,把它扔到最后面去处理。对于一些功能性的脚本,可能实现起来有些两难。不过对于 国内网站来说,有很多使用 Google Analytics 服务进行网站数据分析的。这这一点来说,绝对可行的建议,放到页面最底下。

2. Make JavaScript and CSS External

参见 CSS 篇 的描述

3. 精简 JavaScript CSS (Minify JavaScript and CSS )

参见 CSS 篇 的描述

4. 移除重复脚本 (Remove Duplicate Scripts)

对于一些历史遗留站点或是论坛类的网站来说,这倒是比较常见的。接手维护人前后变化过多,每个人都有自己的一套。这就会带来一些潜在的麻烦。

5. 减少 DOM 访问 (Minimize DOM Access)

有三条指导建议:

  • 缓存已经访问过的元素 (Cache references to accessed elements)
  • “离线”更新节点, 再将它们添加到树中 (Update nodes “offline” and then add them to the tree)
  • 避免使用 JavaScript 输出页面布局–应该是 CSS 的事儿 (Avoid fixing layout with JavaScript)

6. Develop Smart Event Handlers

除了英文解释外,这里也提醒一下注意关于 Java Script 内存泄漏 的问题。

Web前端优化最佳实践之图片篇

1. 优化图片 (Optimize Images)

使用 GIF 、JPG 还是 PNG 格式的图片? 尽可能的使用 PNG 格式的图片,更多的功能,更小的尺寸(与 GIF 相比)。

对于 PNG 图片,考虑用 Pngcrush 或类似的工具进行优化。常见的工具如下表:

  • pngcrush http://pmt.sourceforge.net/pngcrush/
  • pngrewrite http://www.pobox.com/~jason1/pngrewrite/
  • OptiPNG http://www.cs.toronto.edu/~cosmin/pngtech/optipng/ (refer: 教程)
  • PNGOut http://advsys.net/ken/utils.htm

对 JPEG 图片的优化工具:

必需要强调的是,图片设计的同学啊,请考虑设计面向 Web 的图片 ,不要动不动就设计超过可接受尺寸之外大家伙,这应该是一种习惯,而不是什么高超的技能,只需要记住就成了。

2. 使用 CSS Sprites 技巧对图片优化 (Optimize CSS Sprites)

之前提到过,简单的说就是”利用 CSS background 相关元素进行背景图绝对定位”,把多次 HTTP 调用变为一次调用,更多参考:CSS Sprites: Image Slicing’s Kiss of Death

补充一下:对于这个技巧我曾经见到有人滥用的。把多个背景图片揉成一个,减少 HTTP 调用,这是一个很好的思路。但一定要记住这个大图片不能太”重”,我看到过 100 多K 的背景图。一个图片就把整个网站拖得很慢。比较好的例子可以参考雅虎关系的这个图 .

3. 不要在 HTML 中使用缩放图片 (Don’t Scale Images in HTML )

更多的时候,可能是因为偷懒而没有制作合适大小的图片,如果是批量处理图片的话,可能一条 ImageMagic 命令(convert )就能搞定 。必须提及的是,看到太多的对图片拉伸很难看的页面,救救这些页面!

4. 用更小的并且可缓存的 favicon.ico (Make favicon.ico Small and Cacheable)

更小,可缓存,这两条可能都不是问题。问题是,太多站点根本没有 favicon.ico 。有的时候,判断独立域名的 Blog 是否专业,基本看一下是否有 favicon.ico 就差不多了。

在 Velocity 2008 技术大会上,Yahoo! 的 Stoyan Stefanov 做的 Image Optimization: How Many of These 7 Mistakes Are You Making 也非常有参考价值。结合一起说一下。

使用synergy,可以在多台电脑间,自由切换(有时太灵活了)鼠标和键盘,并可以复制文本。并且支持跨操作系统!

事先在每台电脑上安装synergy,windows可以直接下载二进制安装包;linux下可以直接yum或emerge安装,也可以下载源码安装。

安装成功之后,先配置server。我使用windows作为server,双击启动之后,点击configure配置:

server below client; client above server

然后先启动server,再启动client(linux下:synergyc server-name)

几个小技巧:

1、 top 、bottom比left、right好用,因为我的操作习惯是,左手鼠标

2、 server的0%-30%top为client就好了,这样减少无意中鼠标移到client的可能

synergy官网地址:http://synergy2.sourceforge.net/

gnuplot简介

Gnuplot 是一种免费分发的绘图工具,可以移植到各种主流平台。它可以通过交互式的命令行画图,也可以从文件中读取命令画图。

Gnuplot supports many types of plots in either 2D and 3D. It can draw using lines, points, boxes, contours, vector fields, surfaces, and various associated text. It also supports various specialized plot types.

gnuplot安装

方式1:

自动安装,如geetoo下的emerge: sudo emerge gnuplot

方式2:

源代码安装。

SourceForge下载gnuplot源代码,并解压缩:tar -xzvf gnuplot.tar.gz

./configure

make ; sudo make install

命令行运行方式

输入gnuplot命令,启动后,进入交互式模式,在”gnuplot>”提示符下可以开始画图。

如果是桌面下运行,则输入: plot sin(x)后,会弹出图片浏览器,显示正弦曲线图。

还可以把图片保存在文件里:

>set term jpeg

>set output ‘a.jpg’

>plot sin(x)

这时,会生成a.jpg文件。

更复杂的作图方式可以参考ibm的教程:http://www.ibm.com/developerworks/cn/linux/l-gnuplot/index.html

可能出现的问题

1. 安装中,如果configure出现问题,可以查看源代码下的config.log,看看其中有报哪些error。可能是缺少依赖库等。

2. 安装后,启动gnuplot,输入set term jpeg,报错:

unknown or ambiguous terminal type

这是因为安装时缺少jpeg的依赖库,查看config.log可以看到jpeg test的结果是no!

所以需要事先安装支持jpeg的gd库(确保重新安装gd后,gnuplot安装时使用的libgd.so和libjpeg.so是你新安装的)。

参考文档:

gnuplot官网:http://www.gnuplot.info/

gnuplot 让您的数据可视化:http://www.ibm.com/developerworks/cn/linux/l-gnuplot/index.html

1、 怎样在shell命令行里输入制表符tab?

输入tab键,在shell里,会自动补完。当需要输入tab的时候,可以输入:C-v tab,即先ctrl+v,再按tab键。

2、 sudo命令与重定向

sudo ./test.php > no-permision.txt

这时会报错,没有权限。因为sudo只作用于一个命令。可以如下:

sudo sh -c ‘/test.php > no-permision.txt’