<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7165369794142068829</id><updated>2012-01-05T08:44:16.095-08:00</updated><category term='Primero'/><category term='Corporación'/><category term='Ocio'/><category term='Dibujos'/><category term='Simpsons'/><category term='documental'/><title type='text'>:. R3M</title><subtitle type='html'>Do One Thing and Do It Well</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-2591752176419213016</id><published>2010-10-21T05:52:00.001-07:00</published><updated>2010-10-23T03:10:41.916-07:00</updated><title type='text'>Yet Another Validation Plugin… Again!</title><content type='html'>&lt;p&gt;Well this is the first widget wrote by me from scratch that will include in my End of studies project &lt;a href="http://github.com/royriojas/Astrea/" target="_blank"&gt;Astrea&lt;/a&gt;. This is a simply widget but a really useful one.&amp;nbsp; &lt;p&gt;Validate forms is a very common task, and is usually performed either writing custom functions for each field like is suggested in this page &lt;a href="http://www.w3schools.com/js/js_form_validation.asp."&gt;http://www.w3schools.com/js/js_form_validation.asp.&lt;/a&gt;, which could be considered "the old school way". Another approach is to use a plugin that involves the writing of few lines of javascript to perform the validation, wiring each field with the type of validation that will perform and with the error message that is going to be used. Like in the case of this jQuery Validation Plugin &lt;a href="http://jquery.bassistance.de/validate/demo/marketo/"&gt;http://jquery.bassistance.de/validate/demo/marketo/&lt;/a&gt;. and Another plugins try to improve the way validation is done, like this one &lt;a href="http://www.devx.com/webdev/Article/31695"&gt;http://www.devx.com/webdev/Article/31695&lt;/a&gt;  &lt;p&gt;While they do a great job validating the fields, which is what you expect from a validation library in the first place :), it is not always customizable enough. There are situations when you may want the validators look differently or be in a completely different position in the form layout. Other times, you don't want to use the form to send the data directly maybe you just want to extract the value fields as a JSON Object and send that object to the server using Ajax, etc.  &lt;p&gt;Well This is Yet Another Validation Plugin. It is not perfect but include a bunch of features that I found useful in all the time I'm doing web development.  &lt;h3&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;&lt;strong&gt;Features&lt;/strong&gt; &lt;/h3&gt;&lt;ol&gt;&lt;li&gt;It is completely customizable with CSS, and since is manually located in the form layout, it could appears in any position. And the error messages can contain whatever you need from plain text to html.&lt;br /&gt;
&lt;li&gt;It is unobstructive, and somehow aspect oriented. The behavior of the validators is set using data-* properties&lt;br /&gt;
&lt;li&gt;It is possible to add new validators and they will work fine (In the case of dynamic forms)&lt;br /&gt;
&lt;li&gt;It is simply to use, and I tend to believe that can be easily extended to add support to new type of validators.&lt;br /&gt;
&lt;li&gt;It is not restricted to validate one single field. Several fields can be validated at once.&lt;br /&gt;
&lt;li&gt;It is possible to validate just a subset of the validators, or even just validate one. I plan to support validate outside the main container&lt;br /&gt;
&lt;li&gt;It is not only restricted to validate actual forms, any container (a div i.e.) can be used as the container for the validation.&lt;br /&gt;
&lt;li&gt;It support asynchronous validation, so actually it is easy to perform Ajax validation with this approach&lt;br /&gt;
&lt;li&gt;Each field is also validated on blur, change, while the user is interacting with the field.&lt;br /&gt;
&lt;li&gt;can validate any type of fields, radios, checkboxes, etc.&lt;br /&gt;
&lt;li&gt;Out of the box this plugin supports the following validation types: required, compare, range, regex and custom. Using the regex and custom validators it is possible to perform almost any kind of validation. &lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;&lt;h3&gt;Example of Validator Widget&lt;/h3&gt;&lt;p&gt;Go ahead to the result tab to see in action and use the html tab to see the required html, javascript and css&lt;/p&gt;&lt;iframe style="width: 100%; height: 1000px" src="http://jsfiddle.net/royriojas/ZtYJ3/embedded/"&gt;&lt;/iframe&gt; &lt;p&gt;You can find the code here in the &lt;a href="http://github.com/royriojas/Astrea/" target="_blank"&gt;Astrea&lt;/a&gt; repo. under the examples folder.&lt;/p&gt;&lt;p&gt;To know how to use it take a look to the source code in the example above, I will include a brief documentation later.&lt;/p&gt;&lt;p&gt;The widget is implemented using the widget factory from jQuery UI. So I guess this is actually good news if you're already including this library.  &lt;p&gt;The widget is still work in progress, so there are probably bugs and other stuff. But for a first release I guess it is good enough.  &lt;p&gt;If you have developed in ASP.NET you can find this validator plugin somehow similar to the ASP.NET validator component. That is intentional. I had to work on a PHP project after 4 years of been developing with ASP.NET and missed the validators, and like a lot of us, well I just like to reinvent the wheel and still this can be used for my End of Studies Project. (Yes I know that I ended the University 4 years ago, But I guess it is better late than never)  &lt;h3&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;&lt;strong&gt;know Issues. &lt;/strong&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;To support async validation, the custom validators receive a callback function as part of the arguments. It's up to the programmer to call it with the right validation value. An example of async validation will be included later.&lt;br /&gt;
&lt;li&gt;If more than one validator is assigned to the same field, if the first fail and the second succeed the failed class gets removed so the visual hint to denote that a field has failed the validation is lost. This will be fixed soon. &lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;h3&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;&lt;strong&gt;Short FAQ&lt;/strong&gt;&lt;/h3&gt;
&lt;h3&gt;&lt;strong&gt;Licensing?&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;While this validator widget has been made for my own consumption, I guess that everybody can use it freely and improve it if is required. The source code is on Github under the Astrea project (Astrea is the name of the Library that I'm looking to finish as my End Of Studies Project). The Project will be released under the LGPL and MIT licenses. So Feel free to use it. &lt;/p&gt;
&lt;h3&gt;Can't find the documentation?&lt;/h3&gt;&lt;p&gt;That's my fault, I haven't enough time to write a proper documentation for this widget yet. I promise I will include one soon. For now you can see how it works live in the code example above. &lt;/p&gt;
&lt;h3&gt;Can't find the unit tests?&lt;/h3&gt;&lt;p&gt;My fault again, this project is just starting and I will love to include unit tests for all the widgets that I will include as part of this Library. So Unit testing using QUnit will be added in the future. &lt;/p&gt;
&lt;h3&gt;Why not use the HTML5 validators?&lt;/h3&gt;&lt;p&gt;Well actually I believe is a good idea to use HTML5 Validators, but the problem with this, is that is not supported by all browsers at this point. 
I will keep a close eye to how the HTML5 validators evolve and will update this library accordingly. &lt;/p&gt;
&lt;h3&gt;Validators seems to not been working on Browser XX.XX?&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;This first release has only been tested in later versions of Mozilla Firefox and Chrome by now. I haven't had time to test it thoroughly in all browsers. So it is possible some issues could appear. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-2591752176419213016?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/2591752176419213016/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=2591752176419213016' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2591752176419213016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2591752176419213016'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2010/10/yet-another-validation-plugin-again.html' title='Yet Another Validation Plugin… Again!'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-8535319862802781829</id><published>2009-06-21T04:00:00.001-07:00</published><updated>2009-06-21T04:00:37.684-07:00</updated><title type='text'>Yahoo Developer Network – All APIs page</title><content type='html'>&lt;p&gt;Today while was trying to make a custom control to convert currencies, I faced an ugly problem: The free soap web service that I was planning to use was simply down. A big problem considering the time I had to made that control. &lt;/p&gt;  &lt;p&gt;After some goggling I found some sites that perform this kind of job. Some of them were using originally the same web service I was trying to use and because they were facing the same problem as me they decide to change it. They were using somehow the YAHOO finance quotes service to retrieve the exchange rate between two currencies, but they were making the calls directly at the server side (trying to do it using Ajax raises the Cross Site Scripting problem). &lt;/p&gt;  &lt;p&gt;Then I was curious about to know if somehow the YAHOO finance service could had some kind of REST API that could help me to obtain this value directly. But I was not lucky and couldn’t find that…&lt;/p&gt;  &lt;p&gt;But I found something even better the &lt;a href="http://developer.yahoo.com/everything.html"&gt;Yahoo Developer Network - All APIs page&lt;/a&gt; and there I found a lot of interesting things… really a lot. But the most impressive think I found was the &lt;a href="http://developer.yahoo.com/yql/"&gt;YQL&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The YQL stands for Yahoo! Query Language. This is a really impressive concept. It basically allows to make calls to almost any web resource (html pages, dynamic pages and any other resource) and query this result using css or xpath to retrieve the parts of the content that are relevant for us in JSON or XML formats. And it supports make Cross Site Scripting calls too!&lt;/p&gt;  &lt;p&gt;The potential that I found in this tool is really amazing you can retrieve almost any relevant information from many sites and use it in the way you want. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;YAHOO has some good resources. Really good resources!&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-8535319862802781829?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/8535319862802781829/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=8535319862802781829' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/8535319862802781829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/8535319862802781829'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/06/yahoo-developer-network-all-apis-page.html' title='Yahoo Developer Network – All APIs page'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-7294327596475296711</id><published>2009-06-20T05:21:00.001-07:00</published><updated>2009-06-20T05:21:08.762-07:00</updated><title type='text'>Testing Windows 7</title><content type='html'>&lt;p&gt;I just finished the installation of all the programs that I usually use every day on my computer with the RC1 of the Windows 7. And I must admit it was relatively easy to get it working fine. I had some troubles but they were quickly solved.&lt;/p&gt;  &lt;p&gt;Some of the aspects about this new Windows version are really nice. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The installation itself was easy. I remember I tried to install Vista RC1 a long time ago, It was just terrible, a lot of components of my computer just won’t work ever on that because the drivers for them simply didn’t exist. This time instead almost of my hardware components were ready to use, just after the installation. The Wireless USB receiver, the USB web cam and my two audio cards were the exception, but I didn’t have any trouble trying to install the vista version of the driver that came with the USB receiver, or with the driver version of Vista for my two audio Cards (Soundblaster Audigy 2 Platinum, and the default integrated audio that came with my Intel DP35DP Motherboard). I found the Driver version for the Intel Integrated Audio on the Intel website, and even when they claim that the driver was beta also it is doing really good right now.&lt;/li&gt;    &lt;li&gt;The Aspect of the Desktop. I don’t know if Microsoft copy the new desktop style from others Operative Systems, I will only say that it looks good, I seems a lot like Vista, but with less invasive warning windows (yes they’re still there). Well I must admit I have not used Vista too much, I really didn’t use Vista on a regular basis like to make a fair comparison. But comparing Windows 7 with the well loved Windows XP you really see some good changes in the UI. I’m tempted to believe that this instance of Windows 7 is running faster than my old good XP.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I will post more comments about Windows 7 later… for today it is time to stop!&lt;/p&gt;  &lt;p&gt;Bye.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_YmHIlqvC96Q/SjzTAIMDxzI/AAAAAAAAGjg/SyDEHO7tZgs/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_YmHIlqvC96Q/SjzTH04XuSI/AAAAAAAAGjk/Y0XiwtwqPYc/image_thumb%5B2%5D.png?imgmax=800" width="680" height="439" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_YmHIlqvC96Q/SjzTMtyVA4I/AAAAAAAAGjo/46kOufqqXfY/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_YmHIlqvC96Q/SjzTS79MHcI/AAAAAAAAGjs/Svqcx1pYXCI/image_thumb%5B4%5D.png?imgmax=800" width="684" height="262" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_YmHIlqvC96Q/SjzTZSvlEJI/AAAAAAAAGjw/sFnVJ9FbOho/s1600-h/image%5B17%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_YmHIlqvC96Q/SjzTf-kz_3I/AAAAAAAAGj0/owN2e969nrE/image_thumb%5B11%5D.png?imgmax=800" width="681" height="450" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_YmHIlqvC96Q/SjzTm4c2hzI/AAAAAAAAGj8/cPvSybc8QYg/s1600-h/image%5B27%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_YmHIlqvC96Q/SjzTvIlSZzI/AAAAAAAAGkA/wBQ-XWJrkpE/image_thumb%5B17%5D.png?imgmax=800" width="683" height="445" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_YmHIlqvC96Q/SjzT12dQaYI/AAAAAAAAGkE/MKS2bvZ3esQ/s1600-h/image%5B37%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_YmHIlqvC96Q/SjzT9YA0YvI/AAAAAAAAGkI/YVJzj-YNM8I/image_thumb%5B23%5D.png?imgmax=800" width="683" height="440" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_YmHIlqvC96Q/SjzUDrpi0MI/AAAAAAAAGkM/ujaaRN2P18Y/s1600-h/image%5B42%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_YmHIlqvC96Q/SjzUL3kp_jI/AAAAAAAAGkQ/YoPfwnZKldc/image_thumb%5B26%5D.png?imgmax=800" width="679" height="437" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-7294327596475296711?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/7294327596475296711/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=7294327596475296711' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/7294327596475296711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/7294327596475296711'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/06/testing-windows-7.html' title='Testing Windows 7'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_YmHIlqvC96Q/SjzTH04XuSI/AAAAAAAAGjk/Y0XiwtwqPYc/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-2733279304913443867</id><published>2009-06-19T08:23:00.001-07:00</published><updated>2010-10-20T00:47:40.721-07:00</updated><title type='text'>Export to CSV in Unicode format so Excel can read Japanese characters in the right way</title><content type='html'>&lt;p&gt;To make this history short, here is the problem I had. The Client wants to export the data from a report (basically a table) in csv format. This data could contain Unicode characters (basically Japanese characters). This file was intended to be used to move the data to other programs like excel or others.&lt;/p&gt;&lt;p&gt;Well to solve that requirement i made this method, that basically receive the data ready to be put in the csv format and save it to the response.&lt;/p&gt;&lt;pre class="csharp" name="code"&gt;protected void ExportToCSV(object sender, EventArgs e)
 {
    if (String.IsNullOrEmpty(CSVData.Value)) return;

    var strFileNameexport = FileNameHidden.Value.Replace(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;);
    Response.Clear();
    Response.ClearContent();
    Response.Buffer = true;
    Response.ContentType = &amp;quot;text/comma-separated-values&amp;quot;;

    Response.ContentEncoding = Encoding.UTF8;
    Response.Charset = Encoding.UTF8.HeaderName;
    var data = CSVData.Value;    

    Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, string.Format(&amp;quot;attachment;Filename={0}.csv&amp;quot;, strFileNameexport));

    Response.Write(data);
    Response.End();
}&lt;/pre&gt;&lt;p&gt;As you can see as far to this point everything seemed to be working fine. But suddenly when we try to open a exported file that contains Japanese characters, Excel was not able to display those characters. It replace those characters with garbage&lt;/p&gt;&lt;p&gt;So to Solve the Problem we... &lt;/p&gt;&lt;ul&gt;&lt;li&gt;found that excel expects the csv file to be in &amp;quot;utf-16le&amp;quot; (UCS-2 Little Endian) (weird, really weird). &lt;/li&gt;
&lt;li&gt;when you put the data in this format, the &amp;quot;,&amp;quot; character is not longer a valid column separator (even more weird, weird!!!!) so you need to use other character like &amp;quot;\t&amp;quot; (I know, I know... if you use \t as a separator the mime type should tab separated value files, but Excel seems to don't complain about it. &lt;/li&gt;
&lt;li&gt;It is also recomendable that you enclose the data for each cell using quotes, this way the values inside won't be interpreted wrong if a separator character is present there. &lt;/li&gt;
&lt;li&gt;then realize that we were receiving the data in utf-8 format so we first need to convert the bytes from utf-8 to utf-16 &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;And the most important note: YOU NEED TO PUT THE MARKER BYTES SO THE PROGRAMS COULD RECOGNIZE THE ORDER OF THE BYTES IN THE FILE TO KNOW IF THEY ARE IN LITTLE ENDIAN OR IN BIG ENDIAN&lt;/strong&gt; you can found a lot of information about it in the internet. but no one really tells you that this is necessary to make the file recognizeable by Excel as a csv file. &lt;/li&gt;
&lt;/ul&gt;&lt;pre class="csharp" name="code"&gt;private static byte[] GetUCSStringFromData(string value)
{
    if (String.IsNullOrEmpty(value)) return new byte[] { };

    value = value.Replace(&amp;quot;\&amp;quot;,\&amp;quot;&amp;quot;, &amp;quot;\&amp;quot;\t\&amp;quot;&amp;quot;);

    var utf8Encoding = Encoding.UTF8;
    var utfBytes = utf8Encoding.GetBytes(value);

    var ucs2Encoding = Encoding.GetEncoding(&amp;quot;utf-16le&amp;quot;);
    var ucs2Bytes = Encoding.Convert(utf8Encoding, ucs2Encoding, utfBytes);

    var bytesFinal = new List&lt;byte&gt; {0xff, 0xfe};
    foreach (var b in ucs2Bytes)
    {
        bytesFinal.Add(b);
    }

    return bytesFinal.ToArray(); // ucs2Encoding.GetString(ucs2Bytes);

}

protected void ExportToCSVForExcel(object sender, EventArgs e)
{
    if (String.IsNullOrEmpty(CSVData.Value)) return;

    var strFileNameexport = FileNameHidden.Value.Replace(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;);
    Response.Clear();
    Response.ClearContent();
    Response.Buffer = true;
    Response.ContentType = &amp;quot;text/comma-separated-values&amp;quot;;

    //Those lines makes it possible to work with UCS2
    Response.ContentEncoding = Encoding.GetEncoding(&amp;quot;utf-16le&amp;quot;);
    Response.Charset = Response.ContentEncoding.HeaderName;

    var data = GetUCSStringFromData(CSVData.Value);

    Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, string.Format(&amp;quot;attachment;Filename={0}.csv&amp;quot;, strFileNameexport));
    
    Response.BinaryWrite(data);
    Response.End();
} &lt;/pre&gt;&lt;p&gt;So never forget it!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-2733279304913443867?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/2733279304913443867/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=2733279304913443867' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2733279304913443867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2733279304913443867'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/06/export-to-csv-in-unicode-format-so.html' title='Export to CSV in Unicode format so Excel can read Japanese characters in the right way'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-4515984874997568445</id><published>2009-05-12T23:57:00.001-07:00</published><updated>2009-05-12T23:57:32.010-07:00</updated><title type='text'>Intellisense in NHibernate Mappings in Visual Studio 2008</title><content type='html'>&lt;p&gt;I found this good post in StackOverflow, I put it here simply to have it always present. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;To enable it, try copying the following files into: C:\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\schemas\xml, or into C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas.&lt;/p&gt;    &lt;p&gt;I'm not sure which is the right place and I put them into both of mine but it works for me.&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;nhibernate-configuration.xsd&lt;/li&gt;      &lt;li&gt;&lt;strike&gt;nhibernate-generic.xsd &lt;/strike&gt;(I could not find this file in the last version of the code of NHibernate&lt;/li&gt;      &lt;li&gt;nhibernate-mapping.xsd &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;You can get the files from the source of nHibernate&lt;/p&gt;    &lt;p&gt;Taken from &lt;a href="http://stackoverflow.com/questions/602324/nhibernate-code-completion-visual-studio/602334" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-4515984874997568445?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/4515984874997568445/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=4515984874997568445' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4515984874997568445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4515984874997568445'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/05/intellisense-in-nhibernate-mappings-in.html' title='Intellisense in NHibernate Mappings in Visual Studio 2008'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-7585789579887887389</id><published>2009-05-12T07:53:00.001-07:00</published><updated>2009-05-12T08:19:00.462-07:00</updated><title type='text'>TableTypeString property of Dialect Class is never used in NHibernate</title><content type='html'>&lt;p&gt;I was wondering why TableTypeString property of Dialect Class is never used inside the NHibernate library, the property is there, but when I try to find usages of this property, no usages were found.&lt;/p&gt;  &lt;p&gt;I needed to use this property because I was writing a special Dialect for MySql to be able to generate InnoDb Tables and to make their charset UTF-8 by default in despite of the default charset of the Database.&lt;/p&gt;  &lt;p&gt;I found an example of this in this &lt;a href="http://blog.twproject.com/2009/04/29/teamwork-mysql-and-utf-8/#comment-76" target="_blank"&gt;post (Teamwork, MySQL and UTF-8)&lt;/a&gt;, the code there is for Hibernate in Java, so instead of use the getTableTypeString getter in NHibernate there is a TableTypeString property.&lt;/p&gt;  &lt;p&gt;So, I subclass the &lt;strong&gt;MySqlDialect&lt;/strong&gt; to make my own &lt;strong&gt;Mysql5InnoDbUtf8Dialect&lt;/strong&gt;, but it didn’t works. Looking at the code I found that the Table class in Hibernate differs from the NHibernate Class in the &lt;strong&gt;SqlCreateString &lt;/strong&gt;method. At the end of that method we found in the &lt;a href="http://viewvc.jboss.org/cgi-bin/viewvc.cgi/hibernate/core/trunk/core/src/main/java/org/hibernate/mapping/Table.java?revision=15365&amp;amp;view=markup" target="_blank"&gt;Java class&lt;/a&gt;&lt;/p&gt; &lt;pre class="csharp" name="code"&gt;
if ( comment != null ) { 
	buf.append( dialect.getTableComment( comment ) ); 
}  
return buf.append( dialect.getTableTypeString() ).toString(); 
&lt;/pre&gt;
&lt;p&gt;And at the end of the same method in the &lt;a href="http://fisheye3.atlassian.com/browse/nhibernate/trunk/nhibernate/src/NHibernate/Mapping/Table.cs?r=4086" target="_blank"&gt;NHibernate class&lt;/a&gt; we found&lt;/p&gt;
&lt;pre class="csharp" name="code"&gt;
if(string.IsNullOrEmpty(comment)==false)
{
	buf.Append(dialect.GetTableComment(comment));
}

return buf.ToString();
&lt;/pre&gt;
&lt;p&gt;So as you can see if the TableTypeString property have to be used somewhere, this is the place, &lt;strong&gt;and currently is not used&lt;/strong&gt;(If anyone knows why please, please let me know!)&lt;/p&gt;
&lt;p&gt;so I make the change in the code, in the Table Class at the end of the &lt;strong&gt;SqlCreateString&lt;/strong&gt; method (see code below)&lt;/p&gt;
&lt;pre name="code" class="csharp"&gt;
if (string.IsNullOrEmpty(comment) == false)
{
	buf.Append(dialect.GetTableComment(comment));
}
			
return buf.Append(dialect.TableTypeString).ToString();
//return buf.ToString();
&lt;/pre&gt;
&lt;p&gt;and recompile again Nhibernate. After that my new Dialect was working very Nice!&lt;/p&gt;
&lt;p&gt;I'm not so sure if that is the best way to acomplish what I was needing to do (create tables with UTF-8 charset by default). Sure, if you have control of the database you can create the database with UTF-8 charset by deafult, but I really want to found a way to do it by code and not in the MySql Administrator.&lt;/p&gt;
&lt;p&gt;Well let's work again...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-7585789579887887389?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/7585789579887887389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=7585789579887887389' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/7585789579887887389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/7585789579887887389'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/05/tabletypestring-property-of-dialect.html' title='TableTypeString property of Dialect Class is never used in NHibernate'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-5857127182104484822</id><published>2009-04-23T15:28:00.001-07:00</published><updated>2009-04-24T10:03:35.828-07:00</updated><title type='text'>Dealing with Back Button and Secured Applications</title><content type='html'>&lt;p&gt;Today during the development of my current assigned project, the client registered a really tricky bug. In our system we are using ASP.NET 2.0, and some times we do some ajax calls to improve the perfomance of the applications and to avoid been making postbacks when only a very few information really changes. &lt;/p&gt;  &lt;p&gt;The problem with that approach was that when the user interacts with one of the pages that has ajax enabled behavior, and then navigates to a new page in the system and then click the back button the page was restored to its original state and the changes that were made using javascript were lost, since the page was served from cache and not for the Server.&lt;/p&gt;  &lt;p&gt;The other problem related to the same issue was that once the user has been logged in, navigate to some pages and then logout, if he pressed the back button in the browser the pages where he was navigating were there and that was representing a potential security hole to the system.&lt;/p&gt;  &lt;p&gt;in ASP.NET in the PageLoad Event of your page (the master page could be a better place to put it) you can try this&lt;/p&gt;  &lt;p&gt;//Turn off cache    &lt;br /&gt;Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);&lt;/p&gt;  &lt;p&gt;And Please!!!!! make yourselves a favor and add this line!&lt;/p&gt;  &lt;p&gt;Response.Cache.SetNoStore(); &lt;/p&gt;  &lt;p&gt;Sometimes the browser just ignores the Cache Directive.&lt;/p&gt;  &lt;p&gt;I found a post that says that using the beforeunload event the page will be forced to reload the content from the server but it seems not to be working.&lt;/p&gt;  &lt;p&gt;More information about this particular issue could be found here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript" href="http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript"&gt;http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-5857127182104484822?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/5857127182104484822/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=5857127182104484822' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5857127182104484822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5857127182104484822'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/04/dealing-with-back-button-and-secured.html' title='Dealing with Back Button and Secured Applications'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-4742970845078857771</id><published>2009-02-20T16:14:00.001-08:00</published><updated>2009-05-13T09:53:58.451-07:00</updated><title type='text'>Mysql UTF8 Encoding, and how to save Chinese/Japanese characters.</title><content type='html'>&lt;p&gt;One of the requirements of the current application that I’m developing is to be able to save Unicode characters, but when we save the data to the db, the unicode characters were converted to a sequence of question symbols&amp;#160; (like these ??????) and that was really annoying.&lt;/p&gt;  &lt;p&gt;Well we do some googling and found the answer here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html" href="http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html"&gt;http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Well to make the story short, if you want to store unicode characters be sure that the my.ini (mysql.cnf in linux) has the following lines in it.&lt;/p&gt;  &lt;p&gt;collation_server=utf8_unicode_ci   &lt;br /&gt;character_set_server=utf8    &lt;br /&gt;character_set_client=utf8&lt;/p&gt;  &lt;p&gt;I don’t know why, but It seems than the Mysql Connector for .Net was sending the queries statements&amp;#160; as non unicode, so, when the data arrives to the db it arrives with the wrong encoding and it stores the question symbols instead of the unicode characters.&lt;/p&gt;  &lt;p&gt;If you don’t have control of the mysql Server, maybe you could run the equivalent sql statements before the queries, something like this :&lt;/p&gt;  &lt;p&gt;SET NAMES UTF-8&lt;/p&gt;  &lt;p&gt;I don’t know how to do it when you use NHibernate, (because the sql statements are sent by the NHibernate layer), but I read some posts that said it works. &lt;/p&gt;  &lt;p&gt;Hopefully it can helps someone else.&lt;/p&gt; &lt;p&gt;Important note: those lines should be added after the default-character-set to work properly&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-4742970845078857771?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/4742970845078857771/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=4742970845078857771' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4742970845078857771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4742970845078857771'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/02/mysql-utf8-encoding-and-how-to-save.html' title='Mysql UTF8 Encoding, and how to save Chinese/Japanese characters.'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-5931063928710373217</id><published>2009-01-28T15:22:00.001-08:00</published><updated>2009-02-03T14:02:54.324-08:00</updated><title type='text'>Steps to deploy an ASP.NET 2.0 web application in Apache 2 using mod_mono 2.2 (In OpenSuse 11)</title><content type='html'>&lt;p&gt;this is a quick list of the steps required to deploy .Net applications under Apache 2 and mod_mono in OpenSuse 11&lt;/p&gt;&lt;ol&gt; &lt;li&gt;Compile your web application. You can do it on Linux using MonoDevelop or using Visual Studio 2008, we usually compile it on Linux just to be sure the website will no have problems to start.&lt;/li&gt; &lt;li&gt;Create a folder for your application. &lt;div&gt;  &lt;p&gt;In our case we created a folder named "WebApp " under this directory:&lt;/p&gt;  &lt;p class="paths"&gt;/usr/share/mono/asp.net/apps/&lt;/p&gt;  &lt;p&gt;just because there were other demo applications that come with mono.&lt;/p&gt;  &lt;p&gt;Be sure to give this folder the right permissions. open a Console and log in as the root user (sudo -s) and move to the folder. Use the chmod command to change the permissions if necessary (chmod 777 ./ will enable all the permissions under this folder, you can try adding only the necessary access level, because 777 enable all of them)&lt;/p&gt;   &lt;/div&gt; &lt;/li&gt; &lt;li&gt;  copy the contents of the compiled web application to the new folder created. &lt;/li&gt; &lt;li&gt;  navigate to the folder "/etc/apache2/conf.d" and create a text file named "WebApp.conf" &lt;/li&gt; &lt;li&gt;   copy this code inside the file  &lt;div&gt;&lt;pre name='code' class='xml'&gt;
    Alias /WebApp /usr/share/mono/asp.net/apps/WebApp
    MonoApplicationsConfigFile WebApp /etc/xsp/2.0/applications-available/WebApp.webapp
    MonoServerPath WebApp &amp;quot;/usr/bin/mod-mono-server2&amp;quot;
    MonoSetEnv WebApp MONO_IOMAP=all
    &amp;lt;Location /WebApp&amp;gt;
     Allow from all
     Order allow,deny
     SetHandler mono
     MonoSetServerAlias WebApp
    &amp;lt;/Location&amp;gt;
&lt;/pre&gt;  &lt;/div&gt; &lt;/li&gt; &lt;li&gt;  As you can see in the line 2 we point to a WebApp file that should be located in the /etc/xsp/2.0/applications-available/, so navigate to that folder an create a WebApp.webapp text fileand put this code inside this file: &lt;div&gt;  &lt;pre class='php' name='code'&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;
   &amp;lt;web-application&amp;gt;
    &amp;lt;name&amp;gt;WebApp&amp;lt;/name&amp;gt;
    &amp;lt;vpath&amp;gt;/WebApp&amp;lt;/vpath&amp;gt;
    &amp;lt;path&amp;gt;/usr/share/mono/asp.net/apps/WebApp&amp;lt;/path&amp;gt;
    &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
   &amp;lt;/web-application&amp;gt;
&lt;/pre&gt; &lt;/div&gt;   &lt;/li&gt; &lt;li&gt;  Now is time to restart apache, so run this command: "apache2ctl restart". &lt;/li&gt; &lt;li&gt;  Now open your browser and navigate to http://localhost/WebApp/Default.aspx (if Default.aspx exist or maybe other page that you have in the site) &lt;/li&gt; &lt;li&gt;  If all went without errors now you can enjoy your new website running under Apache 2 using mod_mono 2.2 &lt;/li&gt;&lt;/ol&gt;&lt;p&gt; Notes: There a lot of things that could go, wrong, maybe you will need to first Install Apache 2, if you don't already have it in your Linux distro, or maybe the mod_mono 2.2. Those tasks are out of the scope of this post. The present list of steps were written here just to never forget them.if you need help to install apache 2 or mod_mono, or even MONO 2.2, then you will need to do some googling by yourself. sorry :(&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-5931063928710373217?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/5931063928710373217/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=5931063928710373217' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5931063928710373217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5931063928710373217'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/01/steps-to-deploy-aspnet-20-web.html' title='Steps to deploy an ASP.NET 2.0 web application in Apache 2 using mod_mono 2.2 (In OpenSuse 11)'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-2207465516721095531</id><published>2009-01-27T13:29:00.001-08:00</published><updated>2009-03-30T21:50:00.608-07:00</updated><title type='text'>MONO Formview/ObjectDataSourceView Bug?. Why some of the sections of my website Dissapear?</title><content type='html'>&lt;h2&gt;UPDATE : MONO Has Fixed this Bug in the 2.4 release, at least it seems to be fixed looking at the source code &lt;/h2&gt;
&lt;h3&gt;But it seems to fail when the result is null because it returns a new Object  collection with a null element wich seems to be wrong, so this patch could still apply under some circunstances&lt;/h3&gt;
&lt;p&gt;Well some days ago, while we’re developing our current project release using MONO 1.9.1, MONO 2.0 were released. It was including a lot of bugfixes and new features. So now we were able to compile the application in Linux without make any modification. We were really happy.&lt;/p&gt;  &lt;p&gt;But our happiness was futile. Suddenly we realize that some portions of the Website were&amp;#160; not been rendered. We review the rendered code and realized that the formviews were not been rendered properly.&lt;/p&gt;  &lt;p&gt;The Gridviews and other ASP.NET controls were rendering good, but, not the formviews. As we had to continue with the project release, we decide to turn back to MONO 1.9.1. At the end of the past Sprint, we decide to rertun and investigate why the the Formviews were not rendering.&lt;/p&gt;  &lt;p&gt;First we were suspecting that it could be maybe a Viewstate Issue, (When we turned off the viewstate for the formview controls in MONO 1.9.1 they were not rendered also, turning the viewstate on solved the issue). But turning on or off the viewstate in MONO 2.0.x had no effect. The formview were still not rendered.&lt;/p&gt;  &lt;p&gt;So, after some time of digging into the code, creating our custom Formview controls that inherited the ASP.NET Formview, overriding some methods and using the Response as Console for debugging (God! Mono needs a Debugger!) we found the issue.&lt;/p&gt;  &lt;p&gt;So, here is:&lt;/p&gt;  &lt;p&gt;The problem is located at the &lt;strong&gt;ExecuteSelect Method&lt;/strong&gt; of the &lt;strong&gt;ObjectDataSourceView Class&lt;/strong&gt; that is located in this path inside the MONO Source directory: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;mono-2.2\mcs\class\System.Web\System.Web.UI.WebControls\ObjectDataSourceView.cs&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;(The MONO sources can be obtained from &lt;a href="http://ftp.novell.com/pub/mono/sources-stable/" target="_blank"&gt;this location&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;the method has this lines of code that could be wrong:&lt;/p&gt;  &lt;pre class="csharp" name="code"&gt;if (result is IEnumerable)&lt;br /&gt; return (IEnumerable) result;&lt;br /&gt;else&lt;br /&gt; return new object[] {};&lt;/pre&gt;&lt;p&gt;As you can see when you have methods that return only a single instance of an entity, and those methods are used as the SelectMethods of the ObjectDataSource Controls, the ExecuteSelect will consider they’re not IEnumerable instances so it will return an Empty collection, causing that the Formview Controls render nothing at the Aspx pages.&lt;/p&gt;&lt;p&gt;the correct code should be:&lt;/p&gt;&lt;pre class="csharp" name="code"&gt;if (result is IEnumerable)&lt;br /&gt; return (IEnumerable) result;&lt;br /&gt;return (result != null)?  new object [] { result } : new object[] {};&lt;/pre&gt;&lt;p&gt;as you can see, now only if the result is null will be returned an empty collection otherwise a collection with exactly one element is returned.&lt;/p&gt;&lt;p&gt;So doing that modification, and recompiling the MONO Sources you could make your Formview Controls work properly again.&lt;/p&gt;&lt;p&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=469221" target="_blank"&gt;I reported the bug&lt;/a&gt;, but I’m not so sure if that is really a bug, (because maybe it is intended to work like that in the specs…) or if it will be solved soon by the MONO team.&lt;/p&gt;&lt;p&gt;Well, here is some useful information.&lt;/p&gt;&lt;p&gt;Details of the Bug, and some comments about it:&lt;/p&gt;&lt;p&gt;&lt;a title="http://go-mono.com/forums/#nabble-td21435835" href="http://go-mono.com/forums/#nabble-td21435835"&gt;http://go-mono.com/forums/#nabble-td21435835&lt;/a&gt;&lt;/p&gt;&lt;p&gt;To re compile MONO Sources, after do the code change:&lt;/p&gt;&lt;p&gt;&lt;a title="http://blog.palehorse.net/2008/11/06/my-adventures-installing-mono-20-on-centos-4-to-work-with-apache-via-mod_mono/" href="http://blog.palehorse.net/2008/11/06/my-adventures-installing-mono-20-on-centos-4-to-work-with-apache-via-mod_mono/"&gt;http://blog.palehorse.net/2008/11/06/my-adventures-installing-mono-20-on-centos-4-to-work-with-apache-via-mod_mono/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Good Luck, Hopely this could help someone else!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-2207465516721095531?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/2207465516721095531/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=2207465516721095531' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2207465516721095531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2207465516721095531'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2009/01/mono-formviewobjectdatasourceview-bug.html' title='MONO Formview/ObjectDataSourceView Bug?. Why some of the sections of my website Dissapear?'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-4612041244426701920</id><published>2008-11-25T13:11:00.001-08:00</published><updated>2008-11-25T13:11:50.663-08:00</updated><title type='text'>OpenSuse 11.0 plugin qt_pkg error</title><content type='html'>&lt;p&gt;Sometime ago I downloaded the VM ware image of OPEN SUSE 11.0 that comes with MONO 2.0, but there were some annoying bugs with this version of MONO that was taking me crazy so as soon as the 2.0.1 version of MONO appeared, I wanted to upgrade to that version.&lt;/p&gt;  &lt;p&gt;I launch the YAST2 application just to find that this application was not able to be started because it was missing the qt_pkg plugin. It was so annoying!!!! &lt;/p&gt;  &lt;p&gt;After some research in google I finally found the solution in an Italian forum:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.suseitalia.org/modules/newbb/viewtopic.php?topic_id=18739&amp;amp;forum=1&amp;amp;post_id=107616"&gt;http://www.suseitalia.org/modules/newbb/viewtopic.php?topic_id=18739&amp;amp;forum=1&amp;amp;post_id=107616&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, basically to make the story short if you are having this problem too, try this, it worked for me!&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;open a shell terminal &lt;/li&gt;    &lt;li&gt;type : sudo zypper in yast2-qt-pkg yast2-qt &lt;/li&gt;    &lt;li&gt;Answer yes to the download question. &lt;/li&gt;    &lt;li&gt;Wait and lauch Yast2! Now it should work normally! &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Really thanks to “Anubis” for the solution to this really annoying error! &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-4612041244426701920?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/4612041244426701920/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=4612041244426701920' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4612041244426701920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4612041244426701920'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/11/opensuse-110-plugin-qtpkg-error.html' title='OpenSuse 11.0 plugin qt_pkg error'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-4293700282738656586</id><published>2008-10-02T10:14:00.001-07:00</published><updated>2008-12-16T13:27:00.150-08:00</updated><title type='text'>To Validate or not to Validate, XHTML, Dojo and Custom Attributes</title><content type='html'>&lt;p&gt;Well, I must admit it. Now I really confused, I was validating the XHTML output of the pages of our current project, and because we used some custom attributes to create some widgets using a combination of Javascript and HTML (a custom attribute is an attribute that is not part of the HTML or XHTML specifications, like in &amp;lt;div id=”dialog” custom_type=”dialog”&amp;gt;, the custom attribute is “custom_type”), I realize the pages will fail the validation process, and as I was suspecting they did, they fail. But I remember that a big and popular Javascript toolkit uses custom attributes too, so, I think, mmm, “let’s look how they did to make their html output be valid XHTML”, and what I found has confused me a lot.&lt;/p&gt;  &lt;p&gt;Dojo does not produce valid XHTML, they remove the Dojo namespace from their markup, so their pages don’t validate anymore (&lt;a href="http://dojotoolkit.org/book/dojo-porting-guide-0-4-x-0-9/widgets/general"&gt;http://dojotoolkit.org/book/dojo-porting-guide-0-4-x-0-9/widgets/general&lt;/a&gt;). Why? I don’t really understand why?, I really want to know it.&lt;/p&gt;  &lt;p&gt;Well, I think they’re tired of the war: “The Parser” posts this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;[...] &lt;/p&gt;    &lt;p&gt;&lt;i&gt;There's a big religious war about whether pages validating or not is important and I don't want to beat that dead horse anymore.&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;[...]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Lucky me, Dojo was not my favorite Javascript toolkit, and in my current project I am not using it, I am using JQuery (Dojo fans, sorry, if you need to make your code valid, as far as I know, you will have to make changes to the parser!!).&lt;/p&gt;  &lt;p&gt;But, what can I do now? Do I must forget about Validation issues?&lt;/p&gt;  &lt;p&gt;Well I was looking deeper and I found a really nice post from Jonh Resig &lt;a href="http://ejohn.org/blog/html-5-data-attributes/"&gt;http://ejohn.org/blog/html-5-data-attributes/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It seems that HTML 5 (&lt;a href="http://www.w3.org/html/wg/html5"&gt;http://www.w3.org/html/wg/html5&lt;/a&gt;) includes some cool features!, like the data-attribute to declare custom attributes, so in the future, I will not have to deal with custom DTDs &lt;strike&gt;or custom XHTML Namespaces&lt;/strike&gt;! (Namespaces are not used to validate XHTML, Thanks for the comment zcorpan!).&lt;/p&gt;  &lt;p&gt;But, now I’m more confused! What should I do?.&lt;/p&gt;  &lt;p&gt;Should I still try to make the pages validate or not?&lt;/p&gt;  &lt;p&gt;Well &lt;strike&gt;I think I could use XHTML Namespaces to make it validate&lt;/strike&gt;.(I will use the approach of the data-attribute in order to keep compatible with the HTML5 specification) So I will have to do some changes now. A little bit more of work, but at the end of the day I will feel better with myself. But seriously I’m already confused, because the future is not as clear as I was thinking... Ok, don’t you believe me? Take a look to these good articles:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xhtml.com/en/future/x-html-5-versus-xhtml-2/#x5"&gt;http://xhtml.com/en/future/x-html-5-versus-xhtml-2/#x5&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.robertnyman.com/2007/02/05/html-5-or-xhtml-2/"&gt;http://www.robertnyman.com/2007/02/05/html-5-or-xhtml-2/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Goodbye.&lt;/p&gt;  &lt;p&gt;---&lt;/p&gt;  &lt;p&gt;Take a look to this post too:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://marcgrabanski.com/article/5-tips-for-better-jquery-code" href="http://marcgrabanski.com/article/5-tips-for-better-jquery-code"&gt;http://marcgrabanski.com/article/5-tips-for-better-jquery-code&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-4293700282738656586?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/4293700282738656586/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=4293700282738656586' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4293700282738656586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4293700282738656586'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/10/to-validate-or-not-to-validate-xhtml.html' title='To Validate or not to Validate, XHTML, Dojo and Custom Attributes'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-7607225569478393402</id><published>2008-10-01T14:25:00.001-07:00</published><updated>2008-10-01T15:08:54.164-07:00</updated><title type='text'>Regular Expresions</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.ggpht.com/royriojas/SOPqof-5a_I/AAAAAAAADjE/IiMeMA4kKiw/s1600-h/RegularExpressionLogo%5B4%5D.jpg"&gt;&lt;img title="RegularExpressionLogo" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="118" alt="RegularExpressionLogo" src="http://lh4.ggpht.com/royriojas/SOPqoxOJxnI/AAAAAAAADjI/ON9XPUwGf3Q/RegularExpressionLogo_thumb%5B2%5D.jpg?imgmax=800" width="642" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Hi, again…&lt;/p&gt;  &lt;p&gt;Regular expressions are extremely useful, you can think on them like “wildcards on steroids” (I like that phrase I found it here: &lt;a href="http://www.regular-expressions.info/index.html"&gt;http://www.regular-expressions.info/index.html&lt;/a&gt;), they save you a lot of time when you do a search inside a string and want to return the matches based on a pattern or when you want to do replacements based on them. I don’t really remember when I started to use Regular Expressions but now I use them quite often. So here are some tips that I’ve found so far, in Javascript:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;(If you already know a lot about Regular Expressions, please go directly to my seven tip, maybe you can find it useful).&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. You can match a specific character using its hexadecimal index in the character set: &lt;/strong&gt;e.g.: \xA9 matches the copyright symbol in the Latin-1 character set.&lt;/p&gt;  &lt;p&gt;This one is really useful when you’re working with Unicode, there are several considerations if you plan to work with Unicode, take in mind that Unicode may encode a single grapheme as two different characters, e.g.: “à” could be “a” and “`” so many regular expressions could fail mysteriously, and it could be hard to find why. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Use shorthand characters when possible&lt;/strong&gt;, e.g. : use \d instead of [0-9] and \w to match any word character (alphanumeric characters plus underscore). The regular expression will be more readable.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Take in mind that “.” matches (almost) any character&lt;/strong&gt;. Well this will work different in IE and in Firefox, in IE the “.” Matches even line breaks, and in Firefox line breaks won’t be matched. This difference is really important to remember.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. Use capture groups if you plan to do something with the results&lt;/strong&gt;, you can define a group using “(” and “)” like in (q)(u) (this will match q followed by and u and you will have 2 capturing group, to access each group use $1 and $2 for each group. Please note that the groups index begin in “1”, the group 0 contains the entire match not a specific group.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;5. Lazy Repetition feature is useful but it can be expensive&lt;/strong&gt;, like in &amp;lt;.+?&amp;gt; that matches any html tag (invalid tags inclusive!), if you now the exactly set of characters expected is better to use &amp;lt;[^&amp;lt;&amp;gt;]+&amp;gt;, it will perform better that the “.” Character.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;6. You can create a regular expression in Javascript in two ways:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;a. Using literal notation: /(q)(?=u)(u)/g&lt;/p&gt;  &lt;p&gt;b. Using: var regx = new RegExp(“(q)(?=u)(u)”,g);&lt;/p&gt;  &lt;p&gt;Take in mind that for the second way &lt;strong&gt;you need to be careful when you use the special characters like “\”.&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;E.g.: &lt;/p&gt;  &lt;p&gt;/((ht|f)tp(s?):\/\/)?((W){3}\.)?(\w)+((\.)(([a-zA-Z])+/?)?)+/g &lt;/p&gt;  &lt;p&gt;Var reg = new RegExp(“((ht|f)tp(s?): / /)?((W){3}\\.)?(\w)+((\\.)(([a-zA-Z])+/?)?)+”,g) &lt;/p&gt;  &lt;p&gt;Please note that the &lt;strong&gt;“\.”&lt;/strong&gt; in the literal notation is translated to &lt;strong&gt;“\\.”&lt;/strong&gt; when you use the constructor notation.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;7. Make yourself a big favor (a really big favor, even if you’re a Regular Expression Guru like my friend Paolo, he is really good with Regular Expressions!), and consider use this free tool: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.gskinner.com/RegExr/"&gt;http://www.gskinner.com/RegExr/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/royriojas/SOPqpZGojbI/AAAAAAAADjM/YAvrVz2GJME/s1600-h/gskinnertool%5B4%5D.jpg"&gt;&lt;img title="gskinnertool" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="648" alt="gskinnertool" src="http://lh4.ggpht.com/royriojas/SOPqp-u9isI/AAAAAAAADjQ/L_QipG9gvCA/gskinnertool_thumb%5B2%5D.jpg?imgmax=800" width="853" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This online tool is as simply as impressive, it is really complete and the regular expressions created there work quite well in Javascript, you can construct your regular expressions and test them on the fly! &lt;strong&gt;(this tool comes to you as a courtesy of my good friend Hans who recommended me to use it, and now I simply can’t imagine work with Regular Expressions without it)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There is also a Desktop version located here: &lt;a title="http://www.gskinner.com/RegExr/desktop/" href="http://www.gskinner.com/RegExr/desktop/"&gt;http://www.gskinner.com/RegExr/desktop/&lt;/a&gt; (it needs Adobe Air installed)&lt;/p&gt;  &lt;p&gt;or use this other tool:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://osteele.com/tools/rework/" href="http://osteele.com/tools/rework/"&gt;http://osteele.com/tools/rework/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/royriojas/SOPqqX-SsYI/AAAAAAAADjU/l9vh1GeicEc/s1600-h/rework-tool%5B7%5D.jpg"&gt;&lt;img title="rework-tool" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="756" alt="rework-tool" src="http://lh6.ggpht.com/royriojas/SOPqrFCCZLI/AAAAAAAADjY/7MqwCOyuXew/rework-tool_thumb%5B5%5D.jpg?imgmax=800" width="846" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;is really impresive too, and had a lot of features and it is programmed in javascript , but i don’t know why I prefer the first one :P, maybe because it looks nicer. &lt;/p&gt;  &lt;p&gt;So that’s all so far.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-7607225569478393402?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/7607225569478393402/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=7607225569478393402' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/7607225569478393402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/7607225569478393402'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/10/regular-expresions.html' title='Regular Expresions'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/royriojas/SOPqoxOJxnI/AAAAAAAADjI/ON9XPUwGf3Q/s72-c/RegularExpressionLogo_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-4494782281857717860</id><published>2008-09-03T09:39:00.001-07:00</published><updated>2008-09-03T09:39:16.352-07:00</updated><title type='text'>Google Chrome – just another browser? Or the definitively one?</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/royriojas/SL69sI2R1kI/AAAAAAAADdw/v_j1IuBPBQY/s1600-h/chrome%5B4%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="224" alt="chrome" src="http://lh5.ggpht.com/royriojas/SL69sxFHFFI/AAAAAAAADd0/M65sgcSQApc/chrome_thumb%5B2%5D.jpg?imgmax=800" width="729" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Well, I must admit, it&amp;#8217;s still a young project but it looks really nice. The project was keep in secret for more than one year. I cannot wait to try it, so I downloaded it and installed it. It&amp;#8217;s a minimalist browser, it has tabs, and a clean UI.&lt;/p&gt;  &lt;p&gt;It seems that it is based on Mozilla and Webkit, and it&amp;#8217;s really fast when it comes to javascript performance, it is really fast.&lt;/p&gt;  &lt;p&gt;They have created an entirely new browser from the scratch. Why? Well they have collected an entire set of reasons into this clear and funny comic style &amp;#8220;googlebook&amp;#8221;: &lt;a href="http://www.google.com/googlebooks/chrome/"&gt;http://www.google.com/googlebooks/chrome/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What&amp;#8217;s new with this browser? &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;It&amp;#8217;s free, open source &lt;/li&gt;    &lt;li&gt;It has support for standards. &lt;/li&gt;    &lt;li&gt;It&amp;#8217;s designed for the today&amp;#8217;s demanding web applications &lt;/li&gt;    &lt;li&gt;It has a faster Javascript VM (Yes! a Virtual Machine, so it compiles Javascript instead of just interpret it!!, impressive). Developed by the V8 Team &lt;/li&gt;    &lt;li&gt;It provides each tab with his own isolated environment called the Sandbox, so the risk from attacks and from malware on the web are minimized (not completed eliminated, that&amp;#8217;s really hard to accomplish even for google!!) &lt;/li&gt;    &lt;li&gt;Improved Garbage Collection. (No more memory leaks like in IE?, well, I have to test it!!!) &lt;/li&gt;    &lt;li&gt;Nice UI, simple and consistent. &lt;/li&gt;    &lt;li&gt;A simpler popup blocker. &lt;/li&gt;    &lt;li&gt;It has Google Gears included. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So what&amp;#8217;s bad with this browser?&lt;/p&gt;  &lt;p&gt;1. I can&amp;#8217;t find easily my favorites. (well to be honest, my friend Paolo didn&amp;#8217;t find them)&lt;/p&gt;  &lt;p&gt;2. They say that each tab runs on an entirely separated process, so, having 10 tabs open, we have then 10 process with all the memory and the resources they need to be opened. Mmm, they claim that his memory management does a great job, and can cope with the challenge&amp;#8230; but, let&amp;#8217;s try it and look what happens.&lt;/p&gt;  &lt;p&gt;3. It has a kind of firebug addon integrated, but, It&amp;#8217;s not dockable like the firebug plugin for Mozilla, so it&amp;#8217;s a little bit hard to work with it.&lt;/p&gt;  &lt;p&gt;So, to resume all in just one sentence&amp;#8230;&lt;/p&gt;  &lt;p&gt;Google Chrome is not only a Web Browser. It&amp;#8217;s an application platform to run Web Applications. &lt;/p&gt;  &lt;p&gt;Nice, isn&amp;#8217;t it? Well, IMHO, the competence is good for the Web and for us.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-4494782281857717860?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/4494782281857717860/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=4494782281857717860' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4494782281857717860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4494782281857717860'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/09/google-chrome-just-another-browser-or.html' title='Google Chrome – just another browser? Or the definitively one?'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/royriojas/SL69sxFHFFI/AAAAAAAADd0/M65sgcSQApc/s72-c/chrome_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-4016565717439873880</id><published>2008-06-24T08:29:00.001-07:00</published><updated>2008-06-24T09:06:24.566-07:00</updated><title type='text'>REST</title><content type='html'>&lt;h2&gt;Representational State Transfer&lt;/h2&gt;  &lt;p&gt;Roy Fielding's explanation of the meaning of Representational State Transfer&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;hr /&gt;  &lt;p&gt;Basicamente &lt;strong&gt;RE&lt;/strong&gt;presentational &lt;strong&gt;S&lt;/strong&gt;tate &lt;strong&gt;T&lt;/strong&gt;ransfer que podr&amp;#237;a ser traducido como Transferencia del Estado de Representaci&amp;#243;n, es un estilo de arquitectura, que pretende aprovechar los factores que han hecho que la WWW sea tan exitosa. &lt;/p&gt;  &lt;p&gt;La Web puede verse como una serie de recursos, los cuales contienen informaci&amp;#243;n directamente consumible y/o enlaces a otros recursos, cada vez que un &lt;strong&gt;recurso&lt;/strong&gt; es pedido al servidor se est&amp;#225; accediendo a un &lt;strong&gt;Representaci&amp;#243;n del mismo&lt;/strong&gt;, y esta representaci&amp;#243;n pone a la aplicaci&amp;#243;n cliente en un &lt;strong&gt;estado&lt;/strong&gt;. Por ejemplo, al pedir la p&amp;#225;gina &lt;a href="http://fooserver/products/"&gt;http://fooserver/products/&lt;/a&gt; (la direcci&amp;#243;n no existe, es solo de ejemplo) estamos accediendo a un recurso que nos muestra un listado de productos y coloca a la aplicaci&amp;#243;n en el &lt;strong&gt;estado A&lt;/strong&gt;, y si al hacer click sobre el link del producto accedemos a su descripci&amp;#243;n estar&amp;#237;amos siendo &lt;strong&gt;transferidos &lt;/strong&gt;hacia otro Recurso y por tanto cambiando de estado digamos a un &lt;strong&gt;estado B&lt;/strong&gt;. de all&amp;#237; el nombre de &lt;strong&gt;RE&lt;/strong&gt;presentational &lt;strong&gt;S&lt;/strong&gt;tate &lt;strong&gt;T&lt;/strong&gt;ransfer.&lt;/p&gt;  &lt;p&gt;En realidad el concepto no es algo totalmente nuevo, se basa en la idea de cada recurso debe poder ser:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&amp;#218;nico&lt;/li&gt;    &lt;li&gt;Accesible&lt;/li&gt;    &lt;li&gt;Humanamente Legible&lt;/li&gt;    &lt;li&gt;Independiente del Estado, o agnostico de los Estados Anteriores &lt;/li&gt;    &lt;li&gt;Bookmarkable&lt;/li&gt;    &lt;li&gt;Usar sustantivos en los recursos en lugar de verbos. por ejemplo ...products/parts/0012, en lugar de ...products/getPart?Id=0012&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hemos venido usando RESTful Services todo el tiempo, pues es la forma inherente en que funciona la web misma. &lt;/p&gt;  &lt;p&gt;Habr&amp;#225; que seguir investignado acerca de REST&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-4016565717439873880?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/4016565717439873880/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=4016565717439873880' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4016565717439873880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/4016565717439873880'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/06/rest.html' title='REST'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-2712403530129835906</id><published>2008-06-21T00:29:00.001-07:00</published><updated>2009-01-27T20:11:44.717-08:00</updated><title type='text'>Zend Framework + Smarty vs Simple Zend View Script</title><content type='html'>&lt;h2&gt;Smarty&lt;/h2&gt;  &lt;h4&gt;Descripci&amp;#243;n&lt;/h4&gt;  &lt;p&gt;Smarty es un Template Engine, o m&amp;#225;s propiamente un Template Framework. Sus caracter&amp;#237;sticas van m&amp;#225;s all&amp;#225; del simple reemplazo de variables o reemplazo de tags. Su principal caracter&amp;#237;stica es que las plantillas (Templates) solo son le&amp;#237;das e interpretadas una sola vez, como resultado de esta lectura se crea un archivo con c&amp;#243;digo PHP el cual es ejecutado durante los subsiguientes pedidos de las plantillas. Esta caracter&amp;#237;stica es conocida como Template Compiling.&lt;/p&gt;  &lt;h4&gt;Beneficios&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Es r&amp;#225;pido, (ellos ponen en este ac&amp;#225;pite, EXTREMADAMENTE R&amp;#193;PIDO). &lt;/li&gt;    &lt;li&gt;Es eficiente dado que las plantillas se compilan a c&amp;#243;digo PHP, reduciendo el overhead despu&amp;#233;s del primer pedido de la plantilla. &lt;/li&gt;    &lt;li&gt;Las plantillas se recompilan solo si es que estas han sido modificadas &lt;/li&gt;    &lt;li&gt;Se puede configurar a gusto, desde los delimitadores, hasta las funciones y modificadores de variables, haciendo que su lenguaje sea realmente extensible. &lt;/li&gt;    &lt;li&gt;Las estructuras de control (Sections, if, etc) pueden estar anidadas y ser tan complejas como se requiera. &lt;/li&gt;    &lt;li&gt;Se puede incluir c&amp;#243;digo PHP directamente en la plantilla, pero NO ES RECOMENDADO, dado que va en contra del esp&amp;#237;ritu de la plantilla. &lt;/li&gt;    &lt;li&gt;Soporte de Cache integrado. Es decir que se guarda el resultado de la ejecuci&amp;#243;n de una plantilla para un request dado, si otro request con los mismos par&amp;#225;metros es hecho luego se devolver&amp;#225; la p&amp;#225;gina que se tiene en Cache. Puede manipularse que secciones de la plantilla no deben guardarse en Cache. &lt;/li&gt;    &lt;li&gt;Se puede modificar la funci&amp;#243;n de manejo de Cache (Cache Handler Function) por ejemplo para utilizar una base de datos como proveedor de Cache en lugar del Filesystem. &lt;/li&gt;    &lt;li&gt;Es extensible a trav&amp;#233;s de su arquitectura de Plugins &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Desventajas&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Programar las Plantillas (Templates) (o Dise&amp;#241;arlos) requiere que la persona encargada (usualmente el dise&amp;#241;ador) aprenda un lenguaje de tags y expresiones que pueden serle igual de complejos que aprender la sintaxis del mismo PHP. &lt;/li&gt;    &lt;li&gt;Sin el uso del Cache de Smarty, el rendimiento decae considerablemente. Y a&amp;#250;n cuando se use el Cache, la lectura de un template durante un request es una operaci&amp;#243;n costosa (por el acceso al sistema de archivos) lectura que al parecer siempre se hace, para verificar si el archivo de plantilla ha cambiado y por tanto necesita ser recompilado. &lt;/li&gt;    &lt;li&gt;Aun cuando se separa claramente la l&amp;#243;gica de la Vista de la l&amp;#243;gica de Negocio los editores de HTML (como el dreamweaver) no siempre hacen un buen trabajo interpretando los tags del Template System. (aunque hay algunas extensiones para el caso del dreamweaver para que soporte Smarty). &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h2&gt;View Script (Zend View Default)&lt;/h2&gt;  &lt;h4&gt;Descripci&amp;#243;n&lt;/h4&gt;  &lt;p&gt;Zend utiliza por defecto para las vistas los View Scripts, que no son otra cosa m&amp;#225;s que archivos php (con toda la sintaxis del mismo php) que se ejecutan dentro del scope de la instancia de la vista que lo ha llamado (Zend_View instance) por tanto todas las referencias a $this dentro del archivo de scripts hacen referencia a las variables asignadas a la instancia de la vista. Por ejemplo si en el controller tenemos&lt;/p&gt;  &lt;pre name='code' class='php'&gt;$ZendView-&amp;gt;Something = &amp;#8216;here is something&amp;#8217; &lt;/pre&gt;  &lt;p&gt;En el View Script se accesa a la variable de esta forma&lt;/p&gt;  &lt;pre name='code' class='php'&gt;$this-&amp;gt;Something &lt;/pre&gt;&lt;h4&gt;Beneficios&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;PHP es por si mismo un Template Engine, los View Script est&amp;#225;n escritos en PHP, por lo que no ser&amp;#237;a necesario un Template Engine encima de &amp;#233;l. &lt;/li&gt;    &lt;li&gt;Mayor velocidad en la ejecuci&amp;#243;n de los View Scripts, (Son ya c&amp;#243;digo PHP, por lo que no necesitan ser compilados) &lt;/li&gt;    &lt;li&gt;No se necesita aprender un nuevo lenguaje, si se sabe PHP se sabe programar View Scripts &lt;/li&gt;    &lt;li&gt;Se tiene acceso a todo y se puede ejecutar todo tipo de c&amp;#243;digo dentro del View Script pues es un archivo .php com&amp;#250;n. No se depende solo de las funciones que un Template Engine provee o de los plugins que existan para el mismo. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Desventajas&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;El c&amp;#243;digo php puede no ser tan claro como los tags usados dentro de una plantilla      &lt;ul&gt;       &lt;li&gt;Por ejemplo &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;SMARTY&lt;/p&gt;  &lt;pre name="code" class="xhtml"&gt;&amp;lt;body&amp;gt;	&amp;lt;div&amp;gt;{$variable}&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&lt;/pre&gt;&lt;p&gt;VIEW SCRIPT&lt;/p&gt;&lt;pre name="code" class="xhtml"&gt;&amp;lt;body&amp;gt;	&amp;lt;div&amp;gt;&amp;lt;? $this-&amp;gt;variable ?&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&lt;/pre&gt;&lt;ul&gt;  &lt;li&gt;Un dise&amp;#241;ador com&amp;#250;n no suele tener conocimientos de PHP y puede parecerle m&amp;#225;s f&amp;#225;cil aprender el lenguaje de los Templates Engines que un lenguaje como PHP. &lt;/li&gt;  &lt;li&gt;No tiene estructuras de control ni plugins, por lo que hay que escribir bloques de c&amp;#243;digo php para manejar los loops y la generaci&amp;#243;n autom&amp;#225;tica de html. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;h2&gt;Conclusi&amp;#243;n&lt;/h2&gt;&lt;p&gt;La elecci&amp;#243;n de Smarty como Template Engine para manejar las vistas dentro del Zend Framework, pasar&amp;#225; por la evaluaci&amp;#243;n de &amp;#237;tems como:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Experiencia de la gente involucrada en el proyecto &lt;/li&gt;  &lt;li&gt;Necesidad de tiempo de respuesta de la aplicaci&amp;#243;n (Siempre y cuando el tema del tiempo de respuesta sea algo realmente vital) ver enlance: &lt;a href="http://template-bench.iliakantor.ru/"&gt;http://template-bench.iliakantor.ru/&lt;/a&gt;. De hecho al ser simplemente archivos PHP los View Script tienen la ventaja. Pues integrar Smarty al Zend Framework involucra un overhead que podr&amp;#237;a evitarse si se utiliza solamente los View Scripts. A&amp;#250;n cuando este overhead podr&amp;#237;a ser asumible teniendo en cuenta que Smarty provee un dise&amp;#241;o de la Vista &amp;#8220;m&amp;#225;s Limpio&amp;#8221;. &lt;/li&gt;  &lt;li&gt;Experiencia de los dise&amp;#241;adores web involucrados en el proyecto. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;En particular me inclinar&amp;#237;a por recomendar el uso de Smarty, por ser un Template Framework bastante extendido y bastante fiable y que al parecer no representar&amp;#237;a mayores inconvenientes integrarlo con el Zend Framework.&lt;/p&gt;&lt;p&gt;La integraci&amp;#243;n podr&amp;#237;a realizarse de varias formas. Una de las cuales est&amp;#225; incluso documentada en la misma p&amp;#225;gina de Referencia del Zend Framework.&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://framework.zend.com/manual/en/zend.view.scripts.html"&gt;http://framework.zend.com/manual/en/zend.view.scripts.html&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Otras implementaciones incluyen la construcci&amp;#243;n de una clase Factory que permita intercambiar f&amp;#225;cilmente entre plantillas de Smarty y View Scripts de Zend, e integrarla haciendo uso de las clases utilitarias del Zend framework.&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://codeutopia.net/blog/2007/11/08/summing-up-smarty-and-zend-view/"&gt;http://codeutopia.net/blog/2007/11/08/summing-up-smarty-and-zend-view/&lt;/a&gt; (Factory Class) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://naneau.nl/2007/05/31/using-naneau_view_smarty-with-rc1/"&gt;http://naneau.nl/2007/05/31/using-naneau_view_smarty-with-rc1/&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Fuentes&lt;/h3&gt;&lt;h4&gt;V&amp;#237;nculos Web&lt;/h4&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href="http://www.smarty.net/"&gt;http://www.smarty.net&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.smarty.net/whyuse.php"&gt;http://www.smarty.net/whyuse.php&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.smarty.net/rightforme.php"&gt;http://www.smarty.net/rightforme.php&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://framework.zend.com/manual/en/zend.view.html"&gt;http://framework.zend.com/manual/en/zend.view.html&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-2712403530129835906?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/2712403530129835906/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=2712403530129835906' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2712403530129835906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2712403530129835906'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/06/zend-framework-smarty-vs-simple-zend.html' title='Zend Framework + Smarty vs Simple Zend View Script'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-5082917556999034010</id><published>2008-05-27T16:10:00.001-07:00</published><updated>2008-05-27T16:55:15.873-07:00</updated><title type='text'>Migrar un proyecto DSL del SDK del Visual Studio 2005 al SDK del Visual Studio 2008</title><content type='html'>&lt;p&gt;&lt;a title="http://www.arquitecturadesoftware.org/blogs/hugoribeiro/archive/2008/02/07/dsl-tools-and-visual-studio-2008.aspx" href="http://www.arquitecturadesoftware.org/blogs/hugoribeiro/archive/2008/02/07/dsl-tools-and-visual-studio-2008.aspx"&gt;http://www.arquitecturadesoftware.org/blogs/hugoribeiro/archive/2008/02/07/dsl-tools-and-visual-studio-2008.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeproject.com/KB/cs/DSLTools.aspx" href="http://www.codeproject.com/KB/cs/DSLTools.aspx"&gt;http://www.codeproject.com/KB/cs/DSLTools.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-5082917556999034010?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/5082917556999034010/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=5082917556999034010' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5082917556999034010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5082917556999034010'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/05/migrar-un-proyecto-dsl-del-sdk-del.html' title='Migrar un proyecto DSL del SDK del Visual Studio 2005 al SDK del Visual Studio 2008'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-5546014955439413065</id><published>2008-05-21T14:07:00.001-07:00</published><updated>2008-05-21T14:08:24.504-07:00</updated><title type='text'>Desarrollo de un Framework</title><content type='html'>&lt;p&gt;Este es solo un enlace del post que corresponde al documento inicial de mi tesis.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.ittoolbox.com/eai/implementation/archives/project-initiation-develop-planning-framework-4930" href="http://blogs.ittoolbox.com/eai/implementation/archives/project-initiation-develop-planning-framework-4930"&gt;http://blogs.ittoolbox.com/eai/implementation/archives/project-initiation-develop-planning-framework-4930&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-5546014955439413065?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/5546014955439413065/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=5546014955439413065' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5546014955439413065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5546014955439413065'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/05/desarrollo-de-un-framework.html' title='Desarrollo de un Framework'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-8761853243161664696</id><published>2008-04-10T00:27:00.001-07:00</published><updated>2008-04-10T20:20:25.741-07:00</updated><title type='text'>xPopUp Control Usando el YUI y compatible con ASP.NET Ajax</title><content type='html'>&lt;style type="text/css"&gt;

.codigo p { margin: 3px; }&lt;/style&gt;  &lt;p&gt;&lt;a href="http://www.cyberlobito.com/R3M/PopUpControl.rar"&gt;&lt;strong&gt;Descargar el ejemplo&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A las pocas semanas de haber iniciado mi vida laboral, durante el desarrollo de RGen, me encontr&amp;#233; frente a un problema que ser&amp;#237;a recurrente en la mayor&amp;#237;a de desarrollos de aplicaciones web a partir de ese momento. El problema de las ventanas PopUp Modales en el Web.&lt;/p&gt;  &lt;p&gt;El principal problema es que no hay una manera uniforme de abrir ventanas modales que se comporten igual a trav&amp;#233;s de los diferentes browsers, para el mundo del Internet Explorer existe la posibilidad de abrir ventanas modales haciendo uso del &lt;a href="http://msdn2.microsoft.com/en-us/library/ms536759(VS.85).aspx"&gt;ShowModalDialog&lt;/a&gt;, pero este m&amp;#233;todo no funciona en los dem&amp;#225;s Navegadores. La primera ventana PopUp Modal realmente &amp;#250;til y Cross-Browser que hall&amp;#233; fue la de &lt;a href="http://www.subimage.com/dhtml/subModal/"&gt;Submodal&lt;/a&gt;, muy buena, pero carec&amp;#237;a de las funciones b&amp;#225;sicas de una ventana, como poder moverla haciendo uso de la barra y otras cosas. Luego escrib&amp;#237; una ventana PopUp Modal (xPopUp) basada en las librer&amp;#237;as del sitio &lt;a href="http://www.cross-browser.com/"&gt;Cross-Browser&lt;/a&gt; y su famosa librer&amp;#237;a X, (de all&amp;#237; la &amp;quot;x&amp;quot; en xPopUp). Nuevamente era &amp;#250;til pero ten&amp;#237;a muchas desventajas, todav&amp;#237;a requer&amp;#237;a que el desarrollador escribiese las l&amp;#237;neas de c&amp;#243;digo javascript necesarias para levantar la ventana, lo cual me parec&amp;#237;a una ser&amp;#237;a desventaja (&lt;a href="http://www.vabenne.com/advance/test/x_PopUp.html"&gt;xPopUp basada en Libreria X&lt;/a&gt;). Al tiempo que empec&amp;#233; a usar YUI, descubr&amp;#237; que sus Containers y Panels ofrec&amp;#237;an un mejor desempe&amp;#241;o (y un c&amp;#243;digo m&amp;#225;s limpio), por lo cual me decid&amp;#237; a escribir una ventana PopUp haciendo uso del YUI, la llam&amp;#233; igual xPopUp, y lo que es mejor la convert&amp;#237; en un Web User Control de .Net, (s&amp;#233; que podr&amp;#237;a haberlo hecho un Web Control, pero me pareci&amp;#243; suficiente para el contexto del proyecto en el que trabajaba que fuera un User Control). &lt;/p&gt;  &lt;p&gt;El control funcion&amp;#243; bien, y permite arrastrar un componente al dise&amp;#241;ador y setear sus propiedades para levantar la ventana PopUp requerida, la cual puede o no ser modal, adem&amp;#225;s de poder pasarle eventos que se disparan antes y despu&amp;#233;s de mostrar la ventana y poder definir su tama&amp;#241;o, adem&amp;#225;s de poder especificar el elemento que disparar&amp;#225; el lanzamiento de la ventana PopUp, por cierto todav&amp;#237;a es posible levantar la ventana PopUp directamente por c&amp;#243;digo Javascript.&lt;/p&gt;  &lt;p&gt;He preparado un archivo con todo lo necesario para poder levantar un sitio web de ejemplo que contiene al xPopUp Control el archivo lo pueden descargar de &lt;a href="http://www.cyberlobito.com/R3M/PopUpControl.rar"&gt;aqu&amp;#237;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Aqu&amp;#237; se ve el control funcionando en el sitio de prueba tal como se ve en Internet Explorer y en Mozilla Firefox.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Mozilla Firefox&lt;/strong&gt; &lt;/td&gt;        &lt;td&gt;&lt;strong&gt;Internet Explorer&lt;/strong&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://lh3.ggpht.com/royriojas/R_290PvNHgI/AAAAAAAADaE/MqQw9gzex6M/s1600-h/image%5B7%5D.png"&gt;&lt;img height="406" alt="image" src="http://lh6.ggpht.com/royriojas/R_298_vNHhI/AAAAAAAADaM/0LEzuwsRj5Y/image_thumb%5B5%5D.png?imgmax=800" width="504" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;a href="http://lh3.ggpht.com/royriojas/R_2-CPvNHiI/AAAAAAAADaU/c6HMU5pvhRM/s1600-h/image%5B12%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="405" alt="image" src="http://lh5.ggpht.com/royriojas/R_3BSvvNHjI/AAAAAAAADac/P9Opgp7TcgM/image_thumb%5B8%5D.png?imgmax=800" width="616" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="Codigo"&gt;   &lt;h4&gt;COMO USARLO&lt;/h4&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;Al Arrastrar el componente al dise&amp;#241;ador se ver&amp;#225; un tag similar a este: &lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;uc1&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ucPopUpControl&lt;/span&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;UcPopUpControl4&amp;quot;&lt;/span&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: red"&gt;OnShowingScript&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;f_show&amp;quot;&lt;/span&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: red"&gt;OnHidingScript&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;f_hide&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;UrlToLoad&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ThePopUp.aspx?Id=32&amp;quot;&lt;/span&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IsModal&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;WindowTitle&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Con Eventos!!!&amp;quot;&lt;/span&gt;&amp;#160;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times" EN-US?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9pt; font-family: consolas; mso-bidi-font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FixedToCenter&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; line-height: 115%; font-family: consolas; mso-bidi-font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9pt; line-height: 115%; font-family: consolas; mso-bidi-font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;TriggerId&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ct00_Button1&amp;quot;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9pt; line-height: 115%; font-family: consolas; mso-bidi-font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9pt; line-height: 115%; font-family: consolas; mso-bidi-font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;div class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;strong&gt;ID: &lt;/strong&gt;El ucPopUpControl Id&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;strong&gt;OnShowingScript&lt;/strong&gt;: La funci&amp;#243;n Javascript que se ejecuta antes que se muestre la ventana popup.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;strong&gt;OnHidingScript&lt;/strong&gt;: La funci&amp;#243;n Javascript que se ejecuta despu&amp;#233;s que la ventana es cerrada.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;strong&gt;UrlToLoad&lt;/strong&gt;: La pagina Aspx o cualquier otra URL a cargar&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;strong&gt;IsModal&lt;/strong&gt;: Flag para decirle al control que muestre la ventana en forma modal&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;strong&gt;WindowTitle:&lt;/strong&gt; El t&amp;#237;tulo que tendr&amp;#225; la barra de la ventana popup&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;strong&gt;FixedToCenter&lt;/strong&gt;: Si la vetana debe reacomodarse al centro del &amp;#225;rea cliente del Browser.&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;strong&gt;TriggerId: &lt;/strong&gt;El ClientID (si lo s&amp;#233; esto debe poder mejorarse!!!!! deber&amp;#237;a ser el Id del control y el control internamente deber&amp;#237;a poder ubicar el ClientID del control)&lt;/div&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9pt; line-height: 115%; font-family: consolas; mso-bidi-font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9pt; line-height: 115%; font-family: consolas; mso-bidi-font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" roman?;="roman?;" new="new" times="times"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;Nota Aparte:&lt;/strong&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;La verdad todav&amp;#237;a no s&amp;#233; si es buena idea mezclar ambas librer&amp;#237;as, me refiero a las del YUI (&lt;a href="http://developer.yahoo.com/yui"&gt;developer.yahoo.com/yui&lt;/a&gt;) y las del ASP.NET Ajax, b&amp;#225;sicamente porque hay muchos m&amp;#233;todos que se definen 2 veces, como el &lt;strong&gt;$addHandler&lt;/strong&gt; (creo que se llaman as&amp;#237;) y el &lt;strong&gt;addEvent&lt;/strong&gt; del YUI, ambos por ejemplo hacen lo mismo y podr&amp;#237;an ser utilizados indistintamente. En fin es un tema que tendr&amp;#233; que revisar en alg&amp;#250;n momento.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-8761853243161664696?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/8761853243161664696/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=8761853243161664696' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/8761853243161664696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/8761853243161664696'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/04/xpopup-control-usando-el-yui-y.html' title='xPopUp Control Usando el YUI y compatible con ASP.NET Ajax'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/royriojas/R_298_vNHhI/AAAAAAAADaM/0LEzuwsRj5Y/s72-c/image_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-9085000774057241022</id><published>2008-04-09T14:32:00.000-07:00</published><updated>2008-04-09T14:35:25.880-07:00</updated><title type='text'>IE7 / IE8 a compliant browser???</title><content type='html'>&lt;p&gt;bueno este post será solo temporal, hasta q lo pueda arreglar, es más que nada un recordatorio, hoy encontré que Dean Edwards había escrito una libreria javacript que hace que el IE se comporte como un "Compliant Browser", el enlace lo dejo aquí
&lt;a href="http://code.google.com/p/ie7-js/"&gt;IE7 Compliant Patch for Microsoft Browsers&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Saludos&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-9085000774057241022?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/9085000774057241022/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=9085000774057241022' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/9085000774057241022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/9085000774057241022'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/04/ie7-ie8-compliant-browser.html' title='IE7 / IE8 a compliant browser???'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-2073620059554310924</id><published>2008-04-08T22:01:00.001-07:00</published><updated>2008-04-08T22:07:22.833-07:00</updated><title type='text'>Lista de Herramientas, Librerías y/o Utilitarios Básicos</title><content type='html'>&lt;p&gt;Cuando empec&amp;#233; a trabajar con el Visual Studio me di cuenta que el IDE ten&amp;#237;a muchas posibilidades y que adem&amp;#225;s brindaba mucha ayuda para la escritura de c&amp;#243;digo, pero pronto me di cuenta que las tareas que me encontraba realizando eran tediosamente repetitivas, tareas como escribir stored procedures CRUD para cada una de las tablas de los sistemas que estabamos desarrollando, (S&amp;#237; inicialmente no hac&amp;#237;amos mayor an&amp;#225;lisis de clases y esas cosas, basamos nuestro trabajo en mapear directamente las tablas de la base de datos a TableAdapters, lo cual no es quiz&amp;#225; lo recomendado, pero la mayor&amp;#237;a de los ejemplos hayados en Internet &amp;quot;ense&amp;#241;aban eso&amp;quot;). Tareas como estas eran un dolor de cabeza y personalmente eran muy aburridas, no aguant&amp;#233; mucho antes de darme cuenta que ten&amp;#237;a que haber una mejor manera de hacer esas cosas.&lt;/p&gt;  &lt;p&gt;As&amp;#237; es como empec&amp;#233; a investigar y empec&amp;#233; a preguntar a otros amigos sobre la existencia de plugins o utilitarios que valiese la pena revisar. Resultado de estas investigaciones, empec&amp;#233; a construir esta lista.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Plugins para SQL Server 2000 - 2005. &lt;/strong&gt;Las herramientas de &lt;strong&gt;&lt;a href="http://www.red-gate.com/"&gt;Red Gate&lt;/a&gt;&lt;/strong&gt; son simplemente indispensables para poder desarrollar querys, con todo lo bueno que pueda ser el Sql Server Manager Studio o el Query Analizer, poder utilizar el autocompletado al momento de realizar un query y adem&amp;#225;s de obtener Intellisense durante la escritura de un query se ha vuelto para mi algo simplemente indispensable. Y tener un c&amp;#243;digo un query bien &amp;quot;formateado&amp;quot; tambi&amp;#233;n ayuda mucho a la lectura de los queries. En este sentido para el autocompletado voy a recomendar: el SQL Prompt y para el formateado el SQL Refactor. (en la P&amp;#225;gina de &lt;a href="http://www.red-gate.com/"&gt;&lt;strong&gt;Red Gate&lt;/strong&gt;&lt;/a&gt; se pueden obtener versiones de prueba, de estas herramientas as&amp;#237; como de muchas otras que la misma empresa ofrece, como el SQL Compare y el SQL Data Compare, que en verdad merecer&amp;#237;an un post completo cada una de ellas y que tambi&amp;#233;n son tan buenas como las dos primeras y muy &amp;#250;tiles, pero no son necesarias tan frecuentemente como las otras dos). &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Para Trabajar con otras bases de datos, como MySQL. &lt;/strong&gt;En un proyecto de mi actual empresa tuve que utilizar por primera vez &lt;a href="http://www.hibernate.org/343.html"&gt;Nhibernate&lt;/a&gt; (No volver&amp;#237;a a dejar de usarlo :P) y adem&amp;#225;s tuve que utilizar MySQL, extra&amp;#241;aba horrores el SQL Query Analyzer que ten&amp;#237;a al usar el SQL Server, por eso me puse a buscar una herrmienta similar y gracias a Dios (y a San Google) encontr&amp;#233; al &lt;a href="http://www.sqlmanager.net/products/mysql/manager"&gt;SQL Manager for MySQL&lt;/a&gt; poderosa herramienta que incluye todo lo que puede tener el SQL Server Managment Studio (bueno quiz&amp;#225; no todo, pero al menos todo lo &amp;#250;til) e incluso tiene el autocompletado muy bueno similar al que brinda el SQL Prompt para el SQL Server Managment Studio. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Manejar correctamente el CSS, y verificar que tus sitios web se vean bien en los distintos navegadores. &lt;/strong&gt;Bueno quiz&amp;#225; es un poco exagerado, todav&amp;#237;a mucha gente utiliza las tablas para maquetar los sitios web, a&amp;#250;n cuando esto es bastante discutible, todo hace indicar que el CSS es el camino correcto a la hora de maquetar un sitio web. Los Layouts basados en puro CSS no son tan dif&amp;#237;ciles de hallar y hay buenos recursos ya (&lt;a href="http://www.csszengarden.com"&gt;www.csszengarden.com&lt;/a&gt; por ejemplo), las herramientas del YAHOO UI para CSS, los archivos css reset, fonts, base y grids que vienen incluidos con el YUI alivian much&amp;#237;simo a la hora de desarrollar un sitio web que se comporte bien en varios navegadores. Para el Visual Studio 2005 es muy necesario el &lt;a href="http://www.asp.net/Downloads/sandbox/css-properties-window/"&gt;CSS Properties Window&lt;/a&gt; (que ya viene incluido en la Version 2008 del IDE, o al menos una herramienta muy similar). Y Pues bueno aunque no es completamente necesario para un desarrollador conocer de dise&amp;#241;o web, el Dreamweaver es quiz&amp;#225; la mejor herramienta para realizar dise&amp;#241;o web en el mercado. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NHibernate. &lt;/strong&gt;Al empezar con NHibernate me di cuenta muy r&amp;#225;pido que escribir los mapeos y las clases adem&amp;#225;s de las tablas de la base datos era una tarea simplemente tit&amp;#225;nica (que exagerado :P) y muy aburrida, lo cierto es que me pareci&amp;#243; muy tedioso hacerlo a mano. Sab&amp;#237;a de la existencia de generadores de mapeo de las clases para Hibernate, pero no conoc&amp;#237;a como generar las clases en .Net, quiz&amp;#225; utilizando &lt;a href="http://www.mygenerationsoftware.com/portal/default.aspx"&gt;MyGeneration&lt;/a&gt; (si es posible pero me pareci&amp;#243; muy complicado). Nuevamente me negaba a creer que nadie hubiese escrito un buen plugin para hacerlo desde el Visual Studio, y no estaba equivocado, encontr&amp;#233; en Google el &lt;a href="http://sourceforge.net/projects/nhibernateaddin"&gt;Nhibernate Addin&lt;/a&gt; para el Visual Studio 2005. Lo recomiendo infiere las relaciones y hace los mapeos bastante bien. Pero es importante notar que hace un mapeo de las tablas a clases, cada tabla a una clase, lo cual desde un punto de vista purista no es lo mejor ni lo m&amp;#225;s recomendado pero que ayuda a hacer las cosas m&amp;#225;s r&amp;#225;pido ayuda. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;To be continued...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-2073620059554310924?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/2073620059554310924/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=2073620059554310924' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2073620059554310924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2073620059554310924'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/04/lista-de-herramientas-libreras-yo.html' title='Lista de Herramientas, Librerías y/o Utilitarios Básicos'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-2809357722537102261</id><published>2008-04-07T20:54:00.001-07:00</published><updated>2008-04-07T20:54:43.455-07:00</updated><title type='text'>Ideas de un proyecto para un Framework Web</title><content type='html'>&lt;p&gt;Actualmente me encuentro desarrollando proyectos en .Net, como saben (y si no lo saben ahora lo sabr&amp;#225;n) soy Ingeniero Inform&amp;#225;tico (est&amp;#225; bien, todav&amp;#237;a soy Bachiller, porque me estoy demorando en sacar el t&amp;#237;tulo por la bendita tesis que no logro terminar). &lt;/p&gt;  &lt;p&gt;Al empezar a desarrollar tuve muchos problemas, pues empec&amp;#233; a trabajar y no hab&amp;#237;a mucho de donde aprender, las primeras experiencias con el Framework de .Net fueron sinceramente traum&amp;#225;ticas, a pesar de haber empezado mi vida laboral usando .Net 2.0 y el IDE del Visual Studio 2005, (el cual durante un buen tiempo lo he considerado el mejor IDE del mercado, solo posiblemente opacado por el Visual Studio 2008 el cual todav&amp;#237;a no es tan difundido como el del 2005); El no conocer patrones y no tener muchas ideas de buenas pr&amp;#225;cticas terminaron por jugarnos sucio al inicio. Despu&amp;#233;s de un a&amp;#241;o de trabajo sin embargo hab&amp;#237;amos aprendido ya usar muy bien los componentes y herramientas que el Visual Studio 2005 provee...   &lt;br /&gt;Aprendimos a usar los TableAdapters, aprendimos a usar los Componentes orientados a Datos del .Net 2.0 como los FormViews, GridViews, Object Data Sources y otros...&lt;/p&gt;  &lt;p&gt;Pero como no tuvimos mayor orientaci&amp;#243;n nuestros primeros proyectos Web fueron algo desordenados. Despu&amp;#233;s de un a&amp;#241;o volv&amp;#237; a ver el c&amp;#243;digo que hicimos para nuestro primero proyecto Web y me di cuenta que el tiempo no pasa en vano. Siento que he aprendido mucho desde aquel primer proyecto web que hice. Lo &amp;#250;nico que sin embargo me hace sentir satisfecho de ese sistema es que a&amp;#250;n funciona!!!!, y sigue ayudando a la empresa para la que fue desarrollado.&lt;/p&gt;  &lt;p&gt;Al tiempo pas&amp;#233; a otra empresa (en la que actualemente estoy) y me sugirieron (obligaron) a que aprendiera a usar NHibernate, me pusieron a cargo de un proyecto Web interno de la empresa el cual desarroll&amp;#233; con algo m&amp;#225;s de calma y all&amp;#237; pude plasmar las primeras ideas de lo que podr&amp;#237;a ser un framework util para desarrollar aplicaciones web con algo m&amp;#225;s de rapidez, teniendo un c&amp;#243;digo m&amp;#225;s limpio y tratando (digo tratando porque nunca uno puede ser del todo purista, por practicidad) de seguir ciertos patrones y est&amp;#225;ndares en el desarrollo web.&lt;/p&gt;  &lt;p&gt;Todo Buen Framework deber&amp;#237;a poder brindarle a un desarrollador lo siguiente al menos:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Una buena arquitectura de desarrollo&lt;/strong&gt;. Una separaci&amp;#243;n por capas es m&amp;#225;s que indispensable, teniendo una capa de acceso a datos, una capa de l&amp;#243;gica de negocios y una capa de presentaci&amp;#243;n, adem&amp;#225;s de proveer los utilitarios b&amp;#225;sicos, para las tareas m&amp;#225;s comunes. El .Net 2.0 usa el Provider Pattern en la mayor&amp;#237;a de sus M&amp;#243;dulos y/o Servicios que interactuan con el acceso a datos y otras APIs, tenemos por ejemplo los servicios de Membership, Role, Profile, Session State y algunos m&amp;#225;s. Bas&amp;#225;ndose en esa arquitectura Davide Icardi, (&lt;a href="http://www.devage.com"&gt;www.devage.com&lt;/a&gt;) ha desarrollado un buen cms framework, Eucalypto, el cual es una librer&amp;#237;a de servidor que ayuda a escribir content management web sites en ASP.NET, adem&amp;#225;s es OPEN SOURCE, y brinda ya un buen grupo de caracter&amp;#237;sticas muy &amp;#250;tiles cuando se inicia el desarrollo de un sitio web. El c&amp;#243;digo implementado por Davide es muy bueno y sobre el se basa mi actual trabajo, he modificado parte de su c&amp;#243;digo para que se ajuste a las necesidades particulares de mi framework.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Un buen framework b&amp;#225;sico para desarrollar c&amp;#243;digo en Javascript&lt;/strong&gt;. A&amp;#250;n cuando la tendencia actual es a escribir una menor cantidad de c&amp;#243;digo Javascript en los sitios web, es siempre indispensable tener la posibilidad de hacerlo, y hacerlo bien. En este caso empec&amp;#233; a usar inicialmente la libreria X (&lt;a href="http://www.cross-browser.com"&gt;www.cross-browser.com&lt;/a&gt;) por su simplicidad. Posteriormente bas&amp;#233; mis librer&amp;#237;as propias en el YUI (&lt;a href="http://www.developer.yahoo.com/yui"&gt;developer.yahoo.com/yui&lt;/a&gt;). Todav&amp;#237;a mis librer&amp;#237;as b&amp;#225;sicas se basan casi al 98% en el YUI, un 2% se basan en el ASP.Net Ajax client libraries. La verdad todav&amp;#237;a no he podido revisar si mezclar ambas librer&amp;#237;as impacta en el performance del sitio web, pues ambas b&amp;#225;sicamente traen lo mismos m&amp;#233;todos y herramientas. M&amp;#225;s adelante desarrollar&amp;#233; un poco m&amp;#225;s en extenso el tema de las librerias Javascript y todo lo que he escrito basandome en las librerias YUI.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Buenas plantillas para el desarrollo de los layouts del sitio web bas&amp;#225;ndose en al menos un 90% en puro CSS&lt;/strong&gt;, dejando un 10% para el tema de los formularios (donde es m&amp;#225;s que indispensable por practicidad usar tablas para formatear los formularios) Buenos lugares para empezar en el tema del CSS son &lt;a href="http://www.csszengarden.com"&gt;www.csszengarden.com&lt;/a&gt;, &lt;a title="http://www.brunildo.org/test/" href="http://www.brunildo.org/test/"&gt;www.brunildo.org/test/&lt;/a&gt; y &lt;a title="http://blog.html.it/layoutgala/" href="http://blog.html.it/layoutgala/"&gt;blog.html.it/layoutgala/&lt;/a&gt; la verdad este &amp;#250;ltimo enlace result&amp;#243; ser muy bueno, e ingenioso, sobre todo porque demuestra la versatilidad del CSS.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Ayudar a Escribir la menor cantidad de c&amp;#243;digo posible.&lt;/strong&gt; Esto no es necesariamente cierto siempre, en realidad deber&amp;#237;a poder acelerar la escritura de c&amp;#243;digo al menos en un 80% de los casos, (haciendo alusi&amp;#243;n t&amp;#225;citamente a la regla del 80-20).&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Ser extensible.&lt;/strong&gt; O al menos no limitar al desarrollador ni forzarlo a trabajar de una manera ajena a la que el desarrollador suele estar acostumbrado, (nuevamente al menos en un 80% de las veces). Las convenciones son siempre buenas, y en el caso del presente framework se han hecho un buen conjunto de convenciones. por ejemplo: Todas las tablas contienen campos de auditoria, los nombres de las tablas son siempre en singular y con la primera letra en may&amp;#250;sculas, se usa un prefijo para nombrar a las tablas, y algunas m&amp;#225;s que detallar&amp;#233; a mayor profundidad conforme empiece a publicar posts.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Por lo pronto este Post me servir&amp;#225; de suerte de &amp;quot;roadmap&amp;quot;, para poder empezar el desarrollo de mi Tema de Tesis para optar por el grado de Ingeniero y poder decir al fin... &lt;strong&gt;&amp;quot;Soy Ingeniero&amp;quot;&lt;/strong&gt; aunque el t&amp;#237;tulo solo me sirva en Per&amp;#250;. Igual ser&amp;#225; una muy buena experiencia.&lt;/p&gt;  &lt;p&gt;Mi tema de tesis... ha empezado&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-2809357722537102261?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/2809357722537102261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=2809357722537102261' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2809357722537102261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2809357722537102261'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/04/ideas-de-un-proyecto-para-un-framework.html' title='Ideas de un proyecto para un Framework Web'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-7180495692973792706</id><published>2008-02-12T13:33:00.000-08:00</published><updated>2008-04-08T09:08:50.212-07:00</updated><title type='text'>First Time</title><content type='html'>Lo recuerdo claramente, la visión es aún cada vez más clara cada vez que la recuerdo, más obsesiva. La noche había caído rapidamente y los dos, buenos amigos, amigos con privilegios, amigos cariñosos, o como quieran llamarnos, nos quedamos solos. Peligrosa soledad que invita a pensamientos maliciosos (exquisitamente maliciosos). Habían pasado 5 minutos q la ultima persona abandonó la habitación y se fueron a sus habitaciones. Ahora solos los dos...mi pensamiento ardía, y ya era inevitable, me acerqué con cuidado, no quería hacer movimientos en falso, tenia que tener la certeza de q todo saldría bien...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-7180495692973792706?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/7180495692973792706/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=7180495692973792706' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/7180495692973792706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/7180495692973792706'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2008/02/first-time.html' title='First Time'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-2501212089993874133</id><published>2007-10-24T08:38:00.001-07:00</published><updated>2007-10-24T08:44:11.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ocio'/><category scheme='http://www.blogger.com/atom/ns#' term='Dibujos'/><category scheme='http://www.blogger.com/atom/ns#' term='Simpsons'/><title type='text'>Las frases celebres de los Simpsons</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;Navegando por allí y casi de casualidad encontré esta interesante página, la verdad no había reparado cuan interesantes son las frases de los simpsons!!! grande Homero sobre todo...

&lt;a href="http://blogzarro.com/?p=223" alt="frases celebres de los simpsons"&gt;frases celebres de los simpsons&lt;/a&gt;

Quiza luego sea posible traducirlo para disfrutarlo en español (aunque las frases no parecen haber variado demasiado en el español)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-2501212089993874133?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/2501212089993874133/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=2501212089993874133' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2501212089993874133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/2501212089993874133'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2007/10/las-frases-celebres-de-los-simpsons.html' title='Las frases celebres de los Simpsons'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7165369794142068829.post-5887900065865152898</id><published>2007-08-05T16:04:00.000-07:00</published><updated>2007-08-05T16:53:57.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='documental'/><category scheme='http://www.blogger.com/atom/ns#' term='Corporación'/><category scheme='http://www.blogger.com/atom/ns#' term='Primero'/><title type='text'>Mi primera vez... y TV Peru (Canal 7)</title><content type='html'>Bueno, siempre dicen que hay una primera vez para todo, pues esta será mi primera vez en un blog.

Bueno el tema es que crear un blog no fue nada difícil, pero escoger un nombre... eso si que lo fue... TODOS LOS NOMBRES BUENOS YA ESTAN TOMADOS!!!! jajaja, bueno en fin.

Mi nombre y apellido serán suficientes para el nombre de mi blog.

No sabía que tratar como primer tema, por lo que hare que diré que hoy tuve una muy grata sorpresa. Un documental llamado &lt;strong&gt;&lt;em&gt;"La Corporación"&lt;/em&gt;&lt;/strong&gt; (&lt;em&gt;The Corporation - Mark Abbott&lt;/em&gt;). Este documental la verdad me ha complicado un poco la vida. Me ha hecho pensar en todas las atrocidades que las grandes corporaciones hacen... y como el poder corrompe todo.

Bueno en fin podria decir que es un film pesimista, yo diría es más bien realista... en fin, se los recomiendo... ahora me dispondre a ver "sicko" otro documental con el mismo tono sarcastico e irónico hacia &lt;strong&gt;&lt;em&gt;el Sistema&lt;/em&gt;&lt;/strong&gt;.

El primer post ha sido escrito...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7165369794142068829-5887900065865152898?l=royriojas.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://royriojas.blogspot.com/feeds/5887900065865152898/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7165369794142068829&amp;postID=5887900065865152898' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5887900065865152898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7165369794142068829/posts/default/5887900065865152898'/><link rel='alternate' type='text/html' href='http://royriojas.blogspot.com/2007/08/mi-primera-vez-y-tv-peru-canal-7.html' title='Mi primera vez... y TV Peru (Canal 7)'/><author><name>Roy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
