硬盘安装 ubuntu10.04(不用wubi)

Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(译为吾帮托或乌班图),意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。这是一篇介绍硬盘安装Ubuntu的文章。


smarteng 发布于 2010-8-31 05:05

最浪费时间的三件事——工作谨记

 

我问你,世界上最浪费时间的是什么事?

校内网?偷菜?玩游戏?魔兽世界?

不是,尽管它们排名也很靠前。

世界上最浪费时间的是三个单词:WORRY, BLAME, JUDGEMENT.


smarteng 发布于 2010-8-24 03:46

青岛-烟台-北京:记来北京一周年

2009.8.21 下午1点多,我下火车,历时10多个小时的火车,从熟悉而又陌生的烟台来到了人人都向往的首都,在火车上,我想像着我在北京新的生活——美好的生活。

还好,当时有同学在这边,到现在我还很感激养兆,请假去接我,在他看来也许这不算什么,但这份情谊,无语言表,只能默默记录心间,出了火车站的门就看到他等在那里了,哈哈,一切很顺利。Thank goodness。

回想这一年来,写到这儿,我想起一句歌词:“回忆,是我拥有的方式。”我是一个特别怀旧的人,总是在回忆着,回忆着大学生活,回忆着毕业,回忆着烟台,回忆着那里的同学。好像我一直在靠着回忆过日子,我也一直告诉自己:“过去的就过去了,还有那些快乐的日子,那毕竟是以前的快乐,回忆的多了,是不是也就不觉得快乐了,觉得麻木了呢?我曾经的梦想,也只是在脑海里打着转,却因为残酷的现实,不得不一再的妥协,妥协,再妥协……

哈哈,扯远了,说说经历,来北京还算是很顺利的,工作很快就有了着落,也有了一个安定的居所-酒仙桥的将府家园,哈哈,现在想想,那是我住的最好的房子,120多平的精装修,着实不错,开始在飘Home上班,骑一自行车 5分钟就到,生活过的甚是惬意,呵呵,那也是我学习的好时候,之后在10月份辞职,在家蹲了1个月,想了很多,当然也想到了打退堂鼓,真是想回家了,还好还是坚持下来了,接下来就跟同学搬到一块住-西坝河中里小区,环境不错,在三环里边,交通方便,四个同学在一块,有说有笑,有打有闹,日子平淡无漪的过着,大家也很努力,白白,开始在Yahoo,之后到了阿里集团的阿里云,再到现在的百度,阿彬开始在一法国外资企业,之后到IBM,我开始在TOM在线,之后在当当网,短短一年的时间,大家都有了进步,哈哈,在外人看来还算了不错,其实也就是那么回事,希望大家继续努力吧。哈哈

说说来北京的感受,我承认,北京的风景很漂亮,北京的街道也很宽,可是,即使已经来了一年了,还是让我觉得陌生,没有我想要的安全感以及归属感。我怀念家乡的一草一木,我想念我的家人、朋友……

一年后的今天,我依然平淡的过着并不是我期望的生活。该如何去继续呢?…… 

写在来北京一年时,记录心路历程~


smarteng 发布于 2010-8-20 23:58

也说当当网站改版

【目的一】当当转型百货,兼顾新老用户——图百分开更清晰

当当转型百货,

一些只买图书的老用户,会有些许难过——图书内容越来越不好找了。。。。。

还有一些买百货的用户,在老页头看到的一级导航,难免困惑,一直以为,当当的百货,就这么几大类……

让设计师难办的是,当当这么多的馆,都想在一级导航获得同样的资源,怎么办?[break]

终于,经过各位老大们的决策和激烈讨论,用新页头解决了上述的3大问题——

用户对此意下如何?

——改版后,73% 的用户认为“图书”、“百货”等标签划分很合理 (16% 是中立无所谓,只有11% 喜欢老版页头)

整体导航改的还不错,更精致了,也能更好的突出当当的主要分类:图书。

目的二】凸显 B2C 最大的优势,品牌!

当当是B2C,咱们跟C2C最大的区别,就是,咱们卖的是品牌,有保障的品牌!

这次,不仅在页头一级导航,位居图书、百货类紧随其后,做了专门的品牌频道,

还在左侧分类的浮层,展示了不同类的主推品牌!

跟京东的有的一拼,而且品牌更细致,也还不错。

【目的三】细分用户需求,页头功能完善

在电子商务网站,用户的行为分为3种情况:

1、 有明确购物意图,“我要买雅诗兰黛 ANR眼霜”——那他会用搜索;

2、 没有明确购物意图,“我就是看看有没有打折活动,或者推荐什么好东西了”——那他会看促销专题,或者浏览馆首页;

3、 大概有一定的购物意图,但是不确定,“我想买一款T恤,也许是欧时力也许是ZARA的”——他会怎么做?

按分类浏览!!!

———我们新版页头,在满足1和2用户需求基础上,对3类用户的需求,做了特别满足!

与此同时,我们看到竞争对手:

Amazon.com一直页头有“查看所有分类”;

淘宝和QQ商城学习了这一长处;

在我们做首页优化的2个月内,卓越和京东,居然跟我们同出一辙的想到了一起——主流B2C目前全部在页头增加了“查看所有分类”

再看看用户如何说:

75% 的人,喜欢这样浮层展示选择更多的方式;(15% 是中立无所谓,只有10% 喜欢老版样式)

并且,对Home 为期一周的监测数据,可看到,此区域的点击率 提升了 15%   !!

【目的四】优化用户体验,永无止境,义无反顾!

1. 让当当网更有生机、活力——Logo节日变化

(七夕节那天,Logo是Flash,一个小故事,讲述了牛郎织女,是如何通过当当网,送礼并实现见面的……当当网就是鹊桥啊!!)

2. 区块划分更清晰,首页大Banner左侧的3个小广告,挪在了公告下

其它………………专业设计的UI优化必不可少,不多说了,上效果图对比吧!!(老版现在看不到了)

老版  2010-4-16

新版 2010-8-16

总体感觉还是可以的,易用性有待加强,不如京东的清新,不如淘宝的易用;其实我感觉京东的易用性也还不错,我很喜欢京东单品页的筛选功能,其次,不说淘宝的URL 的seo ,因为淘宝到今天,已经不需要URL SEO的优化了,看看京东的URL,看看当当的,京东的SEO优化会比当当好很多。

哈哈,我的要求会不会太高了~ 

期待有更好的表现.


smarteng 发布于 2010-8-20 14:41

linux shell 命令行编辑常用快捷键

 

删除

ctrl + d      删除光标所在位置上的字符相当于VIM里x或者dl

ctrl + h      删除光标所在位置前的字符相当于VIM里hx或者dh

ctrl + k      删除光标后面所有字符相当于VIM里d shift+$

ctrl + u      删除光标前面所有字符相当于VIM里d shift+^

ctrl + w      删除光标前一个单词相当于VIM里db

ctrl + y      恢复ctrl+u上次执行时删除的字符

ctrl + ?      撤消前一次输入

alt  + r      撤消前一次动作

alt  + d     删除光标所在位置的后单词

移动

ctrl + a      将光标移动到命令行开头相当于VIM里shift+^

ctrl + e      将光标移动到命令行结尾处相当于VIM里shift+$

ctrl + f      光标向后移动一个字符相当于VIM里l

ctrl + b      光标向前移动一个字符相当于VIM里h

ctrl + 方向键左键    光标移动到前一个单词开头

ctrl + 方向键右键    光标移动到后一个单词结尾

ctrl + x       在上次光标所在字符和当前光标所在字符之间跳转

alt  + f      跳到光标所在位置单词尾部[break]

替换

ctrl + t       将光标当前字符与前面一个字符替换

alt  + t     交换两个光标当前所处位置单词和光标前一个单词

alt  + u     把光标当前位置单词变为大写

alt  + l      把光标当前位置单词变为小写

alt  + c      把光标当前位置单词头一个字母变为大写

^oldstr^newstr    替换前一次命令中字符串   

历史命令编辑

ctrl + p   返回上一次输入命令字符

ctrl + r       输入单词搜索历史命令

alt  + p     输入字符查找与字符相接近的历史命令

alt  + >     返回上一次执行命令

其它

ctrl + s      锁住终端

ctrl + q      解锁终端

ctrl + l        清屏相当于命令clear

ctrl + c       另起一行

ctrl + i       类似TAB健补全功能

ctrl + o      重复执行命令

alt  + 数字键  操作的次数

实际操作:

#ctrl+l  清屏先

minuit@suse:~>str1 str2 str3  #输入三个单词发现第一单词需要大写好按c+a跳到开头按a+c

minuit@suse:~> Str1 str2 str3  #好现在单词就变成了现在这个样子,又发现第二个单词要全大写(这样的命令真是玩死人:( )好吧如果你当前光标在第二个单词,那直接a+u把这个单词改变,如果不在的话那按住c+a接着c+f跳到第二个单词那再a+u就OK了结果像下面所示

minuit@suse:~> Str1 STR2 str3   #我想换过来怎么办我的位置已经在最后一个单词这个好办按住a+2+b哈哈跳到了第二个单词再来一下a+l这下第二个单词全小写了,再来一个比较典型的例子

[url]http://bbs.chinaunix.net/viewthread.php?tid=842595[/url]

标题:如何将数据文件中的每个词的第一个字母变成大写?

哈哈这个难不到我们吧因为我们已经会了a+c了

minuit@suse:~> welcome to chinaunix!   #不就是变个大小写吗按住c+a接着a+3+c看看效果

minuit@suse:~> Welcome To Chinaunix!  #GOOD很简单

我们再来试试替换

minuit@suse:~> Welcome To Chinaunix!  #还是这三单词c+a跳到开头再接着跳到第二个单词那(因为a+t只能跟前一个单词做替换所以不能在第一个单词按a+t)按住a+t

minuit@suse:~> To Welcome Chinaunix!  #现在成这样子的了如果我用再按a+2+t那又变了一个样

minuit@suse:~> Chinaunix!  Welcome To   #好了来一点比较常用的

minuit@suse:~>ls /tmp/               #看看下面有些什么

file1 file2 file3 ..... .. 

minuit@suse:~>^ls^cd         #现在再又想进入目录很简单的健入替换命令就行了在命令很长时用这个替换可以省掉很多按a+b或a+f的时间

cd /tmp/

minuit@suse:/tmp>   #进入了tmp目录了

跳转的命令就不试了大家自己体会试也看不见^_^


smarteng 发布于 2010-8-13 10:45

Javascript的IE和Firefox兼容

Javascript的IE和Firefox兼容性问题集合

1.document.formName.item("itemName") 问题

说明:IE下,可以使用document.formName.item("itemName")或document.formName.elements["elementName"];

Firefox下,只能使用document.formName.elements["elementName"].

解决方法:统一使用document.formName.elements["elementName"].

2.集合类对象问题

说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象.

解决方法:统一使用[]获取集合类对象.

3.自定义属性问题

说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.

解决方法:统一通过getAttribute()获取自定义属性.

4.eval("idName")问题

说明:IE下,,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下只能使用getElementById("idName")来取得id为idName的HTML对象.

解决方法:统一用getElementById("idName")来取得id为idName的HTML对象.

5.变量名与某HTML对象ID相同的问题

说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。

解决方法:使用document.getElementById("idName")代替document.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义.[break]

6.const问题

说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量.

解决方法:统一使用var关键字来定义常量.

7.input.type属性问题

说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写.

8.window.event问题

说明:window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用. Firefox必须从源处加入event作参数传递。Ie忽略该参数,用window.event来读取该event。

解决方法:

IE&Firefox:

Submitted(event)"/> …

<script language="javascript">

function Submitted(evt) {

evt=evt?evt:(window.event?window.event:null);

}

</script>

9.event.x与event.y问题

说明:IE下,even对象有x,y属性,但是没有pageX,pageY属性;Firefox下,even对象有pageX,pageY属性,但是没有x,y属性.

解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX.

10.event.srcElement问题

说明:IE下,event对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性.

解决方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)来代替IE下的event.srcElement或者Firefox下的event.target. 请同时注意event的兼容性问题。

11.window.location.href问题

说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location.

解决方法:使用window.location来代替window.location.href.

12.模态和非模态窗口问题

说明:IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能.

解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。

如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口. 例如:var parWin = window.opener; parWin.document.getElementById("Aqing").value = "Aqing";

13.frame问题

以下面的frame为例:

<frame src="xxx.html" id="frameId" name="frameName" />

(1)访问frame对象:   [ ie中返回的为object , ff中会显示具体的类型 比如: object window ]

IE:使用window.frameId或者window.frameName来访问这个frame对象. frameId和frameName可以同名。

Firefox:只能使用window.frameName来访问这个frame对象.

另外,在IE和Firefox中都可以使用window.document.getElementById("frameId")来访问这个frame对象.

(2)切换frame内容:

在IE和Firefox中都可以使用window.document.getElementById("testFrame").src = "xxx.html"或window.frameName.location = "xxx.html"来切换frame的内容.

如果需要将frame中的参数传回父窗口(注意不是opener,而是parent frame),可以在frme中使用parent来访问父窗口。例如:parent.document.form1.filename.value="Aqing";

14.body问题

Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在.

15. 事件委托方法

IE:document.body.onload = inject; //Function inject()在这之前已被实现

Firefox:document.body.onload = inject();

16. firefox与IE的父元素(parentElement)的区别

IE:obj.parentElement

firefox:obj.parentNode

解决方法: 因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择.

17.cursor:hand VS cursor:pointer

firefox不支持hand,但ie支持pointer

解决方法: 统一使用pointer

18.innerText在IE中能正常工作,但是innerText在FireFox中却不行. 需用textContent。

解决方法:

if(navigator.appName.indexOf("Explorer") > -1){

    document.getElementById('element').innerText = "my text";

} else{

    document.getElementById('element').textContent = "my text";

}

19. FireFox中设置HTML标签的style时,所有位置性和字体尺寸的值必须后跟px。这个ie也是支持的。

20. ie,firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChild方法也不管用。

解决方法:

//向table追加一个空行:

var row = otable.insertRow(-1);

var cell = document.createElement("td");

cell.innerHTML = " ";

cell.className = "XXXX";

row.appendChild(cell);

21. padding 问题

padding 5px 4px 3px 1px FireFox无法解释简写,

必须改成 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px;

22. 消除ul、ol等列表的缩进时

样式应写成:list-style:none;margin:0px;padding:0px;

其中margin属性对IE有效,padding属性对FireFox有效

23. CSS透明

IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。

FF:opacity:0.6。

24. CSS圆角

IE:不支持圆角。

FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;。

25. CSS双线凹凸边框

IE:border:2px outset;。

FF: -moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080;

26. 对select的options集合操作

枚举元素除了[]外,SelectName.options.item()也是可以的, 另外SelectName.options.length, SelectName.options.add/remove都可以在两种浏览器上使用。注意在add后赋值元素,否则会失败(本人试验如此)。

27. XMLHTTP的区别

//mf

if (window.XMLHttpRequest) //mf

{

xmlhttp=new XMLHttpRequest()

xmlhttp.onreadystatechange=xmlhttpChange

xmlhttp.open("GET",url,true)

xmlhttp.send(null)

 

}

//ie

else if (window.ActiveXObject) // code for IE

{

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")

 

    if (xmlhttp)

 

    {

    xmlhttp.onreadystatechange=xmlhttpChange

 

    xmlhttp.open("GET",url,true)

 

    xmlhttp.send()

    }

}

}

28. innerHTML的区别

Firefox不支持innerHTML, 解决办法可以如下

       rng = document.createRange();

       el = document.getElementById(elementid);

       rng.setStartBefore(el);

       htmlFrag = rng.createContextualFragment(content);

       while (el.hasChildNodes()) //清除原有内容,加入新内容

              el.removeChild(el.lastChild);

       el.appendChild(htmlFrag);


smarteng 发布于 2010-8-11 10:21

CSS兼容IE/Firefox

作为一个web开发者,最最令人头痛的就是这个css,JavaScript,在各个浏览器的兼容,美工们都头痛的不行,我们php工程师也是叫苦连天,怎么就不能只写一种模式呢,还得必须兼容 IE 6 7 8 9 ,chrome Firefox,opera …… 等等,这个文章说的是 CSS兼容IE/Firefox


smarteng 发布于 2010-8-11 10:15

JavaScript 微型模板引擎

// Simple JavaScript Templating

// John Resig - http://ejohn.org/ - MIT Licensed

(function(){

  var cache = {};

    this.tmpl = function tmpl(str, data){

    // Figure out if we're getting a template, or if we need to

    // load the template - and be sure to cache the result.

    var fn = !/\W/.test(str) ?

      cache[str] = cache[str] ||

        tmpl(document.getElementById(str).innerHTML) :

       // Generate a reusable function that will serve as a template

      // generator (and which will be cached).

      new Function("obj",

        "var p=[],print=function(){p.push.apply(p,arguments);};" +

       // Introduce the data as local variables using with(){}

        "with(obj){p.push('" +

         // Convert the template into pure JavaScript

        str

          .replace(/[\r\t\n]/g, " ")

          .split("<%").join("\t")

          .replace(/((^|%>)[^\t]*)'/g, "$1\r")

          .replace(/\t=(.*?)%>/g, "',$1,'")

          .split("\t").join("');")

          .split("%>").join("p.push('")

          .split("\r").join("\\'")

      + "');}return p.join('');");

    // Provide some basic currying to the user

    return data ? fn( data ) : fn;

  };

})();[break]

------------------------------------------------------------------------

用法:

<html>

<head>

这里包含这个JavaScript 模板引擎

</head>

<body>

<div><b>example 1:</b></div>

<script type="text/html" id="user_tmpl">

  <% for ( var i = 0; i < users.length; i++ ) { %>

    <li><a href="<%=users[i].url%>"><%=users[i].name%></a></li>

  <% } %>

</script>

<div id="show"></div>

<script type="text/javascript">

var users = new Array(2);

users[0] = {url:"http://www.baidu.com", name:"baidu"};

users[1] = {url:"http://www.google.com/hk/", name:"google"};

var results = document.getElementById("show");

results.innerHTML =tmpl("user_tmpl", users);

</script>

<div><b>example 2:</b></div>

<script type="text/html" id="item_tmpl">

  <div id="<%=id%>" class="<%=(i % 2 == 1 ? " even" : "")%>">

    <div class="grid_1 alpha right">

      <img class="righted" src="<%=profile_image_url%>"/>

    </div>

    <div class="grid_6 omega contents">

      <p><b><a href="<%=from_user%>"><%=from_user%></a>:</b> <%=text%></p>

    </div>

  </div>

</script>

<div id="result_item"></div>

<script type="text/javascript">

var items = {"id":1, "i":2, "profile_image_url":"http://www.google.com.hk/intl/zh-CN/images/logo_cn.png", "from_user":"http://www.google.com.hk", "text":"google"};

var result_item = document.getElementById("result_item");

result_item.innerHTML = tmpl("item_tmpl", items);

</script>

this is a script template test

</body>

</html>

短小精悍,灰常不错!~


smarteng 发布于 2010-8-11 09:16

使用PHP Header要注意的几个问题

 

在PHP中用header("location: http://www.miyifun.com");进行跳转要注意以下几点:

1、location和“:”号间不能有空格,否则会出错。

2、在用header前不能有任何的输出。

 

要求header前没有任何输出

    但是很多时候在header前我们已经输出了好多东西了,但是此时如果再次header的话,显然是出错的,在这里我们启用了一个ob的概念,这个东东的意思是在服务器端先存储有关输出,等待适当的时机再输出,而不是像现在这样运行一句,输出一句,发现header语句就只能报错了。

    具体的语句有: ob_start(); ob_end_clean();ob_flush();[break]

3、header后的PHP代码还会被执行。要及时exit;

否则他是会继续执行的,虽然在浏览器端你看不到相应的数据出现,但是如果你进行抓包分析的话,你就会看到下面的语句也是在执行的。而且被输送到了浏览器客户端,只不过是没有被浏览器执行为html而已(浏览器执行了header进行了转向操作)。

 

所以,标准的使用方法是:

ob_start();

........

if ( something ){

     ob_end_clean();

     header("Location: yourlocation");

     exit;

else{

     ..........

     ob_flush();  //可省略

}


smarteng 发布于 2010-8-3 10:03

博主

    blogger

    smarteng

    人生就流星,虽然转瞬即逝,但也有永恒。

日历

恰饭

标签