elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Temas
Páginas: 1 [2] 3 4
11  Programación / Desarrollo Web / [Aporte] JQuery en: 3 Enero 2011, 14:53 pm
Introducción

Cuando surgió la web 2.0 en conjunto del social media las aplicaciones de Internet se tornaron mas exigentes ya que debían ser mas dinámicas. Esto fue posible con el DHTML ya que combina un conjunto de técnicas para diseñar HTML Dinámico, con apoyo de Javasript, hojas de estilo en cascada CSS y la jerarquizacion del árbol DOM.

Citar
Una página de HTML Dinámico es cualquier página web en la que los scripts en el lado del cliente cambian el HTML del documento, después de que éste haya cargado completamente, lo cual afecta a la apariencia y las funciones de los objetos de la página. La característica dinámica del DHTML, por tanto, es la forma en que la página interactúa con el usuario cuando la está viendo, siendo la página la misma para todos los usuarios.

Entre los usos mas habituales del DHTML, esta la creación de menús desplegables, ventanas modales, validaciones en tiempo real de formularios, estilo personalizados de la aplicación para cada usuario, creación de entornos mas amigables al cliente final entre otra cantidad de opciones y posibilidades.

JQuery

JQuery es un conjunto de librerías o Framework de javascript, creada inicilamente por John Resig que es trabajador de la Fundación  Mozilla. Este Framework permite reducir de manera notoria la interaccion con los documento HTML, como manipular elementos DOM, gestionar eventos, desarrollar animaciones e integrar contenidos con Ajax.

jQuery es software libre y de código abierto, posee un doble licenciamiento bajo la Licencia MIT y la Licencia Pública General de GNU v2,permitiendo su uso en proyectos libres y privativos. jQuery, al igual que otras bibliotecas, ofrece una serie de funcionalidades basadas en javascript que de otra manera requerirían de mucho más código, es decir, con las funciones propias de esta biblioteca se logran grandes resultados en menos tiempo y espacio

Primeros Pasos

Para empezar el Framework, podemos ingresar a el su sitio oficial y descargarla desde allí. Contiene una amplia comunidad a nivel mundial lo cual hace que su API este bien documentada.

Que lograremos con JQuery:

    * Reducir lineas y lineas de código
    * Hace transparente el código a cualquier navegador WEB, este es un problema serio para cualquier aplicación
    * Creación de animaciones de manera facil
    * Integración, en el mundo existen miles de programadores que trabajan sobre este Framework y se puede conseguir un buena cantidad de plugin’s

Hola Mundo

Una vez descargado el Framework, lo llamamos desde el HTML de la siguiente forma:

Código
  1.   <head>
  2.      <script type="text/javascript" src="jquery.js"></script>
  3.   </head>
  4. </html>

Para ejecutar una función apenas haya cargado todo el Árbol DOM, los podemos hacer de la siguiente forma:

Código
  1.   <head>
  2.      <script type="text/javascript" src="jquery.js"></script>
  3.      <script>
  4.      $(function(){
  5.         alert("Hola Mundo")
  6.      })
  7.    </script>
  8.   </head>
  9. </html>

El uso de esta validación, no aseguramos de que Framework empieza a funcionar apenas se haya cargado toda la pagina.

FUENTE
12  Foros Generales / Foro Libre / ColombiaLeaks en: 17 Diciembre 2010, 16:51 pm
Este porta contiene alguno Cables Traducidos que hacen referencia a Colombia y al movimiento liderador por Anonymuous y otros mas por ahyyy....

http://colombialeaks.wordpress.com
13  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / [Opiniones] Lg Eve Gw620 en: 19 Noviembre 2010, 15:17 pm
Hola, estuve mirando un catalogo y me llamo la atención este celular... pero antes de tomar una decisión quiero recibir algunas opiniones acerca de este smartphone 
14  Programación / Desarrollo Web / [javascript] Busco Colaboradores en Proyecto GPL - Minimal JS Framework en: 12 Octubre 2010, 18:01 pm
Hola todos, estoy buscando personas interesadas en el medio para que me colaboren en la construccion de Framewaork en JS, yo se que ya hay bastantes pero la idea es hacernos uns propio, para hispanos !!! ... si se le miden le dejo un version del framework analicenla y comentan ... tan sera recibidas sus sugerencias y criticas

Les dejo el codigo:

Código
  1. /**
  2.  * @author 4ng3r
  3.  */
  4. Min={
  5.    version: '1.0',
  6.    name: 'Minimal JS Framework 2010',
  7.    consola: 1,        
  8. }
  9.  
  10. /**
  11.  * @alias Url
  12.  * @classDescription Clase desarrollada para manejar todas las propiedades del objeto location
  13.  */
  14.  
  15. Min.Url = {
  16.  /**
  17.      * @method ubicacion
  18.      * @return Object
  19.      */
  20.    ubicacion:function(){
  21.    return window.location
  22.  },
  23.    /**
  24.      * @method host
  25.      * @return String
  26.      */
  27.    host:function(){
  28.        return this.ubicacion.host;
  29.    },
  30.    /**
  31.      * @method url
  32.      * @return String
  33.      */
  34.    url:function(){
  35.        return this.ubicacion.href;
  36.    },
  37.    /**
  38.      * @method hostname
  39.      * @return String
  40.      */
  41.    hostname:function(){
  42.        return this.ubicacion.hostname;
  43.    },
  44.    /**
  45.      * @method ruta
  46.      * @return String
  47.      */
  48.    ruta:function(){
  49.        return this.ubicacion.pathname;
  50.    },    
  51.    /**
  52.      * @method hash
  53.      * @return String
  54.      * @Description retorna un String como todo lo que esta despues del # en la URL
  55.      */
  56.    hash:function(){
  57.        return this.ubicacion.hash;
  58.    },    
  59.    /**
  60.      * @method puerto
  61.      * @return String
  62.      */
  63.    puerto:function(){
  64.        return this.ubicacion.port;
  65.    },    
  66.    /**
  67.      * @method protocolo
  68.      * @return String
  69.      */
  70.    protocolo:function(){
  71.        return this.ubicacion.protocol;
  72.    },    
  73.    /**
  74.      * @method variables
  75.      * @return String
  76.      * @Description retorna un String como todo lo que esta despues del ? en la URL
  77.      */
  78.    variables:function(){
  79.        return this.ubicacion.search;
  80.    },
  81.    /**
  82.      * @method obtenerVariables
  83.      * @return Void
  84.      * @Description Retorna las variables con su respectivo valor
  85.      */
  86.    obtenerVariables:function(){
  87.      Url = Min.Url.url();
  88.    Url = Url.replace(/.*\?(.*?)/,"$1");
  89.    Variables = Url.split ("&");
  90.    for (i = 0; i < Variables.length; i++) {
  91.           Separ = Variables[i].split("=");
  92.           eval (Separ[0]+'="'+Separ[1]+'"');
  93.    }
  94.  },
  95.    /**
  96.      * @method verResumen
  97.      * @return String
  98.      * @Description retorna el resumen del objeto Location
  99.      */
  100.    verResumen:function(){
  101.        var cadena = "<b>Nombre del HOST: </b>"+this.host()+"<br>";
  102.        cadena += "<b>Ubicacion: </b>"+this.url()+"<br>";
  103.        cadena += "<b>Ruta: </b>"+this.ruta()+"<br>";
  104.        cadena += "<b>Ver Hash: </b>"+this.hash()+"<br>";
  105.        cadena += "<b>Ver Puerto: </b>"+this.puerto()+"<br>";
  106.        cadena += "<b>Ver Protocolo: </b>"+this.protocolo()+"<br>";
  107.        cadena += "<b>Ver Variables: </b>"+this.variables()+"<br>";
  108.        return cadena;
  109.    },
  110.    /**
  111.      * @method redireccionar
  112.      * @param String url
  113.      */
  114.    redireccionar:function(url){
  115.        if(Min.valiciones.esUrl(url)){
  116.            this.ubicacion.assign(url);    
  117.        }else{
  118.            if(Min.consola){
  119.                alert('URL no valida: '+url);
  120.            }            
  121.        }
  122.    },
  123.    /**
  124.      * @method remplezarURL
  125.      * @param Strin url
  126.      * @Description remplazar la pagina actual a otra, borrandola del historial
  127.      */
  128.    remplezarURL: function(url){
  129.        if(Min.valiciones.esUrl(url)){
  130.            this.ubicacion.replace(url);    
  131.        }else{
  132.            if(Min.consola){
  133.                alert('URL no valida: '+url);
  134.            }            
  135.        }        
  136.    },
  137.    /**
  138.      * @method recargar
  139.      */
  140.    recargar:function(){
  141.        this.ubicacion.reload();
  142.     }    
  143. }
  144.  
  145. Min.valiciones={
  146.    /**
  147.      * @method esString
  148.      * @param Strin str
  149.      * @return Boolean
  150.      */
  151.    esNumero:function(str){
  152.        return !isNaN(str);
  153.    },
  154.  
  155.    /**
  156.      * @method esUrl
  157.      * @param Strin url
  158.      * @return Boolean
  159.      */
  160.    esUrl:function(url){
  161.      var str = new String(url);
  162.        var re=/^http:\/\/\w+(\.\w+)*\.\w{2,3}$/;
  163.        return re.test(str);
  164.    },
  165.    /**
  166.      * @method validarCampoCorreo
  167.      * @param String email
  168.      * @return Booblean
  169.      */
  170.    esEmail:function(email){
  171.      var str = new String(email);
  172.    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(str)){
  173.      return true;
  174.    }else {
  175.      return false;
  176.    }
  177.  },
  178.  /**
  179.      * @method esHora
  180.      * @param String hora
  181.      * @return Booblean
  182.      * @example var bool = Min.valiciones.esHora("12:00 AM");    //true
  183.      */
  184.  esHora:function(hora){
  185.    var er_fh = /^(1|01|2|02|3|03|4|04|5|05|6|06|7|07|8|08|9|09|10|11|12)\:([0-5]0|[0-5][1-9])\ (AM|PM)$/
  186.     if( str == "" ){
  187.      return false
  188.     }
  189.     if(!(er_fh.test(hora))){
  190.      return false
  191.     }
  192.     return true
  193.  },
  194.  /**
  195.      * @method esFecha
  196.      * @param String fecha
  197.      * @return Booblean
  198.      * @example var f = Min.valiciones.esFecha("12-11-2009"); //true    
  199.      */
  200.  esFecha:function(fecha){
  201.    var Fecha= new String(fecha);
  202.      var RealFecha= new Date();
  203.      var Ano= new String(Fecha.substring(Fecha.lastIndexOf("-")+1,Fecha.length));
  204.      var Mes= new String(Fecha.substring(Fecha.indexOf("-")+1,Fecha.lastIndexOf("-")));
  205.      var Dia= new String(Fecha.substring(0,Fecha.indexOf("-")));
  206.      if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1900){
  207.          return false;
  208.    }
  209.      if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12){
  210.          return false;
  211.      }
  212.      if (isNaN(Dia) || parseInt(Dia, 10)<1 || parseInt(Dia, 10)>31){
  213.          return false;
  214.      }
  215.      if (Mes==4 || Mes==6 || Mes==9 || Mes==11 || Mes==2) {
  216.          if (Mes==2 && Dia > 28 || Dia>30) {
  217.             return false;
  218.        }
  219.    }
  220.  return true;
  221.  },
  222.  /**
  223.      * @method tieneNumeros
  224.      * @param String str
  225.      * @return Booblean
  226.      */
  227.  tieneNumeros:function(str){
  228.    var numeros="0123456789";
  229.    return this.comparacion(str,numeros);
  230.  },
  231.  /**
  232.      * @method tieneMinusculas
  233.      * @param String str
  234.      * @return Booblean
  235.      */
  236.  tieneMinusculas:function(str){
  237.    var letras="abcdefghyjklmnñopqrstuvwxyz";
  238.    return this.comparacion(str,letras);
  239.  },
  240.  /**
  241.      * @method tieneMayusculas
  242.      * @param String str
  243.      * @return Booblean
  244.      */
  245.  tieneMayusculas:function(str){
  246.    var letras="ABCDEFGHYJKLMNÑOPQRSTUVWXYZ";
  247.    return this.comparacion(str,letras);
  248.  },
  249.  /**
  250.      * @method comparacion
  251.      * @param String str
  252.      * @param String patron    
  253.      * @return Booblean
  254.      * @description Esta funcion busca en la cadena si existe un patron    
  255.      */
  256.  comparacion:function(str,patron){
  257.    for(i=0; i<str.length; i++){
  258.      if (patron.indexOf(str.charAt(i),0)!=-1){
  259.         return true;
  260.      }
  261.    }
  262.    return false;
  263.  }
  264. }
  265.  
  266. Min.vector={
  267.    /**
  268.      * @method crearArreglo
  269.      * @param Object o
  270.      * @return Array
  271.      */
  272.    crearVector:function(o){
  273.        if ((typeof o) == "object") {
  274.            var tmp = new Array()
  275.            for(item in o){
  276.                tmp[item]=o[item];
  277.            }
  278.            return tmp;    
  279.        }
  280.        return null;    
  281.    },
  282.    /**
  283.      * @method agregar
  284.      * @param Array vector
  285.      * @param String Item || Number Item
  286.      * @param Object valor (Number, Boolean, String)
  287.      */
  288.    agregar:function(vector,item,valor){
  289.        if ((typeof vector)=="object"){
  290.            vector[item]=valor;    
  291.        }else{
  292.            return null;
  293.        }        
  294.    },
  295.    /**
  296.      * @method eliminar
  297.      * @param Array arreglo
  298.      * @param String Item || Number Item
  299.      */
  300.    eliminar:function(vector,item){
  301.        if ((typeof vector) == "object") {
  302.            vector[item]=null;
  303.        }        
  304.    },
  305.    /**
  306.      * @method logitud
  307.      * @param Array arreglo
  308.      * @return Number
  309.      */
  310.    logitud:function(vector){
  311.        if ((typeof vector) == "object") {
  312.            return vector.length;
  313.        }
  314.    },    
  315. }
  316.  
  317. Min.DOM={
  318.    documento: document,
  319.    /**
  320.      * @method obtenerElementoID
  321.      * @param String id
  322.      * @return Object
  323.      */
  324.    obtenerElemento:function(id){
  325.        return Min.DOM.documento.getElementById(id);
  326.    },
  327.    /**
  328.      * @method DOMCompleto
  329.      * @param Function f
  330.      */    
  331.    DOMCompleto:function(f){
  332.        Min.Ventana.ventana.onload=function(){
  333.            f();    
  334.        }
  335.    },
  336.    /**
  337.      * @method obtenerPrimerHijo
  338.      * @return Object
  339.      */
  340.    obtenerPrimerHijo: function(){
  341.        return Min.DOM.documento.firstChild;
  342.    },
  343.    /**
  344.      * @method obtenerUltimoHijo
  345.      * @return Object
  346.      */
  347.    obtenerUltimoHijo: function(){
  348.        return Min.DOM.documento.lastChild;
  349.    },
  350.    obtenerPadre:function(el){
  351.        return el.parentNode;
  352.    },
  353.    /**
  354.      * @method obtenerBody
  355.      * @return Object
  356.      */
  357.    obtenerBody:function(){
  358.        return document.getElementsByTagName('body')[0];
  359.    },
  360.    /**
  361.      * @method insertarElemento
  362.      * @param object padre
  363.      * @param object hijo
  364.      */
  365.    insertarElemento:function(padre,hijo){
  366.        return padre.appendChild(hijo);
  367.    },
  368.  
  369.    agregarEvento:function(obj,evento,funcion){
  370.      var n = Min.Navegador.obtenerNavegador();
  371.      if(n==1){
  372.        obj.addEventListener(evento,funcion,false);
  373.      }
  374.  }
  375. }
  376.  
  377. Min.Ventana={
  378.    ventana: window,
  379.    ancho: window.screen.width,
  380.    alto: window.screen.height,
  381.    /**
  382.      * @method moverCapas
  383.      * @param String el
  384.      */    
  385.    moverCapas: function(el){
  386.        this.naveador=Min.Navegador.obtenerNavegador();
  387.        this.elemento=el;
  388.        this.comenzarMovimiento=function(){
  389.            var elMovimiento=document.getElementById(this.getId());
  390.            elMovimiento.style.position="relative";
  391.            elMovimiento.onmousedown=function(event){
  392.                cursorComienzoX=event.clientX+window.scrollX;
  393.                cursorComienzoY=event.clientY+window.scrollY;
  394.                document.addEventListener("mousemove",enMovimiento, true);
  395.                document.addEventListener("mouseup",finMovimiento, true);
  396.                elComienzoX=parseInt(elMovimiento.style.left);
  397.                elComienzoY=parseInt(elMovimiento.style.top);
  398.                function enMovimiento(event){
  399.                    var xActual, yActual;
  400.                    xActual=event.clientX+window.scrollX;
  401.                    yActual=event.clientY+window.scrollY;
  402.                    elMovimiento.style.left=(elComienzoX+xActual-cursorComienzoX)+"px";
  403.                    elMovimiento.style.top=(elComienzoY+yActual-cursorComienzoY)+"px";
  404.                    elMovimiento.style.opacity="0.4";
  405.                    evitaEventos(event);
  406.                }
  407.  
  408.                function finMovimiento(){
  409.                    document.removeEventListener("mousemove", enMovimiento, true);
  410.                    document.removeEventListener("mouseup", finMovimiento, true);
  411.                    elMovimiento.style.opacity="1";
  412.                }
  413.  
  414.                function evitaEventos(){
  415.                    event.preventDefault();
  416.                }
  417.            }
  418.        }
  419.        this.getId=function(){
  420.            return this.elemento;
  421.        }
  422.    },
  423.    crearVentana:function(titulo,ancho,alto){
  424.        alert(alto);
  425.        var b = Min.DOM.obtenerBody();
  426.        var d = document.createElement('div');
  427.        d.setAttribute('id','ventana1');
  428.        d.setAttribute('style','width: '+ancho+'px; height:'+alto+'px;');
  429.        d.setAttribute('class','ventana');
  430.        var panel = Min.DOM.insertarElemento(b,d);
  431.        d = document.createElement('div');
  432.        d.setAttribute('id','titulo');
  433.        d.setAttribute('class','ventana');
  434.    }
  435. }
  436.  
  437. Min.Navegador={
  438.    obtenerNavegador: function(){
  439.        if(navigator.userAgent.indexOf("MSIE")>=0){
  440.            return navegador=0;    
  441.        }
  442.        return navegador=1;    
  443.    },  
  444.  obtenerSistemaOperativo:function(){
  445.  
  446.  }    
  447. }
  448.  
  449. Min.Efectos={
  450.    /**
  451.      * @method iluminarElemento
  452.      * @param Number inicio
  453.      * @param Number fin
  454.      * @param Object el
  455.      */
  456.    iluminarElemento:function(inicio,fin,el){
  457.        if(Min.valiciones.esNumero(inicio)&&Min.valiciones.esNumero(fin)){
  458.  
  459.        }
  460.    }
  461. }
  462.  

Les dejo un Ejemplo:

Código
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.  <head>
  3.  <script src="framework.js"></script>
  4.  <script>
  5.    Min.DOM.DOMCompleto(function(){
  6.      var obj = Min.DOM.obtenerElemento('a');
  7.      Min.DOM.agregarEvento(obj,"click",function(){
  8.        alert("Este es un evento Click en el Objeto: "+this.id);
  9.      });
  10.    })
  11.  </script>
  12.  </head>
  13.  <body>
  14.  
  15.    <div id="a">
  16.        <h1>HOLA</h1>
  17.    </div>
  18.  
  19.  </body>
  20. </html>
  21.  
15  Programación / ASM / ASM y Robotica en: 2 Octubre 2010, 17:44 pm
Me Meti en un proyecto de mi universidad y es un competencia de Robots y yo soy de la parte de programacion, tengo nociones basicas de ASM pero la verdad no soy tan bueno en este lenguaje, queria perdirles consejo, por donde empiezo?, existen librerias? o si hay otro lenguaje de programacion que me facilite mas el desarrollo !!
16  Programación / Programación General / [Fundamentos] Programación Orientada a Objetos en: 2 Septiembre 2010, 20:53 pm
Introducción

La programación orientada a objetos (POO) nos permite escribir código menos propenso a fallos además de permitirnos la re utilización de código de forma más conveniente.

En el siguiente articulo tratare unos conceptos básicos que debemos tener en cuenta a la hora de programar bajo este paradigma y de cómo utilizar los distintos elementos que nos permitirán crear código que sea más fácil de escribir y mantener 

Los Pilares de la POO

La programación orientada objetos (que aquí en adelante la voy a llamar POO) tiene tres características esenciales y son el alma de este estilo de programación estos son:

    * Encapsulación
    * Herencia
    * Polimorfismo

Encapsulación: Es la cualidad de unificar los datos y la forma de manipularlos, de esta forma podemos ocultar el funcionamiento de una clase y exponer solo los datos que manipula (mediante propiedades o atributos), así como proveer de medios para poder manipular dichos datos (mediante métodos). De esta forma solo exponemos al mundo exterior la información y la forma de manipularla, ocultando los detalles usados para manejar esos datos y, lo que es más importante, evitando que nadie manipule de una forma no controlada dicha información.

Herencia: Es la cualidad de poder crear nuevas clases (o tipos) basadas en otras clases, de forma que la nueva clase obtenga todas las características de la clase que ha heredado, tanto los datos que contiene como la forma de manipularlos, pudiendo añadir nuevas características e incluso cambiar el comportamiento de algunas de las incluidas en la clase base, (siempre que así se haya previsto). Mediante la herencia podemos crear de forma fácil una jerarquía de clases que comparten un mismo comportamiento básico pero que cada nueva generación puede tener (y de hecho tiene) un nuevo comportamiento.

Polimorfismo: es la cualidad de implementar de forma particular algunas de las características que tienen las clases, de forma que cuando necesitemos usarlas no nos preocupe la implementación interna que cada una tenga, lo que realmente nos interesa o nos debe importar es que podemos usar esas características e incluso podamos acceder a ellas de forma anónima.

¿Por Que POO?

# Se parece mas al mundo real
# Permite Representar Modelos Complejos
# Muy apropiada para aplicaciones de Negocio (BPM)
# Las dos grandes plataformas del mercado han adoptado este paradigma Java y .NET

FUENTE
17  Programación / ASM / [Aporte] Hola Mundo en MASM32 en: 30 Agosto 2010, 01:13 am
Hola Mundo en MASM32

Ahora vamos a empezar programando el Hola Mundo en MASM32, usando la API de Win32. En mi anterior articulo podemos estructurar un programa en este Macro Assembler, en los archivos creador hay un archivo de extensión *.Inc y *.Asm, entonces en el primero archivo contendrá todas las librerías necesarias para ejecutar un programa, recuerden que esta librerias contiene funciones que no hacen las vida mas fácil !!!

El archivo *.Inc debe quedar de esta forma:

Código
  1. include windows.inc
  2. include user32.inc
  3. include kernel32.inc
  4.  
  5. includelib user32.lib
  6. includelib kernel32.lib
  7.  
  8. ;Sgmeto de datos
  9. .data
  10. ;Creamos un variable con el contenido de mi mensaje
  11. Mensaje db "HOLA MUNDO SOY 4ng3r",0
  12. Titulo db "Saludo en MASM32",0


El archivos *.Asm debe quedar de la siguiente forma:

Código
  1. .386
  2. .model flat,stdcall
  3. option casemap:none
  4.  
  5. ;llamanos al archivo *.Inc
  6. include prueba1.inc
  7.  
  8. .code
  9. prueba1:
  10.  
  11. invoke MessageBox,NULL,addr Mensaje, addr Titulo, MB_OK
  12. invoke ExitProcess,0
  13.  
  14. end prueba1
  15.  

Una vez hallamos terminado, procedemos a ensamblarlo, estructurarlo y ejecutarlo. Este debería ser el resultado:

18  Programación / ASM / [Aporte de 4ng3r] MASM32 - RadAsm y Estructura Basica en: 30 Agosto 2010, 01:12 am
MASM32 - RadAsm y Estructura Basica

Introduccion

Masm32 es un excelente conjunto de herramientas de programación, distribuído por Hutch, que incluye el Macro Assembler de Microsoft, macros, ayudas y todas las librerías (.lib) y archivos 'include' (.inc) necesarios para programar aplicaciones en assembler para Windows.

Pagina Principal: http://www.masm32.com/

RadASM

Para que se nos haga mas fácil la vida, esta a nuestra dispositivo un IDE para Assembler llamado RadASM, una vez lo hayamos descargado e instalado, procedemos a crear nuestro primer proyecto:



En la opción de ensamblador escogemos masm y en tipo de proyecto marcamos Win32 App, le asignamos un nombre al proyecto yo escoji prueba1, la ruta donde va ser almacenada y Next

Luego escogemos los archivos a crear con el proyecto, en este caso activaremos la casilla de Asm, Inc y Bak


Estas opciones las dejamos tal cual y oprimimos Finish

Al lado derecho se pueden observar los archivos que hemos creado.


Abrimos el archivo Asm y nos ponemos programar

Estructura Basica

Un Programa para Masm32 debe seguir una estructura que pueda ser entendida por nuestro compilador, por ejemplo:

Código
  1. .386
  2. .model flat,stdcall
  3. option casemap:none
  4.  
  5. include windows.inc
  6. include kernel32.inc
  7. includelib kernel32.lib
  8.  
  9. .data
  10.  
  11. .code
  12. prueba1:
  13.  
  14. invoke ExitProcess,0
  15.  
  16. end prueba1
  17.  

Explicacion:

.386 - Esta directiva sirve para establecer el tipo de procesador y sus instrucciones con lo que se va a trabajar

.model flat,stdcall - Aquí establecemos el modelo de memoria requerido para nuestro programa

option casemap:none - Esta opcion hace sensible las mayucualas de las minusculas, es decir, que B es difetente A

include y includelib - Como todo en Windows, Masm32 incluye archivos y librerías para manejar un gran numero de funciones que existen en este sistema operativo, es decir para usar el API. Por ejemplo en la estructura anterior use el ExitProcess. Include lo usamos para agregar o importar archivos *.asm o *.inc en cambio Includelib lo usamos para agregar librerías *.lib.
.data - Es el segmento en donde estableceremos los datos a utilizar en el programa, existen dos tipo de información la inicializada y la no inicializada (.data?)

.code - Es el segmento en donde le indicamos a Mam32 donde empieza el código y donde termina


FUENTE
19  Programación / Bases de Datos / Historial de Cotizaciones, optimizacion en: 2 Julio 2010, 19:42 pm
Tengo un cliente que requiere lo siguiente, para que opinen cual debería ser la mejor solución optima y me ayuden de paso jejeje  ;D.

Mi cliente quiere tener el historial de la cotizaciones realizadas por un vendedor, el cual obviamente va tener su estado (pendiente, se llamo al cliente, se cancelo la cotización o se confirmo la cotización) y la información del formulario que tiene la posibilidad de ir cambiando con el paso del tiempo, según la negociación....

que me recomiendan a nivel de modelo entidad relación administrar esto y que es lo mas optimo??? para no estar creando miles y miles de registros

20  Programación / Desarrollo Web / [Aporte] Aplicaciones RIA con EXTJS – Introduccion- ¿Que es RIA? en: 2 Julio 2010, 16:38 pm
Aplicaciones RIA con EXTJS

Es de saber que el Ext Js es uno de lo frameworks mas completos para javascript, con el podemos desarrollar e implementar aplicaciones RIA de alta calidad asi que a continuación dare un abre bocas de este espectacular framework.

¿Que es RIA?

RIA, del acrónimo Rich Internet Aplication o en español Aplicaciones de Internet Enriquecidas, son aplicaciones WEB que contiene la mayoría de características de la aplicaciones tradicionales, estas aplicaciones usan un navegador estándar para ejecutarse y por medio de un plugin se le pueden seguir agregando características.

Esto mejor de manera notable la experiencia del usuario y aporta un alto valor de portabilidad ya que él (usuario) puede acceder a sus datos en cualquier momento y en cualquier lugar.

Lo mas fastidioso de las paginas WEB, mejor dicho de la aplicaciones en linea es la constantes actualizaciones que debe hacer el usuario para poder realizar cambios a la información persistente del sistema. De esta forma se produce un trafico muy alto entre el cliente y el servidor, y esto puede poner a nuestro usuario de muy mal humor.

En los entornos RIA, en cambio, no se producen recargas de página, ya que desde el principio se carga toda la aplicación, y sólo se produce comunicación con el servidor cuando se necesitan datos externos como datos de una Base de Datos o de otros ficheros externos.

Otra de las desventajas de las tradicionales aplicaciones Web es la poca capacidad multimedia que posee. Para ver un vídeo es necesario usar un programa externo para su reproducción.

Las capacidades multimedia son totales gracias a que estos entornos tienen reproductores internos y no hace falta ningún reproductor del Sistema Operativo del usuario.


Arquitectura


Esta es un arquitectura bastante clásica en un desarrollo de software basado en tres capas , alejándonos por completo del inutilizado modelo de dos capas Cliente-Servidor.

En el modelo de tres capas podemos encontrar:

Capa de Modelo de Usuario: en esta capa encontramos todo el modelo de la interfaz de usuario o GUI, en este punto RIA cobra importancia por es el quien va a administrar cada uno de los compones y todos los llamados a la segunda capa.

Se maneja la interacción entre el usuario y la “interfaz del usuario”, el usuario invoca comandos, actualiza vistas y carga datos. Aquí se mantiene el estado de la aplicación, se manejan todas las peticiones de datos hacia el servidor y se controla como se presentan los datos.

Capa de Procesos de Negocio: simplemente trabaja paquetes contratados por el cliente, se administra el flujo de trabajo (Work Flow), moldeamiento, reglas de negocio y toda la parte de la Arquitectura Orientada a Servicios.

Capa de Datos: aca se encuentra todos los origines de datos, como bases y bodegas de datos, servidores de correo entre otros.

Nota: Esto merece mucho mas estudio de fondo pero por ahora no es importante para el articulo.

Características clave

  • Accesibilidad: AJAX en nativo en los “navegadores web” y es el único “RIA framework” que puede ser encontrado por los diferentes motores de búsqueda.
  • Comunicaciones avanzadas: con servidores que soporten nuevas tecnologías se puede mejorar la experiencia del usuario al utilizar protocolos de red optimizados y entradas y salidas asíncronas. Se requiere de una conexión de banda ancha confiable
  • Instalación y mantenimiento: se requiere de la instalación de “plugin”, “virtual machine” o “sandbox”, que generalmente es más rápida que la instalación de una aplicación tradicional y esta no se puede automatizar. Las actualizaciones son automáticas
  • Offline: puede ser soportada reteniendo el estado en la máquina cliente

Funte
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines