204754 items (194659 unread) in 185 feeds
Actualités
(34131 unread)
Informatique
(17048 unread)
Sport & Loisirs
(2381 unread)
Blogs
(8586 unread)
Gwadanina.net
(3161 unread)
Sciences & Techno
(39562 unread)
Antilles Martinique Guadeloupe
(40694 unread)
Open Source & Libre
(8278 unread)
Developpement
(23320 unread)
Sécurité
(6159 unread)
FAI
(2048 unread)
Cultures
(787 unread)
Cinéma & Musique
(1510 unread)
Recettes
(481 unread)
Autres
(273 unread)
Referencement et Marketing
(1169 unread)
Photos
(4314 unread)
Entreprise
(737 unread)
Podcast et Musique
(20 unread)
Monday 8:00 Maven, Eclipse and OSGi working together tutorial
Wednesday 16:50 Q4E, Maven integration for Eclipse short talk
Show up or find me at the bar
Every site ends up having features. On a news site, it‘s top stories, most discussed, highest rated. In a store, it‘s the things that are new, best selling, etc.
A while back I made some feature classes that were generic. There were two big ideas in the approach: 1. the feature manager just held on to keys, which is generally anathema, especially in the anti-anemic age of ORM, but there is a reason for it: the feature manager is not a cache, it is just a list, and when it is asked for a feature or a bunch of them, it loops through its keys calling read on the injected Repository. Since we have a Decorator(should be a hyphen here, but the Textism parser is so stupid, it interpreted it as a strikethrough)based set of CachedRepository classes, that's an easy thing to arrange. (Of course, the person on the team who first tried to use the classes I wrote thought they were stupid for reading the item each time (I would prescribe some revisions to the JD to prevent this in the future, but the likelihood of that being read by implementors is a single ticket in a multi-state powerball). Of course, the other design pattern in this initial buildout was Strategy: we can just rotate through a list, order them, etc. (this is done through a selector).
So now I am cracking open the features again to look at how to address the question of topicality, in other words, what are the top-selling items in books v. music, etc. The idea of defining each of these things with some little filter key in the Spring files seems inane and useless. Thinking about the problem, a few things pop out:
Creational Dimension In my present case there are two dimensions: a type field (what type of post are we fetching), and categories. I started to imagine a kind of agent model where nodes could literally be spawned at runtime on combinations of type and category that the system didn't even know about at startup. In a scenario like this, there would have to be some interface-based wiring of the sources (Repositories), and each fill operation would be Interpretered into a request for items from a Repo. This would support the idea that an admin could configure a new topic by creating a new category, and then drop the feature rotation portlet onto the page, and bingo, it would work.
Countering this is the realization that this is simple, multi-dimensional data. One could imagine getting everything in one query, and then just divvying it up by dimension. The advantage of this approach is that there are fewer trips to the db, but that probably doesn‘t mean much, as we are going to cache these things once they are loaded. Which brings up the last issue: when rotating features, you cannot have blanks: if the rotator fits 10 products, there have to be 10 products, and if you are going to do topical filtering, you can‘t mix those topics. So the issue comes up how do we guarantee that we will get something? Well, that brings up the last thing: there is another hidden dimension here: time. For things like most viewed or highest rated, it makes sense to see things as receding on the time dimension.
One approach that seems to be easy to rule out is to fetch a whole ton of things and then just skip over what you don‘t want, based on the prevailing filter. One of the reasons for this is that the dimensional data must be inspected each time, furthermore, if you use a distributed cache, you will end up shuttling things around that are not being used.
This last month I‘ve been tested what will be the upcoming Java.
This consumer JRE will be installed on millions of computers so it‘s our jobs as Java
developers to make sure it works properly.
The feedback goes in the Java.net forums and I was surprised that so few people tested it.
I tested it, found some bugs, reported them and the dedicated team fixed them.
You too can help improve the next Java release!