miércoles, 13 de abril de 2016

Evaluación 1: Actividades prácticas I,II y III



Haciendo un cable rj45.


Buenas, la primera parte del trabajo fue hacer un cable rj45.
Pelamos el cable y nos encontramos con 4 pares de cables trenzados.


Separamos los cables trenzados y nos quedamos con 8 cables:


  1. Verde
  2. Verde con blanco
  3. Café
  4. Café con blanco.
  5. Azul
  6. Azul con blanco
  7. Naranjo
  8. Naranjo con blanco



Un cable de red puede ser cruzado o Directo.



Una ves que tenemos los cables separados y elegimos que tipo de cable vamos a hacer. Tenemos que insertar los cables en el conector rj45 con el orden correcto y asegurándonos que los cables esten tocando los conectores. (Osea el cable este hasta el fondo.)
Yo lo hice paralelo con la Norma 568B .


Cuando tenemos los cables en el orden correcto tenemos que usar la crimpeadora para asegurar los cables en posición.




Tenemos que repetir el mismo proceso en el otro lado. Es importante utilizar la misma norma en ambos lados.

Y el cable esta terminado. Me tomo 3 intentos hacerlo. Es muy importante asegurarse de que los cables estén hasta el fondo del conector.  

Ad Hoc:

Una red ad hoc es una conexión inalambrica entre 2 computadores de manera local. Además, puede compartir temporalmente una conexión a Internet con otros usuarios de la red ad hoc, de modo que dichos usuarios no tengan que configurar sus propias conexiones a Internet. Las redes ad hoc sólo pueden ser inalámbricas; por tanto, deberá tener un adaptador de red inalámbrico instalado en el equipo para configurar una red ad hoc o para unirse a ella.

Para ser justos. Esto lo intente hacer con 2 distros de linux. Primero lo intentamos con arch y al no poder hacerlo lo intentamos con ubuntu obteniendo el el siguiente resultado.


Honestamente las clases teóricas están bien, pero estas son las cosas practicas que deberíamos saber. Que deberíamos aprender en clases. Aveces mandarnos a investigar a internet como hacer x cosa. No siempre es la mejor opción. 


Construcción de antenas WIFI.


Existen 2 tipos de antenas, las Omnidireccionales recibe señales de todos lados, como una esfera y las  direccionales: que reciben la señal en una dirección específica.

Para este trabajo decidimos hacer la antena kryspo que es direccional.


Los materiales son:


  1. Tarro de papas con la tapa.
  2. 1 conector N chasis hembra.
  3. Cable de cobre.
  4. Cautin y estaño.
  5. Huincha aisladora.

Lo primero que tenemos que hacer es tomar las medidas.


Primero tenemos que hacer un agujero a 4 centímetros desde la base. El diámetro del agujero tiene que ser suficiente para que entre el conector N chasis hembra. 
A los 10 centímetros desde la base tenemos que hacer un corte por la mitad. Y en la parte sobrante tenemos que cortar por la mitad 2 centímetros desde la tapa. 
Después unimos los 2 extremos cortados para quedar con él cuerpo de la antena. 12 centímetros de largo. Y un agujero a los 4 centímetros donde va el conector N Chasis hembra.

Ahora que tenemos el cuerpo de la antena listo tenemos que soldar el cable de cobre al conector. El tamaño del cable tiene que ser la mitad del ancho del envase.


martes, 27 de octubre de 2015

#Gato#

#Gato#


Autor: Javier Araneda
Competencia: Tecnologías de la información (Nivel 2)
Asignatura: Desarrollo de aplicaciones cliente servidor.

Palabras clave: python, programación, ip, juego,gato,puertos,port.


Descripción de la actividad:  

Este trabajo fue un trabajo de en python, no recuerdo exactamente que trabajo fue, El punto es que teníamos que hacer un gato. python. El profe nos dio de "esqueleto" con la estructura del gato:


    print "                    "
    print "     1   2   3      "
    print "   +---+---+---+    "
    print "1  | %c | %c | %c | " % (M[0], M[1], M[2])
    print "   +---+---+---+    "
    print "2  | %c | %c | %c | " % (M[3], M[4], M[5])    
    print "   +---+---+---+    "
    print "3  | %c | %c | %c | " % (M[6], M[7], M[8])
    print "   +---+---+---+    "
    print "                    "


El objetivo es mediante sockets establecer la conexión desde el "cliente" al servidor" y poder jugar gato. El cliente envía las coordenadas donde quiere colocar su marca, y luego el servidor envía una respuesta. Toda la información "grafica" se muestra en el lado del cliente mientras que . Cuando se cumple el criterio de "Ganar" o "Empatar" el servidor lo analiza y envía un mensaje saludando al ganador y termina la conexión




Y al final el código de fuente termino siendo esto:


Cliente: 

 import socket ,os
    def Jugada():

        while True:    

            tablero()  

            f = raw_input("fila   : ")
            
            try:
                f=int(f)
            except ValueError:
                tablero()            
                f = raw_input("fila   : ")
                
        
            if f<=3:
                break
            

        while True:    
            tablero() 
            c = raw_input("Colmna   : ")
            
            try:
                c=int(c)
            except ValueError:
                tablero()            
                print "fila    :",f
                c = raw_input("Columna   : ")
                
            
            if c<=3:
            
                break    
                
        return 3*(int(f)-1) + (int(c)-1)

    def tablero():
        os.system("cls")
        print "                    "
        print "     1   2   3      "
        print "   +---+---+---+    "
        print "1  | %c | %c | %c | " % (M[0], M[1], M[2])
        print "   +---+---+---+    "
        print "2  | %c | %c | %c | " % (M[3], M[4], M[5])    
        print "   +---+---+---+    "
        print "3  | %c | %c | %c | " % (M[6], M[7], M[8])
        print "   +---+---+---+    "
        print "                    "

        
    M = ['#','#','#','#','#','#','#','#','#']
    end=False
    #Crear un socket para la conexion con el servidor. Puede dejarlse sin parametros
    #o se puede escribir    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s = socket.socket()
     
    #los parametros de metodo connect son el numero IP del servidor y el numero del puerto
    s.connect(("localhost", 9999))
    s.send("juguemos")

     
    #Creamos un bucle para mantener la conexion
    while True:
        
        p=Jugada()
        while True:
            
            if M[p]!='X' and M[p]!='O':
                    
                    
                    break
            else:
                tablero()
                p=Jugada()
          
        M[p] = 'X'
        tablero()
        s.send(str(p))        
                     
            
            
        while True:
            if (M[0]=="X" and M[1]=="X" and M[2]=="X"):
                print "\n\nGane"
                end=True
                break
            elif (M[3]=="X" and M[4]=="X" and M[5]=="X"):
                print "\nGane"
                end=True
                break
            elif (M[6]=="X" and M[7]=="X" and M[8]=="X"):
                print "\nGane"
                end=True
                break
            elif (M[0]=="X" and M[3]=="X" and M[6]=="X"):
                print "\nGane"
                end=True
                break
            elif (M[1]=="X" and M[4]=="X" and M[7]=="X"):
                print "\nGane"
                end=True
                break
            elif (M[2]=="X" and M[5]=="X" and M[8]=="X"):
                print "\nGane"
                end=True
                break
            elif (M[0]=="X" and M[4]=="X" and M[8]=="X"):
                print "\nGane"
                end=True
                break        
            elif (M[2]=="X" and M[4]=="X" and M[6]=="X"):
                print "\nGane"
                end=True
                break
            else:
                break
        
        
        if end==True:
            break
        
        p = int(s.recv(2))
        print "indice recibido = ", p, "\n"
        M[p] = 'O'
        
        while True:
            if (M[0]=="O" and M[1]=="O" and M[2]=="O"):
                print "\n\nPerdi"
                break
            elif (M[3]=="O" and M[4]=="O" and M[5]=="O"):
                print "\nPerdi"
                break
            elif (M[6]=="O" and M[7]=="O" and M[8]=="O"):
                print "\nPerdi"
                break
            elif (M[0]=="O" and M[3]=="O" and M[6]=="O"):
                print "\nPerdi"
                break
            elif (M[1]=="O" and M[4]=="O" and M[7]=="O"):
                print "\nPerdi"
                break
            elif (M[2]=="O" and M[5]=="O" and M[8]=="O"):
                print "\nPerdi"
                break
            elif (M[0]=="O" and M[4]=="O" and M[8]=="O"):
                print "\nPerdi"
                break        
            elif (M[2]=="O" and M[4]=="O" and M[6]=="O"):
                print "\nPerdi"
                break
            else:
                break
            
    print "\nel juego ha terminado"
    #s.close()
----------------

Servidor: 

import socket
from random import randrange

M = ['#','#','#','#','#','#','#','#','#']

# Crear un socket para que el servidor acepte conexiones de clientes
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# El metodo bind() identifica el puerto de escucha y la IP desde donde el servidor
# aceptara conexiones (dejamos esa IP en blanco para que acepte de cualquiera)
s.bind(("", 9999))

print "\n\nservidor esperando un contendor\n\n"

# el metodo listen() acepta tantas conexiones como el valor que le pasemos (1 en este caso)
s.listen(1)

# Crear un socket para escuchar al cliente. Al aceptar una conexion se obtiene la tupla add
# que contiene IP:puerto que identifica la IP del cliente y su puierto
sc, addr = s.accept()
mensaje = sc.recv(10)
if mensaje=="juguemos":
    print "jugando con cliente ", addr[0]
   
apagar = False      
while True:
    # El metodo recv recibe tantos bytes como le indiquemos
    p = int(sc.recv(2))
    print "indice recibido = ", p
   
    if p==9:
        break
           
    M[p] = 'X'
   
    while True:
        if (M[0]=="X" and M[1]=="X" and M[2]=="X"):
            print "\n\nPerdi"
            apagar=True
            break
        elif (M[3]=="X" and M[4]=="X" and M[5]=="X"):
            print "\nPerdi"
            apagar=True
            break
        elif (M[6]=="X" and M[7]=="X" and M[8]=="X"):
            print "\nPerdi"
            apagar=True
            break
        elif (M[0]=="X" and M[3]=="X" and M[6]=="X"):
            print "\nPerdi"
            apagar=True
            break
        elif (M[1]=="X" and M[4]=="X" and M[7]=="X"):
            print "\nPerdi"
            apagar=True
            break
        elif (M[2]=="X" and M[5]=="X" and M[8]=="X"):
            print "\nPerdi"
            apagar=True
            break
        elif (M[0]=="X" and M[4]=="X" and M[8]=="X"):
            print "\nPerdi"
            apagar=True
            break      
        elif (M[2]=="X" and M[4]=="X" and M[6]=="X"):
            print "\nPerdi"
            apagar=True
            break
        else:
            break  
    if apagar==True:
        break

   
    while True:
        k = randrange(0, 9)
        if M[k] == '#':
            M[k] = 'O'
            break

    print "indice enviado = ", k, "\n"
    # El servidor le responde al cliente
    sc.send(str(k))
   
    while True:
        if (M[0]=="O" and M[1]=="O" and M[2]=="O"):
            print "\n\nGane"
            apagar=True
            break
        elif (M[3]=="O" and M[4]=="O" and M[5]=="O"):
            print "\nGane"
            apagar=True
            break
        elif (M[6]=="O" and M[7]=="O" and M[8]=="O"):
            print "\nGane"
            apagar=True
            break
        elif (M[0]=="O" and M[3]=="O" and M[6]=="O"):
            print "\nGane"
            apagar=True
            break
        elif (M[1]=="O" and M[4]=="O" and M[7]=="O"):
            print "\nGane"
            apagar=True
            break
        elif (M[2]=="O" and M[5]=="O" and M[8]=="O"):
            print "\nGane"
            apagar=True
            break
        elif (M[0]=="O" and M[4]=="O" and M[8]=="O"):
            print "\nGane"
            apagar=True
            break      
        elif (M[2]=="O" and M[4]=="O" and M[6]=="O"):
            print "\nGane"
            apagar=True
            break      
        else:
            break
   
    if apagar==True:
        break
print "\n\nel juego ha terminado"

#Cerramos la instancia del socket cliente y servidor
sc.close()
s.close()
.

Conclusión:


Los sockets brindan la posibilidad de conectarse entre 2 computadores a distancia, Solo con la dirección IP y un puerto de conexión. Esto permite hacer varios tipos de trabajo a distancia, también facilita un montón el envió de información atravesar de los programas.

  

lunes, 26 de octubre de 2015

Caja Rotadora

Caja Rotadora


Autor: Javier Araneda
Competencia: Desarrollo de Software (Nivel 2)
Asignatura: Programación II

Palabras clave: python, programación, visualPython, trabajo practico,Rotación.


Descripción de la actividad:  

Este trabajo fue es laboratorio 5 de programación, con el profe Caro, usando la librería de VISUAL, para python. Se nos pidió crear un objeto caja de color rojo(con visual), el cual tenia estar  sobre una linea y que con los botones X,Y,Z,A se cambiara la rotación en ese eje. con la letra A se invertía el giro. También cuando la caja caga diera una vuelta completa(360 grados) tenia que cambiar de color rojo a azul. Simple.





Solución:

Lo primero que hice fue investigar sobre la librería visualPython, la librería permite crear ciertos objetos, los cuales tienen una representación gráfica en 3d, cada objeto tiene, características(color, posición, angulo), así que con eso ya tenia la mitad difícil del trabajo hecha, como hacer que el objeto gire en los ángulos. Solo faltaba ver como hacer que reconociera los inputs (X,Y,Z,A). Para mi sorpresa visualPython tiene una función scene.kb.getkey(): , la cual captura la letra que se esta presionando  en el momento. y la devuelve como una variable.Ya lo tenia todo.



Y al final el código de fuente termino siendo esto:


# -*- coding: utf-8 -*-
"""
Created on Tue Jun 02 09:42:34 2015

@author: Javier
"""

from visual import *
import math

suelo=box(pos=(0,0,0),size=(100,1,30),color=color.green) #La linea
box=box(pos=(0,30,10),size=(50,30,20),color=color.red)  #La caja.
angulo=1
ax=(1,0,0)
giro=0

cColor=True

while True:            
    
    rate(60)
    if cColor:
        if giro==360 or giro==-360  :
            box.color=color.blue
            cColor=False
            giro=0        
    else:
        if giro==360 or giro==-360  :
            box.color=color.red
            cColor=True
            giro=0        
    box.rotate(angle=math.radians(angulo),axis=ax) #Hace rotar al objeto.
    
    if scene.kb.keys:
        k=scene.kb.getkey() # Caputra del teclado
        if k=='y':
            ax=(1,0,0)        
        if k=='x':
            ax=(0,1,0)        
        if k=='z':
            ax=(0,0,1)        
        if k=='a':
          if angulo>0:
              angulo=(-1)
              giro=0        
          else:
              angulo=(1)
              giro=0        
    if angulo>0:
        giro=giro-1
    else:
        giro=giro+1

    print giro

Como se puede ver, es un programa corto, pero preciso,  la función OBJETO.rotate() hace todo el trabajo, solo hay que entregarle los ángulos que que rotar y el eje. 

----------------

Programa Funcionando. 




Reflexión:


Esta es la magia de las librerías, No hay necesidad de reinventar la rueda, las librerías son herramientas capases de ayudarnos con las miles de funciones que las componen. Son herramientas poderosas a las cuales hay que sacarles provecho, Creo que no hay que tener miedo a usarlas ya que para algo las crearon.


  

martes, 6 de octubre de 2015

Cajero Automatico

Cajero Automático


Autor: Javier Araneda
Competencia: Desarrollo de Software (Nivel 1)
Asignatura: Programación I

Palabras clave: python, programación, cajero, trabajo practico.


Descripción de la actividad:  

Este fue el primer trabajo practico que  nos pidieron hacer en la asignatura de Programación I.

Fue 'desarrollado' en Python, un lenguaje de Alto nivel.

Se nos pidió hacer un código que simulara el funcionamiento de un cajero automático que cumpliera con las 4 operaciones básicas de una cuenta en el banco: Giros, Depósitos, Consultas de saldo y traspaso de dinero entre cuentas. Ademas el programa no debía terminar cuando se ejecutara la operación, el usuario decidía cuantas operaciones hacer y cuando acabar las operaciones (cerrar el programa).




Solución:

Lo primero que hice fue escribir un "pseudocodigo", y fue algo como esto:

Iniciar programa ­­>Ingresar Contraseña>3 Intentos para insertar la contraseña

>Ingresar tipo de cuenta ­­> Seleccionar la operación­­­ > Terminar consulta ­­­>
Preguntar si desea otra operación ­­­­> Verdadero ­­­­­> se repite desde “Ingresar cuenta”
>Falso ­­­­> se acaba el programa


Y al final el código de fuente termino siendo esto:



# -*- coding: utf-8 -*-
import random
usuario="19.076.372-2"
passw="1234"
saldo=random.randint(0,1000000)
saldo2=random.randint(0,50000)
cont=0
conectado=bool;
while cont<3:
    us=raw_input("ingrese rut");
    co=raw_input("ingrese contreaseña");
    if us==usuario and passw==co:
        print "Bienvenido al sistema"
        conectado=True
        break
    else:
        cont=cont+1;
        print "Usuario y contraseña incorreta"
        conectado=False

while conectado==True:
    print "Que operacion desea utilizar?:"
    print "1.- Giro"
    print "2.- Deposito"
    print "3.- Traspaso"
    print "4.- Consulta Saldo"
    print "0.- Para cerrar"
    choi=int(input("Ingrese opcion:"))
    if choi==1:
        monto=int(input("Ingrese monto a girar:"))    
        saldo=saldo-monto
        print "ha retirado " , monto
    elif choi==2:
        monto=int(input("Ingrese monto a Depositar:"))          
        saldo=saldo+monto
        print "su nuevo saldo es", saldo
    elif choi==3:
        cu2=input("Ingrese cuenta a depositar")    
        monto=int(input("Ingrese monto a Transferir:"))
        saldo=saldo-monto
        saldo2=saldo2+monto
        print "se han transferido", monto,"pesos a la cuenta",cu2
        print "el nuevo saldo es:",saldo2
    elif choi==4:
        print "Su saldo es:", saldo
    elif choi==0:
        break



Como se puede ver, esta hecho de una manera "local", el usario y la pass son predefinidos,

pero el punto es que se puede hacer algo simple y "funcional" con las condicionales while, if, else, y variables booleanas..
----------------



Reflexión:


Si bien es cierto, el código podría haberse pulido más, con cosas bien simples como los ciclos, verdadero y falso y un poco de lógica se puede llegar a construir un programa bastante "solido"(este no lo es de el todo) y bastante funcional. Todo depende de que tan lejos quieras llegar.


  

domingo, 31 de agosto de 2014

Programacion I: Cajero Automatico

Cajero Automático


Autor: Javier Araneda
Competencia: Desarrollo de Software (Nivel 1)
Asignatura: Programación I

Palabras clave: python, programación, cajero, trabajo practico.


Descripción de la actividad:  

Este fue el primer trabajo practico que  nos pidieron hacer en la asignatura de Programación I.

Fue 'desarrollado' en Python, un lenguaje de Alto nivel.

Se nos pidió hacer un código que simulara el funcionamiento de un cajero automático que cumpliera con las 4 operaciones básicas de una cuenta en el banco: Giros, Depósitos, Consultas de saldo y traspaso de dinero entre cuentas. Ademas el programa no debía terminar cuando se ejecutara la operación, el usuario decidía cuantas operaciones hacer y cuando acabar las operaciones (cerrar el programa).




Solución:

Lo primero que hice fue escribir un "pseudocodigo", y fue algo como esto:

Iniciar programa ­­>Ingresar Contraseña>3 Intentos para insertar la contraseña

­­>Ingresar tipo de cuenta ­­> Seleccionar la operación­­­ > Terminar consulta ­­­>
Preguntar si desea otra operación ­­­­> Verdadero ­­­­­> se repite desde “Ingresar cuenta”
­­­­­>Falso ­­­­> se acaba el programa


Y al final el código de fuente termino siendo esto:



# -*- coding: utf-8 -*-
import random
usuario="19.076.372-2"
passw="1234"
saldo=random.randint(0,1000000)
saldo2=random.randint(0,50000)
cont=0
conectado=bool;
while cont<3:
    us=raw_input("ingrese rut");
    co=raw_input("ingrese contreaseña");
    if us==usuario and passw==co:
        print "Bienvenido al sistema"
        conectado=True
        break
    else:
        cont=cont+1;
        print "Usuario y contraseña incorreta"
        conectado=False

while conectado==True:
    print "Que operacion desea utilizar?:"
    print "1.- Giro"
    print "2.- Deposito"
    print "3.- Traspaso"
    print "4.- Consulta Saldo"
    print "0.- Para cerrar"
    choi=int(input("Ingrese opcion:"))
    if choi==1:
        monto=int(input("Ingrese monto a girar:"))      
        saldo=saldo-monto
        print "ha retirado " , monto
    elif choi==2:
        monto=int(input("Ingrese monto a Depositar:"))            
        saldo=saldo+monto
        print "su nuevo saldo es", saldo  
    elif choi==3:
        cu2=input("Ingrese cuenta a depositar")      
        monto=int(input("Ingrese monto a Transferir:"))
        saldo=saldo-monto
        saldo2=saldo2+monto
        print "se han transferido", monto,"pesos a la cuenta",cu2
        print "el nuevo saldo es:",saldo2
    elif choi==4:
        print "Su saldo es:", saldo
    elif choi==0:
        break






Obviamente como se puede ver, esta hecho de una manera "local", el usario y la pass son predefinidos,

pero el punto es que se puede hacer algo simple y "funcional" con las condicionales while, if, else, y variables booleanas..
----------------



Reflexión:


Si bien es cierto, el código podría haberse pulido más, con cosas bien simples como los ciclos, verdadero y falso y un poco de lógica se puede llegar a construir un programa bastante "solido"(este no lo es de el todo) y bastante funcional. Todo depende de que tan lejos quieras llegar, "en Programación nada es imposible." (?)..