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
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:
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
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.
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...
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...
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:

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 ;-)
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
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.
Since gotdotnet is phased out, I'm moving all my samples to codeplex (
http://www.codeplex.com/ridocode), including the famous
FileRollerTraceListener
I have moved the trx2html project to CodePlex
http://www.codeplex.com/trx2html
I'm looking for members and collaborators !!
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
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>
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
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