Sluggish database view? Materialize it!

The other day we were having some slow database view at our project. It was the main view of the new module we were developing, and it was slowing down the whole application to an unacceptable point. It was a rather complex view and could not be optimized much more. So, what was the solution we adopted? We materialized the view.

Regular views store just the SQL script needed to retrieve the data, and every time they are consulted the stored SQL query is executed. However, materialized views not only store the script, but the retrieved records as well, making it much faster.

Read the rest of this entry »

Software design patterns (IV): behavioral patterns

We’ve already been through a brief introduction to design patterns, and a description of the most important creational design patterns and structural design patterns. In this article we’ll take a look at the last category of design patterns: behavioral patterns.

Behavioral design patterns are concerned with the relationships among communications using different objects. They identify common communication patterns and provide a well-known solution to implement this communication, offering a higher degree of flexibility.

The most used behavioral patterns are:

Read the rest of this entry »

Software design patterns (III): structural patterns

We already saw what design patterns are and took a look at creational patterns in earlier articles. Today we’ll deal with the second category: structural patterns.

These design patterns are all about class and object composition. Class-creation patterns use inheritance to compose interfaces, whilst object patterns define ways to compose objects to obtain new functionality. All of these patterns aim to ease the design by identifying a simple way to realize relationships between entities.

The most common structural patterns are:

Read the rest of this entry »

Software design patterns (II): creational patterns

In an earlier article we saw what design patterns are and how they can help us. Today we’re going to take a look at the first category: creational patterns.

Creational design patterns deal with class creation and instantiation, and how to use those instances. Basic class creation could result in design problems or added complexity to the design. These patterns solve these problems by controlling this object creation.

Some examples of creational design patterns:

Read the rest of this entry »

Software design patterns (I)

Design patterns are solutions to common software development problems, and aim to facilitate the development of a software project. A solution must have proven effectiveness and be highly reusable (can be applied to different design problems in different circumstances) to become a design pattern.

A pattern describes a problem that happens over and over again in our environment, and then explains the core of the solution to that particular problem. Since it is just a scheme of the solution, the application of this pattern is not literal: it requires adaptation. You could use the same pattern a thousand times, and never repeat the way you applied it.

Read the rest of this entry »

CSS 3: one more step in the evolution of the web

CSS 2 was released in 1997, and after more than 10 years it needs to be updated to reflect the new uses and trends we’ve been seeing in the web. This new version of Cascading Style Sheets brings new features long awaited that will make web development easier. Alongside with HTML 5, this new version represents the evolution of the web, and aims to take the concept of semantics into the core of the web.

CSS 3 has quite a few new concepts. Let’s take a look:

Read the rest of this entry »

HTML 5: dramatic improvements in the web language

HTML 5 is a new revision of the standard language that moves the web. The increase in needs has brought new uses in HTML and new tags to support them, paying special attention to the semantic web. There are quite a few elements added to the new HTML standard to encapsulate different types of information:

Read the rest of this entry »

The Semantic Web

Semantics, as defined in Wikipedia:

Semantics is the study of meaning, usually in language. The word “semantics” itself denotes a range of ideas [...]. It is often used [...] to denote a problem of understanding that comes down to word selection or connotation.

The Semantic Web is an extended web, with a greater meaning, in which users will be able to find answers to their questions faster and easier due to a better-defined information. This meaning-based web is supported by a set of standardized  languages that solve the problems the semantic-less web has, in which access to some information is a difficult and frustrating task.

Read the rest of this entry »

jqGrid multiselect: a little improvement

The jqGrid plugin is fantastic. It provides an improved user experience and makes your web application stand out from the rest. But sometimes the default behaviour it has is not what we like, and those are the times when we have to dive into the source code to tweak it. And today was one of those times for me.

We’ve implemented the jqGrid plugin in a couple of pages in our project at work. We needed some multiselect in one of them. This option seems very easy to implement: just add a couple of options at creation time and you’re done… well, not quite. JqGrid’s multiselect default behaviour is not really the standard one. I mean, it is a multiselect, just not what the regular user might be used to.

Read the rest of this entry »

jQuery Grid plugin: jqGrid

JqGrid is a jQuery plugin which provides impressive AJAX-enabled dynamic data tables.  And when I say impressive, I mean fantastic. Not only it’s packed full of features, but it’s got a very nice look and feel as well. It’s got nothing to envy from traditional desktop application grids. I would say it’s even better than many of them.

Themeable interface: you can set it up as you wish

Themeable interface: you can set it up as you wish

Read the rest of this entry »