2009年12月24日星期四

Resources for Graduate Students

Basics:

On Writing and Presenting:

Writing

Presenting

Advanced Topics:

2009年12月19日星期六

compressive sensing

http://dsp.rice.edu/research/compressive-sensing

2009年12月10日星期四

Linux command

To check the information of CPU
less /proc/cpuinfo

To check the information of CPU
less /proc/meminfo

HAHA, a cow watering in Infocom

Look at this cow in wireless networking:

Dr. baochun li

http://www.eecg.toronto.edu/~bli/

He has 11 papers accepted to 2010 Infocom, while last year 9 papers.
In his publication page, only Infocom papers are listed....
How can he achieve that!

Someday, I am gonna to talk with him to capture some experience...

2009年12月5日星期六

begin a time on convex optimization

I started a self studying time specialized on convex optimization.
will focus on the foundation of convex optimization, trying to dig into tricks and principles.
Hope I can get what I want.
Will update my progress frequently. Keep watch me! :)
----------------------------------------------
Some information about Convex Optimizations course by Dr. Stephen Boyd in Stanford
Name: EE364a: Convex Optimization I
Book: http://www.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf
Slides: http://www.stanford.edu/class/ee364a/lectures.html
Homework list: http://www.stanford.edu/class/ee364a/homework.html
HW solution: http://www.stanford.edu/class/ee364a/hw
Video lectures: http://www.stanford.edu/class/ee364a/videos.html
--------------------------------------------
Dec.16 chapter 1 done!
------------------------
Dec.17th
stuck in numberless definition of optimizations
--------------------
Dec.18th
done chapter 2, gave a presentation on CH1&2 at 3:00-5:00pm :)
---------------------
Dec. 28th
Still in CH3
---------------------
Jan 4th
Done CH3, begin the CH4

2009年12月4日星期五

funny biography

Check the biography of this faculty member in UIUC...

so funny, ha!

http://compgeom.cs.uiuc.edu/~jeffe/

Wireless Power

Wireless Power, what a fantastic technology being hot developed right now...
Will keep following the update! :)

http://www.eetimes.com/rss/showArticle.jhtml?articleID=222000664&cid=RSSfeed_eetimes_newsRSS

Wireless Power Consortium
http://www.wirelesspowerconsortium.com/

2009年12月1日星期二

Reference on rate adaption

A few references on rate adaption:
http://robotics.eecs.berkeley.edu/~pister/290Q/Papers/Radios/LanziseraMultirate15dot4.pdf
http://portal.acm.org/citation.cfm?id=1161107&dl=GUIDE&coll=GUIDE&CFID=49476314&CFTOKEN=36292035
http://home.eng.iastate.edu/~daji/papers/infocom2006.pdf
www.mit.edu/~mythili/research/sigcomm258-vutukuru.pdf
http://www.cs.purdue.edu/nsl/jhchoi-DARF.pdf

2009年11月24日星期二

cognitive network research in Microsoft

There is an interesting project -- Networking Over White Spaces (KNOWS)

http://research.microsoft.com/en-us/projects/knows/

http://research.microsoft.com/en-us/groups/wn/

CR and SDR design in CMU

Dr.Peter Steenkiste from Carnegie Mellon University
has organized some interesting projects and courses on cognitive radio and software-defined radio design.

CogNet
http://www.cs.cmu.edu/~prs/cognet/

Wireless Emulator
http://www.cs.cmu.edu/~emulator/

15-849: Cognitive Networking
http://www.cs.cmu.edu/~prs/wirelessF09/

18-759: Wireless Networks
http://www.cs.cmu.edu/~prs/wireless09/

2009年11月22日星期日

Dynamic Source Routing

Dynamic Source Routing is an routing protocol in wireless mesh network。
It is on-demand protocol, and have a good advantage of restrict BW consumption.


http://en.wikipedia.org/wiki/Dynamic_Source_Routing

openspectrum.info

http://www.openspectrum.info/

What is Open Spectrum?

"Open Spectrum" is based on the realization that technology can reduce or even eliminate the need for governments to micro-manage wireless communication. In different contexts it can be viewed as

* an ideal of freedom in the use of radio frequencies;
* a critique of traditional spectrum management;
* a possibility arising from new trends in radio design.

2009年11月21日星期六

relay selection schemes

Build a simple two-hop relay selection model, that means between Souce and Destination, we want to find out the best relay sensor to perform the relay task.

So, what is criterion to choose the optimal relay sensor?
For performance, the one makes the largest SNR will be the best choice.
If the energy efficiency is also considered, Ant Colony algorithm can be used.

2009年11月17日星期二

Linear Regression Tutorial

Some good tutorial about the linear regression.

we have two sets of data x and y, the relationship is linear.This relationship is known as having a linear correlation and follows the equation of a straight line.
y = mx+b
Below is an example of a sample data set and the plot of a "best-fit" straight line through the data.

Here comes the simple method to find out the parameters a and b.


http://phoenix.phys.clemson.edu/tutorials/regression/index.html

最佳学习网站 ZZ

最佳学习网站
课堂之外,仍有许多网站有益学习和提高。 图片提供:PA

1. 视频和播客杂志(blog.makezine.com/podcast ):有很多适合周末自己动手的项目,有的很生猛,有的很诙谐。

2. 奥威尔日记(orwelldiaries.wordpress.com) :以博客形式连载乔治·奥威尔(译注:英国左翼作家,新闻记者和社会评论家。主要作品有《动物农场》、《一九八四》)日记,涉及其个人生活和政治观点。日记 距今约有70年了。

3. iTunes (apple.com/itunes):网站上所有的东西都是免费的,最令人惊喜的是它居然提供世界上最享有盛誉的学术机构的讲座录音(耶鲁大学, 纽约现代艺术博物馆, 牛津大学, 泰特美术馆)。

4. 诡秘地图(atlasobscura.com) :恐怖的非寻常之地,它也无意成为传统的旅游指南书。

5.科学知识问答 (howstuffworks.com): 网站创始人马歇尔‧布雷恩(Marshall Brain),旨在用通俗易懂的文章和视频解释每一个科学知识,从基因编码到汽车变速器问题。

6. 不管是想了解阿尔巴尼亚语,还是踏踏实实地地想学一门语言,你都不能错过BBC语言课堂(bbc.co.uk/languages)

7. 国家地理(nationalgeographic.com) :大量神奇的摄影图片,以及很多关于宇宙,环境,动物甚至音乐的哲理文章。

8. 史密森尼百科全书 (si.edu/Encyclopedia_SI):不是一本大型综合类百科全书。它主要是为艺术和动物两大门类提供详细资料。

9. 名校视频课程(academicearth.org) :来自常青藤大学联盟和西海岸名校的免费视频课程,无需支付 $75,000 (£45,000) 的学费。

10. 生活百科全书 (eol.org) :正在进行中的伟大工程。他们希望为每个已知物种建立一份科学档案。目前他们已经为16万多个物种成功创建了网上档案。

11. 论坛视频讲座 (fora.tv) :收集了大量公共活动和学术研讨会的视频讲座,从艾丽西娅·西尔维斯通(译注:好莱坞女明星)在书店讨论素食主义到诺姆·乔姆斯基(译注:麻省理工学院语言学的荣誉退休教授。其《生成语法》被认为是20世纪理论语言学研究上最伟大的贡献。)在加州联邦俱乐部发表关于语言的演讲。

12. 明天我看什么书呢? (whatshouldireadnext.com) :分析你最近读过的一本书,推荐你感兴趣的书,值得一试呀,权当娱乐。

13. 现在就兴奋吧 (gethighnow.com) :这可不是什么贩卖不良药品的网上商店。它可是一家出色的科学网站,负责解答视觉和听觉幻觉方面的问题。

14. 心理牙线 (mentalfloss.com):网站上充满了各种清单和琐事,深受一般知识爱好者和高新技术迷的热捧。

15. 奇怪的地图(strangemaps.wordpress.com) :收集各种稀奇古怪的地图,比如美国距离麦当劳餐厅最远的地方。

16. Issuu (issuu.com) :网上杂志出版社。你可以很方便地创建一本诸如Urb的非主流音乐杂志,Teen Piano那样的小众出版物(封面主题:老师居然也这样认为。)

Some free videos for courses

academicearth.org

Here, I have included some links specially:
Convex Optimization I and II
by Dr. Stephen Boyd Stanford

http://academicearth.org/courses/convex-optimization-i
http://academicearth.org/courses/convex-optimization-ii

There are some other interesting courses in the website, a good complement to MIT open course.

2009年11月11日星期三

Matlab实现多种图像配准ZZ

本文讲述如何利用Matlab Image Processing Toolbox中的图像配准工具实现线性正投影、仿射、投影、多项式、分段线性、局部加权平均配准的过程。

实验平台
X86 PC,Windows XP sp2, Matlab 7.1

资源的获取
图片资源来自http://vision.ece.ucsb.edu/registration/satellite/testimag.html,其中每个压缩包里存有两副图片,每副图片以矩阵形式保存。

matlab工具的使用方法:查看帮助mage Processing Toolbox User's Guide——Image registration。

涉及配准方法简介
该工具箱提供的配准方法均需手工选择图像间的匹配点对(control points pair),均属于交互配准方法。其基本过程为:读入图像数据->在两副图像上选择足够匹配点->选择配准算法,计算变换参数->变换图像。

假设input image(输入图像)为欲进行配准的图像,base image为配准是的参考图像。以下是我参考matlab帮助给出了简介。

1.线性正投影(linear conformal):最简单。平面映射成平面。
当输入输入图像与参考图像对比,只是存在全局的平移、旋转、缩放或其三者组合的差别时(正方形仍对应正方形),选择此配准方法。此方法至少需要2对匹配点。

2.仿射(affine):将平行线转换成平行线。
当输入图像形状存在切变现象(正方形对应平行四边形),选此法。至少需3对匹配点。

3.投影(projective):将直线映射成直线。
如果输入图像呈现倾斜,翘起现象,选此法。至少需4对匹配点。

4.多项式(polynomial):将直线映射成曲线。
如果输入图像出现不规则曲变,采用此法。Matlab中提供有2、3、4次幂的实现,分别至少需要6,10,10对匹配点。

5.分段线性(piecewise linear)
如果输入图像的各个局部之间的退化模式明显不一样,选此法。至少需要4对匹配点。

6.局部加权平均(local weighted mean)
与分段线性一致,但效果较之好。至少需要6对(推荐12对)匹配点。

实验步骤

1.读取图像数据。
因为源图像以矩阵形式存在一个二进制的文件里,用fread可将其读取到变量矩阵中。将读取文件编制成一个子函数(RTIread.m),源代码如下:
function imMatrix=RTIread(FILENAME,SIZE)
%RTIread Read the image matrix from binary "Registration Test Image" file.
% imMatrix=RTIread(FILENAME,SIZE) opens the file FILENAME, and reads the
% number of elements specified by SIZE.
% FILENAME is a string containing the name of the file to be opened.
% Valid entries for SIZE are:
% N read N elements into a column vector.

% inf read to the end of the file.

% [M,N] read elements to fill an M-by-N matrix, in column order.

% N can be inf, but M can't.
%
% It returns the image matrix.
fid=fopen(FILENAME,'r');
imMatrix=fread(fid,SIZE,'uint8=>uint8');
fclose(fid);
%image(imMatrix);

这里我们选取了两张600×600的图片,文件名为“casitas84”和“casitas86”。运行以下代码读取图像矩阵:
% 1. Read the images into the MATLAB workspace.
base=RTIread('casitas84',[600,600]);
input=RTIread('casitas86',[600,600]);

2.选取匹配点(control points)。
根据预定的配准方法,选定足够的匹配点对。运行下列代码:
% 2.Specify control point pairs n the images and save.
cpselect(input,base); %please select 15 points for test.
出现GUI界面。

操作很简单,只需注意选点要均匀布开,以增加其代表性。选定完毕,File-> Save Points to Workspace将数据保存到工作区中。Workspace立刻多出两个N×2的数组(其中N为选定的匹配点对数),分别为input_points和base_points,如:

input_points =
119.5185 193.5926
168.9012 242.9753
105.9383 140.5062
459.0247 131.8642
313.3457 257.7901
292.3580 165.1975
276.3086 33.0988
283.7160 380.0123
76.3086 297.2963
135.5679 83.7160
360.2593 313.3457
94.8272 446.6790
70.1358 354.0864
181.2469 361.4938
381.2469 460.2593
252.8519 433.0988

3.利用十字相关法调整选定了的匹配点。

这步可选。运行代码:
% 3.Fine-tune the control points using cross-correlation.

input_points_corr = cpcorr(input_points,base_points,input,base); %optimism the points
input_points_corr为优化后在输入图片的对应匹配点。

4.计算变换公式的参数。

利用cp2tform,选定变换类型(即配准方法),计算变换参数。以下只需选定一种即可。
% 4.Specify the type of transformation to be used and infer its parameters

% (1) not Fine-tune points
Tlinear = cp2tform(input_points,base_points,'linear conformal');
Taffine = cp2tform(input_points,base_points,'affine');
Tprojective = cp2tform(input_points,base_points,'projective');
Tpolynomial2 = cp2tform(input_points,base_points,'polynomial',2);
Tpolynomial3 = cp2tform(input_points,base_points,'polynomial',3);
Tpolynomial4 = cp2tform(input_points,base_points,'polynomial',4);
Tpiecewise = cp2tform(input_points,base_points,'piecewise linear');
Tlwm = cp2tform(input_points,base_points,'lwm');

% (2)Fine-tune points
fTlinear = cp2tform(input_points_corr,base_points,'linear conformal');
fTaffine = cp2tform(input_points_corr,base_points,'affine');
fTprojective = cp2tform(input_points_corr,base_points,'projective');
fTpolynomial2 = cp2tform(input_points_corr,base_points,'polynomial',2);
fTpolynomial3 = cp2tform(input_points_corr,base_points,'polynomial',3);
fTpolynomial4 = cp2tform(input_points_corr,base_points,'polynomial',4);
fTpiecewise = cp2tform(input_points_corr,base_points,'piecewise linear');
fTlwm = cp2tform(input_points_corr,base_points,'lwm');

诸如Tlinear的变量为一个称为TFORM的数据结构,尚没做仔细研究:
Tlinear =
ndims_in: 2
ndims_out: 2
forward_fcn: @fwd_affine
inverse_fcn: @inv_affine
tdata: [1x1 struct]

5.变换图像。

% 5.Transform the unregistered image to bring it into alignment.
title('image registration polynomial method');
subplot(2,2,1);
imshow(base);
title('Base image');
subplot(2,2,2);
imshow(input);
title('Input image');
subplot(2,2,3);
imshow(imtransform(input,Tpolynomial2));
title('registered image');
subplot(2,2,4);
imshow(imtransform(input,fTpolynomial2));
title('registered image(fine-tune points)');

结果如下:
总结
1.image和imshow区别。前者视base,input此类二维图片矩阵为索引图像,在系统的index库中选取颜色。
2.选择适当的方法来建立转换参数,并非算法越复杂越好,应参考成像因素(退化因素)。
3.尚没有看出十字相关法的好处。
4. 利用cpselect选择匹配点,cpselect可以返回一个GUI句柄。欲实现如下功能:当打开cpselect GUI 时,m文件程序暂停运行,关闭之后继续执行。因为对GUI编程不懂, 使用了waitfor,pause函数都没法实现。尝试中……

Sup VS esssup, inf VS essinf

Supremum

In mathematics, given a subset S of a partially ordered set T, the supremum (sup) of S, if it exists, is the least element of T that is greater than or equal to each element of S. Consequently, the supremum is also referred to as the least upper bound, lub or LUB. If the supremum exists, it may or may not belong to S. If the supremum exists, it is unique.

http://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Supremum_illustration.png/300px-Supremum_illustration.png

Infimum

In mathematics, particularly set theory, the infimum (plural infima) of a subset of some set is the greatest element (not necessarily in the subset) that is less than or equal to all elements of the subset. Consequently the term greatest lower bound (also abbreviated as glb or GLB) is also commonly used. Infima of real numbers are a common special case that is especially important in analysis. However, the general definition remains valid in the more abstract setting of order theory where arbitrary partially ordered sets are considered.

Infima are in a precise sense dual to the concept of a supremum.
http://upload.wikimedia.org/wikipedia/en/thumb/0/0a/Infimum_illustration.svg/300px-Infimum_illustration.svg.png

Essential supremum and essential infimum
\mathrm{ess } \sup f=\inf \{a \in \mathbb{R}: \mu(\{x: f(x) > a\}) = 0\}\,
\mathrm{ess } \inf f=\sup \{b \in \mathbb{R}: \mu(\{x: f(x) < b\}) = 0\}\,

电脑屏幕保护色(转载)

据个人寻医经历得知,当今从事长期使用电脑工作的人,70%的患有不同程度的眼睛疾病,如干眼症、角膜炎、结膜炎、沙眼等,尤其是干我们这行的平均每天要对电脑10个小时以上就更为严重,所以建议大家从现在起要提高对眼睛的保护意识。今天收到在KONKA工作同学的如下帖子,觉得很有用即张贴与此,请大家看完帖子赶紧动手像呵护自己的老婆或老公一样呵护自己的眼睛吧(呵呵,虽然比喻不太恰当,不过重要性可谓一般)。
提示:如下为windows2000的设置方法,XP系统的设置方法可能稍微有点差别,不过凭大家的聪明才智我相信肯定不是问题,^_^。

正文如下:
一个朋友前一段时间因为常常加班导致眼睛过度疲劳得了干眼症,大夫建议她电脑屏幕不要用白色,因为白色对眼睛的刺激是最大的。像我们这样整天对着电脑,也应该 注意一下。其实,只要稍微设置一下,就能让你电脑上的窗口从白花花的颜色变成淡淡的绿色。
设置方法:打开控制面板中的"显示" 选择外观(appearance)-高级(advanced),然后在项目(items)那栏选窗口(windows),再点颜色(color)-其它 (others),然后把Hue(色调设为85,Sat(饱和度)设为90,Lum(亮度)设为190。然后单击 添加到自定义颜色(Add to custom colors),按“OK”...一直OK。把窗口设成绿色之后,再来把IE的网页背景也变成养眼的绿色吧:打开IE,点击工具 (TOOLS),点INTERNET选项(INTERNET OPTIONS),点右下角的 辅助功能 (Assessibility),然后勾选不使用网页中指定的颜色(ignore colors specified on web pages),然后点“OK”退出。 OK,现在你就会发现你的屏幕已经变成淡淡的绿色了。这个颜色会比白色柔和许多,刚开始可能你还有些不适应,但确实对我们的眼睛有好处,建议大家试一下。

2009年11月10日星期二

linux commands

To acquire the permission of file operation,

sudo chmod 777 *

2009年10月29日星期四

ZZ 晚睡,其实是一种病!!——“拖延症 Procrastination”

Procrastination的形成
1.一个人认为自己5天之内可以做完一件事情,所以在离deadline还有15天的时候一点不着急,直到最后只剩5天了才开始。
2.这种紧迫感和焦虑往往促发人的斗志,会让自己觉得,自己只有在压力状态下才有做事情的状态。
3.最后拿到成绩的时候,成绩往往不是很差,这样子就强化了自己最适合在deadline之前短期高压的状态下工作的心态,并且对以后的行为不断进行自我暗示。

这一个部分写得非常符合大部分有拖沓习惯的中国学生的经历。因为中国学生往往非常聪明,所以哪怕最后只剩一点点时间了,也会完成得不错;从而自认为自己最适合这样子的工作状态。周而复始,反复循环。

Procrastination的其他特点:
1.没有自信。因为每次完成任务都达不到自己最高的能力,对自我能力的评估会越来越低。

2.我太忙。我一直拖着没做因为我一直很忙。
3.顽固。你催我也没有用。我准备好了自然会开始做。
4.操控别人。他们着急也没用,一切都要等我到了才能开始。
5.对抗压力。因为每天压力很大,所以要做的事情一直被拖下来。
6.受害者心态。我也知道自己怎么会这样,别人能做得自己做不到。

Procrastination的浅层原因
1. 太难
2. 太耗时间
3. 没有相关知识技能
4. 害怕别人知道自己做不好

Procrastination深层原因,以及解决方法
1.完美主义。
所有事情都要达到一个很高的境界,要一次做好,所以不愿意匆匆忙忙开始,要万事俱备才行。
解决方法:对自己说现在的状态就已经很好,可以开始了。每有一点进展都鼓励自己。意识到一点错误都不犯是不可能的。伟大的作家,诗人,艺术家都是断断续续完成他们的杰作的,自己也可以如此。

2. 抵制与敌意。
这个老师对我态度太差了,所以我不高兴作他布置的作业。
解决办法:要意识到,不完成作业受害的是自己。不能仅仅因为一个老师的态度而影响到自己的前途。

3.容易颓废。
任务太难了,或者别人都不需要做我干吗要做,不能忍受持续做这件事情,等明天再做吧。但是往往明天到了,心里还是不高兴做,又继续往后推。
解决办法:寻找一切可以找到的帮助,设法降低事情的难度,取得进展;暂时推迟自己想要放弃的心态,每天能多做一点就多做一点。这一点也很符合很多中国学生的现状。因为不是人人都对自己的课题感兴趣的,所以容易产生厌倦感,所以不容易定下心来完成相关任务。解决的办法如上所说,向别人寻求帮助,听取建议,同时可以把任务分成比较容易的小块,化整为零,告诉自己其实每一个小部分都很容易就能完成。

4. 自我贬低。
如果常常不能很好地完成任务,自己对自己的能力的估计会越来越低,即使以后完成好了,也认为是运气。
解决办法:接受别人对自己工作的赞扬;自己对自己进行勉励。

治疗的步骤:
1. 意识到自己的拖沓是完全没有必要的。
2. 把拖沓的原因一条条写出来
3. 一条条克服这些原因
4. 开始做事

本文译自 Procrastination: Ten Things To Know 。
拖拉是阻碍个人成功的绊脚石,却时常出现在我们左右。

1. 百分之二十的人认为自己是长期拖拉的人。对他们来说拖拉是一种生活方式,虽然并不适应它。这种状态充满了他们的生活。他们不能按时付帐单,他们忘了买音乐会的门票,他们直到圣诞前一天才去买礼物……

2. 拖拉并非不重要,虽然通常我们不把它当作一个严重问题。它其实是一个自我调节的深奥问题。通常我们都宽容别人拖拉的借口,这也是问题的根源。

3. 拖拉并不是时间管理或者计划方面的问题。拖拉并不因个人对时间的估计能力而不同,虽然这些人会更乐观一些。Ferrari 博士强调说:“要一个拖拉的人做一个有计划的人,就像让一个长期消沉的人马上振奋起来一样。”

4. 拖拉不是天生的。它是从周围的人学来的,但并不直接。它可能来自强权的家教,拖拉甚至可能是一种反抗的形式。这种家庭环境下,朋友对拖拉者的宽容会助长这种习惯。

5. 拖拉的饮酒者会有更高的酒精需求量。拖拉的人会喝的更多,这是自我调节有问题的表现。

6. 拖拉的人对自己撒谎。比如“我更想明天做这件事”,或者“有压力我才能做好”,但实际上并非如此。拖拉者的另一个谎言是时间压力会让他们更有创造力,其实这只是他们的感觉而已,他们是在挥霍时间。

7. 拖拉的人不断找消遣的事儿,特别是自己不需要承诺什么。查看电子邮件就是绝佳的目标,这样的事情成为他们调节情绪(比如害怕失败)的一个途径。

8. 拖拉并非一模一样。拖拉的人有不同的原因,Ferrari 博士定义了三种基本的拖拉者:
* 鼓励型,或者说找刺激型,他们盼着最后几分钟忙碌带来的快感
* 逃避型,他们回避失败的恐惧,甚至害怕成功,但实际上他们非常关心别人怎么看自己,他们
更希望别人觉得他不够努力而不是能力不足。
* 决心型,他们没法下决心。不下决心就可以回避对应对事情的拖拉。

9. 拖拉带来的损失巨大。健康是其中之一,研究表明拖拉的人更容易患病。拖拉也影响人的情绪,也会破坏团队协作和人际关系。

10. 拖拉会改变人的行为,但不会耗费多少精神力量。这并不意味着一个念头就能马上改变。这个问题可以通过高度规范的认知行为治疗来解决。

对行事拖拉的人进行劝诫就如同让抑郁症患者高兴起来那么困难。”法拉利教授认为,劝导对拖拉症患者来说作用微乎其微,关键还是要靠自己下定摆脱拖拉惯性的决心,这需要很大的精神动力才能完成。试着结合以下10个窍门,可能会更容易一些。记住,每达到其中一项,你就离成功进了一步。

明日复明日 “拖延病”的处方

case 1:我经常担心事做的不够完美。但尽力做了完美主义者,可做事的效率不是很高。经常接到任务以后,心里想的是尽快完成,可总是一拖再拖。为什么?
→病名:担心引起的拖延病。
→处方:总想把事情做的完美一些,但压力越大就越担心做不好事迟迟不敢付出行动。总是把万事的结果定为,不是成功就是失败、只要作错了一点,做的再好也都是错的。出了事就算不是自己的责任也会揽到自己身上。

首先得醒悟“自找担心”是多么消极的事情。假如,在准备报告时,最初就能写出完美的报告是不可能的。一定会有一些偏差也有理论上说服力较小的地方。所以,完美是不存在的。追寻一下到现在为止你所做过是事有多少事是完美的,一定没有特别完美的事。但一定也没耽误什么事。

case 2:一旦接到什么任务总会担心“我一定能做好吗?做错了教授会不会责备我?”在想这些的时候时间已悄悄溜走了。
→病名:自我指责的拖延病
→处方:对过去一些失败的记忆会变成一种压力。想治好自我指责的病,可以把责任都推托到别人身上。不要因为善良的自卑感而把一切问题都自己扛。这样只会让你的自信心下降。轻视自己之前先把责任都推到别人身上吧!然后,用另一种方式解释自己的失败。比如:在小组功课中有了一个好的创意。但因为没有时间,结果在报告中露掉了。在这种情况发生的时候,如果是自我指责的人就会想:“哎!因为没有发表这个创意,以后教授知道了会不会扣我的学分呢?”取代上面想法的应该是“我真了不起,能有这么好的创意。”或“下次写报告时用就可以了。那一定比这次轻松多了。”

case 3:我特别的执着,一旦问题袭来的时候就感到不安和急躁。问题解决之前做不好任何事情。
→病名:执着引起的拖延病
→处方:“怎么会这样?”“到底那时候为什么那么做?”即使在过去的事情里找原因也不会有什么改变。澄清一件事也解决不了问题。因为事情是由几种因素合成的。什么时候才能把事情一一都弄清楚呢?在公司写企划案的时候写不好的原因也有很多种。期限太短或过去写过一次结果被上司责骂了一顿,留下了创伤。还有就是还没找到资料等等。澄清问题对以后没有任何帮助。所以,要往可以解决问题的方向行动。做企划案时应该想:“这次应该跟其他公司比较着做看看了。”如果这样想着行动的话一定有效。

case 4:我总是没有自信,怎么努力也改不了。为了从苦海中摆脱出来看过不少有关的书籍但都徒劳无功。因为没有自信做起事也不顺利。不知道能不能改变一下这样的我。
→病名:封闭自我印象引起的拖延病
→处方:在苦恼的边缘走不出来的人是因为被自己错误的想法封锁住了。一定要从误区的牢笼里走出来。为了打破错误的想法扪心自问一下自己“假如,我是能做到 ○○事的人,应该先想些什么?先做些什么?”假如,做报告的时候,因为忙于某些事迟迟没做出来。这时,应该想“如果我是个做报告的能手,应该先做什么事呢?”考试成绩不好,但还得向父母交代的时候应该想“假如,我是个成绩不好,但能向父母主动表白的人,应该先做什么事?” 想这些问题的时候,不能用太长的时间。第一个想到的就是正确答案。所以直接实第一个想法就可以了。

case 5:我在所有决定中没有自信。当决定了做某件事的时候,往往因为不确定是对的还是错的而烦恼。这样一来事就一拖再拖。不是因为我懒,而是因为每次都不能付出行动。所以人们都说我办事的效率不高。
→病名:不安感或懒惰引起的拖延病
→处方:你在想自己的想法对不对那是因为“为了想这个办法用了那么长时间,付出了那么大的努力,但要是失败了怎么办?就不就功亏于溃了吗?”因为这些不安感一直浮现在脑海里。所以不想做任何事情。假如,要学习但桌子很乱找书都很不容易。明知道应该收拾一下,但怕麻烦迟迟不行动。这时候,父母要唠叨个不停,就有了叛逆的心理更是不收拾。这时你应该冷静下来好好想一想。是打扫一下好还是睁一只眼闭一只眼过的好。然后再决定。把最初的想法扭转过来很难,但一旦习惯了就觉得行动比拖延更轻松。

2009年10月18日星期日

在LaTeX文档中插入图片的几种常用的方法zz

LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文件. 可参考本页的 "如何得到ps(eps)格式的文件"一节的内容准备好欲插入图片的 eps文件. (这里也有一个jpg2eps一个小软件)
在LaTeX文档中插入图片都是通过使用一些latex图形处理宏命令来实现的, 有很多宏命令都支持在在LaTeX文档中插入eps格式的图形文件, 主要有:

1. 用includegraphics宏命令(graphicx包):
首先需在latex文档的文件说明部分加上:

usepackage{graphicx}

然后在需要插入图片的地方引用:

includegraphics[height=高度]{图片文件名}
或者: includegraphics[width=宽度]{图片文件名}

其中的"高度"和"宽度"是指希望图片打印的高度和宽度, 必须给出单位, 可用厘米(cm)或英寸(in). 高度和宽度也可用上述格式同时给出, 这样可以改变原图的长宽比例. 上述命令中的图片文件名是指欲插入的图片文件 的文件名, 图片必需是eps格式的.
用graphicx包的includegraphics宏命令插入图片时还可以使图片旋转, 方法是:

includegraphics[height=高度][angle=旋转角度]{图片文件名}

强烈推荐用这种方法在LaTeX文档中插入图片, 下面的几种方法都只是参考, 不建议新手采用.
2. 用includegraphics宏命令(graphics包): 使用graphics包插入图片过程较麻烦, 具体的方法可参见 "Graphics and Colour with LaTeX"一文中的介绍.
3. 用psfig宏命令: 首先需在latex文档的文件说明部分加上:

usepackage{psfig}

然后在需要插入图片的地方引用:

psfig{figure=图片文件名,height=高度}
或者: psfig{figure=图片文件名,width=宽度}

其中的"高度"和"宽度"是指希望图片打印的高度和宽度, 必须给出单位, 可用厘米(cm)或英寸(in). 高度和宽度也可用上述格式同时给出, 这样可以改变原图的长宽比例. 上述命令中的图片文件名是指欲插入的图片文件 的文件名, 图片必需是eps格式的.
4. 用epsfig宏命令: epsfig宏命令的使用方法和psfig完全相同, 具体方法是: 首先需在latex文档的文件说明部分加上:

usepackage{epsfig}

然后在需要插入图片的地方引用:

epsfig{figure=图片文件名,height=高度}
或者: epsfig{figure=图片文件名,width=宽度}

其中的"高度"和"宽度"是指希望图片打印的高度和宽度, 必须给出单位, 可用厘米(cm)或英寸(in). 高度和宽度也可用上述格式同时给出, 这样可以改变原图的长宽比例. 上述命令中的图片文件名是指欲插入的图片文件 的文件名, 图片必需是eps格式的.
5. 用epsf宏命令: 用epsf宏命令的使用方法是: 首先需在latex文档的文件说明部分加上:

usepackage{epsf}

然后在需要插入图片的地方引用:

epsfxsize=宽度epsffile{图片文件名}
或者: epsfysize=高度epsffile{图片文件名}

其中的"高度"和"宽度"是指希望图片打印的高度和宽度, 必须给出单位, 可用厘米(cm)或英寸(in). 高度和宽度也可用上述格式同时给出, 这样可以改变原图的长宽比例. 上述命令中的图片文件名是指欲插入的图片文件 的文件名, 图片必需是eps格式的.

如何得到PostScript(.ps或.eps)格式的文件

LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文件.

*
* UNIX下的各种应用软件都可以把其结果输出为ps格式, 大部分软件也可以 输出eps格式.
* 若软件只能输出ps格式而不能输出eps格式的结果, 则可用ps2epsi命令将其转化为eps格式, 可参考man ps2epsi的说明.
* 若图片文件的格式是位图图形文件则可用Image Magick软件包的display 和convert工具转化为ps或eps格式的文件. 详见其man页和 使用说明
* Windows软件的输出结果变成ps/eps文件: 可参见本网站 "高能物理研究室Windows系统使用技巧"中的 "如何把Windows系统中软件的输出结果转化为ps和eps格式的文件" 一栏中的说明.
*
关于LaTex中的图表问题的几篇有用的文章
1.
2. Graphics and Colour with LaTeX
有关在LaTex中插图和使用颜色的在线指导.
3. Figure'ing and Picture'ing LaTeX(ps格式)
在LaTex中插入ps图和xfig图的方法.
4. Using Imported Graphics in LaTeX2e(ps格式)
关于LaTex中插图的详细论述, 包括基本概念, 文件格式及其相互转换, 有关软件等. 其中还有如何把ps格式图片中的字符替换成latex格式字符, 以解决有些应用软件无法使用希腊字母等特殊字符及复杂数学公式 表达式的问题.
5. LaTeX maths and graphics(ps格式)
主要是关于在LaTex中插入图片和公式的方法.

转自: http://hepg.sdu.edu.cn/Service/tips/latex/latexfig.html

2009年10月16日星期五

NS2 manual

http://www.joshuarobinson.net/docs/802_11.html

2009年10月13日星期二

some useful links for latex

Online LaTeX Equation Editor
http://thornahawk.unitedti.org/equationeditor/equationeditor.php


Online tutorials on LaTeX
http://www.tug.org/tutorials/tugindia/

2009年10月8日星期四

More connections made for LTE applications(ZZ)

LONDON — The ng Connect Program — founded by Alcatel-Lucent earlier this year to drive the development of services for emerging LTE and 4G networks — has added five new members, two new Proofs of Concept and two more labs.

The initiative now boasts 26 members, eight PoCs, and six labs and demonstration centers around the world.

The latest members to sign up include CeativeLabs — best known for its Sound Blaster sound cards; digital security and SIM specialist Gemalto; Kabillion " an Emmy Award-winning entertainment program service for kids ages 6-12 available both as a free VOD channel and a free online broadband site; V-Gate, which is bringing 3D and LBS to mobile devices with its metaport offering that transmits 3D content in real time to mobile devices; and R360, which focuses on providing mobile and PC-based access to secure and private business productivity suites on higher end phones and mobile devices.

One of the Proofs of Concept, developed by Alcatel-Lucent and Gemalto, focuses on mobile access to corporate and cloud applications for telcos through hardware-based authentication and single sign-on; the other a digital signage solution developed by MediaTile in collaboration with Alcatel-Lucent that integrates 4GVideoPresence technology to support real time, interactive video sessions between consumers in-store with product questions and the brand representative.

The initiative will now have access to R&D and proof-of-concept demonstration facilities in Ottawa, Canada; Dallas, TX; Murray Hill, NJ; Stuttgart, Germany, and now Paris and Villaceaux, France, for European operators.

Since February 2009, collaborations have created eight demonstrations that showcase future applications over next generation networks for the education, healthcare, advertising, digital signage and entertainment sectors.

2009年10月7日星期三

Telecomm is recovering~ but not wireless

It seems like wireline market is much better than wireless because of new need on 10-, 40- and 100 Gbit/s Ethernet networks in many areas.

Also, Optical Transport Network(OTN) technology is pretty hot topic recently. It is very useful in communicatio networks for packets processing and optical transport.
"Starting in 2010, Verizon plans to deploy for its Fios network only OTN systems that support both optical transport and packet processing". And a lot of companies are working on the projects related to OTN, like HuaWei.

Does it mean we need to switch the research area to optical networks?

http://www.eetimes.com/rss/showArticle.jhtml?articleID=220301536&pgno=1

2009年10月6日星期二

LaTex学习笔记ZZ

From:

http://bbs.sjtu.edu.cn/bbstcon,board,TeX_LaTeX,reid,1248261286.html

http://latex.yo2.cn/articles/latex-thesis.html

http://cnacademia.org/bbs/viewthread.php?tid=1017&extra=

http://www.cnacademia.org/home/space.php?uid=106&do=blog&id=791

建议初学者不要在配置TeX系统上花太多时间。等熟悉以后,觉得无聊,可以自己DIY搭一个TeX系统玩。

Windows 下的可用的已经打包好的TeX/LaTeX套装有:

1. CTeX 最新版本为 2.7.0.39

http://www.ctex.org/CTeXReleaseNotes

2. CTeXLive 2008

http://bbs.ctex.org/viewthread.php?tid=50728

CTeX基于MikTeX,CTeXLive基于跨平台的TeXLive。装好以后都能处理CJK-GBK, CJK-UTF8,xetex-UTF8方案的中文tex源文件。两者的安装都很傻瓜化(CTeXLive有相当详尽的安装说明,还能在Linux下使用)。安装以后都不需要额外安装中文字体了。因为配置中文环境、安装中文字体是自己配置TeX系统比较头大的一部分。总之这两个套件帮你弄好了。

CTeX使用的是Windows自带的TrueType字体(除了宋体simsun.ttf);CTeXLive将TrueType字体转为Type1字体后放到了TeX目录树中,一起发布了。所以CTeX生成的中文PDF文件嵌入的TrueType字体,CTeXLive生成的中文PDF文件嵌入的是Type1字体。当然,嵌入什么类型的字体可以自己DIY的。一般而言,CTeX生成的PDF文件较小。我也比较推荐Windows下的用户使用CTeX套件。

但是,如果使用的操作系统是Vista,CTeX这种“使用操作系统中文字体”的工作方式可能会出现问题。CTeX默认会去使用XP中带的simfang.ttf simhei.ttf simkai.ttf simli.ttf simyou.ttf,这些字体在Vista下可能没有。另外,Vista下又引入了一大堆奇怪的东西,也会搞出莫名其妙的故障。CTeX论坛中(http://bbs.ctex.org/index.php已经有了一些不兼容的报告,貌似勉勉强强解决了。

既然你选择了Vista,那就意味着得自己花功夫解决兼容性问题。我周围没有Vista给我折腾,所以出了问题你自己要详细报告出来——关键字“详细”。把从命令行编译提示的错误贴出来,等等。


入门图书,推荐:

1. 《LaTeX Notes v1.17》中文的 LaTeX 笔记,是个中国老师写的,纯正的中国人,但为什么使用了一个英文标题就不得而知了。语言诙谐幽默,内容覆盖了入门所需的基本内容,也谈到了中文解决方案(用的是CJK)。

最新版v1.17下载地址lnotes.pdf

http://www.ctan.org/tex-archive/info/lnotes/#jhac16050c0d9bc3d76c408567e4c1e96c

水源上传: http://bbs.sjtu.edu.cn/file/test/1248271358192780.pdf

2. 《一份不太简短的LATEX 2e 介绍 v4.2》,经久不衰的入门资料。最新版本已经到了 v4.2。我当时是先照着上面的英文例子学,找到了一些手感。但是 v4.2 都没有介绍CJK中文方案,这个可以找别的资料补充或者 Google,推荐材料是李果正的《我的CJK》。

最新版v4.2 下载地址lshort-zh-cn.pdf

http://www.ctan.org/tex-archive/info/lshort/chinese/#jh8fc5e973703f70cf66b0e9c6b6eb3298

或 http://zelmanov.ptep-online.com/ctan/lshort_chineese.pdf

3. CTeX FAQ (CTeX常见问题集)。 一个很好的常见问题集,覆盖面很广。

http://www.ctan.org/pub/tex-archive/info/ctex-faq/ctex-faq.pdf

水源上传: http://bbs.sjtu.edu.cn/file/TeX_LaTeX/1248271394192231.pdf

2009年10月1日星期四

802.11b WiFi Channels

802.11b WiFi Channels

In the United States and Canada there are 11 channels available for use in the 802.11b 2.4GHz WiFi Frequency range. This standard is defined by the IEEE.

Channel Lower Frequency Center Frequency Upper Frequency

1 2.401 2.412 2.423
2 2.404 2.417 2.428
3 2.411 2.422 2.433
4 2.416 2.427 2.438
5 2.421 2.432 2.443
6 2.426 2.437 2.448
7 2.431 2.442 2.453
8 2.436 2.447 2.458
9 2.441 2.452 2.463
10 2.451 2.457 2.468
11 2.451 2.462 2.473

ZZ from
http://www.moonblinkwifi.com/2point4freq.cfm

怎样避免多任务同时工作--专注

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://laziocht.blog.51cto.com/107289/158940
Posted from Internet

How to Avoid Multi Tasking

You’re working on two projects at once, while your boss has placed two new demands on your desk. You’re on the phone while three new emails come in. You are trying to get out the door on time so you can pick up a few groceries on the way home for dinner. Your Blackberry is going off and so is your cell phone. Your co-worker stops by with a request for info and your Google Reader is filled with 100+ messages to read.Congratulations, multi-tasker

几乎所有的上班族都是多任务工作者。

In this age of instant technology, we are bombarded with an overload of information and demands of our time. Even having a system designed for quick decisions and for keeping all the demands of your life in order can't prevent us from being so overwhelmed with things to do that our system begins to fall apart.


This article is how not to multi-task — a guide to working as simply as possible for the sake of preserving your mental health and keeping your bodily health intact.

11个方法使你的工作变得简单,高效!

1.Get clear on why it is a bad thing to multi-task.

多任务是一件不好的事情,会使效率低下,多任务的复杂性会给你带来压力,同时增加的犯错误的几率。

* Multi-tasking is less efficient, due to the need to switch gears for each new task, and the switch back again.
* Multi-tasking is more complicated, and thus more prone to stress and errors.
* Multi-tasking can be crazy, and in this already chaotic world, we need to reign in the terror and find a little oasis of sanity and calm.

2.Start avoiding multi-tasking. The remaining steps demonstrate how to stop multi-tasking and start approaching your tasks in a zen like manner that will provide a much calmer work method.

既然多任务带来这么多坏处,我们就需要避免她。

3.Set up to-do lists for different contexts. This means having to-do lists related to such things as calls, computer, errands, home, waiting-for, etc., depending on your situation.

列出任务列表,排定优先级,设定任务最晚完成时间

4.Use a capture tool. A capture tool, such as a notebook, can be used for instant notes on what needs to be done.

使用提醒工具,或Excel记录工作列表

5.Have a physical and e-mail inbox. Make sure to have as few in-boxes as possible, so that all incoming stuff is gathered together in one place. Basically, have one in-box for paper stuff, and one for digital.

将纸质的任务放到一个文档夹里面,或将电子档的任务放到同一个文件夹里面

6.Plan your day in blocks. Have open blocks in between for urgent stuff that comes up. You might try one-hour blocks, or half-hour blocks, depending on what works for you. Or try this: 40 minute blocks, with 20 minutes in between them for miscellaneous tasks.

将你一天的时间划分成更小的时间段,来完成不同时长要求的工作,这样你的时间利用率会很高

7.First thing in the morning, work on your Most Important Task. Don’t do anything else until this is done. Give yourself a short break, and then start on your next Most Important Task. If you can get 2-3 of these done in the morning, the rest of the day is gravy.

在没有制定出来一天的MIT时,不要开始任何任务,养成这个习惯

8.When you are working on a task in a time block, turn off all other distractions. Shut off e-mail, and the internet if possible. Shut off your cell phone. Try not to answer your phone if possible. Focus on that one task, and try to get it done without worrying about other stuff.

当你决定开始做一件事情的时候,先深呼吸,然后开始专注到这件事情上,不要被周围的事务所打扰,在一小段时间内,将你的注意力全部集中到这件事情上!一件一件的专心的来完成一个个小任务。

9.If you feel the urge to check your email or switch to another task, stop yourself. Breathe deeply. Re-focus yourself. Get back to the task at hand. If other things come in while you’re working, put them in the in-box, or take a note of them in your capture system. Get back to the task at hand.

当你遇到不可避免的要去做另外一个任务的时候,先记录下你刚才做到哪一步了,然后再去做更紧急的任务,或者你可以将新任务先加入任务列表,然后回来继续做没有完成的任务,后者更为可取,因为你的思维不至于被割断。

10.Every now and then, when you’ve completed the task at hand, process your notes and in-box. Add the tasks to your to-do lists and re-figure your schedule if necessary. Process your e-mail and other in-boxes at regular and pre-determined intervals.

当你完成了一件事情后,不要急于去做先一个任务,先可以更新你的任务列表,或者将问题进行一个总结,或者重新安排一下其他的任务,这样会使你的工作更加有条理。

11.Take deep breaths, stretch, and take breaks now and then. Enjoy life. Go outside, and appreciate nature. Keep yourself sane.

当你在一个任务无法进行下去的时候,或者你没有思路的时候,你需要深呼吸,或去喝杯水,或去一趟洗手间,停止思考这个问题。当你放松回来后,说不定你已经有了新的想法!

Tips:
There are times when an interruption is so urgent that you cannot put it off until you’re done with the task at hand. In that case, try to make a note of where you are (writing down notes if you have time) with the task at hand, and put all the documents or notes for that task together and aside (perhaps in an “action” folder or project folder). Then, when you come back to that task, you can pull out your folder and look at your notes to see where you left off.

2009年9月30日星期三

CGRAN

CGRAN
https://128.2.212.19/

Some interesting projects:
https://128.2.212.19/wiki/UCLAZigBee#HowToInstall
https://128.2.212.19/wiki/USRPFadingSimulator
https://128.2.212.19/wiki/SpecEst
https://128.2.212.19/wiki/CompSens

2009年9月4日星期五

Latex Information

Latex Information

Latex is highly recommended for papers submitting to international conferences and journals.
For Starters - How to write a paper with Latex

Software

* Windows - You are recommended to download a software package from http://www.ctex.org/CTeX which includes the Latex compiler (MikTex), an integrated editor (WinEdt), as well as GSview and Ghostscript. The Chinese extension (fonts etc) is not needed for writing English papers.
* Linux/Unix - Emacs/vim + the latex package (coming with Linux distribution) usually is sufficient.

To Start With...

* Start with a template (see below for more ACM/IEEE templates)
o Download IEEE templates from http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/
o Start a conference or journal paper with bare_conf.tex or bare_jrnl.tex provided.
* Familiarize yourself with the following essential structures
o Title: \title, \author, \thanks ...
o Section: \section, \subsection, \subsubsection ...
o Lists: \begin{enumerate} \item ... \item ... \end{enumerate}; or use itemize instead of enumberate.
o Figures & Tables: \begin{figure[*]) ...\end{figure[*]}, \begin{table[*]) ...\end{table[*]}, etc. (Use * to spread the figure across two columns)
o Include EPS figures: \includegraphics{}, \epsfig{}, etc. (see below for how to create an EPS figure)
o Labels: use \label to label ALL section headings, figures, and tables, and use \ref for ALL cross-references.
o Bibliography: BibTex is recommended. All bibliography entries could be compiled in a separate file such that it could be used for multiple papers.

Frequently Used Templates

* ACM Proceedings Templates
o http://www.acm.org/sigs/publications/proceedings-templates
* IEEE Transactions
o IEEETran Home page: http://www.michaelshell.org/tex/ieeetran/
o Official IEEETran Readme & HOWTO
* IEEE Computer Society Conferences
o http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEconf/

Useful Tips

* How to convert Word (.doc) documents to Latex:
o wsW2LTX developed by Ingo H. de Boer and distributed by CTAN.org.
* How to convert OLE (Visio, Excel, PowerPoint...) figures to EPS
o I recommend the OLETeX Utility.
o You can always use a PS printer (e.g., HP ColorJet 5 PS) to print any document into a .ps file, then open it using GSview to convert it to .eps (don't forget to calculate the bounding box!!).

Additional Reading Materials

* Latex Help from U. Florida: http://web.image.ufl.edu/help/latex/
* A web based LaTeX help, based on George D. Greenwade's LaTeX help for VMS machines.
* LaTeX cookbook: tricks and methods, LaTeX construct and their results.
* Essentials of LaTeX by Jon Warbrik; a LaTeX file which can be downloaded, processed and printed out. Requires the hndout.sty style file.
* A gentle introduction to TeX by Michael Doob; a plain tex file, process it by TeX.
* symbols.tex is a LaTeX file which lists all (i.e. most of) available symbols in LaTeX with their names.
* An introduction to TeX and friends by Gavin Maltby, a LaTeX file which was also used as a course handout.
* Making double spacing in your document
* www.dante.de a German web site with a use collection of TeX related material.
* www.tex.ac.uk is a TeX archive in English, with almost anything you might want in connection with TeX.

2009年8月31日星期一

Learn Python in 10 minutes(ZZ)

Preliminary fluff

So, you want to learn the Python programming language but can’t find a concise and yet full-featured tutorial. This tutorial will attempt to teach you Python in 10 minutes. It’s probably not so much a tutorial as it is a cross between a tutorial and a cheatsheet, so it will just show you some basic concepts to start you off. Obviously, if you want to really learn a language you need to program in it for a while. I will assume that you are already familiar with programming and will, therefore, skip most of the non-language-specific stuff. The important keywords will be highlighted so you can easily spot them. Also, pay attention because, due to the terseness of this tutorial, some things will be introduced directly in code and only briefly commented on.

Properties

Python is strongly typed (i.e. types are enforced), dynamically, implicitly typed (i.e. you don’t have to declare variables), case sensitive (i.e. var and VAR are two different variables) and object-oriented (i.e. everything is an object).

Getting help

Help in Python is always available right in the interpreter. If you want to know how an object works, all you have to do is call help()! Also useful are dir(), which shows you all the object’s methods, and .doc, which shows you its documentation string:

>>> help(5)
Help on int object:
(etc etc)

>>> dir(5)
['__abs__', '__add__', ...]

>>> abs.__doc__
'abs(number) -> number\n\nReturn the absolute value of the argument.'

Syntax

Python has no mandatory statement termination characters and blocks are specified by indentation. Indent to begin a block, dedent to end one. Statements that expect an indentation level end in a colon (:). Comments start with the pound (#) sign and are single-line, multi-line strings are used for multi-line comments. Values are assigned (in fact, objects are bound to names) with the equals sign (”=”), and equality testing is done using two equals signs (”==“). You can increment/decrement values using the += and -= operators respectively by the right-hand amount. This works on many datatypes, strings included. You can also use multiple variables on one line. For example:

>>> myvar = 3
>>> myvar += 2
>>> myvar
5
>>> myvar -= 1
>>> myvar
4
"""This is a multiline comment.
The following lines concatenate the two strings."
""
>>> mystring = "Hello"
>>> mystring += " world."
>>> print mystring
Hello world.
# This swaps the variables in one line(!).
# It doesn't violate strong typing because values aren't
# actually being assigned, but new objects are bound to
# the old names.
>>> myvar, mystring = mystring, myvar

Data types

The data structures available in python are lists, tuples and dictionaries. Sets are available in the sets library (but are built-in in Python 2.5 and later). Lists are like one-dimensional arrays (but you can also have lists of other lists), dictionaries are associative arrays (a.k.a. hash tables) and tuples are immutable one-dimensional arrays (Python “arrays” can be of any type, so you can mix e.g. integers, strings, etc in lists/dictionaries/tuples). The index of the first item in all array types is 0. Negative numbers count from the end towards the beginning, -1 is the last item. Variables can point to functions. The usage is as follows:

>>> sample = [1, ["another", "list"], ("a", "tuple")]
>>> mylist = ["List item 1", 2, 3.14]
>>> mylist[0] = "List item 1 again"
>>> mylist[-1] = 3.14
>>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14}
>>> mydict["pi"] = 3.15
>>> mytuple = (1, 2, 3)
>>> myfunction = len
>>> print myfunction(mylist)
3

You can access array ranges using a colon (:). Leaving the start index empty assumes the first item, leaving the end index assumes the last item. Negative indexes count from the last item backwards (thus -1 is the last item) like so:

>>> mylist = ["List item 1", 2, 3.14]
>>> print mylist[:]
['List item 1', 2, 3.1400000000000001]
>>> print mylist[0:2]
['List item 1', 2]
>>> print mylist[-3:-1]
['List item 1', 2]
>>> print mylist[1:]
[2, 3.14]

Strings

Its strings can use either single or double quotation marks, and you can have quotation marks of one kind inside a string that uses the other kind (i.e. “He said ‘hello’.” is valid). Multiline strings are enclosed in triple double (or single) quotes (”“”). Python supports Unicode out of the box, using the syntax u“This is a unicode string”. To fill a string with values, you use the % (modulo) operator and a tuple. Each %s gets replaced with an item from the tuple, left to right, and you can also use dictionary substitutions, like so:

>>>print "Name: %s\nNumber: %s\nString: %s" % (myclass.name, 3, 3 * "-")
Name: Poromenos
Number: 3
String: ---

strString = """This is
a multiline
string."
""

# WARNING: Watch out for the trailing s in "%(key)s".
>>> print "This %(verb)s a %(noun)s." % {"noun": "test", "verb": "is"}
This is a test.

Flow control statements

Flow control statements are if, for, and while. There is no select; instead, use if. Use for to enumerate through members of a list. To obtain a list of numbers, use range(). These statements’ syntax is thus:

rangelist = range(10)
>>> print rangelist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for number in rangelist:
# Check if number is one of
# the numbers in the tuple.
if number in (3, 4, 7, 9):
# "Break" terminates a for without
# executing the "else" clause.
break
else:
# "Continue" starts the next iteration
# of the loop. It's rather useless here,
# as it's the last statement of the loop.
continue
else:
# The "else" clause is optional and is
# executed only if the loop didn't "break".
pass # Do nothing

if rangelist[1] == 2:
print "The second item (lists are 0-based) is 2"
elif rangelist[1] == 3:
print "The second item (lists are 0-based) is 3"
else:
print "Dunno"

while rangelist[1] == 1:
pass

Functions

Functions are declared with the “def” keyword. Optional arguments are set in the function declaration after the mandatory arguments by being assigned a default value. For named arguments, the name of the argument is assigned a value. Functions can return a tuple (and using tuple unpacking you can effectively return multiple values). Lambda functions are ad hoc functions that are comprised of a single statement. Parameters are passed by reference, but immutable types (tuples, ints, strings, etc) cannot be changed. This is because only the memory location of the item is passed, and binding another object to a variable discards the old one, so immutable types are replaced. For example:

# Same as def f(x): return x + 1
functionvar = lambda x: x + 1
>>> print functionvar(1)
2

# an_int and a_string are optional, they have default values
# if one is not passed (2 and "A default string", respectively).
def passing_example(a_list, an_int=2, a_string="A default string"):
a_list.append("A new item")
an_int = 4
return a_list, an_int, a_string

>>> my_list = [1, 2, 3]
>>> my_int = 10
>>> print passing_example(my_list, my_int)
([1, 2, 3, 'A new item'], 4, "A default string")
>>> my_list
[1, 2, 3, 'A new item']
>>> my_int
10

Classes

Python supports a limited form of multiple inheritance in classes. Private variables and methods can be declared (by convention, this is not enforced by the language) by adding at least two leading underscores and at most one trailing one (e.g. “__spam”). We can also bind arbitrary names to class instances. An example follows:

class MyClass:
common = 10
def __init__(self):
self.myvariable = 3
def myfunction(self, arg1, arg2):
return self.myvariable

# This is the class instantiation
>>> classinstance = MyClass()
>>> classinstance.myfunction(1, 2)
3
# This variable is shared by all classes.
>>> classinstance2 = MyClass()
>>> classinstance.common
10
>>> classinstance2.common
10
# Note how we use the class name
# instead of the instance.
>>> MyClass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# This will not update the variable on the class,
# instead it will bind a new object to the old
# variable name.
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> MyClass.common = 50
# This has not changed, because "common" is
# now an instance variable.
>>> classinstance.common
10
>>> classinstance2.common
50

# This class inherits from MyClass. Multiple
# inheritance is declared as:
# class OtherClass(MyClass1, MyClass2, MyClassN)
class OtherClass(MyClass):
# The "self" argument is passed automatically
# and refers to the class instance, so you can set
# instance variables as above, but from inside the class.
def __init__(self, arg1):
self.myvariable = 3
print arg1

>>> classinstance = OtherClass("hello")
hello
>>> classinstance.myfunction(1, 2)
3
# This class doesn't have a .test member, but
# we can add one to the instance anyway. Note
# that this will only be a member of classinstance.
>>> classinstance.test = 10
>>> classinstance.test
10

Exceptions

Exceptions in Python are handled with try-except [exceptionname] blocks:

def some_function():
try:
# Division by zero raises an exception
10 / 0
except ZeroDivisionError:
print "Oops, invalid."
else:
# Exception didn't occur, we're good.
pass
finally:
# This is executed after the code block is run
# and all exceptions have been handled, even
# if a new exception is raised while handling.
print "We're done with that."

>>> some_function()
Oops, invalid.
We're done with that.

Importing

External libraries are used with the import [libname] keyword. You can also use from [libname] import [funcname] for individual functions. Here is an example:

import random
from time import clock

randomint = random.randint(1, 100)
>>> print randomint
64

File I/O

Python has a wide array of libraries built in. As an example, here is how serializing (converting data structures to strings using the pickle library) with file I/O is used:

import pickle
mylist = ["This", "is", 4, 13327]
# Open the file C:\binary.dat for writing. The letter r before the
# filename string is used to prevent backslash escaping.
myfile = file(r"C:\binary.dat", "w")
pickle.dump(mylist, myfile)
myfile.close()

myfile = file(r"C:\text.txt", "w")
myfile.write("This is a sample string")
myfile.close()

myfile = file(r"C:\text.txt")
>>> print myfile.read()
'This is a sample string'
myfile.close()

# Open the file for reading.
myfile = file(r"C:\binary.dat")
loadedlist = pickle.load(myfile)
myfile.close()
>>> print loadedlist
['This', 'is', 4, 13327]

Miscellaneous

  • Conditions can be chained. 1 <> checks that a is both less than 3 and more than 1.
  • You can use del to delete variables or items in arrays.
  • List comprehensions provide a powerful way to create and manipulate lists. They consist of an expression followed by a for clause followed by zero or more if or for clauses, like so:

>>> lst1 = [1, 2, 3]
>>> lst2 = [3, 4, 5]
>>> print [x * y for x in lst1 for y in lst2]
[3, 4, 5, 6, 8, 10, 9, 12, 15]
>>> print [x for x in lst1 if 4 > x > 1]
[2, 3]
# Check if an item has a specific property.
# "any" returns true if any item in the list is true.
>>> any([i % 3 for i in [3, 3, 4, 4, 3]])
True
# This is because 4 % 3 = 1, and 1 is true, so any()
# returns True.

# Check how many items have this property.
>>> sum(1 for i in [3, 3, 4, 4, 3] if i == 4)
2
>>> del lst1[0]
>>> print lst1
[2, 3]
>>> del lst1
  • Global variables are declared outside of functions and can be read without any special declarations, but if you want to write to them you must declare them at the beginning of the function with the “global” keyword, otherwise Python will bind that object to a new local variable (be careful of that, it’s a small catch that can get you if you don’t know it). For example:

number = 5

def myfunc():
# This will print 5.
print number

def anotherfunc():
# This raises an exception because the variable has not
# been bound before printing. Python knows that it an
# object will be bound to it later and creates a new, local
# object instead of accessing the global one.
print number
number = 3

def yetanotherfunc():
global number
# This will correctly change the global.
number = 3

Epilogue

This tutorial is not meant to be an exhaustive list of all (or even a subset) of Python. Python has a vast array of libraries and much much more functionality which you will have to discover through other means, such as the excellent book Dive into Python. I hope I have made your transition in Python easier. Please leave comments if you believe there is something that could be improved or added or if there is anything else you would like to see (classes, error handling, anything).

2009年8月29日星期六

useful gnuradio links

GNURADIO

Ettus Research LLC
gnuradio experiments
GNU Radio – GNU FSF Project
Tutorial 9: A Dictionary of the GNU Radio blocks
KD7LMO – GNU Radio
GnuRadio: UniversalSoftwareRadioPeripheral
FrontPage – OSSIE
Wi-fi PHY in Software – Trac
GNU Radio – Trac
.:: The Hacker’s Choice – THC ::.
Interpolation in usrp_siggen – Ruby Forum
Software-Defined Radio, JNL Group, Notre Dame
Josh Knows | Home
The Home of GNU Radio Companion (GRC).
The Error Correcting Codes (ECC) Page
Error Control Coding,Error Correcting Coding,Turbo codes,Error Correcting Codes,FEC,Turbo Codes,Iterative Decoding,DigitalCommunications,Wireless,Satellite,Data,Coded Modulation,Golay,Hamming,BCH,Reed Solomon,Viterbi Decoder,Soft Decision Decoding,Unequal Error Protection,Variable Rate Coding,Adaptive Coding,Iterative decoding,information theory,Parallel concatenated,serial concatenated,product codes,convolutional Codes,LDPC,Low-Density Parity-Check Codes,Coding is not dead
GSSM
baudline signal analyzer – FFT spectrogram
A time frequency browser designed for spectrum analysis data visualization.
Universität Paderborn Evaluating GNU software radio
Forward Error Correcting Codes
gnuradio experiments
BlueSniff: Eve meets Alice and Bluetooth
BlueSniff: Eve meets Alice and Bluetooth
Homepages of Juha Vierinen: Gnuradio
gsm – THC Wiki

useful Linux commands

Show wireless information

  • iwconfig
    • Frequency, Access Point, Tx-Power, Link Quality, Signal level

Search string in files

  • find . -iname '*php' | xargs grep 'string' -sl

Change eth2 to eth0

gedit /etc/udev/rules.d/70-persistent-net.rules

Useful Python commands

Read arguments
import sys
print 'Whole Array:', sys.argv # ['./test.py', '-f', '2.4', '-s', '1000']
print 'File Name:', sys.argv[0] # ./test.py
print 'Arguments:', sys.argv[1:] # ['-f', '2.4', '-s', '1000']

Read arguments using OptionParser?


# Input: ./test.py -s 1000

from optparse import OptionParser

parser = OptionParser()
parser.add_option("-s", "--size", type="float", default=400, help="size [default=%default]")
parser.add_option("","--enable", action="store_true", default=False, help="enable something")

# Parse the arguments
(options, args) = parser.parse_args()

print options # {'enable': False, 'size': 1000.0}
print options.size # 1000
print options.enable # False

# Examples
# Input: ./test.py -f 1000
# Output: test.py: error: no such option: -f
# Input: ./test.py --help
# Output: Show the "help" description

# Input: ./test.py --help
# Output: Show the "help" description with 2 groups

from optparse import OptionParser
from optparse import OptionGroup

parser = OptionParser()

# First group in "--help" ("Normal Options")
group1 = OptionGroup(parser, "Normal Options", "Simple description")
group1.add_option("-s", "--size", type="float", default=400, help="size [default=%default]")
group1.add_option("","--enable", action="store_true", default=False, help="enable something")

# Second group in "--help" ("Expert Options")
group2 = OptionGroup(parser, "Expert Options", "Simple description")
group2.add_option("-f", "--freq", type="float", default=100, help="freq [default=%default]")

# Add groups into parser
parser.add_option_group(group1)
parser.add_option_group(group2)

# Parse the arguments
(options, args) = parser.parse_args()

2009年8月24日星期一

swapfile activating problem

After upgrading to ubuntu 9.04, there comes a problem that can not activate swap, as follows:
*Mounting local file systems... [ok]
*Activating swapfile swap...

One way to address that is:
swap.disk -> noswap.disk
restart the computer, everything will be OK

2009年8月23日星期日

The problem of numpy with python-numpy

When I tried to configure and check the installation procedure of GNU radio platform, "make check",
I have the following problem:

"ImportError: No module named numpy"
"failed test"

But actually, there is a numpy as named "python-numpy", which can not be recognized by the system.
One way is to install another numpy from here:
http://sourceforge.net/project/showf...kage_id=175103
The source (numpy-1.1.1.tar.gz) can be installed (after unpack) with
# 'python setup.py install'

Restart the configuration and make procedure, the problem is clear!

Thanks for knudfl's help!

2009年8月12日星期三

ubuntu boot problem

I have installed ubuntu 8.10 and update the software.
It worked very well at the beginning. But someday I found that can not enter the GNOME desktop, only left the command line.
such as:
"Fatal server error: No screens found"
"fatal error in x server"
As a beginner, I have no idea what happened. Lucky enough, after googling the internet, I found the solution working for me.

--------------------------------------------------------------------
At the command prompt
sudo aptitude install xorg-driver-fglrx
Then
sudo dpkg-reconfigure xserver-xorg

Select the fglrx driver and complete reconfigure reboot and you should be sweet.

--------------------------------------------------------------------
Thanks, Sharke, the author for the solution!

2009年5月18日星期一

Current Implementations of Cognitive Radios(ZZ)

This entry focuses on a few implementations of CR published in various top journals and conferences.

Cognitive Radio Software Testbed using Dual Optimization in Genetic Algorithm Jae Moung Kim; Sung Hwan Sohn; Ning Han; Guanbo Zheng; Young Min Kim; Joo Kwan Lee; Cognitive Radio Oriented Wireless Networks and Communications, 2008. CrownCom 2008. 3rd International Conference on

This implementation use a 2 step sensing process:

1. Coarse sensing, this is done very fast using a sliding window FFT (energy detection). It is used to identify channels
2. Sign sensing, this is used to confirm availability. This is done using Cyclostationary algorithm

The other interesting point is that the algorithm used for DFS is based on Genetic Algorithms

A Cognitive Radio Receiver Supporting Wide-Band Sensing Blaschke, V.; Renk, T.; Jondral, F.K.; Communications Workshops, 2008. ICC Workshops ‘08. IEEE International Conference on 19-23 May 2008 Page(s):499 - 503

Not as much a CR implementation, but it presents some practical ways for wide band sensing.

* Signals are sensed by finding the average received power
* Power allocation is found using FFT

A Cross-layer Cognitive Radio Testbed for the Evaluation of Spectrum Sensing Receiver and Interference Analysis Jongmin Park; Kwan-woo Kim; Taejoong Song; Sang Min Lee; Joonhoi Hur; Kyutae Lim; Laskar, J.; Cognitive Radio Oriented Wireless Networks and Communications, 2008. CrownCom 2008. 3rd International Conference on 15-17 May 2008 Page(s):1 - 6

This article presents a reconfigurable CR test bed. The system is completely software drive, and the advantage of that is it can instantly deploy different algorithms for testing. This can be interesting for my project, as if I set up a testbed, I can also test out all the algorithms there are, and maybe publish the results.

From this article, a few things were noted:

* We can simulate real condition by adding AWGN to the spectrum
* We should also consider channel fading

The system deployed here also uses Multi Resolution Spectrum Sensing (MRSS), which is a analog based, digitally assisted energy detection method. The system is entirely analog hardware, but does not need tunable filter to change its detection bandwidth. MRSS also do not require FFT nor ADC, and provide almost real time data.

I think MRSS is definitely worth looking into some more.

Integrated Resource Management in Cognitive Radio Marojevic, V.; Vucevic, N.; Reves, X.; Gelonch, A.; Mobile and Wireless Communications Summit, 2007. 16th IST 1-5 July 2007 Page(s):1 - 5 Digital Object Identifier 10.1109/ISTMWC.2007.4299309

This article is stored for future reading. The contents does not concern me at the moment, I just thought it would be a good article to read

Cognitive Radio Prototyping Jung, P.; Viessmann, A.; Spiegel, C.; Burnic, A.; Bai, Z.; Bruck, G.H.; Statnikov, K.; Waadt, A.; Wang, S.; Popon, X.; Velilla, R.R.; Saarnisaari, H.; Alles, M.; Brack, T.; Kienle, F.; Berens, F.; Rotolo, S.; Scalise, F.M.; Wehn, N.; Cognitive Radio Oriented Wireless Networks and Communications, 2008. CrownCom 2008. 3rd International Conference on 15-17 May 2008 Page(s):1 - 6

This article is not very useful, the prototype suggested is too advanced for my level to even attempt to understand

A real time cognitive radio testbed for physical and link layer experiments Mishra, S.M.; Cabric, D.; Chang, C.; Willkomm, D.; van Schewick, B.; Wolisz, S.; Brodersen, B.W.; New Frontiers in Dynamic Spectrum Access Networks, 2005. DySPAN 2005. 2005 First IEEE International Symposium on 8-11 Nov. 2005 Page(s):562 - 567

This is the more useful articles I have read of the whole lot. The article is also published by a team from UC Berkeley, which adds some weight to the content presented.

* There are not alot of practical data yet available for CR/SDR
* Some typical performance metric regarding protecting incumbents are:
o Time to detect PU
o Probability of not detecting a PU
o Probability of a wrong detection
o Time required to clear a channel
* Reliability is more important than fast channel detection when first connecting to a medium
* When testing/evaluation a CR system, we need to consider:
o PU and SU placements
o PU signal strength

The article also suggests some detection methods.

When not using a channel:

* Cyclostationary
* Pilot tone detection algorithms

When using a channel:

* Interleaved sensing (No need for dedicated hardware)
* Concurrent sensing using active cancellation of own signal (Require dedicated hardware)

Also interesting, is that their test setup has similar capabilities to the current we have at the lab.

A Cognitive Radio (CR) Testbed System Employing a Wideband Multi-Resolution Spectrum Sensing (MRSS) Technique Hur, Y.; Park, J.; Kim, K.; Lee, J.; Lim, K.; Lee, C.-H.; Kim, H.S.; Laskar, J.; Vehicular Technology Conference, 2006. VTC-2006 Fall. 2006 IEEE 64th 25-28 Sept. 2006 Page(s):1 - 5

This article is exactly the same as the Cross Layer article, more information have been added since this (earlier) article

Low-Complexity Adaptive Transmission for Cognitive Radios in Dynamic Spectrum Access Networks Pursley, M.B.; Royster, T.C.; Selected Areas in Communications, IEEE Journal on Volume 26, Issue 1, Jan. 2008 Page(s):83 - 94

This has been put away for future reading

Spectrum sensing in cognitive radio networks: requirements, challenges and design trade-offs Ghasemi, A.; Sousa, E.S.; Communications Magazine, IEEE Volume 46, Issue 4, April 2008 Page(s):32 - 39

This has been put away for future reading

OS-MAC: An Efficient MAC Protocol for Spectrum-Agile Wireless Networks Hamdaoui, B.; Shin, K.G.; Mobile Computing, IEEE Transactions on Volume 7, Issue 8, Aug. 2008 Page(s):915 - 930

This is not a CR hardware implementation article. But this article suggests a MAC protocol that is supposed to be close to ideal.

Requirements:

* N none overlapping channels
* 1 Control channel

The system is broken into a number of SUGs (Secondary User Groups), each using a channel. a SUG has the following properties:

* Two or more users can form a SUG
* Only 1 SU in a SUG can transmit at a time
* All SUs in a SUG receives the data
* There can be multiple SUGs in a network
* SUs communicate with others of the same SUG on the same channel

The notible advantage of this is that the protocol supports both 1 to 1 communication, as well as teleconferencing style communication.

To control the channels:

* All interchannel control frames are sent on the Control Channel
* Each SUG has a designated Delegated SU (DSU)
* The DSU periodically tune into the Control Channel to report it’s SUG’s traffic conditon
* Within a SUG, transmission follow the standard 802.11 random access scheme with the backoffs

A novel Cognitive Radio Concept deploying Petri Net based Scheduling
Viessmann, A.; Burnic, A.; Spiegel, C.; Bruck, G.H.; Jung, P.;
Wireless Algorithms, Systems and Applications, 2007. WASA 2007. International Conference on
1-3 Aug. 2007 Page(s):233 - 238

This again is beyond my ability at the moment. But there are a few points that can be used.

Detection can be one of the two forms:

1. Persistent, this uses a dedicated hardware which can inform channel changes in real time
2. Non persistent, this does not require dedicated hardwarem, but the tradeoff is system response time

This article also suggests a way in which new PHY and MAC code chain can be loaded on the fly, which means we can adapt to a number of different schemes and systems depending on the current situation.

2009年4月17日星期五

Controversial FCC White Space Decision Creates "Goldrush" Opportunities

April 13, 2009

New York -- After an epic battle between the US broadcasting industry and high-tech companies, the FCC ruled in November 2008 that it would open up white space spectrum (54 MHz to 698 MHz) once TV stations move from analog to digital transmissions and no longer need the bandwidth "guard rails" required by analog. Congress has set the date for that transition for June 2009.

"The decision to open up new spectrum is one of the most contentious the FCC has ever made," says ABI Research vice president Stan Schatt. "It's the equivalent of the government opening up a previously untapped oilfield. This is very valuable spectrum because unlike most wavelengths used by wireless communications it allows signals to pass through terrain features such as hills and forests, greatly increasing usable range."

An epic battle led up to this decision. The broadcast industry and wireless microphone vendors were opposed, expressing concerns about possible interference from WSDs (White Space Devices). To address their objections, the FCC has established several safeguards.

In the supporting camp are found device manufacturers, chip-makers, consumer electronics vendors, some politicians, and hopeful service provider startups which, says Schatt, are likely to be the first to take advantage of this opportunity. "Service provider startups will use this spectrum to offer new services to rural communities in particular. In sparsely-populated areas there's a lot of white space available. If they move quickly enough, it's even possible they can take advantage of some of the $7 billion in broadband rollout funds available through the American Recovery and Reinvestment Act."

A new ABI Research Brief, "The US White Space Spectrum Opportunity: 802.22, CogNeA, and Wi-Fi Join the Gold Rush" outlines the FCC requirements and describes the possible impact of the IEEE draft 802.22 "cognitive radio" specification. It discusses the new CogNeA vendor group, the role of Wi-Fi, and possible implications for WiMAX vendors and specific other major stakeholders. Product and service timelines, and projections for 2010 and 2011, are also included.

It forms part of the firm's Wi-Fi Research Service, which also includes other Research Briefs, Research Reports, Market Data, ABI Insights, ABI Vendor Matrices, and analyst inquiry support.

SOURCE: ABI Research

2009年4月3日星期五

Ubuntu、OpenSuse、Fedora发展前景剖析 ZZ

Ubuntu无论是在消费者当中或者商业领域都拥有非常好的口碑,成为最受欢迎的Linux发行版本。openSUSE凭借其业务基础,风靡欧洲,现在也已经开始进入美国市场。至于Red Hat,凭借Fedora,他已经发展成为社区Linux操作系统中的龙头企业。

所以,人们谈论Linux操作系统时总是会不由自主的提及: Canonical的Ubuntu,Novell的OpenSuse以及Red Hat的Fedora。

上述Linux “三巨头”近期都发布了自己的最新版本产品,这意味着一段时间之后市场就能为我们选择出谁是No.1,或者更正确的说是谁为用户提供了最需要的产品。

为了测试,我在自己的戴尔Inspiron 530S电脑上安装了所有上述3个版本,530s具有2.2 GHz英特尔奔腾E2200双核心处理器,800 MHz前端总线,4GB内存,500GB的SATA (串行ATA )驱动器,集成英特尔3100 GIA(图形媒体加速器)芯片组。这是戴尔公司2008年的标配电脑,当时的零售价约为450美元。

此外,为了更准确的探寻他们日常 工作模式,我还在其他电脑上运行了上述3中软件。例如,在联想ThinkPad R61中跑了openSUSE,在Gateway GT5622桌面电脑中运行了Fedora,还在Gateway 老款503GR桌面电脑上运行了Ubuntu。

这3种Linux版 本有几个共同的特点。首先,智能化安装。只要将光盘放入CD、DVD或(在Fedora情况下)USB记忆棒;电脑开机就能直接进入安装界面,调整时区、 选择键盘类型创建新的用户名……然后的工作就是端着茶杯或者咖啡杯等候。最终,每套软件都会安装完成并且准备工作。

在有些情况下,人们甚至不会遇见暗示性的硬件问题。现在,这方面的问题越来越少,坦率地说, 在电脑上安装Linux比安装Windows Vista更容易。

同样,他们可以通过hybrid Active Directory/Samba 控制域网络服务器和NAS设备进行工作,并且连接各种佳能和惠普打印机。半小时内,我每次都是通过CIFS(通用Internet文件系统)和NFS(网络文件系统)服务器分配工作。

此外,新电脑安装新软件是一个亮点。在每个系统中,我添加了Banshee音乐播放器、 Adobe Acrobat和Adobe Flash 播放器以及交互式Linux操作系统,后者可以让用户在Linux系统上运行Windows程序。一旦安装完毕,所有这些程序,或者更多,都能够很平稳的 运行。

迄今为止,这3种Linux版本没有一个给我添加麻烦,他们都表现的非常好。现在我比任何时候都迷惑,为什么有人还在使用电脑中使用Windows操作系统而不是这3种Linux系统中的一种?

这一切都不足为奇,因为他们的核心分布是相同的-这3种系统都是建立在Linux内核2 .6.27基础上,并使用GNOME 2 .24桌面。虽然它们的成分可能是相同的,但是,硬盘功能还是让他们大不相同。将这3个版本和其他Linux版本区分开来的唯一标准是他们相互整合的方 式。

Canonical Ubuntu 8.10

任何讨论Linux的人都知道Ubuntu。这是目前最流行的桌面Linux环境。有一个很好的理由:Ubuntu的8.10, a.k.a. Intrepid Ibex,象字母“E”一样简单。

基于GNOME 的界面很容易使用,但Canonical通过强大的社团备份。如果在Ubuntu上有你想做的事情-任何事情-你都可以在Ubuntu论坛找到答案,如 Ubuntu论坛和Ubuntu论坛维基百科。这种支持不是针对某一个单一功能本身,但是也不应该被低估。开源简而言之就是你总能在线找到帮助-当然,有 时你可以。不过当涉及Ubuntu 你肯定能找到帮助。

当然,你可能不需要这么多的帮助。例如,新的网络管理器0.7不仅可以轻松地 将有线网络和Wi - Fi网络连接,还可以轻松地连接到3G接入点。我通过AT&T公司的USB Connect Quicksilver USB设备在我的ThinkPad笔记本中进行3G连接,工作得非常顺畅。由于网络管理员对所有的3G设备都象vanilla串行设备, 使用PPP(点对点协议)的网络连接,它实际上应该与比Windows更3G设备协同工作。

另一点是Ubuntu的8.10现在包括戴尔公司的DKMS (动态内核模块支持)。此功能将被大多数用户忽略,但它的效果却是实实在在、根深蒂固的。

当你更新Linux内核时,DKMS会自动更新和下载驱动符合您的系统硬件得程序。即使你的内核不包括内置图形卡或其他装置。有什么用呢?这样,你不必担心系统工作,即使你添加了新的硬件或安装了更新的Linux内核。

有几件我不太满意新Ubuntu的地方。首先是,尽管你可以安装Ubuntu和它的KDE套件,Kubuntu ,使用旧的KDE 3.5.x接口,现行版本默认使用的是KDE 4.x。就个人而言,我觉得KDE 4.x太简单,并不如KDE 3.5好使,当然,我也知道自己并不是唯一有这种感觉的用户。

我还希望Ubuntu默认增加OpenOffice3.0。由于现在它是由老的2.4版本衍生而来,使用新的OpenOffice会不会有问题依然是一个未知,所以我希望尽快不用担心100MB +的下载和更新。

那么,Ubuntu的用户是谁呢?在我看来,毫无疑问-Ubuntu是最好的Linux初学者软件,也在被许多非常有经验的Linux操作系统的用户采纳。总而言之,如果你仅仅是想涉足桌面Linux系统,Ubuntu是你最好的Linux选择。

Novell openSUSE 11.1

如果我可以用一个词来形容openSUSE11.1,那就是“稳固”。可能还存在能够击败openSUSE的版本,但是至少目前我还没有找到。过去几年中,更新openSUSE是一件痛苦的事,感谢类似无休止发展问题及其更新程序,最终将这些问题变成了历史。

我所见openSUSE运行的最好的是在办公室查看候选版本时。无论你把它作为桌面系统或服务器,openSUSE都是为社团准备的最佳商务模板。

它采用Novell定制版本OpenOffice 3.0,在这个版本中,你可以读写所有微软的Office文件,其中包括Office 2007的Open XML格式。

服务器上也是openSUSE的热门应用领域。常规的安装可以让你自动设定Web服务器,文件服务器,互联网服务的服务器,数据库服务器-或者任何你想应用的领域。任何Linux版本都针对服务器应用做了很多优化工作,但只有openSUSE最容易上手使用。

openSUSE和其他Linuxes一样,带有虚拟化应用的KVM(基于内核的虚拟机)和Xen 。此外,openSUSE当中还包括我非常喜欢的虚拟化软件:Sun公司的VirtualBox。根据我的经验,VirtualBox是openSUSE 当中安装和运行最简单的程序。

最后,有些人还是不喜欢Mono,Linux.Net的开放源代码版本,因为它采用的是微软环 境,openSUSE将Mono和Linux操作系统做了最佳的整合。此功能将Novell公司的其他支持Windows网络的软件有效的结合了起来,从 而使得openSUSE不仅是最好的商用版本,还是最优秀的整合企业现有Windows基础设施的版本。

由于我经常在hybrid Linux / Unix系统/ Windows网络环境下工作,openSUSE是我最终的Linux选择。如果你也如法炮制,那么你也会发现openSUSE的优势。

Red Hat Fedora 10

所有社区采用的Linux版本,就其性质而言,挑战了Linux和开放源码软件的极限。不过,Fedora将这些限制做了最大扩张。该版本在将产品极限扩展到边缘的同时还尽量保持系统的稳定性。

通过Fedora 10,Red Hat和社区开发商再次将Linux系统推向了一个顶点,我发现了这项技术一个非常了不起的特性,就是在经过拓展后依然能保持非常稳定的分布。

例如,Fedora采用PulseAudio作为其音响系统。PulseAudio是一个非常好的音频服务器,但在其早期产品中有时可能会出现延时如果 你用装了其他的堆栈的电脑进行下载。在Fedora 10中,我一直没有找到能够使PulseAudio从其出色的声音效果中停止的下载量

另一个值得注意的改进是Fedora 10包括一个很好的摄像头支持软件。这是因为最近出现了一些基于LinuxTV V4L-DVB和Linux UVC的工作。最终的结果是,绝大多数(如果不是全部的话)摄像头现在的工作能够在Fedora中进行。

   此外,现在还有许多新的应用只能在Fedora下运行。首先是我青睐的连接共享。通过这项功能,通过路由器/Wi - Fi接入点打开笔记本电脑,你仍然可以同以往一样使用自己的笔记本电脑,同时,与别人分享你的宽带连接。这在附近没有足够的以太网连接资源或者Wi–Fi 网络是非常方便 。

PackageKit 当中隐藏的复杂用户安装软件也得到了极大改善。除了执行进程的搜索、下载和安装软件实现无缝体验,还能在你将软件运行到一个从未使用过的媒体播放器之前进 行自动识别。PackageKit不仅可以找到并自动安装相应的编解码器,还能为你选择最合适的专有编解码器。这简直将在变魔术一样,Red Hat还承诺能够将此项功能变得更好。

另一个变化是你可以通过USB记忆棒运行/或安装Fedora。这是非常有用的功能,更妙的是 现在你可以通过USB记忆棒保持“持续性变化”。 这意味着,你不仅可以通过USB记忆棒启动手头任何一台PC采用Fedora,还可以保持任何你想要的更新。换句话说,你可以通过USB记忆棒自由在个人 电脑和你工作之间进行切换。

这些是不是让你产生了文件误操作丢失的担忧?大可放心, Fedora通过采用所有加密主目录进行文件备份。即使你的存储卡人为丢失,窃贼仍然无法查阅你的资料。

尽管如此,你还需要为现场超级Linux操作系统支付费用。正如Fedora的稳定性一样,它并不是十全十美的。举例来说,IPC(进程间通信)计划的 最近更新、D-Bus曾经尝试剔除Fedora软件安装程序。虽然这个问题现在被解决了,但是你还是要做好有时会发现它的准备。基于这一原因,在任何关键 性的工作中我无法向你推荐Fedora。

它的所有这些新功能,都是提供给生活在技术前沿的人们使用的。它并不像Ubuntu那样简单,也不同于面向企业的openSUSE,但是对于Linux前端的Linux应用,它是无可替代的。

结论

总之,所有这些Linux版本都是替代Windows操作系统的杰出产品。那个版本最适合你真的完全取决于你自己的需要。

对初学者来说, Ubuntu是桌面Linux的最佳选择。openSUSE主要面向企业用户,尤其是那些工作在Windows和Linux环境之间的人。最后,但决不是少数,Fedora为希望探索Linux操作系统未来发展道路的人提供了希望。

无论你的选择是什么都不会相差太远。桌面Linux已经成熟多年,这些版本只是再次证明:存在一款为每个用户准备的Linux。(文/IT专家网)