Fetch Art 1 2 for Mac OS X 10 4 Tiger Released by yours truly

Jumat, 28 Februari 2014

0 komentar
Just a quick note, that Ive taken over development of the excellent Fetch Art application by Yoel Inbar. I finally got a version working 100% with Mac OS X 10.4.

Its available on my website here: http://www.aric.org/fetchart/
Read More..

Speed Up Windows XP Vista 7

Kamis, 27 Februari 2014

0 komentar
To increase speed of computer, do change the settings, operating system windows. Here is a setting that must be done:
1. Disable the Sound Scheme (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7. How, press START - Control Panel - Sounds and Audio Devices - Sounds - Sound scheme - No Sounds - Apply - OK.
Sound Scheme
2. Time to display startup and recovery (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7. How, press START - Control Panel - System - Advanced - Startup and Recovery - Settings - System startup
  • Time to display list of operating systems            = 30 seconds, changed to = 1 seconds
  • Time to display recovery options when needed = 30 seconds, changed to = 5 seconds
Time to display startup and recovery
3. Performance Options (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7. How, press START - Control Panel - System - Advanced - Performance - Settings - Visual Effects - Let windows choose whats best for my computer, changed to - Adjust for best performance - Apply - OK
Performance Options
For Win XP
START - Control Panel - Display - Appearance - Windows and buttons - from Windows Classic style - changed to Windows XP style - Apply. Then, click Effects - remove all check - OK - OK.
Windows XP style
For Win 7
Right click on desktop - Personalization - select themes
Aero themes
4. Delete all Scheduled Tasks (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7. How, press START - Control Panel - Scheduled Tasks - delete all Scheduled Tasks
Scheduled Tasks
5. System Configuration Utility, Startup and Services (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7. How, press START - run - msconfig - OK
msconfig
Startup: only activate anti virus, for other programs, can be disabled, if you think not required.
System Configuration Utility, Startup and Services
Services: only activate anti virus, for other programs, can be disabled, if you think not required.
System Configuration Utility, Startup and Services
When finished, do the restart.

6. Window Metrics - MinAnimate=1 (for Windows XP)
This method can be applied to Windows XP. How, press START - run - regedit - OK
Window Metrics - MinAnimate=1
HKEY_CURRENT_USER - Control Panel - Desktop - WindowMetrics - MinAnimate -  Value data=1 - OK - restart.
7. Disk Cleanup for all drives (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7. How, right click drive C - Properties - Disk Cleanup - give a check all items. Then, click More Options - System Restore - Clean up - Yes - OK. Repeat process to drive D, E, F.
Disk Cleanup
8. Check disk for all drives (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7. How, right click drive C - Properties - Tools - Error checking - Check now - give a check all items (automatically fix file system errors, and scan for and attempt recovery of bad sectors) - Start. Repeat process to drive D, E, F.
Check disk
9. Disk Defragmenter (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7. How, right click drive C - Properties - Tools - Defragmentation - Defragment Now - select drive - Defragment. Repeat process to drive D, E, F.
Disk Defragmenter
10. Delete installed programs, that you no longer use (for Win XP, Vista, 7)
This method can be applied to Windows XP, Vista, 7
Add or Remove Programs
11. Download and install CCleaner free (support Win XP, Vista, 7)
Download and install CCleaner
Cleaner: Internet Explorer, Windows Explorer, System, Advanced

Registry Cleaner
12. Turn ReadyBoost (for Windows 7)
ReadyBoost can speed up your computer by using, USB flash drives and memory cards.
  1. Plug a flash drive into your computer.
  2. In the Autoplay, under General options, click Speed up my system.
  3. Right click a flash drive - Properties - ReadyBoost, and then do one of the following:
  • Dedicate this device to ReadyBoost : to use the maximum available space on the flash drive for ReadyBoost. Windows will leave any files already stored on the device, but itll use the rest to boost your system speed.
  • Use this device : to use less than the maximum available space on the device for ReadyBoost, and then move the slider to choose the amount of available space on the device you want to use.
     4. Click OK.
ReadyBoost
Read More..

Difference between trunk tags and branches in SVN or Subversion source control system

Rabu, 26 Februari 2014

0 komentar
SVN or Subversion is one of the popular source control system used in Java world for source code management. There are lot of source control system available e.g. Git, Perforce, CVS, Clearcase, VSS, but SVN has it’s own place among Java developer and open source communities. Knowledge of source control system is must for any professional programmer. New users of subversion often confused between three things trunk, tags and branches. Questions like, what is difference between a tag and a branch in subversion is frequently asked in various Java forums and chat rooms. In this article, we will see what is trunk, tags or branches in SVN and understand difference between trunk, tag and branch. In short, when you first upload your project to SVN it creates a trunk, It's analogous to trunk of tree. this trunk forms the main development line. When multiple developer work on different functionality of project they usually create branch from trunk and after successfully completing that functionality, they usually merge there changes to trunk. On the other hand tag is usually used to create read only snapshot of either trunk or branch, which has been released, for future use. You can think tag as stable snapshot of code at any point, and can be used to as backup or restore. Let's see difference between branch, trunk and tag more detail in next section.
Read more »
Read More..

Intel Haswell Increase Laptop Battery Life

Selasa, 25 Februari 2014

0 komentar


Intel Haswell debuted with a show for the laptop. One of the PC vendors from Germany adopted and has been showing off a laptop design concept is supported by the processor upgrade from Intel.

Reported by Cnet, Wednesday (14/8/2013), high-end laptops with processors from Intels fourth generation performed in Germany from DevilTechs website. Reportedly, a laptop with quad core power Intel Core i7 has a code name 4800MQ and 4900MQ.


Third generation processors compared to the Ivy Bridge, Haswell reportedly comes with faster performance of the graphics processing unit (GPU) and central processing unit (CPU).

To date, the key strengths that proclaims the Pcadvisor of processor power efficiency is Haswell. Intel also said that the laptop generation uses Haswell will be in attendance with a thinner and lighter.



One of the vendors is terkemua Apple, which also update it with their laptops with processors Haswell. The company founded by Steve Jobs is the latest Intel processors incorporate it into the design of the besutannya laptop, the MacBook Air.

The MacBook Air is claimed to have exceptional battery endurance. Apple also revealed that the increased durability of batteries can last from seven to 12 hours to 13-inch version. Based on testing Pcadvisor, even a laptop can live nearly 14 hours.

Sony also adopting laptops based Haswell by presenting Vaio Pro. Based on the same test using chip Haswell, Sony was unable to match the power of the battery the MacBook Air, but the thinness and weight, Vaio Pro claimed the lighter weights with 1.06 pounds.

Read More..

3 Example to Compare two Dates in Java

Minggu, 23 Februari 2014

0 komentar
comparing dates in Java is common need for Java programmer, now and then we need to compare two dates to check whether two dates are equals, less than or greater than each other, some time we also needs to check if one dates comes in between two dates. Java provides multiple ways to compare two Dates in Java which is capable of performing Date comparison and letting you know whether two dates are same, one date come before or after another date in Java. In last couple of article we have seen how to convert String to Date in Java and Converting  Date to String in Java and here we will see three different example of comparing two dates in Java.
Read more »
Read More..

openSUSE 12 1 Just released and seems to be working

Sabtu, 22 Februari 2014

0 komentar
I am sure you have seen the default openSUSE 12.1 KDE Desktop, so here is a different one.

I remember when openSUSE 11.4 was released and that was probably the most broken release in their history. So broken that I decided there and then that I would be dumping openSUSE for good.

To date I have stuck to my words but for the past few months there have been significant developments in the world of Linux desktop environments. Yes, Gnome (S)hell and Unity.

Those developments have left me with a big problem, long term wise what Linux distribution should I use?

The first step in addressing this problem is to identify what Desktop Environment is available to suit my needs and right now KDE looks promising. I was impressed with Fedoras implementation of KDE in F15, even with Kubuntu 11.04 but both suffer from the occasional quirk. With Fedora being what it is, I can understand the odd quirk but Kubuntu needs to try harder.

Fast forward to Fedora 16 KDE and Kubuntu 11.10, I am finding F16 just too unreliable. You know when a distribution is unreliable when you have to hit the reset button on your PC.

Kubuntu 11.10, feels a little sluggish and rough in a few places but is at least usable.

At some point before F16 and Kubuntu 11.10 I came across Mandriva 2011, I like what they have done with KDE but usability wise they need to make it more reliable. Perhaps when they release their LTS version by the end of the year things will be better.

Hold on, who are you trying to kid, its French. But the Russians now have their hands on it. (Perhaps not then)

There are of course many more KDE distributions out there but I cant be bothered to try everything. At the end of the day I want something that works, is easy to setup and has good support.

So the quest continues or do I eat my own words and give openSUSE another chance?

I am currently running it from a Live USB, inital observations are that it is quite nippy, probably due to their desktop kernel tweaks. The Live CD / USB also comes with useful software such as Firefox, LibreOffice and GIMP which makes it a better option over Fedora and Kubuntu.

I think for now I will just continue to monitor the forums and internet as I need my system for some important work. On that note if you are wondering what operating system I am using for this important work, Ubuntu 10.04 LTS.
Read More..

Danger Through Computer Security

0 komentar
Todays world evolves through the facility of the net. The complexities of our daily living square measure was easier and easy-to-access powerful supply of knowledge and electronic communication. Barriers square measure crossed and destinations square measure reached. Cyber communities are engineered. other than communication through easy electronic mails, social networking sites are obtaining the pull of the group like Facebook, MySpace, Twitter and therefore the like. Interaction from completely different individuals round the globe, among completely different races, ages, faith and gender square measure coming back into one strand of approach of interacting and mingling with one another. Virtual friendships square measure created attainable these days. thus once this evolution of engineering has emerged, it wasnt created certain initially that everything are going to be unbroken in camera with United States of America. individuals square measure intelligent enough to form malicious package styles which will merely break and decode what was originally meant just for ourselves. This makes laptop computer security and social network like Facebook security necessary to United States of America.

Providing and dealing out for laptop Security, Security Articles, Facebook Security has conjointly been the foremost centered follow and principles in any company these days. Having a link to the foremost sure net security sites and making the most effective package security tools not simply provide protection for all knowledge} however a lot of significantly it offers you the peace of mind that your access for your data and knowledge can solely be yours. Lacking of the most effective package security tools will very be damaging to any organization. Below square measure a number of the most effective net security tool tips that everyone, be it a corporation or for private purpose, that has to be observed:


Keep it short and clear. Obviously, as a result of humans have become a lot of and a lot of intelligent during lately and apparently we are able to build things a lot of difficult. we have a tendency to build policies and procedures as long as we are able to build it attainable. this may pass the quality checking tool for any document however the question is, will these documents that square measure too long and complex be scan by others?

build mandates acceptable for individuals. generally so as to achieve the most effective security attainable, we have a tendency to systematize mandates and build rules that square measure thus strict creating it thus chimerical for individuals to catch up. this can be quite impractical and onerous to return up with.
laptop Security, Security Articles, Facebook Security protection through data security gadgets. we have a tendency to love technology as a result of weve got a transparent background of those. weve got the technical and engineering background. we have a tendency to produce new gadgets and devices and that we get excited concerning hearing new gizmos that might actually increase the increasing population of techs gadgets. However, we have a tendency to conjointly tend to forget to own security tools that ought to be deployed with restraints. the restrictions should even be accorded and contained within the tips and must not ever be forgotten.

think about the most effective practices and their extents. as a result of we have a tendency to like to confer with "best practices", we should always conjointly try and like to currently up to what extents they might be applicable to United States of America. {this can|this may|this can} show United States of America a minimum of a clue if they will render higher risks or will cut back it. generally we have a tendency to conjointly tend to travel for top level frameworks as a result of we predict that itll higher. bear in mind that we have a tendency to should conjointly adapt the protection tool that we have a tendency to acquire for our system. {we should|we should always|we should always} take care in selecting that security tools should be used and must be tailored.

hindrance of accidents through laptop Security, Security Articles, Facebook Security. to line up and brace ourselves against attainable failures, we have a tendency to should have already got an inspiration of terms for security accidents that might presumably ruin the system. Security incidents happen all the time and therefore the most sensible thanks to stop this to happen is to form the protection a lot of pricey to bypass your defences. Invest some effort into breach detection and incident response techniques. valuate the success prospects of your security tool or program.

It might be terribly confusing for United States of America if {we can|well|we square measure going to} be the one United Nations agency will expertise breach in our accounts not simply Facebook account however worse is once our emails we have a tendency to use for our skilled works are those affected. thats why its terribly essential to appear for United States of America to search out the most effective net security tools that and handily obtainable for United States of America. slightly learning concerning protective your personal sites from harmful infections scattered within the net will not very hurt particularly Facebook wherever the protection settings of this users were in danger only in the near past.
Read More..

JDBC Interview Questions and Answers

Jumat, 21 Februari 2014

0 komentar
The JDBC questions and answers covered here are an extension to the frequently asked questions covered in "Java/J2EE Job Interview Companion" book. The questions discussed below are generally asked in online JEE technical tests.

Q. What will be the out put in the following scenario where the table "Course" has the following records



and the code that is used to access the database is as follows.


    public void executeSelectQuery(Connection con) {
PreparedStatement ps = null;

try {
ps = con.prepareStatement("SELECT COURSE_ID, NAME, COURSE FROM COURSE");
ResultSet rs = ps.executeQuery(); // read from database

rs.absolute(0); //moves the cursor to the given row number

rs.relative(2); //moves the cursor by 2 rows


while(rs.next()){
Integer id = rs.getInt("COURSE_ID");
String name = rs.getString("NAME");
String course = rs.getString("COURSE");
System.out.println("id:" + id + ", name:" + name + ", course:" + course);
}

}
catch (Exception e) {
System.out.println("ERROR executing query: ");
e.printStackTrace();
}
finally{
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}





A. The above code should thrown an exception "java.sql.SQLFeatureNotSupportedException: feature not supported".

The cause for this exception is in line where you prepare a statement. You are basically creating a cursor here.

ps = con.prepareStatement("SELECT COURSE_ID, NAME, COURSE  FROM COURSE");

The above method by default values for the resultSetType and resultSetConcurrency.  So, the above line is equivalent to

ps = con.prepareStatement("SELECT COURSE_ID, NAME, COURSE  FROM COURSE", 
ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY );


The JDBC API definitions for the  resultSetType and resultSetConcurrency are as follows

resultSetType 
  • TYPE_FORWARD_ONLY: The result set cannot be scrolled; its cursor moves forward only, from before the first row to after the last row. The rows contained in the result set depend on how the underlying database generates the results. That is, it contains the rows that satisfy the query at either the time the query is executed or as the rows are retrieved.
  • TYPE_SCROLL_INSENSITIVE: The result can be scrolled; its cursor can move both forward and backward relative to the current position, and it can move to an absolute position. The result set is insensitive to changes made to the underlying data source while it is open. It contains the rows that satisfy the query at either the time the query is executed or as the rows are retrieved.
  • TYPE_SCROLL_SENSITIVE: The result can be scrolled; its cursor can move both forward and backward relative to the current position, and it can move to an absolute position. The result set reflects changes made to the underlying data source while the result set remains open.
resultSetConcurrency 
  • CONCUR_READ_ONLY: The ResultSet object cannot be updated using the ResultSet interface.
  • CONCUR_UPDATABLE: The ResultSet object can be updated using the ResultSet interface.

Q. What will be the output for the following code snippet for the same "Course" table?

public void executeSelectQuery(Connection con) {
PreparedStatement ps = null;

try {
ps = con.prepareStatement("SELECT COURSE_ID, NAME, COURSE FROM COURSE", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
ResultSet rs = ps.executeQuery(); // read from database

rs.absolute(0); //moves the cursor to the given row number

rs.relative(2); //moves the cursor by 2 rows


while(rs.next()){
Integer id = rs.getInt("COURSE_ID");
String name = rs.getString("NAME");
String course = rs.getString("COURSE");
System.out.println("id:" + id + ", name:" + name + ", course:" + course);
}

}
catch (Exception e) {
System.out.println("ERROR executing query: ");
e.printStackTrace();
}
finally{
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}


AResultSet.TYPE_SCROLL_INSENSITIVE type will allow the cursor to scroll forward or backward.

The output will be

id:3, name:paul, course:JSF
id:4, name:jonathan, course:Hibernate
id:5, name:james, course:Spring
id:6, name:Lewis, course:JDBC

The cursor will scroll to the first record when rs.absolute(0); is executed. It will scroll another 2 records when  rs.relative(2); is executed. When it gets to the while(rs.next()){ ...} loop it will start printing from third record onwards. You can practice different scenarios with the JDBC Tutorial.


Q. What is RowSet? What is the difference between RowSet and ResultSet? What are the advantages of using RowSet over ResultSet?

ARowSets are a JDBC 2.0 extension to the java.sql.ResultSet interface. Guess what, it makes life a lot easier for all JDBC programmers. No more Connection objects, statement objects, just a single RowSet will do everything for you. RowSet object follows the JavaBeans model for properties and event notification, it is a JavaBeans component that can be combined with other components in an application.

The ResultSet has an open connection to the database whereas a RowSet works in a disconnected fashion. It has the following advantages over a ResultSet.

  • Since a RowSet works in a disconnected mode, especially for "read-only" queries, it would have better performance in a highly concurrent system.
  • Rowsets have many different implementations to fill different needs. These implementations fall into two broad categories, rowsets that are connected and those that are disconnected. 
  • Rowsets make it easy to send tabular data over a network. They can also be used to provide scrollable result sets or updatable result sets in special cases when the underlying JDBC driver does not support them.

RowSet disadvantages.
  • Rowset keeps all the data from the query result in memory. This is very in-efficient for queries that return huge data.

There are 3 types of RowSets. The JdbcRowset 

JdbcRowSet is a connected type of rowset as it maintains a connection to the data source using a JDBC driver

JdbcRowSet jdbcRowSet = new JdbcRowSetImpl();
jdbcRowSet.setCommand("SELECT * FROM Course);
jdbcRowSet.setURL("jdbc:hsqldb:hsql://localhost/mytestdb");
jdbcRowSet.setUsername("sa");
jdbcRowSet.setPassword("pwd");
jdbcRowSet.execute();

CachedRowSet and WebRoeSet are disconnected types of rowsets as they are connected to the data source only when reading data from it or writing data to it.

ResultSet rs = stmt.executeQuery("SELECT * FROM Course");
CachedRowSet crset = new CachedRowSetImpl();
crset.populate(rs);


WebRowSet wrs = new WebRowSetImpl();
wrs.populate(rs);
wrs.absolute(2)
wrs.updateString(1, "JNDI");


Q. What is Metadata and why should you use it?
A. JDBC API has 2 Metadata interfaces -- DatabaseMetaData & ResultSetMetaData. The  meta data means data about data, and provides comprehensive information about the database as a whole. The implementation for this interface is implemented by database driver vendors to let users know the capabilities of a Database.

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");  
ResultSetMetaData resultSetMeta = rs.getMetaData();
int numberOfColumns = resultSetMeta.getColumnCount();
boolean b = resultSetMeta.isSearchable(3);


Q. What are database warnings and why do you need them?
A. Warnings are issued by a database to inform user of a problem which may not be very severe. Database warnings do not stop the execution of SQL statements. Warnings are silently chained to the object. You need warnings for the reporting purpose. Warnings may be retrieved from Connection, Statement, and ResultSet objects.

SQLWarning warning = conn.getWarnings();  
QLWarning nextWarning = warning.getNextWarning();
conn.clearWarnings();
...
stmt.getWarnings();
stmt.clearWarnings();
...
rs.getWarnings();
...


Read More..

Difference between linked list and array data structure in Java Programming

Kamis, 20 Februari 2014

0 komentar
Array and linked list are two fundamental data structure in programming world. Almost all programs use Array in some form or other, which makes it increasingly important to learn array and linked list. Difference between linked list and array data structure is also a popular data structure question, frequently asked in various programming job interview. This makes it even more important to learn and understand difference between an array and a linked list. Well there are lot of difference between these two starting from how they store data, to how you retrieve data from them. Main difference comes from the fact that array elements are stored in contiguous memory location, which makes it easy to retrieve them in quick time, while linked list elements are scattered through out memory, where one element knows address of other, it makes it hard to retrieve element from linked list in quick time. Some of the differences which we saw in ArrayList vs LinkedList also applicable at data structure level, because ArrayList is backed by array and LinkedList is internally backed by double linked list in Java. In this tutorial, we will learn differences between these two fundamental data structure in more details. Once you know the difference, you can make a concise choice of which data structure suits your need better. Since both of them offers distinctive advantage over others, in terms of speed and flexibility, You can make an informed choice based upon your need.
Read more »
Read More..

Do you need to pass OCAJP before taking OCPJP Java Certification for SE 7

Rabu, 19 Februari 2014

0 komentar
One thing, which I certainly noticed after Oracle's acquisition of Sun Microsystems is creating confusion around Java certifications like hell. I used to remember those days, where Java Certifications are well defined and well known e.g. SCJP, SCWCD, SCBCD etc, but currently Java certification for SE 7 is known as either SCJP 7, OCJP 7 or even OCPJP 7. By the way official name of two most sought after Java certifications are Oracle Certified Associate, Java SE 7 Programmer ( Code : 1Z0-803) and Oracle Certified Professional, Java SE 7 Programmer ( Code 1Z0-804 ).  I receive lots of questions regarding Java Certifications for Java SE 6 and 7, with range of queries from how to prepare for exam, to suggestions on books, resources and mock exam simulators. One of the questions, which lot of my reader email me is about, whether taking OCAJP is mandatory for giving OCPJP or not?  Many of them have doubt about whether OCA is required for taking OCP or not? Well, answer is both Yes and No. If  you are appearing for Java SE 7 certification and haven't done any Java certification before than you need to first clear OCAJP and only than you can take OCPJP, but if you are upgrading from an earlier version e.g. you have already passed Oracle Certified Professional, Java SE 6 or SE 5 Programmer (OCPJP 6 or OCPJP 5) or any version of Sun Certified Java programmer exam ( SCJP) than you don't need to go through OCA path. You can directly appear for OCPJP 7. By the way exam code is different for upgrade version, you need to take 1Z0-805, Upgrade to Java SE 7 Programmer. On similar note, if you are appearing for Java SE 6 certification than you don't need to pass OCA, you can directly take Java 1.6 certification.
Read more »
Read More..

How to earn more as a software engineer

Selasa, 18 Februari 2014

0 komentar


The blog entitled how to earn from additional income streams covered some of the avenues for active and passive income. This blog covers some steps that you can take to increase your earning potential.

Changing yourself

If you did not change in any way in the last year, it’s not very probable that you will get more money. Constantly expand your knowledge and skills. The skills expansion could happen not only through on the job experience, but also through pro-actively applying what you learn through books, blogs, online white papers and self-taught tutorials/projects. Nowadays, there is no such thing as real job security. The real job security comes from keeping your knowledge and skills current and sharp, presenting yourself in a better light in your CVs and job interviews, building a good online persona, and networking. Change yourself not only by acquiring the relevant technical skills, but also by demonstrating the right soft skills, business skills, and attitude. Research shows that the top five skills to have are -- analytical , technical, communication, interpersonal, and leadership skills. While you are at work or being interviewed, you will be judged on these skills along with other attributes like:

  • Being a change agent (someone who "alters system or human capability to achieve a higher degree of output or self actualization). In most of my assignments, I take the lead with the help of my immediate boss on an  initiative called "QuickWins".  The focus is to improve the overall effectiveness and usefulness of a system through small changes in a collaborative effort with the business. Workshops are conducted to list the top 10 or 20 things that can add real value to a particular system. This could be the look and feel of the system, ease of use of the system, responsiveness of the system, etc. A few items are prioritized based on its cost-benefit analysis.

  • Being a good facilitator ( a facilitator’s role is to draw out knowledge and ideas from different members of a group, to help solve problems effectively and learn from each other). Software development is a vast field, and you cant know everything. But you can be a good facilitator to bring out the best of other people.

  • Being a good listener (without the I am always right attitude), being a good mentor/coach, ability to motivate & influence others, being well organized, being a team player, and self-motivated. Even though you are working with the technology, in larger organizations with multidisciplinary teams, you need work with people to get things done. It can be more challenging to work with people than with technologies/frameworks.

Proving yourself as a great contributor

Build up a reputation as a “go to person” and a “person who gets things done”. You need to demonstrate this with the right technical competencies, soft skills, and attitude. Help others and point them in the right direction, but dont do it at the expense of not getting your work done. Helping others will also help you expand your experience and skills by learning from others problems. It is also possible for this reputation to turn in to "I know it all" arrogance. If you are wrong or dont know something, admit it. Technology is a very vast area, and it is not possible for anyone to know everything. Good contributors are great facilitators as well.


Staying visible

Make sure that your contributions are noticed. Being a quiet achiever wont do you any good. Dont just get stuck behind the keyboard. Attend meetings and meet more people. Prepare prior to team meetings, and add value by contributing good ideas and effective solutions. Bring out your analytical, technical, communication skills, and domain knowledge. Dont over do, fake, or present others ideas as your own. Give credit to others ideas. If you are not ready, slowly build up your ideas and skills to contribute. Another area where you can promote your experience and skills are in the code review sessions. Try to earn thumbs-up in code review sessions through quality coding and application of best practices and right frameworks/tools. Another avenue to stay visible that is not tapped into very often is being proactive. Proactively identify potential thread-safety, scalability, transactional, and performance issues, and take the initiatives to get it fixed. Identify gaps in requirements, drawbacks in designs, holes in security, and inefficiencies in the processes, and take the lead to improve them. These are common challenges faced by most software development projects, and it really pays to have the right people who can identify and resolve them. Make sure that your immediate boss is aware of your findings and contributions, but never go around bad mouthing the software/application to the business users and others as to how badly it was engineered to earn more brownie points. This attitude can back fire on you. I have used this avenue very effectively in my career to get pay rise, and also motivated me to write the career companion that focuses on 14 key areas relating to software development. I also use these key areas in my job interviews to convince my prospective employers that I can get the job done by illustrating how I applied these key areas effectively to solve problems and improve the overall software quality in my current and past assignments.


Asking for more money.

Even if you are a great contributor, have changed a lot, and stayed visible, you will most probably not get more money unless you ask for it. Preferably do this on a Friday so that your boss can think about not losing you over the weekend :). Be prepared to tell your boss why you are worth more -- you cant say because you got certified or you understand the key areas and core concepts well after reading the career companions. These add value to you, but not to the organization. Employers are interested in how you had applied what you had learnt. So, you can say -- managing more people; accepted new responsibilities; fixed thread-safety issues; identified and fixed performance & database locking issues; closed gaps in requirements and design; good domain knowledge due to being involved from the inception of the project; being an only remaining member of the team who has been involved with the full SDLC of the product; etc. Be realistic in your negotiations. You should know what you are really worth by looking around or getting other job offers. Dont advertise about your other job offers in the early stages of your negotiations, especially if you strongly feel that you have a future in that company. Also, be prepared to tactfully and professionally handle any negative responses.


Changing jobs, especially if the above approaches had failed, your efforts are not recognized, feeling stagnated, and under paid. You are perhaps working for a wrong company. Insecurity of a new job, the change, more responsibilities, etc can be a fearful experience, but sometimes one needs to take a calculated risk to move forward. Not taking the necessary steps forward can sometimes even be riskier due to lack of marketable skills, experience, knowledge, working for a wrong company, etc. Also, shouldn’t change jobs too often as it can reflect badly on your CV. You could prolong your stay by motivating and challenging yourself with self-taught projects, tutorials, and open-source contributions. If you decide to move on, do it professionally and amicably, as building a good network must be one of your career objectives to get ahead in your career. You never know what the future holds. If things dont turn out as expected in your new job, you always have an option to call your old boss. You and your old boss may cross paths in a new company. I always would like to chang jobs with the parting words from my boss like -- "If things dont turn out as expected, let me know". Also, I make it a point to keep in touch with my boss and colleagues even if I dont want to go back there.


Getting multiple job offers

Getting multiple job offers and being in a position to negotiate and choose from competing offers. Take the time to prepare prior to your interviews. Go through your resume, and reflect back on your past achievements and experience. Brush up on the Java/JEE fundamentals. If you get multiple job offers, look beyond just monetary benefits -- How to choose from multiple Java/J2EE job offers? .


Taking the road less traveled

Becoming an independent contractor or consultant. You can mitigate the risk of being out of contract for a prolonged period by keeping your skills, knowledge, and experience current, marketing them effectively, preparing prior to each round of interviews, and networking. Starting your own company, if you have a great idea and know the right people. Working on the book that you always wanted to write or taking the overseas trip you always wanted to explore and expand your horizons. You hold the key to your career success.


Note: Always look beyond salary when considering your options. Dont base your happiness on money alone. Job satisfaction and opportunity to grow further are equally important. These are general advice only, and one needs to take his/her own circumstances into consideration in making his/her decisions.
Read More..

Java Preorder Tree Traversal recursive and iterative flattening of tree

Senin, 17 Februari 2014

0 komentar
The Logic and Datastructure Essentials chapter of my book "Core Java Career Essentials" covered a lot of questiomns and answers on different data structures and where to use them with lots of diagrams and code snippets. This blog post covers just the  Preorder Tree Traversal with code snippets. The preorder tree structure is a very popular Java coding interview question:


The left nodes are traversed before the right nodes.

Q. How will you fltten a preorder tree in Java?
A.

Step 1: The TreeNode class can be decalred as shown below.

 
package com.mycompany.app14;

public class TreeNode
{
private int value;
private TreeNode left;
private TreeNode right;

public TreeNode(int value, TreeNode left, TreeNode right)
{
super();
this.value = value;
this.left = left;
this.right = right;
}

public int getValue()
{
return value;
}

public void setValue(int value)
{
this.value = value;
}

public TreeNode getLeft()
{
return left;
}

public void setLeft(TreeNode left)
{
this.left = left;
}

public TreeNode getRight()
{
return right;
}

public void setRight(TreeNode right)
{
this.right = right;
}

}


Step 2: Test class to construct the tree structure using the TreeNode class and traverse the tree bothe recursively and iteratively to printhe values in the Preorder.

 
package com.mycompany.app14;

import java.util.ArrayDeque;
import java.util.Deque;

public class Test
{
public static void main(String[] args)
{
TreeNode root = createOneTo6PreOrderTree();
printTreeRecursively(root);
System.out.println("---------------------------------");
printTreeIteratively(root);
}

private static TreeNode createOneTo6PreOrderTree()
{
TreeNode leaf3 = new TreeNode(3, null, null);
TreeNode leaf4 = new TreeNode(4, null, null);
TreeNode leaf6 = new TreeNode(6, null, null);

TreeNode node5 = new TreeNode(5, leaf6, null);
TreeNode node2 = new TreeNode(2, leaf3, leaf4);

TreeNode root1 = new TreeNode(1, node2, node5);

return root1;
}

/**
* traverse the tree recursively and print
*
* @param TreeNode node
*/
private static void printTreeRecursively(TreeNode node)
{
//Exit condition for recursion
if (node == null)
{
return;
}

System.out.println(node.getValue());

printTreeRecursively(node.getLeft()); //recurse left node
printTreeRecursively(node.getRight()); //recurse right node

}

/**
* Achieved using a Deque (LIFO)
*
* @param TreeNode node
*/
private static void printTreeIteratively(TreeNode node)
{
Deque<TreeNode> s = new ArrayDeque<TreeNode>(6);
s.push(node); // push the root node

while (!s.isEmpty())
{
node = s.pop();
System.out.println(node.getValue());

//stack is LIFO, so push the right node first
if (node.getRight() != null)
{
s.push(node.getRight());
}

//stack is LIFO, so push the left node last
if (node.getLeft() != null)
{
s.push(node.getLeft());
}
}

}
}




Step 3: The iterative approach represented diagramatucally for better understanding. Shows how the numbers are pushed and popped.



Step 4: Output

 
1
2
3
4
5
6
---------------------------------
1
2
3
4
5
6


Read More..

How to Find Runtime of a Process in UNIX and Linux

Minggu, 16 Februari 2014

0 komentar
So you checked your process is running in Linux operating system and it's running find, by using ps command. But now you want to know, from how long process is running, What is start date of that process etc. Unfortunately PS command in Linux or any UNIX based operating system doesn't provide that information. But as said, UNIX has commands for everything, there is a nice UNIX tip, which you can use to check from how long a process is running. It’s been a long time, I have posted any UNIX or Linux command tutorial, after sharing some UNIX productivity tips . So I thought to share this nice little tip about finding runtime of a process in UNIX based systems e.g. Linux and Solaris. In this UNIX command tutorial, we will see step by step guide to find, since when a particular process is running in a server.
Read more »
Read More..

SMEs that continue to invest likely to last

Sabtu, 15 Februari 2014

0 komentar
We found this report by Simon Quicke in the Microscope trade magazine, 8th December 2008.
It might seem like an odd source of research into the small business market but headset specialist Plantronics has reported that a Super SME is set to emerge to beat the downturn.
The emergence of those small companies that have invested in infrastructure, staff training and marketing are best placed to survive the recession.
Most of the SMEs that were surveyed revealed that they had been feeling the downturn for quite a while but only 22% said that the impact have been significant.
“During times of economic uncertainty SMEs tend to view investment in IT, staff training and marketing as luxuries instead of necessities,” Says Paul Clark, General Manager, Plantronics.
“This research shows Super SMEs bucking convention and investing wisely in some or all of these areas are the most confident about the future and better placed to operate in the changing marketplace,” he added. Last week the Chartered Institute of Marketing revealed that a portion of its members were worried about what next year holds and whether or not they would be able to hold onto their jobs.
Read More..

5 Difference between Application Server and Web Server in Java

Jumat, 14 Februari 2014

0 komentar
Application server and web server in Java both are used to host Java web application. Though both application server and web server are generic terms, difference between application server and web server is a famous J2EE interview question. On  Java J2EE perspective main difference between web server and application server is support of EJB. In order to run EJB or host enterprise Java application (.ear) file you need an application server like JBoss, WebLogic, WebSphere or Glassfish, while you can still run your servlet and JSP or java web application (.war) file inside any web server like Tomcat or Jetty.

What are difference between application server and web serverThis Java interview question are in continuation of my previous post on interviews like Top 10 Spring interview questions and  Top 10 Struts interview question.  Here we will see some difference between application server and web server in point format which will help you to answer this question in any java interview.
Read more »
Read More..

BeanIO tutorial

0 komentar
BeanIO is an open source Java framework for marshaling and marshaling Java beans from a flat file, stream, or simple String object. It is very powerful with support for XML, CSV, delimited and fixed length stream formats, Object binding, filed validation, integration with spring-batch, etc. Here is a basic tutorial to get started.

Step 1: The sample CSV file to convert to an object of type Person. The first record is a header record, and the subsequent ones are detail records. The file is person.csv under src/main/resources/data

H, 2013-03-12
John,Smith, FAMILY
Peter,Smith, FAMILY
Gregory,Smith, FAMILY


Step 2: Define the dependency jar in pom.xml file.

<!-- beanio -->
<dependency>
<groupId>org.beanio</groupId>
<artifactId>beanio</artifactId>
<version>2.0.2</version>
</dependency>

Step 3:The main class that wires up everything.

package com.mycompany.app10;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.beanio.BeanReader;
import org.beanio.StreamFactory;

public class BeanIoMain
{

public void readCSVFileUsingBeanIo()
{
StreamFactory factory = StreamFactory.newInstance();
factory.loadResource("person.xml");

//read it from the classpath : src/main/resources
InputStream in = this.getClass().getResourceAsStream("/data/persons.csv");
BeanReader reader = factory.createReader("persons", new InputStreamReader(in));
Object record = null;
List<Person> persons = new ArrayList<Person>();

// read records from "input.csv"
while ((record = reader.read()) != null)
{
if ("header".equals(reader.getRecordName()))
{

@SuppressWarnings("unchecked")
Map<String, Object> header = (Map<String, Object>) record;
System.out.println(header.get("fileDate"));
}
else if ("detail".equals(reader.getRecordName()))
{
Person person = (Person) record;
persons.add(person);
}
}

System.out.println(persons);
}

public static void main(String[] args)
{
new BeanIoMain().readCSVFileUsingBeanIo();
}
}

Step 3: The POJO Person class.

package com.mycompany.app10;

public class Person
{

private String firstName;
private String surname;
private PersonType type;

public String getFirstName()
{
return firstName;
}

public void setFirstName(String firstName)
{
this.firstName = firstName;
}

public String getSurname()
{
return surname;
}

public void setSurname(String surname)
{
this.surname = surname;
}

public PersonType getType()
{
return type;
}

public void setType(PersonType type)
{
this.type = type;
}

@Override
public String toString()
{
return "Person [firstName=" + firstName + ", surname=" + surname + ", type=" + type + "]";
}

}



Step 4: The person.xml under src/main/resources where you can map to your POJO Person.java.

<beanio xmlns="http://www.beanio.org/2012/03">
<stream name="persons" format="csv">
<parser>
<property name="delimiter" value="," />
<property name="lineSeparator" value="
" />
<property name="whitespaceAllowed" value="true" />
</parser>
<typeHandler name="personTypeHandler" class="com.mycompany.app10.PersonTypeHandler"/>
<record name="header" class="map" maxOccurs="1">
<!-- rid indicates this field is used to identify the record -->
<field name="recordType" rid="true" literal="H" />
<!-- format can be used to provide Date and Number formats -->
<field name="fileDate" type="date" format="yyyy-MM-dd" />
</record>
<record name="detail" minOccurs="0" maxOccurs="unbounded"
class="com.mycompany.app10.Person">
<field name="firstName" />
<field name="surname" />
<field name="type" typeHandler="personTypeHandler" type="com.mycompany.app10.PersonType" />
</record>
</stream>
</beanio>

Step 5: Next, the handler class that parses Enums to String.

package com.mycompany.app10;

import org.beanio.types.TypeConversionException;
import org.beanio.types.TypeHandler;

public class PersonTypeHandler implements TypeHandler
{

public Object parse(String text) throws TypeConversionException
{
PersonType personType = PersonType.valueOf(text.trim());
return personType;
}

public String format(Object value)
{
return value != null ? ((PersonType) value).name() : PersonType.SINGLE.name();
}

public Class<?> getType()
{
return PersonType.class;
}
}

Step 6: The output of the BeanIoMain is:


Tue Mar 12 00:00:00 EST 2013
[Person [firstName=John, surname=Smith, type=FAMILY], Person [firstName=Peter, surname=Smith, type=FAMILY], Person [firstName=Gregory, surname=Smith, type=FAMILY]]



Read More..

Make Presentation with Libre Office

0 komentar
Do you know? Libre Office application bundles shot by people who are upset over how OpenOffice is developed after the production company, Sun Microsystems, purchased
by Oracle.

As for the tutorial this time is related to how to make a slide presentation thats cool, but with a very easy way, even for us – weve never even make

slide presentation. Heres the way:


  1. run Libre Office. From the main menu, click the Presentation.
  2. on the next on the menu, click From template and select Presentation Backgrounds that best suits your needs.
  3. Next, select a medium would be the output presentation. If confused, just choose Original.
  4. After that, select transition effects on the slide you later, and also the speed effect.
  5. If necessary, you can also create a slide show that runs automatically according to the time that you can specify.
  6. In the next section, fill in your name or your company name, the title of the presentation, and whatever points you wish to present in the slide.
  7. well, now the preparation is over. Let me check on the Create summary and click Create so that you can calculate slide last jump.
  8. now slide it so. You can start filling in the next slides, change the appearance, transition, or other substitute.
  9. If you want to see (preview) slide presentation, Slide Show button on the top. You can also use the shortcut key F5 from the keyboard.
  10. If all is finished, you can save your slide show presentation. If necessary, it also supports LibreOffice storage in pptx format owned by Microsoft Office 2007.

Easy right? Free any more, and no less cool with Microsoft PowerPoint.
Read More..

Copyright © 2010 Computer Tips and Trick | Powered By Blogger