jueves, 3 de mayo de 2018

Agenda en Python


Se utilizó la herramienta wxGlade y WxPython, como anteriormente lo mostramos en este blog.


Pasos
1.-Ejecutamos wxGlade. Seleccionamos la clase base wxFrame .Y le damos el nombre que se quiera al frame.



2-.Agregamos un Panel para ingresar los widgets y añadimos un BoxSizer en donde se configura en dos espacios en orientación horizontal.



3.-Agregamos  en las opciones de widgets un calendario y en widget seleccionamos el dia en que queremos que inicie la seman > en este caso seria el lunes.


4.-Agregamos en espacio de Texto donde podemos agregar un espacio donde escribir de acuerdo al dia y modificamos el espacio de trabajo a un tamaño de 250x300 para que crubriera mejor el programa.

5.-Por ultimo guardamos el programa y generamos el código en Aplicación>propiedades> Generar código y nos muestra en que lenguaje queremos ejecutarlo en este caso sería Python.. y listo nuestro programa abre de manera exitosa.





lunes, 23 de abril de 2018

Convertir un numero a ascii con macro emu8086 (ejemplo)

Primero debemos de hacer el macro en un bloc de notas y colocamos en una carpeta destinada en la siguiente direccion:

Direccion: C:\EMU8086\inc


-Codigo-

    inicializa MACRO
mov ax,data
mov ds, ax
mov cx,6
mov di, offset max
mov si,offset a
ENDM


 Ahora si empezamos con el codigo en emu

-Codigo-
INCLUDE mac.TXT

.model small
.stack

.data
a db 12,5,34,85,10,25
max db 0
numero db '12$'
diez db 10
msg1 db 'numero mas grande de la pila=$'
msg2 db 10,13,'caracter ascii=$'

.code
INICIO:
inicializa 

comparar:
    mov al,[si]
    mov bl,[di]
    cmp bl,al
    jnb incrementa
    mov [di], al
 
incrementa:
    inc si
    loop comparar
    ;convertir el numero a cadenta intToString
    mov al, max
    mov ah,0
    div diez
    add ah, '0'
    mov numero[1], ah
    add al, '0'
    mov numero[0], al
    ;desplegar el mensaje
    mov dx, offset msg1
    mov ah, 09h
    int 21h
    mov dx, offset numero
    mov ah, 09h
    int 21h
    mov dx, offset msg2
    mov ah, 09h
    int 21h
    mov dl,[di]
    mov ah, 02h
    int 21h
    mov ah, 4ch
    int 21h
end inicio
end



martes, 17 de abril de 2018

Ejemplo de macro

TITLE Cadena que solicita una cadena y una posicion para mostrarla

gotoxy macro fila,col ;declaracion de macro gotoxy parametros:fila,col
mov ah,02h   ;complemento interrupcion 10h modo video colocacion cursor
mov dh,fila  ;coordenada x para colocacion de cursor dh
mov dl,col   ;coordenada y para colocacion de cursor dl
mov bh,0h 
int 10h      ;interrupcion de video
endm   ;fin de macro

pantalla macro que  ;declaracion de macro pantalla parametro que
mov ah,02h       ;complemento interrupcion 21h
mov dl,que   ;que es el caracter capturado
int 21h      ;interrupcion DOS
endm  ;fin de macro

imprime macro eztryng  ;declaracion de macro con parametro eztryng
mov dx,offset eztryng  ;coloca mensajes en dx
mov ah,9               ;complemento para la interrupcion 21h para impresion de txto
int 21h                ;interrupcion DOS
endm                   ;fin de macro

.data    ;variables
mensaje DB "INGRESE UN CARACTER: ",13,10,"$"
mensaje2 DB "INGRESE X del 0 al 9: ",13,10,"$"
mensaje3 DB "INGRESE Y del 0 al 9: ",13,10,"$"
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')

.code

startup:
mov ax,@data  ;asignacion de datos ax
mov ds,ax     ;asignacion de datos al segmento de datos

imprime mensaje ;llama macro imprime con el parametro 'mensaje'
mov si,00h      ;limpia el apuntador SI


 leer:          ;declaracion de metodo leer 
 mov ax,0000    ;limpia ax
 mov ah,01h     ;complemento para interrupcion 21h captura
 int 21h        ;interrupcion DOS
 mov caracter[si],al ;guarda el dato capturado en variable caracter
 inc si         ;incrementa apuntador si
 cmp al,0dh     ;compara si la ultima tecla presionada fue Intro
 ja coordenadas ;si cumple brinca a coordenadas
 jb leer        ;sino cumple vuelve a ejecutar leer

coordenadas:    ;declaracion de metodo coordenadas
mov dx,offset caracter ;coloca en dx el caracter ingresado
mov ah,0ah             ;complemento de interrupcion 21h lee cadena de texto por teclado
int 21h                ;interrupcion DOS
imprime caracter       ;llama macro imprime con parametro caracter
imprime mensaje2       ;llama macro imprime con parametro mensaje2
mov ah,01h             ;complemento de interrupcion 21h Eco de un caracter
int 21h                ;interrupcion DOS
sub al,30h             ;resta 30h para convertir al valor numerico
mov bl,al              ;mueve al a bl
mov varx,al            ;guarda al en varx (coordenada x)
imprime mensaje3       ;//////////////se repite/////////
mov ah,01h
int 21h
sub al,30h
mov bl,al
mov vary,al            ;////////////////////////
mov ax,0003h           ;complemento interrupcion 10h modo texto
int 10h                ;interupccion de video

gotoxy vary,varx       ;llama macro gotxy con los parametros vary y varx como columna y fila
pantalla caracter[0]   ;llama macro pantalla con el caracter capturado como parametro

mov ah,01h             ;complemento de interrupcion 21h Eco de un caracter
int 21h                ;interrupcion DOS
mov ax,4c00h           ;complemento interrupcion 21h fin de probrama
int 21h                ;interrupcion DOS
end startup            ;fin de funcion principal

Almacenamiento de procedimientos en MySQL

Es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado y por lo tanto el acceso es directo a los datos que se necesita manipular así que sólo se necesita enviar sus resultados de regreso al usuario.
Al incluir la lógica de la aplicación en la base de datos utilizando procedimientos almacenados, la necesidad de embeber la misma lógica en todos los programas que acceden a los datos es reducida.
Permite simplificar la creación y, particularmente, el mantenimiento de los programas que acceden a la base de datos.

código de los procedimientos:



Agregar y editar a algún alumno:



Procedimiento consultar alumno:
Eliminar alumno:



martes, 20 de marzo de 2018

Verificacion de texto en una cadena

org 100h
mov si, 0

comienzo:
mov al,msg2[0]
cmp msg[si],"$"
jz final
cmp msg[si], al
jne seguir
mov di, 1

comprobar:
mov al, msg2[di]
mov bx, di
cmp msg[si+bx], al
jne seguir

inc di
cmp msg2[di],"$"
jz resultado

loop comprobar

seguir:
inc si
loop comienzo 

resultado:
mov dx, offset msg3
mov ah, 9
int 21h       

final:
ret
msg db "tecnologico$"
msg2 db "tec$"
msg3 db "si se encuentran$"

Arquitectura de mysql

Arquitectura MySQL:
En estos diversos temas se hablará de las estructuras de una base de datos tanto como fisicas y logicas y nos sirven de gran ayuda para conocer como se desarrolla el proceso de cómo funciona la base de datos que conocemos actualmente y distintos métodos y funciones que esta pueda llevar, son importantes conocerlos y poder iniciar a experimentar con la información que veremos a continuación sobre nuestras bases de datos que estemos trabajando o futuras...


MySQL es un sistema de bases de datos relacional. Eso significa que la información está
organizada en bases de datos, que están compuestas por tablas, que están compuestas
por registros, que están compuestos por columnas.

Además de los datos que almacenamos, las tablas pueden contener índices, y algunas de sus columnas tienen propiedades especiales como claves primarias y claves foráneas que permiten establecer relaciones entre las tablas.

En general, un sistema de bases de datos relacional tienen tres capas: aplicacion, logica, fisica

La capa de aplicación es la parte más externa del sistema y es la interface a través de la que los usuarios se comunican con el sistema.
La funcionalidad central del sistema está en la capa lógica. Es donde se realizan todas las operaciones del sistema.

Finalmente, la capa física es donde están almacenados los datos.

- Arquitectura física de una base de datos en SQL Server:

La unidad fundamental del almacenamiento de datos en SQL Server es la página. El espacio en disco asignado a un archivo de datos (.mdf o .ndf) de una base de datos se divide lógicamente en páginas numeradas de forma contigua de 0 a n. Las operaciones de E/S de disco se realizan en el nivel de página. Es decir, SQL Server lee o escribe páginas de datos enteras.

Estructuras lógicas de la base de datos:

En todas las bases de datos relacionales disponemos de estas estructuras lógicas para organizar la información:

Tablas: Compuestas de filas y columnas en las que se almacenan los datos relevantes de cada base de datos.

Restricciones: Se definen al crear las tablas, pero se almacenan aparte. Están disponibles en el diccionario de datos y marcan las reglas que han de cumplir los datos para que se consideren válidos.

Índices: Se trata de una lista ordenada de claves que permite acceder a los valores de una o más columnas de una tabla de forma veloz.

Vistas: Son consultas almacenadas que nos permiten mostrar de forma personalizada los datos de una o varias tablas.

Procedimientos y funciones: Código del lenguaje procedimental de la base de datos utilizado para ejecutar acciones sobre las tablas (incluidos los triggers).

Estructuras físicas de la base de datos:

En una base de datos almacenamos información relevante para nuestro negocio u organización,a base de datos está conformada por dos tipos de archivos:

Archivos de datos: Contiene los datos de la base de datos internamente, está compuesto por páginas enumeradas secuencialmente que representa la unidad mínima de almacenamiento. Cada página tiene un tamaño de 8kb de información.

Existen diferentes tipos de páginas, a tener en cuenta:

Páginas de datos:Es el tipo principal de páginas y son las que almacenan los registros de datos.

Páginas de espacio libre (PFS Page Free Space): Almacenan información sobre la ubicación y el tamaño del espacio libre.

Paginas GAM and SGAM: Utilizadas para ubicar extensiones.

Páginas de Mapa de Ubicaciones de índices (IAM – Index Allocation Map): Contiene información sobre el almacenamiento de páginas de una tabla o índice en particular.

Páginas Índices: Utilizada para almacenar registros de índices.

· Archivo de Registro de Transacciones: El propósito principal del registro de transacciones es la recuperación de datos a un momento en el tiempo o complementar una restauración de copia de respaldo completa (full backup). Este archivo no puede ser leído por herramientas de usuario de SQL aunque existen herramientas de terceros que leen este archivo para recuperar los cambios efectuados.

Data File: Los datafiles son los archivos físicos en los que se almacenan los objetos que forman parte de un tablespace.

2.1.3 Requerimientos para instalación de la base de datos:

Antes de instalar cualquier SGBD es necesario conocer los requerimientos de hardware y software, el posible software a desinstalar previamente, verificar el registro de Windows y el entorno del sistema, así como otras características de configuración especializadas como pueden ser la reconfiguración de los servicios TCP/IP.

2.1.4 Instalación del software de BD en modo transaccional:

Debido al constante crecimiento de datos que generan las empresas hoy en día, se ha vuelto muy necesaria la búsqueda de nuevas plataformas para almacenar y analizar la información, ambientes que consuman menos recursos, que sean más escalables y que provean una alta disponibilidad.

Una base de datos en modo transaccional significa que la BD será capaz de que las operaciones de inserción y actualización se hagan dentro de una transacción, es un componente que procesa información descomponiéndose de forma unitaria en operaciones indivisibles, llamadas transacciones

Una transacción es un conjunto de líneas de un programa que llevan insert o update o delete.

Se usan los siguientes métodos:
Begin TRans para iniciar la transacción
CommitTrans para efectuar los cambios con éxito
RollbackTrans para deshacer los cambios

2.1.5 Variables de Ambiente y archivos importantes para instalación:

Variable: Es un espacio en memoria al cual se le da un nombre Hay variables específicas que se crean al momento de entrar al sistema, pero también hay variables que pueden ser definidas por el usuario.
Variables de Ambiente: Se usan para personalizar el entorno en el que se ejecutan los programas y para ejecutar en forma correcta los comandos del shell.
A continuación se comentan las opciones más utilizadas de la sección mysqld (afectan al funcionamiento del servidor MySQL), se almacenan en el archivo my.cnf (o my.ini)
basedir = ruta: Ruta a la raíz MySQL
console: Muestra los errores por consola independientemente de lo que se configure para log_error.
datadir = ruta: Ruta al directorio de datos.
default-table-type = tipo: Tipo de la Tabla InnoDB o, MyISAM.


2.1.6 Procedimiento general de instalación de un DBMS:

MySQL Enterprise Edition:

MySQL Enterprise Edition incluye el conjunto más completo de características avanzadas y herramientas de gestión para alcanzar los más altos niveles de escalabilidad, seguridad, fiabilidad y tiempo de actividad. Reduce el riesgo, costo y complejidad en el desarrollo, implementación y administración de aplicaciones críticas de negocio MySQL.

El MySQL Enterprise incluye las siguientes opciones:

Backup: Realiza copias de seguridad de bases de datos MySQL en línea, de los subconjuntos de tablas InnoDB, y la recuperación mediante puntos de restauración.

Alta Disponibilidad: Es proporcionada con soluciones certificadas que incluyen replicación de MySQL.

Escalabilidad: Permite alcanzar el rendimiento sostenido y la escalabilidad de cada vez mayor de usuarios, consulta, y las cargas de datos

MySQL Enterprise Security: Proporciona listas para utilizar los módulos de autenticación externos para integrar fácilmente las infraestructuras existentes de seguridad, incluyendo Pluggable Authentication Modules y el directorio activo de Windows

MySQL Enterprise Monitor:Supervisa continuamente su base de datos y de forma proactiva le asesora sobre cómo implementar las mejores prácticas de MySQL, incluyendo consejos y alertas de seguridad

MySQL Query Analyzer: Mejora el rendimiento de las aplicaciones mediante el control de rendimiento de las consultas y precisa localización de código SQL que está causando una desaceleración.

MySQL Workbench: Cuenta con ofertas de modelado de datos, desarrollo de SQL y herramientas de administración integral para la administración del servidor de configuración del usuario, y mucho más.

2.1.7 Procedimiento para Configuración de un DBMS:
Para configurar nuestro DBMS podemos acceder a las siguientes pantallas, para Oracle o MySQL.

El esquema de una base de datos (en inglés, Database Schema) describe la estructura de una Base de datos, en un lenguaje formal soportado por un Sistema administrador de Base de datos (DBMS). En una Base de datos Relacional, el Esquema define sus tablas, sus campos en cada tabla y las relaciones entre cada campo y cada tabla.

2.1.8 Comandos Generales de Alta y Baja del DBMS:

Una tabla es un sistema de elementos de datos (atributo - valores) que se organizan que usando un modelo vertical - columnas (que son identificados por su nombre)- y horizontal filas. Una tabla tiene un número específico de columnas, pero puede tener cualquier número de filas.

MySQL
soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen:

MyISAM: trata tablas no transaccionales. Proporciona almacenamiento y recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM se soporta en todas las configuraciones MySQL.

Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos sistemas operativos que la soportan. InnoDB también se incluye por defecto en todas las distribuciones binarias de MySQL 5.0.

Conclusion
Una estructura de una base de datos tanto fisica como logica son de gran ayuda para el aprendizaje del desarrollo del funcionamiento de la base de datos como es conocido hasta la fecha, al igual que los multiples funciones y metodos que la misma puede llevar acabo, lo cuales son de mucha importancia el conocer al igual que experimentar con ellos con distintas base de datos.

martes, 13 de marzo de 2018

Loop en emu8086