Monday, October 28, 2013

Hacking: Botnet

What is botnet?
Botnet is a number of internet computers that has been set up to transmit hostile data including spam and virus to other computer, and the owners of those computers are unaware of it most of the time. According to Kaspersky Labs, botnets should not be categorized as spam, viruses, or worms but it is considered the biggest threat to the internet. 



Some common attacks from botnet
Denial-of-service is definitely one of the most common botnet attacks. Denial service is caused when the website can not handle too much traffic and is forced to close down. The computers that form a botnet can be programmed to redirect transmissions to a specific computer and conduct such attack. 

Common hacked victims
Computers that are hacked to serve in a bonet are often those with weak security protection. For example, the owners of those computers fail to provide effective firewalls and other safeguard. Also, home users with weak safeguard tend to be the favor victims of botnet attack because those home users are high speed connections for computers, and if they are under control by botnet, transmission of hostile data can be very efficient and the attacked.






Source:
http://www.dodbuzz.com/2009/08/03/botnets-biggest-cyber-threat/

Friday, October 11, 2013

Open Source: The Spring Framework

What is Spring?
The Spring Framework is an open source application framework, and the goal of it is to make J2EE development much easier. Unlike other single-tier frameworks, such as Hibernate and Struts, the goal of Spring is to help structure the entire applications in a productive and consistent manner. 


Why Spring?
The Spring framework is good news for everyone who wants to develop enterprise application. It is extensible and portable. With Spring, you can develop different kinds of business application, such as social network, database and mobile applications. No wonder over 2/3 of enterprise developers are using Spring.
Spring Framework provides comprehensive infrastructure Support for developing Java application. It is a Java platform and handles the infrastructure so you can focus on your application only and don't have to start from scratch. 



 










Advantages
One of the big advantages of using Spring is it provides dependency injection which is where you design your classes so that they expect an outside actor to directly give them the sub-tools they need to do their jobs before anybody starts asking them to do something.
What is more? Spring also provides many templates which act as base classes so that users can get along working with JEE standard technologies. For example, the JdbcTemplate works well with JDBC and JmsTemplate makes JMS pretty straightforward. 


To Conclude 
Spring is a great development tool and there are many reasons to like. Most importantly, it is an open source so you can look at the source behind the sense.

Thursday, October 3, 2013

AGILE: Agile verses Waterfall. What Is Right For Me?



Introduction
    Traditionally, people developed software project in a very linear approach called Waterfall. An example of using the waterfall method in software development is the progress flows steadily downwards through the phases of requirements, design, implement, testing and maintenance. However, some people who advocate Agile argue that the waterfall model is a bad idea in practice because they believe for a non-trivial project to finish a phase before moving to the next one is impossible. Those people believe Agile provide with more fixability.

Pick the right one
    In order to know which approach should be used in a particular project, you should understand the difference between using Agile and the waterfall in the given areas below:

Requirements/Change
    You should ask yourself whether or not the requirements are changing constantly. If the requirements are changing constantly, you should consider Agile than the waterfall because Agile allows you to add more requirements as well as dropping others.  
Experience/Resources
    Does developing this software require new skills and technologies? Do you have experience implementing it? If you have a stable environment, then you should consider using the waterfall.
Customer Involvement
    Customer involvement is essential to the success of a project. If you are able to get continuous feedback so that you can keep making changes based on their feedback, you should use Agile.
Timelines
    Do you have fixed due date for your project? If you are flexible with due date, you should use Agile. However, if you have restrictions due to financial requirements or calendar restrictions, you should consider the waterfall. 

Conclusion
    My recommendation is always consider the areas above and pick the right one for your software development. Some people like to analogize Agile with innovation and the waterfall as a cookbook. I personally love this analogy. Overall, Aligle(innovation) allows your progress to go back and forth but the waterfall(cookbook) doesn't as when making a pumpkin pie, it is awkward to first bake the whole pumpkin and then start the processes of smashing it and adding milk and spices.