<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Códigos de la Web</title><description>Sitio web, donde encontraras codigos fuentes,tutoriales,video tutoriales, y todo lo relacionado con el mundo del desarrollo de software</description><managingEditor>noreply@blogger.com (Guelmi)</managingEditor><pubDate>Sun, 1 Sep 2024 10:35:59 -0500</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">20</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://guelmimundoinfo.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>Sitio web, donde encontraras codigos fuentes,tutoriales,video tutoriales, y todo lo relacionado con el mundo del desarrollo de software</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>MVP - DAGGER (Login)</title><link>http://guelmimundoinfo.blogspot.com/2019/08/mvp-dagger-login.html</link><category>Android</category><category>dagger</category><category>JAVA</category><category>MVP</category><category>TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Tue, 6 Aug 2019 15:32:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-2412823561314840021</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4wucmIZKzXQ_TVIYr8Xh8OdoLnHPPv7u5HqNCPoLOcPfk6gG5byVHZQtC8YulYwXDSNzzMLHtYD_-5bv_ZoyQ2X3MZ9aOdrUykzndMoMS1XIgDpZafAMJl-8oa6Raj5epft527WQNNdc/s1600/android.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="627" data-original-width="1200" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4wucmIZKzXQ_TVIYr8Xh8OdoLnHPPv7u5HqNCPoLOcPfk6gG5byVHZQtC8YulYwXDSNzzMLHtYD_-5bv_ZoyQ2X3MZ9aOdrUykzndMoMS1XIgDpZafAMJl-8oa6Raj5epft527WQNNdc/s320/android.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
En este post crearemos un login básico, usando MVP y Dagger, recordamos que el en post anterior indicamos como configurar nuestro proyecto con dagger para más información haz clic &lt;a href="https://www.codigosdelaweb.com/2019/07/mvp-dagger-configuracion-dagger-en.html" target="_blank"&gt;aquí&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Lo primero que haremos en nuestro layout agregaremos dos EditText y un button nuestra vista quedaría como se muestra a continuación.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW4KV_dqxCgZETaXlOz3iUHcoALJvHvalcC-PFs_CHzBRgxghTslVv2hfP2IZQRqdGFnZTME2UkOIxo_645XD_bp60bAFVtpy0a1Z3O1TYXTta4LQXCG8REH0lVd7O9eddPBSFbAY44_Q/s1600/device-2019-08-06-143523.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1280" data-original-width="720" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW4KV_dqxCgZETaXlOz3iUHcoALJvHvalcC-PFs_CHzBRgxghTslVv2hfP2IZQRqdGFnZTME2UkOIxo_645XD_bp60bAFVtpy0a1Z3O1TYXTta4LQXCG8REH0lVd7O9eddPBSFbAY44_Q/s320/device-2019-08-06-143523.png" width="180" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
A continuación vamos a crear un paquete login, donde crearemos nuestras clases para aplicar nuestro patrón MVP&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxQb70hkOCu51RxH_5ar0wkpeb-WAoazp_Kaiq2bnC0xhfbPRmLGDkbQBADOeGXTUhJT7B-jQhhqg-pMerNZx4eXfSbdcxjz9_wqEnWiSrvVtPWxJqS1Rl0WRojfxKl0zXcPdK_4ny5JI/s1600/package.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="141" data-original-width="201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxQb70hkOCu51RxH_5ar0wkpeb-WAoazp_Kaiq2bnC0xhfbPRmLGDkbQBADOeGXTUhJT7B-jQhhqg-pMerNZx4eXfSbdcxjz9_wqEnWiSrvVtPWxJqS1Rl0WRojfxKl0zXcPdK_4ny5JI/s1600/package.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Crearemos una interface llamada LoginMVP, acá vamos a crear tres interfaces una View, Presenter y un Model, recordemos que el presentador será el intermediario entre la vista y el modelo&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp8mvcU_wZl0wA74DwG1TIFVZH6ytppe5azYsnmqlfSBHcCTnHn-f6j8QUnq0lVm9F7OtwbHYIz4W8WshF9UrZ9HfpOQD9Gk_7OcLJiFJjLKlDSOPtlpS24LOWIo8KOWKl-HCrMLmOjek/s1600/loginMVP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="302" data-original-width="416" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp8mvcU_wZl0wA74DwG1TIFVZH6ytppe5azYsnmqlfSBHcCTnHn-f6j8QUnq0lVm9F7OtwbHYIz4W8WshF9UrZ9HfpOQD9Gk_7OcLJiFJjLKlDSOPtlpS24LOWIo8KOWKl-HCrMLmOjek/s320/loginMVP.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Antes de todo vamos a crear un paquete modelo y crearemos una clase llamada User&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;&lt;span style="color: #cc7832;"&gt;public class &lt;/span&gt;User {

    &lt;span style="color: #cc7832;"&gt;private &lt;/span&gt;String &lt;span style="color: #9876aa;"&gt;user&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    private &lt;/span&gt;String &lt;span style="color: #9876aa;"&gt;nombre&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;
&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    public &lt;/span&gt;&lt;span style="color: #ffc66d;"&gt;User&lt;/span&gt;(String user&lt;span style="color: #cc7832;"&gt;, &lt;/span&gt;String nombre){
        &lt;span style="color: #cc7832;"&gt;this&lt;/span&gt;.&lt;span style="color: #9876aa;"&gt;user &lt;/span&gt;= user&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;        this&lt;/span&gt;.&lt;span style="color: #9876aa;"&gt;nombre &lt;/span&gt;= nombre&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    &lt;/span&gt;}&lt;/pre&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;}&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
hemos creado estos métodos iniciales para el manejo de nuestro login, lo primero que haremos es implementar nuestra vista, para ello, nos vamos a ir a nuestra actividad, en este caso main_activity e implementamos los métodos establecidos. Nuestra clase activity quedaría de esta forma&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN2Vn9kaAizYx0bhd0EYmPFcrkb3rhVSzj9MdLw0mGp1_y1UQiJncXqWdFYMrPE6-y9JIieEujKXYMNXIEaBU5-wy9suNBa175y-ydKvJ1hVhMzsvMeDWw4EJtQDNwbK1VRBDN3p6WFoY/s1600/mainActivity.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="542" data-original-width="575" height="376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN2Vn9kaAizYx0bhd0EYmPFcrkb3rhVSzj9MdLw0mGp1_y1UQiJncXqWdFYMrPE6-y9JIieEujKXYMNXIEaBU5-wy9suNBa175y-ydKvJ1hVhMzsvMeDWw4EJtQDNwbK1VRBDN3p6WFoY/s400/mainActivity.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
en los métodos de nuestra actividad, devolveremos los valores de cada EditText y creamos un método donde mostraremos mensajes de la validación de nuestro login.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Nuestro siguiente paso es trabajar sobre nuestro presentador, para este caso vamos a crear una clase llamada LoginPresenter el cual implementara la interface Presenter, por lo pronto nuestra clase irá de esta forma, mientras vayamos implementando nuestro modelo vamos agregando el resto de funcionalidad. En nuestro método signIn, primer verificamos que nuestra vista no venga nula, después validamos que nuestro campos no estén vacío, en caso de ser verdadero llamamos nuestro Toast que esta implementando en la vista y pasamos un mensaje indicando que debe ingresar las credenciales.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYFVyLY4xrzI2Vb1cRnzDJ1H7vobLEXq2Hb6U5l_s_fB6Hi2juopVxKzrd3QtunzJuZL_obCsX5mmb0scLKSuOrIt0tOZP0zhFJ3eFcIkSt_lzO4RvPbEctViqzCyZLT2ukjnxCWyBGNs/s1600/presenter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="355" data-original-width="665" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYFVyLY4xrzI2Vb1cRnzDJ1H7vobLEXq2Hb6U5l_s_fB6Hi2juopVxKzrd3QtunzJuZL_obCsX5mmb0scLKSuOrIt0tOZP0zhFJ3eFcIkSt_lzO4RvPbEctViqzCyZLT2ukjnxCWyBGNs/s400/presenter.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Ahora seguiremos con nuestro modelo, para este caso vamos a crear primero un Repository, que tendrá como funcionalidad acceder ya sea a un webservice o una información de datos locales, para este caso sólo simularemos una validación.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Primero creamos una interface llamada LoginRepository, para este ejemplo contendrá un método que verifica las credenciales del usuario que desea iniciar sesión&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;&lt;span style="color: #cc7832;"&gt;public interface &lt;/span&gt;LoginRepository {
    User &lt;span style="color: #ffc66d;"&gt;getUser&lt;/span&gt;(String user&lt;span style="color: #cc7832;"&gt;, &lt;/span&gt;String password)&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;}&lt;/pre&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Después creamos la clase que implementa la cual llamamos LoginRepositoryImpl, en esta clase hemos realizado una validación "dummy", sobre los datos de inicio de sesión&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMxl6vhneBlGXRj3wBdr-A55KrzN6ynrd61upsH5ni7hYdfEB7_bbeFjDdK6KUgbFuUE8ixbf_zOsM-xej0w7Ct4FAaN17h3ItPjr_EM5CeBCdwSuRIy3ToyQmK_r-meyuo4I5FhnzzhA/s1600/loginRepository.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="211" data-original-width="463" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMxl6vhneBlGXRj3wBdr-A55KrzN6ynrd61upsH5ni7hYdfEB7_bbeFjDdK6KUgbFuUE8ixbf_zOsM-xej0w7Ct4FAaN17h3ItPjr_EM5CeBCdwSuRIy3ToyQmK_r-meyuo4I5FhnzzhA/s400/loginRepository.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Ahora seguiremos con nuestra implementación del modelo, en nuestro modelo haremos la inyección de dependencia de nuestro Repository. Hacemos llamado de nuestro metodo getUser, creado en el repository el cual nos devolvera un null o un objecto de tipo User.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMVbZolI9pFl_LI8-g2PBbNKafWXiLo6kP0YsTt50fdIHbvZaGVSVNID8McKnhcecqwpZMXz1d1uoi0qc4g_RkEKLq61LjRxwJJb-Je-HYyfhx9_3WNTUzQ97FYk5h3ZMJiCnsU45E4-o/s1600/loginModel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="231" data-original-width="436" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMVbZolI9pFl_LI8-g2PBbNKafWXiLo6kP0YsTt50fdIHbvZaGVSVNID8McKnhcecqwpZMXz1d1uoi0qc4g_RkEKLq61LjRxwJJb-Je-HYyfhx9_3WNTUzQ97FYk5h3ZMJiCnsU45E4-o/s400/loginModel.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Ya teniendo creado nuestro modelo, vamos a hacer la inyección de dependencia sobre el presenter, el cual nos quedaría de esta forma&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;&lt;span style="color: #cc7832;"&gt;public &lt;/span&gt;&lt;span style="color: #ffc66d;"&gt;LoginPresenter&lt;/span&gt;(LoginMVP.Model model){
    &lt;span style="color: #cc7832;"&gt;this&lt;/span&gt;.&lt;span style="color: #9876aa;"&gt;model &lt;/span&gt;= model&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
y sobre el presentador en el método signIn, haremos del método del modelo que válida las credenciales&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;&lt;span style="color: #cc7832;"&gt;public void &lt;/span&gt;&lt;span style="color: #ffc66d;"&gt;signIn&lt;/span&gt;() {
    &lt;span style="color: #cc7832;"&gt;if&lt;/span&gt;(&lt;span style="color: #9876aa;"&gt;view &lt;/span&gt;!= &lt;span style="color: #cc7832;"&gt;null &lt;/span&gt;){
        &lt;span style="color: #cc7832;"&gt;if&lt;/span&gt;(TextUtils.&lt;span style="font-style: italic;"&gt;isEmpty&lt;/span&gt;(&lt;span style="color: #9876aa;"&gt;view&lt;/span&gt;.getUser()) &amp;amp;&amp;amp; TextUtils.&lt;span style="font-style: italic;"&gt;isEmpty&lt;/span&gt;(&lt;span style="color: #9876aa;"&gt;view&lt;/span&gt;.getPassword())){
            &lt;span style="color: #9876aa;"&gt;view&lt;/span&gt;.setMessage(&lt;span style="color: #6a8759;"&gt;"Ingrese usuario y contraseña"&lt;/span&gt;)&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;        &lt;/span&gt;}&lt;span style="color: #cc7832;"&gt;else&lt;/span&gt;{
           User user = &lt;span style="color: #9876aa;"&gt;model&lt;/span&gt;.validateLogin(&lt;span style="color: #9876aa;"&gt;view&lt;/span&gt;.getUser()&lt;span style="color: #cc7832;"&gt;, &lt;/span&gt;&lt;span style="color: #9876aa;"&gt;view&lt;/span&gt;.getPassword())&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="color: #9876aa;"&gt;           view&lt;/span&gt;.setMessage(user == &lt;span style="color: #cc7832;"&gt;null &lt;/span&gt;? &lt;span style="color: #6a8759;"&gt;"Usuario no válido" &lt;/span&gt;: &lt;span style="color: #6a8759;"&gt;"Login válido"&lt;/span&gt;)&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;/pre&gt;
}
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
A continuación lo que haremos es crear nuestro Modulo, con dagger, y realizamos la implementación de nuestro MVP, para esto vamos a crear una clase llamado LoginModule&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkhebgV6FLy11KBvOt1OplCZC0_1g3roiBkiHkpdMvawlzxoDu7VZJiLUFeAaLFBApAFpvcRqeh9fsKkA87VFqJtVAeXUQzbhF6LpHS_bi6lmJ8FJVvmXOBvZqBBK6qUktbObp6mIXW6k/s1600/loginModule.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="331" data-original-width="573" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkhebgV6FLy11KBvOt1OplCZC0_1g3roiBkiHkpdMvawlzxoDu7VZJiLUFeAaLFBApAFpvcRqeh9fsKkA87VFqJtVAeXUQzbhF6LpHS_bi6lmJ8FJVvmXOBvZqBBK6qUktbObp6mIXW6k/s400/loginModule.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;
Después de haber creado nuestro módulo dagger, vamos a registrarlo en nuestra clase Component, ubicada en el paquete config, luego compilamos nuestro proyecto y una vez terminado vamos a nuestra clase App, y agregamos nuestro modulo.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEJQD_0ocdZaBsfl5OxzkViCs8Jn5Pd3np9-nL8fGn2IMWfGh-88sZ4JCypeTwBsr0D0M0b3Of6dSwZqfpQuZiwKxtjx8oJ0aHvV7FV5X0pbvD2eWjqul2hmkbudMWh2sy7z9I0fYt47o/s1600/app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="142" data-original-width="444" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEJQD_0ocdZaBsfl5OxzkViCs8Jn5Pd3np9-nL8fGn2IMWfGh-88sZ4JCypeTwBsr0D0M0b3Of6dSwZqfpQuZiwKxtjx8oJ0aHvV7FV5X0pbvD2eWjqul2hmkbudMWh2sy7z9I0fYt47o/s320/app.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Nos saldrá en esto momento que es deprecated, pero esto es debido a que no se esta usando, para esto vamos hacer nuestra inyección sobre nuestra actividad MainActivity.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Lo primero que haremos es agregar un objecto de tipo LoginPresenter y haremos la inyección&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;&lt;span style="color: #bbb529;"&gt;@Inject&lt;/span&gt;LoginMVP.Presenter &lt;span style="color: #9876aa;"&gt;presenter&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Sobrescribimos el método onStart y establecemos la vista a nuestro presentador&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;&lt;span style="color: #bbb529;"&gt;@Override&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;protected void &lt;/span&gt;&lt;span style="color: #ffc66d;"&gt;onStart&lt;/span&gt;() {
    &lt;span style="color: #cc7832;"&gt;super&lt;/span&gt;.onStart()&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    &lt;/span&gt;&lt;span style="color: #9876aa;"&gt;presenter&lt;/span&gt;.setView(&lt;span style="color: #cc7832;"&gt;this&lt;/span&gt;)&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
En nuestro método Oncreate llamamos a nuestro componente e inyectamos nuestra actividad&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;((App)getApplication()).getComponent().inject(&lt;span style="color: #cc7832;"&gt;this&lt;/span&gt;)&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
en nuestro evento clic listener de nuestro botón hacemos el llamado del método login del presentador&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"&gt;&lt;span style="color: #9876aa;"&gt;buttonSignIn&lt;/span&gt;.setOnClickListener(view -&amp;gt; 
    &lt;span style="color: #9876aa;"&gt;presenter&lt;/span&gt;.signIn()
)&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Compilamos nuestro proyecto y vemos que en nuestra clase App, no tenemos un mensaje de deprecated.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Ahora iniciemos nuestro aplicación, y realizamos las diferentes validaciones.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
En este ejemplo logramos implementar MVP y DAGGER, teniendo en cuenta la finalidad, que el presentador sea nuestro puente entre el módelo y la vista, el modelo se encargará de toda nuestra lógica de negocio, mientras que la vista, manejara los componentes visuales de la aplicación.&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Descargar fuentes&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&amp;nbsp;&amp;nbsp;&lt;a href="https://www.dropbox.com/s/8y67wj1llqz3qdr/MVPConfigLogin.zip?dl=0" target="_blank"&gt;&lt;img border="0" data-original-height="128" data-original-width="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ77mfVdm0nDHWkT8uqABHtU7tbFdm_ZmRndiIMMJWji__TQF6uaddczP89liXzxXZ7frMQ6SzuQ_eOv2Kz1LWm9XHBXPEuU9SXU97xAVS_kkb35G6GlqcR9pOoz8ZF6zP2MJ9VFajIDw/s1600/iconfinder_ui_ux_download_4631317.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;

</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4wucmIZKzXQ_TVIYr8Xh8OdoLnHPPv7u5HqNCPoLOcPfk6gG5byVHZQtC8YulYwXDSNzzMLHtYD_-5bv_ZoyQ2X3MZ9aOdrUykzndMoMS1XIgDpZafAMJl-8oa6Raj5epft527WQNNdc/s72-c/android.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="-1" type="application/json" url="https://www.dropbox.com/s/8y67wj1llqz3qdr/MVPConfigLogin.zip?dl=0"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>En este post crearemos un login básico, usando MVP y Dagger, recordamos que el en post anterior indicamos como configurar nuestro proyecto con dagger para más información haz clic aquí Lo primero que haremos en nuestro layout agregaremos dos EditText y un button nuestra vista quedaría como se muestra a continuación. A continuación vamos a crear un paquete login, donde crearemos nuestras clases para aplicar nuestro patrón MVP Crearemos una interface llamada LoginMVP, acá vamos a crear tres interfaces una View, Presenter y un Model, recordemos que el presentador será el intermediario entre la vista y el modelo Antes de todo vamos a crear un paquete modelo y crearemos una clase llamada User public class User { private String user; private String nombre; public User(String user, String nombre){ this.user = user; this.nombre = nombre; } } hemos creado estos métodos iniciales para el manejo de nuestro login, lo primero que haremos es implementar nuestra vista, para ello, nos vamos a ir a nuestra actividad, en este caso main_activity e implementamos los métodos establecidos. Nuestra clase activity quedaría de esta forma en los métodos de nuestra actividad, devolveremos los valores de cada EditText y creamos un método donde mostraremos mensajes de la validación de nuestro login. Nuestro siguiente paso es trabajar sobre nuestro presentador, para este caso vamos a crear una clase llamada LoginPresenter el cual implementara la interface Presenter, por lo pronto nuestra clase irá de esta forma, mientras vayamos implementando nuestro modelo vamos agregando el resto de funcionalidad. En nuestro método signIn, primer verificamos que nuestra vista no venga nula, después validamos que nuestro campos no estén vacío, en caso de ser verdadero llamamos nuestro Toast que esta implementando en la vista y pasamos un mensaje indicando que debe ingresar las credenciales. Ahora seguiremos con nuestro modelo, para este caso vamos a crear primero un Repository, que tendrá como funcionalidad acceder ya sea a un webservice o una información de datos locales, para este caso sólo simularemos una validación. Primero creamos una interface llamada LoginRepository, para este ejemplo contendrá un método que verifica las credenciales del usuario que desea iniciar sesión public interface LoginRepository { User getUser(String user, String password);} Después creamos la clase que implementa la cual llamamos LoginRepositoryImpl, en esta clase hemos realizado una validación "dummy", sobre los datos de inicio de sesión Ahora seguiremos con nuestra implementación del modelo, en nuestro modelo haremos la inyección de dependencia de nuestro Repository. Hacemos llamado de nuestro metodo getUser, creado en el repository el cual nos devolvera un null o un objecto de tipo User. Ya teniendo creado nuestro modelo, vamos a hacer la inyección de dependencia sobre el presenter, el cual nos quedaría de esta forma public LoginPresenter(LoginMVP.Model model){ this.model = model; } y sobre el presentador en el método signIn, haremos del método del modelo que válida las credenciales public void signIn() { if(view != null ){ if(TextUtils.isEmpty(view.getUser()) &amp;amp;&amp;amp; TextUtils.isEmpty(view.getPassword())){ view.setMessage("Ingrese usuario y contraseña"); }else{ User user = model.validateLogin(view.getUser(), view.getPassword()); view.setMessage(user == null ? "Usuario no válido" : "Login válido"); } } } A continuación lo que haremos es crear nuestro Modulo, con dagger, y realizamos la implementación de nuestro MVP, para esto vamos a crear una clase llamado LoginModule Después de haber creado nuestro módulo dagger, vamos a registrarlo en nuestra clase Component, ubicada en el paquete config, luego compilamos nuestro proyecto y una vez terminado vamos a nuestra clase App, y agregamos nuestro modulo. Nos saldrá en esto momento que es deprecated, pero esto es debido a que no se esta usando, para esto vamos hacer nuestra inyección sobre nuestra actividad MainActivity. Lo primero que haremos es agregar un objecto de tipo LoginPresenter y haremos la inyección @InjectLoginMVP.Presenter presenter; Sobrescribimos el método onStart y establecemos la vista a nuestro presentador @Overrideprotected void onStart() { super.onStart(); presenter.setView(this);} En nuestro método Oncreate llamamos a nuestro componente e inyectamos nuestra actividad ((App)getApplication()).getComponent().inject(this); en nuestro evento clic listener de nuestro botón hacemos el llamado del método login del presentador buttonSignIn.setOnClickListener(view -&amp;gt; presenter.signIn() ); Compilamos nuestro proyecto y vemos que en nuestra clase App, no tenemos un mensaje de deprecated. Ahora iniciemos nuestro aplicación, y realizamos las diferentes validaciones. En este ejemplo logramos implementar MVP y DAGGER, teniendo en cuenta la finalidad, que el presentador sea nuestro puente entre el módelo y la vista, el modelo se encargará de toda nuestra lógica de negocio, mientras que la vista, manejara los componentes visuales de la aplicación. Descargar fuentes &amp;nbsp;&amp;nbsp;</itunes:subtitle><itunes:author>noreply@blogger.com (Guelmi)</itunes:author><itunes:summary>En este post crearemos un login básico, usando MVP y Dagger, recordamos que el en post anterior indicamos como configurar nuestro proyecto con dagger para más información haz clic aquí Lo primero que haremos en nuestro layout agregaremos dos EditText y un button nuestra vista quedaría como se muestra a continuación. A continuación vamos a crear un paquete login, donde crearemos nuestras clases para aplicar nuestro patrón MVP Crearemos una interface llamada LoginMVP, acá vamos a crear tres interfaces una View, Presenter y un Model, recordemos que el presentador será el intermediario entre la vista y el modelo Antes de todo vamos a crear un paquete modelo y crearemos una clase llamada User public class User { private String user; private String nombre; public User(String user, String nombre){ this.user = user; this.nombre = nombre; } } hemos creado estos métodos iniciales para el manejo de nuestro login, lo primero que haremos es implementar nuestra vista, para ello, nos vamos a ir a nuestra actividad, en este caso main_activity e implementamos los métodos establecidos. Nuestra clase activity quedaría de esta forma en los métodos de nuestra actividad, devolveremos los valores de cada EditText y creamos un método donde mostraremos mensajes de la validación de nuestro login. Nuestro siguiente paso es trabajar sobre nuestro presentador, para este caso vamos a crear una clase llamada LoginPresenter el cual implementara la interface Presenter, por lo pronto nuestra clase irá de esta forma, mientras vayamos implementando nuestro modelo vamos agregando el resto de funcionalidad. En nuestro método signIn, primer verificamos que nuestra vista no venga nula, después validamos que nuestro campos no estén vacío, en caso de ser verdadero llamamos nuestro Toast que esta implementando en la vista y pasamos un mensaje indicando que debe ingresar las credenciales. Ahora seguiremos con nuestro modelo, para este caso vamos a crear primero un Repository, que tendrá como funcionalidad acceder ya sea a un webservice o una información de datos locales, para este caso sólo simularemos una validación. Primero creamos una interface llamada LoginRepository, para este ejemplo contendrá un método que verifica las credenciales del usuario que desea iniciar sesión public interface LoginRepository { User getUser(String user, String password);} Después creamos la clase que implementa la cual llamamos LoginRepositoryImpl, en esta clase hemos realizado una validación "dummy", sobre los datos de inicio de sesión Ahora seguiremos con nuestra implementación del modelo, en nuestro modelo haremos la inyección de dependencia de nuestro Repository. Hacemos llamado de nuestro metodo getUser, creado en el repository el cual nos devolvera un null o un objecto de tipo User. Ya teniendo creado nuestro modelo, vamos a hacer la inyección de dependencia sobre el presenter, el cual nos quedaría de esta forma public LoginPresenter(LoginMVP.Model model){ this.model = model; } y sobre el presentador en el método signIn, haremos del método del modelo que válida las credenciales public void signIn() { if(view != null ){ if(TextUtils.isEmpty(view.getUser()) &amp;amp;&amp;amp; TextUtils.isEmpty(view.getPassword())){ view.setMessage("Ingrese usuario y contraseña"); }else{ User user = model.validateLogin(view.getUser(), view.getPassword()); view.setMessage(user == null ? "Usuario no válido" : "Login válido"); } } } A continuación lo que haremos es crear nuestro Modulo, con dagger, y realizamos la implementación de nuestro MVP, para esto vamos a crear una clase llamado LoginModule Después de haber creado nuestro módulo dagger, vamos a registrarlo en nuestra clase Component, ubicada en el paquete config, luego compilamos nuestro proyecto y una vez terminado vamos a nuestra clase App, y agregamos nuestro modulo. Nos saldrá en esto momento que es deprecated, pero esto es debido a que no se esta usando, para esto vamos hacer nuestra inyección sobre nuestra actividad MainActivity. Lo primero que haremos es agregar un objecto de tipo LoginPresenter y haremos la inyección @InjectLoginMVP.Presenter presenter; Sobrescribimos el método onStart y establecemos la vista a nuestro presentador @Overrideprotected void onStart() { super.onStart(); presenter.setView(this);} En nuestro método Oncreate llamamos a nuestro componente e inyectamos nuestra actividad ((App)getApplication()).getComponent().inject(this); en nuestro evento clic listener de nuestro botón hacemos el llamado del método login del presentador buttonSignIn.setOnClickListener(view -&amp;gt; presenter.signIn() ); Compilamos nuestro proyecto y vemos que en nuestra clase App, no tenemos un mensaje de deprecated. Ahora iniciemos nuestro aplicación, y realizamos las diferentes validaciones. En este ejemplo logramos implementar MVP y DAGGER, teniendo en cuenta la finalidad, que el presentador sea nuestro puente entre el módelo y la vista, el modelo se encargará de toda nuestra lógica de negocio, mientras que la vista, manejara los componentes visuales de la aplicación. Descargar fuentes &amp;nbsp;&amp;nbsp;</itunes:summary><itunes:keywords>Android, dagger, JAVA, MVP, TUTORIALES</itunes:keywords></item><item><title>MVP - DAGGER (Configuración dagger en Android)</title><link>http://guelmimundoinfo.blogspot.com/2019/07/mvp-dagger-configuracion-dagger-en.html</link><category>Android</category><category>dagger</category><category>MVP</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Wed, 24 Jul 2019 20:11:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-4404258816479281007</guid><description>&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 728;
google_ad_height = 15;
//&lt;/script&gt;


&lt;script src="https://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1tXEnksvXhgOqzshNqtc1GLK9JVh4u8h2DGaEywsM6S756y2v2aR0hFa_Wk72h0vRzPoxf6ytjaf-hkvgmjVVHJhwJK73kXZm1WDBHx1DzCzG2k5TjxOw-7MoM3ZH57kspXad9VZ7r5s/s1600/android.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="627" data-original-width="1200" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1tXEnksvXhgOqzshNqtc1GLK9JVh4u8h2DGaEywsM6S756y2v2aR0hFa_Wk72h0vRzPoxf6ytjaf-hkvgmjVVHJhwJK73kXZm1WDBHx1DzCzG2k5TjxOw-7MoM3ZH57kspXad9VZ7r5s/s320/android.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
En este post, &amp;nbsp;explicaremos como configurar nuestro primer proyecto usando MVP y Dagger&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creamos un nuevo proyecto con una actividad vacía.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Configuración&amp;nbsp;Dagger&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;Agregaremos a nuestro build.gradle la biblioteca de dagger,&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal; min-height: 19px;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: #202020; color: #587647; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="color: #99a8ba; font-kerning: none;"&gt;implementation &lt;/span&gt;&lt;span style="font-kerning: none;"&gt;'com.google.dagger:dagger:2.19'&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: #202020; color: #587647; font-family: Menlo; font-size: 12px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="color: #99a8ba; font-kerning: none;"&gt;annotationProcessor &lt;/span&gt;&lt;span style="font-kerning: none;"&gt;'com.google.dagger:dagger-compiler:2.9'&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal; min-height: 19px;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal; min-height: 19px;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;En la página oficial podemos encontrar mas información&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal; min-height: 19px;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;https://dagger.dev/android&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;Ahora vamos a crear un nuevo paquete que lo llamaremos config&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;En esta carpeta vamos a crear los tres clases base para nuestra aplicación funcione con dagger, Modulo, componente y nuestra clase App.&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBtv1GS6IVJyb8qW8O6MKCfZmW6n4eeOYiNlnntmvFTyKinKJLyf75xNn36ORn8CZEBS4_HFGu5MMXcTh3NouHHYmsqLAEn7cjv408HJ7JGDYkeA4B8jxAPk63t6I2MSNXHrSrkaJg7E0/s1600/Captura+de+Pantalla+2019-07-24+a+la%2528s%2529+7.57.38+p.+m..png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="238" data-original-width="664" height="114" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBtv1GS6IVJyb8qW8O6MKCfZmW6n4eeOYiNlnntmvFTyKinKJLyf75xNn36ORn8CZEBS4_HFGu5MMXcTh3NouHHYmsqLAEn7cjv408HJ7JGDYkeA4B8jxAPk63t6I2MSNXHrSrkaJg7E0/s320/Captura+de+Pantalla+2019-07-24+a+la%2528s%2529+7.57.38+p.+m..png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="brush: java" style="background-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9pt; text-align: start;"&gt;ApplicationModule.class&lt;/pre&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;span style="font-kerning: none;"&gt;Creamos un modulo, usando la anotación @Module, donde creamos nuestro provides.&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; font-family: Times; font-size: 16px; font-stretch: normal; line-height: normal;"&gt;
&lt;br /&gt;
&lt;pre class="brush: java" style="background-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9pt; text-align: start;"&gt;&lt;span style="color: #bbb529;"&gt;@Module&lt;/span&gt;
&lt;span style="color: #cc7832;"&gt;public class &lt;/span&gt;ApplicationModule {

    &lt;span style="color: #cc7832;"&gt;private &lt;/span&gt;Application &lt;span style="color: #9876aa;"&gt;application&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;
&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    public &lt;/span&gt;&lt;span style="color: #ffc66d;"&gt;ApplicationModule&lt;/span&gt;(Application application){
        &lt;span style="color: #cc7832;"&gt;this&lt;/span&gt;.&lt;span style="color: #9876aa;"&gt;application &lt;/span&gt;= application&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    &lt;/span&gt;}

    &lt;span style="color: #bbb529;"&gt;@Provides&lt;/span&gt;
&lt;span style="color: #bbb529;"&gt;    @Singleton&lt;/span&gt;
&lt;span style="color: #bbb529;"&gt;    &lt;/span&gt;&lt;span style="color: #cc7832;"&gt;public &lt;/span&gt;Context &lt;span style="color: #ffc66d;"&gt;provideContext&lt;/span&gt;(){
        &lt;span style="color: #cc7832;"&gt;return &lt;/span&gt;&lt;span style="color: #9876aa;"&gt;application&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    &lt;/span&gt;}
}&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-kerning: none;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-kerning: none;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9pt; text-align: start;"&gt;&lt;span style="font-kerning: none;"&gt;ApplicationComponent.class&lt;/span&gt;&lt;/pre&gt;
&lt;span style="font-kerning: none;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
En nuestro componente configuramos los métodos que inyectaremos en este caso será nuestra actividad principal, también hacemos el llamado de los módulos creados, y usamos la anotación @Singleton para crear una única instancia.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: java" style="background-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9pt; text-align: start;"&gt;&lt;span style="color: #bbb529;"&gt;@Singleton&lt;/span&gt;&lt;span style="color: #bbb529;"&gt;@Component&lt;/span&gt;(&lt;span style="color: #d0d0ff;"&gt;modules &lt;/span&gt;= {ApplicationModule.&lt;span style="color: #cc7832;"&gt;class&lt;/span&gt;})
&lt;span style="color: #cc7832;"&gt;public interface &lt;/span&gt;ApplicationComponent {
    &lt;span style="color: #cc7832;"&gt;void &lt;/span&gt;&lt;span style="color: #ffc66d;"&gt;inject&lt;/span&gt;(MainActivity mainActivity)&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;
&lt;/span&gt;}&lt;/pre&gt;
&lt;br /&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9pt; text-align: start;"&gt;App.class&lt;/pre&gt;
&lt;br /&gt;
Esta clase se encargará de compilar nuestros módulos.&lt;br /&gt;
&lt;br /&gt;
Antes de configurar nuestro DaggerApplicationComponent, debemos &amp;nbsp;hacer un rebuild a nuestro proyecto, estos es importante para que dagger compile los nuevos módulos que hemos creados.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: java" style="background-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9pt; text-align: start;"&gt;&lt;span style="color: #cc7832;"&gt;public class &lt;/span&gt;App &lt;span style="color: #cc7832;"&gt;extends &lt;/span&gt;Application {

    &lt;span style="color: #bbb529;"&gt;@Inject&lt;/span&gt;&lt;span style="color: #bbb529;"&gt;    &lt;/span&gt;ApplicationComponent &lt;span style="color: #9876aa;"&gt;component&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;
&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    &lt;/span&gt;&lt;span style="color: #bbb529;"&gt;@Override&lt;/span&gt;&lt;span style="color: #bbb529;"&gt;    &lt;/span&gt;&lt;span style="color: #cc7832;"&gt;public void &lt;/span&gt;&lt;span style="color: #ffc66d;"&gt;onCreate&lt;/span&gt;() {
        &lt;span style="color: #cc7832;"&gt;super&lt;/span&gt;.onCreate()&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;        &lt;/span&gt;&lt;span style="color: #9876aa;"&gt;
component &lt;/span&gt;= DaggerApplicationComponent.&lt;span style="font-style: italic;"&gt;builder&lt;/span&gt;()
                .build()&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;
&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    &lt;/span&gt;}
    &lt;span style="color: #cc7832;"&gt;public &lt;/span&gt;ApplicationComponent &lt;span style="color: #ffc66d;"&gt;getComponent&lt;/span&gt;(){
        &lt;span style="color: #cc7832;"&gt;return &lt;/span&gt;&lt;span style="color: #9876aa;"&gt;component&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;;&lt;/span&gt;&lt;span style="color: #cc7832;"&gt;    &lt;/span&gt;}

}&lt;/pre&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9pt; text-align: start;"&gt;&lt;/pre&gt;
&lt;br /&gt;
Volvemos a compilar nuestro proyecto y debe ir todo correcto hasta el momento.&lt;br /&gt;
&lt;br /&gt;
Importante: Para que nuestro proyecto reconozca la configuración de nuestro dagger debemos ir a nuestro archivo de AndroidManifest dentro de la etiqueta &amp;nbsp;agregamos&amp;nbsp;&lt;span style="background-color: #2b2b2b; color: #9876aa; font-family: &amp;quot;menlo&amp;quot;; font-size: 9pt;"&gt;android&lt;/span&gt;&lt;span style="background-color: #2b2b2b; color: #bababa; font-family: &amp;quot;menlo&amp;quot;; font-size: 9pt;"&gt;:name=&lt;/span&gt;&lt;br /&gt;
y referenciamos nuestra clase App&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Menlo; font-size: 9pt; text-align: start;"&gt;&lt;span style="color: #9876aa;"&gt;android&lt;/span&gt;&lt;span style="color: #bababa;"&gt;:name=&lt;/span&gt;&lt;span style="color: #6a8759;"&gt;".config.App"&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style="color: #e8bf6a;"&gt;        &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #e8bf6a;"&gt;    &lt;/span&gt;&lt;br /&gt;
Compilamos y nuestro proyecto deber compilar sin errores y podemos correr la aplicación sin problema.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style="color: #e8bf6a;"&gt;    &lt;/span&gt;&lt;br /&gt;
En nuestro próximo tutorial haremos &lt;a href="https://www.codigosdelaweb.com/2019/08/mvp-dagger-login.html"&gt;login &lt;/a&gt;usando MVP&lt;br /&gt;
&lt;br /&gt;
Descargar fuentes&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&amp;nbsp;&amp;nbsp;&lt;a href="https://www.dropbox.com/s/zqvmzteotet54b4/MVPConfig.zip?dl=0" target="_blank"&gt;&lt;img border="0" data-original-height="128" data-original-width="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ77mfVdm0nDHWkT8uqABHtU7tbFdm_ZmRndiIMMJWji__TQF6uaddczP89liXzxXZ7frMQ6SzuQ_eOv2Kz1LWm9XHBXPEuU9SXU97xAVS_kkb35G6GlqcR9pOoz8ZF6zP2MJ9VFajIDw/s1600/iconfinder_ui_ux_download_4631317.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1tXEnksvXhgOqzshNqtc1GLK9JVh4u8h2DGaEywsM6S756y2v2aR0hFa_Wk72h0vRzPoxf6ytjaf-hkvgmjVVHJhwJK73kXZm1WDBHx1DzCzG2k5TjxOw-7MoM3ZH57kspXad9VZ7r5s/s72-c/android.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="-1" type="application/json" url="https://www.dropbox.com/s/zqvmzteotet54b4/MVPConfig.zip?dl=0"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>En este post, &amp;nbsp;explicaremos como configurar nuestro primer proyecto usando MVP y Dagger Creamos un nuevo proyecto con una actividad vacía. Configuración&amp;nbsp;Dagger Agregaremos a nuestro build.gradle la biblioteca de dagger, implementation 'com.google.dagger:dagger:2.19' annotationProcessor 'com.google.dagger:dagger-compiler:2.9' En la página oficial podemos encontrar mas información https://dagger.dev/android Ahora vamos a crear un nuevo paquete que lo llamaremos config En esta carpeta vamos a crear los tres clases base para nuestra aplicación funcione con dagger, Modulo, componente y nuestra clase App. ApplicationModule.class Creamos un modulo, usando la anotación @Module, donde creamos nuestro provides. @Module public class ApplicationModule { private Application application; public ApplicationModule(Application application){ this.application = application; } @Provides @Singleton public Context provideContext(){ return application; } } ApplicationComponent.class En nuestro componente configuramos los métodos que inyectaremos en este caso será nuestra actividad principal, también hacemos el llamado de los módulos creados, y usamos la anotación @Singleton para crear una única instancia. @Singleton@Component(modules = {ApplicationModule.class}) public interface ApplicationComponent { void inject(MainActivity mainActivity); } App.class Esta clase se encargará de compilar nuestros módulos. Antes de configurar nuestro DaggerApplicationComponent, debemos &amp;nbsp;hacer un rebuild a nuestro proyecto, estos es importante para que dagger compile los nuevos módulos que hemos creados. public class App extends Application { @Inject ApplicationComponent component; @Override public void onCreate() { super.onCreate(); component = DaggerApplicationComponent.builder() .build(); } public ApplicationComponent getComponent(){ return component; } } Volvemos a compilar nuestro proyecto y debe ir todo correcto hasta el momento. Importante: Para que nuestro proyecto reconozca la configuración de nuestro dagger debemos ir a nuestro archivo de AndroidManifest dentro de la etiqueta &amp;nbsp;agregamos&amp;nbsp;android:name= y referenciamos nuestra clase App android:name=".config.App" Compilamos y nuestro proyecto deber compilar sin errores y podemos correr la aplicación sin problema. En nuestro próximo tutorial haremos login usando MVP Descargar fuentes &amp;nbsp;&amp;nbsp;</itunes:subtitle><itunes:author>noreply@blogger.com (Guelmi)</itunes:author><itunes:summary>En este post, &amp;nbsp;explicaremos como configurar nuestro primer proyecto usando MVP y Dagger Creamos un nuevo proyecto con una actividad vacía. Configuración&amp;nbsp;Dagger Agregaremos a nuestro build.gradle la biblioteca de dagger, implementation 'com.google.dagger:dagger:2.19' annotationProcessor 'com.google.dagger:dagger-compiler:2.9' En la página oficial podemos encontrar mas información https://dagger.dev/android Ahora vamos a crear un nuevo paquete que lo llamaremos config En esta carpeta vamos a crear los tres clases base para nuestra aplicación funcione con dagger, Modulo, componente y nuestra clase App. ApplicationModule.class Creamos un modulo, usando la anotación @Module, donde creamos nuestro provides. @Module public class ApplicationModule { private Application application; public ApplicationModule(Application application){ this.application = application; } @Provides @Singleton public Context provideContext(){ return application; } } ApplicationComponent.class En nuestro componente configuramos los métodos que inyectaremos en este caso será nuestra actividad principal, también hacemos el llamado de los módulos creados, y usamos la anotación @Singleton para crear una única instancia. @Singleton@Component(modules = {ApplicationModule.class}) public interface ApplicationComponent { void inject(MainActivity mainActivity); } App.class Esta clase se encargará de compilar nuestros módulos. Antes de configurar nuestro DaggerApplicationComponent, debemos &amp;nbsp;hacer un rebuild a nuestro proyecto, estos es importante para que dagger compile los nuevos módulos que hemos creados. public class App extends Application { @Inject ApplicationComponent component; @Override public void onCreate() { super.onCreate(); component = DaggerApplicationComponent.builder() .build(); } public ApplicationComponent getComponent(){ return component; } } Volvemos a compilar nuestro proyecto y debe ir todo correcto hasta el momento. Importante: Para que nuestro proyecto reconozca la configuración de nuestro dagger debemos ir a nuestro archivo de AndroidManifest dentro de la etiqueta &amp;nbsp;agregamos&amp;nbsp;android:name= y referenciamos nuestra clase App android:name=".config.App" Compilamos y nuestro proyecto deber compilar sin errores y podemos correr la aplicación sin problema. En nuestro próximo tutorial haremos login usando MVP Descargar fuentes &amp;nbsp;&amp;nbsp;</itunes:summary><itunes:keywords>Android, dagger, MVP</itunes:keywords></item><item><title>MVP (Modelo Vista Presentador)</title><link>http://guelmimundoinfo.blogspot.com/2019/07/mvp-modelo-vista-presentador.html</link><category>MVP</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Wed, 24 Jul 2019 19:14:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-3598705198440198458</guid><description>&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 728;
google_ad_height = 15;
//&lt;/script&gt;


&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUD5mUQT5RfMD1gdk6iETdl5n5DYE7F56xa_Z6cwzbLEJv4XovfwsBj3YhHfHUqNbop08HJdrPbMznKeFG_PM7dGc_FIBzQOejl0KMhYjSeJZ_dmG0Hdbos5IgwC3548_sEPl2HnrKv-o/s1600/1*p2JvbgEir0BusDiiVHMvIA.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="682" data-original-width="778" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUD5mUQT5RfMD1gdk6iETdl5n5DYE7F56xa_Z6cwzbLEJv4XovfwsBj3YhHfHUqNbop08HJdrPbMznKeFG_PM7dGc_FIBzQOejl0KMhYjSeJZ_dmG0Hdbos5IgwC3548_sEPl2HnrKv-o/s320/1*p2JvbgEir0BusDiiVHMvIA.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;span style="font-size: xx-small;"&gt;imagen tomada de android.jlelse.eu&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;MVP&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Es una derivación del modelo MVC, se usa principalmente para crear interfaces de usuarios. En MVP el presentador asume la funcionalidad "El puente". MVP aboga separar la lógica de negocio y la persistencia de la actividad.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Modelo&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
El modelo sería la puerta &amp;nbsp;de entrada a la capa de dominio o lógica de negocio.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Vista&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Generalmente esta implementada por una actividad, contendrá la referencia al presentador. La vista hará la llamada al presentador.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Presentador&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
El presentador es el intermediario entre la vista y el modelo. Recupera datos del modelo y los devuelve a la vista, pero a diferencia de MVC, también &amp;nbsp;decide que sucede cuando interactúa con la vista.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.codigosdelaweb.com/2019/07/mvp-dagger-configuracion-dagger-en.html"&gt;Android MVP y DAGGER&lt;/a&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUD5mUQT5RfMD1gdk6iETdl5n5DYE7F56xa_Z6cwzbLEJv4XovfwsBj3YhHfHUqNbop08HJdrPbMznKeFG_PM7dGc_FIBzQOejl0KMhYjSeJZ_dmG0Hdbos5IgwC3548_sEPl2HnrKv-o/s72-c/1*p2JvbgEir0BusDiiVHMvIA.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Configuración de Pools de Conexiones JDBC en GlassFish</title><link>http://guelmimundoinfo.blogspot.com/2015/11/configuracion-de-pools-de-conexiones.html</link><category>CODIGOS</category><category>GLASSFISH</category><category>JAVA</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Sun, 8 Nov 2015 02:18:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-3271646414773894794</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgATB_kpd4jb4VB9w5TWJEzRhC1a9D0lzYryJuEarOFEejBYZxzIWncUm_H7-GfdVR27M6YdTWgdo7_R9PQBOGaZYz2K1VYDyX5korDvJhr5TjPXGA3BFmAXFDpH1bghckuKp1LwflPnF0/s1600/Glassfish01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgATB_kpd4jb4VB9w5TWJEzRhC1a9D0lzYryJuEarOFEejBYZxzIWncUm_H7-GfdVR27M6YdTWgdo7_R9PQBOGaZYz2K1VYDyX5korDvJhr5TjPXGA3BFmAXFDpH1bghckuKp1LwflPnF0/s1600/Glassfish01.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
En este post explicaremos como configurar un pool de conexiones y un recursos JDBC para luego ser usados en una conexión por medio de java, para este ejemplo usaremos glassfish, para ingresar a este apartado ingresamos en la ruta de nuestro servidor por medio del puerto 4848 para este ejemplo ingresamos a http://locahost:4848/&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
Al ingresar se nos carga un menú como se muestra en la imagen, y nos dirigimos a la opción JDBC e ingresamos primero a la carpeta Pools de Conexiones JDBC y damos clic en nuevo, estableceremos un nombre, el tipo de Pool y a que base de datos nos conectaremos &amp;nbsp;como mostramos en la imagen&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGOTolm7BjWLaLCyR0rhBsD1jSNjS3DSpt-nJoxElAlNWC8DLGNISqxnECID7WBasNpxDBtAubN9X5sDZEH9j6-B2f4r9nPdb0GtNMe4q4QkkBokcxDT8tMqDvR_lgdQ4tu3RoqViFysY/s1600/Glassfish3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGOTolm7BjWLaLCyR0rhBsD1jSNjS3DSpt-nJoxElAlNWC8DLGNISqxnECID7WBasNpxDBtAubN9X5sDZEH9j6-B2f4r9nPdb0GtNMe4q4QkkBokcxDT8tMqDvR_lgdQ4tu3RoqViFysY/s320/Glassfish3.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
Luego de la configuración general damos clic en el botón siguiente y configuraremos las propiedades de nuestro pool, primero establecemos el Usuario de nuestra base de datos, luego el servidor donde esta nuestra base de datos y luego la URL de conexión a la base de datos y damos clic en finalizar:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNEW9Beil6eaimzW3J86hhQx61ue3KoYIXvVnh0BBdLKJJFd7JGKtWyLLhq954BGVzPTGGpQm2tALTvkHCWGD7buUFx7LZTwfYZdAdPZ2ZkhateH6D6zGh9bBP8StU-Xd-sIpAXW0ALyk/s1600/Glassfish5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="61" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNEW9Beil6eaimzW3J86hhQx61ue3KoYIXvVnh0BBdLKJJFd7JGKtWyLLhq954BGVzPTGGpQm2tALTvkHCWGD7buUFx7LZTwfYZdAdPZ2ZkhateH6D6zGh9bBP8StU-Xd-sIpAXW0ALyk/s320/Glassfish5.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0y9jklb4s64u-aJ_4CyLoNfdzkpl_0IvPcqaiFBEYdorhsHtfKtjm2C4Szfa__G_APpfaRaCMGIppAprxv_YJipLhNEvUEacwcNZ5WUoTGs1uo-8tVqb4G-ucNWCMQcX8MlPOmjp3eQo/s1600/Glassfish6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="31" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0y9jklb4s64u-aJ_4CyLoNfdzkpl_0IvPcqaiFBEYdorhsHtfKtjm2C4Szfa__G_APpfaRaCMGIppAprxv_YJipLhNEvUEacwcNZ5WUoTGs1uo-8tVqb4G-ucNWCMQcX8MlPOmjp3eQo/s320/Glassfish6.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
Ahora configuraremos nuestro RECURSOS JDBC, para ellos nos vamos a la opción JDBC y damos clic en la carpeta Recursos de JDBC y damos clic en nuevo, luego colocamos el nombre de nuestro JNDI y seleccionamos el Pool que acabamos de crear y damos clic en aceptar&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWji7k0WC2o4GVOwbYIvJCfxtDPO4ISbZvFNmZ80SfDs9U9GEguGppX35hUajIVW7u2F9u4V5VYV8nJAYQ_0_LN514uu-nXdo51AoaXvZBStfKftOiKGHVdkzyrxTh2YGv7wlzlC6sDmg/s1600/Glassfish8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="70" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWji7k0WC2o4GVOwbYIvJCfxtDPO4ISbZvFNmZ80SfDs9U9GEguGppX35hUajIVW7u2F9u4V5VYV8nJAYQ_0_LN514uu-nXdo51AoaXvZBStfKftOiKGHVdkzyrxTh2YGv7wlzlC6sDmg/s320/Glassfish8.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
Con estos pasos configuramos nuestro JDNI, el cual podemos usar en nuestros aplicativos, así como lo muestra la imagen :&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsF7mXlg6J4jAqNDj1Bnh5-Z-FTWlK6JK1TAjirt1i-bCMeJbylPsJ4-tb27Wgr3IGSsnmtnEQtfCVp3L0kc2E-DF0iGRsa1daeTiJr-tnEkBI01FIAcX4XT__9F3czzOXNizURBJYuHY/s1600/Glassfish9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="62" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsF7mXlg6J4jAqNDj1Bnh5-Z-FTWlK6JK1TAjirt1i-bCMeJbylPsJ4-tb27Wgr3IGSsnmtnEQtfCVp3L0kc2E-DF0iGRsa1daeTiJr-tnEkBI01FIAcX4XT__9F3czzOXNizURBJYuHY/s320/Glassfish9.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgATB_kpd4jb4VB9w5TWJEzRhC1a9D0lzYryJuEarOFEejBYZxzIWncUm_H7-GfdVR27M6YdTWgdo7_R9PQBOGaZYz2K1VYDyX5korDvJhr5TjPXGA3BFmAXFDpH1bghckuKp1LwflPnF0/s72-c/Glassfish01.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>FULL CALENDAR</title><link>http://guelmimundoinfo.blogspot.com/2015/11/full-calendar.html</link><category>FULLCALENDAR</category><category>JAVA</category><category>JAVASCRIPT</category><category>JEE</category><category>JQUERY</category><category>JSF</category><category>NETBEANS</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Sat, 7 Nov 2015 10:25:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-1715352404179668760</guid><description>&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAlNX4Tvzp_xKufdjUmjF87tD8L3hquVO10BymTzY1rG7aKojseLURTV7medr1t7do9w7uCU0z6t8hKLwMV0AmYqz-DPboo4dDlw0HgP0lgT9H9srM5eWQFfU6A2vryG8CAttLvWpRXdw/s1600/fullcalendar.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAlNX4Tvzp_xKufdjUmjF87tD8L3hquVO10BymTzY1rG7aKojseLURTV7medr1t7do9w7uCU0z6t8hKLwMV0AmYqz-DPboo4dDlw0HgP0lgT9H9srM5eWQFfU6A2vryG8CAttLvWpRXdw/s320/fullcalendar.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
FullCalendar es un plugin JQuery, para visualizar eventos en un calendario.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Hoy les traigo un ejemplo práctico usando JSF y FullCalendar, Crearemos una funcionalidad donde estableceremos los días feriados de un mes, para esto nos conectaremos a una base de datos y obtendremos los días feriados de esta tabla.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Para este ejemplo usaremos NetBeans como IDE, creamos una aplicación Web.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX6hNoqndty3MYK1jPvE-reX7TtyVU9MxqUcOQl2UKnnGSZvsbIOgwLLip8OV7Ffkip0mBJZlMOeu7HUrKTgkxjaswSOrSuUl2PO9Jysiwx8TPF4TLDfovxN8EshA4TJMZVYWAgekEhHA/s1600/netbeans1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX6hNoqndty3MYK1jPvE-reX7TtyVU9MxqUcOQl2UKnnGSZvsbIOgwLLip8OV7Ffkip0mBJZlMOeu7HUrKTgkxjaswSOrSuUl2PO9Jysiwx8TPF4TLDfovxN8EshA4TJMZVYWAgekEhHA/s320/netbeans1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Luego nos descargamos el plugin de JQuery en &lt;a href="http://fullcalendar.io/download/" target="_blank"&gt;http://fullcalendar.io/download/&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Para este caso en nuestro proyecto crearemos una carpeta resources donde copiaremos el código de full calendar :&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivkURHAsdtk9EZN8VNqFuzrEycL95ryXyYvNvIy6r7X2g4EF_zW3OwdMw-iUaUEEh2FCeLkp2KL-cdeWsB0O3lKckBCkTfVO2j6vBxyDbYqZe-6y0vGWaD_Rc9CpBCv1PZLIBvYyFeq1c/s1600/netbeans2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivkURHAsdtk9EZN8VNqFuzrEycL95ryXyYvNvIy6r7X2g4EF_zW3OwdMw-iUaUEEh2FCeLkp2KL-cdeWsB0O3lKckBCkTfVO2j6vBxyDbYqZe-6y0vGWaD_Rc9CpBCv1PZLIBvYyFeq1c/s320/netbeans2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
El siguiente paso es importar las clases necesarias para visualizar nuestro calendario&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="brush: xhtml"&gt;&amp;lt;h:heady &amp;gt;
        &amp;lt;title &amp;gt;Full Calendar&amp;lt;/title &amp;gt;
        &amp;lt;link href='resources/calendario/fullcalendar.css' rel='stylesheet' /&amp;gt;
        &amp;lt;link href='resources/calendario/fullcalendar.print.css' rel='stylesheet' media='print' / &amp;gt;
        &amp;lt;h:outputScript library="calendario/lib"  name="jquery.min.js" /&amp;gt;
        &amp;lt;h:outputScript library="calendario/lib"  name="moment.min.js" /&amp;gt;
        
        &amp;lt;h:outputScript library="calendario"  name="fullcalendar.min.js" / &amp;gt;
        &amp;lt;h:outputScript library="calendario"  name="lang-all.js" / &amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
Estableceremos un poco de diseño para nuestro calendario
&lt;br /&gt;
&lt;pre class="brush: css"&gt;&amp;lt;style&amp;gt;
            #calendar {
                max-width: 900px;
                margin: 0 auto;
            }
            .fc-sat, .fc-sun {
                background-color: #FFEBDA;
                color: red;
            }
            .cuerpoBody {
                color: black;
            }
            .fc-unthemed .fc-today {
                background: #0088AD;
                color:white;
            }
            .fc-event {
                border: red;
                background-color: red;
                font-size: 12px;
            }
        &amp;lt;/style&amp;gt;
&lt;/pre&gt;
Ahora configuramos nuestro Calendario

&lt;br /&gt;
&lt;pre class="brush: js"&gt;&amp;lt;script&amp;gt;
            $(document).ready(function () {
                var currentLangCode = 'es';
                var hoy = new Date();
  var dd = hoy.getDate();
  var mm = hoy.getMonth()+1; //hoy es 0!
  var yyyy = hoy.getFullYear();

  hoy = yyyy+'-'+mm+'-'+dd;
                $('#calendar').fullCalendar({
                    header: {
    left: 'prev,next today',
    center: 'title',
    right: 'month'
   },
   defaultDate: hoy,
   lang: currentLangCode,
   selectable: true,
   selectHelper: true,
                        editable: true,
   eventLimit: true,
   events: "servlet/CalendarioDao"
                
                });

            });

        &amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
En esta primer parte establecemos la fecha actual: &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
var currentLangCode = 'es'; &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
var hoy = new Date(); &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
var dd = hoy.getDate();&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
var mm = hoy.getMonth()+1; //hoy es 0! &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
var yyyy = hoy.getFullYear(); &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
y al momento de cargar nuestro calendario tome por defecto la fecha actual en la propiedad &lt;i&gt;&lt;b&gt;&lt;span style="color: #073763;"&gt;defaultDate&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;, la propiedad &lt;i&gt;&lt;b&gt;&lt;span style="color: #073763;"&gt;events &lt;/span&gt;&lt;/b&gt;&lt;/i&gt;no va permitir hacer un llamado al servlet, el cual consulta a la base de datos y establece los días feriados a nuestro calendario.

Servlet&lt;span style="color: #38761d;"&gt; &lt;b&gt;Calendario/Dao&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="color: #38761d;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre class="brush: java"&gt;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                List&lt;diasferiados&gt; lst = new ArrayList&amp;lt;&amp;gt;();
                List&lt;diasferiados&gt; lst2 = DiasFeriados.getFeriados();
                for (DiasFeriados f : lst2) {
                    DiasFeriados df = new DiasFeriados();
                    String m = (String.valueOf(f.getMes()).length() == 1) ? "0" : "";
                    String d = (String.valueOf(f.getDia()).length() == 1) ? "0" : "";
                    df.setStart(f.getAnnio() + "-" + m + f.getMes() + "-" + d + f.getDia());
                    df.setEnd(f.getAnnio() + "-" + m + f.getMes() + "-" + d + f.getDia());
                    df.setTitle(f.getTitulo());
                    df.setAllDay(false);
                    lst.add(df);
                }

                Gson gson = new Gson();
                String eventoJSON = gson.toJson(lst);
                response.setContentType("application/json");
                response.setCharacterEncoding("UTF-8");
                PrintWriter out = response.getWriter();
                out.write(eventoJSON);
            
    }
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
Para la respuesta de nuestro Servlet usaremos JSON, y usaremos la Biblioteca Gson para la generación de este.
Recorremos los registros que nos devuelve el método getFeriados() y seteamos los campos para establecer los días feriados en nuestro campos.

Método getFeriados
&lt;/div&gt;
&lt;pre class="brush: java"&gt;public static List&lt;diasferiados&gt; getFeriados() {
        List&lt;diasferiados&gt; lista = new ArrayList&amp;lt;&amp;gt;();
        Connection con = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        try {
            con = DBConnector.getInstance().getConnection();
            String query = "select dia,mes,annio,titulo "
                    + "from dias_feriados "
                    + "where estado ='A'";
            ps = con.prepareStatement(query);
            rs = ps.executeQuery();
            while (rs.next()) {
                DiasFeriados df = new DiasFeriados();
                df.setDia(rs.getInt("DIA"));
                df.setMes(rs.getInt("MES"));
                df.setAnnio(rs.getInt("ANNIO"));
                df.setTitulo(rs.getString("TITULO"));
                lista.add(df);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (ps != null) {
                    ps.close();
                }
                if (con != null) {
                    con.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return lista;
    }
&lt;/pre&gt;
por último hacemos el llamado de nuestro calendario
&lt;br /&gt;
&lt;pre class="brush: xhtml"&gt;&amp;lt;div id="calendar" style="margin-top: 5%"&amp;gt;&amp;lt;/div&amp;gt;       &amp;nbsp;&lt;/pre&gt;
&lt;a href="https://mega.nz/#!SBAF3ZAT!Po3r3xs6J6ucgwpRkllmENXNtkdccEpVlK_kB6e3ZRE" target="_blank"&gt;&lt;i class="fa fa-cloud-download"&gt;&lt;/i&gt; Código Fuente&lt;/a&gt;&lt;br /&gt;
clave: www.codigosdelaweb.com</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAlNX4Tvzp_xKufdjUmjF87tD8L3hquVO10BymTzY1rG7aKojseLURTV7medr1t7do9w7uCU0z6t8hKLwMV0AmYqz-DPboo4dDlw0HgP0lgT9H9srM5eWQFfU6A2vryG8CAttLvWpRXdw/s72-c/fullcalendar.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Clase Conexion Php - Mysql</title><link>http://guelmimundoinfo.blogspot.com/2011/07/clase-conexion-php-mysql.html</link><category>CODIGOS</category><category>MYSQL</category><category>PHP</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Fri, 22 Jul 2011 23:34:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-6275840708052655398</guid><description>Este Código consiste en el diseño o creación de una clase la cual nos permitira conectarnos a una bd de mysql utilizando sus metodos nativos,por medio de php&lt;br&gt;
&lt;br&gt;
&lt;b&gt;&lt;i&gt;CREACION&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
&lt;!--?php&lt;/p--&gt;&lt;br&gt;
&lt;br&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;b&gt;MySQL&lt;/b&gt; {&lt;br&gt;
&amp;nbsp; &lt;span class="Apple-style-span" style="color: blue;"&gt;public&lt;/span&gt; $conexion;&lt;br&gt;
&amp;nbsp; &lt;span class="Apple-style-span" style="color: blue;"&gt;public&lt;/span&gt; &amp;nbsp;$sql;&lt;br&gt;
&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt; public&lt;/span&gt;&lt;/span&gt; function &lt;b&gt;MySQL&lt;/b&gt;(){&lt;br&gt;
&amp;nbsp; &lt;span class="Apple-style-span" style="color: blue;"&gt;if&lt;/span&gt;(!isset($this-&amp;gt;conexion)){&lt;br&gt;
&lt;span class="Apple-style-span" style="color: lime;"&gt;/* Aca establecemos la conexion con el servidor*/&lt;/span&gt;&lt;br&gt;
&amp;nbsp; &amp;nbsp; $this-&amp;gt;conexion = (mysql_connect("localhost","usario","clave")) or die(mysql_error());&lt;br&gt;
&amp;nbsp; mysql_query("SET NAMES 'utf8'");&lt;br&gt;
&lt;span class="Apple-style-span" style="color: lime;"&gt;/*Aqui seleccionamos la base de datos*/&lt;/span&gt;&lt;br&gt;
&amp;nbsp; mysql_select_db("mydb",$this-&amp;gt;conexion) or die(mysql_error());&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp; &amp;nbsp; }&lt;br&gt;
}&lt;br&gt;
?&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;&lt;i&gt;IMPLEMENTACION&lt;/i&gt;&lt;/b&gt;&lt;br&gt;
En nuestro clase o archivo en php simplemente instanciamos el objeto&lt;br&gt;
$db = new MySQL();&lt;br&gt;
recuerden que realizarle un&amp;nbsp;require_once('MySQL.php'); a nuestra clase&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;script async="" type="text/javascript" src="https://pagead2.googlesyndication.com/pub-config/ca-pub-0061739434879555.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;
&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 728;
google_ad_height = 15;
//--&gt;
&lt;/script&gt; &lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;ins id="aswift_0_expand" style="display:inline-table;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"&gt;&lt;ins id="aswift_0_anchor" style="display:block;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"&gt;&lt;iframe width="728" height="15" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Cron Job   Cpanel</title><link>http://guelmimundoinfo.blogspot.com/2010/05/cron-job-cpanel.html</link><category>PHP</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Sat, 29 May 2010 20:49:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-7271430822554741808</guid><description>&lt;div style="text-align: justify;"&gt;En estos dias me toco realizar un script, y este debía ejecutarse automaticamente y encontre en la web que cron job trabaja esto en linux, y como lo estaba trabajando sobre cpanel, les quiero mostrar el resultado espero les sea útil&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Después de haber ingresado en cpanel nos vamos al final donde dice avanzado&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLLt8c4DeadzKo3J8k0IRjLnR9W8e9XhjFxDFspG5J0SGt0x7pWMZpuJG8MDsgHzP16yJyp1AleutnbmgSJqfPktsJAoPIvLJLf4fwvlIgLPEYTL8jZ1hypvhhy7RsbYiCByXCWaKV4uY/s1600/cpanel1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" gu="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLLt8c4DeadzKo3J8k0IRjLnR9W8e9XhjFxDFspG5J0SGt0x7pWMZpuJG8MDsgHzP16yJyp1AleutnbmgSJqfPktsJAoPIvLJLf4fwvlIgLPEYTL8jZ1hypvhhy7RsbYiCByXCWaKV4uY/s320/cpanel1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Ahora nos aparece lo siguiente, si no tenemos mucho conocimiento sobre comando linux , escogemos la opcion estándar en caso contrario escogemos la otra ocasion (para este ejemplo eligiremos estándar)&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div align="center"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmhpJpe6KcX8GpfAPCbqNa6i3Cw4XaFo7UI-Qwqr7VPWf3Yk7LtwAk8Vha9TUeaEZTVV0DfaIzHg7K-4_CbtJDfkF6Z5ZXg9ce5DzxY2riyzfJlE1hx7GLzcxQRk_YyYw3FxLxxm2mb_c/s1600/cpanel2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" gu="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmhpJpe6KcX8GpfAPCbqNa6i3Cw4XaFo7UI-Qwqr7VPWf3Yk7LtwAk8Vha9TUeaEZTVV0DfaIzHg7K-4_CbtJDfkF6Z5ZXg9ce5DzxY2riyzfJlE1hx7GLzcxQRk_YyYw3FxLxxm2mb_c/s320/cpanel2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;Ahora simplemente en el campo correo colocamos un correo donde llegará la notificacion que se ha ejecutado el script (ten en cuenta que si se ejecuta muy a menudo se llenara la bandeja de entrada de tu correo), Luego colocamos el siguiente comando&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;"wget http://nombredominio/rutascript/miscript.php &amp;gt; /dev/null " &lt;/strong&gt;(sin las comillas) y eligen cada cuanto quiere que se ejecute el script&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgortKikrezNW3yGLkNuXLkSrw9EVX4Qrdk5wp8T4Vl1otUvD5oOJZR9160uumVz8cujG-yLt3Q5kZXCFXbQi4kO3BsaRKjpzrym5sJ19SMUWwwmqarPX1kjpUxfiiHfOSvEBRaabS7Lrg/s1600/cpanel3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" gu="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgortKikrezNW3yGLkNuXLkSrw9EVX4Qrdk5wp8T4Vl1otUvD5oOJZR9160uumVz8cujG-yLt3Q5kZXCFXbQi4kO3BsaRKjpzrym5sJ19SMUWwwmqarPX1kjpUxfiiHfOSvEBRaabS7Lrg/s320/cpanel3.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLLt8c4DeadzKo3J8k0IRjLnR9W8e9XhjFxDFspG5J0SGt0x7pWMZpuJG8MDsgHzP16yJyp1AleutnbmgSJqfPktsJAoPIvLJLf4fwvlIgLPEYTL8jZ1hypvhhy7RsbYiCByXCWaKV4uY/s72-c/cpanel1.JPG" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Programación Java Server con J2EE Edición 1.3, S.Allamaraju (Anaya
Multimedia)</title><link>http://guelmimundoinfo.blogspot.com/2010/05/programacion-java-server-con-j2ee.html</link><category>JAVA</category><category>TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Mon, 10 May 2010 16:05:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-5228016585748306099</guid><description>&lt;script async="" type="text/javascript" src="https://pagead2.googlesyndication.com/pub-config/ca-pub-0061739434879555.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;
&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 728;
google_ad_height = 15;
//--&gt;
&lt;/script&gt; &lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;ins id="aswift_0_expand" style="display:inline-table;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"&gt;&lt;ins id="aswift_0_anchor" style="display:block;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"&gt;&lt;iframe width="728" height="15" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br&gt;
&lt;br&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6-Qimcp7onGSoaG9VgNLePNjxWd5hqW5tEJ6hKAnHsRSq2VbyztbQY-rhqb1UJYWUrbu_O_csr7urF-uVB2MZAg7EVoQoT_-JH2fz3xtCzvH9q5ZPNmZ934hn0IRmC0lKA-buse0l_mx/s1600/cover.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6-Qimcp7onGSoaG9VgNLePNjxWd5hqW5tEJ6hKAnHsRSq2VbyztbQY-rhqb1UJYWUrbu_O_csr7urF-uVB2MZAg7EVoQoT_-JH2fz3xtCzvH9q5ZPNmZ934hn0IRmC0lKA-buse0l_mx/s320/cover.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;Descripción&lt;/b&gt;&lt;br&gt;
&lt;div style="text-align: justify;"&gt;Aprende Java server y JSP como los profesionales&lt;/div&gt;&lt;div style="text-align: justify;"&gt;El lanzamiento de la versión 1.3 de la Plataforma Java 2, Enterprise Edition (J2EE) rep la evolución de la plataforma de desarrollo a una especificación más madura y sofisticada. Los servlets 2.3 obtienen eventos y filtrado; JavaServer Pages 1.2 obtiene una nueva sintaxis XML y mejoras en los mecanismos de adaptación de designador; y Enterprise JavaBeans 2.0 cuenta con algunos cambios significativos en su modelo de persistencia gestionado por el contenedor, así como un reforzamiento en el procesamiento asíncrono con nuevos beans controlados por mensaje. Esto libro muestra cómo diseñar y construir aplicaciones J2EE con n-niveles seguros y ajustables, utilizando para ello JSP y servlets para el nivel de interacción con la web, y EJB para programar la lógica de la empresa. También abarca la Arquitectura de Conectores J2EE que le permite integrar fácilmente sus aplicaciones J2EE a los sistemas de información de la empresa. Está dirigido a programadores profesionales de Java que deseen emplear este lenguaje como plataforma para sus aplicaciones distribuidas de empresa. Proporciona una guía exhaustiva para los API de J2EE implementados por servidores de aplicación con licencia J2EE.&lt;/div&gt;&lt;br&gt;
&lt;div style="text-align: justify;"&gt;&lt;b&gt;Índice Temático&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 1:&lt;/b&gt; Plataforma J2EE&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 2: &lt;/b&gt;Servicios de directorio y JNDI&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 3: &lt;/b&gt;Procesamiento distribuido con RMI&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 4:&lt;/b&gt; Programación de bases de datos con JDBC&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 5:&lt;/b&gt; Introducción a los contenedores Web&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 6: &lt;/b&gt;Programación de servlets&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 7: &lt;/b&gt;Sesiones de servlets, contexto y colaboración&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 8:&lt;/b&gt; Filtros para aplicaciones Web&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 9: &lt;/b&gt;Despliegue Web, autentificación y empaquetado&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 10:&lt;/b&gt; Fundamentos y arquitectura de JSP&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 11:&lt;/b&gt; Extensiones de etiqueta de JSP&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 12: &lt;/b&gt;Escribir aplicaciones JSP con bibliotecas de etiquetas&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 13: &lt;/b&gt;JavaMail&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 14: &lt;/b&gt;Arquitectura y diseño EJB&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 15:&lt;/b&gt; Beans de sesión y lógica de empresa&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 16:&lt;/b&gt; Beans de entidad y persistencia&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 17:&lt;/b&gt; Servicios de contenedor EJB&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 18:&lt;/b&gt; Roles de desarrollo y de implementación&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 19: &lt;/b&gt;JMS y beans controlados por mensaje&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 20:&lt;/b&gt; La arquitectura de conectores J2EE&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 21:&lt;/b&gt; Consideraciones de diseño para aplicaciones J2EE&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 22: &lt;/b&gt;J2EE y servicios Web&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 23:&lt;/b&gt; Elegir una implementación J2EE&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 24: &lt;/b&gt;Empaquetado e implementación J2EE&lt;/div&gt;&lt;br&gt;
&lt;div style="color: blue;"&gt;Descargar :&lt;a href="http://www.megaupload.com/?d=2ABRQX28" target="_BLANK"&gt;Java Server&lt;/a&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;br&gt;
&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="color: black;"&gt;Si les pide clave:&lt;/span&gt;&lt;span style="color: black; font-family: arial; font-size: 13px;"&gt;www.intercambiosvirtuales.org&lt;/span&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6-Qimcp7onGSoaG9VgNLePNjxWd5hqW5tEJ6hKAnHsRSq2VbyztbQY-rhqb1UJYWUrbu_O_csr7urF-uVB2MZAg7EVoQoT_-JH2fz3xtCzvH9q5ZPNmZ934hn0IRmC0lKA-buse0l_mx/s72-c/cover.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Sistemas de Bases de Datos (Conceptos Fundamentales) R. Elmasri 2da
Edición</title><link>http://guelmimundoinfo.blogspot.com/2010/05/descripcion-este-libro-presenta-los.html</link><category>BASE DE DATOS</category><category>TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Mon, 10 May 2010 15:51:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-832698425663716135</guid><description>&lt;script async="" type="text/javascript" src="https://pagead2.googlesyndication.com/pub-config/ca-pub-0061739434879555.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;
&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 728;
google_ad_height = 15;
//--&gt;
&lt;/script&gt; &lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;ins id="aswift_0_expand" style="display:inline-table;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"&gt;&lt;ins id="aswift_0_anchor" style="display:block;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"&gt;&lt;iframe width="728" height="15" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br&gt;
&lt;div&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJfRWbBzAlIuYFgJT4-zvqdaQdKCh__ar44rDSBcXJmsr71TQxG4243MJg1Lr_MLLAqeJ7HcS4CAZwbYPLvv2N6OASh3SVXBdJSDhOchVUMAhHNtRsGKxm2CNSiblVZoSPlQReAXj7pG5r/s1600/cover.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img align="center" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJfRWbBzAlIuYFgJT4-zvqdaQdKCh__ar44rDSBcXJmsr71TQxG4243MJg1Lr_MLLAqeJ7HcS4CAZwbYPLvv2N6OASh3SVXBdJSDhOchVUMAhHNtRsGKxm2CNSiblVZoSPlQReAXj7pG5r/s320/cover.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;div style="text-align: justify;"&gt;&lt;b&gt;Descripción&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Este libro presenta los conceptos fundamentales requeridos para diseñar, utilizar e implementar sistemas de bases de datos. Nuestra presentación hace hincapié en los fundamentos de modelado y diseño de bases de datos y en las técnicas de implementación de sistemas. Esta obra puede usarse como libro de texto para un curso sobre sistemas de bases de datos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Contenido temático&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 1:&lt;/b&gt; Bases de datos y sus usuarios&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 2:&lt;/b&gt; Conceptos y arquitectura de los sistemas de bases de datos&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 3: &lt;/b&gt;Modelado de datos con el enfoque entidad – vínculo&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 4:&lt;/b&gt; Almacenamiento de registros y organizaciones primarias de archivos&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 5:&lt;/b&gt; Estructuras de índices para archivos&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 6:&lt;/b&gt; El modelo de datos relacional y el álgebra relacional&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 7: &lt;/b&gt;SQL: Un lenguaje de bases de datos relacionales&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 8: &lt;/b&gt;Cálculo relacional, QUEL, QBE&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 9: &lt;/b&gt;Un sistema de gestión de bases de datos relacionales DB2&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 10: &lt;/b&gt;El modelo de datos de la red y el sistema IDMS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 11: &lt;/b&gt;El modelo de datos jerárquico y el sistema IMS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 12: &lt;/b&gt;Dependencias funcionales y normalización para bases de datos&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 13: &lt;/b&gt;Algoritmos de diseño de bases de datos relacionales dependencias adicionales&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 14: &lt;/b&gt;Panorama de proceso de diseño de bases de datos&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 15: &lt;/b&gt;El catálogo del sistema&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 16: &lt;/b&gt;Procesamientos y optimización de consultas&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 17: &lt;/b&gt;Conceptos de procesamiento de transacciones&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 18: &lt;/b&gt;Técnicas de control de concurrencia&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 19:&lt;/b&gt; Técnicas de recuperación&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 20:&lt;/b&gt; Seguridad y autorización en bases de datos&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 21:&lt;/b&gt; Conceptos avanzados del modelado de datos&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 22: &lt;/b&gt;Bases de datos orientadas a objetos&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 23:&lt;/b&gt; Bases de datos distribuidas y arquitectura cliente – servidor&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 24:&lt;/b&gt; Bases de datos deductivas&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Capítulo 25: &lt;/b&gt;Nuevas tecnologías y aplicaciones de bases de datos&lt;/div&gt;&lt;br&gt;
&lt;span style="color: blue;"&gt;Descargar: &lt;/span&gt;&lt;a href="http://www.megaupload.com/?d=GXWASHN8" target="_BLANK"&gt;Sistemas de Bases de Datos&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJfRWbBzAlIuYFgJT4-zvqdaQdKCh__ar44rDSBcXJmsr71TQxG4243MJg1Lr_MLLAqeJ7HcS4CAZwbYPLvv2N6OASh3SVXBdJSDhOchVUMAhHNtRsGKxm2CNSiblVZoSPlQReAXj7pG5r/s72-c/cover.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Generar Claves Aleatoriamente</title><link>http://guelmimundoinfo.blogspot.com/2010/04/generar-claves-aleatoriamente.html</link><category>PHP</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 12 Apr 2010 11:48:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-5901608986820494021</guid><description>a veces cuando hacemos un portal queremos que cuando una persona se registre o reestablezca su clave, ésta se genere aleatoriamente (se aplica para dar seguridad a nuestra aplicacion web).&lt;br&gt;&lt;br&gt;la solucion es facil y aqui se las traigo para que la implementen en donde quieran.&lt;br&gt;&lt;br&gt;&amp;lt;?php&lt;br&gt;$detodo="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";&lt;br&gt;for($i=0;$i&amp;lt;9;$i++){&lt;br&gt;$clave .= substr($detodo,rand(0,61),1);&lt;br&gt;}&lt;br&gt;echo $clave;&lt;br&gt;?&amp;gt;&lt;br&gt;&lt;br&gt;lo que hacemos es declarar una variable en la cual tendremos todos los caracteres que puede llevar la clave generada, hacemos un para y dentro vamos añadiendo los caracteres seleccionados de dicha variable y luego lo mostramos.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>03 Curso J2ME en Netbeans - Simple HTTP Fetch , Cargar archivo de texto
a un Textbox</title><link>http://guelmimundoinfo.blogspot.com/2010/03/03-curso-j2me-en-netbeans-simple-http.html</link><category>J2ME</category><category>JAVA</category><category>TUTORIALES</category><category>VIDEO TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Mon, 29 Mar 2010 19:55:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-8662168842785919745</guid><description>&lt;div align="center"&gt;&lt;br&gt;
&lt;/div&gt;&lt;div align="center"&gt;&lt;script type="text/javascript"&gt;
&lt;!--
smowtion_size = "468x60";
smowtion_section = "839950";
//--&gt;
&lt;/script&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;script src="http://ads2.smowtion.com/ad.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br&gt;
&lt;/div&gt;&lt;div align="center"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9iFLFDN1izY&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/9iFLFDN1izY&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/object&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br&gt;
&lt;/div&gt;&lt;div align="center"&gt;&lt;br&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: blue;"&gt;&lt;strong&gt;Codigo Fuente: &lt;/strong&gt;&lt;/span&gt;&lt;a href="http://guelmimundoinfo.webcindario.com/Descargas/03JME/descargas.php" onclick="window.open(this.href,'','width=320,height=350');return false;"&gt; &lt;strong&gt;Descargar&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>02- Curso ajax</title><link>http://guelmimundoinfo.blogspot.com/2010/03/02-curso-ajax.html</link><category>AJAX</category><category>TUTORIALES</category><category>VIDEO TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Sun, 28 Mar 2010 16:57:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-60987420939134548</guid><description>&lt;div align="center"&gt;&lt;!-- BEGIN SMOWTION TAG - 468x60 - mundo info codigos de la web: p2p - DO NOT MODIFY --&gt;&lt;br&gt;
&lt;script type="text/javascript"&gt;&lt;!--
smowtion_size = "468x60";
smowtion_section = "839950";
//--&gt;
&lt;/script&gt;&lt;br&gt;
&lt;script type="text/javascript" src="http://ads2.smowtion.com/ad.js"&gt;
&lt;/script&gt;&lt;br&gt;
&lt;!-- END SMOWTION TAG - 468x60 - mundo info codigos de la web: p2p - DO NOT MODIFY --&gt;&lt;br&gt;
&lt;embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://flash.revver.com/player/1.0/player.swf?mediaId=586148&amp;amp;affiliateId=122157" type="application/x-shockwave-flash" width="425"&gt;&lt;/div&gt;&lt;b&gt;&lt;br&gt;
&lt;span style="color: blue;"&gt;Fuentes:&lt;/span&gt; &lt;a href="http://illasaron.com/upload/video/ad68398438516b2/02-Curso-de-Ajax" target="_BLANK"&gt;Curso ajax&lt;/a&gt;&lt;/b&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Captchas</title><link>http://guelmimundoinfo.blogspot.com/2010/03/captchas.html</link><category>PHP</category><category>TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Fri, 12 Mar 2010 16:35:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-5371611508151285434</guid><description>&lt;script async="" type="text/javascript" src="https://pagead2.googlesyndication.com/pub-config/ca-pub-0061739434879555.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;
&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 728;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;&lt;br&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;ins id="aswift_0_expand" style="display:inline-table;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"&gt;&lt;ins id="aswift_0_anchor" style="display:block;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"&gt;&lt;iframe width="728" height="15" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br&gt;
&lt;b&gt;Captcha&lt;/b&gt; es el acrónimo  de &lt;i&gt;Completely Automated Public Turing test to tell Computers and Humans  Apart&lt;/i&gt; (Prueba de Turing pública y automática para diferenciar  máquinas y humanos).&lt;br&gt;
&lt;div class="thumb tright"&gt;&lt;div class="thumbinner" style="width: 292px;"&gt;&lt;/div&gt;&lt;/div&gt;Se trata de una prueba desafío-respuesta utilizada en computación  para determinar cuándo el usuario es o no humano.&lt;br&gt;
&lt;br&gt;
Este es un ejemplo de como crear un Captcha.&lt;br&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0HNci8VhsQMQ0psUdbBirioeHVFv0XMwKSbW-gScJE0q6mxLltcrtN_WpgiPknmlHdz-rEhCJoKw-8wdgbAnOU4U4QwKVmABC0tTD6l2nfqWQiGG47aigydBu_3SOba36ltvLXQveEKM/s1600-h/Captcha.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_BLANK"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0HNci8VhsQMQ0psUdbBirioeHVFv0XMwKSbW-gScJE0q6mxLltcrtN_WpgiPknmlHdz-rEhCJoKw-8wdgbAnOU4U4QwKVmABC0tTD6l2nfqWQiGG47aigydBu_3SOba36ltvLXQveEKM/s320/Captcha.JPG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
&lt;b style="color: blue;"&gt;Descargar:&lt;/b&gt; &lt;a href="http://guelmimundoinfo.webcindario.com/Descargas/03JME/captchas.php" onclick="window.open(this.href,'','width=320,height=350');return false;"&gt;&lt;b&gt;Codigo Fuente&lt;/b&gt;&lt;/a&gt;&lt;br&gt;
&lt;b&gt;Si tienes alguna inquietud o pregunta no dude es hacerla &lt;/b&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0HNci8VhsQMQ0psUdbBirioeHVFv0XMwKSbW-gScJE0q6mxLltcrtN_WpgiPknmlHdz-rEhCJoKw-8wdgbAnOU4U4QwKVmABC0tTD6l2nfqWQiGG47aigydBu_3SOba36ltvLXQveEKM/s72-c/Captcha.JPG" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Conceptos básicos de programación en Java</title><link>http://guelmimundoinfo.blogspot.com/2010/02/conceptos-basicos-de-programacion-en.html</link><category>JAVA</category><category>VIDEO TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Fri, 12 Feb 2010 15:35:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-5897094696254927188</guid><description>&lt;script async="" type="text/javascript" src="https://pagead2.googlesyndication.com/pub-config/ca-pub-0061739434879555.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 740;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;&lt;br&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;ins id="aswift_0_expand" style="display:inline-table;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:740px;background-color:transparent"&gt;&lt;ins id="aswift_0_anchor" style="display:block;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:740px;background-color:transparent"&gt;&lt;iframe width="740" height="15" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br&gt;
Bueno para todo aquellos que quieran empezar y conocer los conceptos basicos en programación y  java acá les dejo un buen tutorial creado por Julio Cesar.&lt;br&gt;
&lt;div align="center"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://blip.tv/play/Ae+6R5KjBg" type="application/x-shockwave-flash" width="425"&gt;&lt;/div&gt;&lt;br&gt;
Fuentes: &lt;b&gt;&lt;a href="http://illasaron.com/upload/video/79143e32d095e1b/JAVA-01-Conceptos-b%C3%A1sicos-de-programaci%C3%B3n" target="_BLANK"&gt;Conceptos básicos de programación en Java &lt;/a&gt;&lt;/b&gt;&lt;br&gt;
&lt;b&gt;&lt;br&gt;
&lt;/b&gt;&lt;br&gt;
&lt;b&gt;&lt;i&gt;Queremos saber tu opinión Comenta. Gracias&lt;/i&gt;&lt;/b&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Java - Almacenar informacion con el uso de Array</title><link>http://guelmimundoinfo.blogspot.com/2010/02/java-almacenar-informacion-con-el-uso.html</link><category>JAVA</category><category>VIDEO TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Fri, 5 Feb 2010 20:33:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-8521925278512712805</guid><description>&lt;script async="" type="text/javascript" src="https://pagead2.googlesyndication.com/pub-config/ca-pub-0061739434879555.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 740;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;&lt;br&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;ins id="aswift_0_expand" style="display:inline-table;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:740px;background-color:transparent"&gt;&lt;ins id="aswift_0_anchor" style="display:block;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:740px;background-color:transparent"&gt;&lt;iframe width="740" height="15" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br&gt;
&lt;br&gt;
Este video nos muestra con hacer un sistema complejo de almacenamiento de informacion con el uso de array en java; Crear Arrays; Métodos para poblar Arrays; Uso de Arrays; El método toCharArray( ); Uso de Arrays multidimensionales; Ordenar Arrays; Uso de métodos de la Clase Arrays; Taller de trabajo: Trabajo con Arrays de caracteres. 39 minutos.&lt;br&gt;
&lt;div align="center"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://blip.tv/play/gvAHgcLndwA" type="application/x-shockwave-flash" width="425"&gt;&lt;/div&gt;&lt;br&gt;
&lt;b&gt;Fuentes:&amp;nbsp;&lt;/b&gt;&lt;a href="www.illasaron.com/upload" target="_BLANK"&gt;&lt;b&gt;Almacenar informacion con el uso de Array&lt;/b&gt;&lt;/a&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Manual PHP 5</title><link>http://guelmimundoinfo.blogspot.com/2010/02/manual-php-5.html</link><category>PHP</category><category>TUTORIALES</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Wed, 3 Feb 2010 20:07:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-6261354809412240710</guid><description>&lt;script async="" type="text/javascript" src="https://pagead2.googlesyndication.com/pub-config/ca-pub-0061739434879555.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 740;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;&lt;br&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;ins id="aswift_0_expand" style="display:inline-table;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:740px;background-color:transparent"&gt;&lt;ins id="aswift_0_anchor" style="display:block;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:740px;background-color:transparent"&gt;&lt;iframe width="740" height="15" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br&gt;
Este es un Archivo PDF que contiene temas basicos sobre PHP5 ademas trae los codigos fuentes de los ejemplos.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;&amp;nbsp;CONTENIDO&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;&lt;li&gt;Introducción&lt;/li&gt;
&lt;li&gt;Capítulo I Conceptos Básicos&lt;/li&gt;
&lt;li&gt;Capítulo II Tipos de datos&lt;/li&gt;
&lt;li&gt;Capítulo III Variables&lt;/li&gt;
&lt;li&gt;Capítulo IV Constantes&lt;/li&gt;
&lt;li&gt;Capítulo V Operadores&lt;/li&gt;
&lt;li&gt;Capítulo VI Estructuras de Control&lt;/li&gt;
&lt;li&gt;Capítulo VII Funciones&lt;/li&gt;
&lt;li&gt;Capítulo VIII Cadenas de caracteres y expresiones regulares&lt;/li&gt;
&lt;li&gt;Capítulo IX Array&lt;/li&gt;
&lt;li&gt;Capítulo XI Archivos y Almacenamiento de Datos&lt;/li&gt;
&lt;li&gt;Capítulo XII PHP5 Y MySQL5 Obteniendo Datos De Bases De Datos&lt;/li&gt;
&lt;li&gt;Capítulo XIII Sesiones Y Cookies&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;a href="http://guelmimundoinfo.webcindario.com/Descargas/03JME/MPhp.php" onclick="window.open(this.href,'','width=320,height=350');return false;"&gt;Descargar&lt;/a&gt;&lt;/div&gt;&lt;br&gt;
&lt;script type="text/javascript" src="http://feeds.delicious.com/v2/js/networkbadge/guelmi?showadd&amp;amp;icon=s"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://delicious.com/static/js/del-linkrolls.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://feeds.delicious.com/v2/json/networkbadge/guelmi?count=10&amp;amp;callback=Delicious.Linkrolls_CB_87532"&gt;&lt;/script&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Validar Caja de texto con JavaScript</title><link>http://guelmimundoinfo.blogspot.com/2010/01/validar-caja-de-texto-con-javascript.html</link><category>JAVASCRIPT</category><category>PHP</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Thu, 21 Jan 2010 21:25:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-4237257375573671310</guid><description>&lt;script async="" type="text/javascript" src="https://pagead2.googlesyndication.com/pub-config/ca-pub-0061739434879555.js"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;
&lt;!--
google_ad_client = "pub-0061739434879555";
/* 320x150, creado 24/02/10 */
google_ad_slot = "1465060245";
google_ad_width = 740;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;&lt;br&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;ins id="aswift_0_expand" style="display:inline-table;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:740px;background-color:transparent"&gt;&lt;ins id="aswift_0_anchor" style="display:block;border:none;height:15px;margin:0;padding:0;position:relative;visibility:visible;width:740px;background-color:transparent"&gt;&lt;iframe width="740" height="15" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br&gt;
En base del ejemplo de la Tabla multiplicar validaremos para que solo acepte numeros la caja de texto, por medio de javascript&lt;br&gt;
&lt;div class="flexcroll" id="mycustomscroll"&gt;&lt;div align="justify" style="color: #ff6600;"&gt;&amp;lt;html&amp;gt;&lt;br&gt;
&amp;lt;head&amp;gt;&lt;br&gt;
&amp;lt;title&amp;gt;Tabla de Multiplicar&amp;lt;/title&amp;gt;&lt;/div&gt;&lt;div align="justify" style="color: #666600;"&gt;&amp;lt;script language="JavaScript" type="text/javascript"&amp;gt;&lt;br&gt;
&lt;span style="color: #990066; font-family: calibri; font-size: small;"&gt;&lt;br&gt;
//creamos la funcion validar&lt;/span&gt;&lt;br&gt;
function validar(){&lt;br&gt;
&amp;nbsp;&amp;nbsp;if(isNaN(document.form1.num.value)){&lt;br&gt;
&lt;span style="color: #990066; font-family: calibri; font-size: small;"&gt;&lt;br&gt;
//mandamos un mensaje al usuario &lt;/span&gt;&lt;br&gt;
&amp;nbsp;alert("Son solo numeros");&lt;br&gt;
&amp;nbsp;document.form1.num.focus();&lt;br&gt;
&amp;nbsp;return false;&lt;br&gt;
&amp;nbsp;}&lt;br&gt;
}&lt;br&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;&lt;div align="justify" style="color: #ff6600;"&gt;&amp;lt;/head&amp;gt;&lt;br&gt;
&amp;lt;body&amp;gt;&lt;br&gt;
&amp;lt;h2&amp;gt;Tabla de Multiplicar&amp;lt;/h2&amp;gt;&lt;br&gt;
&lt;br&gt;
&amp;lt;form name ="form1" method="post" action="multiplicar.php"&amp;gt;&lt;br&gt;
&amp;lt;label&amp;gt;Digite un numero&lt;br&gt;
&amp;lt;input type="text" name="num"&amp;gt;&lt;br&gt;
&amp;lt;input type="submit" value="generar" onclick="return validar()"&amp;gt;&lt;br&gt;
&amp;lt;/form&amp;gt;&lt;/div&gt;&lt;br&gt;
&lt;div align="justify" style="color: #000099;"&gt;&amp;lt;?php&lt;br&gt;
&lt;span style="color: #990066; font-family: calibri; font-size: small;"&gt;//le asignamos lo que tiene la caja de texto num a la variable $x, por medio del metodo POST&lt;/span&gt;&lt;br&gt;
$x=$_POST[num];&lt;br&gt;
&lt;span style="color: #990066; font-family: calibri; font-size: x-small;"&gt;&lt;br&gt;
//Preguntamos si la variable a sido inicializada, es decir si se le ha pasado algun valor o se ha presionado el boton generar&lt;/span&gt;&lt;br&gt;
if(isset($x)){&lt;br&gt;
echo '&amp;lt;h3&amp;gt;Resultado&amp;lt;/h3&amp;gt;';&lt;br&gt;
&lt;span style="color: #990066; font-family: calibri; font-size: x-small;"&gt;&lt;br&gt;
//por medio del ciclo For hacemos la multiplicacion desde 1 hasta 10&lt;/span&gt;&lt;br&gt;
for($i=1;$i&amp;lt;=10;$i++){&lt;br&gt;
&amp;nbsp;echo $x." * ".$i." = ".$x*$i." ";&lt;br&gt;
}&lt;br&gt;
&amp;nbsp;}&lt;br&gt;
&amp;nbsp;?&amp;gt;&lt;/div&gt;&lt;div align="justify" style="color: #ff6600;"&gt;&amp;lt;/body&amp;gt;&lt;br&gt;
&amp;lt;/html&amp;gt;&lt;/div&gt;&lt;br&gt;
&lt;/div&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Descargar: &lt;/b&gt;&lt;a href="http://public.bay.livefilestore.com/y1pv8qMRPDa8LsrsJGPZjTGiipmuT9FUYJzUXWWK_icOuWhJ5W56ds9MmKfxSZ9TIoGfL2nshkk3Hc7WcuikUbZ1w/multiplicar2.php?download"&gt;&lt;b&gt;Codigo Fuente&lt;/b&gt;&lt;/a&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Php con JavaScript</title><link>http://guelmimundoinfo.blogspot.com/2010/01/php-con-javascript.html</link><category>JAVASCRIPT</category><category>PHP</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Thu, 21 Jan 2010 20:18:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-8490229185532675219</guid><description>Este es un sencillo ejemplo de como utilizar php y JavaScript. El siguiente codigo muestra una alerta y escribe dos valores. &lt;br&gt;
&lt;br&gt;
&lt;div class="flexcroll" id="mycustomscroll"&gt;&lt;span style="color: #990066; font-family: calibri; font-size: small;"&gt; //Este es el script de JavaScript&lt;/span&gt;&lt;br&gt;
&lt;div align="justify" style="color: #666600;"&gt;&amp;lt;script language="JavaScript" type="text/javascript""&amp;gt;&lt;br&gt;
alert ("Mensaje con JavaScript");&lt;br&gt;
&amp;lt;/script&amp;gt; &lt;br&gt;
&lt;div align="justify" style="color: #000099;"&gt;//Este es el codigo Php&lt;br&gt;
&amp;lt;?php&lt;br&gt;
echo ("Texto en PHP"); &lt;br&gt;
?&amp;gt; &lt;/div&gt;&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Incrustacion de PHP</title><link>http://guelmimundoinfo.blogspot.com/2010/01/combinacion-de-html-y-php.html</link><category>PHP</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Wed, 20 Jan 2010 20:55:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-3098343906141454103</guid><description>Las paginas php puede combinar etiquetas de html, a continuacion un ejemplo de combinar etiquetas html y codigo php, el archivo lo llamaremos paginaphphtml.php&lt;br&gt;
&lt;div class="flexcroll" id="mycustomscroll"&gt;&lt;div align="justify" style="color: #ff6600;"&gt;&amp;lt;html&amp;gt; &lt;br&gt;
&amp;lt;body&amp;gt; &lt;br&gt;
&amp;lt;head&amp;gt; &lt;br&gt;
&amp;lt;title&amp;gt;PHP incrustado&amp;lt;/title&amp;gt;&lt;br&gt;
 &amp;lt;/head&amp;gt; &lt;br&gt;
&lt;div align="justify" style="color: #000099;"&gt;&amp;lt;?php &lt;br&gt;
&lt;span style="color: #990066; font-family: calibri; font-size: small;"&gt;//esto es el codigo php //haremos una asignacion de valores a dos variables &lt;/span&gt;&lt;br&gt;
$nombre="Miguel"; &lt;br&gt;
$apellido="Arango"; &lt;br&gt;
?&amp;gt; &lt;br&gt;
&lt;/div&gt;&amp;lt;p&amp;gt;&lt;br&gt;
Este es un Parrafo con Html y PHP, realizado por &lt;br&gt;
&lt;div align="justify" style="color: #000099;"&gt;&amp;lt;?php echo($nombre." " .$apellido);?&amp;gt;&lt;br&gt;
&lt;/div&gt;&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;/body&amp;gt; &lt;br&gt;
&amp;lt;/html&amp;gt; &lt;br&gt;
&lt;/div&gt;&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Nuestro Primer PHP</title><link>http://guelmimundoinfo.blogspot.com/2010/01/nuestro-primer-php.html</link><category>PHP</category><author>noreply@blogger.com (Guelmi)</author><pubDate>Wed, 20 Jan 2010 20:35:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2169329501359311516.post-7933497015921425127</guid><description>Este es un simple&amp;nbsp;código&amp;nbsp;que nos permite escribir un Hola mundo por medio de PHP&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
//echo nos permite escribir texto, e incluso etiquetas html&lt;br&gt;
&amp;lt;?php&lt;br&gt;
echo ("Hola Mundo");&lt;br&gt;
?&amp;gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>