Tuesday, February 28, 2006

URL de Programas

apt-get install java-package

URL de Programacio de Juegos en Python
=============================
http://www.linuxjuegos.com/2005/08/25/programacion-de-juegos-en-python-tutorial-2/

Programacion Grafica en Python
=======================
http://wingware.com/doc/intro/tutorial-getting-around

Programa:
===
Python Card

Ejemplo en base a la clase Anterior
========================
# -*- coding: utf-8 -*-
"""
__version__ = "$Revision: 1.5 $"
__date__ = "$Date: 2004/04/30 16:26:12 $"
"""

from PythonCard import model
from clases import *
class MyBackground(model.Background):

def on_initialize(self, event):
self.__actual = -1
l = self.components.lstEstudiantes
l.Clear()

from pickle import load

f = open ("Salon.data", "r")
self.__salon = load(f)
f.close()


for e in self.__salon.getEstudiantes():
l.Append(e.getNombreCompleto() +" "+ e.getCiudad() + " " + e.getMail())

def on_close(self, event):
from pickle import dump
f = open ("Salon.data", "w")
dump(self.__salon, f)
f.close()
event.skip()

def on_lstEstudiantes_select(self,event):
self.__actual = event.GetSelection() #Numero de elemento Seleccionado
lista = self.__salon.getEstudiantes()
e = lista[self.__actual]
self.components.txtNombre.text= e.getNombre()
self.components.txtApellido.text= e.getApellido()
self.components.txtCiudad.text= e.getCiudad()
self.components.txtMail.text= e.getMail()

def on_btnGuardar_mouseClick(self,event):
if self.__actual >=0:
lista = self.__salon.getEstudiantes() #Ingresa a la lista
e = lista[self.__actual]
e.setNombre(self.components.txtNombre.text) #Imprime setNombre con la nueva cadena
e.setApellido(self.components.txtApellido.text)
e.setCiudad(self.components.txtCiudad.text)
e.setMail(self.components.txtMail.text)
self.components.lstEstudiantes.SetString(self.__actual, e.getNombreCompleto()+" "+ e.getCiudad() + " " + e.getMail())

def on_btnNuevo_mouseClick(self,event):
nombre = self.components.txtNombre.text
apellido = self.components.txtApellido.text
ciudad = self.components.txtCiudad.text
mail = self.components.txtMail.text
e = Estudiante(nombre, apellido, ciudad, mail)
self.__salon.anadir(e)
self.components.lstEstudiantes.Append(e.getNombreCompleto()+" "+ e.getCiudad() + " " + e.getMail())
self.__actual = len(self.__salon.getEstudiantes())-1

def on_btnBorrar_mouseClick(self,event):
if self.__actual >=0:
self.components.lstEstudiantes.delete(self.__actual)
lista = self.__salon.getEstudiantes()
del lista[self.__actual]
self.__actual = -1



if __name__ == '__main__':
app = model.Application(MyBackground)
app.MainLoop()


=====================================
Programa de NetSupport para administrar máquinas en Windows
=====================================
http://www.softbull.com/index.php

=====================================
Programa de MySQL Developer
=====================================
http://crlab.com/download.html

Instalar Pugins de Java Debian

Bajar
====
mozilla-plugin-vlc

Instalar
=====
java-package
sun-j2re1.4

Saturday, February 25, 2006



Ejemplode php Richard


buscando errot en la conexion




function conectarse()
{
if (!($link=mysql_connect("localhost","root","")))
{
echo "Error conectando a la base de datos";
exit();
}
if(!mysql_select_db("turno2d",$link))
{
echo "Error Selecionando la base de datos";
exit();
}
return $link;
}
$
$link=conectarse();
echo "conexion satisfactoria.
";
mysql_close($link);//cierra la conexion
?>

$cnt1=mysql_connect("localhost","root","");
mysql_select_db("turno2",$cnt1);
$resultado=mysql_query("select * from cliente".$cnt1);
for ($i=0;$i<5;$i++)
{
echo "Codigo de cliente:".mysql_result($resultado,$i,"id_prueba")."
";
echo "Nombre de cliente:".mysql_result($resultado,$i,"nombre")."
";
echo "Apellido de cliente:".mysql_result($resultado,$i,"apellido")."

";
}
?>
======
Error
======



Web Master Diego Thomson





Lista de Personas




Richard
// Conexion, seleccion de base de datos
$enlace = mysql_connect('localhost', 'richarde', 'password')
or die('No pudo conectarse : ' . mysql_error());
//echo 'Conexión exitosa';
mysql_select_db('richarde') or die('No pudo seleccionarse la BD.');

// Realizar una consulta SQL
$consulta = 'SELECT * FROM personas';
$resultado = mysql_query($consulta) or die('La consulta falló: ' . mysql_error());

// Impresion de resultados en HTML
echo "\n";

?>







while ($linea = mysql_fetch_array($resultado, MYSQL_ASSOC)) {
echo "\t\n";
foreach ($linea as $valor_col) {
echo "\t\t\n";
}
echo "\t\n";
}
echo "
Codigo Nombre Apellido Ciudad
" . htmlspecialchars($valor_col). "
\n";

// Liberar conjunto de resultados
mysql_free_result($resultado);

// Cerrar la conexion
mysql_close($enlace);
?>

Tuesday, February 21, 2006

Tython - Programacion Base de Objetos

Ide
===
  • Dividir un porgrama en partes independientes (clase)
  • Cada clase define un interface publico pero tambien tiene un estado interno
  • No importa al resto del sistema como la clase funciona
Ejmeplo
=====



Tarea:
====
  • Cambiar la tarea 2
  • Crear una clase con tres métodos
    • Número_Aleatorio: retorna un número 1-100
    • pregunta: Pregunta el usuario para un número
    • Jugar:juega
Solución:
======
# -*- coding: iso-8859-15 -*-
class Juego:
def numero_aleatorio(self):
from random import randint
return randint(1,100)
# Retornar número
def pregunta(self):
# Retornar número
#return = numero_aleatorio('Nuemro de 1 100')
while True:
num=raw_input("Ingrese un Nuemro 1 -100")
if num.isdigit() and int(num)<=100: return int(num) print "Ingrese un Numero Valido" def juega(self): numero = self.numero_aleatorio() intentos = 0 while True: usuario = self.pregunta() intentos = intentos + 1 if usuario == numero: print "Muy bien." print intentos, " intentos." break elif numero > usuario:
print "El número buscado es mayor"
elif numero < usuario:
print "El número buscado es menor"
j = Juego()
j.juega()
print j.pregunta()


Ejemplo de Clase:
============
# -*- coding: iso-8859-15 -*-
class Persona:
def __init__(self, nombre, apellido):
self.__nombre=nombre
self.__apelli=apellido
def getNombre(self):
return self.__nombre
def getApellido(self):
return self.__apelli
def setApellido(self,apellido):
self.__apelli=apellido
def getNombreCompleto(self):
return self.__nombre + " " + self.__apelli
def enviarCorreo(self,mensaje):
#
pass

amigos=[]
print "Por favor Ingresa los Nombres de tus Amigos"
print "Para Teminar Ingrese q!"

while True:
nombre=raw_input("Nombre: ")
if nombre=='q':
break
apellido=raw_input("Apellido: ")

pers=Persona(nombre,apellido)
amigos.append(pers)

print
print "Terminado"
for amigo in amigos:
print " - ", amigo.getNombreCompleto()

Caso Practico: Palicacion con clase
======================

Clase.py
=====
class Salon:
def __init__(self,nombre, profesor):
self.__nombre = nombre
self.__profesor = profesor
self.__estudiantes = []
def getNombre(self):
return self.__nombre
def getProfesor(self):
return self.__profesor
def anadir(self, estudiante):
self.__estudiantes.append(estudiante)
def getEstudiantes(self):
return self.__estudiantes

class Profesor:
def __init__(self,nombre):
self.__nombre = nombre
def getNombre(self):
return self.__nombre

class Estudiante:
def __init__(self,nombre):
self.__nombre = nombre
def getNombre(self):
return self.__nombre
Crear.py
=======
from clases import *

p = Profesor("Profe 1")
e1= Estudiante("Estudiante 1")
e2= Estudiante("Estudiante 2")
e3= Estudiante("Estudiante 3")

s = Salon("Salon 1", p)
s.anadir(e1)
s.anadir(e2)
s.anadir(e3)

from pickle import dump
f = open ("Salon.data", "w")
dump(s, f)
f.close()
Leer.py
======
from clases import *
from pickle import load

f = open ("Salon.data", "r")
s = load(f)
f.close()


print s.getNombre()
print 'Profe: ', s.getProfesor().getNombre()
print "Estuduiantes: "
for e in s.getEstudiantes():
print " - ",e.getNombre()
==================

Tuesday, February 14, 2006

Python

Porque Python
==========
  • Sintaxis Clara
  • Facil a aprender
  • Libre y gratis
  • Usado Mucho
    • Google
    • NASA
    • Software Libre
Basicos de Python
============

Hola, Mundo!
  • El primer programa de todos los lenguajes
  • Iniciar Pythonss
$ python
  • Ejecutar comandos Python
>>> print "hola mundo|"
hola mundo
>>>10/3.0
3.3333333333333335
>>>2**2
4
Variables
======

Guardar en variables
>>> a=4+5
>>> print a
9
>>> b=9/3
>>> print a+b
12
>>> print a,b
9 3

Cadenas
======
>>> print 'hola'
hola
>>> print "hola"
hola

>>> nombre="Richard"
>>> print "hola", nombre
hola Richard

Caracteres Especiales
===============
>>> print "hola \"Richard\""
hola "Richard"

>>> print 'hola "Richard"'
hola "Richard"

>>> print "hola \\Richard"
hola \Richard

>>> print "hola \"Richard\""
hola "Richard"

Cadenas
====0==

Largo
>>> len ("Hola richard como estas")
23
>>> a="Hola como estas"
>>> print a[5]
c
>>> print a[0]
H
>>> print a[0:10]
Hola como
>>> print a[-1]
s
>>> print a[10:]
estas
>>> print a[5:-3]
como es
>>> len (a)
15

Bucles
=====
  • While
a, b=0,1
while b<10;>>> a=range(0,50)
>>> print a

Rango
====
>>> print range(0,100,5)
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
>>> print range(1,50,2)
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]


For
===
a = [1,6,10,20,3]
print a
print len(a)


for x in a:
for y in a:
print x,"\t", y, "\t", x*y

=======
for i in range (0,100):
print i


Nota
====
Para ver el proceso de ejecucion
$ ps aux
para matar el Proceso en ejecucion
$ kill -9 6908

#Programa que permite calcular en un numero pensado
i=0
num=25
x=raw_input("Ingrese su Nombre:")
print "Hola", x
while True:
n=input("Piensa en un Numero:")
i=i+1
if n==num:
print("El Numero es Igual:")
break
elif n>num:
print("El Numero es Mayor:")
elif n1:
print "Logro Adivinar pero en:",i,"Intentos"
================================
El Programa Funciona Así:
================================
Ingrese su Nombre:Richard
Hola Richard
Piensa en un Numero:50
El Numero es Mayor:
Piensa en un Numero:15
El Numero es Menor:
Piensa en un Numero:25
El Numero es Igual:
Logro Adivinar pero en: 3 Intentos
================================

http://www.escomposlinux.org/fer_y_juanjo/index.php?pag=miniguias.html

>>>for i in range(20):
print i % 3

>>> for i in range(10):
if i == 5:
continue
print i


Primo:
====
n=5
for x in range(2,n):
if n % x==0:
print n, '=', x, '*', n/x
break
else:
print n,'Es Primo'

Pass
===
es una funcion que no hace nada

hallar el Primo con funcion
=================
def primo(n):
for x in range(2,n):
if n % x ==0:
print n, '=',x,'*',n/x
break
else:
#Se termonó el bucle sin
#encontrar nin
print n,'Es primo'
for i in range(20):
primo(i)
==================
# -*- coding: iso-8859-15 -*-
def primo(n):
for x in range(2,n):
if n % x == 0:
return False
else:
return True

primos = 0
for i in range(13):
if primo(i) == True:
primos=primos+1
print "=> son", primos, "primos"
==============

nota:
===
$ time python primo.pt

muestra el tiempo de ejecuccion

# -*- coding: iso-8859-15 -*-
def primo(n):
for x in range(2,(n/2)+1):
if n % x == 0:
return False
else:
return True

primos = 0
for i in range(13):
if primo(i) == True:
primos=primos+1
print "=> son", primos, "primos"

Repace
=====

>>> "diego thomson no me gusta".replace("no","si")
'diego thomson si me gusta'

Tarea:
==================
# -*- coding: iso-8859-15 -*-
from random import randrange
def aleatorio(n):
return randrange(n)
i=0
num=25
#x=raw_input("Ingrese su Nombre:")
#print "Hola", x
while True:
n=input("Piensa en un Numero:")
i=i+1
if n==num:
print("El Numero es Igual:")
break
elif n>num:
print("El Numero es Mayor:")
elif n print("El Numero es Menor:")
if i==1:
print "Logro Adivinar en:",i," Solo Intento"
elif i>1:
print "Logro Adivinar pero en:",i,"Intentos"



Thursday, February 09, 2006

Test de la las Ultimas Clases

Enunciados

1.-¿Como se llama el programa para instalar programas en Debian?

apt-get


2.-Quiero buscar un programa que se llama squid. ¿Que programa tengo que usar?

apt-cache

3.- ¿Donde se configuran los fuentes de los paquetes en Debian?

/etc/apt/sources.list

4.- ¿Con que comando puedo cambiar el directorio en el entorno texto?
cd
5.- ¿Con que comando puedo mostrar el directorio actual en el entorno texto?
pwd, echo $HOME

6.- ¿Donde se encuentran los archivos para la configuración?

g. /etc

7.- ¿Como se llama el directorio donde se encuentran los directorios de los usuarios?

a. /home

8.- ¿Con que comando se puede cambiar los permisos de un archivo o directorio?

chmod

9.- ¿Como se escriben los permisos
-rw-r--r--
en un numero?

644

10.- ¿Como se escriben los permisos
-rwxr-x---
en un numero?

750


11.- ¿Por defecto como se llama el servidor de una red Skolelinux?

tjener

¿Cuantos niveles describe el modelo OSI?

7

¿De cuantos niveles se habla normalmente (segun el modelo TCP/IP)?

4, 5, 4 o 5, 4/5, 4, 5

¿Que servicio da una direccion IP por un nombre?

b. DNS
c. WINS

¿Que protocol(es) se encuentran en nivel 4?

b. TCP

d. UDP
¿Que protocol(es) se encuentran en nivel 2?

a. Ethernet

f. Token Ring
¿Que protocol(es) se encuentran en nivel 5 (según el modelo TCP/IP)?
a. DHCP
b. IP
d. HTTP
e. POP3

¿Que protocol(es) se encuentran en nivel 3?

e. IP

Escribe el numero en codigo binario 01100111 en decimal.
103

Escribe el numero en codigo binario 11111110 en decimal.
254

Escribe el numero decimal 55 en el codigo binario.

00110111, 110111
Escribe el numero decimal 10 en el codigo binario
1010
00001010
¿De la dirección 192.168.10.25/24 que es la mascara de red an la notación de cuatro numeros decimales?
255.255.255.0
¿Para cuantos computadoras hay espacio en una red /27 (por ejemplo en la red 192.168.12.10/27)

30

¿Para cuantos computadoras hay espacio en una red /23 (por ejemplo en la red 192.168.12.10/23)

510

¿En que nivel se encuentra un switch?

b. 2

¿En que nivel se encuentra un router?

c. 3
¿En que nivel se encuentra un hub?
a. 1
¿En que nivel se encuentra un proxy?

e. 5

Como Iniciar y Apagar Servidor

sssssssssss

Tuesday, February 07, 2006

Teoria de Redes II

Teoría de Redes
===========
  • Niveles
  • Servicios
  • Cortafuegos
Niveles: (7Niveles)
=====
OSI :Siete niveles
TCP/IP:
Cuatro o Cinco Niveles
OSI TCP/IP Ejemplos
=========================
Aplicacion HTTP,SMPT,POP3...
Presentacion
Sesion Aplicacion SSH,NetBIOS
Transporte Transporte TCP, UDP
Red Interred IP,ICMP
Enlace de Datos Enlace Ethernet,
Fisico

Aplicacion ===========>
Aplicacion
Transporte===========>
Transporte
Interred ===========>Interred
Enlace ===========>Enlace
-----------------------Fisico----------------------------------

1.-Físico
  • Cables
  • Hub
    • Copia todo trafico a todos los puertos
2.- Enlace
  • Ethernet
    • Conexion Local
    • Las Máquinas son conectadas fisicamente
  • Token Ring
  • Switch
    • Se recuerda las direcciones Ethernet (EMAC)
    • Solo envía tráfico a la(s ) maquina(s) para quien es.
3.- Interred
  • IP
    • Conecta redes locales
    • Cada maquina que comunica por IP tiene una dirección IP
    • Garantía: los paquetes llegan en orden
  • Router
  • Trata a transmitir un paquete a la máquina correcta
  • A la máquina final si puede
  • O a otro router
  • http://www.dcc.uchile.cl/~jpiquer/Extension/Postitulo/27.html

    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    10.0.3.0 * 255.255.255.0 U 0 0 0 eth0
    default tjener-salas.in 0.0.0.0 UG 0 0 0 eth0


    4.- Transporte: TCP
    • TCP: Transmission Control Protocol
    • Conexión entre máquinas
    • Garantía: Conexión estable
    • Servicios: numero de puerto
      • Ejemplos
        • HTTP: 80
        • POP3:110
        • SSH:22
      • /etc/services (Los puerto estan docuemtados)
    4.- Transporte:UDP

    Los paquetes son pequeños por lo tanto es rapido
    No inicia la conexión
    • UDP: User Datagram Protocol
    • No Hay conexión
    • No hay garantía que los paquetes llegan
    • Paquetes pequeños
    • Servicios UDP populares
      • DNS (puerto 53)
      • DHCP (Puerto 67)
    5.- Aplicacion
    • Recibe los paqutes de nivel 4
    • Usa los paquetes para su trabajo
    Servicios
    =======

    • HTTP (TCP 80),HTPS (TCP 443): Transmitir páginas web
    • SMTP (TCP 25),SSMTP(465)
    • POP3 ( TCP 110)
    • IMAP (TCP 143)
    • TELNET (23)
    • SSH (TCP 22)
    • DNS (UDP/TCP 53)
    • DHCP, BOOTP (UDP 68)
    • Netbios (TCP 137-139)
    • LDAP (TCP 389),lDAPS (TCP 636)
    Cortafuegos
    ========
    • Cortafuego de capa de redes
      • Mayormente filtros de paquetes
      • Bloquean trafico por puertos o direcciones IP
      • Nivel 3 y 4
    • Cortafuegos de capa de aplicación
      • Mayormente filtroos de paquetes
      • Bloquear trafico por puertos o direcciones IP
      • Nivel 3 y 4
    • Cotafuegos de capa de aplicación
      • Mayormente Servidores Proxy
      • Nivel 5
    Historia
    ======
    • 1965: Correo electrónico
    • 1969: ARPANET
    • 1974: Red en Bretaña
    • Julio 1977: Primera Presentación de TCP/IP
    • 1989: Primer proveedor de servicio Internet
    • 1990: Término del proyecto ARPANET
    • 19991: WWW
    Historia de Procolos
    ===============

    • 1976 : Ethernet
    • 06.1980 : FTP
    • 09.1981: TCP/IP
    • 08.1982: SMPT
    • 05.1983: Telnet
    • 11.1983:DNS
    • 11.1988:POP3
    • 12.1994: IMAP4
    • 1990: HTTP (Documetación: 05.1996)
    • 07. 1995:SSH
    Direcciones IP
    ==========

    • IP
    • Netmask==
    • Redes ==
    • Broadcast==
    10.0.3.0 red
    10.0.3.2 Computadora
    10.0.2.255 Boradcast
    255.255.255.0 Netmask

    Para Leer codigo Binario
    =================
    128 64 32 16 8 4 2 1

    11111111 255
    11001111 207
    Dirección RED
    11000000.10110010.00001111.00100000 =192.168.15.32
    11111111.11111111.11111110.00000000 = 255.255.254.0

    32 Bits para la Computadora
    9 Bits para la red

    Broadcast: 11000000.10101000.00001111.11111111
    192 .168 .15 .255

    Dirección RED

    11000000.10101000.00001010.00001111 =(IP)192.169.10.15

    11111111.10000000.00000000.00000000= (MASC)255.128.0.0

    Primeros Bits es la red



    Broadcast: 11000000.11111111.11111111.1111111
    192 .255 .255 .255

    192.168.10.15/9
    192.168.10.15/34

    SkoleLinux

    10.0.2.0/26 = 255.255.254.0

    00001010.00000000.00000010.00000000 10.0.2.0/23
    11111111.11111111.11111110.00000000

    00001010.00000000.00000010.00000000 10.0.2.0
    00001010.00000000.00000011.11111111 10.0.3.255

    primera comp 10.0.2.1
    Ultima 10.0.3.254
    para 510 computadoras
    ==============
    para 2000 computadoras
    10.2.0.0/21
    11111111.11111111.11111000.00000000
    255. 255. 248. 0


    Tabla:

    1
    2
    4
    8
    16
    32
    64
    128
    256
    512
    1024
    2048
    4096
    8192


    Para Enviar Correo Manual
    ===================
    richarde@sala2-03:~$ telnet tjener 25
    Trying 10.0.2.2...
    Connected to tjener.intern.
    Escape character is '^]'.
    220 tjener.intern ESMTP Exim 4.50 Tue, 07 Feb 2006 13:57:20 -0500
    Hola Patrice
    500 unrecognized command
    MAIL FROM:
    250 OK
    RCPT TO:
    250 Accepted
    DATA
    354 Enter message, ending with "." on a line by itself
    FROM: Richard
    TO:Patrice
    Subject:Hola Patrice

    Hola Soy Richard, estoy aprendiendo.....
    .
    250 OK id=1F6Y3R-0004Hc-Di
    quit
    221 tjener.intern closing connection
    Connection closed by foreign host.








































Thursday, February 02, 2006

Administracion de Redes

Sexta Clase

Servidor

  • Perfil SkoleLinux: Servidor Principal
  • El Servidor se llama tjener (IP: 10.0.2.2)
  • Viene con muchos aplicaciones servidores
  • DHCP,DNS (bind)
Dominio Inter
DHCP 100 a 3000
idap.intern


Es protocolo de Base de Datos para de los usuarios

/$ less /etc/passwd
Las contraseñas del usuario, solo puede leer el root

/$ less /etc/shadow

/$ sudo less /etc/shadow
  • LDAP
Para iniciar la sesion todas las computadoras con el mismo usuario
no guarda a los usuarios en /etc
Lamacena a todos los usuarios


  • NFS
Sistema de fichero de redes
  • SSH
  • Samba
  • Squid
Servidor Proxy
  • Webmin
Servidor Web para cambiar la configuracion de los servicios

  • Y Otros
Clientes
========

  • Perfil SkoleLinux: Maquina de trabajo
  • Inicia sesiones por servidor LDAP
  • Monta directorios de los usuarios potr red(NFS)
  • NFS: Necesita Permiso
    • Hay que incluir las maquinas de trabajo en el netgroup