Welcome to MSDN Blogs Sign in | Join | Help

Just Coding

Spanish Developer Bits
The Terra Project

El principal motivo por el que este blog ha estado tan calladito en los últimos meses, es el proyecto en el que he estado inmerso desde Octubre de 2007.

Esta semana el proyecto ha visto la luz: http://noticias.terra.es , ha sido un largo camino, y todavía quedan muchas cosas por hacer, pero ya hemos dado el primer paso: “estar en el aire”.

Aunque a primera vista no parezca muy novedosa, ni siquiera muy complicada de hacer, (por lo que 20 meses es a todas luces un tiempo excesivo), el principal reto se podría titular como:

“Desarrollar un sitio web basado en Sharepoint 2007 que permita gestionar millones de páginas por un equipo de decenas de redactores, para dar servicio a millones de usuarios”.

Para conseguir este objetivo se han tomado muchas decisiones para adaptarse a los requisitos de MOSS, las más importantes han sido:

Taxonomía

En base a los estudios de capacidad de almacenamiento, se ha determinado que una base de datos de contenido por año no se superará el límite recomendado de 80G.

Dentro de cada base de datos de contenido, se ha creado una jerarquía de sub-sitios en base a las secciones, meses y días, de forma que no se almacenen en ningún caso más de 1500 páginas por sitio.

Con todo, las URL resultantes son del tipo:

/genteycultura/2009/0503/actualidad/lenny-kravitz-consigue-que-5500-personas-se-entreguen-a-sus-ritmos-roqueros.aspx

Almacenes de información alternativos

Además de la información gestionada por el equipo de redacción, es necesario considerar la información generada por los usuarios (UGC). En las primeras versiones de la arquitectura, esta información la almacenábamos en listas de MOSS, sin embargo esta aproximación no cubría las exigencias de rendimiento a gran escala.

Finalmente, el sistema cuenta con bases de datos de apoyo para almacenar la información generada por los usuarios.

Abstracción del código de acceso a datos

El sistema de publicación de MOSS permite la creación de plantillas (layouts), que son fácilmente personalizables usando las herramientas estándar que ofrece el producto como el “Content Editor Web Part”, sin embargo la forma de obtener el contenido en base a sentencias CAML sobre la taxonomia descrita, no permite satisfacer los requisitos de un periódico (no se pueden hacer consultas sobre varias bases de datos de contenido, y las consultas sobre jerarquias son muy lentas desde el punto de vista de rendimiento).

Por estos motivos, se decidió crear una capa de acceso a datos, que permitiese abstraer los detalles de la taxonomía y UGC de los controles visuales (webparts).

 

Una vez que se implementó el sistema sobre estos principios tuvimos que esperar algunos parches de producto para ajustar el rendimiento del buscador a los requisitos deseados, así como acometer algunos desarrollos personalizados para cubrir las expectativas de los redactores. Y finalmente lo tienen disponible en noticias.terra.es

VRTA: Como medir el rendimiento de un cliente Web

Siempre que hablamos de rendimiento de aplicaciones web, instintivamente pensamos en cuantas peticiones concurrentes seremos de aguantar en el servidor, sin embargo, la percepción final del usuario depende de muchos otros factores.

Cada vez que solicitamos una página web, el navegador se prepara para la descarga de todos los recursos enlazados desde el html, imágenes, hojas de estilos, o scripts. La forma en la que se descargan estos ficheros varia en función del navegador, pero el factor más importante  a tener en cuenta es la capacidad de descargar varios recursos simultáneamente.

Además, y debido al auge de las aplicaciones AJAX, cada vez es más común que un script sea capaz de realizar nuevas solicitudes que deberán ser gestionadas por el navegador.

Existen herramientas como el famoso FireBug que nos dan una idea de los recursos más lentos que carga FF, pero no nos permiten analizar el tráfico HTTP para entender la concurrencia que se puede obtener.

Últimamente, Microsoft ha liberado una versión de una herramienta interna que permite analizar los detalles de carga de una determinada página: Visual Round Trip Analyzer.

A continuación un ejemplo de carga de una página con muchas dependencias externas:

image

Mas info en  http://msdn.microsoft.com/en-us/magazine/dd188562.aspx

Y la descarga en  http://www.microsoft.com/downloads/details.aspx?FamilyID=119F3477-DCED-41E3-A0E7-D8B5CAE893A3&displaylang=en

Azure aka RedDog is here

Just one hour ago, Ray Ozzie has announced the new Cloud OS from Microsoft: Windows Azure, it's funny to see the word "windows" since it has no windows at all ;-).

A lot of people should be blogging about it right now, so I do not add more comments here.

PDC Starts

Not really the PDC, just the Pre-Conf sessions. I've chosen .Net Data Access from A to Z. By now, it's just a quick recap of Data Access technologies from the last years, how long from last time I hear someone talking about RDO or DAO...

The session is getting more interesting, now we have started to see the Entity Framework with Michael Pizzo, this guy knows  how to make a demo, he is adding more relationship as attendees ask for it !! cool...

 

Choosing a JavaScript library

Some months ago I started to dig in different JavaScript libraries like prototype, MooTools, Dojo or jQuery, (see http://delicious.com/rido/javascript for a complete list). As usual, each one has their pro's and con's.

 

Today, Scott Gu  has announced a new Microsoft Visual Studio partnership with jQuery, this are really good news...

How to show CodeRegions expanded by default

If you know me, and my code, you know I dont like regions, but I cant stop people to use them, anyway what I can do is to configure VS to ignore regions and show always the code "expanded" by default:

 image

SEO keywords and My PageRank

In the last months I've seen how SEO has become a day-to-day conversation in web projects. From web-standards like XHTML, to better ways to display and link content (REST style URLs, no querystrings, and so on...) But few people talk about how to organize and measure content quality to improve the Page Rank.

So I started to monitor how people find and use this blog.

Due to my current job situation I can't blog too much, however "Just Coding" still have some activity, look at the last 14 days:

929 Visits, 882 Unique Visitors and 1,203 Page Views

I thought this is because I'm linked from El Ventanal de Rosa or MSDN Spain

Also, I hope to to see that some of my little contributions to .Net development like the trx2html tool, or the FileRollerTraceListener , or maybe some of my presentation related materials, are useful to someone.

However the results are incredible, see the stats:[ http://www.w3counter.com/stats/popular_pages/2505/20/0 ]

The most viewed page with more than 55% page views is Just Coding : Mount ISO Files in VISTA !!! Note that this page is just an aggregated kind of post with no "original content", and have had no changed since 27Oct2006.

This is a development blog, I'm not an expert on ISO neither the VISTA OS, and I've never wrote anything related to ISO formats,  so why this page has some many visits?

We have to look at the sources (or which web sites redirect users to here) http://www.w3counter.com/stats/referrers/2505/top/20/0

Wow !! more that the 76% percent comes from Google !!, and do you know with which search keywords?

1

 

mount iso vista

 

5,093

 

15%

 

2

 

vista mount iso

 

3,808

 

11%

 

3

 

iso mount vista

 

861

 

3%

 

4

 

vista iso mount

 

673

 

2%

 

5

 

css creator

 

504

 

1%

 

6

 

mount iso in vista

 

429

 

1%

 

7

 

vista iso mounter

 

398

 

1%

 

8

 

mount iso file vista

 

305

 

<1%

 

9

 

iso mounter vista

 

217

 

<1%

 

       

and I thought because I wrote that post just after VISTA RTM, maybe I had been one of the first entries to get indexed. But we know this is a bad result for that search keywords, because my blog and that page are not relevant about this areas.

I could delete that page from the index, also destroy it from my blog, however this URL maintains my blog active, so I'll keep it there...

thx::G ;-)

Video Interview

I've been interviewed by some folks of DPE, here in Spain. You can watch it here: http://comandotomate.net/archive/2008/02/13/entrevista-a-rido.aspx

trx2html supports VS 2008

I have released a new version (still in beta) that support Visual Studio 2008 Test Results File Format.
It has been really easy, the underlying schema was pretty similar, so I could reuse the whole UI without modification, just 2 hours of XSLT refactorings ;-)

http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=trx2html&ReleaseId=10672

Note that this release only supports the 2008 format.  

Next versions will support 2005/2008 in one binary file.
RidoCode
Since gotdotnet is phased out, I'm moving all my samples to codeplex (http://www.codeplex.com/ridocode), including the famous FileRollerTraceListener
trx2html @ CodePlex

I have moved the  trx2html  project to CodePlex 

http://www.codeplex.com/trx2html

I'm looking for members and collaborators !!

Continuous Integration with TFS

Today I've been talking about CI with TFS in Madrid, Spain. The event has been organized by the local DPE division at Microsoft Spain.

The Spanish Title was: "Integración Continua con Team Foundation Server"

Hope everybody enjoyed the show !!

here are the slides: http://www.slideshare.net/rido/integracin-continua-con-team-foundation-server/

The demo, was based on my last workshop about TestingWithVS, anyway I have refactored the code to focus on CI. You can download it here

TestResults Reports in TFS Builds

If you use TFSBuilds with VS UnitTests, you know how to inspect the TestResults: you must download the whole directory to your local machine, and sometimes this folder could be pretty huge.

So, if you want to check the error details of your tests, you can use my tool trx2html to convert the *.trx files to html, so you can see the reports with any browser.

Here are the instructions in 3 simple steps:

1) copy the RidoTasks.dll file to your source tree

 $(SolutionRoot)\RidoCode\tools\RidoTasks.dll

2) Reference the msbuild task in TFSBuild.proj

<UsingTask TaskName="RidoTasks.trx2html" AssemblyFile="$(SolutionRoot)\GEN4\tools\RidoTasks.dll" />

3) Convert the test reports after drop the build results

<Target Name="AfterDropBuild">

    <CallTarget Targets="CreateTRXReports" />

</Target>

<Target Name="CreateTRXReports">

   <CreateItem Include="$(DropLocation)\$(BuildNumber)\TestResults\*.trx">

  <Output TaskParameter="Include" ItemName="trxfiles"/>

</CreateItem>

<RidoTasks.trx2html FileName="%(trxfiles.Identity)" />

</Target>

Testing with VS2005 Demo

Today's workshop was based on a demo to show all the vs features about testing, it covers:

  • Unit Tests (With MockObjects)
  • Integration Tests (Using ASP.Net Host)
  • Functional Tests (With Web Tests)
  • Load Tests (With testcontrollers and test agents)

 I've packed all the code in a zip that you can download here:

http://blogs.msdn.com/rido/attachment/1159890.ashx

 

My Workshop about testing

Tomorrow I will be talking about Testing with VS2005, here is my presentation:

http://blogs.msdn.com/rido/attachment/1156243.ashx

If you are interested in the code samples, please let me know and I will send you the latest version

 

 

More Posts Next page »
Page view tracker