tag:blogger.com,1999:blog-49862947431814264312024-03-05T15:27:50.030-08:00Cup CoffeeUna taza de café endulzada con mucha informaciónAnonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.comBlogger69125tag:blogger.com,1999:blog-4986294743181426431.post-35855990518101403902013-06-12T00:06:00.002-07:002013-06-12T00:06:28.146-07:00Hello World with Monoberry<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1MIgTeDmpZZynm1EquEF-34J5Y6wXyLytBgZU50idXk_fd5EKcqj-pGXaKK3Xi5b440qH0f8CMK-9hmU-_R0VCfBih7I0gfJF93lULePh7aEYwhtNWCBnHkShPo7GHMbbVAU0qPc0AOpj/s1600/MonoberryLogo2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1MIgTeDmpZZynm1EquEF-34J5Y6wXyLytBgZU50idXk_fd5EKcqj-pGXaKK3Xi5b440qH0f8CMK-9hmU-_R0VCfBih7I0gfJF93lULePh7aEYwhtNWCBnHkShPo7GHMbbVAU0qPc0AOpj/s320/MonoberryLogo2.png" width="320" /></a></div>
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: large;"><span style="color: #2e74b5;"><span style="font-family: Calibri Light;"><o:p></o:p></span></span></span></span>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<div class="MsoNormal">
Monoberry is a library that allow the native application
developing with Mono and C#, in the actual version, only graphic applications
can be developed with Open GL ES 1.0 and 2.0, besides an access to the <a href="http://developer.blackberry.com/native/reference/bb10/com.qnx.doc.bps.lib_ref/com.qnx.doc.bps.lib_ref/topic/overview.html" target="_blank">BlackberryPlatform Service</a> libraries.<o:p></o:p></div>
</div>
<h2 style="margin: 2pt 0in 0pt;">
<span style="color: #2e74b5; font-family: Calibri Light; font-size: medium;">Tools required to Develop with Monoberry</span></h2>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<div class="MsoNormal">
To develop with Monoberry, the following tools are required:<o:p></o:p></div>
</div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Visual
Studio 2012 (Professional, Premium o Ultimate) - <a href="http://www.microsoft.com/visualstudio/eng/downloads#d-2012-editions">http://www.microsoft.com/visualstudio/eng/downloads#d-2012-editions<o:p></o:p></a></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Blackberry
OS 10 Native SDK - <a href="http://developer.blackberry.com/native/download/">http://developer.blackberry.com/native/download/<o:p></o:p></a></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Blackberry
OS 10 Emulator<span style="mso-spacerun: yes;"> </span>- <a href="http://developer.blackberry.com/native/download/">http://developer.blackberry.com/native/download/<o:p></o:p></a></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Monoberry Tools for Visual Studio - <a href="http://visualstudiogallery.msdn.microsoft.com/b4803586-b446-4df1-8254-978f00ceb52d">http://visualstudiogallery.msdn.microsoft.com/b4803586-b446-4df1-8254-978f00ceb52d<o:p></o:p></a></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">The tools should be installed in the order from the list shown before.</span></div>
<h2 style="margin: 2pt 0in 0pt;">
<span style="color: #2e74b5; font-family: Calibri Light; font-size: medium;">Hello World with Monoberry</span></h2>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">The creation of an application of Monoberry, is very easy like any other mobile platform. For this first example we will create a dialogue chart where the next message is shown: “Hello world from Latin America with Monoberry”.<o:p></o:p></span></span></div>
<h3 style="margin: 2pt 0in 0pt;">
<span style="color: #1f4d78; font-family: Calibri Light; font-size: small;">Step 1: Create a new Project</span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">To create a new Project, you have to open Visual Studio 2012, and then go to the option File-> New -> Project and then choose the option Monoberry Application, as seen on the next print screen:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBU6ysKPaTXwcngD8H6Xgoq6m_8PC1axk-9XwZe3Q3-jW3VukK0nk-pb16YyjHNEQ9bjffFYUL6Jp9ms8VFeTkbSshapbN0ryCRjs3kXeiU8DX5RrIcyqqJPjP0j8tEWTh5-Dk-7_kORj/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="441" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBU6ysKPaTXwcngD8H6Xgoq6m_8PC1axk-9XwZe3Q3-jW3VukK0nk-pb16YyjHNEQ9bjffFYUL6Jp9ms8VFeTkbSshapbN0ryCRjs3kXeiU8DX5RrIcyqqJPjP0j8tEWTh5-Dk-7_kORj/s640/image001.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_2" o:spid="_x0000_i1036" type="#_x0000_t75"
style='width:441pt;height:306pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">We’ll name the project “HelloWorldMonoberry” and then we click on the “OK” button. <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">Then an assistant is displayed so that we can configure the basic parameters of the application:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuBUmwknIqLu2536O61BKZf5kO2jkN3vZH90SfU5QV520WKi5caefJqUX1xmy5pNiGIUOxfXkeBO9HcKGWQIhftzRmeZL6VG7LWPmRnw71i9i_J_EgdBQqOSVcZ9k8nBszd4Lhk2Uin9Zj/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="438" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuBUmwknIqLu2536O61BKZf5kO2jkN3vZH90SfU5QV520WKi5caefJqUX1xmy5pNiGIUOxfXkeBO9HcKGWQIhftzRmeZL6VG7LWPmRnw71i9i_J_EgdBQqOSVcZ9k8nBszd4Lhk2Uin9Zj/s640/image003.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_4" o:spid="_x0000_i1035" type="#_x0000_t75" style='width:441.75pt;
height:303pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">The first step is to configure the SDK, in case to be the first Project, we don’t have any SDK registered, we must register clicking on the “Manage SDKS” button, this will open a new window where we should type the SDK name and the path that we want to register, for our example we’ll use the following data and click the “Add” button: </span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Name:
Default SDK<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Path:
C:\bbndk\host_10_0_9_404<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiJ4cnxXNmxs6IXiW5SIWOaOStXz2YJpXXeyev9GjcDnptHfjV9LgraV_4KnFTfuz4OshsEcFspxFJNHtGbh57hivntevt4Ao8OeTK5nLrhvE7Tp2X_N4iE9LYtuum-2Wvdy11I9aqXUFW/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiJ4cnxXNmxs6IXiW5SIWOaOStXz2YJpXXeyev9GjcDnptHfjV9LgraV_4KnFTfuz4OshsEcFspxFJNHtGbh57hivntevt4Ao8OeTK5nLrhvE7Tp2X_N4iE9LYtuum-2Wvdy11I9aqXUFW/s400/image005.png" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_6" o:spid="_x0000_i1034" type="#_x0000_t75" style='width:302.25pt;
height:223.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">Then we’ll close the dialogue chart clicking on the “Close” button and then we can choose the SDK, to go forward in the assistant:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1t_aUp1BtBbQeu5FNeAN6IRVyMwXseOENaUbQ4mPF0MsZStqFaPtbo90mgxKD99AnmRCubJEZa6an8k8G4vH5-i8NAQ0ppfgo2YnvLcAOX3foKbpXqsAMOzIJghW49G2ppYcndT5R8Up6/s1600/image006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1t_aUp1BtBbQeu5FNeAN6IRVyMwXseOENaUbQ4mPF0MsZStqFaPtbo90mgxKD99AnmRCubJEZa6an8k8G4vH5-i8NAQ0ppfgo2YnvLcAOX3foKbpXqsAMOzIJghW49G2ppYcndT5R8Up6/s640/image006.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_7" o:spid="_x0000_i1033" type="#_x0000_t75" style='width:441.75pt;
height:306pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image006.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">As a next step, we have to configure the emulator, for this we have to ad done, with a name and IP address, to get the emulator’s IP address, we have to open the emulator and scroll down, on the left corner you can see the address, as seen on the print screen:</span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Calibri;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3q1CpaCk6Zvrht6v1SKWil6GuonsefikfINwdPZ1wHfgmadtKA2JXWN5z7H-JDIfFr8pvgNzKGhWWEC_Vfe64c2ay8Pc7n7sqUPLuGdBe8fpuknCvrDYwZ08vlFLrwqcu-iUbxqknnlO3/s1600/image008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3q1CpaCk6Zvrht6v1SKWil6GuonsefikfINwdPZ1wHfgmadtKA2JXWN5z7H-JDIfFr8pvgNzKGhWWEC_Vfe64c2ay8Pc7n7sqUPLuGdBe8fpuknCvrDYwZ08vlFLrwqcu-iUbxqknnlO3/s400/image008.png" width="400" /></a></span></div>
<span style="font-family: Calibri;"><span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_8" o:spid="_x0000_i1032" type="#_x0000_t75" style='width:309.75pt;
height:183.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image008.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span></span><br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">For this guide we’ll use the following:</span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Name:
Test Device<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">IP
Address: 192.168.42.128<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcxt5XAovSlc1yMek9X7Wr3ZVCjEsJuTbPNcNEQeWBwlg-d5SAKwukExqfW75Md4hD994XSRyMfQzGduLLA-6z9K-WHcT5MV-EB2H6UVhuXd2Y3XYxs6Qz2lHfXxGIbrrLFFMTih_5EE-v/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcxt5XAovSlc1yMek9X7Wr3ZVCjEsJuTbPNcNEQeWBwlg-d5SAKwukExqfW75Md4hD994XSRyMfQzGduLLA-6z9K-WHcT5MV-EB2H6UVhuXd2Y3XYxs6Qz2lHfXxGIbrrLFFMTih_5EE-v/s640/image009.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_9" o:spid="_x0000_i1031" type="#_x0000_t75" style='width:441.75pt;
height:304.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image009.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">For the third step, we have to add the application´s basic data, like name, author, author’s identifier, description and extra permissions for the application can run. The following data will be used as example:</span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Name:
HelloWorld<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Autor:
Unknown<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">AutorID:
hYAVVGfacBFUKY7rJsXs2e2lxY0<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Description:
Basic Hello World Application<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Extra
Permissions: </span><span style="font-family: Calibri;">None (for more information about permissions: <a href="http://developer.blackberry.com/native/documentation/bb10/com.qnx.doc.native_sdk.devguide/com.qnx.doc.native_sdk.devguide/topic/c_appfund_accessing_restricted_functionality.html" style="color: #0563c1;">http://developer.blackberry.com/native/documentation/bb10/com.qnx.doc.native_sdk.devguide/com.qnx.doc.native_sdk.devguide/topic/c_appfund_accessing_restricted_functionality.html</a></span><span style="font-family: Calibri;">
)<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidGlmpvHzhqqoE6n7xojA13pHejN1Y-r61WPZnUf6itquqjLt0k9s9PMlxE2aDp1vw_qu-FHP2GwB0i6hmrEdEgqpSItODBM10q4V9Rav9Qs6k0Eq4jHP_dts9ydkhLLjJTsww9NAkvDtF/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidGlmpvHzhqqoE6n7xojA13pHejN1Y-r61WPZnUf6itquqjLt0k9s9PMlxE2aDp1vw_qu-FHP2GwB0i6hmrEdEgqpSItODBM10q4V9Rav9Qs6k0Eq4jHP_dts9ydkhLLjJTsww9NAkvDtF/s640/image011.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_10" o:spid="_x0000_i1030" type="#_x0000_t75" style='width:441.75pt;
height:303.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image011.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">For the last step, the assistant will display a summary of all the entered data, so you can check that they are correct:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVZx2XeWzoR81ZarTTop2-b0W95hGuiHkuTTyJU0tYq5iNwxQ7c-uWXzfeeyp6ceTiFRUYI25fgtm1qXuPzCl9iSih2XJolV9o0d2daw9sPyoWY-ijyrRoqJiQXRdI4MqMh0gqS9-dAtPI/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="446" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVZx2XeWzoR81ZarTTop2-b0W95hGuiHkuTTyJU0tYq5iNwxQ7c-uWXzfeeyp6ceTiFRUYI25fgtm1qXuPzCl9iSih2XJolV9o0d2daw9sPyoWY-ijyrRoqJiQXRdI4MqMh0gqS9-dAtPI/s640/image013.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_11" o:spid="_x0000_i1029" type="#_x0000_t75" style='width:441.75pt;
height:308.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image013.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">After clicking on the “Finish” button, the assistant will close and Visual Studio will proceed to create the project, which will have the following structure:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYo7HXUaw_7WMrp4BrW8HaKIdoWAwBNnibuOHXycqNJtwggV74T8ZQkTJmEGpCS2ZpWpe5Uh1rpEF8XgyZIWzTh2wMvFpGs51r17PkziU9r58DfDkdRq6colaqXr_ywvrlVEmqB3d8uTjd/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYo7HXUaw_7WMrp4BrW8HaKIdoWAwBNnibuOHXycqNJtwggV74T8ZQkTJmEGpCS2ZpWpe5Uh1rpEF8XgyZIWzTh2wMvFpGs51r17PkziU9r58DfDkdRq6colaqXr_ywvrlVEmqB3d8uTjd/s400/image015.png" width="327" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_12" o:spid="_x0000_i1028" type="#_x0000_t75" style='width:264.75pt;
height:323.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image015.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<h3 style="margin: 2pt 0in 0pt;">
<span style="color: #1f4d78; font-family: Calibri Light; font-size: small;">Step 2: Clear the Project</span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
</div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">We have to delete the file, Cube.cs and then delete all the code lines referent to that class, from the method Main housed in the Program.cs file, so that it is like shown: </span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Text;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">namespace</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> HelloWorldMonoberry<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">class</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Program</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">static</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> Main(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[] args)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;">
</span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-ansi-language: ES; mso-highlight: white;">}</span><span lang="ES" style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-ansi-language: ES;"><o:p></o:p></span></div>
<h3 style="margin: 2pt 0in 0pt;">
<span style="color: #1f4d78; font-family: Calibri Light; font-size: small;">Step 3: Add the Monoberry libraries</span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">As a next step we have to add the Monoberry libraries from NuGet, for this reason we will open the Package Manager Console and run the following sentence:</span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="EN" style="background: rgb(32, 32, 32); color: #e2e2e2; font-family: "Lucida Console"; font-size: 15pt; line-height: 107%; mso-ansi-language: EN; mso-bidi-font-family: "Courier New";">Install-Package
MonoRuntimeForMonoberry</span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="EN" style="background: rgb(32, 32, 32); color: #e2e2e2; font-family: "Lucida Console"; font-size: 15pt; line-height: 107%; mso-ansi-language: EN; mso-bidi-font-family: "Courier New";">Install-Package
Monoberry</span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">The first sentence adds the Mono runtime for Blackberry OS 10 together with the basic libraries for operating Monoberry which are:</span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">MsCorLib<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">System.dll<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">System.Drawing.dll<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">System.Xml.dll<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">The second sentence will add the Monoberry reference to our project:</span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">BlackberryPlatformService.dll<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">OpenTKBlackberry.dll<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2pU67FzYaFWydc_G6eQyXGQlarGwPWWnra1wSHjYjAb7LE-5Yzy34UpJGj9nWF0Pd8d3dxvuCP7cSpV1tNLM55Xjzf8jdxQLE8NOrNZADLEQBS5srtlfvxki2WRgzKCa4BfZQCW8NDZL/s1600/image016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2pU67FzYaFWydc_G6eQyXGQlarGwPWWnra1wSHjYjAb7LE-5Yzy34UpJGj9nWF0Pd8d3dxvuCP7cSpV1tNLM55Xjzf8jdxQLE8NOrNZADLEQBS5srtlfvxki2WRgzKCa4BfZQCW8NDZL/s640/image016.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_13" o:spid="_x0000_i1027" type="#_x0000_t75" style='width:441.75pt;
height:112.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image016.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<h3 style="margin: 2pt 0in 0pt;">
<span style="color: #1f4d78; font-family: Calibri Light; font-size: small;">Step 4: Add code to display a dialogue</span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">The next step, will add the objects necessary to display a dialogue on the screen. The dialogue is simple:</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span lang="ES" style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">var</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"> run = </span><span lang="ES" style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">true</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span lang="ES" style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">string</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"> message = </span><span lang="ES" style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">string</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">.Format(</span><span lang="ES" style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">"Hola Mundo desde Latinoamérica
con Monoberry!. BPS Version: {0}"</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">, <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">PlatformServices</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.GetVersionBPS().ToString());<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">while</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (run)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Dialog</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Alert(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"CLOSE ME!"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">,
message, </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Button</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Close"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, ()
=> run = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">false</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">}</span><span lang="ES" style="color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES;"><o:p></o:p></span></div>
<h3 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><o:p><span style="color: #1f4d78; font-family: Calibri Light; font-size: small;"> </span></o:p></span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">As you can see, we just call a dialogue, where we sent the following parameters:</span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Título:
“CLOSE ME!”<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Mensaje:
“Hola mundo desde Latinoamerica con Monoberry!....”<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Boton:
new Button("Close", () => run = false), el Segundo parametro del
boton, es el comportamiento que tendrá cuando se lo pulse.<o:p></o:p></span></span></div>
<h3 style="margin: 2pt 0in 0pt;">
<span style="color: #1f4d78; font-family: Calibri Light; font-size: small;">Step 5: Launch the application</span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">To launch the application, first we have to enable a previous configuration. First we have to go to the project’s properties, to the Debug section:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9GBOaBasLt6E2LiRKYVo2LuwqiCR3Lkjgc2AQT7nwRekdNT6o1P5QD4Tg45hNWuHqNRGtv3KEAwVFjBGz1n4LhuYT_9X6dsrV-wWTQ1vlefw18OrTkbs8lMEEabrbaCFZTAqapMBZi5MM/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9GBOaBasLt6E2LiRKYVo2LuwqiCR3Lkjgc2AQT7nwRekdNT6o1P5QD4Tg45hNWuHqNRGtv3KEAwVFjBGz1n4LhuYT_9X6dsrV-wWTQ1vlefw18OrTkbs8lMEEabrbaCFZTAqapMBZi5MM/s400/image018.png" width="316" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75" style='width:267pt;
height:336.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image018.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">In this section, we have to enable the “Start external program” option and the path, we have to add the powershell’s location, which is: <b style="mso-bidi-font-weight: normal;">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</b><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">After, in the argument section we have to add the following (the file path ““Monoberry_Launcher.ps1” should be the same from the project):</span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: Calibri;">-file
"C:\Users\user.name\Documents\Visual Studio
2012\Projects\HelloWorldMonoberry\HelloWorldMonoberry\PackagerScripts\Monoberry_Launcher.ps1"<o:p></o:p></span></b></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">With everything configured, the only thing we need is to save the changes from the project’s properties and launch the application with “Ctrl + F5”: </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLC0OmHOsEsqkayOQhHwFT-Guc7OZ6IAGcA0COb3y555uTXG1PITyryqTdXlMSfBkeK047oSt-9i-b9loBe6B0OLDHpf7ECk_VGn_g1IbOVc1FZMZYNmGy9-d3iy7G6AK0k6GE-ciWcEO2/s1600/image019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLC0OmHOsEsqkayOQhHwFT-Guc7OZ6IAGcA0COb3y555uTXG1PITyryqTdXlMSfBkeK047oSt-9i-b9loBe6B0OLDHpf7ECk_VGn_g1IbOVc1FZMZYNmGy9-d3iy7G6AK0k6GE-ciWcEO2/s640/image019.png" width="412" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_3" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:418.5pt;
height:650.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image019.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com1tag:blogger.com,1999:blog-4986294743181426431.post-71293199393059215822013-06-01T21:38:00.000-07:002013-06-01T21:47:19.371-07:00Hola Mundo con Monoberry<h1 style="margin: 12pt 0in 0pt; text-align: center;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: large;"><span style="color: #2e74b5;"><span style="font-family: Calibri Light;"><o:p></o:p></span></span></span></span> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1MIgTeDmpZZynm1EquEF-34J5Y6wXyLytBgZU50idXk_fd5EKcqj-pGXaKK3Xi5b440qH0f8CMK-9hmU-_R0VCfBih7I0gfJF93lULePh7aEYwhtNWCBnHkShPo7GHMbbVAU0qPc0AOpj/s1600/MonoberryLogo2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1MIgTeDmpZZynm1EquEF-34J5Y6wXyLytBgZU50idXk_fd5EKcqj-pGXaKK3Xi5b440qH0f8CMK-9hmU-_R0VCfBih7I0gfJF93lULePh7aEYwhtNWCBnHkShPo7GHMbbVAU0qPc0AOpj/s320/MonoberryLogo2.png" width="320" /></a></h1>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Monoberry es una
librería que permite el desarrollo de aplicaciones nativas con Mono y C#, en la
versión actual, solo se pueden desarrollar aplicaciones graficas con Open GL ES
1.0 y 2.0, además de acceso a las librerías del <a href="http://developer.blackberry.com/native/reference/bb10/com.qnx.doc.bps.lib_ref/com.qnx.doc.bps.lib_ref/topic/overview.html" target="_blank">Blackberry Platform Service</a> </span></span></div>
<h2 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: medium;"><span style="color: #2e74b5;"><span style="font-family: Calibri Light;">Herramientas necesarias para el Desarrollo
con Monoberry<o:p></o:p></span></span></span></span></h2>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Para poder
desarrollar con Monoberry, se necesitan las siguientes herramientas:<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Visual
Studio 2012 (Professional, Premium o Ultimate) - <a href="http://www.microsoft.com/visualstudio/eng/downloads#d-2012-editions">http://www.microsoft.com/visualstudio/eng/downloads#d-2012-editions<o:p></o:p></a></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Blackberry
OS 10 Native SDK - <a href="http://developer.blackberry.com/native/download/">http://developer.blackberry.com/native/download/<o:p></o:p></a></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Blackberry
OS 10 Emulator<span style="mso-spacerun: yes;"> </span>- <a href="http://developer.blackberry.com/native/download/">http://developer.blackberry.com/native/download/<o:p></o:p></a></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Monoberry Tools for Visual Studio - <a href="http://visualstudiogallery.msdn.microsoft.com/b4803586-b446-4df1-8254-978f00ceb52d">http://visualstudiogallery.msdn.microsoft.com/b4803586-b446-4df1-8254-978f00ceb52d<o:p></o:p></a></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Las herramientas
deben ser instaladas en el orden de la lista, antes descrita.<o:p></o:p></span></span></div>
<h2 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: medium;"><span style="color: #2e74b5;"><span style="font-family: Calibri Light;">Hola Mundo con Monoberry<o:p></o:p></span></span></span></span></h2>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">La creación de
una aplicación de Monoberry, es muy sencilla como con cualquier otra plataforma
móvil. Para este primer ejemplo crearemos un cuadro de dialogo donde se muestre
el siguiente mensaje: “Hola Mundo desde Latinoamérica con Monoberry”.<o:p></o:p></span></span></div>
<h3 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: small;"><span style="color: #1f4d78;"><span style="font-family: Calibri Light;">Paso 1: Crear un nuevo proyecto<o:p></o:p></span></span></span></span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Para crear un
nuevo proyecto, hay que abrir Visual Studio 2012, y luego dirigirse a la opción
File-> New -> Project y luego hay que elegir el tipo de proyecto
Monoberry Application, como se puede ver en la siguiente imagen:<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBU6ysKPaTXwcngD8H6Xgoq6m_8PC1axk-9XwZe3Q3-jW3VukK0nk-pb16YyjHNEQ9bjffFYUL6Jp9ms8VFeTkbSshapbN0ryCRjs3kXeiU8DX5RrIcyqqJPjP0j8tEWTh5-Dk-7_kORj/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="441" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyBU6ysKPaTXwcngD8H6Xgoq6m_8PC1axk-9XwZe3Q3-jW3VukK0nk-pb16YyjHNEQ9bjffFYUL6Jp9ms8VFeTkbSshapbN0ryCRjs3kXeiU8DX5RrIcyqqJPjP0j8tEWTh5-Dk-7_kORj/s640/image001.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_2" o:spid="_x0000_i1036" type="#_x0000_t75"
style='width:441pt;height:306pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Al proyecto le
daremos el nombre de “HelloWorldMonoberry” y luego haremos clic en el botón
“OK”. <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Luego se nos
desplegara un asistente para que podamos configurar los parámetros básicos de
la aplicación:<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuBUmwknIqLu2536O61BKZf5kO2jkN3vZH90SfU5QV520WKi5caefJqUX1xmy5pNiGIUOxfXkeBO9HcKGWQIhftzRmeZL6VG7LWPmRnw71i9i_J_EgdBQqOSVcZ9k8nBszd4Lhk2Uin9Zj/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="438" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuBUmwknIqLu2536O61BKZf5kO2jkN3vZH90SfU5QV520WKi5caefJqUX1xmy5pNiGIUOxfXkeBO9HcKGWQIhftzRmeZL6VG7LWPmRnw71i9i_J_EgdBQqOSVcZ9k8nBszd4Lhk2Uin9Zj/s640/image003.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_4" o:spid="_x0000_i1035" type="#_x0000_t75" style='width:441.75pt;
height:303pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">El primer paso a
configurar es el SDK, en caso de que sea el primer proyecto no tendremos ningún
SDK registrado, por lo que deberemos registrar uno haciendo clic en el botón
“Manage SDKS”, esto nos abrirá una nueva ventana donde deberemos ingresar el
nombre y el path del SDK que queremos registrar, para nuestro ejemplo usaremos
los siguientes datos y haremos clic en el botón “Add”: <o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Name:
Default SDK<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Path:
C:\bbndk\host_10_0_9_404<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiJ4cnxXNmxs6IXiW5SIWOaOStXz2YJpXXeyev9GjcDnptHfjV9LgraV_4KnFTfuz4OshsEcFspxFJNHtGbh57hivntevt4Ao8OeTK5nLrhvE7Tp2X_N4iE9LYtuum-2Wvdy11I9aqXUFW/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiJ4cnxXNmxs6IXiW5SIWOaOStXz2YJpXXeyev9GjcDnptHfjV9LgraV_4KnFTfuz4OshsEcFspxFJNHtGbh57hivntevt4Ao8OeTK5nLrhvE7Tp2X_N4iE9LYtuum-2Wvdy11I9aqXUFW/s400/image005.png" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_6" o:spid="_x0000_i1034" type="#_x0000_t75" style='width:302.25pt;
height:223.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Luego cerraremos
el cuadro de dialogo con el botón “Close” y ahora podremos elegir el SDK, para
poder avanzar en el asistente:<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1t_aUp1BtBbQeu5FNeAN6IRVyMwXseOENaUbQ4mPF0MsZStqFaPtbo90mgxKD99AnmRCubJEZa6an8k8G4vH5-i8NAQ0ppfgo2YnvLcAOX3foKbpXqsAMOzIJghW49G2ppYcndT5R8Up6/s1600/image006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1t_aUp1BtBbQeu5FNeAN6IRVyMwXseOENaUbQ4mPF0MsZStqFaPtbo90mgxKD99AnmRCubJEZa6an8k8G4vH5-i8NAQ0ppfgo2YnvLcAOX3foKbpXqsAMOzIJghW49G2ppYcndT5R8Up6/s640/image006.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_7" o:spid="_x0000_i1033" type="#_x0000_t75" style='width:441.75pt;
height:306pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image006.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Como segundo
paso, hay que configurar el emulador, para lo cual hay que agregar uno, con un nombre
y dirección de IP, para conseguir la dirección de IP del emulador, hay que
abrir el emulador y deslizar la pantalla hacia abajo, en esquina inferior
izquierda se encuentra la dirección, como se puede ver a continuación:<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Calibri;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3q1CpaCk6Zvrht6v1SKWil6GuonsefikfINwdPZ1wHfgmadtKA2JXWN5z7H-JDIfFr8pvgNzKGhWWEC_Vfe64c2ay8Pc7n7sqUPLuGdBe8fpuknCvrDYwZ08vlFLrwqcu-iUbxqknnlO3/s1600/image008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3q1CpaCk6Zvrht6v1SKWil6GuonsefikfINwdPZ1wHfgmadtKA2JXWN5z7H-JDIfFr8pvgNzKGhWWEC_Vfe64c2ay8Pc7n7sqUPLuGdBe8fpuknCvrDYwZ08vlFLrwqcu-iUbxqknnlO3/s400/image008.png" width="400" /></a></span></div>
<span style="font-family: Calibri;"><span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_8" o:spid="_x0000_i1032" type="#_x0000_t75" style='width:309.75pt;
height:183.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image008.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span></span><br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Para la presente
guía utilizaremos los siguientes datos:<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Name:
Test Device<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">IP
Address: 192.168.42.128<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcxt5XAovSlc1yMek9X7Wr3ZVCjEsJuTbPNcNEQeWBwlg-d5SAKwukExqfW75Md4hD994XSRyMfQzGduLLA-6z9K-WHcT5MV-EB2H6UVhuXd2Y3XYxs6Qz2lHfXxGIbrrLFFMTih_5EE-v/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcxt5XAovSlc1yMek9X7Wr3ZVCjEsJuTbPNcNEQeWBwlg-d5SAKwukExqfW75Md4hD994XSRyMfQzGduLLA-6z9K-WHcT5MV-EB2H6UVhuXd2Y3XYxs6Qz2lHfXxGIbrrLFFMTih_5EE-v/s640/image009.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_9" o:spid="_x0000_i1031" type="#_x0000_t75" style='width:441.75pt;
height:304.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image009.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Para el tercer
paso, hay que agregar los datos básicos de la aplicación, como nombre, autor,
identificador de autor, descripción y permisos extra para que la aplicación
puede ejecutarse. Se usaran los siguientes datos de ejemplo:<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Name:
HelloWorld<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Autor:
Unknown<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">AutorID:
hYAVVGfacBFUKY7rJsXs2e2lxY0<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Description:
Basic Hello World Application<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Extra
Permissions: Ninguno (más información sobre permisos: </span><a href="http://developer.blackberry.com/native/documentation/bb10/com.qnx.doc.native_sdk.devguide/com.qnx.doc.native_sdk.devguide/topic/c_appfund_accessing_restricted_functionality.html"><span style="color: #0563c1; font-family: Calibri;">http://developer.blackberry.com/native/documentation/bb10/com.qnx.doc.native_sdk.devguide/com.qnx.doc.native_sdk.devguide/topic/c_appfund_accessing_restricted_functionality.html</span></a><span style="font-family: Calibri;">
)<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidGlmpvHzhqqoE6n7xojA13pHejN1Y-r61WPZnUf6itquqjLt0k9s9PMlxE2aDp1vw_qu-FHP2GwB0i6hmrEdEgqpSItODBM10q4V9Rav9Qs6k0Eq4jHP_dts9ydkhLLjJTsww9NAkvDtF/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidGlmpvHzhqqoE6n7xojA13pHejN1Y-r61WPZnUf6itquqjLt0k9s9PMlxE2aDp1vw_qu-FHP2GwB0i6hmrEdEgqpSItODBM10q4V9Rav9Qs6k0Eq4jHP_dts9ydkhLLjJTsww9NAkvDtF/s640/image011.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_10" o:spid="_x0000_i1030" type="#_x0000_t75" style='width:441.75pt;
height:303.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image011.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Como último paso,
el asistente nos mostrara un resumen de todos los datos ingresado, para que se
pueda revisar que estén correctos:<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVZx2XeWzoR81ZarTTop2-b0W95hGuiHkuTTyJU0tYq5iNwxQ7c-uWXzfeeyp6ceTiFRUYI25fgtm1qXuPzCl9iSih2XJolV9o0d2daw9sPyoWY-ijyrRoqJiQXRdI4MqMh0gqS9-dAtPI/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="446" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVZx2XeWzoR81ZarTTop2-b0W95hGuiHkuTTyJU0tYq5iNwxQ7c-uWXzfeeyp6ceTiFRUYI25fgtm1qXuPzCl9iSih2XJolV9o0d2daw9sPyoWY-ijyrRoqJiQXRdI4MqMh0gqS9-dAtPI/s640/image013.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_11" o:spid="_x0000_i1029" type="#_x0000_t75" style='width:441.75pt;
height:308.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image013.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Luego de hacer
clic en el botón “Finish”, el asistente se cerrara y Visual Studio procederá a
crear el proyecto, que tendrá la siguiente estructura:<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYo7HXUaw_7WMrp4BrW8HaKIdoWAwBNnibuOHXycqNJtwggV74T8ZQkTJmEGpCS2ZpWpe5Uh1rpEF8XgyZIWzTh2wMvFpGs51r17PkziU9r58DfDkdRq6colaqXr_ywvrlVEmqB3d8uTjd/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYo7HXUaw_7WMrp4BrW8HaKIdoWAwBNnibuOHXycqNJtwggV74T8ZQkTJmEGpCS2ZpWpe5Uh1rpEF8XgyZIWzTh2wMvFpGs51r17PkziU9r58DfDkdRq6colaqXr_ywvrlVEmqB3d8uTjd/s400/image015.png" width="327" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_12" o:spid="_x0000_i1028" type="#_x0000_t75" style='width:264.75pt;
height:323.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image015.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<h3 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: small;"><span style="color: #1f4d78;"><span style="font-family: Calibri Light;">Paso 2: Limpiar Proyecto<o:p></o:p></span></span></span></span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
</div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Hay que eliminar
el archivo, Cube.cs y luego eliminar todas las líneas de código referente a esa
clase, del método Main alojado en el archivo Program.cs, para que quede como se
muestra:<o:p></o:p></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Text;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
</div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">namespace</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> HelloWorldMonoberry<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">class</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Program</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">static</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> Main(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[] args)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;">
</span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-ansi-language: ES; mso-highlight: white;">}</span><span lang="ES" style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-ansi-language: ES;"><o:p></o:p></span></div>
<h3 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: small;"><span style="color: #1f4d78;"><span style="font-family: Calibri Light;">Paso 3: Agregar las librerías de
Monoberry<o:p></o:p></span></span></span></span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Como siguiente
paso hay que agregar las librerías de Monoberry desde NuGet, para tal motivo,
abriremos el Package Manager Console y ejecutaremos la siguiente sentencia:<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="EN" style="background: rgb(32, 32, 32); color: #e2e2e2; font-family: "Lucida Console"; font-size: 15pt; line-height: 107%; mso-ansi-language: EN; mso-bidi-font-family: "Courier New";">Install-Package
MonoRuntimeForMonoberry</span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="EN" style="background: rgb(32, 32, 32); color: #e2e2e2; font-family: "Lucida Console"; font-size: 15pt; line-height: 107%; mso-ansi-language: EN; mso-bidi-font-family: "Courier New";">Install-Package
Monoberry</span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">La primera
sentencia agregara el runtime de Mono para Blackberry OS 10, junto con las
librerías básicas para el funcionamiento de Monoberry, que son:<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">MsCorLib<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">System.dll<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">System.Drawing.dll<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">System.Xml.dll<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">La segunda
sentencia agregara las referencias de Monoberry a nuestro proyecto:<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">BlackberryPlatformService.dll<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">OpenTKBlackberry.dll<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2pU67FzYaFWydc_G6eQyXGQlarGwPWWnra1wSHjYjAb7LE-5Yzy34UpJGj9nWF0Pd8d3dxvuCP7cSpV1tNLM55Xjzf8jdxQLE8NOrNZADLEQBS5srtlfvxki2WRgzKCa4BfZQCW8NDZL/s1600/image016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2pU67FzYaFWydc_G6eQyXGQlarGwPWWnra1wSHjYjAb7LE-5Yzy34UpJGj9nWF0Pd8d3dxvuCP7cSpV1tNLM55Xjzf8jdxQLE8NOrNZADLEQBS5srtlfvxki2WRgzKCa4BfZQCW8NDZL/s640/image016.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_13" o:spid="_x0000_i1027" type="#_x0000_t75" style='width:441.75pt;
height:112.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image016.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<h3 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: small;"><span style="color: #1f4d78;"><span style="font-family: Calibri Light;">Paso 4: Agregar código para
mostrar un dialogo<o:p></o:p></span></span></span></span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">El siguiente
paso, será agregar los objetos necesarios para poder mostrar un dialogo en
pantalla. El código, es simple:<o:p></o:p></span></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span lang="ES" style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">var</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"> run = </span><span lang="ES" style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">true</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span lang="ES" style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">string</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"> message = </span><span lang="ES" style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">string</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">.Format(</span><span lang="ES" style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">"Hola Mundo desde Latinoamérica
con Monoberry!. BPS Version: {0}"</span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">, <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">PlatformServices</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.GetVersionBPS().ToString());<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">while</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (run)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Dialog</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Alert(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"CLOSE ME!"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">,
message, </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Button</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Close"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, ()
=> run = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">false</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span lang="ES" style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES; mso-highlight: white;">}</span><span lang="ES" style="color: black; font-family: Consolas; font-size: 9.5pt; mso-ansi-language: ES;"><o:p></o:p></span></div>
<h3 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><o:p><span style="color: #1f4d78; font-family: Calibri Light; font-size: small;"> </span></o:p></span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Como se puede
apreciar, solo llamamos a un Dialogo, donde le mandamos los siguientes
parámetros:<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Título:
“CLOSE ME!”<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Mensaje:
“Hola mundo desde Latinoamerica con Monoberry!....”<o:p></o:p></span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span lang="ES" style="mso-ansi-language: ES; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Boton:
new Button("Close", () => run = false), el Segundo parametro del
boton, es el comportamiento que tendrá cuando se lo pulse.<o:p></o:p></span></span></div>
<h3 style="margin: 2pt 0in 0pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-size: small;"><span style="color: #1f4d78;"><span style="font-family: Calibri Light;">Paso 5: Lanzar la aplicación<o:p></o:p></span></span></span></span></h3>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Para poder lanzar
la aplicación, primero deberemos realizar una configuración previa. Primero hay
que ir a las propiedades del proyecto, a la sección Debug:<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9GBOaBasLt6E2LiRKYVo2LuwqiCR3Lkjgc2AQT7nwRekdNT6o1P5QD4Tg45hNWuHqNRGtv3KEAwVFjBGz1n4LhuYT_9X6dsrV-wWTQ1vlefw18OrTkbs8lMEEabrbaCFZTAqapMBZi5MM/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9GBOaBasLt6E2LiRKYVo2LuwqiCR3Lkjgc2AQT7nwRekdNT6o1P5QD4Tg45hNWuHqNRGtv3KEAwVFjBGz1n4LhuYT_9X6dsrV-wWTQ1vlefw18OrTkbs8lMEEabrbaCFZTAqapMBZi5MM/s400/image018.png" width="316" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75" style='width:267pt;
height:336.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image018.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">En esa sección,
hay que habilitar la opción “Start external program” y en el path, hay que
agregar la ubicación de powershell, que es: <b style="mso-bidi-font-weight: normal;">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</b><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Después, en la
sección argumentos hay que agregar lo siguiente (la ruta del archivo “Monoberry_Launcher.ps1”
debe ser la misma que la del proyecto):<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: Calibri;">-file
"C:\Users\user.name\Documents\Visual Studio
2012\Projects\HelloWorldMonoberry\HelloWorldMonoberry\PackagerScripts\Monoberry_Launcher.ps1"<o:p></o:p></span></b></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Ya con todo
configurado lo único que necesitamos es guardar los cambios de las propiedades
del proyecto y lanzar la aplicación con “Ctrl + F5” y listo: <o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLC0OmHOsEsqkayOQhHwFT-Guc7OZ6IAGcA0COb3y555uTXG1PITyryqTdXlMSfBkeK047oSt-9i-b9loBe6B0OLDHpf7ECk_VGn_g1IbOVc1FZMZYNmGy9-d3iy7G6AK0k6GE-ciWcEO2/s1600/image019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLC0OmHOsEsqkayOQhHwFT-Guc7OZ6IAGcA0COb3y555uTXG1PITyryqTdXlMSfBkeK047oSt-9i-b9loBe6B0OLDHpf7ECk_VGn_g1IbOVc1FZMZYNmGy9-d3iy7G6AK0k6GE-ciWcEO2/s640/image019.png" width="412" /></a></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_3" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:418.5pt;
height:650.25pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Gustavo\AppData\Local\Temp\msohtmlclip1\01\clip_image019.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><span lang="ES" style="mso-ansi-language: ES;"><o:p></o:p></span><br /></div>
</div>
Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-92167085114688087962013-01-03T11:43:00.001-08:002013-01-03T12:08:28.167-08:00Hola Mundo MonoMac<style>
<!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-520092929 1073786111 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:0in;
margin-right:0in;
margin-bottom:8.0pt;
margin-left:0in;
line-height:107%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;
mso-ligatures:standard;
mso-ansi-language:ES;
mso-fareast-language:EN-US;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:11.0pt;
mso-ansi-font-size:11.0pt;
mso-bidi-font-size:11.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;
mso-ligatures:standard;
mso-ansi-language:ES;
mso-fareast-language:EN-US;}
.MsoPapDefault
{mso-style-type:export-only;
margin-bottom:8.0pt;
line-height:107%;}
@page WordSection1
{size:8.5in 11.0in;
margin:70.85pt 85.05pt 70.85pt 85.05pt;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
</style>MonoMac es un pequeño framework de enlace para que sea posible escribir aplicaciones hechas con Cocoa y C#, pudiendo de esta manera tener las ventajas de las librerías nativas de OSX junto con el poder del Framework .NET, consiguiendo que de esta manera el desarrollo de aplicaciones nativas para Mac OS X sea mucho más fácil, para los programadores del mundo .NET.<br />
<br />
Al día de hoy existen 2 versiones de MonoMac, una es de código abierto que es distribuida junto con MonoDevelop para Mac y la otra es el producto ofrecido por Xamarin, llamado Xamarin.Mac que tiene un número mayor de funcionalidades y mejoras con respecto a la versión gratuita. Pero a pesar de las diferencias entre ambas versiones, lo principal es que con ambas se pueden hacer aplicaciones 100% funcionales, aunque claro, siempre es mejor adquirir la versión completa, al menos para aplicaciones que van de medianas a grandes.<br />
<br />
Para efectos prácticos y para que los ejemplos que publique en este blog sean para el mayor número de desarrolladores posible, utilizare la versión gratuita de MonoMac.<br />
<br />
<h4>
El tradicional ¡Hola Mundo!</h4>
Al igual que para IOS, debemos tener instalado en nuestra maquina los siguientes paquetes:<br />
<br />
- MonoDevelop 3.x ( <a href="http://monodevelop.com/Download">http://monodevelop.com/Download</a> )<br />
- Mono Runtime SDK 2.10 o Superior (<a href="http://www.go-mono.com/mono-downloads/download.html">http://www.go-mono.com/mono-downloads/download.html</a>)<br />
- XCode 4.X<br />
<br />
Ya con todo instalado, nuestro próximo paso es crear un proyecto nuevo, del tipo MonoMac, al que le daremos el nombre de HelloMonoMac, como se ve a continuación (no habilitamos el soporte para GTK#):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF42wzdN_MK5j7RicYhMSsbdnvMt5xdIkPHKKLWeEVsdQi6GE9xTE3AcJ8QzUsX7zONv494HwKvDojN_YgfUGB06Q3cfYbqXbpnW93w_NxDxe5kbVQDCxckvNHz7xMhNHknPoahP7tgPMY/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF42wzdN_MK5j7RicYhMSsbdnvMt5xdIkPHKKLWeEVsdQi6GE9xTE3AcJ8QzUsX7zONv494HwKvDojN_YgfUGB06Q3cfYbqXbpnW93w_NxDxe5kbVQDCxckvNHz7xMhNHknPoahP7tgPMY/s1600/image001.png" height="231" width="400" /></a></div>
Ya con el proyecto creado, procedemos a editar el archivo MainWindow.xib, haciendo doble click sobre él, de tal manera que se abra el editor de interfaces de XCode, donde agregaremos un botón:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiPVme1-CV5FrEAYPQbMqROkId2Ugo3D8MLLPyUhyphenhyphenr5u3KXmUcmJepteHQfM6u8FJnlRDRqIoBK1eOHEpggT0kiwjj0VS7O6zSBPn1Gp_h1SuOiAUkiBDbNi0Ls3fJjmZ9aBvg7YVPZOXl/s1600/image002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiPVme1-CV5FrEAYPQbMqROkId2Ugo3D8MLLPyUhyphenhyphenr5u3KXmUcmJepteHQfM6u8FJnlRDRqIoBK1eOHEpggT0kiwjj0VS7O6zSBPn1Gp_h1SuOiAUkiBDbNi0Ls3fJjmZ9aBvg7YVPZOXl/s1600/image002.png" height="251" width="400" /></a></div>
<br />
<br />
<br />
Nuestro siguiente pasó, será crear un enlace desde la interface a nuestro controlador, a través de los Outlets; esto lo hacemos usando el Assistan Editor que nos proporciona XCode. El proceso para agregar un Outlet, es sencillo, ya que solo se necesita presionar Control y luego hacer click sobre el objeto que deseamos enlazar, luego simplemente arrastramos el puntero de mouse hacia el código.<br />
Cuando estemos en posición, solamos el mouse y nos aparecerá un dialogo, preguntándonos un nombre para el objeto, en nuestro caso lo llamaremos btnHello:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9-LKBHP3truaPkvV3d8uKYfVNmyXHfk38cPmqYVj3i4z7GU0H1WqVoRdJmLd1L3sVZIGRiNxi3vwm2Nn676YGH6jP1PcBoMry2QMN9CkysigEJetae-pcaCydiLIDNNJZK23sMuDXBNiS/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9-LKBHP3truaPkvV3d8uKYfVNmyXHfk38cPmqYVj3i4z7GU0H1WqVoRdJmLd1L3sVZIGRiNxi3vwm2Nn676YGH6jP1PcBoMry2QMN9CkysigEJetae-pcaCydiLIDNNJZK23sMuDXBNiS/s1600/image003.png" height="210" width="400" /></a></div>
<br />
Después guardamos el archivo y cerramos XCode, lo que generara que MonoDevelop actualice algunos archivos, para que después de actualizarlos, nos vayamos al archivo MainWindowController.cs. Ahí agregaremos el siguiente método:<br />
<br />
<pre class="brush: csharp"> private string GetCountries()
{
string [] countries = new string[6];
countries[0] = "Bolivia";
countries[1] = "Colombia";
countries[2] = "Espania";
countries[3] = "Mexico";
countries[4] = "Argentina";
countries[5] = "Chile";
Random r = new Random();
return countries[r.Next(0,5)];
}
</pre>
<br />
Ya con el método creado, lo único que se necesita ahora, es permitir que nuestro botón escuche eventos, para tal propósito agregamos el siguiente código, dentro del método AwakeFromNib:<br />
<br />
<pre class="brush: csharp"> public override void AwakeFromNib ()
{
base.AwakeFromNib ();
btnHello.Activated += (sender, e)=>
{
this.btnHello.Title= "Hello World from " + this.GetCountries();
};
}
</pre>
<br />
Con todo en su lugar, pones en marcha nuestra aplicación y listo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTNf1AD7GQPMd1ePiYl4WMJIT_jMviJBZigOjwJMmF5aonSpbKMFVcpNdJ2X4mnFBwd8lZavv23ZHMddYCOjjHx0j7sUAJgh3xKwHWnMer4ZOU_QA2XdZxubzSbLAhXCuNmfJjxhR_tV0o/s1600/image004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTNf1AD7GQPMd1ePiYl4WMJIT_jMviJBZigOjwJMmF5aonSpbKMFVcpNdJ2X4mnFBwd8lZavv23ZHMddYCOjjHx0j7sUAJgh3xKwHWnMer4ZOU_QA2XdZxubzSbLAhXCuNmfJjxhR_tV0o/s1600/image004.png" height="231" width="400" /></a></div>
<br />
Saludos!Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com1tag:blogger.com,1999:blog-4986294743181426431.post-36172754945693742512012-09-13T11:32:00.000-07:002012-09-13T11:32:38.501-07:00Instalar Qt en Visual Studio 2010<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Zsa2IeL-1bK8kun7gKbFREUtomt4ZiBmImMYcZlEVMC0ubtgAIx8b_P8C3U_zqjXdlDxLISw4WApY3G40qlvxbc1VUDf1QiHLaY6nOBOLgxG5kj9dNGdyJ16f__7xiNa0MuI4pSfDL3M/s1600/qt_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Zsa2IeL-1bK8kun7gKbFREUtomt4ZiBmImMYcZlEVMC0ubtgAIx8b_P8C3U_zqjXdlDxLISw4WApY3G40qlvxbc1VUDf1QiHLaY6nOBOLgxG5kj9dNGdyJ16f__7xiNa0MuI4pSfDL3M/s400/qt_logo.png" width="400" /></a></div>
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">Tener un
ambiente de trabajo adecuado para desarrollar es fundamental, en caso contrario
nuestra productividad puede sentirse afectada. Este es el caso de Qt donde
viene con su propio IDE, pero que para las personas que vienen de Visual Studio
no es la herramienta más cómoda de usar. Por lo cual poder desarrollar con Qt y
Visual Studio, nos facilitaría la vida.<o:p></o:p></span></span></div>
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">Por
suerte, el proceso para poder usar Qt y Visual Studio juntos no es una tarea
muy complicada como veremos adelante.<o:p></o:p></span></span></div>
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">Lo
primero que debemos hacer es bajarnos los siguientes paquetes e instalarlos en
el siguiente orden:<o:p></o:p></span></span></div>
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">1. <a href="http://releases.qt-project.org/vsaddin/qt-vs-addin-1.1.11-opensource.exe">http://releases.qt-project.org/vsaddin/qt-vs-addin-1.1.11-opensource.exe<o:p></o:p></a></span></span></div>
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">2. <a href="http://releases.qt-project.org/qt4/source/qt-win-opensource-4.8.2-vs2010.exe">http://releases.qt-project.org/qt4/source/qt-win-opensource-4.8.2-vs2010.exe<o:p></o:p></a></span></span></div>
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><o:p><span style="font-family: Calibri;"> </span></o:p></span><br />
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">Para propósitos
del post, vamos a usar la configuración por defecto y la ubicación por defecto
para la instalación que es “C:\Qt\”.<o:p></o:p></span></span></div>
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">Ya con
los paquetes instalados, nuestro último paso, y el necesario para que todo
funcione adecuadamente es abrir el Command Prompt (2010) de Visual Studio y
ejecutar la siguiente línea de comando:<o:p></o:p></span></span></div>
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">c:\Qt>
setx QTDIR C:\Qt<o:p></o:p></span></span></div>
<br />
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">Y todo listo
para que podamos crear nuestras aplicaciones con Qt desde Visual Studio 2010.</span></span></div>
<div class="MsoNoSpacing" style="margin: 0in 0in 0pt;">
<span lang="ES-BO" style="mso-ansi-language: ES-BO;"><span style="font-family: Calibri;">Suerte!<o:p></o:p></span></span></div>
Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com3tag:blogger.com,1999:blog-4986294743181426431.post-52602904329952123762012-07-23T20:47:00.003-07:002012-07-24T11:59:39.435-07:00Silverlight y ASP.NET MVC<span style="font-family: Calibri;">Desde hace unos días, estoy hacienda una aplicación web un
tanto simple que sirva para administrar los datos de otra aplicación móvil. Por
lo cual se me ocurrió realizar una aplicación de una sola página, para así
evitar que el usuario se tenga que moverse entre páginas muy similares que
restan usabilidad al sistema.</span><br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">La primera opción para realizar tal tarea fue usar
JavaScript junto con JQuery pero, en medio camino se empezó a complicar la cosa
y tome la decisión de usar Silverlight para completar la tarea (en otro post
expondré con mayor profundidad el por qué tome tal decisión).</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Ya con la decisión tomada, solo queda ponerse manos a la
obra, pero para el presente post solo realizare una pequeña introducción de como
unir ASP.NET MVC y Silverlight ya que pretendo realizar otros post donde
entraremos a más detalle.</span></div>
<h2 style="margin: 8pt 0cm 0pt;">
<span style="font-size: medium;"><span style="color: #2e74b5;"><span style="font-family: Calibri Light;">Crear el entorno de Trabajo<o:p></o:p></span></span></span></h2>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Nuestro primer paso será crear una aplicación en ASP.NET MVC
habilitando las opciones para utilizar HTML5 como opción predeterminada y usar
Razor como motor de vistas de ASP.NET MVC:<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFuxU1-fUb9Om1BLQrUEyWldKJsFRZVQDb0SqhWXzqRshnXgqRDxQShS4nI14A4K_1bZeQWI0_Y4p-vM-ykEfJRfCm8hzqvUKHwdSXgbcuQEbF7LTMsqULM6WYuVh1AOpoMrLeYxoLz5IP/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="361" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFuxU1-fUb9Om1BLQrUEyWldKJsFRZVQDb0SqhWXzqRshnXgqRDxQShS4nI14A4K_1bZeQWI0_Y4p-vM-ykEfJRfCm8hzqvUKHwdSXgbcuQEbF7LTMsqULM6WYuVh1AOpoMrLeYxoLz5IP/s400/image001.png" width="400" /></a></div>
</div>
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Nuestro siguiente paso será crear nuestra aplicación en
Silverlight, donde tendremos cuidado de que se adjunte a nuestro proyecto de
ASP.NET MVC:<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnzFenbQdav-FVKszXvPfF0PSGxH8GMv-pmd8Q428IEMrCrvp83u-8V3Ss_s0wHj2pnPY1SghSeH3LMXr8FPDXH6Ku8b8tgKdq07wUPzhyRgDDQxPuUevNYvbIf1aAGKg_kzW8S4ZW7YK9/s1600/ASPSVL1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnzFenbQdav-FVKszXvPfF0PSGxH8GMv-pmd8Q428IEMrCrvp83u-8V3Ss_s0wHj2pnPY1SghSeH3LMXr8FPDXH6Ku8b8tgKdq07wUPzhyRgDDQxPuUevNYvbIf1aAGKg_kzW8S4ZW7YK9/s400/ASPSVL1.png" width="383" /></a></div>
</div>
<h2 style="margin: 8pt 0cm 0pt;">
<span style="font-size: medium;"><span style="color: #2e74b5;"><span style="font-family: Calibri Light;">Manos a la Obra</span></span></span></h2>
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Ya con el entorno de trabajo creado procedemos a agregar la
aplicación el Silverlight a alguna de nuestras vistas, para nuestro caso, la
agregaremos a la vista “About” que viene por defecto con el proyecto de ASP.NET
MVC:<o:p></o:p></span></div>
<pre class="brush: html">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="800" height="600">
<param name="source" value="../ClientBin/Widget.xap" />
<param name="background" value="White" />
<param name="minRuntimeVersion" value="4.0.60129.0" />
<param name="autoUpgrade" value="true" />
<a href="http://www.microsoft.com/getsilverlight/get-started/install/" style="text-decoration: none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight"
style="border-style: none" />
</a>
</object>
<script type="text/javascript" src="../../Scripts/Silverlight.js"></script>
<script type="text/javascript">
function onSilverlightError(sender, args) {
var appSource = "";
if (sender != null && sender != 0) {
appSource = sender.getHost().Source;
}
var errorType = args.ErrorType;
var iErrorCode = args.ErrorCode;
if (errorType == "ImageError" || errorType == "MediaError") {
return;
}
var errMsg = "Unhandled Error in Silverlight Application " + appSource + "
";
errMsg += "Code: " + iErrorCode + "
";
errMsg += "Category: " + errorType + "
";
errMsg += "Message: " + args.ErrorMessage + "
";
if (errorType == "ParserError") {
errMsg += "File: " + args.xamlFile + "
";
errMsg += "Line: " + args.lineNumber + "
";
errMsg += "Position: " + args.charPosition + "
";
}
else if (errorType == "RuntimeError") {
if (args.lineNumber != 0) {
errMsg += "Line: " + args.lineNumber + "
";
errMsg += "Position: " + args.charPosition + "
";
}
errMsg += "MethodName: " + args.methodName + "
";
}
throw new Error(errMsg);
}
</script>
</pre>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">El código que se puede ver en la parte superior es el mismo
código que se encuentra en el archivo, TemplateSilverligthApplication.html que
se agrega por defecto a nuestra aplicación ASP.NET MVC cuando creamos un nuevo
proyecto Silverlight, enlazado a un sitio ASP.NET exceptuando el hecho de que
la ruta de la aplicación lleva ../ Ya que al estar nuestra vista en un
subdirectorio debemos indicar en nuestro path relativo que suba un nivel para
poder encontrar el binario de Silverlight.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">El siguiente paso es crear el modelo de datos de nuestra aplicación,
que será una clase simple llamada Friendship. Pero además no debemos de olvidar
que debemos serializar nuestros datos en formato JSON para que los datos puedan
ser consumidos con facilidad por nuestra aplicación Silverlight, por lo tanto
nuestro modelo será algo así (El ensamblado que contiene las clases de soporte
para la serialización para JSON, se llama System.Runtime.Serialization):<o:p></o:p></span></div>
<pre class="brush: csharp">
using System.Runtime.Serialization;
namespace TestSLV.Models
{
[DataContract]
public class Friend
{
[DataMember]
public string nameFriend { get; set; }
[DataMember]
public string twitterFriend { get; set; }
}
}
</pre>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Nuestro último paso en el lado del servidor será, agregar un
par de métodos a nuestro controlador principal (HomeController), que se
encargaran de generar una cadena de texto con la información serializada en
JSON de una lista de objetos del tipo Friend:<o:p></o:p></span></div>
<pre class="brush: csharp">
public string ListFriends( )
{
var friends = new List<friend>
{
new Friend{nameFriend="Andiria",twitterFriend="sysandy"},
new Friend{nameFriend="Francisca",twitterFriend="none"},
new Friend{nameFriend="Fabiana",twitterFriend="none"},
};
return SerializeToJsonString( friends );
}
private string SerializeToJsonString( object objectToSerialize )
{
using ( MemoryStream ms = new MemoryStream( ) )
{
DataContractJsonSerializer serializer =
new DataContractJsonSerializer( objectToSerialize.GetType( ) );
serializer.WriteObject( ms, objectToSerialize );
ms.Position = 0;
using ( StreamReader reader = new StreamReader( ms ) )
{
return reader.ReadToEnd( );
}
}
}
</friend></pre>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Ya con toda la infraestructura del servidor completada, el
siguiente paso será consumir la información entregada por el servidor desde
nuestra aplicación en Silverlight, para lo cual agregaremos la misma clase
Friend que teníamos en el lado del servidor para poder des-serializar la información
que nos entrega el servidor. Luego procederemos a crear la vista de nuestra aplicación,
agregando un DataGrid:<o:p></o:p></span></div>
<pre class="brush: xml">
<Grid x:Name="LayoutRoot">
<ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}">
<StackPanel x:Name="ContentStackPanel">
<TextBlock x:Name="HeaderText" Style="{StaticResource HeaderTextStyle}"
Text="Home"/>
<sdk:DataGrid AutoGenerateColumns="True" Height="120" Name="friendGrid" Width="304" ItemsSource="{Binding Path=Friends}" />
</StackPanel>
</ScrollViewer>
</Grid>
</pre>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Luego agregaremos un ViewModel llamado HomeViewModel que
herede de la clase abstracta <a href="http://cup-coffe.blogspot.com/2012/06/clase-baseviewmodel.html" target="_blank">BaseViewModel</a>, para después agregar los
respectivos métodos para la des-serialización de los datos, como se ve a continuación
(Para poder hacer uso del espacio de nombres System.Runtime.Serialization.Json debemos
agregar a nuestro proyecto los ensamblados System.ServiceModel.Web, System.Runtime.Serialization
y System.Runtime.Serialization.Json):<o:p></o:p></span></div>
<pre class="brush: csharp">
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Text;
namespace Widget.ViewModel
{
public class HomeViewModel : BaseViewModel
{
public ObservableCollection<friend> Friends { get; set; }
public HomeViewModel( )
{
this.Friends = new ObservableCollection<friend>( );
GetDataFromServer( );
}
private void GetDataFromServer( )
{
var serviceUri = new Uri( "/Home/ListFriends", UriKind.Relative );
var webClient = new WebClient( );
webClient.OpenReadCompleted += openReadCompleted;
webClient.OpenReadAsync( serviceUri );
}
private List<friend> DeserializeFriend( string jsonString )
{
using ( MemoryStream ms = new MemoryStream( Encoding.Unicode.GetBytes( jsonString ) ) )
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer( typeof( List<friend> ) );
return (List<friend>) serializer.ReadObject( ms );
}
}
private void openReadCompleted( object sender, OpenReadCompletedEventArgs e )
{
if ( e.Error != null )
return;
using ( StreamReader reader = new StreamReader( e.Result ) )
{
List<friend> temporal = DeserializeFriend( reader.ReadToEnd( ) );
foreach ( Friend item in temporal )
{
this.Friends.Add( item );
}
}
}
}
}
</friend></friend></friend></friend></friend></friend></pre>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Con toda la infraestructura lista, lo único que resta
realizar es lanzar nuestra aplicación y ver qué tal va:<o:p></o:p></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk5UDq-vGcDh9X_8HQhUIbViCzets4XSPHjD-lI6MJchZad40bsZeBY3E9IdwlG-WzuhyphenhyphenymMW-ogUvM-s0GlsWHHArbJEV7DrJiFadaH5RUlP1wOnUc1NlO0ze-ubCXfHKp5ZLTShVVpZn/s1600/ASPSVL2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk5UDq-vGcDh9X_8HQhUIbViCzets4XSPHjD-lI6MJchZad40bsZeBY3E9IdwlG-WzuhyphenhyphenymMW-ogUvM-s0GlsWHHArbJEV7DrJiFadaH5RUlP1wOnUc1NlO0ze-ubCXfHKp5ZLTShVVpZn/s640/ASPSVL2.png" width="640" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Con la imagen de la aplicación corriendo, me despido</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">Suerte!</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 8pt;">
<span style="font-family: Calibri;">PD.- El tema de aplicación en Silverlight, se llama
Cosmopolitan y lo pueden obtener <a href="http://www.microsoft.com/en-us/download/details.aspx?id=14590" target="_blank">de aquí</a>.</span><br />
<span style="font-family: Calibri;"><a href="http://sdrv.ms/MEbgN6" target="_blank">Source: ASPandSVL.rar</a></span></div>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com1tag:blogger.com,1999:blog-4986294743181426431.post-71194481649791760902012-07-18T11:12:00.000-07:002012-07-20T08:12:05.357-07:00ACM - ICPC<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMdxh20eG2zr5TxpjOH4kStCB711vSFSo5yT5oEAl6JlRTeuqnWigW3S4YJp3udbDpv00XAjrikzgGhF45MeO20H-Vcw7FwU5_XpSM9SqBdoncOBlel7V46ooK-SiiO-8Q8oQv1ppRzp5y/s1600/logo_ACM-ICPC.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMdxh20eG2zr5TxpjOH4kStCB711vSFSo5yT5oEAl6JlRTeuqnWigW3S4YJp3udbDpv00XAjrikzgGhF45MeO20H-Vcw7FwU5_XpSM9SqBdoncOBlel7V46ooK-SiiO-8Q8oQv1ppRzp5y/s400/logo_ACM-ICPC.jpg" width="400" /></a></div>
<br />
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">El concurso de programación ACM (</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Association</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">for</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> Computing </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Machinery</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">) ICPC (</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">International </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Collegiate</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Programming</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Contest</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">) es una competencia anual que se lleva a cabo desde el año 1970. Se inició en la Universidad de </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Texas A&M </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> con el afán de promover la cultura competitiva entre los participantes. El or</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">ganizador de ese entonces fue el</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">“</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt; font-style: italic;" xml:lang="ES-ES">Capítulo Alfa de la Sociedad de Honor en Ciencias de la Computación UPE</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt; font-style: italic;" xml:lang="ES-ES">”,</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> el evento </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">creció</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> rápidamente en popularidad alrededor de Estados Unidos y </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Canadá</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span><br />
<br />
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="754929433" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Posteriormente</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> IBM se convirtió en el auspiciador oficial en 1997,</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> y desde entonces</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> la competencia se ha incrementado en un factor de 7.5 veces. La participación se ha incrementado a tal nivel que participan más de diez mil de los mejores estudiantes en diferentes áreas de las ciencias de la computación de 1.756 universidades de 82 países de los 6 continentes.</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> </span><br />
</div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="772344806" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">La competencia exige habilidades creativas, trabajo en equipo y la innovación para construir nuevos programas de software y permite a los estudiantes probar sus habilidades bajo presión.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="772344806" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3Ij-ybLDC7tpah-NIprpSGgXJ9yDYonHwq1UbeO16toIBWWgo23vcuKHi3hGEqvRcVCPz0Ib_kYzvndeTdEqmZf5c3foiW-X6eNSD8Eb1Z9j2hYsah7_fyK2P5esd-vPeUjc8PfaRp8FQ/s1600/IMG_0390.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3Ij-ybLDC7tpah-NIprpSGgXJ9yDYonHwq1UbeO16toIBWWgo23vcuKHi3hGEqvRcVCPz0Ib_kYzvndeTdEqmZf5c3foiW-X6eNSD8Eb1Z9j2hYsah7_fyK2P5esd-vPeUjc8PfaRp8FQ/s640/IMG_0390.jpg" width="640" /></a></div>
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1404207212" style="background-color: transparent; color: #4f81bd; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: bold; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;" xml:lang="ES-ES">Modalidad de la Competencia </span><span class="EOP SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="673059846" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">La competencia evalúa a equipos de tres estudiantes a través de problemas complejos de programación comprendido por 8 o más problemas con un tiempo máximo de 5 horas y equipados con solo una computadora, los competidores trabajan contra reloj en una competencia lógica, estratégica y de capacidad mental.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span><br />
</div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="840897343" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Los compañeros de equipo se colaboran entre </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">sí</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> para determinar la dificultad del problema, deducir los requerimientos, diseñar casos de prueba y construir el software que resuelve el problema bajo un intenso control de los jueces.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span><br />
</div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="909562066" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">La prueba es controlada por jueces presénciales y virtuales. Los estudiantes solo acceden al enunciado del problema y un ejemplo de datos de prueba. Cada solución incorrecta es sancionada con un tiempo de penalidad. El equipo que resuelve más problemas en el menor tiempo acumulado es declarado ganador.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="909562066" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcuIZ1xg5-9h_weqrZtujVYVmq3XUGYxSDQHylEjoLx39ZWHASEyIyYRtPtqAaECLUHoeTjNIvCPSHAqnBMlsPPwxr7LF6hPAmdVWS9jVV6timA7uyko8QBnekBqWVHHA7bOaxCaCVdhY/s1600/2980177971_0cbccd1565_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="427" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcuIZ1xg5-9h_weqrZtujVYVmq3XUGYxSDQHylEjoLx39ZWHASEyIyYRtPtqAaECLUHoeTjNIvCPSHAqnBMlsPPwxr7LF6hPAmdVWS9jVV6timA7uyko8QBnekBqWVHHA7bOaxCaCVdhY/s640/2980177971_0cbccd1565_z.jpg" width="640" /></a></div>
<br />
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1459417204" style="background-color: transparent; color: #4f81bd; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: bold; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;" xml:lang="ES-ES">Mi Experiencia en la Competencia</span><span class="EOP SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="899947525" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">El año 2010 participe en la ronda clasificatoria de mi país, donde mi equipo termino entre las primeros 10 puestos (de 117 equipos), lo que nos dio la oportunidad de participar en la clasificatoria</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> latinoamericana para el mundial que se realizó en Orlando Florida - USA. </span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1202946109" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">La experiencia en la competencia fue de las mejores, donde pude poner a prueba mis capacidades algorítmicas y la experiencia de trabajar en equipo. Y ahora mi intención es compartir las experiencias y trucos que aprendí durante la competencia.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="1202946109" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="2009624525" style="background-color: transparent; color: #4f81bd; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: bold; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;" xml:lang="ES-ES">Consejos y Trucos</span><span class="EOP SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1370915644" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Entre las cosas que hay que ponerse a pensar cuando uno compite en el ACM </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">–</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> ICPC</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">, tenemos algo tan básico y que muchas de las veces podríamos pasar por alto y es el que se refiere a el trabajo en equipo. Hay que recordar que solo tenemos una computadora, 5 horas y 6 manos; y </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">bueno si no sabemos cómo trabajar en equipo u organizarnos de manera correcta tendremos a miembros del equipo en estado ocioso, esperando a que la computadora sea desocupada por otro miembro del equipo y esto a la vez genera que el que está en la computadora se ponga nervioso y cometa algún error (hay que tener en cuenta que si el equipo envía un programa con errores al juez, este lo penalizara con 20 minutos de tiempo, lo cual puede ser la diferencia entre la vitoria o el fracaso), por lo tanto una organización adecuada es imperante.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="1370915644" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1350848684" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Como otro punto, tenemos que además de organizar al equipo, debemos de clasificar a los problemas a resolver, por tipo y por dificultad, para que de esta manera podamos distribuir mejor nuestros esfuerzos. Lo más recomendable es comenzar por los ejercicios simples, para que de esta manera podamos tener al menos un par del total resueltos en los primeros 10 a 20 minutos, además como un aditamento tenemos el aspecto psicológico del hecho de que ya hemos avanzado aunque sea un poco y de esta manera evitar la frustración.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="432884820" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Llevar consigo un resumen de las principales ecuaciones de trigonometría, algebra, geometría analítica, aritmética y calculo. Ciertamente muchas de estas ecuaciones ya las puedes conocer e inclusive las puedes saber de memoria, pero hay que tomar en cuenta que en ese momentos estas bajo mucha presión por lo cual un bloqueo mental, llega a ser muy común y por lo tanto es mucho mejor tener a mano un pequeño recordatorio y así evitar perder tiempo.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="432884820" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="591464456" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Otro punto importante y que muchas de las veces es pasado por alto, es el dominio del lenguaje de programación</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">, esto principalmente cuando los concursantes se ven obligados a usar un lenguaje que no es de uso habitual, este fue mi caso, ya que yo uso en un 90% de las ocasiones C# y en el concurso tuve que programar en Java que es lo más cercano a mi entorno habitual de desarrollo, pero como era de suponerse me tomo un mayor esfuerzo al momento de programar, además de no poder sacar el máximo provecho al lenguaje. La recomendación aquí seria practicar al menos con una semana de antelación, el uso de características específicas del lenguaje a usar durante la competencia, con esto no me refiero a las condicionales o ciclos, sino a características como la implementación de genéricos, estructuras de datos que ya vengan con las librerías del lenguaje o como realizar el manejo de cadenas (como nota, al menos el Bolivia los lenguajes permitidos para la competencia solo son C, C++ y Java).</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="591464456" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="803088670" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Aprende a leer, esto suena tonto pero es cierto y es uno de los factores que nos llevan al fracaso, porque la mayoría de los ejercicios no te explican de una manera clara el problema, esto con la finalidad de que los participantes logren desarrollar capacidades de compresión y análisis de la problemática.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span><br />
</div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1577148835" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<br />
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Como último consejo, </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">sugiero llevar de manera impresa las estructuras de datos y algoritmos de ordenamiento más comunes (solo se puede meter a la competencia material impreso), esto con la misma finalidad que con lo de las ecuaciones matemáticas, hay que evitar perder tiempo con cosas triviales.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="1577148835" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1759155074" style="background-color: transparent; color: #4f81bd; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: bold; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;" xml:lang="ES-ES">La práctica hace al maestro</span><span class="EOP SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="226337001" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Como reza el antiguo adagio, la práctica lo es todo en este tipo de competencias, desafortunadamente no siempre es posible entrenarse con mucha antelación a la competencia, ya sea por los trabajos propios que conlleva el asistir a la universidad o la vida social o el simple hecho de que los miembros del equipo no tienen horarios en común para </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">poderse reunir; ante tal situación el fracaso parece estar más cerca que el éxito, pero como una solución al estilo parche de pirata (no es la mejor, pero al menos evita que terminemos muy mal) recomiendo lo siguiente:</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<ul class="BulletListStyle1 SCX215698671">
<li class="OutlineElement Ltr SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 8pt; font-style: normal; font-weight: normal; margin-left: 48px; text-indent: 0px; vertical-align: baseline;"><div class="Paragraph SCX215698671" paraid="1109812014" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Comienza el entrenamiento al menos una </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">se</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">mana antes de la competencia.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<span class="ListGhost SCX215698671"></span></li>
<li class="OutlineElement Ltr SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 8pt; font-style: normal; font-weight: normal; margin-left: 48px; text-indent: 0px; vertical-align: baseline;"><div class="Paragraph SCX215698671" paraid="37638367" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Aprender las características y usos que se les puede dar a las estructuras de datos </span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">(aprender</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> el concepto, no la implementación)</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<span class="ListGhost SCX215698671"></span></li>
<li class="OutlineElement Ltr SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 8pt; font-style: normal; font-weight: normal; margin-left: 48px; text-indent: 0px; vertical-align: baseline;"><div class="Paragraph SCX215698671" paraid="1174654852" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Aprender y comprender como funcionan los grafos, junto con algún algoritmo (siempre hay algún problema sobre grafos en la competencia).</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<span class="ListGhost SCX215698671"></span></li>
<li class="OutlineElement Ltr SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 8pt; font-style: normal; font-weight: normal; margin-left: 48px; text-indent: 0px; vertical-align: baseline;"><div class="Paragraph SCX215698671" paraid="1103185645" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"> Aprende expresiones regulares y manejo de cadenas (al igual que los grafos, siempre hay uno de este tipo de problemas).</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<span class="ListGhost SCX215698671"></span></li>
<li class="OutlineElement Ltr SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 8pt; font-style: normal; font-weight: normal; margin-left: 48px; text-indent: 0px; vertical-align: baseline;"><div class="Paragraph SCX215698671" paraid="49110035" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Desempolva tu libro de Geometría analítica y dale una repasada, ya que son comunes los ejercicios de este tipo.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<span class="ListGhost SCX215698671"></span></li>
<li class="OutlineElement Ltr SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 8pt; font-style: normal; font-weight: normal; margin-left: 48px; text-indent: 0px; vertical-align: baseline;"><div class="Paragraph SCX215698671" paraid="502232330" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Practica con un juez online como el de la Universidad de Valladolid</span><span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">, para entrar en calor.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<span class="ListGhost SCX215698671"></span></li>
</ul>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1882011960" style="background-color: transparent; color: #4f81bd; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: bold; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;" xml:lang="ES-ES">Preguntas rápidas</span><span class="EOP SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="737783023" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"><strong>¿Un equipo puede estar compuesto por más de 3 miembros?</strong></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="982320773" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">El equipo puede estar compuesto de hasta 4 miembros, pero solo 3 pueden entrar a competir, el cuarto miembro es de refuerzo en caso de que alguno de los miembros no pueda participar.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="982320773" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="25928485" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"><strong>¿Por qué los globos en las fotos?</strong></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="226827419" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Los globos muestran cuanto ejercicios han sido resueltos por el equipo y además basado en los colores, que ejercicios han resuelto.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="226827419" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1250211650" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"><strong>¿El concurso es para todos?</strong></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1484974485" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Ciertamente todo estudiante universitario puede ser parte del concurso, pero hay que tomar en cuenta el hecho de que los miembros del equipo deben de poseer una alta capacidad en algoritmia, lógica y sobre todo actitud para resolver problemas. </span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"></span></div>
<div class="Paragraph SCX215698671" paraid="1484974485" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="942894489" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"><strong>¿Se puede usar otro lenguaje de programación aparte de C, C++ o Java?</strong></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1386327561" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">En algunos paises si es posible utilizar otros lenguajes como C#, Pascal, etc. pero esto depende del organizador regional. Ademas hay que tomar en cuenta que en la fase final del concurso (Final Mundial) solo estan permitidos C, C++ y Java.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="1386327561" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1157568929" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"><strong>¿Qué entorno de desarrollo se utiliza?</strong></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1503095213" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">El entorno de desarrollo es Eclipse + CDT tanto para C/C++ como para Java. Al igual que los lenguajes de programación, en algunos países esta permitido el uso de otros entornos de desarrollo.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="1503095213" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1307711024" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"><strong>¿Los problemas en que idioma viene?</strong></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="565223299" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Los problemas vienen por lo general en ingles, aunque en algunos sitios como Bolivia o Brasil vienen en el idioma oficial del país.</span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
<div class="Paragraph SCX215698671" paraid="565223299" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br /></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="897449369" style="background-color: transparent; color: #4f81bd; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: bold; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;" xml:lang="ES-ES">Links Útiles</span><span class="EOP SCX215698671" style="font-family: Cambria,Serif; font-size: 13pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1588462147" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Sitio Oficial de la Competencia: </span><a class="Hyperlink SCX215698671" href="http://icpc.baylor.edu/welcome.icpc" style="text-decoration: none;"><span class="TextRun Underlined SCX215698671" style="color: blue; font-family: Calibri,Sans-Serif; font-size: 11pt; text-decoration: underline;" xml:lang="ES-ES">http://icpc.baylor.edu/welcome.icpc</span></a><span class="TextRun EmptyTextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1799743598" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Sitio Oficial de la Competencia en Bolivia: </span><a class="Hyperlink SCX215698671" href="http://www.icpc-bolivia.edu.bo/" style="text-decoration: none;"><span class="TextRun Underlined SCX215698671" style="color: blue; font-family: Calibri,Sans-Serif; font-size: 11pt; text-decoration: underline;" xml:lang="ES-ES">http://www.icpc-bolivia.edu.bo/</span></a><span class="TextRun EmptyTextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1113270113" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Reglas de la Competencia: </span><a class="Hyperlink SCX215698671" href="http://icpc.baylor.edu/ICPCWiki/Wiki.jsp?page=Regional%20Rules" style="text-decoration: none;"><span class="TextRun Underlined SCX215698671" style="color: blue; font-family: Calibri,Sans-Serif; font-size: 11pt; text-decoration: underline;" xml:lang="ES-ES">http://icpc.baylor.edu/ICPCWiki/Wiki.jsp?page=Regional%20Rules</span></a><span class="TextRun EmptyTextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="1659675045" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Juez Online de la Universidad de Valladolid: </span><a class="Hyperlink SCX215698671" href="http://uva.onlinejudge.org/" style="text-decoration: none;"><span class="TextRun Underlined SCX215698671" style="color: blue; font-family: Calibri,Sans-Serif; font-size: 11pt; text-decoration: underline;" xml:lang="ES-ES">http://uva.onlinejudge.org/</span></a><span class="TextRun EmptyTextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="141953780" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Set de problemas de las finales del mundo: </span><a class="Hyperlink SCX215698671" href="http://icpc.baylor.edu/info/Problem+Resources" style="text-decoration: none;"><span class="TextRun Underlined SCX215698671" style="color: blue; font-family: Calibri,Sans-Serif; font-size: 11pt; text-decoration: underline;" xml:lang="ES-ES">http://icpc.baylor.edu/info/Problem+Resources</span></a><span class="TextRun EmptyTextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="296397148" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Set de problemas pasados para Latinoamérica (Argentina, Bolivia, Brasil, Chile, Colombia, Cuba, Perú, México y Venezuela): </span><a class="Hyperlink SCX215698671" href="http://www.icpc-bolivia.edu.bo/examenes_pasados.html" style="text-decoration: none;"><span class="TextRun Underlined SCX215698671" style="color: blue; font-family: Calibri,Sans-Serif; font-size: 11pt; text-decoration: underline;" xml:lang="ES-ES">http://www.icpc-bolivia.edu.bo/examenes_pasados.html</span></a><span class="TextRun EmptyTextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"></span><span class="EOP SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX215698671" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX215698671" paraid="36832740" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; height: auto; margin-right: 23px; text-align: left; text-indent: 0px; vertical-align: baseline; width: auto;" xml:lang="ES-ES">
<span class="TextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Lista de Libros Útiles para el Entrenamientos: </span><a class="Hyperlink SCX215698671" href="http://www.icpc-bolivia.edu.bo/libros.html" style="text-decoration: none;" title="http://www.icpc-bolivia.edu.bo/libros.html
Ctrl+clic para seguir el vínculo"><span class="TextRun Underlined SCX215698671" style="color: blue; font-family: Calibri,Sans-Serif; font-size: 11pt; text-decoration: underline;" xml:lang="ES-ES">http://www.icpc-bolivia.edu.bo/libros.html</span></a><span class="TextRun EmptyTextRun SCX215698671" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES"></span></div>
</div>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-61918557318970829442012-07-15T14:10:00.000-07:002012-07-15T14:10:07.135-07:00Error al Instalar NuGet 2.0Como sabrán la última versión de NuGet, la 2.0 acaba de salir hace unas semanas con un montón de mejoras, pero si ya tenían una versión previa instalada en su ambiente de trabajo se habrán topado que no instala la actualización:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjlu4r2VNI-tqUr5NhtJmK_NjabbQOxURr9DI21ktKEkqZJkVuo9b9SrTKt86Ic44qSN7TT97RYq_sDM-mMnvx6DmIFU-nBn9pZEr3ewOwGUDKTFiXKGmH9dkXhS95Il2LSNdaOhUKBijo/s1600/nuget2.0-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="317" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjlu4r2VNI-tqUr5NhtJmK_NjabbQOxURr9DI21ktKEkqZJkVuo9b9SrTKt86Ic44qSN7TT97RYq_sDM-mMnvx6DmIFU-nBn9pZEr3ewOwGUDKTFiXKGmH9dkXhS95Il2LSNdaOhUKBijo/s400/nuget2.0-1.png" width="400" /></a></div>
<br />
<br />
Si vemos el Install Log, tendremos algo como lo siguiente:<br />
<br /><em>14/07/2012 17:27:17 - Searching for applicable products...<br />14/07/2012 17:27:17 - Found installed product - Microsoft Visual Studio 2010 Ultimate<br />14/07/2012 17:27:17 - The extension will be upgraded from version 1.2.20325.9034.<br />14/07/2012 17:27:17 - Found installed product - Microsoft Visual Studio 2010 Express for Windows Phone<br />14/07/2012 17:27:17 - The extension with ID 'NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5' is not installed to Microsoft Visual Studio 2010 Express for Windows Phone.<br />14/07/2012 17:27:36 - The following target products have been selected...<br />14/07/2012 17:27:36 - Microsoft Visual Studio 2010 Ultimate<br />14/07/2012 17:27:36 - Microsoft Visual Studio 2010 Express for Windows Phone<br />14/07/2012 17:27:36 - <br />14/07/2012 17:27:36 - Verifying matching extension signatures before updating...<br />Installed Extension Path: C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager\1.2.20325.9034\<br />Update Extension Path: h:\nuget.tools.vsix<br />14/07/2012 17:27:37 - VSIXInstaller.SignatureMismatchException: The installed version of 'NuGet Package Manager' is signed, but the update version has an invalid signature. Therefore, Extension Manager cannot install the update.<br /> en VSIXInstaller.Common.VerifyMatchingExtensionSignatures(IInstalledExtension installedExtension, IInstallableExtension updateExtension)<br /> en VSIXInstaller.InstallProgressPage.BeginInstallVSIX(SupportedVSSKU targetAppID)<br />14/07/2012 17:27:37 - Install Error : VSIXInstaller.SignatureMismatchException: The installed version of 'NuGet Package Manager' is signed, but the update version has an invalid signature. Therefore, Extension Manager cannot install the update.<br /> en VSIXInstaller.Common.VerifyMatchingExtensionSignatures(IInstalledExtension installedExtension, IInstallableExtension updateExtension)<br /> en VSIXInstaller.InstallProgressPage.BeginInstallVSIX(SupportedVSSKU targetAppID)<br />14/07/2012 17:27:37 - Beginning to install extension to Microsoft Visual Studio 2010 Express for Windows Phone...<br />14/07/2012 17:27:41 - Install to Microsoft Visual Studio 2010 Express for Windows Phone completed successfully. The extension has been installed to C:\Program Files\Microsoft Visual Studio 10.0\\Common7\IDE\VPDExpressExtensions\Microsoft Corporation\NuGet Package Manager\2.0.30619.9119\</em><br />
<em></em><br />Para solucionar tal problema, lo recomendable es desinstalar la versión actual de NuGet que tengamos, desafortunadamente si lo tratan de hacer se encontraran con que esta deshabilitado el botón de desinstalación:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1EtBYyVgUt_fNM-Vanb4XffEDf6cCOx88dxrEGvZs_E3Dd7kFlsqrcnIuRyllAKdRVLcjHfLJtxJKAsO1OaPId2DqjV1BQa9midhyDDuzNk5rl-uPtkhDRUlNzTjUs2xTqqMBttftDBV7/s1600/nuget2.0-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1EtBYyVgUt_fNM-Vanb4XffEDf6cCOx88dxrEGvZs_E3Dd7kFlsqrcnIuRyllAKdRVLcjHfLJtxJKAsO1OaPId2DqjV1BQa9midhyDDuzNk5rl-uPtkhDRUlNzTjUs2xTqqMBttftDBV7/s400/nuget2.0-2.png" width="400" /></a></div>
<br />
<br />
Esto se da porque NuGet requiere permisos de administrador para poder ser desinstalado, entonces lo mejor será abrir nuestro Visual Studio con los permisos requeridos:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5JO5aBHBQ9LOYmvSk-VVMI2h9a370ExmTJDPB6OOhPCPbhP5UNlymwla5tdnHQPJo4OVrZK6D_Ho26bZnedkM3gFusthnx_5JCoBkhZMTlgwbj1iYdrD9_yfuNFJc598mtGjxqYD47PZj/s1600/nuget2.0-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5JO5aBHBQ9LOYmvSk-VVMI2h9a370ExmTJDPB6OOhPCPbhP5UNlymwla5tdnHQPJo4OVrZK6D_Ho26bZnedkM3gFusthnx_5JCoBkhZMTlgwbj1iYdrD9_yfuNFJc598mtGjxqYD47PZj/s320/nuget2.0-3.png" width="308" /></a></div>
<br />
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="font-family: Calibri;">Ya con los permisos correspondientes desinstalamos NuGet,
luego procedemos a cerrar Visual Studio e instalamos la última versión de
NuGet:<o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh02nzEpZQNhlAL0YTbS_qHTblRMiONbXJWo0Al_DHRUDHd5RM5vwDeNQGi2yiNtCXFMmMKH3ZEAbPdGEMlzK64jh5_hyphenhyphenoHg8JZUWJjh5MI1v7oBL-QqPTdWpJkHJpAHGRYOZUJndx2ZpCt/s1600/nuget2.0-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh02nzEpZQNhlAL0YTbS_qHTblRMiONbXJWo0Al_DHRUDHd5RM5vwDeNQGi2yiNtCXFMmMKH3ZEAbPdGEMlzK64jh5_hyphenhyphenoHg8JZUWJjh5MI1v7oBL-QqPTdWpJkHJpAHGRYOZUJndx2ZpCt/s320/nuget2.0-4.png" width="320" /></a></div>
<br />
Espero que les haya ayudado, ¡Suerte!Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-46178033288886450452012-06-22T14:24:00.000-07:002012-06-22T15:24:03.429-07:00Introduccion a Powershell<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Powershell es un framework de automatización de tareas que viene con una línea de comandos que posee su propio lenguaje de script; Powershell esta construido sobre .NET Framework y posee además acceso completo a COM y WMI por lo cual tendremos bastante poder en nuestras manos al usar Powershell.</span><span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span><br />
<br />
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="1994105913" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;">
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Además de la línea de comandos, Powershell viene con algo parecido a un IDE, denominado ISE (Integrated Scripting Environment) que facilita de gran manera la creación de Scripts. Pero si deseamos un IDE mas completo para la creación de Scripts tenemos la herramienta PowerGUI que se la pueden descargar de manera gratuita de <a href="http://powergui.org/index.jspa" target="_blank">http://powergui.org/index.jspa</a></span><br />
<br /></div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCysewLp-J4jXyV1m-gSvYNASmnJX_kqTihnUnKBw5B-VS98KnyZA2PRGQ8WYjYojDUj1sZYEQSpHdEsdZxaZo3XuL9UFZ2InWheLs5nzZBU5Ig25J3_rwRMhBdH4zDXaPzcUalQQp8Lc9/s1600/powershell1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCysewLp-J4jXyV1m-gSvYNASmnJX_kqTihnUnKBw5B-VS98KnyZA2PRGQ8WYjYojDUj1sZYEQSpHdEsdZxaZo3XuL9UFZ2InWheLs5nzZBU5Ig25J3_rwRMhBdH4zDXaPzcUalQQp8Lc9/s400/powershell1.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzlfd194GxVbF5we8lYg-pP9z8TxXBClojEaXecPUdX7zUWB0mK1h-tNR_W1A7V2_nL1k-3xAwGLA6LNcuhyphenhyphen-QTZMhXaJe5XplbHjJY7q-6ZH9blDErrWcPKXBxO5j7dC_XHIiR7vhttHN/s1600/powershell1-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzlfd194GxVbF5we8lYg-pP9z8TxXBClojEaXecPUdX7zUWB0mK1h-tNR_W1A7V2_nL1k-3xAwGLA6LNcuhyphenhyphen-QTZMhXaJe5XplbHjJY7q-6ZH9blDErrWcPKXBxO5j7dC_XHIiR7vhttHN/s400/powershell1-2.png" width="400" /></a></div>
</div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br />
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Powershell la estar escrito sobre .NET tiene la posibilidad de consumir objetos .NET, por lo tanto mucho del conocimiento adquirido para desarrollar con el framework .NET lo podremos reutilizar.</span><span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Ya con las herramientas instaladas, hagamos un pequeño script que ejecute un programa de consola y que nos muestre el resultado en pantalla, por lo tanto crearemos una función llamada RunProcess que reciba como parámetros la ruta del ejecutable y los argumentos con los que deseamos que se ejecute el programa:</span><span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">function</span><span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"></span></div>
</div>
<pre class="brush: csharp">
RunProcess()
{
param ([string]$exe = $(Throw "An executable must be specified"),[string]$arguments )
$startInfo= new-Object System.Diagnostics.ProcessStartInfo
$startInfo.FileName = $exe
$startInfo.Arguments=$arguments
$startInfo.RedirectStandardOutput = $true
$startInfo.UseShellExecute = $false;
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $startInfo
$process.Start()
$result = $process.StandardOutput.ReadToEnd()
$result
}
</pre>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br />
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Como se puede ver, instanciamos un objeto del tipo System.Diagnostics.ProcessStartInfo ($startInfo), luego asignamos los valores a sus propiedades respectivas para que después procedamos a crear otro objeto pero del tipo System.Diagnostics.Process al cual le asignaremos a su propiedad StartInfo el objeto que previamente creamos. Por ultimo procederemos a inicial el procesos llamando al método Start().</span><span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br />
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Para probarlo como funciona nuestro script vamos a ejecutar la aplicación de consola de NUnit, para lo cual vamos a agregar a nuestro script las siguientes variables:</span><span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"></span></div>
</div>
<pre class="brush: csharp">
$outputFile ='C:\Users\gustavo.torrico\Desktop\out.xml'
$application = 'C:\Program Files\NUnit 2.6\bin\nunit-console.exe'
$filePath ='C:\Users\gustavo.torrico\Desktop\assemblyName.dll'
$testName ='namespace.className.testName'
</pre>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<br />
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">La variable </span><span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">$outputFile sirve para para indicar donde generara su archivo de salida de NUnit, $filePath es la ubicación del ensamblado que contiene los Test y $testName guarda el nombre completo del Test que deseamos probar.</span><span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Ahora si lo hacemos correr podremos ver como ejecuta el test:</span><span class="EOP SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;"> </span></div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; text-align: left; text-indent: 0px; vertical-align: baseline;" xml:lang="ES-ES">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoIPsd8-9VBnKCL9i7cSS6j9Qbi_9q-Rbhd0UNGEnzH-2Gglw-7b2voVhsWZn3Uhq5yp0V9FNVMam-qY1XisZ2FxdrxaKXQPJKEsR3ubSHvx0Az7zWdVVH5DegEPjCz-l7E5D6_VoZDoEr/s1600/powershell2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoIPsd8-9VBnKCL9i7cSS6j9Qbi_9q-Rbhd0UNGEnzH-2Gglw-7b2voVhsWZn3Uhq5yp0V9FNVMam-qY1XisZ2FxdrxaKXQPJKEsR3ubSHvx0Az7zWdVVH5DegEPjCz-l7E5D6_VoZDoEr/s640/powershell2.png" width="640" /></a></div>
</div>
</div>
<div class="OutlineElement Ltr SCX218578046" style="margin-left: 0px; text-indent: 0px;">
<div class="Paragraph SCX218578046" paraid="0" style="background-color: transparent; color: windowtext; font-family: "Segoe UI",Tahoma,Verdana,"Sans-Serif"; font-size: 8pt; font-style: normal; font-weight: normal; height: auto; margin-right: 23px; text-align: left; text-indent: 0px; vertical-align: baseline; width: auto;" xml:lang="ES-ES">
<span class="TextRun SCX218578046" style="font-family: Calibri,Sans-Serif; font-size: 11pt;" xml:lang="ES-ES">Suerte!</span></div>
</div>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-66226238122349799892012-06-08T11:08:00.000-07:002012-06-08T11:12:03.840-07:00Clase BaseViewModelPara implementar el patron MVVM, debemos hacer que nuestras clases ( del ViewModel ) implementen de la la interface <span style="color: #2b91af;"><a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx" target="_blank">INotifyPropertyChanged</a>,</span>
que sirve para notiticar a los clientes (bindings) que el valor de la propiedad ha cambiado, por lo cual para cada ViewModel que hagamos debemos cumplir la firma de la interface lo cual se vuelve una tarea repetitiva y para tal efecto lo mas conveniente es crear una clase base abstracta que realize la implementacion de la interface y de la cual nosotros heredemos cada vez que se desee crear un ViewModel. La clase es como sigue:<br />
<br />
<pre class="brush: csharp">
using System;
using System.ComponentModel;
using System.Linq.Expressions;
using System.Diagnostics;
using System.Reflection;
namespace RegistryViewer
{
public abstract class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public virtual void NotifyPropertyChanged( string propertyName )
{
if ( this.PropertyChanged != null )
this.PropertyChanged( this, new PropertyChangedEventArgs( propertyName ) );
}
public virtual void NotifyPropertyChanged( Expression<Func<object>> property )
{
MemberExpression memberExpression;
if ( property.Body is UnaryExpression )
memberExpression = ( property.Body as UnaryExpression ).Operand as MemberExpression;
else
memberExpression = property.Body as MemberExpression;
if ( memberExpression == null )
Debug.Assert( false, "It must not happen" );
var propertyInfo = memberExpression.Member as PropertyInfo;
if ( propertyInfo == null )
Debug.Assert( false, "It must not happen" );
this.NotifyPropertyChanged( propertyInfo.Name );
}
}
}
</pre>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-53659091530439573552012-06-08T10:25:00.000-07:002012-10-12T08:14:55.554-07:00Modern UI Style para WPFDesde que salió Windows Phone 7 con <strike>Metro Style</strike> Modern UI y posteriormente Windows 8, se empezó a vislumbrar el estándar de interfaces de usuarios que iban a ser la norma. Con rasgos minimalistas, es un lenguaje de diseño basado en tipografía, que prioriza una navegación a través del texto.
Metro esta basado en el “Estilo Tipográfico Internacional” o “Estilo Suizo” que posee las siguientes características (Wikipedia):
<br />
<br />
<em>“Las características del estilo son el de la unidad en el diseño lograda a través de la asimetría en la composición, el uso de una malla tipográfica y una cuadrícula totalmente matemática. El estilo es asociado también a una preferencia por la fotografía en lugar de ilustraciones o dibujos.</em><br />
<em><br /></em><br />
<em>Se presentaba la información basándose en la claridad, la legibilidad y la objetividad, usando tipografías sin serif como la Akzidenz Grotesk. Este uso de la tipografía reflejaba el espíritu progresista de la época. Algunos de los primeros diseñadores del Estilo Tipográfico Internacional presentaban la tipografía como un elemento principal además de su uso como texto, característica que da nombre al estilo.
Los diseñadores de este estilo definían el diseño como una actividad socialmente útil e importante, y dejaban de lado la expresión artística y personal, y buscando una solución más científica y universal.”</em>
<br />
<br />
Y claro, la tecnología más adecuada para tener una interfaz de usuario rica visualmente no es otra que WPF (sobre Silverlight hablaremos otro rato) al menos para Windows 7 y tal vez para Windows 8 en Modo Escritorio, ya que para Windows en Modo <strike>Metro</strike> Modern UI los mas conveniente es usar WinRT.
Ya con la idea de las aplicaciones <strike>Metro</strike> Modern UI Style en mente, veamos un ejemplo de ese tipo de aplicaciones:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgztbbE0HwQSIwa4mxdPxa-24-FJHZ2YJSt0sMaaJQodJF59FffmKCpHeYrmLdEHBgfMoQnYyopa8nTt6mNU-H8FH7ITywXhNl4prvGXJbHLAvsRywUMVN9dqsgJsSL99Qx6nlYeMii2dss/s1600/Tema+de+Zune+para+WPF_html_413b3bdd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="436" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgztbbE0HwQSIwa4mxdPxa-24-FJHZ2YJSt0sMaaJQodJF59FffmKCpHeYrmLdEHBgfMoQnYyopa8nTt6mNU-H8FH7ITywXhNl4prvGXJbHLAvsRywUMVN9dqsgJsSL99Qx6nlYeMii2dss/s640/Tema+de+Zune+para+WPF_html_413b3bdd.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8N_yIglnHh1hnA4ROJWt4hvu9E98B3duOL4B957whpqhWcJV6JJqgCpl6FnmtGEE6roCne4KnsEoworxL5yK-Wk82_K3vd87JGrDJhOCBE70BL2PLGaBrcYYm0vYvzuqH6aM4wysRqHAA/s1600/Tema+de+Zune+para+WPF_html_3ddbc806.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8N_yIglnHh1hnA4ROJWt4hvu9E98B3duOL4B957whpqhWcJV6JJqgCpl6FnmtGEE6roCne4KnsEoworxL5yK-Wk82_K3vd87JGrDJhOCBE70BL2PLGaBrcYYm0vYvzuqH6aM4wysRqHAA/s640/Tema+de+Zune+para+WPF_html_3ddbc806.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-AhcwSOlT4iA-WyXcO3xDYslr6yMXcMT7s75PX9GwHY4CtBvBOpRCWo1faWEbli4xehCjKWcYL8xSledwGMCekV5UeKrN43Yf-KCsV7UNwjxAnvBatFlLmC_wDsIKn04mPU8veYTd7tR6/s1600/Tema+de+Zune+para+WPF_html_250f6a32.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="438" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-AhcwSOlT4iA-WyXcO3xDYslr6yMXcMT7s75PX9GwHY4CtBvBOpRCWo1faWEbli4xehCjKWcYL8xSledwGMCekV5UeKrN43Yf-KCsV7UNwjxAnvBatFlLmC_wDsIKn04mPU8veYTd7tR6/s640/Tema+de+Zune+para+WPF_html_250f6a32.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi90z0OPJOO0BPUXFwBVShfCpBL-Mnq3wxhp5M1qLRxWrOGZl7YKKV6Fki05W4PRKBfjusDFTnLGRL54kZN4kw9sheizudgsz0WrvKyQRPAnLdthiep00n7kQSHDbSvX1ZMjvdff2DfwSBu/s1600/Tema+de+Zune+para+WPF_html_m5b77a398.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="436" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi90z0OPJOO0BPUXFwBVShfCpBL-Mnq3wxhp5M1qLRxWrOGZl7YKKV6Fki05W4PRKBfjusDFTnLGRL54kZN4kw9sheizudgsz0WrvKyQRPAnLdthiep00n7kQSHDbSvX1ZMjvdff2DfwSBu/s640/Tema+de+Zune+para+WPF_html_m5b77a398.png" width="640" /></a></div>
<br />
<br />
El nombre de la aplicación es Zune y como se puede apreciar en las imágenes, tiene una interfaz bastante llamativa con títulos en letras grandes, thumbnails grandes, botones minimalistas de un solo color y algunos otros aspectos más que dan una sensación agradable al usar la aplicación.
Ciertamente si nos ponemos a pensar cuanto tendríamos que invertir en personalizar nuestra aplicación para que se vea así, parece un gran trabajo y ciertamente lo es, pero afortunadamente al día de hoy ya existe una librería que nos facilitara el trabajo de personalización. La librería en cuestión se llama MashApp.Metro, y es de código abierto lo cual nos permite personalizar aún más nuestra aplicación si así lo deseamos.
Para ver las capacidades de esta librería vamos a personalizar la aplicación de lectura de claves de registro que hice <a href="http://cup-coffe.blogspot.com/2012/06/buscar-software-instalado-traves-del.html" target="_blank">en este post</a>.<br />
<br />
En este momento la aplicación se ve de la siguiente manera:
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHahCMlTZEUXpqJ0WWjugthVLjwjdulzvVJ7lFT1GPQKwGPror542n8DkWKiK7oXdaWfY0kAO5xg2KRjvpcpH1OhEJNfQbNBoKfGby8nqyAB7WrTHelm1EYq_g_yBVsioJI5itO5gTaS2G/s1600/registryviewer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHahCMlTZEUXpqJ0WWjugthVLjwjdulzvVJ7lFT1GPQKwGPror542n8DkWKiK7oXdaWfY0kAO5xg2KRjvpcpH1OhEJNfQbNBoKfGby8nqyAB7WrTHelm1EYq_g_yBVsioJI5itO5gTaS2G/s400/registryviewer.jpg" width="400" /></a></div>
<br />
<br />
Nuestro objetivo es que se parezca a Zune, para lo cual nuestro primer paso será instalar MashApp.Metro y lo haremos a través de Nugget, con el siguiente comando:<br />
<br />
<strong>PM> Install-Package MahApps.Metro</strong>
<br />
<br />
Nuestro siguiente paso será irnos al XAML y remplazar la etiqueta <strong><Window</strong> por la etiqueta <strong><Controls:MetroWindow</strong> , después agregaremos el NameSpace:
<br />
<br />
<pre class="brush: xml">
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro".
</pre>
<br />
Después, deberemos agregaremos los recursos, que será pegar el siguiente código debajo de la etiqueta de apertura de MetroWindow:
<br />
<br />
<pre class="brush: xml">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedRowTabControl.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
</pre>
Como último paso, debemos de irnos al código subyacente (Code-Behind) del MainWindow y cambiar de:
<br />
<pre class="brush: csharp"> public partial class MainWindow : Window
</pre>
A:
<br />
<pre class="brush: csharp">
public partial class MainWindow : MetroWindow
</pre>
<br />
Y listo, si hacemos correr la aplicación podemos ver el cambio sustancial en la interfaz:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN3M3BNAlXwHr-opmOFYFvv0mcXC5sODoVmeCkEd6A7hxIrZZbDuGZ1HpZtDvGOc94T2d_HIk5xylotGzUhymRfjrzp23FXgak2j2rjnsNbCXLKmo8svf1lMI0yZ6kX_JWs4U5eOauzmxQ/s1600/registryviewerMetroStyle.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN3M3BNAlXwHr-opmOFYFvv0mcXC5sODoVmeCkEd6A7hxIrZZbDuGZ1HpZtDvGOc94T2d_HIk5xylotGzUhymRfjrzp23FXgak2j2rjnsNbCXLKmo8svf1lMI0yZ6kX_JWs4U5eOauzmxQ/s1600/registryviewerMetroStyle.jpg" /></a></div>
<br />
<br />
<div style="margin-bottom: 0in;">
Para más información vean:</div>
<br />
<div style="margin-bottom: 0in;">
<a href="http://mahapps.com/MahApps.Metro/">http://mahapps.com/MahApps.Metro/</a></div>
<div style="margin-bottom: 0in;">
<a href="http://www.smashingmagazine.com/2009/07/17/lessons-from-swiss-style-graphic-design/">http://www.smashingmagazine.com/2009/07/17/lessons-from-swiss-style-graphic-design/</a></div>
<div style="margin-bottom: 0in;">
<a href="http://en.wikipedia.org/wiki/Metro_Design_Language">http://en.wikipedia.org/wiki/Metro_Design_Language</a></div>
<br />
<div style="margin-bottom: 0in;">
Me despido con capturas de pantalla de
otras 2 aplicaciones con el mismo estilo, MetroTwit y GitHub para
Windows:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwwKz0XYAK4PdEzMI-b1EPveTRQzAx5rms0WuOBeXAarI0TUDm0kQ27MC5pT2_DBW-34pls9NrRtqyrV2ZZy5dqJcPObhMzQN5SLitgH_VtqSPR6Uo3L1uoT2ijTh84ifAEBP5trVH_11w/s1600/Tema+de+Zune+para+WPF_html_m51f4e4ed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwwKz0XYAK4PdEzMI-b1EPveTRQzAx5rms0WuOBeXAarI0TUDm0kQ27MC5pT2_DBW-34pls9NrRtqyrV2ZZy5dqJcPObhMzQN5SLitgH_VtqSPR6Uo3L1uoT2ijTh84ifAEBP5trVH_11w/s640/Tema+de+Zune+para+WPF_html_m51f4e4ed.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-C_kAX_32jFqcIKX7UQQZMS3k3Lmt2lGMjlV3HGph8gvH4wn4vNxafoK24Pl1fsBcrQsoYF3uO_WgnffnjQnfd0_HVqMpnlL1esdR5uHkS7m62XBo0NuRhUcplF0E_szFvY-o4JaJYCyl/s1600/Tema+de+Zune+para+WPF_html_7b230da0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="354" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-C_kAX_32jFqcIKX7UQQZMS3k3Lmt2lGMjlV3HGph8gvH4wn4vNxafoK24Pl1fsBcrQsoYF3uO_WgnffnjQnfd0_HVqMpnlL1esdR5uHkS7m62XBo0NuRhUcplF0E_szFvY-o4JaJYCyl/s640/Tema+de+Zune+para+WPF_html_7b230da0.png" width="640" /></a></div>
<br />
<a href="http://sdrv.ms/KDOplw" target="_blank">Source Code</a>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com2tag:blogger.com,1999:blog-4986294743181426431.post-27102370255650351742012-06-08T09:09:00.000-07:002012-06-08T10:31:20.020-07:00Buscar Software Instalado a través del Registro de WindowsAlgunas veces es necesario saber que software esta instalado o ha sido instalado en una maquina, por ejemplo al momento de realizar una auditoria informática. Por lo cual tener una pequeña herramienta que nos facilite el trabajo de recolección y organizado de los datos seria bastante útil.
Entonces solo queda ponerse manos a la obra, para lo cual primero vamos a crear una aplicación WPF en Visual Studio y luego vamos a agregar la clase DelegateCommand y otra clase llamada ViewModel.
Nuestro siguiente paso será crea una función que se ocupe de buscar las llaves en el registro que contengan información de los productos que se encuentra en "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\XXX\Products\" donde XXX varia de maquina en maquina, por lo cual nuestra función se ocupara de entregarnos la llaves bien formadas:
<br />
<pre class="brush: csharp">
public void LoadRegistryEntries()
{
RegistryKey rk = Registry.LocalMachine.OpenSubKey( @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\" );
string[ ] names = rk.GetSubKeyNames( );
foreach ( var item in names )
{
RegistryKey sk = rk.OpenSubKey( item ).OpenSubKey( "Products" );
if ( sk.SubKeyCount > 0 )
_listOfRegistryEntries.Add( sk.Name.Substring(19) );
}
}
</pre>
Ya con las llaves de registro obtenidas, crearemos una clase llamada Product que tendrá la siguiente estructura:
<br />
<pre class="brush: csharp">
public class Product
{
public string Name;
public DateTime InstallationDate;
public string Version;
public string Publisher;
public string InstallationLocation;
}
</pre>
Luego crearemos una funcion que nos devuelva una lista de productos en base a una llave de registro dada:
<br />
<pre class="brush: csharp">
private List<product> GetProductsFromKey(string registryPath)
{
List<product> productsOfKey = new List<product>();
RegistryKey rk = Registry.LocalMachine.OpenSubKey(registryPath);
String[] names = rk.GetSubKeyNames();
foreach (var item in names)
{
String[] t = Registry.LocalMachine.OpenSubKey(registryPath).OpenSubKey(item).GetSubKeyNames();
if (t.Contains("InstallProperties"))
{
Product temporalProduct = new Product();
temporalProduct.Name = Registry.LocalMachine.OpenSubKey(registryPath).OpenSubKey(item).OpenSubKey ("InstallProperties").GetValue("DisplayName").ToString();
string temporalDate = Registry.LocalMachine.OpenSubKey(registryPath).OpenSubKey(item).OpenSubKey("InstallProperties").GetValue("InstallDate").ToString();
int year = int.Parse(temporalDate.Substring(0, 4));
int month = int.Parse(temporalDate.Substring(4, 2));
int day = int.Parse(temporalDate.Substring(6));
temporalProduct.InstallationDate = new DateTime(year, month, day);
temporalProduct.Publisher = Registry.LocalMachine.OpenSubKey(registryPath).OpenSubKey(item).OpenSubKey("InstallProperties").GetValue("Publisher").ToString();
temporalProduct.Version = Registry.LocalMachine.OpenSubKey(registryPath).OpenSubKey(item).OpenSubKey("InstallProperties").GetValue("DisplayVersion").ToString();
temporalProduct.InstallationLocation = Registry.LocalMachine.OpenSubKey(registryPath).OpenSubKey(item).OpenSubKey("InstallProperties").GetValue("InstallLocation").ToString();
productsOfKey.Add(temporalProduct);
}
}
return productsOfKey;
}
</pre>
El siguiente paso sera crear nuestro comando que ejecute la búsqueda en el registro que será como sigue:
<br />
<pre class="brush: csharp">
void SearchRegistry_Execute(object parameters)
{
LoadRegistryEntries( );
foreach ( var entryList in _listOfRegistryEntries )
{
foreach ( var prod in GetProductsFromKey( entryList ) )
{
Products.Add( prod );
}
}
foreach (var item in Products.OrderBy(x => x.Name).Select(x => x.Name))
{
NameProducts.Add(item);
}
}
</pre>
Por ultimo lo que faltaría seria la interfaz, que como es un poco amplia solo pondré una captura:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinCC_FIw6lSqBlxYzRMnDXn2Kze8Xy0dbrVnORplagsNEkSvFeRfl2-ZA4ftNGmBMOEPGPream78S-YXWPBb6hyphenhyphenh8U7UWcGCeBNsbL10XDW9go-0eKk8JGUcL77nbsx0DclA04chyCO7AY/s1600/registryviewer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinCC_FIw6lSqBlxYzRMnDXn2Kze8Xy0dbrVnORplagsNEkSvFeRfl2-ZA4ftNGmBMOEPGPream78S-YXWPBb6hyphenhyphenh8U7UWcGCeBNsbL10XDW9go-0eKk8JGUcL77nbsx0DclA04chyCO7AY/s1600/registryviewer.jpg" /></a></div>
<br />
Suerte!.<br />
<a href="http://sdrv.ms/KDOplw" target="_blank">Source Code</a> con Metro Style. Para mas referencias de Metro Style vean <a href="http://cup-coffe.blogspot.com/2012/06/metro-style-para-wpf.html" target="_blank">este post.</a>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com1tag:blogger.com,1999:blog-4986294743181426431.post-56457142220436192952012-05-29T09:14:00.001-07:002012-05-29T09:14:12.217-07:00Conseguir información de un Objeto y de un método con Expresiones Lambda.<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">En algún momento
en nuestra vida de programador, vamos a necesitar extraer el nombre de la clase
de algún objeto o de un método. Es ahí donde estos 2 métodos nos pueden ayudar.
El primero recibe un objeto y extrae el nombre de la clase:<o:p></o:p></span></span><br />
<pre class="brush: csharp">protected string GetClassName( Expression<Func<object>> classToTest )
{
string className = classToTest.Body.Type.Name;
//Add something interesting!
Return className;
}
</pre>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Y para llamarlo usaremos
la siguiente sintaxis:<o:p></o:p></span></span></div>
<pre class="brush: csharp">public class SomeClass
{
public int SomeMethod( object value )
{
string name=this.GetClassName( ( ) => this );
}
// Other Methods ...
}
</pre>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Nuestro segundo
método, recibe un método, que no tiene parámetros y obtiene su nombre y clase a
la que pertenece:<o:p></o:p></span></span></div>
<pre class="brush: csharp">protected string GetMethodName( Expression<Action> methodToTest )
{
string className = ( methodToTest.Body as MethodCallExpression )
.Method.DeclaringType.Name;
string methodName = ( methodToTest.Body as MethodCallExpression ).Method.Name;
return methodName;
}
</pre>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Para llamar al metodo usaremos la siguiente instruccion:</span></span><br />
<pre class="brush: csharp">
GetMethodName( ( ) => this.AMethod( ) );
</pre>
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Espero que les
sirva</span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"></span><span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Suerte!.<o:p></o:p></span></span></div>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com1tag:blogger.com,1999:blog-4986294743181426431.post-73006249138363815922012-05-04T09:23:00.000-07:002012-05-04T11:54:19.537-07:00Dialogo Modal en MVVM<span lang="ES"><span style="font-family: Calibri;">Los Diálogos
Modales están entre los elementos más complejos de usar en el patrón MVVM
principalmente por la necesidad de separación de ocupaciones que se debe de
cumplir. </span></span><br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES"><span style="font-family: Calibri;">Ciertamente se
puede manejar de una manera fácil el manejo de los Diálogos Modales desde la
vista y en el caso que deseemos hacer la llamada desde el ViewModel, podemos
usar eventos, pero ciertamente no es lo recomendable.</span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES"><span style="font-family: Calibri;">Para solucionar
el problema se tiene las siguientes opciones:</span></span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<span lang="ES"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span><span lang="ES"><span style="font-family: Calibri;">Usar
el patrón Mediador</span></span></div>
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<span lang="ES"><span style="font-family: Calibri;">-</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span><span lang="ES"><span style="font-family: Calibri;">Implementar
el dialogo como un servicio</span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES"><span style="font-family: Calibri;">En el presente
post voy a usar la segunda opción pero omitiendo más que todo el uso del
Inversor de Control, ciertamente no es una solución al 100% completa por que se
genera tiene un ratio mayor de acoplabilidad, pero hay que tomar en cuenta que en
la mayoría de los proyectos no es primordial tal característica y la inversión de
tiempo requerida (más que todo en proyectos que poseen mucho código legado o
que han sido desarrollados sin tomar en cuenta MVVM y se desea migrar al patrón)
es por demás alta; en otras palabras la relación costo - beneficio no es la óptima.</span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES"><span style="font-family: Calibri;">El proyecto que
vamos a crear es sencillo, es un formulario con una TextBox y un botón,
pulsando el botón se abrirá un dialogo para guardar en un archivo de texto el
contenido del TextBox:<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWJTLt6eWFp1Zc7WUH-_G-5SaibfR2xGtV_ht_XNaaPjk4z_DEpuiR_Elb5qQTBvD5JyV16Nw1wdWLyoniCleEvyele3J-OScy8d9B0DEUscOZvPIvQkKWqLHoIoUZxMTMnIGyYgEG13XY/s1600/ModalDialogMVVM1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWJTLt6eWFp1Zc7WUH-_G-5SaibfR2xGtV_ht_XNaaPjk4z_DEpuiR_Elb5qQTBvD5JyV16Nw1wdWLyoniCleEvyele3J-OScy8d9B0DEUscOZvPIvQkKWqLHoIoUZxMTMnIGyYgEG13XY/s320/ModalDialogMVVM1.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES"><span style="font-family: Calibri;">De tal manera que
primero vamos a crear el ViewModel, donde definiremos una propiedad que se
enlace con el TextBox que será del tipo String, luego crearemos un comando que
se encargue de escuchar el evento de clic sobre el botón:</span></span></div>
<pre class="brush: csharp"> private string _text;
public string Text
{
get
{
return _text;
}
set
{
_text = value;
NotifyPropertyChanged( ( ) => this.Text );
}
}
#region SaveText Command
public DelegateCommand SaveTextCommand
{
get;
private set;
}
void SaveText_Execute( object parameters )
{
}
bool SaveText_CanExecute( object parameters )
{
return true;
}
#endregion
</pre>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">No hay que
olvidar que nuestro ViewModel debe implementar la interface “INotifyPropertyChanged”:</span></span></div>
<pre class="brush: csharp">
#region INotifyPropertyChanged Implementation
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged( string propertyName )
{
if ( this.PropertyChanged != null )
this.PropertyChanged( this, new PropertyChangedEventArgs( propertyName ) );
}
public void NotifyPropertyChanged( Expression<Func<object>> property )
{
MemberExpression memberExpression;
if ( property.Body is UnaryExpression )
memberExpression = ( property.Body as UnaryExpression ).Operand as MemberExpression;
else
memberExpression = property.Body as MemberExpression;
if ( memberExpression == null )
Debug.Assert( false, "It must not happen" );
var propertyInfo = memberExpression.Member as PropertyInfo;
if ( propertyInfo == null )
Debug.Assert( false, "It must not happen" );
this.NotifyPropertyChanged( propertyInfo.Name );
}
#endregion
</pre>
<div class="separator" style="clear: both; text-align: left;">
</div>
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Nuestro siguiente
paso será crear la Vista, como se vio en la imagen superior en el XAML,
enlazaremos nuestra Vista con el ViewModel:</span></span><br />
<br />
<pre class="brush: xml"><Button Content="Save in a File" Height="52" HorizontalAlignment="Left" Margin="12,115,0,0" Name="btnSave" VerticalAlignment="Top" Width="306" Command="{Binding SaveTextCommand}" />
<TextBox Height="90" HorizontalAlignment="Left" Margin="68,19,0,0" Name="txtText" VerticalAlignment="Top" Width="250" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" Text="{Binding Text}" />
<Label Content="Text:" Height="28" HorizontalAlignment="Left" Margin="12,19,0,0" Name="lblText" VerticalAlignment="Top" />
</pre>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<br />
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Y por último en
el Code-BeHind completaremos el enlace:</span></span></div>
<pre class="brush: csharp"> private ViewModel viewModel;
public MainWindow( )
{
InitializeComponent( );
viewModel = new ViewModel( );
this.DataContext = viewModel;
}
</pre>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Ya con la aplicación
montada, procederemos a crear el servicio del Dialogo Modal, para lo que
crearemos una Interface denominada “IModalDialogService” que será como sigue:</span></span></div>
<pre class="brush: csharp"> public interface IModalDialogService
{
string Show( string fileExportName, string message, string filter = "All files (*.*)|*.*", bool restoreDirectory = true );
}
</pre>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">El siguiente paso
será crear la implementación de la Interface, creando una clase que lo
implemente, para nuestro caso la llamaremos “ModalDialogService” que será como
sigue:</span></span></div>
<pre class="brush: csharp">public class ModalDialogService : IModalDialogService
{
private static SaveFileDialog saveDialog = new SaveFileDialog( );
private bool WriteFile( string fileName, string message )
{
try
{
System.IO.File.WriteAllText( fileName, message );
return true;
}
catch ( UnauthorizedAccessException e )
{
MessageBox.Show( e.Message, "Unauthorized Access Exception", MessageBoxButton.OK, MessageBoxImage.Error );
return false;
}
catch ( IOException e )
{
MessageBox.Show( e.Message, "I/O Exception", MessageBoxButton.OK, MessageBoxImage.Error );
return false;
}
}
public string Show( string fileExportName, string message, string filter = "All files (*.*)|*.*", bool restoreDirectory = true )
{
string fileName = string.Empty;
saveDialog.FileName = fileExportName;
saveDialog.Filter = filter;
saveDialog.RestoreDirectory = restoreDirectory;
bool? dialogResult = saveDialog.ShowDialog( );
if ( dialogResult == true )
fileName = saveDialog.FileName;
if ( fileName == string.Empty )
return "";
WriteFile( fileName, message );
return fileName;
}
}
</pre>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Ahora analicemos
un poco del código que acabamos de escribir; lo primero a ponerse a pensar es porque
hemos creado una interface cuando podíamos haber creado de plano solo la clase
que maneje el dialogo, y la respuesta es que al crear una interface obtenemos
la flexibilidad necesaria para poder crear más de un tipo de dialogo fácilmente
<span style="mso-spacerun: yes;"> </span>que pueda ser usado a lo largo de toda
la aplicación disminuyendo la acoplacion entre componentes , además <span style="mso-spacerun: yes;"> </span>es una previsión para el momento que deseemos
usar un Inversor de Control.</span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">El siguiente
lugar a analizar es en la clase que implementa la interface, donde se realizan
las acciones de crear el SaveFileDialog, establecer sus opciones básicas y
realizar la acción de escribir el archivo de texto en disco.</span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Con el servicio
de Dialogo listo, procedemos a crear el dialogo en el ViewModel, para lo cual
vamos a agregar las siguientes líneas de código al ViewModel:</span></span></div>
<pre class="brush: csharp"> private readonly IModalDialogService messageBoxService;
/// <summary>
/// Constructor
/// </summary>
public ViewModel( )
{
messageBoxService = new ModalDialogService( );
SaveTextCommand = new DelegateCommand( SaveText_Execute, SaveText_CanExecute );
}
</pre>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Por ultimo
agregamos la llamada al método show en el método SaveText_Execute de la
siguiente manera:</span></span></div>
this.messageBoxService.Show( "TestFileName", this.Text, "Text files (*.txt)|*.txt;|All files (*.*)|*.*" );
<br />
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
<span lang="ES" style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Ahora si lanzamos
la aplicación podremos ver cómo funciona:<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0in 0in 10pt;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipfLZFgA_fJK2yFFdSG4rSbNr4BBYai7yle2oUCDx2WSccC-_5mpkhYovC14Gn7eP-EK9K-GG3h8szUgMJBx0dHqgFcfhdqZueLstmArRPl-zJ_6eDFXFLn0o28gc0yO2QJGkp2fTNcrxO/s640/ModalDialogMVVM2.png" width="640" /></div>
Suerte!<br />
Codigo Fuente: <a href="https://skydrive.live.com/redir.aspx?cid=667f0458e6e70251&resid=667F0458E6E70251!133&parid=root" target="_blank">Aqu</a>iAnonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-1564471875634393532012-04-25T06:53:00.000-07:002012-05-16T15:12:02.880-07:00Compilar desde Codigo Fuente GCC XMLGCC XML es una herramienta utilizada
para realizar una descripción XML de un programa escrito en C++,
desde una representación interna de GCC.
<br />
<div style="margin-bottom: 0in;">
Al dia de hoy soporta las siguientes
versiones de compiladores:<br />
</div>
<div lang="nn-NO" style="margin-bottom: 0in;">
GCC 4.2, 4.1, 4.0, 3.4,
3.3</div>
Microsoft Visual C++ 2010,
2008, 2005, 2003, 2002, 6 (SP5).<br />
<div style="margin-bottom: 0in;">
<br />
El sitio oficial del proyecto es
<a href="http://www.gccxml.org/HTML/Index.html" target="_top">http://www.gccxml.org/HTML/Index.html</a>
, desafortunadamente la última versión del proyecto, empaquetada en
un instalador data del año 2004, por lo cual para poderlo usar
deberemos de hacerlo desde el código fuente, que está 100%
actualizado (a la fecha 04/04/2012).<br />
<br />
<strong>[UPDATE 26/05/2012] El instalador de GCC XML 0.9.0 lo pueden encontrar </strong><a href="https://skydrive.live.com/redir.aspx?cid=667f0458e6e70251&resid=667F0458E6E70251!133&parid=root" target="_blank"><strong>aqui</strong></a><strong>.</strong><br />
</div>
<div style="margin-bottom: 0in;">
Para generar la última versión del
proyecto deberemos bajarnos el código fuente que está ubicado en:</div>
<b>cvs -d
:pserver:anoncvs@www.gccxml.org:/cvsroot/GCC_XML login</b><br />
<br />
<div style="margin-bottom: 0in;">
Para bajar el código en entorno
Windows sugiero usar la herramienta TortoiseCVS que la pueden bajar
de la siguiente dirección: <a href="http://www.tortoisecvs.org/download.shtml" target="_top">http://www.tortoisecvs.org/download.shtml</a></div>
<br />
<div style="margin-bottom: 0in;">
Luego en nuestro escritorio crearemos
una carpeta llamada GCC-XML Source Code y le daremos clic derecho
sobre ella y elegiremos la opción Checkout:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuRCFMHhGAxuEuUNCyKoOkgnzrMAoransa-K0j4VPt61ychG1JJqvvFBkngfremnyH6xciC-N5z0TDFuw8n9QRoLMdUIf0DU_MzWcAe8Nw2DQU6gzFQq_2Bwa8SO3sLyN5GPCAGwhgy96b/s1600/gcc1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuRCFMHhGAxuEuUNCyKoOkgnzrMAoransa-K0j4VPt61ychG1JJqvvFBkngfremnyH6xciC-N5z0TDFuw8n9QRoLMdUIf0DU_MzWcAe8Nw2DQU6gzFQq_2Bwa8SO3sLyN5GPCAGwhgy96b/s1600/gcc1.png" /></a></div>
<div align="left" class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-bottom: 0in;">
Se nos desplegara una pantalla donde
pondremos la siguiente línea de código en el cuadro de texto
CVSROOT:</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-bottom: 0in;">
“:pserver:<a href="mailto:anoncvs@www.gccxml.org" target="_top">anoncvs@www.gccxml.org</a>:/cvsroot/GCC_XML”</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-bottom: 0in;">
Y revisaremos que las opciones sean
como sigue:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgwkTIoI5VLoOs7dZpPkaR8vcwsHj7RXyFjAU1jm-B56k-ukuYHYh4wHpF7Kakgwad8MIeBoqMdiLH64Ze7hUfIOYmRE1HH15QTBfqlv888xM1RYwU5rWJ16VMlCXrEy0meaKIjIqy1fDq/s1600/gcc2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgwkTIoI5VLoOs7dZpPkaR8vcwsHj7RXyFjAU1jm-B56k-ukuYHYh4wHpF7Kakgwad8MIeBoqMdiLH64Ze7hUfIOYmRE1HH15QTBfqlv888xM1RYwU5rWJ16VMlCXrEy0meaKIjIqy1fDq/s1600/gcc2.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-bottom: 0in;">
Ya con todo configurado podemos
proceder a ver el directorio raíz del repositorio haciendo clic en
la opción “Fetch List” y seleccionaremos “GCC_XML_Complete”:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDq-VZr8CT4fmNPz6H-iuqrdPUYZ7jm2k9G4IM1BBwebdG4aeSRQ1zCeyFBogmjlwgjQaIb7cQlO9I2obKJjW4SJmaunSluSQacu8S9cEcXB9EEoyfDxu9fEkYhRChniD222nPMDPNY4jT/s1600/gcc3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDq-VZr8CT4fmNPz6H-iuqrdPUYZ7jm2k9G4IM1BBwebdG4aeSRQ1zCeyFBogmjlwgjQaIb7cQlO9I2obKJjW4SJmaunSluSQacu8S9cEcXB9EEoyfDxu9fEkYhRChniD222nPMDPNY4jT/s1600/gcc3.png" /></a></div>
<br />
<div style="margin-bottom: 0in;">
Lo único que queda ahora es dar “ok”
para que se empieza a descargar el código fuente:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqqpIcPQgAk8DCMLq8FJrF1CZDodxPFRXu9ejOQQrMBmcvDzSnWdXsCvNmlrLtHjRLvotDnxZ5XlEtGdAYt7ZFyEyGLlUt7poADFIRkpaI3zc4115zns1bX6s49R9bXllfXWWkB3OVc971/s1600/gcc4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqqpIcPQgAk8DCMLq8FJrF1CZDodxPFRXu9ejOQQrMBmcvDzSnWdXsCvNmlrLtHjRLvotDnxZ5XlEtGdAYt7ZFyEyGLlUt7poADFIRkpaI3zc4115zns1bX6s49R9bXllfXWWkB3OVc971/s1600/gcc4.png" /></a>\</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-bottom: 0in;">
Descargado el código fuente,
procedemos a compilarlo, para lo cual necesitaremos Cmake, que lo
podremos bajar de aquí:
<a href="http://www.cmake.org/cmake/resources/software.html" target="_top">http://www.cmake.org/cmake/resources/software.html</a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="margin-bottom: 0in;">
Ya con Cmake instalado, lo abrimos y en
los campos “Where is the Source Code” y “Where to Build the
Binaries” apuntamos a la dirección donde tenemos el código y a
una carpeta vacía donde deseemos que se genere el Build:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXInHLIucZT5bshO2Kj9Hrt7fPwUUV2lGNDigTo0N1iBA4DkCCfjxNxmkLqkeoZ9QWrkNrI5maqFD8DvR5-K4fx0pVIrM3y3goEy2eP0pmkPFlLP4vVzfbVhzcOiWtAYFvPnjesoEUVJGS/s1600/gcc5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="404" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXInHLIucZT5bshO2Kj9Hrt7fPwUUV2lGNDigTo0N1iBA4DkCCfjxNxmkLqkeoZ9QWrkNrI5maqFD8DvR5-K4fx0pVIrM3y3goEy2eP0pmkPFlLP4vVzfbVhzcOiWtAYFvPnjesoEUVJGS/s640/gcc5.png" width="640" /></a></div>
<br />
<div style="margin-bottom: 0in;">
Luego le daremos clic al botón
Generate y se nos desplegara un cuadro de dialogo para que podamos
elegir el tipo de proyecto a generar, para el caso en particular del
presente post vamos a seleccionar “Visual Studio 10”; el proceso
va a tomar unos minutos pero la espera vale la pena, porque la
solución que genera para Visual Studio no requiere ninguna
modificación o cambio extraño para que funcione a la perfección.</div>
<br />
El último paso para que compilemos GCC
XML es irnos a la carpeta donde le dijimos a Cmake que genere el
Build. Y ahi abriremos la solución con Visual Studio 2010 y lo único
que debemos hacer es “Ctrl+Shift+B”.<br />
<br />
<div style="margin-bottom: 0in;">
El conjunto de Binarios generados, los
encontramos en la carpeta “..\GCC Vs 2010\bin\Debug\”</div>
<div style="margin-bottom: 0in;">
Y con eso ya tenemos la última versión
de GCC XML.</div>
<div style="margin-bottom: 0in;">
Para probar que este funcionando
crearemos un archivo Example1.cpp con el siguiente contenido:<br />
struct
EmptyClass {};</div>
<div lang="en-US" style="margin-bottom: 0in; margin-left: 0.49in;">
int
a_function(float f, EmptyClass e)</div>
<div style="margin-bottom: 0in; margin-left: 0.49in;">
{</div>
<div style="margin-bottom: 0in; margin-left: 0.49in;">
}</div>
<div style="margin-bottom: 0in; margin-left: 0.49in;">
int main(void)</div>
<div style="margin-bottom: 0in; margin-left: 0.49in;">
{</div>
<div style="margin-bottom: 0in; margin-left: 0.49in;">
return 0;</div>
<div style="margin-bottom: 0in; margin-left: 0.49in;">
}</div>
<div style="margin-bottom: 0in;">
Y ponemos la instrucción: “gccxml.exe
Example1.cpp -fxml=example.xml”; si todo salió bien habrá un
archivo “example.xml” en el directorio del ejecutable.</div>
<div style="margin-bottom: 0in;">
Bueno con eso me despido. Suerte!.</div>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com1tag:blogger.com,1999:blog-4986294743181426431.post-14499439585649597042012-04-12T09:09:00.000-07:002012-04-12T09:09:24.440-07:00Error 1 fatal error C1083: Cannot open precompiled header file: 'Debug\xxx.pch'El error C1083 se presenta cuando uno trata de compilar un proyecto en C++ y ha habido un cambio; bueno cuando uno se dirige a la linea que supuestamente ocasiona el error en el codigo, Visual Studio nos lleva a la linea:<br />
<br />
#include "stdafx.h"<br />
<br />
Esto se debe simplemente a que Visual Studio genera un archivo *.pch que no es mas que un "<a href="http://en.wikipedia.org/wiki/Precompiled_header" target="_blank">Precompiled Header</a>" que tiene la utilidad de reducir el tiempo de compilacion, por lo cual cuando reconstruimos/limpiamos/contruimos y hemos modificado el archivo stdafx.h tendremos el error mencionado, para solucionarlo solo basta con cambiar la opcion Precompiled Header del proyecto en Visual Studio de la opcion "Use (/Yu)" a "Create (/Yc)" como se aprecia en la siguiente imagen:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkin-JSSpWyRfm9eS1Vqs99_OQQbSzXleCw55sde9_Yp_wKb9nHgWHRP-wuGhuWV1sAjzWzaumT7DIVcNw28RshAT0nrrXIsaPo6EhO7XrDLOzpkhPpxhS-I83Ja-ftB4CQsbHQAdZefZv/s1600/errorc1083.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="454" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkin-JSSpWyRfm9eS1Vqs99_OQQbSzXleCw55sde9_Yp_wKb9nHgWHRP-wuGhuWV1sAjzWzaumT7DIVcNw28RshAT0nrrXIsaPo6EhO7XrDLOzpkhPpxhS-I83Ja-ftB4CQsbHQAdZefZv/s640/errorc1083.png" width="640" /></a></div>
<br />
Suerte!Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com2tag:blogger.com,1999:blog-4986294743181426431.post-80133541403207188162012-04-10T09:27:00.000-07:002012-05-02T13:27:10.726-07:00Libro Gratis: Introducing Microsoft SQL Server 2012El libro <em>Introducing Microsoft SQL Server 2012</em>, by Ross Mistry (<a href="http://twitter.com/#!/RossMistry" target="_blank">@RossMistry</a>) and Stacia Misner (<a href="http://twitter.com/#!/StaciaMisner" target="_blank">@StaciaMisner</a>) esta disponible de forma gratuita <a href="http://download.microsoft.com/download/F/F/6/FF62CAE0-CE38-4228-9025-FBF729312698/Microsoft_Press_eBook_Introducing_Microsoft_SQL_Server_2012_PDF.pdf" target="_blank">aqui</a>!.<br />
<br />
La tabla de contenidos es la siguiente:<br />
<br />
PART I DATABASE ADMINISTRATION (by Ross Mistry)<br />
<br />
1. SQL Server 2012 Editions and Engine Enhancements<br />
2. High-Availability and Disaster-Recovery Enhancements<br />
3. Performance and Scalability<br />
4. Security Enhancements<br />
5. Programmability and Beyond-Relational Enhancements<br />
<br />
PART II BUSINESS INTELLIGENCE DEVELOPMENT (by Stacia Misner)<br />
<br />
6. Integration Services<br />
7. Data Quality Services<br />
8. Master Data Services<br />
9. Analysis Services and PowerPivot<br />
10. Reporting Services<br />
<br />
Suerte!Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-8362711954143393682012-03-30T07:49:00.001-07:002012-05-22T11:21:19.997-07:00El Patrón Model - View - ViewModel ( MVVM )El patron Model - View - ViewModel fue
concebido por John Gossman allá por el año 2005 en un post de su
blob titulado "Introduction to Model/View/ViewModel pattern for
building WPF
apps"(<a href="http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx">http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx</a>),
siendo este una adaptación del patrón Presentation Model
(<a href="http://martinfowler.com/eaaDev/PresentationModel.html">http://martinfowler.com/eaaDev/PresentationModel.html</a>) propuesto por
Martin Fowlers para tecnologías .NET como XAML(como se conoce ahora
al conjunto de herramientas para desarrollar en Windows 8), WPF y
Silverlight.
<br />
<br />
<div style="margin-bottom: 0in;">
Este patrón junto a otros mas
conocidos como MVC o MVP tiene por objetivo simplificar las tareas de
desarrollo y mantenimiento del software escrito con estos a través
de la división de ocupaciones, por lo cual alguien que ya haya
trabajado previamente con alguno de los patrones previamente
mencionados, le parecerá bastante familiar MVVM.</div>
<div style="margin-bottom: 0in;">
<br />
<span style="font-size: medium;"><i><b>Model</b></i></span></div>
El modelo, dentro de MVVM es el
encargado de representar el modelo del negocio, proveyendo de esta
manera la base necesaria para la manipulación de los datos de la
aplicación, además parte del modelo se lo puede usar como clases
POCO (Plain Old CLR Objects) para poder usarlas con Entity Framework
Code First o algún otro ORM. Cabe resaltar que en el modelo, no
debería de existir ninguna lógica de negocio o código que afecte a
como se visualizan sus datos en pantalla.<br />
<div style="margin-bottom: 0in;">
<br />
<span style="font-size: medium;"><i><b>View</b></i></span></div>
La vista es la parte encargada de la
parte visual de nuestra aplicación, no teniéndose que ocupar en
ningún momento en el manejo de datos. En MVVM la vista tiene un rol
activo, esto significa que en algún momento la vista recibirá o
manejara algún evento (Clic en un botón, alguna tecla presionada,
etc.) y tendrá que comunicarse con el modelo, para poder cumplir el
requerimiento.
<br />
<br />
<span style="font-size: medium;"><i><b>ViewModel</b></i></span><br />
El ViewModel (modelo de vista en
español) es el encargado de ser la capa intermedia entre el modelo y
la vista, procesando todas las peticiones que tenga la vista hacia el
modelo, además de tener que ocuparse de manejar las reglas del
negocio, la comunicación con aplicaciones externas o consumir datos
desde alguna fuente (Bases de Datos, Web Services, Sensores, etc.).
Para la comunicación entre el View y el ViewModel, utilizamos los
enlaces de datos que nos permiten tener un código bastante limpio
(Bindings <a href="http://msdn.microsoft.com/en-us/library/ms752347.aspx">http://msdn.microsoft.com/en-us/library/ms752347.aspx</a>)<br />
<div style="margin-bottom: 0in;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHxwp9EofD4mIf8Rsn5GelT33OMqis-D81aV4i9RqD4FSsmvrpIVSI4Eyz3mspMAusbaTW75FxUrKyIunnKqXdVG6YJUexqA674dvQzaeKRWi41aW0_kEQrCpKg71o67MFxxWyGdCoBU14/s1600/MVVM1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="545" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHxwp9EofD4mIf8Rsn5GelT33OMqis-D81aV4i9RqD4FSsmvrpIVSI4Eyz3mspMAusbaTW75FxUrKyIunnKqXdVG6YJUexqA674dvQzaeKRWi41aW0_kEQrCpKg71o67MFxxWyGdCoBU14/s640/MVVM1.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="margin-bottom: 0in;">
<span style="font-size: medium;"><i><b>Observaciones</b></i></span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="margin-bottom: 0in;">
Trabajando con este patrón y migrando
cientos de líneas de código Espagueti al patrón, he visto algunas
practicas o concejos que pueden ser de bastante utilidad al menos al
momento de comenzar a usar el patrón.<br />
<br /></div>
<div style="margin-bottom: 0in;">
- El Code-Behind no tiene que existir: He
escuchado bastante de eso por todo ello, y le cuento que es un tanto
falso, para entender mejor como funciona el code-behind dentro del
patrón MVVM, hay que pensarlo como si fuere el patrón MVC, donde la
vista este escrita en HTML y el JavaScript que maneja todo lo
referente a la vista(cambiar un color, redimensionar un control,
etc.); ciertamente el Code-Behind hay que usarlo con cautela, pero a
la vez prescindir por completo de el puede llevarnos demasiado
tiempo, por regla, si algo que nos puede tomar un par de minutos con
Code-Behind, nos toma horas sin el, entonces estamos yendo por mal
camino.<br />
<br /></div>
<div style="margin-bottom: 0in;">
- La vista debe ser 100% desacoplable de
ViewModel: Esto al igual que el punto anterior hay que pensar primero
en la dificultad que realizar esto conlleva, por que ciertamente no
es a función principal del patrón, si es un aditamento, si es que
es posible implementarlo en un lapso de tiempo corto y sin tener que
crear una mayor estructura para que se lleve a cabo.
<br />
<br /></div>
<div style="margin-bottom: 0in;">
- No es necesario usar un Framework para
MVVM: Esto es completamente cierto, ya que usando un par de clases
escritas por nosotros o por terceros podemos tener nuestro proyecto
con MVVM al 100%.<br />
<br /></div>
<div style="margin-bottom: 0in;">
- MVVM es solo para aplicaciones grandes:
Muy falso, MVVM funciona perfectamente bien para proyectos grandes y
pequeños, inclusive por las características de WPF, Silverlight o
XAML el desarrollo de toda aplicación es mas simple usando el
patrón. En todo caso, al igual que el punto 2 el tiempo y la
complejidad nos dirán si estamos aplicando de manera correcta el
patrón, ya que perder horas montando la infraestructura para un
proyecto que no requiere mas de unos minutos, no es lo correcto.</div>
<div style="margin-bottom: 0in;">
<br />
<span style="font-size: medium;"><i><b>Ejemplo</b></i></span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="margin-bottom: 0in;">
Bueno, para poder entender el patrón
que mejor que un ejemplo simple que nos mostrara como hay que iniciar
un proyecto con MVVM, el ejemplo consistirá en una tabla que muestre
una agenda de contactos.</div>
<div style="margin-bottom: 0in;">
Nuestro modelo será como sigue:</div>
<pre class="brush: csharp">
class Contact
{
public string Name { get; set; }
public string Email { get; set; }
public string Address { get; set; }
public string PhoneNumber { get; set; }
public string Twitter { get; set; }
public bool onGPlus { get; set; }
}
</pre>
<div style="margin-bottom: 0in;">
El siguiente paso sera definir el
View-Model, para lo cual primero obtendremos la clase delegate
command que nos facilita el trabajo con la reduccion de codigo
repetitivo. La clase se encuentra en la siguiente direccion:
<span style="font-size: small;"><a href="http://www.wpftutorial.net/DelegateCommand.html">http://www.wpftutorial.net/DelegateCommand.html</a></span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="margin-bottom: 0in;">
Ya teniendo creada la clase Delegate
Command, creamos otra clase llamada ContactViewModel que sera como
sigue:</div>
<pre class="brush: csharp">
class ContactViewModel : INotifyPropertyChanged
{
//Definicion de la Lista de Contactos
private ObservableCollection<Contact> _Contacts;
public ObservableCollection<Contact> Contacts
{
get
{
return _Contacts;
}
set
{
_Contacts = value;
NotifyPropertyChanged("Contacts");
}
}
//Construtor de la clase donde ademas cargamos datos de prueba
public ContactViewModel()
{
_Contacts = new ObservableCollection<Contact>();
_Contacts.Add( new Contact() { Name = "Andiria", Address = "Calle Z", Email = "andiria100@hotmail.com", PhoneNumber = "(591) 764215888", Twitter = "@sisandy", onGPlus=true });
_Contacts.Add(new Contact() { Name = "Fernanda", Address = "Calle X", Email = "fernanda100@hotmail.com", PhoneNumber = "(591) 764215889", Twitter = "", onGPlus = false });
_Contacts.Add(new Contact() { Name = "Nataly", Address = "Calle Z", Email = "naty100@hotmail.com", PhoneNumber = "(591) 764215810", Twitter = "", onGPlus = false });
_Contacts.Add(new Contact() { Name = "Francisca", Address = "Calle W", Email = "fran100@hotmail.com", PhoneNumber = "(591) 764215811", Twitter = "", onGPlus = true });
_Contacts.Add(new Contact() { Name = "Fabiana", Address = "Calle W", Email = "fab100@hotmail.com", PhoneNumber = "(591) 764215811", Twitter = "", onGPlus = true });
AddContactCommand = new DelegateCommand(AddContact_Execute, AddContact_CanExecute);
}
//Implementacion de la Interface INotifyPropertyChange
#region PropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
#endregion
//Definicion del comando encargada de agregar datos a la colección de elementos
#region Add Contact
public DelegateCommand AddContactCommand
{
get;
private set;
}
void AddContact_Execute(object parameters)
{
Contacts.Add(new Contact() { Name = "Test1", Address = "X", Email = "X", PhoneNumber = "X", Twitter = "X" });
}
bool AddContact_CanExecute(object parameters)
{
return true;
}
#endregion
}
</pre>
<div style="margin-bottom: 0in;">
Como vemos en el codigo, se tienen 3
secciones, la primera seccion encargada de definir las propiedades
del View-Model y de cargar datos de prueba; la segunda parte
encargada de realizar la implementacion de la Interface
INotifyPropertyChanged, que es la encargada de notificar a los
clientes (para este caso delo clientes de que hagan Binding a cierta
propiedad) que ha habido un cambio en su valor de cierta propiedad.</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="margin-bottom: 0in;">
El ultimo paso sera crear nuestra
interface, donde pondremos un DataGrid, un listbox, un boton para
agregar datos y por ultimo 2 Textbox para editar los datos, el codigo
XAML seria como sigue:</div>
<pre class="brush: xml">
<Window x:Class="TestMVVM.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="420" Width="525">
<Grid>
<DataGrid AutoGenerateColumns="True" Height="153" HorizontalAlignment="Left" Margin="12,12,0,0" Name="dataGridContacts" VerticalAlignment="Top" Width="479" ItemsSource="{Binding Contacts}" />
<Button Content="Add Contact" Height="23" HorizontalAlignment="Left" Margin="231,206,0,0" Name="btnChangeName" VerticalAlignment="Top" Width="112" Command="{Binding AddContactCommand}" CommandParameter="{Binding ElementName=dataGridContacts, Path=SelectedItem}" />
<Label Content="Name: " Height="28" HorizontalAlignment="Left" Margin="34,204,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Height="23" HorizontalAlignment="Right" Margin="0,206,287,0" Name="txtName" VerticalAlignment="Top" Width="120" Text="{Binding ElementName=dataGridContacts, Path=SelectedItem.Name}" />
<Label Content="Address: " Height="28" HorizontalAlignment="Left" Margin="34,243,0,0" Name="lblAddress" VerticalAlignment="Top" />
<TextBox Height="23" HorizontalAlignment="Right" Margin="0,248,286,0" Name="txtAddress" VerticalAlignment="Top" Width="120" Text="{Binding ElementName=dataGridContacts, Path=SelectedItem.Address}" />
<ListBox Height="126" HorizontalAlignment="Left" Margin="231,243,0,0" Name="TestListBox" VerticalAlignment="Top" Width="121" ItemsSource="{Binding Contacts}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Name="CheckBoxZone" Content="{Binding Name}" IsChecked="{Binding onGPlus}" Tag="{Binding MyGirlFriend}" Margin="0,5,0,0"/>
DataTemplate>
ListBox.ItemTemplate>
ListBox>
Grid>
Window>
</pre>
<div style="margin-bottom: 0in;">
<span style="color: black;">Notese que en la mayoria de propiedades
de cargado de datos (DataSource) de los controles hemos usado
Bindings a la colección de contactos que habiamos definido en
nuestro View Model, de igual manera la propiedad command de nuestro
boton apunta al Command que se definio en el View Model.</span><br />
<span style="color: black;">
</span></div>
<div style="margin-bottom: 0in;">
<span style="color: black;">El ultimo paso para que nuestra
aplicación funcione, consiste en enlazar el View-Model con la Vista,
para hacer eso nos iremos al Code-Behind de la vista y lo
modificaremos para que se vea de la siguiente manera:</span></div>
<pre class="brush: csharp">
public partial class MainWindow : Window
{
ContactViewModel contactViewModel;
public MainWindow()
{
InitializeComponent();
contactViewModel = new ContactViewModel();
this.DataContext = contactViewModel;
}
}
</pre>
<div style="margin-bottom: 0in;">
<span style="color: black;">Como se puede apreciar simplemente
estamos creando el View-Model y luego lo asignamos a la propiedad
DataContext de la Clase.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: black;">
</span></div>
<div style="margin-bottom: 0in;">
<span style="color: black;">Si ejecutamos la aplicación deberia de
verse asi:</span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjRBMuS-A3R1c8fkdJ2ovSx9FCabyI_J8uueHHknN92GmXp5ibu0S3cbjq_2bL-TXnAxuadQtL6NiHe5MPTS8p1VuwjD6FfdvPuwlSn1Ql12et54_Jhcjg6bcozjoGhsHc9LVWzD6cXtg7/s1600/MVVM2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjRBMuS-A3R1c8fkdJ2ovSx9FCabyI_J8uueHHknN92GmXp5ibu0S3cbjq_2bL-TXnAxuadQtL6NiHe5MPTS8p1VuwjD6FfdvPuwlSn1Ql12et54_Jhcjg6bcozjoGhsHc9LVWzD6cXtg7/s320/MVVM2.png" width="320" /></a></div>
Suerte!.Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com9tag:blogger.com,1999:blog-4986294743181426431.post-37345114599915009642012-03-27T14:19:00.000-07:002012-03-27T14:20:30.028-07:00Enviar Parámetros Personalizados a un EventoEn algún momento vamos a
necesitar enviar parámetros a un evento, presupongamos que tenemos
el siguiente escenario, tenemos una vista en WPF (XAML, con Code –
Behind) y tenemos una clase llamada Persona.
<br />
<div lang="es-ES" style="margin-bottom: 0in;">
Supongamos que cuando
sucede un evento determinado, como por ejemplo el cambio de alguna de
sus propiedades, debe de avisarle a la vista que despliegue un
MessageBox en pantalla con un mensaje.</div>
<div style="margin-bottom: 0in;">
<span lang="es-ES">Para poder conseguir
esto haremos lo siguiente; crearemos una nueva clase llamada </span><span lang="es-ES">"EventArgsWithMessage”
que heredara de EventArgs:</span><br />
</div>
<pre class="western" lang="es-ES"><span style="color: black;"><span style="font-family: Consolas;"><span style="color: blue;">public class </span><span style="color: #2b91af;">EventArgsWithMessage</span>:<span style="color: #2b91af;">EventArgs</span></span></span>
<span style="color: black;"><span style="font-family: Consolas;">{</span></span>
<span style="color: black;"><span style="font-family: Consolas;"><span style="color: blue;">public string </span>Message{<span style="color: blue;">get</span>;<span style="color: blue;">set</span>;}</span></span>
<span style="color: black;"><span style="font-family: Consolas;"><span style="color: blue;">public </span>EventArgsWithMessage(<span style="color: blue;">string</span>_message)</span></span>
<span style="color: black;"><span style="font-family: Consolas;">{</span></span>
<span style="color: black;"><span style="font-family: Consolas;"><span style="color: blue;"> this</span>.Message=_message;</span></span>
<span style="color: black;"><span style="font-family: Consolas;">}</span></span>
<span style="color: black;"><span style="font-family: Consolas;">}</span></span></pre>
<div lang="es-ES" style="margin-bottom: 0in;">
El siguiente paso sera crear un “EventHandler” en nuestra clase
Persona, de la siguiente manera:</div>
<pre class="western" lang="es-ES"><span style="color: black;"><span style="font-family: Consolas;"><span style="color: blue;"> public event </span><span style="color: #2b91af;">EventHandler </span>ShowErrorMessage;</span></span>
</pre>
<div lang="es-ES" style="margin-bottom: 0in;">
Como siguiente paso dentro de la misma clase usaremos el siguiente
código para realizar la llamada al evento, ese código debe de estar
en algún método:</div>
<br />
<pre class="western" lang="es-ES"><span style="color: black;"><span style="font-family: Consolas;"><span style="color: blue;">if</span>(<span style="color: blue;">this</span>.CancelChanges==<span style="color: blue;">null</span>)</span></span>
<span style="color: black;"><span style="font-family: Consolas;"><span style="color: blue;"> return</span>;</span></span>
<span style="color: black;"> </span>
<span style="color: blue;"><span style="font-family: Consolas;">this</span></span><span style="color: black;"><span style="font-family: Consolas;">.CancelChanges(</span></span><span style="color: blue;"><span style="font-family: Consolas;">this</span></span><span style="color: black;"><span style="font-family: Consolas;">,</span></span><span style="color: blue;"><span style="font-family: Consolas;">new</span></span><span style="color: #2b91af;"><span style="font-family: Consolas;">EventArgsWithMessage</span></span><span style="color: black;"><span style="font-family: Consolas;">(</span></span><span style="color: #a31515;"><span style="font-family: Consolas;">"A Message"</span></span><span style="color: black;"><span style="font-family: Consolas;">));</span></span></pre>
<div lang="es-ES" style="margin-bottom: 0in;">
Ya definido el evento, deberemos de implementar el evento en nuestra
vista, que lo haremos como sigue (Se usa tipos genéricos para
realizar la instancia del evento):</div>
<br />
<pre class="western" lang="es-ES"><span style="color: black;"><span style="font-family: Consolas;"><span style="color: blue;">Private </span><span style="color: #2b91af;">Persona </span>persona= <span style="color: blue;">new </span><span style="color: #2b91af;">Persona</span>();</span></span>
<span style="color: black;"><span style="font-family: Consolas;">persona.ShowErrorMessage+=<span style="color: blue;">new </span><span style="color: #2b91af;">EventHandler</span><<span style="color: #2b91af;"><span lang="es-ES">EventArgsWithMessage</span></span>>(ShowError);</span></span></pre>
<div lang="es-ES" style="margin-bottom: 0in;">
Y por ultimo implementaremos el método llamada “ShowError”, de
la siguiente manera:</div>
<br />
<pre class="western" lang="es-ES"><span style="color: black;"><span style="font-family: Consolas;"><span lang="es-ES"><span style="color: blue;">void </span>ShowError(<span style="color: blue;">object </span>sender,<span style="color: #2b91af;">EventArgsWithMessage </span>e)</span></span></span>
<span style="color: black;"><span style="font-family: Consolas;">{</span></span>
<span style="color: black;"><span style="font-family: Consolas;"><span style="color: #2b91af;"> MessageBox</span>.Show(<span style="color: #a31515;">"Message:" </span>+ e.Message);</span></span>
<span style="color: black;"><span style="font-family: Consolas;">}</span></span></pre>
<div lang="es-ES" style="margin-bottom: 0in;">
Con eso ya estaría todo lo necesario para poder crear un evento con
parámetros personalizados</div>
<br />
<div lang="es-ES" style="margin-bottom: 0in;">
Suerte!.</div>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-69933694744479710242012-03-20T21:08:00.002-07:002012-03-20T21:12:01.087-07:00Phalanger: PHP para .NET<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Phalanger
es un compilador escrito en C#, para poder compilar PHP en MSIL. Phalanger
tiene soporte para la versión 5.x de PHP, por lo cual podremos hacer uso de las
funcionalidades de la Programación Orientada a Objetos.</span></span><br />
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Entre las características
más remarcables a mencionar de Phalanger y que serían los motivos para usarlo
en contra de PHP nativo, sería que se tiene acceso a todas las clases de .NET
escritas para C#, en otras palabras interoperabilidad simplificada con lenguajes
.NET y el uso de un compilador Just in-Time en vez de un intérprete, lo cual
significa un aumento de velocidad considerable.
(http://www.php-compiler.net/benchmarks) </span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">El proyecto
es OpenSource, por lo que pueden bajar los binarios o el código fuente de
Codeplex (http://phalanger.codeplex.com/); el instalador es bastante intuitivo
y se encarga de casi el 100% de las configuraciones necesarias para que podamos
crear soluciones con este producto.</span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">El soporte
de Phalanger para Visual Studio es bueno, no como para otros lenguajes, pero lo
suficiente como para que podamos desarrollar de una manera cómoda. Para
mostrarles cómo funciona voy a crear una aplicación simple de prueba en modo
consola.</span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Nuestro
primer paso consiste en crear un proyecto del tipo Phalanger Console
Application, al que lo nombraremos Test2:</span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlI9tj__dpyL-PPeXqzFp3dn5IlI5NFq5WweFM1lqrTiuhT162_AshE_9j5uSkk7vJN-fEuZiRSXNlzcFpJIekEwpL_Os9QiJqruSI3g3btSf6kKuymo2H7TCX7L7P7em_bZtz78-R-YT4/s1600/Phalanger1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlI9tj__dpyL-PPeXqzFp3dn5IlI5NFq5WweFM1lqrTiuhT162_AshE_9j5uSkk7vJN-fEuZiRSXNlzcFpJIekEwpL_Os9QiJqruSI3g3btSf6kKuymo2H7TCX7L7P7em_bZtz78-R-YT4/s400/Phalanger1.png" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<br /></div>
<span style="font-family: Calibri;"></span><br />
<span style="font-family: Calibri;"><div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Nuestro
siguiente paso será crear 2 funciones, una llamada WriteInstanceFunction y otra
llamada WriteStaticFunction, como sus nombres indican una función será del tipo
estática y la otra del tipo de Instancia:</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span></span><span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">function</span><span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"> WriteIntanceFunction()</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span>{</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: blue;">echo</span>
<span style="color: maroon;">"Hello From an Instance Function\n"</span>;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="font-family: Times New Roman;">
</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span><span style="color: blue;">static</span>
<span style="color: blue;">function</span> WriteStaticFunction()</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span>{</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: blue;">echo</span>
<span style="color: maroon;">"Hello From a Static Function\n"</span>;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span></span><span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">}</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="mso-spacerun: yes;"> </span>El siguiente paso sera llamar a esas funciones
dentro de nuestro metodo Main:</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span></span><span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">static</span><span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"> <span style="color: blue;">function</span> Main()</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span>{</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: blue;">echo</span>
<span style="color: maroon;">"Welcome to Phalanger!\n"</span>;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: green;">//Creating
an Object of type Program</span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span>$p=<span style="color: blue;">new</span>
Program();</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: green;">//Calling
the method WriteInstanceFunction</span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span>$p->WriteIntanceFunction();</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: green;">//Calling
an Static Function form Class Program</span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span>Program::WriteStaticFunction();</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span>fgets(STDIN);</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: blue;">return</span>
0;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span></span><span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">}</span><span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="font-family: Times New Roman;">
</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Si hacemos
correr el Código podremos ver los mensajes en una ventana de consola, como se
muestra a continuación:<o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXs6zIs2FCFPvzXOVABmthBwH1k_hEgYTfQoUEo2P5hVP3rfqZph8-Dj3QukrZOi7Tubh-MH0-AOBbdESTvRRbQkqKvqG-i_nLeDGAll1K25xDefC7S1UZUB1zvKgxPG_D90ty8_zn0_CS/s1600/Phalanger2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXs6zIs2FCFPvzXOVABmthBwH1k_hEgYTfQoUEo2P5hVP3rfqZph8-Dj3QukrZOi7Tubh-MH0-AOBbdESTvRRbQkqKvqG-i_nLeDGAll1K25xDefC7S1UZUB1zvKgxPG_D90ty8_zn0_CS/s400/Phalanger2.png" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Si analizamos el código de arriba, veremos
primero que a diferencia de otros lenguajes .NET, para obtener la instancia de
un objeto no debemos de declarar una variable de la forma "Type
VaribleName;", luego como segundo punto tenemos que para acceder a los métodos
de un objeto, usaremos el operador "->" en vez del<span style="mso-spacerun: yes;"> </span>"."; después podemos ver que para
acceder a métodos estáticos de una clase usamos el operador "::", y
por ultimo tenemos que para realizar una lectura de datos desde consola estamos
usando el método "fgets(STDIN);".</span></div>
<div class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Con lo anterior ya sabemos crear una aplicación
simple de consola en un solo archivo, pero que pasa cuando deseamos crear una aplicación
más<span style="mso-spacerun: yes;"> </span>grande que requiere ser escrita en múltiples
archivos?, para cubrir ese caso vamos a crear una clase llamada
"Person", que va a estar en un archivo aparte. Nuestro primer paso será
agregar un nuevo archivo:<o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwEw2mSzrsmYAGEJsTk5R59AXKlpfrT6MjETa4ySVSRzf2W23brAnYBKO7NHbU1KVB450okeexvpTVCNo9YdHuYN3dPsXMTiWWuCjmYg2N7VpfCIbY0zXVv0psyKAwkuICIRF0uPL_0wi-/s1600/Phalanger3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwEw2mSzrsmYAGEJsTk5R59AXKlpfrT6MjETa4ySVSRzf2W23brAnYBKO7NHbU1KVB450okeexvpTVCNo9YdHuYN3dPsXMTiWWuCjmYg2N7VpfCIbY0zXVv0psyKAwkuICIRF0uPL_0wi-/s400/Phalanger3.png" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="font-family: Times New Roman;">
</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Este
archivo solo viene con un constructor, por lo cual vamos a agregar un Atributo
llamado "Name" junto con sus respectivos métodos de acceso:<o:p></o:p></span></div>
<span style="font-family: Times New Roman;">
</span><br />
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 1;"> </span></span><span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">namespace</span><span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"> Test2 {</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span><span style="color: blue;">class</span>
Person {</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: blue;">var</span>
$name;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: blue;">public</span>
<span style="color: blue;">function</span> <span style="color: blue;">__construct</span>()
{</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 3;"> </span>$this->name=<span style="color: maroon;">"A Name"</span>;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span>}<o:p></o:p></span></div>
<span style="font-family: Times New Roman;">
</span><br />
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: blue;">function</span>
SetName($_name)</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span>{</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 4;"> </span>$this->name=$_name;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span>}</span></div>
<span style="font-family: Times New Roman;">
</span><br />
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span><span style="color: blue;">function</span>
GetName()</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span>{</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 4;"> </span><span style="color: blue;">return</span> $this->name;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span></span><span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">}</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span>}<span style="mso-spacerun: yes;"> </span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 1;"> </span>}<o:p></o:p></span></div>
<span style="font-family: Times New Roman;">
</span><br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Como vemos
en el código la clase es bastante sencilla donde los únicos 2 puntos a destacar
serian, que primero nuestra clase esta englobada en un espacio de nombres
(namespace Test2) y segundo que para que los objetos instanciados de esta clase
funcionen correctamente (que las operaciones get y set se lleven a cabo de la
forma esperada) debernos manipular el artibuto name, junto a la palabra clave
this, de la siguiente forma "$this->NombreAtributo".</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Como
siguiente paso en nuestra clase Program, agregaremos las siguientes líneas
debajo la llamada a la función estática WriteStaticFunction:<o:p></o:p></span></div>
<span style="font-family: Times New Roman;">
</span><br />
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-spacerun: yes;"> </span><span style="mso-tab-count: 1;"> </span></span><span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">$persona=<span style="color: blue;">new</span> Test2<span style="color: maroon;">\</span>Person();</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-spacerun: yes;"> </span><span style="mso-tab-count: 1;"> </span>$temp=<span style="color: maroon;">"Mr. Coffee"</span>;</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">
</span></span><span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">$persona->SetName($temp);</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 2;"> </span><span style="color: blue;">echo</span> <span style="color: maroon;">"Hello "</span>
. $persona->GetName();<o:p></o:p></span></div>
<span style="font-family: Times New Roman;">
</span><br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">Y después
agregaremos la sentencia "use Test2;" como primera sentencia después
de la línea <span style="background-color: yellow;"><? php</span></span><span style="background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-repeat: repeat; background-size: auto; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="background-color: white; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">. Si hacemos correr la aplicación, veremos lo siguiente:</span></span></div>
</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrn6fDwsT0Gk1_dwfjvCwj4bDqFraoV0CwFnr-uPZt3IjHFQM_KBh1cOSRRTDiRFBhdSLstTgcH45Nivzr7xyGfdTRSEB6EZ6eIlrXgx_4UE55dFIrqC-9Qdct9FrPRuxEr6VaLrWLKI2U/s1600/Phalanger4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrn6fDwsT0Gk1_dwfjvCwj4bDqFraoV0CwFnr-uPZt3IjHFQM_KBh1cOSRRTDiRFBhdSLstTgcH45Nivzr7xyGfdTRSEB6EZ6eIlrXgx_4UE55dFIrqC-9Qdct9FrPRuxEr6VaLrWLKI2U/s400/Phalanger4.png" width="400" /></a></div>
<span style="font-family: Times New Roman;">
</span><br />
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Analizando
los cambios hechos, tenemos 2 cosas nuevas, la primera es que para importar un
espacio de nombres hemos usado la palabra reservada "use" seguida del
nombre de espacio que deseamos importar y como segundo punto tenemos que a
persar de haber importado el espacio de nombres y de que la clase pertenece a
la misma aplicacion debemos usar la siguiente sintaxis para poder usar una
clase ubicada en otro archivo que pertenesca a cierto espacio de nombres:
"NameSpace\Class". </span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Como una observación
extra les indico que si quitamos el espacio de nombres del archivo que contiene
la clase Person, se puede crear el objeto sin usar la sintaxis anteriormente
explicada.</span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Para
finalizar el presente post vamos a ver cómo usar un par de funcionalidades de
.NET, que son los métodos WriteLine y ReadLine de la Clase Console, para lo
cual vamos a incluir el espacio de nombres "System" y despues vamos a
agregar el siguiente código a nuestro Main:</span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span></span><span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">System<span style="color: maroon;">\</span>Console::Write(<span style="color: maroon;">"Insert
Your Name: "</span>);</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;">
<span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;"><span style="mso-tab-count: 3;"> </span></span><span style="font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Consolas;">$temp=System<span style="color: maroon;">\</span>Console::ReadLine();</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<br /></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;"><span style="font-family: Calibri;">Si lo
ejecutamos tendremos lo siguiente:</span></span> </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9ff1wVxao4_7arfNkQhdpEt6-JdJCoYsen96BqDBKXcnYXLfKIMt3SqTyifWDaOzFcdhQcxjf7u0o7mj0QlOLSOuEj6j3JJSGcYz8fn6yjlg-mOJT7C7mK7PUJZijHuWYESARFOZiIuTq/s1600/Phalanger5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9ff1wVxao4_7arfNkQhdpEt6-JdJCoYsen96BqDBKXcnYXLfKIMt3SqTyifWDaOzFcdhQcxjf7u0o7mj0QlOLSOuEj6j3JJSGcYz8fn6yjlg-mOJT7C7mK7PUJZijHuWYESARFOZiIuTq/s400/Phalanger5.png" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<br /></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="font-family: "Calibri","sans-serif"; font-size: 11pt; line-height: 115%; mso-ansi-language: ES; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: ES;">Espero que les sea de ayuda
este post. Suerte!</span><o:p></o:p></div>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com1tag:blogger.com,1999:blog-4986294743181426431.post-46754819018081813532012-03-09T10:02:00.004-08:002012-04-10T09:27:34.582-07:00Libro Gratis para Windows Phone y KinectLes dejo estos dos buenos libros (es un decir por que son mas que eso), el primero para aprender a programar para windows phone y el segundo para aprender a programar con kinect. (El autor es el conocido Rob Miles).<br />
<br />
Windows Phone:<br />
<a href="http://www.robmiles.com/journal/2011/10/27/windows-phone-blue-book-available.html">http://www.robmiles.com/journal/2011/10/27/windows-phone-blue-book-available.html</a><br />
Kinect<br />
<a href="https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8938&c1=en-us&c2=0&Login">https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8938&c1=en-us&c2=0&Login</a>=Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com4tag:blogger.com,1999:blog-4986294743181426431.post-68800789541557467442012-03-05T19:43:00.001-08:002012-04-02T06:19:34.719-07:00Primer Vistazo a Visual Studio 11 Beta<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Visual Studio 11 Beta fue
lanzado el miércoles 28 de Febrero del 2012, al mismo tiempo que Windows 8
Consumer Preview y después de usarlos durante unos días me gustaría contarles
que tal esta!.<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Primero y antes que nada
la versión de Visual Studio que estoy probando es la Ultimate, instalado en
Windows 8 y que a decir verdad Visual Studio ha sufrido un cambio de imagen muy
bueno, agregando muchos elementos al estilo metro, incluido el instalador:<o:p></o:p></span></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCBGuNAuNZr5rgsAxCDVYq0pf6rAlTUtcsctervl3rgueFuY1q4T7L1qNru3MkeiPWwZS4jlgpQnOSuE8thk6Df4epJDqe0Uk0t-6iUek-2Q4uMu3IpHdg3mpsJNeDF45SHX46iiGAzp9e/s1600/image002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCBGuNAuNZr5rgsAxCDVYq0pf6rAlTUtcsctervl3rgueFuY1q4T7L1qNru3MkeiPWwZS4jlgpQnOSuE8thk6Df4epJDqe0Uk0t-6iUek-2Q4uMu3IpHdg3mpsJNeDF45SHX46iiGAzp9e/s400/image002.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDSfQYTRlQPBfPuFiIK3R1KskOW7GsrTTLQExKWi0ZYCr3ta4QLnZeUEQdK1gSbZVSMgr4NIPAJx3XNLvR-vBBWjILLmCHIHcCHj0w9eiEYjjOLgjrHTHMyFmVsXlEBa-9VMrXYElz3r1p/s1600/image004.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDSfQYTRlQPBfPuFiIK3R1KskOW7GsrTTLQExKWi0ZYCr3ta4QLnZeUEQdK1gSbZVSMgr4NIPAJx3XNLvR-vBBWjILLmCHIHcCHj0w9eiEYjjOLgjrHTHMyFmVsXlEBa-9VMrXYElz3r1p/s400/image004.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7-YbTVB6Sbgx2OtmSBv5vP90ZLMHjkD6ji4xF2JjVuevv20wPILI6wkf_WFfFZhyphenhyphenNuCPN9i1dbdYSKXhXQbYmVFv-wg8Teqo28cZyFE4b2vWZDb5-Etj1D8oLyPPnB-GNz19MXPMAS2DY/s1600/image006.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7-YbTVB6Sbgx2OtmSBv5vP90ZLMHjkD6ji4xF2JjVuevv20wPILI6wkf_WFfFZhyphenhyphenNuCPN9i1dbdYSKXhXQbYmVFv-wg8Teqo28cZyFE4b2vWZDb5-Etj1D8oLyPPnB-GNz19MXPMAS2DY/s400/image006.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCVTOZBLhFH4IFaVGMYDu7tzrd_fPdIVUEeZmZq4_mOjphlKSuQ8AevHG3ipPJV0boDk-YzSpgcGJe1aqcmOQojRJt1-q2eQ73rMPN1Kx1WGXFJHxAQgoMYD8UhvEs8MUAfWPCrxmpARF_/s1600/image008.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCVTOZBLhFH4IFaVGMYDu7tzrd_fPdIVUEeZmZq4_mOjphlKSuQ8AevHG3ipPJV0boDk-YzSpgcGJe1aqcmOQojRJt1-q2eQ73rMPN1Kx1WGXFJHxAQgoMYD8UhvEs8MUAfWPCrxmpARF_/s400/image008.jpg" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"><v:shapetype coordsize="21600,21600" filled="f" id="_x0000_t75" o:preferrelative="t" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" stroked="f"><span style="font-family: Calibri;">
<v:stroke joinstyle="miter">
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0">
<v:f eqn="sum @0 1 0">
<v:f eqn="sum 0 0 @1">
<v:f eqn="prod @2 1 2">
<v:f eqn="prod @3 21600 pixelWidth">
<v:f eqn="prod @3 21600 pixelHeight">
<v:f eqn="sum @0 0 1">
<v:f eqn="prod @6 1 2">
<v:f eqn="prod @7 21600 pixelWidth">
<v:f eqn="sum @8 21600 0">
<v:f eqn="prod @7 21600 pixelHeight">
<v:f eqn="sum @10 21600 0">
</v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:formulas>
<v:path gradientshapeok="t" o:connecttype="rect" o:extrusionok="f">
<o:lock aspectratio="t" v:ext="edit">
</o:lock></v:path></v:stroke></span></v:shapetype></span><span style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">La instalación es
bastante rápida y no necesita reiniciar el equipo en ningún momento algo
sorprendente tomando en cuenta que en otras versiones era necesario reiniciar
la maquina inclusive más de una vez.<o:p></o:p></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRQ0MSQ-KNoksWSwLamc6z_oC3sWBW10x5ATHMIFyJT0gjLJVRnl-PBwZSgnYEvP40VTTcNhu_epUeH4JtJMkTbw7NggacVZ-_-4N2vSbW10sT_9aUk01qCqFXdStpZpkCBV58xaWH-P1A/s1600/image010.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRQ0MSQ-KNoksWSwLamc6z_oC3sWBW10x5ATHMIFyJT0gjLJVRnl-PBwZSgnYEvP40VTTcNhu_epUeH4JtJMkTbw7NggacVZ-_-4N2vSbW10sT_9aUk01qCqFXdStpZpkCBV58xaWH-P1A/s400/image010.jpg" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"></span><span style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Ya dentro de Visual
Studio se percibe en todo el cambio de imagen, todos los botones tiene un toque
minimalista, las ventanas para la edición de código se sienten más limpias,
inclusive el diseñador de interfaces se siente más fluido:<o:p></o:p></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ1Lfy0YLMxzmqX3FGN6HOYWj35ZEHptPD2jEc-RV0UUz0Ytu5yLwOOK5-hqryugvglnNMghlycuyPxRdUs50dVegjL8O4LFjwV_3_A4sgdzDKt9W-se3TYivoJomOrGScbOAhuyutrv47/s1600/image012.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ1Lfy0YLMxzmqX3FGN6HOYWj35ZEHptPD2jEc-RV0UUz0Ytu5yLwOOK5-hqryugvglnNMghlycuyPxRdUs50dVegjL8O4LFjwV_3_A4sgdzDKt9W-se3TYivoJomOrGScbOAhuyutrv47/s400/image012.jpg" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"></span><span style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Se ha agregado además un
pre visualizador de imágenes, que se activa al acercarnos a las imágenes con
nuestro puntero, esto es de gran ayuda para cuando se trabaja con muchas imágenes:<o:p></o:p></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM5RhTkGQ-gDAuRyWWzLFn_y76gDEajcTb3vcBTS2NOmmfvz5ZMdwGUmZkfuBhYI6j92RUy-R7Rqmdf8wLqOUCDxv2bKIqFpsT3UKb0AQtudbvYHAiT_bqtPTSVi8TfK-63t-R6z5NbWwj/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="242" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM5RhTkGQ-gDAuRyWWzLFn_y76gDEajcTb3vcBTS2NOmmfvz5ZMdwGUmZkfuBhYI6j92RUy-R7Rqmdf8wLqOUCDxv2bKIqFpsT3UKb0AQtudbvYHAiT_bqtPTSVi8TfK-63t-R6z5NbWwj/s320/image013.png" width="320" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"></span><span style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">En la parte donde mayores
cambios se sienten es en el área de la programación web, con un mejor soporte
para HTML5 y CSS3, sin olvidarse también de una mejora increíble en cuanto al
soporte Intellisense para JavaScript, se podría decir que ahora si da gusto
programar en JavaScript:<o:p></o:p></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiiVwDL664-PWeY1pAnIWnplY_LNNlg1Wgz09paK3F4oSlSXIVr7yeGX9_ODID-WHRrSfgXo3tRWWrrR3lP5aiJWVcyeEhoRV46qgWJ7hKpXrMj1EOcPj_x8QidFgzQan_Ic7HgF4LUw70/s1600/image014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiiVwDL664-PWeY1pAnIWnplY_LNNlg1Wgz09paK3F4oSlSXIVr7yeGX9_ODID-WHRrSfgXo3tRWWrrR3lP5aiJWVcyeEhoRV46qgWJ7hKpXrMj1EOcPj_x8QidFgzQan_Ic7HgF4LUw70/s320/image014.png" width="320" /></a></div>
<br />
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">También dentro de la
parte Web tenemos el uso de IIS Express Edition como herramienta por defecto
para el desarrollo de aplicaciones Web con un incremento sustancial en la
velocidad de respuesta:<o:p></o:p></span></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizAL6FuIFgJWOFmSUyRgRIfgvxXHMu50-KAMc9TwpSJBItB09SaLxSZVJ5fBykv2eouBI6M2Nhs1YtqvsaXf4-edZXTG6YwQuAZzhxQhfQNUM1oPwsD8UIObouMbKsm9KLtJzzNf19RdMj/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizAL6FuIFgJWOFmSUyRgRIfgvxXHMu50-KAMc9TwpSJBItB09SaLxSZVJ5fBykv2eouBI6M2Nhs1YtqvsaXf4-edZXTG6YwQuAZzhxQhfQNUM1oPwsD8UIObouMbKsm9KLtJzzNf19RdMj/s1600/image015.png" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"></span><span style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Con todo, se puede decir
que VS 11 va por buen camino y promete ser nuestra próxima navaja suiza!<o:p></o:p></span></span>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-52252865126594274792012-03-05T19:34:00.000-08:002012-03-05T19:34:38.791-08:00Primera Impresión Windows 8 Consumer Preview!<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Durante el Mobile World
Congress de Barcelona de este año (2012) se lanzó la Beta de Windows 8
denominada Consumer Preview. Después de haberlo estado probando las últimas 48
horas, se pueden percibir bastantes cambios con respecto a la anterior versión
(Developer Preview) que fue lanzada a finales del 2011. <o:p></o:p></span></span><br />
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Entrando en materia, se
puede mencionar que esta versión tiene una estabilidad envidiable para una
versión Beta, la compatibilidad de Drivers es muy buena (Tarjeta de Video ATI
Radeon HD 5670 y Tarjeta de Sonido VIA integrada), los efectos gráficos
funcionan de maravilla y la compatibilidad en cuanto a software es bastante
alta, aunque cabe indicar que se nota un choque frente a las aplicaciones
hechas para esta versión de Windows en el aspecto visual, aunque nada
preocupante o molesto. <o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ_Pp3Lw1z4Lj99LtdWXfVIHrhTtasTF5Uz1h2Jcn-_DAEnzqpyZ8bKnMAviyA11IEgFzGWBVF-Yzwdbyfp3LgqOB8t1GpQYN2s-zy2OiwKyiKKFdYdcSDNCd-zzYRqXntftb0x_oaXqqs/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ_Pp3Lw1z4Lj99LtdWXfVIHrhTtasTF5Uz1h2Jcn-_DAEnzqpyZ8bKnMAviyA11IEgFzGWBVF-Yzwdbyfp3LgqOB8t1GpQYN2s-zy2OiwKyiKKFdYdcSDNCd-zzYRqXntftb0x_oaXqqs/s400/image001.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSUa7tXXOP62fU2aDAbg5EQkcsKD-STS_Rhpy0TC7zIdT_er_ViMB9F53dTFoGpe-QjPHX0Gaj0bjPHeCbbEf6Hv_4v9WaQ4HnenKRjgKETFXZDwX00Qhb0LQr9sAa1hhqY92s4nA6V7sd/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSUa7tXXOP62fU2aDAbg5EQkcsKD-STS_Rhpy0TC7zIdT_er_ViMB9F53dTFoGpe-QjPHX0Gaj0bjPHeCbbEf6Hv_4v9WaQ4HnenKRjgKETFXZDwX00Qhb0LQr9sAa1hhqY92s4nA6V7sd/s400/image003.png" width="400" /></a></div>
<br />
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Otro cambio bastante
importante, pero que a la vez es fácil de acostumbrarse, es la falta del Botón
Inicio, al que estamos acostumbrados desde Windows 95. En Windows 8 para
acceder al “Menú Inicio” deberemos de irnos a la esquina inferior izquierda y
nos aparecerá una vista previa, haciendo clic ahí se desplegara el nuevo menú
inicio y de igual forma si estamos en el menú inicio se desplegara una vista
previa de la última aplicación en la que estábamos:<o:p></o:p></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo2NWZ_EPTqqcxinVrYF9okcmrBSWwduq0S8Wu15YiXEZ_LvI7ASWgdIYSIwcP_P1q3-nxgJxevDJrIjobwsZHjQk31_qJdbfU39slrkD4CiiRZB8MW9K9pgcWb3wJsdwvjQPR5jeTwcu6/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo2NWZ_EPTqqcxinVrYF9okcmrBSWwduq0S8Wu15YiXEZ_LvI7ASWgdIYSIwcP_P1q3-nxgJxevDJrIjobwsZHjQk31_qJdbfU39slrkD4CiiRZB8MW9K9pgcWb3wJsdwvjQPR5jeTwcu6/s400/image005.png" width="400" /></a></div>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"><v:shapetype coordsize="21600,21600" filled="f" id="_x0000_t75" o:preferrelative="t" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" stroked="f"><span style="font-family: Calibri;">
<v:stroke joinstyle="miter">
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0">
<v:f eqn="sum @0 1 0">
<v:f eqn="sum 0 0 @1">
<v:f eqn="prod @2 1 2">
<v:f eqn="prod @3 21600 pixelWidth">
<v:f eqn="prod @3 21600 pixelHeight">
<v:f eqn="sum @0 0 1">
<v:f eqn="prod @6 1 2">
<v:f eqn="prod @7 21600 pixelWidth">
<v:f eqn="sum @8 21600 0">
<v:f eqn="prod @7 21600 pixelHeight">
<v:f eqn="sum @10 21600 0">
</v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:formulas>
</v:stroke></span></v:shapetype></span></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Después en las esquinas
inferior y superior del lado derecho, si nos acercamos se desplegara un menú
con opciones como Buscar, Compartir, Dispositivos y Configuraciones:<o:p></o:p></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEQPZ10P03mGaCMZEyRhOPwC6tIj4D7mbbT1ayD3aLStZYwjD7eATaGi3V78xTFSpI2WyD7hitQqRguY6Pvj-_cM9ED4DMukXnz9oWVJ1qbAC8aIVobNelZUC3XU5K1KRiTGCJL-oVa7-x/s1600/image020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEQPZ10P03mGaCMZEyRhOPwC6tIj4D7mbbT1ayD3aLStZYwjD7eATaGi3V78xTFSpI2WyD7hitQqRguY6Pvj-_cM9ED4DMukXnz9oWVJ1qbAC8aIVobNelZUC3XU5K1KRiTGCJL-oVa7-x/s400/image020.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<br /></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">De todas las opciones
mencionadas, una de las que más cosas trae, es la de Configuración, ya que
inclusive ahí se encuentra ahora el botón para apagar o reiniciar el equipo,
junto con las opciones de configuración propias de cada programa (El escritorio
es considerado una aplicación más):<o:p></o:p></span></span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjloVXiC5cTEnFkWDREN4GtaMOI1BAsf0KgtEDxZ9gfnq0lsw1XCjOiHOj2M0_72X6ZlWBoD2zL7ZuhyXjN4FOaZHUPqHt2aQDflAxBI9AEFJw1u7HKL0buFB2exVk_6xe_X43IcTFISLnB/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjloVXiC5cTEnFkWDREN4GtaMOI1BAsf0KgtEDxZ9gfnq0lsw1XCjOiHOj2M0_72X6ZlWBoD2zL7ZuhyXjN4FOaZHUPqHt2aQDflAxBI9AEFJw1u7HKL0buFB2exVk_6xe_X43IcTFISLnB/s400/image009.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"></span><span style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Otro punto a destacar es
el buscador integrado dentro del menú inicio, donde solo se necesita empezar a
teclear lo que deseamos buscar y automáticamente se desplegaran los resultados:<o:p></o:p></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsAe4EGu38MbsVZ3UMxTCV1TkK5N2LL9Y6BNF4jwfYcAWLPGnCfn2KJwqXtJg4ElrFFrpGmlTnkSZEhC-gxqj4ZAgP8QOKGKhN-Uib67FXD3yti0sUDaJVyE4IneZljFIqhDRcCgn78KQ3/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsAe4EGu38MbsVZ3UMxTCV1TkK5N2LL9Y6BNF4jwfYcAWLPGnCfn2KJwqXtJg4ElrFFrpGmlTnkSZEhC-gxqj4ZAgP8QOKGKhN-Uib67FXD3yti0sUDaJVyE4IneZljFIqhDRcCgn78KQ3/s400/image011.png" width="400" /></a></div>
<br />
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Después, si deseamos ver
todas las aplicaciones<span style="mso-spacerun: yes;"> </span>instaladas,
debemos de hacer clic derecho en el menú derecho en alguna sección vacía y
aparecerá una franja inferior de color anaranjado donde estará presente la
opción “Todas las Aplicaciones” que nos llevara a una nueva pantalla donde se
muestran todas las aplicaciones ordenadas en títulos (la misma distribución que
si fueran carpetas):<o:p></o:p></span></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKqbHuYQap_qsZbbrJjyHaqpVfUP3mC6KBqqh-c6i8rl0De_pJvPKMZLlL1o90zr_jY_nwl9WwcILYiXF4XsuHV_I1x-1oY6CCMhkOKwq30S_iPc6Wd_gKAy-n0McCvrpxhPLX5ip6C9h_/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKqbHuYQap_qsZbbrJjyHaqpVfUP3mC6KBqqh-c6i8rl0De_pJvPKMZLlL1o90zr_jY_nwl9WwcILYiXF4XsuHV_I1x-1oY6CCMhkOKwq30S_iPc6Wd_gKAy-n0McCvrpxhPLX5ip6C9h_/s400/image013.png" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"></span><span style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">En cuanto al escritorio,
tenemos algunas mejoras como la optimización de carpetas por tipo de contenido
(Música, Videos, Archivos, etc.), mejoras en el proceso de copiado de archivos,
el nuevo gestor de tareas:<o:p></o:p></span></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQn6c9wbAvqvtaqAiSo6YWEBQDvfxRyLAavaPOlSFnoxwD3eIavteZgMZidIb-FxwNfSEdsHXlqBHLsS_tzO_bBEskDe4frPta_bFYYK5z7vffYXqjhbBjJn275TAyEJXWiKPcPhLx9u6m/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQn6c9wbAvqvtaqAiSo6YWEBQDvfxRyLAavaPOlSFnoxwD3eIavteZgMZidIb-FxwNfSEdsHXlqBHLsS_tzO_bBEskDe4frPta_bFYYK5z7vffYXqjhbBjJn275TAyEJXWiKPcPhLx9u6m/s400/image015.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIYrIuSajvahRZeEBVcBCGp5O_TLutTlTq0O0ZsHqzlYkN74VCqKb2pkpsTQBNrO5u3vmwXF_mLZ6EbMI78j-fWU5bLm2VEiJmD6OpgJY1tpHftZU-aMuqx6ft0nCpIyagLB46VANcisjo/s1600/image017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="253" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIYrIuSajvahRZeEBVcBCGp5O_TLutTlTq0O0ZsHqzlYkN74VCqKb2pkpsTQBNrO5u3vmwXF_mLZ6EbMI78j-fWU5bLm2VEiJmD6OpgJY1tpHftZU-aMuqx6ft0nCpIyagLB46VANcisjo/s400/image017.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQQPZbaCn9zWnuA6E_U-rPYxcF2BEAXqFwmHEjPDohe2JfE2f5yTDz4dYXUhRkmWozQq8dX6PT2JXNX0kURuo3vKEQy1nrUK0NtFdE0EGiFS1n1tJy9h6MpuFhuPEHa4j2LT1X9SmRh2lO/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="363" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQQPZbaCn9zWnuA6E_U-rPYxcF2BEAXqFwmHEjPDohe2JfE2f5yTDz4dYXUhRkmWozQq8dX6PT2JXNX0kURuo3vKEQy1nrUK0NtFdE0EGiFS1n1tJy9h6MpuFhuPEHa4j2LT1X9SmRh2lO/s400/image018.png" width="400" /></a></div>
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="mso-ansi-language: ES; mso-fareast-language: ES; mso-no-proof: yes;"></span><span style="mso-ansi-language: ES;"><o:p></o:p></span></div>
<span style="mso-ansi-language: ES;"><span style="font-family: Calibri;">Durante la presentación
en el MWC, se mencionó que se realizaron cerca de 100 000 cambios y la verdad
se notan y creo que no me van a alcanzar las palabras ni el tiempo para
describirlas, un ejemplo de estos cambios es como ahora elegimos el programa
por defecto para abrir un archivo:<o:p></o:p></span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEQPZ10P03mGaCMZEyRhOPwC6tIj4D7mbbT1ayD3aLStZYwjD7eATaGi3V78xTFSpI2WyD7hitQqRguY6Pvj-_cM9ED4DMukXnz9oWVJ1qbAC8aIVobNelZUC3XU5K1KRiTGCJL-oVa7-x/s1600/image020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEQPZ10P03mGaCMZEyRhOPwC6tIj4D7mbbT1ayD3aLStZYwjD7eATaGi3V78xTFSpI2WyD7hitQqRguY6Pvj-_cM9ED4DMukXnz9oWVJ1qbAC8aIVobNelZUC3XU5K1KRiTGCJL-oVa7-x/s400/image020.png" width="400" /></a></div>
<br />
Espero que les haya gustado este primer vistazo!<br />Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-32677106948856604772012-03-05T18:56:00.002-08:002012-03-05T18:58:41.417-08:00Problema con Apphangb1 iexplorer<span style="font-family: Calibri;">Por alguna extraña razón, cuando estaba navegando la web
feliz de la vida, Internet Explorer <span style="mso-spacerun: yes;"> </span>(IE9) dejo de funcionar correctamente, las páginas
ya no se mostraban y el consumo de procesamiento se disparó hasta el 100% y después
de un rato mostro un error etiquetado como Apphangb1, buscando la solución me encontré
con las siguiente 2 recetas para tratar de solucionar el problema:<o:p></o:p></span><br />
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="font-family: Calibri;">La primera consiste en borrar los archivos temporales del
sistema, junto con el historial de IE, los pasos para realizar esto son:<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">1.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;">Abrir una ventana ejecutar y poner: %Temp%<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">2.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;">Dentro de la carpeta seleccionar todo el
contenido y eliminarlo; si algunos de los archivos no nos deja eliminar, los
omitimos.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">3.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;">Abrir las opciones de internet, poniendo en una nueva
ventana ejecutar: inetcpl.cpl<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">4.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;">Dentro de la ventana, en la pestaña General,
pulsar el botón Eliminar del Historial de Exploración.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 10pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">5.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;">Seleccionar todas las opciones que aparecen en
el cuadro de dialogo.<o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBDKYbLkcLLuIY76D1SoJEcy9DbX7x-1sXx0AWika6vjGHxe_XhZ3-QxFHHzehsuhRU7sshStQfEvzhpXlanXqPKu7f7vokmRAnFetwg8QlizTuU-mjDQv0vD2796Ss_KRspGf39Hvlv4w/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="428" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBDKYbLkcLLuIY76D1SoJEcy9DbX7x-1sXx0AWika6vjGHxe_XhZ3-QxFHHzehsuhRU7sshStQfEvzhpXlanXqPKu7f7vokmRAnFetwg8QlizTuU-mjDQv0vD2796Ss_KRspGf39Hvlv4w/s640/image001.png" width="640" /></a></div>
<br />
<div class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<span style="font-family: Calibri;">Si el problema persiste, la segunda opción consiste en:</span></div>
<div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">1.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;">Abrir las opciones de internet, poniendo en una
ventana ejecutar: inetcpl.cpl<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">2.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;">Ir a la pestaña Opciones Avanzadas<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 10pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;">
<span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">3.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;">Pulsar sobre el botón Restablecer<o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMBjK41rAN-3MJ_npRIjxY9xdgVUtYub76Y-BdAdbuVUCjK-Q6KQKm1AM_9qIH9nGz6bykF0C4fK6rzmpZq51ezuyGyGE074gazUQpPuWH_I0pmCf3qxjb6keG_tAbPaBAm-DZSEp0InvJ/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMBjK41rAN-3MJ_npRIjxY9xdgVUtYub76Y-BdAdbuVUCjK-Q6KQKm1AM_9qIH9nGz6bykF0C4fK6rzmpZq51ezuyGyGE074gazUQpPuWH_I0pmCf3qxjb6keG_tAbPaBAm-DZSEp0InvJ/s400/image003.png" width="310" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Suerte!.</div>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-6823371145274964252012-02-23T14:08:00.001-08:002012-02-23T14:08:20.009-08:00Abrir el explorador del iPhone con un Boton - Hack MonoTouch #2Para abrir el explorador (Safari por defecto) con un UIButton, usaremos el siguiente codigo:<br />
<br />
buttonExampleName.TouchUpInside += (sender,e) => {<br /> NSUrl url = new NSUrl (@"http://www.bing.com");<br /> UIApplication.SharedApplication.OpenUrl (url);<br /> };Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0tag:blogger.com,1999:blog-4986294743181426431.post-49546862746599139262012-02-23T08:16:00.000-08:002012-06-23T14:39:44.446-07:00UIScrollView como el HomePage del iPhone<div lang="es-ES">
<span lang="es-ES">El HomePage del iPhone posee un conjunto de elementos que hacen bastante vistoso y útil, de tal manera que alguna vez queramos el mismo efecto para alguna de nuestras aplicaciones. Para lógralo haremos uso de dos controles, el UIScrollView y el UIPageControl.</span><br />
<br />
<span lang="es-ES">Nuestro primer paso sera abrir nuestro xib en Xcode y agregar los dos controles a la vista junto con sus Outlets, como se puede ver en la siguiente imagen:</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4mDYNeknNBDZGOhyphenhyphenHo8E682eXiNGpx8R5Wk59tkUbl1377fj-FLBe8cbHpY-nxLX1sDTsV1m_iF0XHOtwodkHQG2JO1wzVChE8IbBKElQsy-YuIHqMwyeO_f4V6U6ELsvmOspGRwVuEoP/s1600/scroll1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="464" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4mDYNeknNBDZGOhyphenhyphenHo8E682eXiNGpx8R5Wk59tkUbl1377fj-FLBe8cbHpY-nxLX1sDTsV1m_iF0XHOtwodkHQG2JO1wzVChE8IbBKElQsy-YuIHqMwyeO_f4V6U6ELsvmOspGRwVuEoP/s640/scroll1.png" width="640" /></a></div>
<span lang="es-ES"><br /> </span><br />
<span lang="es-ES"></span><span lang="es-ES">Luego en el </span><span lang="es-ES">código
del controller agregaremos los métodos CreatePanel, que será el
encargado de crear los paneles del ScrollView, junto con su
respectivo contenido, en el caso en particular de nuestra aplicación
tendrá una imagen (UIImage) y un texto (UILabel):</span></div>
<pre class="brush: csharp"> private void CreatePanels( int count )
{
scrollView.Scrolled += ScrollViewScrolled;
RectangleF scrollFrame = scrollView.Frame;
scrollFrame.Width = scrollFrame.Width * count;
scrollView.ContentSize = scrollFrame.Size;
for (int i=0; i< count; i++)
{
UIImageView imageView = new UIImageView ();
UITextView textView = new UITextView ();
textView.TextColor = UIColor.White;
textView.Font = UIFont.ItalicSystemFontOfSize (18.0f);
textView.BackgroundColor = UIColor.Clear;
textView.TextAlignment = UITextAlignment.Center;
textView.Text = CreateFormatingText (ImagesNames[i]);
imageView.Image = LoadImage (ImagesNames[i]);
//Begin Frames
RectangleF frameImg = scrollView.Frame;
frameImg.Height = 220.0f;//450
PointF locationImg = new PointF ();
locationImg.X = frameImg.Width * i;
frameImg.Location = locationImg;
RectangleF frameTxt = scrollView.Frame;
frameTxt.Height = 200.0f;//450
PointF locationTxt = new PointF ();
locationTxt.X = frameTxt.Width * i;
locationTxt.Y = frameImg.Height + 25;
frameTxt.Location = locationTxt;
textView.Frame = frameTxt;
imageView.Frame = frameImg;
scrollView.AddSubview (textView);
scrollView.AddSubview (imageView);
}
pageControl.Pages = count;
}
</pre>
<div lang="es-ES">
Nuestro siguiente método será, el encargado de
revisar si el panel actual ha pasado de la mitad de nuestra pantalla,
para así generar el cambio de panel:</div>
<pre class="brush: csharp"> private void ScrollViewScrolled( object sender, EventArgs e )
{
double page = Math.Floor( ( scrollView.ContentOffset.X - scrollView.Frame.Width / 2 ) / scrollView.Frame.Width ) + 1;
pageControl.CurrentPage = (int) page;
}
</pre>
<div lang="es-ES">
Y nuestro 2 últimos métodos que se describen a
continuación serán los encargados de formatear el texto que se
mostrara en pantalla con la ayuda de un StringBuilder y el método
encargado de asignar una imagen a nuestro UIViewImage en base a un
nombre, además si no existe una imagen para ese nombre, nos
devolverá una imagen predeterminada que indica que no existe.</div>
<pre class="brush: csharp"> private string CreateFormatingText (string name)
{
StringBuilder Text = new StringBuilder ();
Text.Append ("Name of Image: ");
Text.Append (name);
return Text.ToString ();
}
private UIImage LoadImage (string Name)
{
UIImage temp = UIImage.FromFile ("Images/" + Name);
if (temp == null)
{
temp = new UIImage ("Images/photo_not_available-png.png");
return temp;
}
else
return temp;
}
</pre>
<div lang="es-ES">
Después, vamos a crear una lista de Strings, que
almacene los nombres de archivos a buscar y lo inicializamos en el
constructor del controlador:</div>
<pre class="brush: csharp">
private List ImagesNames;
public ScrollViewExampleViewController ()
: base ("ScrollViewExampleViewController", null)
{
ImagesNames = new List<string> (){
"0.png",
"1.png",
"2.png",
"3.png",
"4.png",
"5.png",
"6.png"
} ;
}
</string></pre>
<div lang="es-ES">
Y por último vamos a llamar al método que
inicializa los paneles en el método ViewDidLoad:</div>
<pre class="brush: csharp">
CreatePanels (ImagesNames.Count);
</pre>
<div lang="es-ES">
El resultado se verá como sigue:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHh0W1EDTxFJONcH-Mmwo65Gk1ZLqyImZ7krYqbEoXPzKM9ITE5zhayFBWB9Fd-BjyEIC9pl8C4c-3TKDF-6R0uwJb_y-e4B_JDnOxJ2kd7Rkb9FR-re-llPtt2kS5gLbLJpzU4OaGQ_tL/s1600/scroll2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHh0W1EDTxFJONcH-Mmwo65Gk1ZLqyImZ7krYqbEoXPzKM9ITE5zhayFBWB9Fd-BjyEIC9pl8C4c-3TKDF-6R0uwJb_y-e4B_JDnOxJ2kd7Rkb9FR-re-llPtt2kS5gLbLJpzU4OaGQ_tL/s400/scroll2.png" width="201" /></a></div>
<span lang="es-ES">Suerte!</span><br />
<span style="color: black;"><span style="color: black;"><a href="https://skydrive.live.com/redir.aspx?cid=667f0458e6e70251&resid=667F0458E6E70251%21133&parid=root" target="_blank"><span lang="es-ES">Source </span></a><br />
</span></span>Anonymoushttp://www.blogger.com/profile/11510824608228129930noreply@blogger.com0