Thursday, May 15, 2014

TOOLS

Last week I visited the Computer Science Museum in Mountain View. I was surprised by the machines that were invited many years ago. So I am curious how these people can make it and I found that taking good advantage of the tools is the one of the most important reasons.


We must first sharpen our tools before we are going to start. A good tool to make the work more efficiently. Taking full advantage of tools is what I want to do in my study. For example, if I have a program to implement. At first, I have to design all classes in the program and figure out the relationship between them. So I will use a tool to draw the Class diagram and Use Case. After that, I can use a tool like UMLStar to draw the sequence diagram. The goal of doing these is to make me clear about the program before I start the code part. Then I implement the program by using the Eclipse. In one word, I can't do noting without tools.

I discovered some tools this semester like IntelliJ IDEA, Criterion, SWL, SWL-Prolog and UMLStar. IntelliJ IDEA is a Java IDE by JetBrains, available as an Apache 2 Licensed community edition and commercial edition.[1] Criterion is a essay writing evaluation tool. SWL is a Scheme IDE. SWL-Prolog is for Prolog programming.

My favorite tool is Eclipse, because it is very convenient to write code. There are some features that I often use. Formatting: ctrl+shift+f. Format source file (set up your formatting style in Window | preferences | java | code style | formatter). ctrl+shift+o: Organise imports. Generated code
alt+s,r to generate getters and setters and alt+s,v to insert method signatures for overidden methods from superclass or interface.[2] The tool I like least is SWL. SWL is a very clear IDE without any good user interface. Sometimes I feel boring when I use it.

Tools are changing very fast. They are becoming smarter than we can imagine, also the tools look more beautiful than before. There is no doubt that development of tools is very important to the industry. A good tool can save a lot of time for the developers and therefore the developers can spend more time to think about how to make the program better instead of figure out how to implement the programs. As a result, the IT industry will develop faster and faster. In this way, more and more people will begin study in CS area and enter the IT industry. So it is a cycle that can make a more stable and sustainable development model.

References:
[1] Wikipedia,
http://en.wikipedia.org/wiki/IntelliJ_IDEA
[2] Stackoverflow.com
http://stackoverflow.com/questions/20529/useful-eclipse-features

Tuesday, May 13, 2014

Abstract Class In Java

We often see the word "abstract" when we are reading the code. The reader often has a question that what this word is. So I will give a simple example to explain how the abstract works.

There is a interface named SceneShape(see Figure 1):

public interface SceneShape
{
      void setSelected(boolean b);
      boolean isSelected();
      void draw(Graphics2D g2);
      void drawSelection(Graphics2D g2);
      void translate(int dx, int dy);
      boolean contains(Point2D aPoint);
}


                                        Figure 1. The Scene Editor 

                                        Figure 2. A CRC Card

Then define  classes CarShape and HouseShape that implement this interface type. However, there is some commonality between these classes. Every shape needs to keep a selection flag.[1] The naive approach would be to supply the selection flag separately in each class:

public class HouseShape implements SceneShape
{
     ... ...
      public void setSelected(boolean b) { selected = b; }
      public boolean isSelected() { return selected; }
      private boolean selected;
}

public class CarShape implements SceneShape
{
      ... ...
      public void setSelected(boolean b) { selected = b; }
      public boolean isSelected() { return selected; }
      private boolean selected;
}

If we create a class that expresses this commonality and we call this class SelectableShape.

public class SelectableShape implements SceneShape
{
      public void setSelected(boolean b) { selected = b; }
      public boolean isSelected() { return selected };
      private boolean selected;
}

As we can see, there is a problem with the SelectableShape class. It doesn't define all of the methods of the SceneShape interface type. There are four methods left in this class. So we can say that these methods are undefined or abstract in the SelectableShape class. It is the job of further subclasses to define them.[2] For that reason, the SelectableShape class must be tagged as abstract:

public abstract class SelectableShape implements SceneShape { ... ... }

Abstract classes are convenient placeholders for factoring out common behavior. They behave exactly same as any other classes. I am often scared about abstract classes, equating "abstract" with "hard to understand", and then believing that any class that is hard to understand should therefore be abstract. After using the abstract class many times, I find that abstract class is simply a class that cannot be instantiated, generally because its has unimplemented methods.


References:
[1] San Jose State University, Suneuy Kim,
http://cs.sjsu.edu/~kim/cs151/index.html
[2] San Jose State University, Cay Horstmann,
http://www.sjsu.edu/people/cay.horstmann/


Sunday, April 20, 2014

Beta Testing vs. Alpha Testing


Beta Testing is a test for a computer product prior to commerial release. Beta testing is the last stage of testing, and normally can involve sending the product to beta tests outside the company for real-world exposure. So I am going to compare the Beta Testing to the Alpha Testing to help to understand the Beta Testing.[1]

1. What they do
Beta Testing is to improve the quality of the product, integrate customer input on the complete product, and ensure release readiness. Alpha Testing has the similar role with Beta Testing  in this aspect.

2. When they happen
Beta Testing is just prior to launch, sometimes ending within weeks of even days of final release. However, Alpha Testing is towarding the end of a development process when the product is in a near fully-usable state.

3. How long they last
Beta Testing usually takes only a few weeks(sometimes up to a couple of months) with few major iterations.

4. Who will test
In the Beta Testing, tests are in the “real world” with “real customers” and the feedback can cover all the elements of the final product. In the Alpha Testing, it is usually performed by test engineers and employees.

5. What the tester can expect
The testers will expect some bugs, fewer crashes and most docs in the Beta Testing, but the testers will expect plenty of bugs, crashes and missing docs in the Alpha Testing.

6. What the they achieve
The Beta Testing is about chaos, reality and imagination. It explores the limits of a product by allowing customers to explore every element of the product in their native environments. But the Alpha Testing is about methodology, efficiency and regiment.

Screen Shot 2014-04-20 at 4.57.48 PM.png


7. When they are over
When the testers have a good idea of what your customer thinks about the product, the Beta Testing can be over. On the other hand, when the testers have a decent idea of how a product performs and whether it meets the design requirements.


Reference
[1] http://www.webopedia.com/TERM/B/beta_test.html

[2]"Beta Tester Salary in United States." Job Search. Indeed, 07 May 2014. Web. 07 May 2014. The Game Mistress. "The Importance of Beta Testing." The Importance of Beta Testing |          GameMistress. GameMistress, 19 Aug. 2012. Web. 07 May 2014.

Saturday, April 12, 2014

Cross-Cultural Usability Testing

The concept of Cross-Cultural Usability Testing now becomes very popular in the usability domain as the global trade and international competition are booming every year. As a key process in the whole product development process, more and more usability experts realize culture effects also should be carefully considered in the design of usability testing process. It is not said that the design of usability testing process must be culture oriented, but can’t be culture ignored.

屏幕快照 2014-04-12 下午5.53.18.png

Nowadays, cultures could not be singly divided to western cultures and eastern cultures. Each country has its own unique culture. Even in Europe, there are no two countries which have exactly the same cultures. And a country itself possibly has different cultures like U.S.

Each culture has its own unique characteristics, if a usability testing activities will be conducted cross different cultures, the following effect factors must be considered.

Testing Methods: it is hard to say which testing method is particularly better for which culture, but it should be careful to apply the methods and adjust them dynamically in different cultures to get the best results. A research specially on testing methods with different cultures now is ongoing.

Localization: localization of the prototype product and the testing process itself is very important. It should beyond direct translation. A bad localization will lead to more usability problems and will cover the potential more serious usability problems. It is not expected a bad designed usability testing process could detect more usability problems of the product.


Moderator &Local Institute: a native moderator is always better to conduct the testing process, to avoid potential communication caps between each others. When conducting a usability testing or evaluation in another country, finding a local institute to cooperate possibly will be very helpful and more efficient. Also the local institute will help to arrange the organizations like recruiting, equipments, testing room (usability lab), etc.


One Country is not One Culture: be careful that even one country, there are potential different cultures. When conducting a usability testing in multi-culture society, more details should be considered.

Proper usability testing methods will be the key issue of a successful cross cultural usability activity, and further research will focus on the usability methods in different culture contexts.

References:

[1] Torkil Clemmensen, Department of IT Management,
[2] Lynda.com. “UX tutorial: What is usability testing? | lynda.com.” Online Video clip. Youtube. Youtube, 26 June. 2013. Web. 13 April. 2014

Tuesday, March 25, 2014

Some popular blogs in China



With the blogs becoming popular, the internet content is more and more provided by internet users rather than the internet service provider. Blog concept was first proposed in 1997 by the Jorn Barger, the term was used as “Weblog”. In 2002, the government promoted to use blogs, and the first time the “blog” named “buluoge”.


Development of the blog content


At the beginning, the content was main based on text. Thanks to development of IT products like digital cameras and the digital electronic products, therefore, nowadays most of the contents in blogs indulgence text, photo, multimedia, etc. Also because of blogs, the mutimedia is more and more popular in the web service. For example, the Flickr that was tookover by the Yahoo. It provides “Tag”, “Commment”, “Description” and “Geotagging” functons. The blogs are more lively and interactive than ever before, and the contents are more abundant than before.


Some popular blogs in China




This site was first fortune in the Department of Information Engineering, Jiaotong University, is the earliest the BBS, Blog and website album together; due to the early launch stations in BBS station hung 720 hours to get free web space Therefore, when introduced, namely to attract quite a lot of user registration and use.




This site is also a fortune in the early Jiaotong University, then consider commercial issues, so will move under the commercial Internet service and began charging in foreign service; After working for some time, in March 2007 the Group introduced Polis funds become following Wretch, was acquired another site.


3. blog.yam.com


This site was first (now acquired by Sky Media) by Yam Yam's Lotto log and then digital network (ie Sky Media's predecessor) sky tribes merged. Provide text, pictures and video on the Web site, users can integrate their resources on the Blog.


References:

[1] CSDN, Dazhi Zhang, 4/14/2013,
http://blog.csdn.net/jobchanceleo
[2] blog.yam.com
[3] www.pixnet.net

Sunday, March 16, 2014

The QR Code

0252056430.png

scan it to enter my LinkedIn profie



Nowadays we can see QR code everywhere. We scan the icon with our phones and get a lot of information immediately. I will talk about the classification about the QR code.


The QR code can be divided into Stacked code and Matrix code. The Stacked code consists of a multi-line stub stacked with one-dimensional bar code. The Matrix code has a matrix composed of the elements in the matrix corresponding position with the " point " represents a binary " 1 ", with " null " means a binary " 0 ".

屏幕快照 2014-03-16 下午12.00.11.png

1. Stacked QR code


Its coding theory is built on the basis of a one-dimensional codes, and it can be stacked in two or more rows as needed. It inherits some features of one-dimensional code in the code design, verification principle, reading methods, and bar code reading device is compatible with the one-dimensional bar code technology. However, due to the increased number of lines, the line needs to be verified, and its decoding algorithm and software is not exactly the same in the one-dimensional bar code. There are some representative line row-dimensional bar codes, like Code 16K, Code 49 and PDF417, etc.


2. Matrix QR code


It is in a rectangular space that is encoded by a black and white pixels in the matrix of different distributions. The corresponding element position in the matrix, with the point, square dots, or other shapes appears to represent a binary “ 1 ”, the point does not appear to represent a binary “ 0 ”, and the permutations and combinations of the point have the meanings. To sum up, Matrix QR code is based on computer image processing technology, such as coding theory. There are some representative matrix bar codes, like Code One, Maxi Code, OR code and Data Matrix, etc.


References:
[1] Quickmark.com, how to make a qr code.
http://www.quickmark.com.tw/Cht/qrcode-datamatrix-generator/default.asp?qrLink
[2] Different kinds of the QR codes.
https://www.unitag.io/qrcode/what-are-the-different-types-of-qrcodes

Sunday, March 9, 2014

THE CYBER SECURITY


屏幕快照 2014-03-09 下午4.39.03.png




1. What is the meaning of cyber security?





 Due to the network transmission protocol and computer operating system itself has its drawbacks and loopholes, in addition, the cyber is more concealed than the realistic society, so it is hard to identify the user’s identity.




3. Ways to endanger the cyber security



4. The strategies to protect the cyber security

 4.1 Improve the cyber users security awareness. The users should update their password regularly.

 4.2 Use anti-virus tools: Always install genuine software and anti-spyware program. Scan and update the user system regularly.

 4.3 The cyber access control: set up the network access. Prevent illegal users to access the database.



5. The end



http://www.umuc.edu/cybersecurity/about/cybersecurity-basics.cfm
[2] Mercurynews.com,
http://www.mercurynews.com/circare/html/gsa_template.jsp?sortBy=mngi&similarTo=&similarType=find&type=any&aff=3&view=entiresitesppublished&query=target+&searchbutton=Go

Sunday, March 2, 2014

Open Source Software: the most popular Android open source programs



Generally, open source refers to a computer program in which the source code is available to the general public for use and/or modification from its original design. For developers, it is very important to leran about the most popular open source programs. Taking advantage of these source will let developers achieve twice the results with half the effort. As we all know GitHub is a web-based hosting service for software development projects that use the Gitrevision control system.Therefore, I will list some of the most popular Android or iOS open source project.[1]
屏幕快照 2014-03-02 下午6.34.26.png


1. ActionBarSherlock


ActionBarSherlock is one of the most popular open source program. It is a separate library and through an API and themes, the developers can use all versions of the bar design patterns easily.

51834aa93d58b.jpg




2. facebook-android-sdk


Facebook SDK for Android is an open source library. The developers can integrate Facebook to develop Android applications.



3. SlidingMenu (SlidingMenu Demos)


SlidingMenu is an open source Android library that allows developers to develop a application very easily, like the very popular silding menu in the  Google+ and Facebook.
51834b370ff1b.jpg51834b4112992.jpg51834b4112992.jpg


4. Cocos2D-X


In the mobile development area, many mainstream Android/iOS game development companies use Cocos2D-X. Cocos2D-X is an open source game framework that support multiple platforms. It is implemented by C++ and based on cocos2d-iphone, released under the MIT license.



The above are the part of the most popular open source programs. Learn about them and put them in the app development whenever you want.

References:
[1] Wikipedia, Open source,
http://en.wikipedia.org/wiki/Open_source
[2] Github.com
https://github.com/jfeinstein10/SlidingMenu

Tuesday, February 25, 2014

LinkedIn Summary

  I am a graduate student in computer science major who is looking for a internship in a company where I can practice my programming knowledge and improve problem solving abilities. If you are considering someone for a position who is learning fast and thinking smart, I am confident that what I can do  will meet your requirements.

    My greatest strengths are integrating theory with practice. As a computer science student, I have been learning more than one programming languages and mastering many algorithms to solve the problem in the class assignment. However, I am sure I will face situations that I am asked to work separately or several programming projects in short time. This requires me to make a quick decision about what specific technic I should use for each step in the program. Furthermore, when I get a task, I use my strategy to divide the task into several specific steps. Like working in a scrum, I will complete each step as soon as possible. 

     In addition to this, I have specific technical skills in Java programming, object oriented programing in C++, JavaScript and data structures. I have a 4 month work experience at Tarena as a test engineer before my graduate study. I have gained a lot experience in working as a team and completing tasks in a short of span of time. It also helped me to be a detail-oriented person and develop vary skills in communicating with other peers.

     I believe that  fast learning and combining what you have learned in practice will help a lot in the future. Now I am open to any internship opportunities in the software industry and I look forward to getting some professional experience.

Specialties: Java, SQL, Unix, HTML, JavaScript.