1 / 3
Caption Text
2 / 3
Caption Two
3 / 3
Caption Three margin testing

Friday, November 26, 2010

明星软件工程师的10种特质(英汉)

http://www.jobbole.com/entry.php/344
 - 职场博客 - 伯乐在线
[发表人]:   [发表时间]:2010-11-24 05:10 PM

  如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。

明星软件工程师的10大特质   伯乐在线-职场博客

  代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。
  • 1. 热爱编程
  • 2. 完成事情
  • 3. 持续重构代码
  • 4. 使用设计模式
  • 5. 编写测试
  • 6. 善用现有代码
  • 7. 专注可用性
  • 8. 编写可维护的代码
  • 9. 能用任何语言编程
  • 10. 知晓基本的计算机科学

  1. 热爱编程

  编程是一种为了满足兴趣而心甘情愿去做的劳动(Programming is a labor of love)。和其他任何职业一样,唯有真正的热情,才能完成真正的伟大事情。这里有个误解,认为编写代码是机械化并纯科学性的。事实上,最优秀的软件工程师是工匠,他们能把能量、独创性和创造力融入到每一行代码中。伟大的工程师知道何时该把代码雕琢至完美,知道何时把大型系统像拼图一样组装到一块。热爱编程的工程师从构建软件中获得满足,就好比一位作曲家在完成一部交响乐后而欣喜若狂。正是兴奋感和成就感,才造就了喜爱编程的明星工程师。


  2. 完成事情

  有很多技术人员只谈论软件而不编写代码(只说不做型)。而伟大软件工程师会真正去编码,这也是他们最为重要的品质之一。他们是实际做事的人。聪明人都知道,解决问题的最佳途径是直面问题,而不是花上数周来设计复杂又不必要的架构和函数库。优秀工程师应当会问:解决手头问题的最简单方法是什么?最近的软件开发方法——敏捷实践,正是专注那个。它的思想是,把复杂的项目拆分为短小的迭代,每个迭代只关注一小部分的增量功能。因为每个迭代对应的编码只需要数周,所以功能易于管理并简单。


  3. 持续重构代码

  编码很像雕刻。要像艺术家一样不断完善自己的作品,软件工程师也要通过可能的最佳方式来持续完善自己的代码,以达到目标。重新塑造代码的原则称为"重构",Martin Fowler在他的创意书中有相应描述。重构背后的原始思想是:改善代码而不改变其功能,移动调整部分代码以确保系统不腐,还有确保系统完成基于当前需求该完成的事。持续重构可以让开发人员解决另一个著名的问题——"黑盒遗留代码"(这个问题基本无人想触及)。

  几十年的软件开发文化要求我们,不应该去改变正常工作的东西。然而,随着时间推移,问题是我们成为了老旧代码的奴隶,老旧代码变得不稳定和不兼容。而重构正好可以改变这一状况,因为我们是代码的主人,不是它的奴隶。重构在工程师和代码之间建立起持续的"对话",并带来所有权、确定性、自信心和系统的稳定性。

  千万不要成为老旧代码的奴隶。如果代码是他人所写,或许你可以轻易推脱责任。但大多数时候,那些代码是自己所写,要拿得起放得下,旧代码该埋时,就把它埋了!


  4. 使用设计模式

  自从所谓的"四人帮"(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)发表他们的著作——《设计模式》后,全世界的软件工程师一直都在讨论模式。在我们所处世界,不管是自然界还是人类行为,模式无处不在。软件工程自然也不例外。模式就是不断重现的跨语言跨系统的场景和机制。一位优秀的工程师通常能识别并利用模式,而不是受制于模式。工程师不应(强制)让系统去适应某种模式,而需发现在系统中使用模式的时机(恰当使用模式)。在使用模式来确保正确性时,应借鉴利用前人的智慧结晶,使用以前能正当解决特定工程问题的方法。但请切记:模式不是万灵药;不要为了使用设计模式而使用设计模式。


  5. 编写测试

  曾有段时间,软件工程师们认为测试不值得他们去做。然而,如果你不做测试,你怎么能确保代码就能正常工作呢?敏捷实践中的"单元测试"已获得普遍认可,因为它注重编写测试来反映代码是否有效。随着系统增大,测试也随之增大。有经验的工程师知道并了解测试的价值所在,因为测试的目的就是创建一个能正常运作的系统。优秀的工程师通常会确保出现过一次的Bug不会再出现第二次。但优秀的工程师也知道,不应该浪费时间写那些琐碎或多余的测试,而需要专注测试各个组件中的核心部分。


  6. 善用现有代码 

  "重新发明轮子"一直是软件行业中的巨大问题之一。从发明新语言到从写函数库,忽视并重写那些已经存在并已能工作的奇怪驱动力,已经造成大量软件开发的失败案例。一位明星工程师会专注三种基本类型的重用:第一,内部基础架构的重用,相应代码是他自己或同事编写的;第二,使用第三方的函数库,比如JDK。最后,研究使用某些大型网络服务商提供的相应服务,比如Amazon。总之,正确善用现有的代码,使得软件工程师能真正专注于最为重要的事情上——应用程序本身。


  7. 专注可用性 

  优秀的工程师通常都专注于用户。无论用户是企业还是个人,无论是为消费型的软件公司还是投资银行,需要关注的都是可用性。用户如何和系统交互?系统是否提供一种简单、直接和平稳的操作体验?有种说法,因为软件工程师是技术人员,他/她和"用户如何与系统交互"没有关联,这种说法严重错误。优秀工程师努力工作是为了什么?不正是让系统简单并易于使用。他们无时无刻都会想到用户,不会尝试去发明那些令人费解,只有极客才能理解并欣赏的东西。

  有些时候,一些软件工程师过于投入,反而忘记所编写的程序/软件,是供他人使用,不是做给自己看的"艺术品"。所以,在软件开发过程中,一直要把"用户"放在心中。


  8. 编写可维护的代码

  软件开发界的另外一个小秘密是:编写优秀代码和糟糕代码所花费的时间是一样多。一位训练有素的工程师,他/她会从第一行代码开始就考虑可维护性和代码的演化。没有任何理由编写"丑陋"的代码、长达数页的函数,或是稀奇古怪的变量名。优秀的工程师编写代码会遵循命名惯例,代码编写紧凑、简单和不过度炫耀聪明。代码的每一行,都应恰如其分地展现出其原有目的。在给不便理解的代码(块)合理注释时,别忘了命名规则。清晰明了的函数名和变量名可以让代码不言而明。

  在编码时,有些程序员会有这种心态:过一会儿再来修改或完善某部分代码或某条语句。但谁知这一"过一会"竟然是"一天"、"一周"、"一个月"或"一年",甚至以后根本就没机会再回头修改。所以,尽量别妥协写出暂时堪用的代码。否则,不仅不会节省开发时间,也可以阻碍整个进程。当然也不利于后续维护人员的工作。


  9. 能用任何语言编程

  优秀的软件工程师活血有自己一门特别钟爱的编程语言,但从不会执迷于当中。如今已有很多优秀的编程语言,也就是说,如果你只会使用其中一门语言,说明你缺乏多样性。你可以用Java、C#或C++编写任何现代软件,可以用PHP、Perl或Ruby编写任何网站的后台。简而言之,编程所用语言,远远没有语言相应的函数库重要。优秀的工程师能够认知到这一点,并愿意去学习新语言、新函数库和构建系统的新方法。


  10. 知晓基本的计算机科学知识

  最后,但肯定不是优秀工程师最不重要的特质就是:扎实的基础。优秀的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型的软件?。这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础就是你在构建任何现代软件中做抉择时的必备品。


  结束语

  以上就是区分伟大软件工程师的诸多特质。其中讨论的"热情",是非常重要的。代码重用、设计模式、基础数据结构和算法都是必须知道的,而敏捷实践中的重构和单元测试则有助于工程师应对复杂的软件。尤为重要的是,明星工程师相信简洁和常识。也正是这些信念,帮助他们成功构建当今世界所需的看似不可能又错综复杂的系统。

  引用网上看到的一段话:对于知识,要求知若渴;对于自己,要虚怀若谷。保持开放的心态,保持孩童般的好奇心看待新鲜事物。当今世界,日新月异,不仅要从书中获取知识,更要尽可能从其他途径来学习经验和知识,在求知过程中,《请谨记5件事,做一名快速的学习者》。

  如果你觉得一位明星软件工程师还应具备其他特质,请在评论或微博中和大家分享讨论。

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

Top 10 Traits of a Rockstar Software Engineer

Every company is a tech company these days. From software startups to hedge funds to pharmaceutical giants to big media, they're all increasingly in the business of software. Quality code has become not only a necessity, but a competitive differentiator. And as companies compete around software, the people who can make it happen - software engineers - are becoming increasingly important. But how do you spot the 'cream of the crop' programmers? In this post we outline the top ten traits of a rockstar developer.

We've written here before about the future of software development, in which a few smart developers can leverage libraries and web services to build large-scale systems of unprecedented complexity. It only takes a couple of smart engineers to create quality software of immense value, and below is a list of the top ten qualities you should look for when hiring a developer:

  1. Loves To Code
  2. Gets Things Done
  3. Continuously Refactors Code
  4. Uses Design Patterns
  5. Writes Tests
  6. Leverages Existing Code
  7. Focuses on Usability
  8. Writes Maintainable Code
  9. Can Code in Any Language
  10. Knows Basic Computer Science

1. Loves To Code

Programming is a labor of love. Like any occupation, truly great things are achieved only with passion. It is a common misconception that writing code is mechanical and purely scientific. In truth, the best software engineers are craftsman, bringing energy, ingenuity, and creativity to every line of code. Great engineers know when a small piece of code is shaping up perfectly and when the pieces of a large system start to fit together like a puzzle. Engineers who love to code derive pleasure from building software in much the same way a composer might feel ecstatic about finishing a symphony. It is that feeling of excitement and accomplishment that makes rockstar engineers love to code.

2. Gets Things Done

There are plenty of technical people out there who talk about software instead writing it. One of the most important traits of a great software engineer is that they actually code. They actually get things done. Smart people know that the best way to solve problems is go straight at them. Instead of spending weeks designing complex, unnecessary infrastructure and libraries, a good engineer should ask: What is the simplest path to solving the problem at hand? The recent methodologies for building software, called  Agile practices, focus on just that. The idea is to break complex projects into short iterations, each of which focuses on a small set of incremental features. Because each iteration takes just a few weeks to code, the features are manageable and simple. Teams that follow agile practices never create infrastructure for its own sake, instead they are focused on addressing a simple set of requirements. The secret is that when this approach is applied iteratively, a rich, complex piece of software arises naturally.

3. Continuously Refactors Code

Coding is very much like sculpting. Just like an artist is constantly perfecting his masterpiece, an engineer continuously reshapes his code to meet requirements in the best possible way. The discipline of reshaping code is known as refactoring and was formally described by Martin Fowler in his seminal book. The original idea behind refactoring was to improve code without changing what it does, moving pieces of the software around to ensure that the system is free of rot and also does what it is supposed to do based on current requirements. Continuous refactoring allows developers to solve another well-known problem - black box legacy code that no one wants to touch. For decades engineering culture dictated that you should not change the things that work. The issue, though, is that over time you become a slave to the old code, which grows unstable and incompatible. Refactoring changes that, because instead of the code owning you, you own the code. Refactoring establishes ongoing dialogue between the engineer and the code and leads to ownership, certainty, confidence, and stability in the system.

4. Uses Design Patterns

Ever since the so called Gang of Four published their famous Design Patterns book, world-class engineers have been talking about patterns. Patterns are ubiquitous in our world - both in nature and all human endeavors; software engineering is no exception. Patterns are recurrent scenarios and mechanisms that live across languages and systems. A good engineer always recognizes and leverages patterns, but is not driven by them. Instead of trying to fit the system into a set of patterns, the engineer recognizes opportunities in which to apply patterns. Applying a pattern ensures correctness since it leverages existing know-how: a method for solving a particular engineering problem that has worked before.

5. Writes Tests

Long gone are the days when engineers thought of testing as beneath them. After all, how can you be certain that your code is actually working if you never test it? An agile practice called Unit Testing has recently gained popularity because it focuses on writing tests to mirror the code. As the system grows, the body of tests grows with it, providing proof that the code actually works. Experienced engineers know and understand the value of tests, because their goal is to create a working system. Good engineers will always write a test once a bug has been exposed to make sure it does not come back again. But a good engineer also knows not to waste time writing trivial or redundant tests, instead focusing on testing the essential parts of each component.

6. Leverages Existing Code

Reinventing the wheel has always been one of the biggest problems in the software industry. From inventing new languages to rewriting libraries, the strange drive to ignore and redo what is already there and already works has been the cause of a lot of software failures. A rockstar engineer will focus on three essential kinds of reuse. First of all, the reuse of internal infrastructure, the code that he and his peers have written. Secondly, the use of third party libraries, for example, in Java, the libraries that are part of JDK or popular libraries provided by the Apache Foundation. And finally, a good engineer would look to leverage web-scale web service, like the ones offered by Amazon. Correct leveraging of existing infrastructure allows rockstar engineers to focus on what is most essential - the application itself.

7. Focuses on Usability

Good engineers always focus on the users. Whether the user is a business or an individual, whether the engineer works for a consumer software company or an investment bank, the focus is on working, usable software. How will users interact with the system? Does it provide a simple, intuitive, and smooth experience? The notion that because a software engineer is a techie, he or she thus can not relate to how other people interact with the system is deeply flawed. Good engineers work hard to make the system simple and usable. They think about customers all the time and do not try to invent convoluted stuff that can only be understood and appreciated by geeks.

8. Writes Maintainable Code

The other secret of good engineers is that it takes the same amount of time to write good code as it does to write bad code. A disciplined engineer thinks about the maintainability and evolution of the code from its first line. There is never any reason to write ugly code, a method that spawns multiple pages, or code with cryptic variable names. Rockstars write code which follows naming conventions, code which is compact, simple and not overly clever. Each line of code serves its purpose and resides in the right place. The bits that are difficult to understand are commented, but otherwise naming conventions are clear. Expressive names for methods and variables can make the code self-explanatory.

9. Can Code in Any Language

A good engineer might have a favorite programming language but is never religious about it. There are many great programming languages these days and to say that you only can code in one of them is to demonstrate a lack of versatility. In Java, C#, or C++ you can write any modern software. You can code the back end of any web site in PHP, in Perl, or in Ruby. At the end of the day, the language does not matter as much as the libraries that come with it. A good engineer knows that and is willing and able to learn new languages, new libraries and new ways of building systems.

10. Knows Basic Computer Science

The last, but certainly not the least trait of a great engineer is a solid foundation. A good engineer might not have a degree in computer science but must know the basics - data structures and algorithms. How can you build large scale software without knowing what a hashtable is? Or the difference between a linked list and an array? These are the basics that everyone should know. And the algorithms are just as important - from binary search to different sorts to graph traversals, a rockstar engineer must know and internalize the basics. These foundations are necessary to make the right design decisions when building any modern piece of software.

Conclusion

There are many traits that distinguish great software engineers. Among the ones we discussed, passion is certainly very important. Knowing the basics like code reuse, design patterns, fundamental data structures, and algorithms is necessary, while agile practices of refactoring and unit testing help engineers iteratively evolve complex software. Most importantly, rockstar engineers believe in simplicity and common sense. It is these beliefs that help them succeed in building the seemingly impossible, complex software systems that are necessary in today's world.

Let us know what other traits you think a rockstar software engineer should have, in the comments below.


Thursday, November 25, 2010

220V to 110V - Converter or Transformer?

http://www.laptoptravel.com/Article.aspx?ID=339

Converters and transformers are electric conversion products that enable safe operation of electric devices in foreign countries. Electric devices that are designed for use with 110V systems require foreign 220V current to be "stepped-down." Devices that are designed for use with 220V systems require foreign 110V current to be "stepped-up."
The choice between a converter or a transformer depends on several things.

First, is your device an electric appliance with a high power heating element or mechanical motor such as a hair dryer or iron? If you are using an electric appliance, you need a converter. Or is your device electronic, using electronic chips or circuits, such as a computer, printer or VCR? If you are using an electronic device, you need a transformer. When in doubt about the type of device, use a transformer. Both electric appliances and electronic devices work with a transformer, but only electric appliances work with a converter.

Second, is your use continuous and long-term or is it sporadic and short term? Transformers are designed for long term, continuous use. Converters are designed to operate for only an hour or two at a time.

What's the difference between a converter and a transformer? It lies in how the device converts voltage current. AC power is supplied in alternating bursts that are in a shape called a "sine wave." To reduce 220V to 110V, for example, a converter chops off the sine waves in half whereas a transformer alters the length of the sine waves. This is a critical difference because electronic devices require a full sine wave for operation thus can operate only with a transformer. Electric appliances function with either a full or a half sine wave so can be operated with either a converter or a transformer.

The converter's short-term use and "chopping" off of sine waves are relatively simple and compact functions. The transformer's continuous use and alteration of sine waves are relatively sophisticated functions and require more space. As a result, transformers are generally larger, heavier and much more expensive than converters. Thus if you are going to travel with an electronic device you should purchase one that is dual voltage if it is available.

Most converters and transformers that are available to the consumer do not alter or convert the "cycles," shown as "Hz" on most devices. Although cycle differences may not cause a problem with many devices, they do with some. See our Cycles / Hz Tech Note for further explanation.

Rainmeter is a fully customizable resource monitor for Windows


Rainmeter is a fully customizable resource monitor that allows you to monitor vital system information including memory usage, disk usage and utilization, network traffic, uptime and many other details. You can also choose to monitor weather conditions, RSS feeds, Twitter activity, Gmail and various other online resources. Rainmeter is highly customizable and can be configured to display as much or as little information as you want, however it requires you to tinker with .ini files and tons of individual settings, so it may not be for everyone.

What is Rainmeter?

Rainmeter is an application which will allow you to place what are called "Skins" on your desktop. These skins can measure and display a wide variety of information. Some examples of things you can display are:

  • System Information - CPU, RAM, Network, Drive Space, you name it...
  • Launchers and Docks - Be creative and create your own RocketDock or launcher
  • Music and more - Interfaces for WinAmp, iTunes, and more
  • Web-based content - Weather, GMail inbox, RSS feeds. Just about anything you can parse from the web

Skins are fully customizable by you. They are primarily just .ini text files with simple commands that say "Measure this, and display it here looking like this". We will get into customizing skins more later, but you can use all your creativity and very simple Rainmeter statements to really make your desktop your own!

What isn't Rainmeter?

  • Rainmeter is not WindowBlinds(tm). It does not have any ability to change in any way your Start Menu, Taskbar, Notification Area (artist formerly known as System Tray) or any other Windows elements.
  • Rainmeter does not manage your Desktop Background (Wallpaper). All those cool skins you see on DeviantArt or Customize.org may or may not come with the displayed wallpaper in the download, but in any case it is up to you to load them with the normal Windows routines. Rainmeter is not Display Fusion.

Installing

Download the latest release or beta version from Rainmeter.net. You may download and run the installer (.exe) version or manually install with the "portable" (.zip) version.

Rainmeter is fully Windows Vista / Windows 7 compatible. The file which Rainmeter uses to keep track of the skins you have loaded and how they are configured (Rainmeter.ini) is now in your "Application Data" folder, and all Rainmeter "skins" are stored in your "My Documents" folder. This means that you do not have to run Rainmeter as an "Administrator" or worry about conflicts with UAC (User Account Control).

Rainmeter automatically installs the suite of skins "Enigma" by Kaelri as well as the "RainBrowser" skin manager and "RainThemes" themes manager by JSMorley.

Default file locations:

The Program:
Windows XP: C:\Program Files\Rainmeter
Windows Vista & Win7: C:\Program Files\Rainmeter

Your "Skin" files
Windows XP: C:\Documents and Settings\YourName\My Documents\Rainmeter\Skins
Windows Vista & Win7: C:\Users\YourName\My Documents\Rainmeter\Skins

Rainmeter.ini and your "Themes"
Windows XP: C:\Documents and Settings\YourName\Application Data\Rainmeter
Windows Vista & Win7: C:\Users\YourName\Appdata\Roaming\Rainmeter

More information on installing Rainmeter is available in the Rainmeter Manual at Rainmeter Installation

Rainmeter Terminology - An Overview

Let's talk a bit about how the terminology for the various components of Rainmeter should be referred to. Truth be known, there is no one perfect way, as different folks using Rainmeter for any length of time have evolved their own ways of referring to things, and there is no "set in concrete glossary" for Rainmeter. However it does help, especially when asking for help on the forums, to have a common understanding of what things mean.

The organization is defined by these somewhat hierarchical terms:

->Suite
-->Config
--->Skin
---->Variant

Suite
A set of configs, normally in a single folder and many subfolders under \Skins, which have a single author and a common theme or style.

Config
A folder, which may or may not have subfolders, under \Skins which contains one or more skins.

The only real difference between a "suite" and a "config" is that normally a suite is by one author, has a common style, and may include shared variables or even a tool to help user set attributes common to all the skins in the suite. A config is a folder of skins. It's how Rainmeter organizes things on the context menu.

Skin
The contents of a single folder, which has one or more .ini "skin" files. For all practical purposes, when you say "skin" you generally mean "a .ini file".

Variant
As only one .ini file per folder can be loaded by Rainmeter at a time, a folder containing two or more .ini files is considered one "skin", with some number of "variants". An example is a clock config folder with "Clock12Hr.ini" and "Clock24hr.ini" where loading one unloads the other automatically.

What about Themes?
"Themes" are not a part of the Rainmeter application proper, but are a term used by the addon application RainThemes, which is installed as a part of the Rainmeter installation. What RainThemes does is allow you to save your current Rainmeter setup; the skins, their locations and settings, and even your current wallpaper, in a text file (really just a copy of Rainmeter.ini) which can be loaded if you want to get back to a particular setup on your system. A "Theme" does not actually contain the skins or in fact any files at all, it is just a way to tell your copy of Rainmeter to put things back to a saved state.

Saturday, November 20, 2010

The Top 10 Free Zen Cart Modules

http://www.numinix.com/blog/2010/10/23/the-top-10-free-zen-cart-modules/

Oct 23,2010
BY NUMINIX » click here for full post

If you are new to the world of Zen Cart or just looking for ways to improve your website as cheaply as possible, there are a number of free modules that will greatly improve performance, conversions, and customer satisfaction from the default Zen Cart platform.

This top 10 list is in no way an exhaustive list and is based solely on my experience as a web developer of Zen Cart websites and modules.  It should be noted that every Zen Cart store is different and therefore has different needs.  Therefore, this list is focusing on general modules that most stores will find useful.

And so the list begins:

1. Google Base Feeder

Author: Numinix
Download
http://www.numinix.com/zen-cart-modules/marketing/google-base-feeder
What does this module do?

It automatically creates a feed of all of your products and submits them to Google Product Search where customers can find the products and go to your website to complete the purchase.
Why is this one of the best mods?

FREE HIGHLY RELEVANT TRAFFIC!  This is the next best thing to regular organic traffic as it sends potential customers directly from Google search results to the product they are looking to buy.  Best of all, once you set up the module and configure a cron job to automatically create the feed, you can set Google to automatically crawl the feed on a set interval.  In other words, once you set this up, it just keeps on generating free relevant traffic day after day.  Every store should be using this module from day one of launching their store.

2. Recover Cart Sales

Author: Various
Downloadhttp://www.zen-cart.com/index.php?main_page=product_contrib_info&products_id=100
What does this module do?

It creates an admin page where you can see all of the customer accounts that have items in their cart but have not yet completed a purchase. The admin can then select each of the customer's and send them a follow up email to find out why the customer did not complete the purchase and possibly complete the sale.  It includes a nice little report so that you can review all of the abandoned shopping carts that were successfully recovered.
Why is this one of the best mods?

This module plays a number of very vital roles.  Firstly, it let's you know how many customers are completing the registration process but not completing the checkout.  A high number of abandoned carts relative to your websites traffic could point to another problem than just a customer changing their mind.  Which brings us to the second reason this module is so vital, it allows you to gain valuable feedback from customers who didn't complete their order.  If they respond to the recover cart email they may provide valuable information for fixing problems on your website or improving the customer experience on your website.  And of course, the most obvious advantage of this module is that it can help you retain sales that you normally would have lost.  I recommend including a coupon code with the email as it will increase the likelihood that the customer will return or respond with feedback.

3. Mailbeez Aftersale Email Module

Author: MailBeez
Downloadhttp://www.mailbeez.com/
What does this module do?

It creates a framework that executes a daily cron job to send out emails automatically to customers who have previously completed a purchase.  It supports many sub-modules including the Winback Customer Reactivation module that automatically sends an email to customers after X number of days since their last purchase.
Why is this one of the best mods?

It allows you to stay in constant contact with your customers.  Every customer who orders will be sent an email after a pre-defined time has passed since their order.  For example, you could set the module to send the customer a come back offer and with a coupon code 60 days after their last purchase.  I've seen this email marketing system on major ecommerce websites and it is very effective.

4. Sitemaps XML

Author: Andrew Berezin
Downloadhttp://www.zen-cart.com/index.php?main_page=product_contrib_info&products_id=544
What does this module do?

It creates an XML sitemap for easy indexing by search engines and automatically pings the major search engines (Google, Yahoo!, MSN, Live, and Ask) to let them know an updated version of the sitemap is ready for download.  The module runs on a daily cron job so that you never have to worry about it once you set it up.  The sitemap includes products, categories, EZ pages, reviews, and testimonials.
Why is this one of the best mods?

This is really a no brainer.  Anything that helps search engines better index your website is a good thing.  The fact this module runs on its own makes it even better.  Make sure to add sitemapindex.xml to your robots.txt file so that all of the other search engines will easily find the site maps when they are crawling your website.

5. Simple Google Analytics

Author: Econcepts
Downloadhttp://www.zencartoptimization.com/downloads/
What does this module do?

It adds the Google Analytics tracking code quickly and easily to your Zen Cart store so that data can be collected and reviewed in Google Analytics.  If you don't know what Google Analytics is, you have been missing out on one of the most important tools in web development.  Learn more about Google Analytics from Google.
Why is this one of the best mods?

Knowing how your Zen Cart store is performing page by page, customer to customer, day to day, month to month, ok you get the point.  This module connects you to Google Analytics where you can analyze all of the important data you need to make important business and marketing decisions.  Are you spending too much on a banner advertisement compared to the sales generated?  What is your top performing landing page?  Are people having problems on a certain page in your checkout process?  What is your conversion rate?  These are the simple questions that Google Analytics can answer quickly and accurately.

6. Fast and Easy Checkout

Author: Numinix
Downloadhttp://www.numinix.com/zen-cart-modules/checkout/fast-and-easy-checkout-for-zen-cart
What does this module do?

Our most popular contribution to Zen Cart revamps the simple checkout system built into Zen Cart by combining multiple pages into a single checkout page.  This mod uses JavaScript to reload the page when the customer makes selections to shipping, uses a coupon code, etc. and displays the updated order total on the refreshed screen.  It also has a one page checkout feature where the confirmation screen is skipped and the payment is processed.
Why is this one of the best mods?

Simplifying the checkout for the customer by reducing the number of clicks and pages increases the likelihood that the customer will complete their purchase.  This module comes with many other features like changing/adding an address from right within the checkout, a checkout without account option, and the ability to accept an alternate shipping address during the registration process.  All of these features were created with the goal of increasing conversion rates, and that's exactly what this module achieves.

7. CSS JS Loader

Author: Rubik Integration
Downloadhttp://blog.rubikintegration.com/2009/08/08/zencart-css-javascript-loader-released/
What does this module do?

This module adds the ability to load stylesheets and JavaScript files based on rules, in a defined order, and on specific pages without having to copy the file into each individual Zen Cart page folder.   The mod also includes a minify option for compressing scripts and stylesheets.
Why is this one of the best mods?

Zen Cart mods that use this system for loading files benefit from better control and less duplicate loading of files. Combine this with the minify option and you will drastically decrease the number of objects that are downloaded on each page of the store. This means that pages load faster for the customer and there is less load on the server to serve multiple CSS and JavaScript files as it serves these files in a single "minified" file.  This is a great optimization tool that every website should be using.

8. Simple SEO URLs

Author: Rubik Integration
Downloadhttp://simple-seo-url.com/
What does this module do?

This is a search engine friendly URL rewriter.  It takes the default PHP URLs and rewrites them using product, category, and page names.
Why is this one of the best mods?

Rewriting URLs using words instead of parameters and numbers increases keyword density for search engines, thus the reason they are called SEO URLs, and also makes URLs easier to read and remember by non-robot visitors like you and me.  The great thing about this module compared to other options is that this module is free and open source.  You can drop this mod into your website at any time and not worry about losing backlinks to your website because all of the PHP URLs will automatically forward to the new SEF URLs.

9. Image Handler 2

Author: Various
Downloadhttp://www.zen-cart.com/index.php?main_page=product_contrib_info&products_id=117
What does this module do?

It resizes and compresses images on the fly and then caches the created images for quick retrieval.
Why is this one of the best mods?

This mod will not only drastically decrease the load on your server for serving images, it will also take away the tedious work of creating each size image and optimizing the image quality.  Adding additional images to your products is also easy through the admin interface.  Configure the module to use Image Magick for the best quality and compression.

10. Store Credit and Reward Points

Author: Numinix and Rubik Integration
Downloadhttp://www.numinix.com/zen-cart-modules/taxes-order-totals/store-credit-and-rewards-points
What does this module do?

This module is a rewrite of the original Store Credit module with an optional reward points feature.  Store owners can give customers store credit to be used during the checkout against purchases just like cash.  Reward points can be awarded on eligible purchases and credited to the customer's store credit account.  Store owners can set different ratios for rewards based on category and even restrict rewards from being used or collected in specific categories.  For an order to be eligible for reward points, the store owner can set rules such as a specific order status that must be met (i.e. Delivered) and a timeframe that must pass before the order is eligible (i.e. 30 days or your return policy).  Orders that are cancelled or removed are automatically removed from the pending rewards or debited from the customer's store credit account.  This module works best on ZC 1.3.9 where bugs to the PayPal payment modules have been corrected.
Why is this one of the best mods?

Not only does this module offer store owners an alternative refund method, it also gives customers incentives for continuing to shop in your store and collect reward points.  Best of all, once you setup the reward points system and set it on a cron job for awarding the store credit, the module will run automatically in the background of your website!

And those are our top ten picks for free modules for Zen Cart that any store type can use. If you'd like to add to this list, please comment below and I will even consider extending the list to the top 20 Zen Cart modules.  Be sure to include how you use the module and your reasoning for why all stores should be using it.  Thanks for reading.

Thursday, November 18, 2010

魅族M9手机发布传闻

http://www.williamlong.info/blog/archives/607.html
-月光微博客

  今日有报道称"魅族M9确认在12月25日之间上市 售价2499元",该报道称这是"内部人士人士"的消息。然而之后有2有报道称魅族官方辟谣:并没有明确表示12月25日M9正式上市,三里屯首发的事情,也是不实之说。据估计这可能是部分商家的炒作行为。

  魅族M9的参数是:支持WCDMA制式,搭载Android2.2系统,支持多点触控,内置1GHz三星处理器,500万像素摄像头,支持高清视频播放,蓝牙、GPS导航、 HDMI接口、Micro-SDHC存储卡、WiFi等功能。

  从这部手机的硬件参数看,还算是不错,不过这种又是发布又是辟谣的炒作实在是无聊,我估计是官方先放一个消息,然后又出来否认,这真是一种非常低级的营销手段。

Wednesday, November 17, 2010

IE’s Disappearing, Reappearing, Broken Borders

http://hi.baidu.com/yaoyingying/blog/item/5d8b33c770345fd5d1006033.html
_蒹葭人生_百度空间

(I just added a style to the allborder div:

style="height:100%;" , HL 20101117)

What do you do when an element's border is broken in Internet Explorer? Where half of it is there, but half of it is not; where refreshing the page might clear it up, but might not; where highlighting text inside the element might also clear it up, but then again, might not…

There's a documented bug in IE 6 called the peakaboo bug – read about that here – but I've experienced this problem in IE 7 as well.

The Problem

What I've experienced is that IE will render a page (that appeared beautifully in Mozilla browsers) with some element's border broken. IE would display only parts of the border, a little here and a little there. And if I highlighted text within that content block, it would join up all of the broken border lines so that the entire border was displayed. The image to the left highlights the right-side border of the element block; that border shouldn't be patchy.

Screenshot of broken bordersThe blurred text is part of a site map – a horizontal rule marks the sections and the entire content area has a light gray border. As you can see, the broken borders in IE only appear in positions vertically even with the content of each section of the site map. Each of those sections is a group of left-floated <ul> elements – it's a big site map!

So I suspected the problem occurred somewhere in those floats, but didn't know why.

The Solution

The root of the problem is whether or not an element "has layout." Now, "layout" is a completely made-up, IE-specific attribute not attended to in any manner by the other browsers. It's bunk. But it provides the solution to the broken borders issue. (You can read more on hasLayout here if you'd like.)

To enforce proper border behavior in IE, the floated elements need to "have layout." If validation doesn't matter, the quickest solution may be to add "zoom:1″ to the element. If validation does matter, you can give an element layout by setting "position:absolute" or assigning the "height" or "width" attributes something other than auto.

What's worked for me? Find the element that is actually causing the rendering problem by experimenting with adding a "zoom:1″ style to different elements – start with the element with the broken border, sure, but if that doesn't work try assigning "zoom:1″ to some of its child elements or neighboring elements. Once you've located the element that needs layout, you can replace "zoom:1″ with a specific height or width value – then the problem is solved and your CSS validates.

Tuesday, November 16, 2010

Holiday shoppers spending more online than in-store

http://www.bizreport.com/2010/11/holiday-shoppers-spending-more-online-than-in-store.html#
- Ecommerce - BizReport

The latest Compete Holiday Insights survey shows that in recent weeks more money was spent online by holiday shoppers than in-store.

by Helen Leggatt

As of Sunday, November 7, almost two-thirds (61%) of respondents to Compete's survey had begun their holiday shopping and 14% had made more than half of their intended purchases.

Many are going online to do their holiday shopping and, for thefirst time since the beginning of October, more money was spent on holiday items online than in-store.

On average, in the week to November 7, consumers spent $185 online, up 30% from 2 weeks prior, whereas offline spend averaged $175, down 32% from 2 weeks prior.

While increased shopping across all product categories was apparent, the largest increases were in clothing and shoes, toys and games, and movies and video Games.

Other recent data from Compete shows holiday shoppers are turning to the Internet for upcoming Black Friday deals. While traffic to Black Friday websites has already exceeded 2008 levels, there is some way to go before it tips those of 2009.

Tags: e-commerce, holiday shoppers, online shopping

Monday, November 15, 2010

Google Product Search Boosts Local Shopping Vs. Amazon

http://www.eweek.com/c/a/Search-Engines/Google-Product-Search-Boosts-Local-Shopping-Vs-Amazon-722366/
By: Clint Boulton
2010-11-15

Google Nov. 15 refreshed its Google Product Search service, Google Shopper App, and added popular products and aisle tabs in time for Black Friday.

Google Nov. 15 unveiled an improved Google Product Search service, partnering with retail giants such as Best Buy and Williams-Sonoma to surface goods for online shoppers who are nearby.

The search engine partnered with more than 70 retailers and software makers such as Oracle, JDA and Epicor to index inventory of local Best Buys and other outlets. The software makers provide special adapters to funnel retailers' inventory data to Google Product Search.

For example, consumers searching Google Product Search for products can click the "nearby stores" link to see where it's in stock at participating stores near their location. Then they can purchase it online, or drive to that store to size up the product to better decide if they want to buy it.

The idea is to save shoppers time from calling or driving to stores to check product availability, a boon as the holiday season prepares for the Black Friday shopping dirge Nov. 26.

While searchers can't buy the goods from Google.com they way they can go to Amazon.com and buy products directly from that e-commerce Website, they can get a better handle on what local shops have in store. Amazon.com doesn't help with the local shopping experience in this manner.

Google offers an example of a Canon camera in this blog post here, while Search Engine Land features a detailed run-through here.

Google also extended this product search capability to the mobile phone with Google Shopper, which helps shoppers driving around comparison-shop for merchandise with their Android phones and find the best place to buy them online or in a store nearby.

People use Shopper by calling up the app on their Android phone and pointing their phone's camera at books, CDs, DVDs, and video games, along with most barcodes to get search results about those items on Google.

The new Google Shopper 1.3 app employs new search filters such as "price" and "brand" to help users refine their search, accompanying the existing local availability, voice search and barcode scanning capabilities to get product info online.

Finally, Google said it aped brick and mortar stores with two new features called "popular products" and "aisles" to help people discover new products and get details about them.

A user searching for "camera lenses," on Google Product Search will surface the lenses other people are finding online. "Aisles" helps users check out products by organizing results into sub-categories others have found helpful.

"For example, if you're looking for a new TV, you can choose between display types like LCD and plasma. If you're interested in camera lenses for that brand new SLR, you can shop by the aperture of the lens," said Sameer Samat, director of product management for Google Product Search.

Google's Product Search upgrades come nearly three months after the search engine purchased visual search engine Like.com, which helps people match clothes and other apparel online and purchase them from retailers.


Saturday, November 13, 2010

Change Default Boot Order for Grub 2 in Ubuntu 9.10 or 10.04 Lucid

http://www.hackourlives.com/change-default-boot-order-ubuntu-10-04-lucid/

With Grub 2 you can no longer edit grub.conf or menu.lst files located in /boot/grub folder. The file to be edited is now "grub" located in /etc/default/ folder, you can edit it by running the following command from terminal (sudo gedit /etc/default/grub). The contents would look like this:

If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic cardsupports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640×480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

To change the default boot option, you just need to change the GRUB_DEFAULTparameter. 0 is the first entry, so if you want windows to be your default boot option which is, say at, 6th position in the grub menu, then you just need to change the GRUB_DEFAULT value to 5 and save the file and close it.  If you want to change the Auto Boot preset time then you would need to change the value of GRUB_TIMEOUT parameter, it should be assigned a value in seconds and would determine the delay in seconds before grub boots the default choice, automatically. Now from the terminal run following command and your grub default boot order would be changed when you boot the next time:

 sudo update-grub

Featured Post

Windows和Ubuntu双系统完全独立的安装方法

http://www.ubuntuhome.com/windows-and-ubuntu-install.html  | Ubuntu Home Posted by Snow on 2012/06/25 安装Windows和Ubuntu双系统时,很多人喜欢先安装windows,然...