Friday, 3 October 2014

Qt 5 on Ubuntu 14

Quite happy, my configuration for the first time it worked on Ubuntu linux Qt 5 finally installed and it's a big Kudos, my first HelloWorld Qt App!
Here are the shots:

Tuesday, 30 September 2014

Qt5.1 on Windows 8

Hello World App
This has finally run on my newly installed Windows 8, quite amazing it is for a yearning developer to see the configuration to be smooth and safe. Anyone can try to run the executable below is provided the link.

Download here.


Thursday, 21 November 2013

Web Application Frameworks

A Web Application Framework is a software framework that is designed to support the development of dynamic websites, web applications, web services and web resources. The framework aims to alleviate the overhead associated with common activities performed in web development. Most of these frameworks based on the popular MVC architectural design pattern. Most MVC frameworks follow a push-based architecture also called "action-based". For example, many frameworks provide libraries for database access, templating frameworks and session management, and they often promote code reuse. 
Examples of  frameworks according to language ;-

  • CodeIgniter
  • Yii
  • Zend framework
  • CakePHP
  • FuelPHP
  • TYPO3

  • Spring 
  • Java Server Faces(JSF)
  • Apache Struts
  • Google Web Toolkit(GWT)
  • Grails
  • JBoss Seam

  • Django
  • Flask
  • CherryPy
  • Web2Py

  • Meteor
  • SmartClient
  • Wakanda

  • CppCMS
  • Wt

Java Persistence Frameworks

A persistence framework is software that assists and automates the connection to the databases, especially relational databases for storage, access or retrieval. Acts as a level of abstraction between the application and the databases. Since Java is an objet-oriented programming language it happens that many frameworks are also object-oriented which enables them to map the application's data and the database's data this is called Object-Relational Mapping(ORM). Many frameworks are ORM tools and use XML and metadata to annotations for their mappings. Examples ;-
  • Hibernate
  • iBatis SQL Maps
  • MyBatis
  • Slick
  • Ultra-Lite Persistence


Code Editor

An advanced text editing software that is specifically designed to aids the programmer/developer to write/edit source code and  perform special checks on the source code in a certain programming language. It makes it convenient for the development process by providing a way to run interpreters, translators, compilers, debuggers and other software development programs. It may be a stand-alone application or built into an Integrated Development Environment(IDE). One of the advantages as a programmer when using the  code editor is syntax highlighting, auto-complete feature, formatting of code blocks(indenting), etc. Most popular and well-known IDEs ;-
  • Notepad++(Windows) - Can write/edit very many programming languages.
  • NetBeans(UNIX, Windows)
  • Eclipse(UNIX, Windows)
  • IntelliJ IDEA(UNIX, Windows, Mac OS)
  • Microsoft Visual Studio(Windows)


Wednesday, 20 November 2013

Source Control

Source Control also known as Version/Revision Control which aid in the management of the software configuration, source code changes and other collections of information.
In Software Development, source control has been employed in the need to keep track of development releases and where there are many developers need to work together to make large complex software systems, therefore the need for Version Control Systems(VCS). The source control mostly is managed according to changes of source code which is related to time.
Before Version Control Systems came into play there was Report Control Systems(RCS) which was a software implementation of revision control that automates the storing, retrieval, logging, identification, and merging of revisions. Revision Control System is also capable of handling binary files, though with reduced efficiency. Examples of VCS would be Apache svn, Git, Mercury, and others.

Design Patterns

A design pattern is a reusable solution that can be implemented on software problems that commonly occur in development. There are very many design patterns that are employed in software design and they are classified according using concepts such as delegation(representation), aggregation(constituent components), consultation(reference) which are into groups, creational patterns, behavioral patterns, structural patterns and concurrency patterns. There is another architectural design pattern that is also becoming very common Model-View-Controller pattern. Object-oriented design patterns typically show relationships and interactions between classes or objects.

Creation Design Patterns
Based on object creations although could result in design problems or added complexity to the design. The approach is to solve this problem is control of object creation. They are grouped further into Class creational and Object creational patterns. Well-known design patterns;-

  • Abstract Factory pattern
  • Builder pattern
  • Factory method pattern
  • Prototype pattern
  • Singleton pattern

Behavioral Patterns
In software engineering, behavioral design patterns are design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication.

  • Observer pattern also known as Publisher/Subscriber pattern;-
Objects register to observe an event that may be raised by another object.The observable object holds reference to many observer objects that are registered(subscribed) to it and can be removed(unsubscribed). The observable gives information(publishes) to the observers(subscribers) that are registered(subscribed) and also updates the observers too.
  • Iterator pattern
  • Chain of responsibility pattern
  • Command pattern
  • State pattern
  • Strategy pattern
  • Template method pattern
  • Visitor pattern
  • Null object pattern

Structural Patterns

Design patterns that ease the design by identifying a simple way to realize relationships between entities(aggregation).
  • Facade pattern -  create a simplified interface of an existing interface to ease usage for common tasks.
  •  Adapter pattern
  • Aggregate pattern
  • Decorator pattern
  • Composite pattern
  • Proxy pattern
  • Pipes and Filters pattern

Concurrency Pattern
Concurrency design patterns are those types of patterns that deal with the multi-threaded programming paradigm. Examples:
  • Thread pool pattern - acts in a round-robin fashion.
  •  Monitor Object pattern
  • Balking pattern
  • Double-checking locking pattern
  • Guarded suspension pattern
  •  Reactor pattern
  • Read-write lock pattern
  • Scheduler pattern
  • Thread-specific pattern

MVC(Model-View-Controller) pattern
In Software Architecture, it is a design pattern that involves de-coupling of business rules, data, functions, logic from user's interaction with it. The Model consists of business rules, data, logic, functions and View consists of representation of data, such as a diagram. Controller is the mediator of communication between the two, Model and View.