iNove主题宽度改为980px的方法

今天园子再次更改了inove主题,这次做的是将宽度加宽到980px,而原来的主题默认的是936px,我个人感觉原来的宽度在插入图片和加入AdSense广告上有些不方便,比如宽度限制、无法投放更大尺寸的adsense广告等,再者就是随着液晶显示器的普及,国内外主流用户已经习惯了在较高分辨率下进行工作和学习,这就有必要把网站宽度进行适当的拓展以充分利用空间。整个修改过程其实非常简单,就是修改一下图片和css文件,过程大致如下。

1.首先更改整体宽度,将整体宽度增加到980px。打开 style.css 文件,找到

#container{margin:0auto;width:936px;}

更改为:

#container{margin:0auto;width:980px;}

2.修改页面左侧栏的宽度。同样修改 style.css 文件,找到

#main{background:#FFFurl(img/main_shadow.gif)toprepeat-x;width:605px;padding:13px15px15px;float:left;overflow:hidden;}

更改为:

#main{background:#FFFurl(img/main_shadow.gif)toprepeat-x;width:649px;padding:13px15px15px;float:left;overflow:hidden;}

3.修改评论内容的宽度。找到

.comment.info{background:#EDEFF0url(img/comment.gif)00no-repeat;float:left;padding:10px15px0;width:494px;}

更改为:

.comment.info{background:#EDEFF0url(img/comment.gif)00no-repeat;float:left;padding:10px15px0;width:538px;}

4.修改评论框的宽度。找到

#comment{width:601px;}

更改为:

#comment{width:645px;}

5.修改对应的图片大小,请注意不是直接改变大小,你需要用较专业的图片处理软件如 Photoshop 去修改。需要修改的有以下几个图片。

修改header.jpg和footer.jpg宽度为980px;
修改light.gif宽度为1192px;
修改box.gif宽度为1298px;
修改comment.gif宽度为1136px;
修改postbox.gif宽度为1244px;
修改messagebox.gif宽度为649px。

CSS关于float: right使用及靠右换行的解决办法

1、float: right的简单用法:使用代码<span style="float: right"> ******  </SPAN>,其中******就是你调用的元素,比如发布日期:{dateline},如果想让此元素靠右,则相应为:<span style="float: right">{dateline}  </SPAN>;
2、当使用span时,很多站长反映:靠右的元素和前面的元素被自动换行了,即不再在同一行内,原因是:当非float的元素和float的元素在一起的时候,如果非float元素在先,那么float的元素将被排斥。

也就是说:如果你在设置span是float:right时,把他放在所有元素的最前面就正常了,以下为举例(攻击调用三个元素,想让第三个元素靠右显示):
按顺序输入的方法是错误的: {forum}{subject}<span style="float: right">{dateline}  </SPAN> <br />
正确的方法:<span style="float: right">{dateline} </SPAN>{forum}{subject}<br />

编译原理龙书、虎书、鲸书

编译原理领域内的3本权威书籍:
1、龙书(Dragon book)
英文名:Compilers: Principles,Techniques,and Tools
作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman
中文名:编译原理技术和工具


 
2、虎书(Tiger book)
英文名:Modern Compiler Implementation in C
作者:Andrew W.Appel,with Jens Palsberg
中文名:现代编译原理-C语言描述


 
3、鲸书(Whale book)
英文名:Advanced Compiler Design and Implementation
作者:Steven S.Muchnick
中文名:高级编译器设计与实现


 

本文出处http://unistd.blog.51cto.com/1126453/260372

如何写出无法维护的代码

这篇文章的原文在这里(http://mindprod.com/jgloss/unmain.html),我看完后我想说——
  1. 什么叫“创造力”,创造力就是——就算是要干一件烂事,都能干得那么漂亮,那么有创意的能力。
  2. 什么叫“抓狂”,抓狂就是——以一种沉着老练的不屈不挠的一本正经的精神,一点一点把你推向崩溃的边缘

  我把文章节选了一些,也并没有完全翻译,简译一下,也加入了一些自己的调侃。对于有下面这些编程习惯的朋友,请大家对号入座。另外,维护程序的朋友们,你们死定了!!

woodpeckerIf builders built buildings the way programmers write programs, then the first woodpecker that came along would destroy civilization. (如果建筑师盖房子就像程序员写程序一样,那么,第一只到来的啄木鸟就能毁掉我们的文明)

  ~ Gerald Weinberg (born: 1933-10-27 age: 77) Weinberg’s Second Law

  程序命名

  • 容易输入的名字。比如:Fred,asdf
  • 单字母的变量名。比如:a,b,c,x,y,z(陈皓注:如果不够用,可以考虑a1,a2,a3,a4,….)
  • 有创意地拼写错误。比如:SetPintleOpening, SetPintalClosing。这样可以让人很难搜索代码。
  • 抽象。比如:ProcessData, DoIt, GetData…抽象到就跟什么都没说一样。
  • 缩写。比如:WTF,RTFSC ……(陈皓注:使用拼音缩写也同样给力,比如: BT,TMD,TJJTDS)
  • 随机大写字母。比如:gEtnuMbER..
  • 重用命名。在内嵌的语句块中使用相同的变量名有奇效。
  • 使用重音字母。比如:int  ínt(注:第二个 ínt不是int)
  • 使用下划线。比如:_, __, ___。
  • 使用不同的语言。比如混用英语,德语,或是中文拼音。
  • 使用字符命名。比如:slash, asterix, comma…
  • 使用无关的单词。比如:god, superman, iloveu….
  • 混淆l和1。字母l和数字1有时候是看不出来的。

  伪装欺诈

  • 把注释和代码交织在一起

  for(j=0; j<array_len; j+ =8)<br />

  {<br />

      total += array[j+0 ];<br />

      total += array[j+1 ];<br />

      total += array[j+2 ]; /* Main body of<br />

      total += array[j+3]; * loop is unrolled<br />

      total += array[j+4]; * for greater speed.<br />

      total += array[j+5]; */<br />

      total += array[j+6 ];<br />

      total += array[j+7 ];<br />

  }

  • 隐藏宏定义。如:#define a=b a=0-b,当人们看到a=b时,谁也想不到那是一个宏。
  • 换行。如下所示,下面的示例使用搜索xy_z变得困难。

  #define local_var xy\<br />

  _z // local_var OK

  • 代码和显示不一致。比如,你的界面显示叫postal code,但是代码里确叫zipcode.
  • 隐藏全局变量。把使用全局变量以函数参数的方式传递给函数,这样可以让人觉得那个变量不是全局变量。
  • 使用同意词。如:

  #define xxx global_var // in file std.h&nbsp;<br />

  #define xy_zxxx// in file ..\other\substd.h&nbsp;<br />

  #define local_var xy_z// in file ..\codestd\inst.h

  • 使用相似的变量名。如:单词相似,swimmer 和 swimner,字母相似:ilI1 或 oO08。parselnt 和 parseInt, D0Calc 和 DOCalc。还有这一组:xy_Z,xy__z, _xy_z, _xyz, XY_Z,xY_z, Xy_z。
  • 重载函数。使用相同的函数名,但是其功能和具体实现完全没有关系。
  • 操作符重载。重载操作符可以让你的代码变得诡异,感谢CCTV,感谢C++。这个东西是可以把混乱代码提高到一种艺术的形式。比如:重载一个类的!操作符,但实际功能并不是取反,让其返回一个整数。于是,如果你使用!!操作符,那么,有意思的事就发生了——先是调用类的重载!操作符,然后把其返回的整数给!成了布尔变量,如果是!!!呢?呵呵。
  • #define。看过本站那些混乱代码的文章,你都会知道宏定义和预编译对于写出不可读的代码的重大意义。不过,一个具有想像力的东西是——在头文件中使用预编译来查看这个头文件被include了几次,而被include不同的次数时,其中的函数定义完全不一

  #ifndef DONE </p>

  <p>#ifdef TWICE </p>

  <p>// put stuff here to declare 3rd time around<br />

  void g(char* str);<br />

  #define DONE </p>

  <p>#else // TWICE<br />

  #ifdef ONCE </p>

  <p>// put stuff here to declare 2nd time around<br />

  void g(void* str);<br />

  #define TWICE </p>

  <p>#else // ONCE </p>

  <p>// put stuff here to declare 1st time around<br />

  void g(std::string str);<br />

  #define ONCE </p>

  <p>#endif // ONCE<br />

  #endif // TWICE<br />

  #endif // DONE

  文档和注释

  • 在注释中撒谎。你不用真的去撒谎,只需在改代码的时候不要更新注释就可以了。
  • 注释明显的东西。比如:/* add 1 to i */。(参看本站的“五种应该避免的注释”)
  • 只注释是什么,而不是为什么
  • 不要注释秘密。如果你开发一个航班系统,请你一定要保证每有一个新的航班被加入,就得要修改25个以上的位置的程序。千万别把这个事写在文档中。
  • 注重细节。当你设计一个很复杂的算法的时候,你一定要把所有的详细细设计都写下来,没有100页不能罢休,段落要有5级以上,段落编号要有500个以上,例如:1.2.4.6.3.13 – Display all impacts for activitywhere selected mitigations can apply(short pseudocode omitted). 这样,当你写代码的时候,你就可以让你的代码和文档一致,如:Act1_2_4_6_3_13()
  • 千万不要注释度衡单位。比如时间用的是秒还是毫秒,尺寸用的是像素还是英寸,大小是MB还是KB。等等。另外,在你的代码里,你可以混用不同的度衡单位,但也不要注释。
  • Gotchas。陷阱,千万不要注释代码中的陷阱。
  • 在注释和文档中发泄不满。(参看本站的“五种应该避免的注释”)

  程序设计

  • Java Casts。Java的类型转型是天赐之物。每一次当你从Collection里取到一个object的时候,你都需要把其转回原来的类型。因些,这些转型操作会出现在N多的地方。如果你改变了类型,那么你不一定能改变所有的地方。而编译器可能能检查到,也可能检查不到。
  • 利用Java的冗余。比如:Bubblegum b = new Bubblegom(); 和 swimmer = swimner + 1; 注意变量间的细微差别。
  • 从不验证。从不验证输入的数据,从不验证函数的返回值。这样做可以向大家展示你是多么的信任公司的设备和其它程序员。
  • 不要封装。调用者需要知道被调用的所有的细节。
  • 克隆和拷贝。为了效率,你要学会使用copy+ paste。你几乎都不用理解别人的代码,你就可以高效地编程了。(陈皓注:Copy+ Paste出来的代码bug多得不能再多)
  • 巨大的listener。写一个listener,然后让你的所有的button类都使用这个listener,这样你可以在这个listener中整出一大堆if…else…语句,相当的刺激。
  • 使用三维数组。如果你觉得三维还不足够,你可以试试四维。
  • 混用。同时使用类的get/set方法和直接访问那个public变量。这样做的好处是可以极大的挫败维护人员。
  • 包装,包装,包装。把你所有的API都包装上6到8遍,包装深度多达4层以上。然后包装出相似的功能。
  • 没有秘密。把所有的成员都声明成public的。这样,你以后就很难限制其被人使用,而且这样可以和别的代码造成更多的耦合度,可以让你的代码存活得更久。
  • 排列和阻碍。把drawRectangle(height,width)改成 drawRectangle(width, height),等release了几个版本后,再把其改回去。这样维护程序的程序员们将不能很快地明白哪一个是对的。
  • 把变量改在名字上。例如,把setAlignment(int alignment)改成,setLeftAlignment, setRightAlignment, setCenterAlignment。
  • Packratting。保留你所有的没有使用的和陈旧的变量,方法和代码。
  • That’s Final。Final你所有的子结点的类,这样,当你做完这个项目后,没有人可以通过继承来扩展你的类。java.lang.String不也是这样吗?
  • 避免使用接口。在java中,BS接口,在C++中BS使用虚函数。
  • 避免使用layout。这样就使得我们只能使用绝对坐标。如果你的老大强制你使用layout,你可以考虑使用GridBagLayout,然后把grid坐标hard code.
  • 环境变量。如果你的代码需要使用环境变量。(getenv()– C++ / System.getProperty()– Java ),那么,你应该把你的类的成员的初始化使用环境变量,而不是构造函数。
  • 使用Magic number。参看《Linux一个插曲》。
  • 使用全局变量。1)把全局变量的初始化放在不同的函数中,就算这个函数和这个变量没有任何关系,这样能够让我们的维护人员就像做侦探工作一样。2)使用全局变量可以让你的函数的参数变得少一些。
  • 配置文件。配置文件主要用于一些参数的初始化。在编程中,我们可以让配置文件中的参数名和实际程序中的名字不一样。
  • 膨胀你的类。让你的类尽可能地拥有各种臃肿和晦涩的方法。比如,你的类只实现一种可能性,但是你要提供所有可能性的方法。不要定义其它的类,把所有的功能都放在一个类中。
  • 使用子类。面向对象是写出无法维护代码的天赐之物。如果你有一个类有十个成为(变量和方法)你可以考虑写10个层次的继承,然后把这十个属性分别放在这十个层次中。如果可能的话,把这十个类分别放在十个不同的文件中。

  混乱你的代码

  • 使用XML。XML的强大是无人能及的。使用XML你可以把本来只要10行的代码变成100行。而且,还要逼着别人也有XML。(参看,信XML得永生信XML得自信
  • 混乱C代码。在《如何加密源代码》中已经说过一些方法了,这里再补充一些。
  • 使用不同的进制。比如:10 和010不是一样的。再比如:array = new int[]{   111,   120,   013,   121,};
  • 尽量使用void*。然后把其转成各种类型
  • 使用隐式的转型。C++的构造函数可以让你神不知鬼不觉得完成转型。
  • 分解条件表达式。如:把 a==100分解成,a>99 && a<101
  • 学会利用分号。如:if ( a );else;{   int d;   d = c;}
  • 间接转型。如:把double转string,写成new Double(d).toString()而不是 Double.toString(d)
  • 大量使用嵌套。一个NB的程序员可以在一行代码上使用超过10层的小括号(),或是在一个函数里使用超过20层的语句嵌套{},把嵌套的if else 转成 [? :] 也是一件很NB的事。
  • 使用C的变种数组。myArray[i] 可以变成*(myArray+ i)也可以变成*(i + myArray)其等价于 i[myArray]。再看一个函数调用的示例,函数声明:int myfunc(int q, int p){ return p%q; }函数调用myfunc(6291, 8)[Array];
  • 长代码行。一行的代码越长越好。这样别人阅读时就需要来来回回的
  • 不要较早的return。不要使用goto,不要使用break,这样,你就需要至少5层以上的if-else来处理错误。
  • 不要使用{}。不要在if else使用{},尤其是在你重量地使用if-else嵌套时,你甚至可以在其中乱缩进代码,这样一来,就算是最有经验的程序员也会踩上陷阱。
  • 使用宏定义。宏定义绝对是混乱C/C++代码的最佳利器。参看 老手是这样教新手编程的
  • 琐碎的封装。比较封装一个bool类,类里面什么都做,就是一个bool.
  • 循环。千万不可用for(int i=0; i<n; i++)使用while代替for,交换n和i,把<改成<=,使用 i–调整步伐。

  测试

  • 从不测试。千万不要测试任何的出错处理,从来也不检测系统调用的返回值。
  • 永远不做性能测试。如果不够快就告诉用户换一个更快的机器。如果你一做测试,那么就可能会要改你的算法,甚至重设计,重新架构。
  • 不要写测试案例。不要做什么代码覆盖率测试,自动化测试。
  • 测试是懦夫行为。一个勇敢的程序员是根本不需要这一步的。太多的程序太害怕他们的老板,害怕失去工作,害怕用户抱怨,甚至被起诉。这种担心害怕直接影响了生产力。如果你对你的代码有强大的信心,那还要什么测试呢?真正的程序员是不需要测试自己的代码的。

  其它

  • 你的老板什么都知道。无论你的老板有多SB,你都要严格地遵照他的旨意办事,这样一样,你会学到更多的知识如何写出无法维护的代码来的。
  • 颠覆Help Desk。你要确保你那满是bug的程序永远不要被维护团队知道。当用户打电话和写邮件给你的时候,你就不要理会,就算要理会,让用户重做系统或是告诉用户其帐号有问题,是标准的回答。
  • 闭嘴。对于一些像y2k这样的大bug,你要学会守口如瓶,不要告诉任何人,包括你的亲人好友以及公司的同事和管理层,
  • 忽悠。你会学会忽悠,就算你的代码写得很烂,你也要为其挂上GoF设计模式的标签,就算你的项目做得再烂,你也要为其挂上敏捷的标签,只有学会像中国Thoughtworks的咨询师那样去忽悠,你才能学会更炫更酷的方法,让整个团队和公司,甚至整个业界都开始躁动,这样才能真正为难维护的代码铺平道路。

  这个文档中还有很多很多,实在是太TMD强大了,大家自己去看看吧。有精力有能力的朋友不妨把其翻译成中文。

  总之,我们的口号是——

  Write Everywhere, Read Nowhere

给用官方更新V30的朋友,这里是方法(用到USS改CODE)

刚刚在看了很多人,直接官方更新,手机变成英文的了~~~

还有有些人,改的CODE不对,或者是怕CODE改得不好,影响机子的。

在这里我给你们讲讲我的更新方法,保证你们没有问题。

一、刷机之前一定要做好功课,有个别朋友没做任何多少了解,甚至连自己的机子CODE是多少,适不适合改CODE升级都没弄清楚就直接升级,结果刷成了英文甚至是砖头,所以请大家一定要把准备工作做到位有个别机油已经将亚太的机子通过NSU直接升级刷成了英文,此时按照本教程先修改CODE,然后再连接NSU检测更新,NSU会显示版本为最新版本,但是可以选择重新更新,下载完更新后可以解决此问题。

准备工作详细了解自己爱机的信息:RM型号、CODE、系统版本信息。  

查询方法:    RM型号和CODE:把手机后盖打开卸下电池,在电路板背面的贴纸上就能看到;

   系统版本信息:待机状态下,调出拨号数字键盘,输入“*#0000#”,里面亦包含RM信息


1.NSS:改手机CODE软件,英文全称:Nemesis Service Suite

2. NSU:NOKIA升级软件,英文全称:Nokia software Updater

准备好相关软件:
  诺基亚PC套件:诺基亚官网下载

  NSU:诺基亚官网下载
  NSS:改手机CODE软件

提示:修改CODE成功升级后,CODE不必改回去,以后有新的固件版本了可直接在线更新了。有童鞋问到,CODE改成原来的好不好?在刷有没有问题?我要说,改成原来的CODE你下次更新的时候,不也还是要改CODE嘛,所以别那么麻烦了,更新成功的版本对手机完全没有影响的,所以放心使用。




二、用NSS软件改CODE

    1.NSS安装把帖子最后NSS附件压缩分卷下载后,任意点击其中一个压缩包解压,双击解压出来的安装文件安装NSS。安装过程没有要修改调整的地方,安装位置直接默认安装在C盘即可,直接点Next,到最后一步,点Finish按钮会弹出一个对话框,意思是问是否查看NSS USB驱动的安装方法,所以选择YES 或NO都无所谓,NSS安装完成。 (图1—5)
   

   


  

    2.手机与电脑的连接
    也可以说是手机与NSS软件的连接,本人就在之前刷机的时候在这一步出了状况,导致改CODE的过程相当痛苦,自信心一度低落到十万八千里远,哈哈。
    连接方法:
    ①因为诺基亚PC套件是默认随电脑启动一起运行,因此,先在电脑右下角任务栏找到PC套件图标,右键点击,左键选择退出,此时PC套件不再运行。 (图6)
            
    ②用数据线连接手机,此时手机会弹出对话框,让你选择连接方式,手机上仍然选择第一个PC套件模式即可,此时电脑应该会有设备连接的提示音。 电脑上的PC套件可以不用开启,手机的必须要选择PC套件。(图7)
    3.双击桌面的NSS图标,启动NSS软件,启动完成后NSS软件是一片空白,仅在右上角有一个芯片图标和一个放大镜图标。 (图8)
Click here to open new window
CTRL+Mouse wheel to zoom in/out Click here to open new window
CTRL+Mouse wheel to zoom in/out

   

    4.单击放大镜图标(图8。PS:放大镜图标的作用是查找新的设备),此时会出现如图的状况(图9) ,再点击软件第二排的手机图标(图10) ,接下来点击软件中间的Scan(扫描)按钮,此时应能成功读取手机信息并在软件左下的空白框内显示(图11) 。如果没有,请重新检查连接步骤是否正确。


Click here to open new window
CTRL+Mouse wheel to zoom in/out
  Click here to open new window
CTRL+Mouse wheel to zoom in/out


    5.再点击手机图标旁边的Flash(闪存)图标,再点击软件右侧的Scan按钮,此时软件会扫描手机的CODE信息,并在软件左下的空白框内显示(图12,此图为我修改后的CODE显示)机油们可以查看是否和机身电路板上标示的一致,如果不一样,汗,有可能要蹲墙角哭去哦。。。哈哈


Click here to open new window
CTRL+Mouse wheel to zoom in/out
Click here to open new window
CTRL+Mouse wheel to zoom in/out


    6.重新点到第二排的手机图标,在软件右边可以看到有Production Data Edit(产品数据编辑)区域,在第一栏Produdct Code栏里填入你要改写的CODE,并将Enable项勾选,再点击该区域右下角的Write(写入)按钮(图13) ,2,3秒过后,软件左下角会提示Write New Value…Done(写入新的值完成),说明你要修改的CODE值已经成功写入(图14) 。


Click here to open new window
CTRL+Mouse wheel to zoom in/out


    7.重复步骤5,重新查看一次CODE,看是否显示为你要修改的CODE值,如果是的话那恭喜你CODE成功修改好了。如显示的仍为之前的CODE,请重复以上修改操作。
    至此,手机的CODE值已经修改完成,关闭NSS软件。


三、NSU在线升级

    1.手机要装上SIM卡,并将情景模式设置为标准
    2.安装下载好的NSU软件,安装过程不再赘述;
    3.运行PC套件,将手机以PC套件模式与电脑连接;也可以不用打开电脑里的PC套件,但是手机里的必须选择PC套件。
    4.运行NSU软件,NSU启动后,点击“开始”,会看到NSU的相关提示,点击“下一步” (图15) ,此时NSU会检查手机的连接状况,识别手机,并搜索手机可用的更新。软件界面左边显示手机型号、RM型号,固件版本等信息 (图16)   截图显示的是我手机成功更新固件后的情况。没有升级的朋友左侧显示的应该是目前版本为V20或者V21,更新版本为V30,按照软件提示点击右下角的开始更新即可。


Click here to open new window
CTRL+Mouse wheel to zoom in/out

                             按下一步

5.此时NSU软件会连接服务器下载相应的固件更新包,视不同的网络状况下载时间在20分钟到2个小时不等,本人就遇到过在网络高峰期前三次下载更新包均失败的状况。在下载更新包的过程中,机油请注意看软件界面下面的提示,包括不要随便关手机、断开数据线等影响更新的操作,还有手机更新时的一些状况的提醒,机油们按照提示做就OK了。


6.更新包下载好后软件会自动为手机更新,此时不要动手机和数据线等,整个更新过程在几分钟左右,直到NSU软件提示更新完成,此时可拔掉数据线,按“*#0000#”查看系统版本是否成功更新。
至此,整个的NSS修改CODE、NSU在线更新已全部完成。有个别机油有可能出现更新后手机出现一些异常故障,可以尝试用NSU重新更新几次。


重要提示:1.目前各位机油常刷的CODE和机型(个人建议:0595084  0595196,这两个版本很好,而0595776一旦刷了V30假如不喜欢这个版本的,就不能重新安装,鄙视下。还有香港那些的没有试验过,大家没事可以试验下。哈哈~~)
0595196: Nokia X6 RM-559 中国白兰
0595084: Nokia X6 RM-559 中国黑红
0595776: Nokia X6 RM-559 中国 3G 16GB黑
0595705: Nokia X6 RM-559 中国白粉红
0595778: Nokia X6 RM-559 中国白黄
0598191:香港****_Pink
0598955:香港_****_Yellow_COLOR
0598201:香港Black_COLOR
0589412:16GB的九龙DARK_BLACK
0592047:16GB的九龙LIGHT_PINK
0592048:16GB的九龙LIGHT_YELLOW



以上的东西,完全能够保证大家用改CODE的方法,更新官方版本的了。只有按照操作一步步的来,完全没有问题的~~~希望大家多多支持啊~~~哈哈~~  
差点忘了那位大人的帖子了~~~http://bbs.dospy.com/thread-7446514-1-313-1.html

新浪Q微博截图泄露:重大改头换面,盈利模式初现

近日,新浪Q微博的一张截图被用户@吾空孙 贴了出来,而其官方网站却显示仍在封闭测试当中,不过我们仍然可以从中看出新浪CEO @曹国伟 先前为微博设定的6种盈利模式(交互广告,社交游戏,电子商务,实时搜索,无线增值,数据服务)中的两种:增值服务和电子商务。
微博将很快推出虚拟货物?
首先,你可以看到微博的用户界面发生了很大的改变,里面出现了许多可爱的图像,估计这些��拟货物都是需要用户花钱买的,也就是增值服务。

电子商务即将登场?
右上角,看到“商城”链接了吗。虽然目前还无法断定新浪将怎样进行电子商务,但是他们无非有两种方式:一是一切从零开始构建,二是将微博链到现有的已经存在的电子商务网站。不过鉴于新浪最近与淘宝达成了合作关系,要是走第二条路的话,估计它可能会是新浪微博的首选电子商务提供商。但是考虑到曹国伟欲将微博打造成中国的Facebook的目标,其完全打造一个独立的电子商务平台也未为可知。

短信,主页和社交游戏都纷至沓来了?
你可以在上图看到消息中心和我的名片,这两项功能应该就是微博的短信和升级版的主页了。另外新浪副总裁彭少彬也已经宣布了其社交游戏中心将在推出的第一年内向所有的开发者完全免费开放(也就是赚到的钱全部落入开发者自己的口袋,这一点还不错很厚道)。

新浪微博的社交覆盖面仍在扩大?
根据加网提供的数据显示,目前约有9%的分享来自新浪微博,仅次于排名第一的Qzone的15%,而远远超过排名第三的搜狐和腾讯的3%。

尽管新浪微博的发展非常之快,而且前景也很光明,但是也有投资者对曹国伟的做法表示担忧,担心他可能由于对该平台融合的东西过多而最终毁了这个平台。

如何在Windows XP上安装Windows Phone 7 Developer Tools

官方的Windows Phone Developer Tools不支持Windows XP,在网上找了一个曲线救国的方法,成功在XP上安装上Windows Phone Developer Tools。
方法如下:

  1. Download the Windows Phone Developer Tools RTW from Microsoft Download Center
  2. Extract the downloaded package by running vm_web.exe /x
  3. Go to the folder of the extracted package & open the file baseline.dat in any text editor
  4. Look for the ‘gencomp7788’ section and change this two entries from 1 to 0:
    • InstallOnLHS=0
    • InstallOnWinXP=0
  5. Save the file baseline.dat
  6. Run setup.exe /web

SQL重复记录查询

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select   peopleId  from   people  group  by   peopleId  having  count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people 
where peopleId  in (select   peopleId  from people  group  by   peopleId   having  count(peopleId) > 1)
and rowid not in (select min(rowid) from   people  group by peopleId  having count(peopleId )>1)

3、查找表中多余的重复记录(多个字段) 
select * from vitae a
where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
(三)
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0

  方法二

  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

  1、对于第一种重复,比较容易解决,使用
select distinct * from tableName

  就可以得到无重复记录的结果集。

  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)

  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

(四)查询重复
select * from tablename where id in (
select id from tablename 
group by id 
having count(id) > 1

Android中AVD的使用以及错误处理方法

1.1版本的emulator在设置好环境变量后,直接在命令行中输入 emulator就可以启动了,但是1.5版本中加了个所谓的AVD(Android Virtual Device),AVD就相当于是一个模拟器的,不过你可以利用AVD创建基于不同版本的模拟器,然后使用emulator-avd avdName命令启动不同的模拟器,下面就介绍如何创建AVD:

1.查看当前支持版本(在列出的版本中我们需要记住id值,这个值在第2步中使用):

 android list targets

2.创建AVD(最后的2表示创建1.5版本的avd):

android create avd –n avdName –t 2

3.查看是否创建成功(如果成功会显示刚才我们创建的avd信息):

android list avd

4.启动模拟器:

emulator -avd avdName

5.选择启动的皮肤(横向的模拟器)

emulator -avd avdName -skin HVGA-L

6.按Ctrl+F11,可以直接改变模拟器的横纵摆放。

7. 实际创建avd的过程以及错误处理方法

首先创建一个avd,使用命令行方式创建,例如:

D:\android\android-sdk-windows-1.5_r3\tools>android create avd -n avd15 -t 2

Android 1.5 is a basic Android platform.

Do you wish to create a custom hardware profile [no]

Created AVD 'avd15' based on Android 1.5

用android list avd命令列出当前的avd:

D:\android\android-sdk-windows-1.5_r3\tools>android list avd

Available Android Virtual Devices:

    Name: avd15

    Path: D:\我的文档\.android\avd\avd15.avd

  Target: Android 1.5 (API level 3)

    Skin: HVGA

注意上面的avd的目录,把上面目录中的\.android的文件夹拷贝到C:\Documents and Settings\Administrator,因为我用的是administrator登陆的,所以拷贝到这个目录下,实际应该拷贝到相应的C:\Documents and Settings\用户名 下,注意用户名要是英文名。

这时候如果用emluator -avd avd15,会得到如下的错误:

emulator: ERROR: no search paths found in this AVD's configuration.

Weird, the AVD's config.ini file is malformed. Try re-creating it.

这个错误的原因是C:\Documents and Settings\Administrator\.android\avd目录中的ini文件中包含了中文字符-我的文档,所以要修改这个ini文件-Avd15.ini,修改path为path=C:\Documents and Settings\Administrator\.android\avd\avd15.avd。

这时候,就可以启动emulator了:

D:\android\android-sdk-windows-1.5_r3\tools>emulator -avd avd15

emulator: emulator window was out of view and was recentred

可以看到google的android模拟器了。

还有一种办法就是修改或新增一个变量名为Android_SDK_HOME(固定名字)的环境变量,变量值可以不是Android SDK的路径。但不要包括中文,然后重新启动SDK管理器

运行eclipse中的工程,选择andorid project.会弹出android AVD Error对话框,选择Yes,

然后出现android virtual device manager:

直接点击finish,然后出现 android device chooser对话框:

当前运行的emulator会显示出来,选中它,然后OK.

此时,在emulator中可以显示工程的应用程序。

总结一下:

先启动emulator,然后再运行eclipse中的工程。

配置Android开发环境

一、安装 JDK

下载JDK最新版本,下载地址如下:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

这里我下载的是: Java SE Development Kit 6u24 for Windows x64, Multi-language,即这个文件:jdk-6u24-windows-x64.exe

image

下载后安装。Windows 下安装完毕后需要设置三个环境变量

  
JAVA_HOME指明JDK安装路径,就是刚才安装时的路径C:\Program Files\Java\jdk1.6.0_24,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse,ant 等都需要使用此变量)
PATH

Path使得系统可以在任何路径下识别java命令,设为:

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

CLASSPATH

CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

(要加.表示当前路径)
%JAVA_HOME%就是引用前面指定的JAVA_HOME。

上述环境变量设置好了后,可以运行cmd,在命令窗口里面运行下面命令,可以看到类似下面的信息:

 image

当然也可以在命令行下面使用 java -fullversion 可以对当前版本的详细信息。这时候的返回信息类似如下:

java full version "1.6.0_24-b07"

之后我们就可以写一个超简单的java程序: HelloWorld.java 文件内容如下:

public class HelloWorld
{
   public static void main(String args[])
    {
      System.out.println("HelloWorld!");
    }
}

依次: javac HelloWorld.java

java HelloWorld

来测试是否可以正常运行。

参看:

Java环境的搭建
http://blog.csdn.net/ghj1976/archive/2010/04/29/5543428.aspx

二、下载并安装 Eclipse

下载地址:http://www.eclipse.org/downloads/

我这里下载的是:  64 位的 Eclipse Helios (3.6.2)  Eclipse IDE for Java Developers

image

即: eclipse-java-helios-SR2-win32-x86_64.zip 这个文件

下载后解压缩后就可以用了。

使用时选择一个Workspace 即可正常使用了。

image

如果我们还需要用 Eclipse 开发其他程序的代码,比如PHP,这时候我们可以添加Eclipse支持的软件,如下步骤:

在 Eclipse 开发环境的菜单 Help –> Install New Software 打开的界面中,选择Helios – http://download.eclipse.org/releases/helios/ 这个站点(如果你是用3.6的话),

然后下面的列表会刷新(可能要等好一会…),然后选择 Programming Languages这个分类下的PHP Development Tools(PDT) SDK Feature 这个,后面就是一路NEXT就OK了

image

Eclipse 中我们也可以设置JDK的版本,

在我们的项目上右键Properties –> Java Compiler中将 –> Compiler compliance level 设成我们需要的版本即可。

需要注意的是:Eclipse不自带jdk,它只需要jre就可以运行(不需要javac),因为它自带编译器(plugin目录里有compile包)。

在运行时,则是由于JRE安装时已经在环境中添加java这个命令(无论windows还是Linux),eclipse便利用它启动startup.jar。但如果只用jre,因为没有源代码,eclipse就不能根据源码生成库中type的注释了。

三、设置 Eclipse, 安装 Android 开发工具

打开Eclipse菜单Help—>install new software
选择ADD
输入Name:ADT
Location:https://dl-ssl.google.com/Android/eclipse/

按OK

然后全部全部打勾,安装。一直按 Next,接受其中的协议,最后会自动安装。

image

四、下载 Android SDK

下载Android SDK 选择 android-sdk_r10-windows.zip 

Android SDK Android NDK 官方下载地址

国内可以通过下面地址下载:
http://code.google.com/p/androidforchinadeveloper/downloads/list
http://www.icewalkers.com/Linux/Software/536930/Android-SDK.html

五、设置Android SDK路径
5.1、Eclipse重启后,选择【windows】—–【preference】—【Android 】
点击Browse,选择刚刚下载的Android SDK路径(需要解压缩)
点击Apply

5.2、然后在 Window > Android SDK and AVD Manager  中选择需要装的Android Package。简单来说就是全选。
> Available Packages: 
> Android Repository:
+ Android SDK Tools, revision 9
+ Android SDK Platform-tools, revision 2
[Install Selected]
在 Avaliable Packages上选择拟需要安装的开发包(根据自己的需要安装,不需要全部安装)在线下载速度很慢的
这样Android 的开发环境就搭建完成了

image