martes, 8 de marzo de 2016

Calculadora en notación Postfija o Polaca inversa


Notación polaca inversa

Es un método algebraico alternativo de introducción de datos. Su nombre viene por analogía con la relacionada notación polaca, una notación de prefijo introducida en 1920 por el matemático polaco Jan Łukasiewicz, en donde cada operador está antes de sus operandos.

Este pequeño ejemplo ilustra la utilización de la notación polaca Inversa en los cálculos matemáticos que hacen internamente las computadoras. 

El siguiente ejercicio aplica el algoritmo de conversión que se encuentra explicado detalladamente acá o consulta este documento.

A continuación esta algoritmo mencionado.

INICIO
   Crear pila y la lista de salida, inicialmente vacias.
   MIENTRAS lista de entrada no este vacia y
            no se ha encontrado ningun error HACER
     Extraer el primer termino de la lista (lo llamaremos E)
     SEGUN-SEA E
       CASO E es número :
         Insertar E al final de la lista de salida
       CASO E es la variable x :
         Insertar E al final de la lista de salida
       CASO E es un paréntesis izquierdo :
         Insertar E en la pila
       CASO E es un paréntesis derecho :
         MIENTRAS La pila no este vacía y
                  su cima no sea un paréntesis izquierdo HACER
           Extraer elemento de la pila
           Insertarlo al final de la lista de salida
         FIN-MIENTRAS
         SI Encontramos el parentesis izquierdo ENTONCES
           Extraerlo de la pila y destruirlo
         SINO
           Se ha detectado un ERROR 2
         FIN-SI
         Destruir E
       CASO E es un operador :
         MIENTRAS La pila no este vacía y
                  su cima sea un operador
                  de precedencia mayor o igual que la de E HACER
           Extraer elemento de la pila
           Insertarlo al final de la lista de salida
         FIN-MIENTRAS
         Insertar E en la pila
     FIN-SEGUN-SEA
  FIN-MIENTRAS
  MIENTRAS Pila no esté vacía HACER
    Extraer elemento de la pila
    Insertarlo al final de la lista de salida
  FIN-MIENTRAS
  Destruir pila
FIN



Link de descarga:
Código fuente
Clave de cifrado: !X6MWbiCLcjJhNYs4_S4KHotYDlXRJ9petk0_IjsGa9Y

Pass: http://proj-java.blogspot.com


jueves, 18 de febrero de 2016

Administración de Parqueadero en Java

A continuación comparto con ustedes un pequeño aplicativo, que aplica una serie de conceptos, claves en el desarrollo de aplicaciones robustas desarrolladas en el lenguaje de programación java, entre ellas Hibernate utilizado en la capa de acceso a datos, patrones de diseño, Singleton, modelo en tres capas, Beans Binding entre otros...

Espero les sea de gran utilidad




Links de descarga:

1. Codigo Fuente:

2. Base de datos:


OJO: en el archivo "hibernate.cfg.xml" colocar usuario y password para acceder a la BD"

jueves, 19 de noviembre de 2015

INSTALACIÓN SERVIDOR PROXY SQUID + HERRAMIENTA DE REPORTES SARG

¿Que es Squid?

Squid es un Servidor Intermediario (Proxy HTTP/1.0) de alto desempeño que se ha venido desarrollando desde hace varios años y es hoy en día un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix®. Es muy confiable, robusto y versátil y se distribuye bajo los términos de la Licencia Pública General GNU (GNU/GPL). Siendo programática libre, está disponible el código fuente para quien así lo requiera.
Entre otras cosas, Squid puede funcionar como Servidor Intermediario (Proxy) y caché de contenido de Red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, 


¿QUE ES SARG?

(Squid Analysis Report Generator por sus siglas en inglés) es una de las más completas herramientas para la generación de reportes a partir de las bitácoras del proxy Squid.

CARACTERISTICAS - SARG
Es una herramienta de análisis de logs de Squid, tiene soporte para generar reportes en diferentes idiomas, mediante los reportes de uso web usted podrá obtener la siguiente información:

·         Top Ten de sitios más visitados
·         Reportes diarios, semanales y mensuales
·         Gráficas semanales y mensuales del consumo por usuario/host
·         Detalles de todos los sitios a los que entro un usuario/host
·         Descargas

SARG será configurado para generar reportes web de los accesos a Internet de forma periodica, además de poder ejecutarlo manualmente para generar reportes de fechas, usuarios o dominios en específico.

Reporte Manual
Estos reportes son aquellos creados por el administrador del sistema y ejecutados manualmente, pueden ser personalizados en base a diferentes criterios, son almacenados en el directorio /var/www/squid-reports/Manual, cada reporte bajo su propio directorio.

Reporte Diario
Estos reportes son generados automáticamente por un trabajo de CRON diario a las 6:25 am y genera un reporte del día anterior, son almacenados en el directorio /var/www/squid-reports/Diario, cada reporte bajo su propio directorio.

Reporte Semanal
Estos reportes son generados automáticamente por un trabajo de CRON cada semana a las 6:47 am y genera un reporte del día anterior, son almacenados en el directorio /var/www/squid-reports/Semanal, cada reporte bajo su propio directorio.

Reporte Mensual
Estos reportes son generados automáticamente por un trabajo de CRON cada mes a las 6:52 am y genera un reporte del día anterior. Estos reportes son almacenados en el directorio /var/www/squid-reports/Mensual, cada reporte bajo su propio directorio.





FUNCIONES

Herramienta de análisis de tráfico que nos ayuda a monitorear el tráfico de internet de nuestra red mediante la traficación de los log que genera el servidor proxy SQUID.
Herramienta que te permite ver con detalle la actividad de todos los equipos y/o usuarios dentro de la red de área local (LAN), registrada en la bitácora del proxy, provee mucha información acerca de las actividades de usuarios de Squid: tiempo, bytes, sitios, etc...

Generar estadísticas en formato html usando como datos los logs de Squid, de toda la navegación realizada a través del proxy en un intervalo de tiempo, es una de las herramientas más completas en ese sentido. En palabras de su programador: Sarg es un Squid Analysis Report.


  



INSTALACIÓN SQUID

Para instalar Squid en este caso lo aremos desde la terminal, ingresando la siguiente línea:
sudo apt-get install squid

CONFIGURACIÓN SQUID

*Luego de terminada la instalación debemos configurar algunos parámetros en el fichero de configuración de Squid, en este caso utilizaremos el editor de texto gedit para esto ingresamos en la terminal

sudo gedit /etc/squid3/squid.conf

*Para configurar el puerto que usara squid nos dirigimos a la línea 1139 aproximadamente, en este caso dejaremos el 3128 que esta por defecto.


*Debemos configurar la dirección de cache con la que funcionara squid que esta en la linea 2248 aproximadamente, la cual debe quedar de la siguiente forma

cache_dir ufs /var/spool/squid3 300 16 256


*Luego nos dirigiremos a la linea 2084 aproximadamente para configurar el tamaño de la memoria cache de squid, en este caso dejaremos esta opción por defecto

cache_mem 256 MB


*Posteriormente nos dirigiremos a la linea 719 aproximadamente y agregamos dos nuevas lineas, que nos servirán para identificar nuestra red y para administrar los sitios no permitidos en nuestro servidor proxy, las cuales son:

acl red src 192.168.1.0/24  <- seria nuestra red
acl nowey url_regex “/etc/squid3/nopermitir” <- noperm seria el archivo donde están las palabras clave, que serán bloqueadas en el servidor


*Luego, en la linea 819 aproximadamente agregamos dos nuevas lineas, en las que especificaremos los parámetros para denegar o permitir trafico en nuestra red:
 
http_access deny noway   <- denegaremos lo que esta en noway
http_access allow red <- especificamos nuestra dirección de red, para aceptar el trafico en ella



nano /etc/squid3/nopermitir  <- para crear y editar el archivo "noperm"

Así quedaría el archivo "nopermitir", para denegar trafico para facebook o youtube       















Por ultimo reiniciaremos el servidor para que se actualicen los cambios

sudo service squid3 restart

           


CONFIGURACIÓN EN EL NAVEGADOR

Debemos configurar nuestro servidor Proxi en lo equipos de nuestra red,







En la siguiente imagen podemos observar el funcionamiento de nuestro servidor 








INSTALACIÓN SARG

*Primero instalaremos SARG desde la terminal con la siguiente instrucción

# sudo apt-get install sarg


*Intentando ejecutar sarg con la siguiente instrucción

# sudo sarg

* Se genera un error ya que en el fichero de configuración de sarg “sarg.conf” no tiene una referencia valida a Squid, esto lo podemos arreglar modificando la línea correspondiente


ejecutamos:

# sudo nano -w /etc/sarg/sarg.conf

Editar la siguiente línea: 

access_log  /var/log/squid/access.log



Debe quedar quedar así:

access_log  /var/log/squid3/access.log





CONFIGURACIÓN SARG

*Se recomienda que cambie el titulo de los reportes usando la directiva "title", por ejemplo:

title "Squid reporte de accesos"


*Defina la ruta predeterminada para almacenar los reportes HTML
  usando la directiva output_dir, por ejemplo:

output_dir /var/lib/sarg/manual_reports


Nota

Esta ruta solo será usada por los reportes que se generen manualmente, los reportes automáticos usarán rutas diferentes.
mkdir /var/lib/sarg/Manual_reports  <- para crear el directorio especificado en la configuración anterior.


* Opcionalmente puede agregar la información del generador de reportes sarg usando la directiva          
show_sarg_info.

show_sarg_info yes

  También puede incluir el logo de sarg usando la directiva show_sarg_logo.

show_sarg_logo yes


  
Una vez salga del editor ejecutar de nuevo sarg

#sudo sarg

Si todo esta correcto se generara un reporte del día actual en /var/lib/sarg/


FUNCIONES PARA LA CONSTRUCCIÓN DE REPORTES CON SARG

Para generar un reporte de una fecha específica, o rango de fechas en específico use el parámetro
-d, por ejemplo:

# sarg -d 1/11/2015

Nota
El formato de la fecha es DD/MM/YYYY.

Si desea generar un reporte usando un rango de fechas, use:

# sarg -d 1/11/2015-15/04/2010

Nota
El formato de la fecha para un rango es: DD/MM/YYYY-DD/MM/YYYY.

Si desea generar un reporte para una hora en específico use la opción -t para indicar la hora, por ejemplo:

# sarg -d 1/11/2015 -t 12:00-12:59


Nota
El formato de tiempo es: HH:MM, HH:MM:SS


Para generar un reporte de un usuario en específico use:

# sarg -d 11/11/2015 -u Usuario


Para generar un reporte de un dominio destino en específico use:

# sarg -d 1/11/2015 -s dominio.com



Fuentes:
  • http://informate.suministros.com.ni/informatica/que-es-squid.html
  • http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Server_y_Squid/html-multiples/instalacion-y-configuracion-basica-squid.html

viernes, 30 de octubre de 2015

Instalación VSFTPD para GNU/LINUX

Qué significa FTP?

FTP significa “File Transfer Protocol”, Protocolo para la Transferencia de Archivos.

¿Qué es un servidor FTP?
Un servidor FTP es un programa especial que se ejecuta en un servidor conectado normalmente en Internet (aunque puede estar conectado en otros tipos de redes, LAN, MAN, etc.). La función del mismo es permitir el desplazamiento de datos entre diferentes servidores / ordenadores.

vsftpd
vsftpd es un servidor ftp para Linux sencillo de instalar y configurar. Es el recomendado por Debian y Ubuntu, tiene una configuración muy sencilla en un solo fichero y es bastante ligero y seguro.


Instalacion.
La configuración del servidor FTP requiere del paquete vsftpd. Para ello abre el terminal (Aplicaciones/Accesorios/Terminal) y escribe:
# sudo apt-get install vsftpd.

También puedes instalar el servidor mediante el gestor de paquetes Synaptic.

Al instalar vsftpd en el sistema se crean los siguientes archivos y directorios en el sistema:
/etc/init.d/vsftpd: fichero que inicia el servidor ftp.
/usr/bin/vsftpd: archivo ejectable.
/etc/vsftpd.conf: es el fichero de configuración del servidor.
/etc/ftpusers: fichero que contiene una lista de usuarios que no se podrán conectar al servidor.

Configuracion
El fichero de configuración del servidor se llama vsftpd.conf y se encuentra en el directorio /etc. Las directivas más importantes de este fichero son las siguientes:

anonymous_enable
Si el valor de esta directiva es YES cualquier usuario se puede conectar al servidor dando el nombre de usuario anonymous o ftp. Por razones de seguridad se debe poner NO (anonymous_enable=NO)

local_enable
Esta línea indica que si se permite o no el acceso de usuarios locales a sus respectivas carpetas privadas. Si se permite el acceso habría que poner local_enable=YES (local_enable=NO en caso contrario).

chroot_local_user
Permite enjaular a los usuarios dentro de su propio directorio personal. Si en el fichero de configuración aparece chroot_local_user=NO, entonces el usuario tiene acceso a todo el sistema de archivos, en función de los permisos asignados. Cuando un usuario local se conecta y en el fichero de configuración aparece chroot_local_user=YES, entonces enjaulamos a los usuarios dentro de su propio directorio personal, sin posibilidad de acceder a todo el sistema de ficheros. Se mejora por tanto la seguridad.

write_enable
Con esta directiva se puede permitir o denegar la subida de ficheros al servidor FTP. Si se permite que los usuarios suban archivos al servidor FTP habría que poner write_enable=YES.

local_umask
Se pueden establecer los permisos con los que quedará el archivo al subirlo al servidor FTP. local_umask=022 indicará que los permisos de los archivos serán 644, es decir, lectura y escritura para el propietario del fichero, y sólo lectura para el grupo y los demás.

anon_upload_enable
Esta directiva indica si los usuarios anónimos pueden cargar archivos en el servidor. anon_upload_enable=YES permite que los usuarios anónimos puedan subir ficheros.

anon_mkdir_write_enable
Si esta directiva tiene el valor YES se permitirá la creación de directorios en el servidor.

ftpd_banner
Con esta directiva se puede mostrar un mensaje de bienvenida cuando un usuario se conecte al servidor FTP. ftpd_banner=?Bienvenido a mi servidor FTP?.

anon_max_rate
Se utiliza para limitar la tasa de transferencia a usuarios anónimos. En el siguiente ejemplo se limita la tasa de transferencia a los usuarios anónimos a 10Kb/s:
anon_max_rate=1024

local_max_rate
Se utiliza para limitar la tasa de transferencia en bytes por segundo a los usuarios locales del servidor. En el siguiente ejemplo se limita la tasa de transferencia a 10Kb/s:
local_max_rate=1024

max_clients
Indica el número máximo de cliente que podrán conectarse simultáneamente al servidor. En el siguiente ejemplo son 5: max_clients=5

Hay que tener en cuenta que cada vez que se haga un cambio en el fichero de configuración de vsftpd se debe reiniciar el servidor con la siguiente orden: # sudo /etc/init.d/vsftpd restart
Otras opciones disponibles son stop (parar), reload (recarga), start (inicio).

Para conectarnos al servidor podemos utilizar un programa cliente como gFTP. Se puede instalar con el gestor de paquetes Synaptic o escribiendo la siguiente orden en el terminal:
# sudo apt-get install gftp

jueves, 29 de octubre de 2015

Simuproc


¿Como funciona una CPU(Central processing unit)?


Simuproc es básicamente un Simulador de un procesador hipotético de 16 bits con el cual se puede aprender las nociones básicas para comenzar a programar en ensamblador. El programa funciona mostrando todo el proceso interno de ejecución del programa a través de cada ciclo del procesador.




Link del instalador: http://adf.ly/1Ql07K

PC: Program Counter  → Contador de programa

Registro MDR
Memory Data Register (MDR), Registro de Datos de Memoria, es un registro específico de alta velocidad y poca capacidad, integrado en el microprocesador. Contiene los datos que se van a escribir en la memoria principal o que se están leyendo.

Registro MAR
Memory Address Register (MAR),  Registro de Direcciones de Memoria, es un registro específico de alta velocidad y poca capacidad, integrado en el microprocesador. En este registro se guardan las direcciones de memoria a las que está accediendo la CPU, bien para leer o para escribir.

Registro de instrucción
El registro de instrucción IR es un registro de la unidad de control del CPU en donde se almacena la instrucción que se está ejecutando. En los procesadores simples cada instrucción a ser ejecutada es cargada en el registro de la instrucción que la contiene mientras se es decodificada, preparada y al final ejecutada, un proceso que puede tomar varios pasos.

Registros de control
Z = Cero
N = Negativo
C = Acarreo
0 = Sobrecarga u overflow

ALU → Aritmetic Logic Unit → Unidad Aritmética Lógica
Circuito digital que calcula operaciones aritmética, tales como: suma, resta, multiplicación, etc.), también realiza operaciones lógicas, tales como: igual a, menor que, mayor que, etc., entre dos números.

para mas información visita: https://sites.google.com/site/simuproc/

A continuación los links de algunos ejemplos:
NOTA: para importar abre el editor y pega el código desde el .txt



1) calcula el área de un triangulo con las dimensiones recibidas como parámetro:
2) calculadora básica (trabaja solo con valores enteros)
3) calcula el resultado de un número cualquiera elevado a una potencia ingresada como parámetro
4) calcula el factorial de un número
5) Calcula el perímetro de una circunferencia
6) Calcula la suma total de los N primeros números