Categories

Mostrando entradas con la etiqueta Programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programacion. Mostrar todas las entradas

domingo, 12 de octubre de 2025

Arquitectura del ordenador

 La información o datos (como se le quiera llamar) se carga en el ordenador, se procesa, y sale nueva información. Pero lo que verdaderamente nos interesa es lo que ocurre dentro del bloque que representa al ordenador.

Fig. 1 Diagrama de bloques del ordenador.

martes, 8 de septiembre de 2020

Nociones Básicas de lenguaje de programación JAVA

Estructura Básica de JAVA

Java es un lenguaje muy funcional, fue diseñado para ser parecido a C++, concretamente para facilitar un rápido y fácil aprendizaje para un gran número de programadores.

Java elimina muchas de las características de C++, para mantener la simplicidad del lenguaje añade caracteristicas muy útiles como el "garbage collector"(reciclador de memoria dinámica o recolector automático de basura).

No es necesario preocuparse de liberar memoria, el recolector de basura se encarga de ello. Como es una aplicación que se ejecuta "en segundo plano" (programa que se ejecuta en memoria de forma concurrente a otras a otroas aplicaciones) y es de baja prioridad, cuando entra en acción, permite liberar bloques de memoria muy grande, lo que mejora la gestión de la memoria.

miércoles, 4 de septiembre de 2019

Recursividad y función Fibonacci

Concepto

La recursividad es un mecanismo que parece no aportar nada y que le resulta muy es algo complicado de entender. Se puede resumir como un mecanismo muy potente con el que se consigue que determinados programas mejoren su rendimiento y se escriban de forma más simple y clara, facilitando la actualización y modificación del código.

En programación, se usa el término recursividad para referirnos a procedimientos o métodos que contienen en su implementación llamadas a sí mismo, es decir un método es recursivo si para ejecutarse se llama así mismo.

martes, 4 de junio de 2019

Busqueda de datos en un ArrayList

Codigo ejemplo interesante para realizar busqueda de datos dentro de un ArrayList:

       if (!listaTenistas.isEmpty()) {
          int i = 0;
          Tenista t = null;
          boolean encontrado = false;
          while (!encontrado && i < listaTenistas.size()) {
             t = listaTenistas.get(i);
             if (t.getNombre().equalsIgnoreCase(jtNombreBuscar.getText())) {
                encontrado = true;
             } else {
                i++;
             }
          }
          if (encontrado) {
             indice = i;
             mostrarDatosTenista(indice);
          } else {
             JOptionPane.showMessageDialog(this, "El tenista " + jtNombreBuscar.getText() + " no ha sido encontrado", "No encontrado", JOptionPane.ERROR_MESSAGE);
          }

       } else {
          JOptionPane.showMessageDialog(this, "No se han añadido tenistas a la lista", "Lista vacía", JOptionPane.ERROR_MESSAGE);
       }


listaTenista es el ArrayList, de la clase Tenista, en la que se crea un metodo privado que devuelve el nombre escrito en el campo de texto jtNombreBuscar. metodo llamado getNombre().

lunes, 27 de marzo de 2017

El objeto Event

Los generadores de eventos necesitan información adicional para procesar las tareas que tienen que realizar. Si una función procesa, por ejemplo, el evento click, lo más probable es que necesite conocer la posición en la que estaba el ratón en el momento de realizar el click; aunque esto quizás tampoco sea muy habitual, a no ser que estemos programando alguna utilizadad de tipo gráfico.

Lo que sí es más común es tener información adicional en los eventos del teclado. Ejemplo, cuando pulsamos una tecla nos interesa saber cuál ha sido la tecla pulsada, o si tenemos a mayores alguna tecla especial pulsada como Alt, Control. Etc.

Los navegadores gestionan de forma diferente los objetos Event. Por ejemplo, en las versiones antiguas de Internet Explorer, el objeto Event forma parte del objeto window, mientras que en otros navegadores como Firefox, Chrome, etc., para acceder al objeto Event lo haremos a través de un parámetro, que escribimos en la función que gestionará el evento.

Nota: En Internet Explorer no se puede programar que un evento se dispare en la fase de captura, ya que el IE los eventos siempre burbujean.




El DOM, sus propiedades y métodos

El DOM (Modelo de Objeto del Documento), es esencialmente una interfaz de programación de aplicaciones (API), que proporciona un conjunto estándar de objetos, para representar documentos HTML y XML, un modelo estándar sobre cómo pueden combinarse dichos objetos, y una interfaz estandar para acceder a ellos y manipularlos. A través del DOM los programas pueden acceder y modificar el contenido, estructura y estilo de los documentos HTML y XML, que es para lo que se diseño principalmente. El responsable del DOM es el W3C.

El DOM está separado en 3 partes / niveles:

DOM Core - modelo estándar para cualquier documento estructurado.
DOM XML - modelo estándar para documentos XML.
DOM HTML - modelo estándar para documentos HTML.

El DOM HTML es un estándar dónde se define cómo acceder, modificar, añadir o borrar elementos HTML.

En el DOM se definen los objetos y propiedades de todos los elementos del documento, y los métodos para acceder a ellos.

Hay que tener en cuenta que muchas de las funciones de Internet Explorer 4 y posteriores del modelo de objetos, no forman parte de la expecificación DOM W3C.



El DOM transforma todos los documentos XHTML en un conjunto de elementos, a los que llama nodos. En el HTML DOM cada nodo es un objeto. Estos nodos están conectados entre sí y representan los contenidos de la página web, y la relación que hay entre ellos. Cuando unimos todos estos nodos de forma jerárquica, obtenemos una estructura similar a un arbol, por lo que muchas veces se suele referenciar como árbol DOM, "árbol de nodos", etc.

Ejemplo de arbol de nodo:


Los rectángulos del gráfico representa un nodo del DOM, y las lineas representan la relación entre los nodos. La raíz del árbol de nodos es un nodo especial, denominado "document". A partir de ese nodo, cada etiqueta XHTML se transformará en nodos de tipo "elemento" o "texto". El nodo inmediantamente superior será el nodo padre y todos los nodos que están por debajo serán nodos hijos.

Algunos de los tipos de nodos:

document, es el nodo raíz y del que derivan todos los edemás nodos del árbol.
element, representa cada una de las etiquetas XHTML. Es el único nodo que puede contener atributos y el único del que pueden derivar otros nodos.
Attr, con este tipo de nodos representamos los atributos de las etiquetas XHTML, es decir, un nodo por cada atributos = valor.
Text, es el nodo que contiene el texto encerrado por una etiqueta XHTML.
comment. representa los comentarios incluidos en la página XHTML.

Los otros tipos de nodos pueden ser: CdataSection, documentFragment, documentType, EntityReference, entity, Notation y processingInstruction.

Acceso a los nodos.

El accededr a un nodo específico lo podremos hacer empleando dos métodos: a través de los nodos padres, o bien usando método de acceso directo. A través de los nodos padres partiendo del nodo raiz, accediendo a los nodos hijos y asi sucesivamente hasta llegar al elemento que queriamos.

GetElementsName(), Esta función obtiene una colección, que contiene todos los elementos de la página XHTML cuyo atributo name coincida con el indicado como parámetro.

var elementos = document.getElementsByName("apellidos");

Una colección no es un array, aunque se le parezca mucho, ya que aunque puedas recorrerla y referenciar a sus elementos como un array, no se pueden usar métodos de array, como push o pop, en la colección.

getElementById(), esta función es la más utilizada, ya que nos permite acceder directamente al elemento por el ID. Entre paréntesis escribiremos la cadena de texto con el ID. Es muy importante que el ID sea único para cada elemento de una misma página. La función nos devolverá únicamente el nodo buscando.

var elemento= document.getElementById("apellidos");

NOTA: Cuando escribimos los atributos en HTML, da igual que se pongan en mayúsculas o minúsculas, pero si estamos trabajando con XHTML debermos escribirlos siempre en minúculas , ejemplo type, value, size, etc.

El tamaño máximo de lo que se puede almacenar en un nodo de texto, depende del navegador, por lo que muchas veces, si el texto es muy largo, tendremos que consultar varios nodos para  ver todo el contenido.

En el DOM de HTML, para acceder al valor de un nodo de texto, o modificarlo, es muy común ver la porpiedad innerHTML. Esta propiedad es de microsoft al igual que outerHTML. Aunque hasta HTML5 no estaba en el estándar de W3C esta propiedad está soportada por todos los navegadors, y es muy rápida en su uso para hacr modificaciones, del contenido de un DIV por ejemplo. outerHTML no se soporta en el estandar.

Para modificar el contenido del nodo, modificaremos la propiedad nodeValue.

document.getElementsByTagName("p")[0].childNodes[1].firstChild.nodeValue = "Texto MODIFICADO";

Lo que hace es cambiar la cadena de texto "texto HTML", por "texto MODIFICADO".

Creación y borrado de nodos

La creación y borrado de nodos fue uno de los objetos para los que se creó el DOM. Podremos crear elementos y luego insertarlos en el DOM, y la actualización quedará reflejada automaticamente por el navegador. También podremos mover nodos ya existentes, simplemente insertándolo en cualquier otro lugar del árbol del DOM.

Ten en cuenta que cuando estemos creando nodos de elementos, el elemento debe estar en minúsculas. Aunque en HTML esto daría igual, el XHTML sí que es sensible a mayúsculas y tendrá que ir, por lo tanto, en minúsculas.

para crear se usan los metodos createElement(), createTextNode() y appendChild(), que nos permitirán crear un elemento, crear un nodo de texto y añadir un nuevo nodo hijo.


//Creamos tres elementos nuevos: p, b, br var elementoP = document.createElement('p'); var elementoB = document.createElement('b'); 
var elementoBR = document.createElement('br'); 

 //Le asignamos un nuevo atributo title al elementoP que hemos creado. elementoP.setAttribute('title','Parrafo creado desde JavaScript'); 

 //Preparamos los nodos de texto var texto1 = document.createTextNode('Con JavaScript se '); var texto2 = document.createTextNode('pueden realizar '); var texto3 = document.createTextNode('un monton'); var texto4 = document.createTextNode(' de cosas sobre el documento.'); 

 //Añadimos al elemento B los nodos de texto2, elemento BR y texto3. elementoB.appendChild(texto2); elementoB.appendChild(elementoBR); elementoB.appendChild(texto3); //Añadimos al elemento P los nodos de texto1, elemento B y texto 4. elementoP.appendChild(texto1); elementoP.appendChild(elementoB); elementoP.appendChild(texto4); 

 //insertamos el nuevo párrafo como un nuevo hijo de nuestro párrafo document.getElementById('parrafito').appendChild(elementoP);

Propiedades y métodos de los objetos nodo

Todo lo que se utiliza en la actualidad es el DOM 2, y algunas de las extensiones de DOM 3. Por que el DOM 3 esa creado para XHTML.

Nota: hay que procurar evitar utilizar funciones especificas de DOM 1 por los problemas inesperados que se pueddad dar sobre todo si se utilizan en XHTML.

 Gestión de eventos

Cuando el usuario hace algo, se produce un evento. Tambien habrá algunos eventos que no están relacionados directamente con acciones de usuario: ejemplo: el evento carga de un documento, que es el caso de "load", se dispara automaticamente cuando un documento ha sido cargado en el navegador.

Existen diferencias, en lo que es la gestión de eventos, por unos navegadores u otros. Esas diferencias provocan que los programadores tengan que tener mucha precaución con los métodos y propiedades que usan, dependiendo del navegador que ejecutará la página de javascript.

un ejemplo de solución es cross-browser para asignar evento, independientemente del navegador utilizado. Ejemplo:

function crearEvento(elemento, tipoEvento, funcion) {
    if (elemento.addEventListener) {
        elemento.addEventListener(tipoEvento, funcion, false);
    } else if (elemento.attachEvent) {
        elemento.attachEvent("on" + tipoEvento, funcion);
    } else {
        elemento["on" + tipoEvento] = funcion;
    }
}
var miparrafo = document.getElementById("parrafito");
crearEvento(miparrafo, 'click', function () {
    alert("hola")
});
el método addeventListener() no funciona en Internet Explorer 8, pero sí en cambio está ya implementado en Internet Explorer 9. Si tienes Windows XP no podrás usar ese evento ya que la última versión de IE que se puede usar en Windows XP es la 8 y no deja instalar la versión 9. La recomendación es que tengas las ultimas versiones de Mozilla Firefox o Google Chrome.

sábado, 25 de febrero de 2017

El objeto RegExp

El objeto regExp es tanto un literal como un objto de javaScript, por lo que también se podrá crear usando un constructor:

var expresionregular = new RegExp("texto expresion regular");

La expresión RegExp es compilada cuando se ejecuta el script, por lo tanto se recomienda usar el literal cuando sabemos que la expresión no cambiará. Una versión compilada es mucho más eficiente.

Usaremos el objeto, cuando asbemos que la expresión regular va a cambiar, o cuando vamos a proporcionarla en tiempo d ejecución.

Al igual que otros objetos en javascript, el objeto regExp también tiene sus propiedades y métodos.

global: Especifica que sea utilizado el modificador "g".
ignoreCase: Especifica que sea utilizado el modificador "i".
lastIndex: El índice donde comenzar la siguiente búsqueda.
multiline: Especifica si el modificador "m" es utilizado.
source: El texto de la expresión regular RegExp.

Métodos de RegExp

compile(): Compila una expresión regular.
exec(): Busca la coincidencia en una cadena. Devolverá la primera coincidencia.
test(): Busca la coincidencia en una cadena. Devolverá true o false.

Ejemplos:

// Comprobando si una subcadena existe dentro de otra
var datos = new Array();
datos[0] = "El Blogger de Google";     // verdadero
datos[1] = "El blogger de Google";          // falso
datos[2] = "BloggerGoogle";          // verdadero
datos[3] = "Google Blogger";          // falso
 
var patron = /Blog.*Goog/;
// Patrón de búsqueda
// Contenga "Blog" cualquier caracter(.) 0 o más veces (*) y a continuación "Goog"
for (var i = 0; i < datos.length; i++)
  alert(datos[i] + " " + patron.test(datos[i]));

// Validación de un número de Seguridad social americano

function comprobar()
{  
     var numero = document.getElementById("ssn").value;
     var patron = /^\d{3}-?\d{2}-?\d{3}$/;
     if (numero.match(patron))
          alert("Correcto: el número "+numero+" cumple el estándar americano");
     else
          alert("Error: el número "+numero+" NO cumple el estandar.");
}

viernes, 24 de febrero de 2017

Expresiones regulares y objetos regExp

Las expresiones regulares son patrones de búsqueda, que se pueden utilizar para encontrar txto que coincida con el patrón especificado.

ejemplo de busqueda sin utilizar expresiones regulares:

var texto = "la linea de alta velocidad llegará pronto a toda España,";
var subcadena = "velocidad";
var i = texto.indexOf(subcadena); // devuelve 17, índice de donde se encuentra la subcadena.

if (i != -1) // correcto, se ha encontrado la subcadena.

Este código funciona porque esta buscando cadenas que cumplen un patrón en lugar de una cadena exacta. ¿Pero qué pasaría si hiciéramos una búsqueda más general? Por ejemplo si quisiéramos buscar la cadena "car" en textos como "cartón", "bicarbonato", "practicar", ...?

Cuando se búsque cadenas que cumplen un patrón en lugar de una cadena exacta, necesitaremos usar expresiones regulares. Podrías intentar hacerlo con funciones de string, pero al final, es mucho más sencillo hacerlo con expresiones regulares, aunque la sintaxis de las mismas es un poco extraña y no necesariamente muy amigable.

En javascript las expresiones regulares se gestionan a través del objeto regExp.

Crear un literal del tipo regExp:

var expresion = /expresion regular/;

La expresión regular está contenida entre "/", y no lleva comillas. Las comillas sólo se pondrán en la expresión regular, cuando formen parte del patrón en si mismo.

Las expresiones regulares están hechas de caracteres, solos o en combinación con caracteres especiales, que se proporcionarán para búsquedas más complejas. Por ejemplo, lo siguiente es una expresión regular que realiza una búsqueda que contenga las palabras Aloe vera, en ese orden y separadas por uno o más espacios en medio:

var expresion = /Aloe\s+Vera/;

Los caracteres especiales  en este ejemplo son, la barra invertida (\), que tiene dos efectos:

Se utiliza para indicar que se trata de un carácter especial, o se usa con carácter especial, tales como el signo más (+), para indicar que el carácter debe ser tratado literalmente. En este caso, la barra invertida se utiliza con "s", que tranforma la letra s en un carácter especial indicando un espacio en blanco, un tabulador, un slto de línea, etc. el símbolo + indica que el carácter anterior puede aparecer una o más veces.

miércoles, 22 de febrero de 2017

Modelo de registro de eventos tradicional

En los navegadores antiguos, el modelo que se utilizaba era el modelo en línea. Con la llegada de DHTML, el modelo se extendió para ser más flxible. En este nuevo modelo el evento pasa a ser una propiedad del elemento, así que por ejemplo los navegadores modernos ya aceptan el siguiente código de javaScript:

elemento.onclick = hacerAlgo; // cuando el usuario haga click en el objeto, se llamara a la función hacerAlgo();

Esta forma de registro, no la estandarizo W3C, pero debido a que fue ampliamente utilizada por netscape y Microsoft, todavia es válida hoy en día. La ventaja de este modelo es que podremos asignar un evento a un objeto desde javaScript, co lo que ya estamos separando el código de la estructura. Fíjate que aquí los nombres de los eventos si que van siempre en minúsculas.

elemento.onClick = hacerAlgo;

Para eliminar un gestor de eventos de un elemento u objeto, le asignaremos null:

elmento.onclick = null;

Otra gran ventaja es que como el gestor de eventos es una función, podremos realizar una llamada directa a ese gestor, con lo que estamos disparando el evento de forma manual. Por ejemplo:

elemento.onClick();
// al hacer click estamos disparando el evento de forma manual y se ejecutará la función hacerAlgo();


Modelo de registro de eventos en línea

En el modelo de registro de eventos en líneas (estandarizado por Netscape), el evento es añadido como un atributo más a la etiqueta HTML.

Cuando hacemos click en el enlace, se llama al gestor de eventos onclick(al hacer click) y se ejecuta el script; que contiene en este caso una alerta de javascript. También se podría realizar lo mismo pero llamando a una función:

function alertar() {
   alert("Has pulsado en el enlace");
}

La mezcla de minúsculas y mayúsculas en los nombres de evento (onClick, onMouseOver) es sólo por tradición, ya que HTML es insensible a mayúsculas y minúsculas. En cambio en XHTML, sí que los atributos tendrán que ir obligatoriamente siempre en minúsculas: tienes que escribir onClick y onMouseOver. Es muy importante que te fijes en ésto, ya que probablemente trabajarás con XHTML y deberás cumplir el estandar: "todos los nombres de atributos irán siempre en minúscula".

No uses el modelo de registro de eventos en línea

no se recomienda el modelo, aun que en algún ejemplo lo hayas visto.

Si un evento genera la ejecución de un script y además también se genera la acción por defecto para ese objeto entonces:

1.- el script se ejecutará primero.
2.- La acción por defecto se ejecutará después.

Hay que evitar la acción por defecto

A veces es interesante el bloquear o evitar que se ejecute la acción por defecto. Por ejemplo, en nuestro caso anterior podríamos evitar que nos conecte con la nueva pagina.html. Cuando programamos un gestor de eventos, ese gestor podrá devolver un valor booleano true o false.

onClick="alertar(); return false"

También se podría crear una función y que nos preguntará si queremos o no ir a la pagina pagina.html:

onClick="return preguntar()"


function preguntar() {
     return confirm("¿Desea realmente ir a esa dirección?");
}

martes, 21 de febrero de 2017

Eventos en Javascript

Hay que tener en cuenta que, sin eventos pŕaticamenete no hay scripts. En casi todas las paginas web que incorporan Javascript, Suele haber eventos programados que disparan la ejecución de dichos scripts, por que javascript fue diseñado para añadir interactividad a las páginas: el usuario realiza algo y la página reacciona.

Por lo tanto, javascript necesita detectar de alguna forma las acciones del usuario para saber cuando reaccionar. También necesita saber las funciones, que queremos que ejecute cuando se produzcan esas acciones.

Las acciones:
Cuando el usuario hace algo se produce un evento. Puede haber eventos que no esten relacionando directamente con la acción que pueda realizar un usuario, por ejemplo eventos de carga(load) de un documento, que se produce cuando el documento ha sido cargado.

Tipos de eventos:
Los eventos mouseOver y mouseOut se hicieron muy famosos a raíz de su utilización para hacer el efecto de sustitución de una imagen por otra al pasar el raton por encima.


Incompatibilidades entre navegadores

Muchas veces, lo que se hacía en un principio antes de programar cualquier evento, era detectar qué navegador estábamos utilizando, para saber si nuestro navegador soportaba, o no, los métodos y propiedades que queríamos usar.


if (Netscape) {
        utilizar modelo Netscape
}
else if (Explorer) {
        utilizar modelo Microsoft
}

Pero hoy en día ni esto ni el modelo de detección basado en DHTML se recomiendan debido a las diferencias que hay entre todos los navegadores actuales. Por lo tanto hay que intentar usar modelos de detección de eventos estándar y que sean los navegadores los que tengan que adaptarse a ese modelo.

Usando "this" en funciona javascript

En javascript tenemos un método que nos permite llamar a una función, pasándole directamente la referencia del objeto, sin tener que usar variables globales o referenciar al objeto al comienzo de cada función.

Par hacerlo hay que se necesita usar la palabra reservada this, que hace referencia siempre al objeto que contiene el código de javasript en donde usamos dicha palabra reservada.

ejemplo:
Si programamos una función para un botón, que al hacer click haga algo, ai dentro de esa función usamos la palabra this,entonces estaremos haciendo referencia al objeto en el cúal hemos hecho click, que ene este caso será el botón. El uso de this nos permitira evitar usar variable globales, y el tener que programar script más genéricos.

ejemplo:
<input id="edad" name="edad" onclick="identificar(this)" type="text" value="55" />  

Y se accede con la función:

function identificar(objeto) { 
   var atrName = objeto.name; 
   var atrId = objeto.id; 
   var atrValue = objeto.value; 
   var atrType = objeto.type; 
   alert("Datos del campo pulsado: Name: " + atrName + " ID: " + atrId + "Value: " + atrValue + "Type: " + atrType); 
}

En este ejemplo, cada vez que hagamos click en alguno de los objetos, llamaremos a la función indentificar(this), y a esa función le pasaremos como parámetro this, que en este caso será la referencia al objeto en el cuál hemos hecho click. La función indentificar() recibe ese parámetro, y lo almacena en la variable objeto, la cuál le permit imprimir todas las referencias al name, id, value y type.



viernes, 24 de junio de 2016

El desarrollo y diseño web

La web fue creada por Tim Berners-Lee, un especialista del laboratorio europeo de partículas (CERN) en 1989. Su creación fue pensada como una necesidad de una herramienta colaborativa que soportara el conocimiento científico, a nivel mundial.

Por web se pueden entender tres cosas:

  • El proyecto inicial del CERN
  • El conjunto de protocolos de desarrollados en dicho proyecto.
  • El espacio de información formado por todos los servidores interconectados.
El desarrollo web ha sido y sigue estando muy influenciado por múltiples campos como el de las nuevas tecnologías, los avances científicos, el diseño gráfico, la programación, las redes, el diseño de interfaces de usuario, la usabilidad y una variedad de múltiples recursos.

Areas de la web

Existen cinco áreas que cubren la mayor parte de las facetas del diseño web:

  • Contenido: Este incluye la forma y la organización del contenido del sitio. En este campo entra tanto el texto que escribimos hasta como esta organizado, presentado y estructurado usando tecnologías de marcas como HTML.
  • Visual: Hace referencia a la plantilla empleada en un sitio web. Esta plantilla generalmente se genera usando HTML, CSS o incluso Flash y puede incluir elementos gráficos para decoración o navegación. La parte visual es la parte más obvia del diseño web.pero no es la única disciplina o la más importante.
  • tecnología: Entran dentro tecnologías web como HTML o CSS, hace referencia a los distintos tipos de elementos interactivos en un sitio web, exactamente son aquellos que contribuyen empleando técnicas de programación.
  • Distribución: LA velocidad y fiabilidad con la que un sitio web se distribuye en internet o en una red interna corporativa está relacionado con el hardware/software utilizado y el tipo de arquitectura de red utilizada en la conexión.
  • Propósito: Normalmente esta relacionada la creación de un sitio web con un propósito económico. Por lo tanto este elemento debería considerarse en todas las decisiones que tomemos en las diferentes áreas. 
Cliente-servidor

Los sitios web de hoy en día siguen un modelo basado en la programación cliente-servidor, con tres elementos comunes:
  • El lado del servidor(server-side): incluye el hardware y software del servidor web así como diferentes elementos de programación y tecnologías incrustadas. Las tecnologías pueden abarcar un rango amplio desde programas CGI escritos en PERL hasta aplicaciones multihilo basadas en Java, incluyendo tecnologías de servidor de base de datos que soporten múltiples sitios web.
  • El lado del cliente(cliente-side): hace referencia a los navegadores web y está soportado por tecnologías como HTML, CSS y lenguajes como javaScript y controles ActiveX, los cuales se utilizan para crear la presentación de la página o proporcionar características interactivas.
  • La red: describe los diferentes elementos de conectividad utilizados para mostrar el sitio web al usuario.

Convertir cadenas a numeros

Para convertir cadenas a números existen las funciones: parseInt() y parseFloat().

ejemplo:

parseInt("34") // resultado = 34
parseInt("89.76") // resultado = 89
parseFloat devolverá un entero o un número real según el caso:
parseFloat("34") // resultado = 34
parseFloat("89.76") // resultado = 89.76
4 + 5 + parseInt("6") // resultado = 15

Si lo que se quiere hacer es realizar la conversión de números a cadenas, es más sencillo, por lo que solo hay que concatenar una cadena vacía al principio, de esta manera el número sera convertido a su cadena equivalente:

(" " + 3400) // resultado = "3400"
(" " + 3400).length // resultado = 4

En el último ejemplo podemos comprobar que al convertirlo a cadena, se pueden contar la cantidad de caracteres que contiene "3400". Hay que tener en cuenta que la Longitud de una cadena es un numero, no una cadena.

martes, 5 de abril de 2016

Etimología para informáticos

Bots - es un programa informático que realiza funciones muy diversas, imitando el comportamiento de un humano.

Honeypot - Se denomina honeypot(tarro de miel) al software o conjunto de computadores cuya intención es atraer a atacantes, simulando ser sistemas vulnerables o débiles a los ataques. Es una herramienta de seguridad informática utilizada para recoger información sobre los atacantes y sus técnicas. Los honeypots pueden distraer a los atacantes de las máquinas más importantes del sistema, y advertir rápidamente al administrador del sistema de un ataque, además de permitir un examen en profundidad del atacante, durante y después del ataque al honeypot.

Spambot - Es un programa informático o robot que utiliza usuarios de internet(spammers) para enviar cualquier tipo de spam o mensaje no solicitado por el receptor. El spambot envía mensajes por email, enlaces a blogs o webs en el área de comentarios, así como en redes sociales; relleno automático de formularios entre otros.

spam -  Se llama spam, correo basura o mensaje basura a los mensajes no solicitados, no deseados o de remitente no conocido (correo anónimo), habitualmente de tipo publicitario, generalmente enviados en grandes cantidades (incluso masivas) que perjudican de alguna o varias maneras al receptor. La acción de enviar dichos mensajes se denomina spamming.

Spammer - Los spammers (individuos o empresas que envían correo no deseado) utilizan diversas técnicas para conseguir las largas listas de direcciones de correo que necesitan para su actividad, generalmente a través de robots o programas automáticos que recorren internet en busca de direcciones.

Workflow - Flujo de trabajo(workflow) es el estudio de los aspectos operacionales de una actividad de trabajo: cómo se estructuran las tareas, cómo se realizan, cuál es su orden correlativo, cómo se sincronizan, cómo fluye la información que soporta las tareas y cómo se le hace seguimiento al cumplimiento de las tareas.



domingo, 2 de septiembre de 2012

DAO (Data Access Object)

Cuando nuestra aplicación tiene que acceder a diversar fuentes de datos(base de datos, archivos, servicios externos) lo hace en la capa de negocio, desde esta capa realiza todas las peticiones necesarias (CRUD). Esto es lo que normalmente hacemos, pero si necesitamos cambiar la fuente de almacenamiento de los datos tendremos que modificar la capa de negociado, sin embargo, si utilizamos objetos de acceso a datos (DAO) se encargara de realizar las peticiones CRUD, y no necesitaremos adaptar la capa de negocio, con esto conseguimos que siempre que cambiemos la manera de acceder a los datos basta con crear un objeto DAO.



Para entenderlo mejor, la capa de negocio (la misma palabra lo dice) será el encargado de recibir peticiones de la capa de vista, y este pedirá a DAO lo que el usuario solicito, puede ser crear, leer, actualizar o borrar (CRUD). De esta manera tendremos aun más separada las capas en nuestra aplicación y nos será más fácil de mantener.

Modelo: Esta es la representación específica de la información con la cual el sistema opera. Es decir, el formato de datos con los que el sistema trabaja.
Vista: Este presenta el modelo en un formato adecuado para interactuar con la interfaz de usuario.
Controlador: Este responde a eventos, usualmente acciones del usuario, e invoca peticiones al modelo y, probablemente, a la vista.

miércoles, 6 de octubre de 2010

Número capicua o palíndromo

Aún que esto sea más bien par matematicas, creo que es muy util para invertir una cifra dada para comprobar luego su son exactos el original con el resultado dado. El caso es para saber si el numero es igual leido de izquierda a derecha que de derecha a izquierda.

    public String Capicua(long num){
        long numOrigen, numInverso, calculo;
        while(num <= 0) {
                 return "El numero no puede ser negativo";
                }
        numOrigen = num;
                ni = 0;
        numInverso = 0;
        //aca le doy vuelta
        while(numOrigen != 0){
            calculo= numOrigen % 10;
            numInverso = numInverso * 10 + calculo;
            numOrigen = numOrigen / 10;

        }
        //comparando
        if (ni == num) {
                    return "El numero es capicua\n";
                }
        else {
                    return "El numero no es capicua\n";
                }
    }

Este codigo en negrita es que realiza todo el proceso.

            calculo= numOrigen % 10;
            numInverso = numInverso * 10 + calculo;
            numOrigen = numOrigen / 10;

sábado, 2 de octubre de 2010

Materiales de microcontroladores

Existen muchos de lenguaje de programación de los que podemos catalogarlos, de nivel alto (java, basic, c++, cobol, etc.), y los de bajo nivel, que en este caso el lenguaje más cercano a la computadora, se llama "lenguaje ensamblador", este último es el más complejo, ya que no es nada portable, para programar en un ordenador requiere conocimientos especificos de cada procesador.

Monografias
Tutoriales de lenguaje ensamblador
Mas tutoriales
Guia de lenguaje ensamblador

Si os sigue interesando, sobre todo para conocer como trabaja la CPU, podeis echarle un vistazo al simulador de una CPU, junto a las practicas:

Simulador CPU
Practicas

NOTA: El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser usado en otra máquina distinta, aun con el mismo microprocesador.

Otros microprocesadores conocidos son los denominados PIC de los que también hay gran variedad de información:

Manual de microprocesador PIC
Tutoriales microprocesadores PIC
Cursos en emagister

Si quereis practicar con un microprocesador y no lo conoceis, la información que puede habe en internet puede ser poca, y en ingles, pero hay un microprocesadores que existen gran cantidad de información, y son los PIC 16f... y otro distinto de la PIC, y es el microprocesador Z80, el microprocesador del Spectrum, aqui os dejo enlaces que os pueden ayudar:

Material extraido de speccy.org (comunidad española de Spectrumeros).

Curso microprocesador Z80
Codigo Maquina Spectrum

jueves, 2 de septiembre de 2010

Metodo para activar las pestañas de un jTabbedPanel

Este metodo es como yo lo suelo utilizar cuando creo un jTabbedPanel, en este ejemplo he utilizado tres pestañas y para activarlo suelo utilizar switch, y a cada boton de la ventana principal tiene una variable, segun cual sea:

1- para la pestaña socio
2- para la pestaña empleado
3- para la pestaña monitor

Y en el jDialog donde esta el jTabbedPane, creo un metodo que se inicie al abrir el jDialog llamado activarPanelCard(), y nos llevara a este metodo:


    private void activarPanelCard() {
        switch (VentanaPrincipal.panelCard) {
            case 1:
                //panel.show(jPanelCard, "socio");
                jTabbedPane.setEnabledAt(0, true);
                jTabbedPane.setEnabledAt(1, false);
                jTabbedPane.setEnabledAt(2, false);
                jTabbedPane.setSelectedIndex(0);
                break;
            case 2:
                //panel.show(jPanelCard, "empleado");
                jTabbedPane.setEnabledAt(0, false);
                jTabbedPane.setEnabledAt(1, true);
                jTabbedPane.setEnabledAt(2, false);
                jTabbedPane.setSelectedIndex(1);
                break;
            case 3:
                //panel.show(jPanelCard, "monitor");
                jTabbedPane.setEnabledAt(0, false);
                jTabbedPane.setEnabledAt(1, false);
                jTabbedPane.setEnabledAt(2, true);
                jTabbedPane.setSelectedIndex(2);
                break;
        }
    }

martes, 31 de agosto de 2010

Mostrar datos de un objeto.

Codigo util para poder mostrar los datos de un objeto que a sido cargado previamente en un ArrayList.

   private void mostrarDatosTenista(int indice) {
      Tenista t = listaTenistas.get(indice);
      jtNombre.setText(t.getNombre());
      jtEdad.setText(String.valueOf(t.getEdad()));
      jtPuntuacion.setText(String.valueOf(t.getPuntuacionATP()));
      dcbPalmares = new DefaultComboBoxModel(t.getPalmares());
      jcbPalmares.setModel(dcbPalmares);

      jtNombre.updateUI();
      jtEdad.updateUI();
      jtPuntuacion.updateUI();
      jcbPalmares.updateUI();
   }


Para crear un objeto tendriamos que crear previamente un ArrayList, de la clase determinada, en este caso hemos creado la clase Tenista, y la creacion seria asi:

    public Tenista getTenista(){
       String nombre = jtNombre.getText();
       int edad = Integer.parseInt(jtEdad.getText());
       return new Tenista(nombre, edad);
    }