lunes, febrero 27, 2006

Gentoo con instalador gráfico v. 2006.0!!

Asi es, gentoo ya tiene instalador grafico para x86 (por el momento)

No tenia pensado escribir nada por aqui, pero creo esto merece la pena..

Algunos screenshots:

Clic xD

domingo, febrero 19, 2006

Instalación de Apache + PHP + MySQL en Gentoo

Como bien saben tenemos a nuestro querido emerge XD..

Pues miramos los paquetes necesarios (miren con atención las USES):


[ebuild R ] net-www/apache-2.0.55-r1 +apache2 +debug
+doc -ldap -mpm-leader -mpm-peruser -mpm-prefork -mpm-threadpool
-mpm-worker -no-suexec (-selinux) +ssl -static-modules -threads



[ebuild R ] dev-php/mod_php-4.4.0-r9 +X +apache2 +berkdb
+crypt +curl +debug +doc -fdftk -firebird +flash -freetds +gd
-gd-external +gdbm -gmp -hardenedphp +imap -informix +ipv6 +java +jpeg
-kerberos -ldap -mcal -memlimit +mssql +mysql +nls -oci8 -odbc +pam
+png +postgres -snmp +spell +ssl +tiff +truetype +xml2 -yaz



Calculating dependencies ...done!
[ebuild R ] dev-db/mysql-4.1.14 +berkdb -big-tables -cluster
+debug +doc -extraengine -geometry -minimal +perl +readline (-selinux)
+ssl -static +tcpd -utf8



These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild R ] dev-db/phpmyadmin-2.7.0_p1 -vhosts 0 kB


Recomiendo actualizar la BD de portage antes de bajar los paquetes..

USE="apache2 flash gd java mysql postgres php" emerge apache mod_php mysql phpmyadmin

Una vez descargados y bajados tenemos que configurar algunas opciones (algunas a nuestra consideración ;).



En apache ( /etc/apache2/httpd.conf)


## Este directorio es donde trabaja apache, contiene archivos de conf. y logs
ServerRoot "/usr/lib/apache2"

## Tiempo en segundos donde apache puede esperar a realizar peticiones o recibir paquetes
Timeout 300

## Permite conecciones multiples al servidor
KeepAlive On

## Numero de peticiones por conexión, si el valor = 0 entonces es ilimitado
MaxKeepAliveRequests 100

## Segundos que el servidor Apache esperará una paetición antes de cerrarla
KeepAliveTimeout 15

## Ip y puerto por donde escuchará apache al estar encendido
Listen 80

## Usuario y grupo al que se le permite tener acceso a la información de directorios del servidor
User apache
Group apache

## Correo del admin del servidor
ServerAdmin root@soullost.com

## Nombre del servidor y puerto que utilizará el servidor para identificarse a si mismo. En este
## caso cuanto con un servidor DSN XD pero por lo regular se pone localhost:80
ServerName www.soullost.com:80

## Directorio donde se guardaran las paginas del servidor
DocumentRoot "/var/www/localhost"

## Aqui se determinar que tipo de pagínas se admiten como index ( principal)
DirectoryIndex index.html index.html.var index.php

## Archivo de config. personales ( útil en el caso tener dominios virtuales )
AccessFileName .htaccess

## Si esta opción esta en "on" en los archivos de bitacora (logs) en vez de usar direcciones ip
## se usaran dominios. Por ejemplo www.soullost.com en vez de 192.168.1.3
HostnameLookups Off

## Ubicación del archivo de errores (tener el cuenta la opción ServerRoot )
ErrorLog logs/error_log

## Nivel de depuración de errores (algo como una directiva)..
LogLevel warn

## Directorio donde se guardan los cgi-bins y un alias, en este caso, el alias es /cgi-bin/
## Recordando la directiva de ServerRoot quedaría /var/www/cgi-bin/
ScriptAlias /cgi-bin/ /var/www/localhost/cgi-bin/

## En gentoo tenemos este directorio para configurar los VirtualHost
Include /etc/apache2/vhosts.d/*.conf


En gentoo tenemos un archivo de config. de apache especial para especificar como se actuará..

/etc/conf.d/apache2

## Esta opción especificamos que el directorio para los host virtuales, también usaremos el modulo
## de apache y activamos el directorio para que lo usuarios del sistema puedan subir paginas.
## Ahi mismo en el archivo menciona de que se trata cada opción:

# Config file for /etc/init.d/apache2

# When you install a module it is easy to activate or deactivate the modules
# and other features of apache using the APACHE2_OPTS line. Every module should
# install a configuration in /etc/apache2/modules.d. In that file will be an
# where NNN is the option to enable that module.
# Here are the options available in the default configuration:
# USERDIR Enables /~username mapping to /home/username/public_html
# INFO Enables mod_info, a useful module for debugging
# PROXY Enables mod_proxy
# DAV Enables mod_dav
# DAV_FS Enables mod_dav_fs (you should enable this when you enable DAV
# unless you know what you are doing)
# SSL Enables SSL
# SSL_DEFAULT_VHOST Enables default vhost for SSL (you should enable this
# when you enable SSL unless you know what you are doing)
# LDAP Enables mod_ldap
# AUTH_LDAP Enables authentication through mod_ldap
# DEFAULT_VHOST Enables the default virtual host in /var/www/localhost/htdocs


APACHE2_OPTS="-D DEFAULT_VHOST -D PHP4 -D USERDIR"


Para iniciar el servidor:


/etc/init.d/apache2 start


En este caso miramos si se ectivo con exito, abrimos el navegador web y colocamos: localhost:80
Te tiene que decir que el servidor de webs se levanto con exito y te mostrara la sigueinte pantalla:
Free Image Hosting at www.ImageShack.us

Para verificar que soportamos PHP creamos una pagína en /var/www/locahost/htdocs como root con el siguiente código:


<?php
phpinfo();
?>


Y miramos la pagina por el navegador y saldrá algo asi:

Free Image Hosting at www.ImageShack.us

Yo aconstumbro crear un usuario para hacer pruebas con php y mysql sin hacer un desmadre en /var/www/localhost de ahi la opción de -D USERDIR en /etc/conf.d/apache2


adduser -m -g apache -s /bin/bash usuario
passwd usuario



test1@UnderHouse ~ $ id
uid=1005(test1) gid=81(apache) grupos=81(apache)


Creo el direcorio: mkdir /home/test1/public_html

Y listo a crear pagínas ahi..

Para ver las pagínas escribimos: http://localhost/~test1/pagina.html

Para MySQL

Despues de instalarlo y bajar sus dependencias dependiendo de las USES vamos a realizar este comandos (antes de iniciarlo, para poder iniciar en PHPMyAdmin).


ebuild /var/db/pkg/dev-db/mysql-4.1.14/mysql-4.1.14.ebuild config

Y también:


mysqladmin -u root -h localhost password 'mi_password'


Nota: Si es otra versión solo cambiala..
También debemos ingresar la contraseña de root

Ahora si iniciamos el demonio mysql


/etc/init.d/mysql start


Para entrar hacemos: mysql -u root -p


Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 4.1.14-debug-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| pmadb |
| test |
+----------+
3 rows in set (0.02 sec)

mysql> \q
Bye


Abrimos el navegador y tecleamos la siguiente dirección: localhost/phpmyadmin
Nos pedirá usuario y contraseña del root

Free Image Hosting at www.ImageShack.us

Y listo!!!

Espero no se me olvide nada, saludos!! ;)

sábado, febrero 11, 2006

I C++ (Introdución, Conceptos y Primeros Códigos)

Introducción a C++

C++ es originalmente creado por Bjarne Stroustrup dentro de los laboratorias Bell (AT&T) a principios de la decada de los 80's, como bien se sabe c++ evolucionó a partir del lenguaje C (programación estructurada) y simula 67.
C++ es un lenguaje de alto nivel orientado a objetos, lo que sinifica, que tenemos la capacidad de crear programas "modulares" y claramente con código reutilizable (una ventaja enorme en cuanto a c). Esto permite programar mejor, con mayor rapidez y corregir errores fácilmente.

Conceptos básicos de la POO (Programación orientada a objetos)

Objeto: Vivimos en un mundo de objetos, cualquier sustantivo puede ser tomado como tal (automóvil, avión, edificio, celular, mesa, silla etc).

Clases: Es la descripción de un objeto (características y funcionalidad).

Variables / Propiedades miembros: Es un almacén de datos relacionados con los objetos, estan suelen ser públicas o privadas.

Funciones miembro: Es la funcionalidad que se le dan a los objetos, similar a las funciones en la programación estructurada o a los métodos en java =).

Herencia: Permite crear clases (subclases) a partir de otras clases (clase base). Una subclase hereda código y datos de la clase base, no obstante, una subclase puede contener su código y datos particulares.

Instancia: Es un objeto creado a partir de un clase deifínida por el usuario.



Conceptos básicos de programación.

Lenguaje de programación: Son una serie de instrucciones que a groso modo indican lo que realizará la computadora para un fin determinado, estos lenguajes de programación son parecidos al lenguaje común del ser humano (en la mayoria de los casos al Ingles).

Secciones lógicas de una computadora.

Unidad de entrada: Es donde se recibe toda la información/datos que almancena/utiliza una computadora para realizar ciertas instrucciones especificas (Dispositivos de entrada: teclado, mouse/raton, Red, Internet, Microfono, etc.).

Unidad de salida: Es la sección donde se deposita toda la información ya procesada por la computadora para que este disponible. (Dispositivos de salida: Monitor, Impresora, Bocinas, etc).

Unidad de memoria: Es la parte donde se almacena información temporal para que este disponible durante la ejecución de procesos y es donde los dispositivos de salida obtienen lo que se mostrará una vez realizada una petición por los dispositivos de salida.

Unidad aritmética y lógica (ALU): Es la que se encarga de realizar las operaciones y decisiones al momento de procesar información ( operaciones aritméticas, operaciones lógicas).

Unidad central de procesamiento (CPU): Es la que administra todo el relajo al momento de manipular datos, la que inidica cuando se escribe en memoria, cuando se envia información a los dispositivos de salida, etc.
Este término es mal usado por muchos al referirse al gabinete de una computadora, asi que ya saben :D (no vuelvan a decir: Pasame el CPU!! XD).

Unidad secundaria de almacenamiento: Es donde se guarda información a largo plazo la cual puede ser utilizada cuando se requiera (discos).

Lenguaje maquina: Es el lenguaje o idioma natural que entiende un computadora, que básicamente son arreglos de puros 0 y 1. Este tipo de lenguaje es muy poco entendible y complicado para realizar programas.

Lenguaje esamblador: Este lenguaje sustituye al lenguaje maquina por una variante que es la sintaxis ( parecido al ingles), el cual se pueden realizar las operaciones básicas de una computadora. No es tan complicado de entender pero requiere de de mucho código.

Lenguaje de alto nivel: Es el utilizado hoy en día para realización de programas para una computadora. Estos lenguajes tiene una sintaxis mucho más sencilla que un lenguaje esamblador y que además proprociona ser más eficiente al programar.

Compilador: Es el encargado de convertir las instrucciones de un lenguaje de alto nivel (código fuente) a lenguaje maquina para que puede ser entendible para una computara. Esto a su vez crea un ejecutable el cual se encargará de realizar las operaciones que indicamos al momento de programar.

Interprete: Ejecuta un programa de alto nivel sin tener que compilarlo.

Ambiente de programación en C++

Los programas escritos en C++ y el código fuente de este se almacenan en archivos con extensión .cc .cxx .cpp ó .C.
Un programa en c++ pasa por 6 fases para su ejecución, que se describen a continuación:

Edición: Es la fase donde se escribe el código fuente del programa mediante un editor. En linux hay varios como vim, vi, gvim, anjuta IDE xD, etc ( Ya estaré escribiendo algo sobre esto ;).

Preproceso: Esta fase se realiza antes de compilar el programa y la cual usa directivas de un programa llamado preprocesador el cual es invocado por el compilar antes de convertir a código objeto nuestro programa.

Compilación: Se crea el código objeto y se almacena en disco.

Enlace: Se enlaza nuestro código objeto con las librerias estandar de c++ o las creadas por nosotros para crear una imagen ejecutable.

Carga: El programa se almacena en memoria para su ejecución, sencillo no?

Ejecución: Se ejecuta el programa mediante la administración de la CPU.

Escribiendo código en C++

Después de un poco de teoria y espero haberlo hecho bien XD, empezamos con la acción, PERO antes debemos saber algunas cosas más al momento de programar.

Las variables son usadas en cualquier lenguaje de programación y no es más que un espacio de memorial reservado para algunos tipos de datos que utilizaremos durante la ejecución de un programa.

1. Enteros
1. int
2. long int
3. long long
4. short
5. char
2. Flotantes
1. float (IEEE754 Simple)
2. double (IEEE754 Normal)
3. long double (IEEE754 Extendido)


Los operadores aritméticos son especialmente para realizar operaciones/cálculos aritméticas(os) xD

Operador Operación

+ Suma

- Resta

* Multiplicación

/ División

% Residuo o Módulo

Existe una precedencia al momento de evaluar una expresión aritmética

Orden de operaciones:

1.- Paréntesis

2.- Potencias y raíces

3.- Multiplicaciones y divisiones

4.- Sumas y restas

5.- Dos o más de la misma jerarquía u orden entonces resolver de izquierda a derecha


Los operadores relacionales con para evaluar ó comparar expresiones.

<> Mayor que
<= Menor o igual que >= Mayor o igual que
== Igual que (identidad)
!= Desigual que (desigualdad)

El flujo estándar de entrada se hace mediante la instrucción cin (c-in) y por lo regularmente obtenemos los datos necesarios mediante el teclado.

El flujo estándar de salida se manda a pantalla mediante la instrucción cout.

El flujo estándar de errores se usa mediante la expresión cerr y se manda al monitor junto con cout regularmente.

Secuencias de escape.




Secuencia Valor Símbolo Que hace

\a 0x07 BEL Sonido audible (bell)

\b 0x08 BS Retroceso (backspace)

\f 0x0C FF Salto de formato (formfeed)

\n 0x0A LF Saltar una línea (linefeed)

\r 0x0D CR Retorno de carro (carriage return)

\t 0x09 HT Tabulación horizontal (H Tab)

\v 0x0B VT Tabulación vertical (V Tab)

\\ 0x5c \ Barra invertida (backslash) [2]

\' 0x27 ' Apóstrofo (comilla simple)

\" 0x22 " Doble comilla

\? 0x3F ? Interrogación

\O cualquiera cualquiera O = cadena de hasta tres dígitos octales

\xH cualquiera cualquiera H = cadena de dígitos hexadecimales

\XH cualquiera cualquiera H = cadena de dígitos hexadecimales



Los comentarios son usados para expresar una opinión o algún comunicado a la persona que mire el código de nuestro programa.
En c++ se pueden escribir de la siguiente manera:

// Esto es comentario de una linea

/* Esto es
un comentario de
muchas lineas
XD
BU!*/


Pues empezemos con un programa sencillo:


// Esta es una liberia estandar de C++, se tiene que declarar para usar el
//flujo de entrada, salida y de errores.
//Esta linea es usada por el preprocesador de C++.
1 #include<>
2 int main(){
3 std::cout <<"Hola, \n Que tal? \n Nos vemos!"; 4 return 0; 5 }


Que es lo que hace?
En la linea 2 se declara la función principal del programa, la cual siempre se debe escribir y decimos que devuelve un valor de tipo entero (ya veremos esto a fondo). Sabemos que es una función por la forma de declarar los parentesis a la derecha despues del nombre.
La llave izquierda ({) señala que ahi empieza una bloque de instrucciones que son parte de la función main.

La linea 3 se manda a imprimir en pantalla mediante la instrucción std::cout y el operador de insercción de flujo (<<) el siguiente mensaje, por cierto, cada instrucción termina con punto y coma (;): Hola, Que tal? Nos vemos! En la linea 4 indicamos que regresamos un valor nulo (nada). La linea 5 simplemente con la llave derecha (}) se da por concluido el bloque de instrucciones de la función main y por lo tanto el termino del programa. Nota: Siempre que se abrá un bloque de instrucciones se debe cerrar, si al momento de compilar nos mandará un mensaje de error y no podrá crearse la imagen ejecutable del programa. El programa anterior se puede escribir con algunas variantes y con el mismo resutado:

// Esta es una liberia estandar de C++, se tiene que declarar para usar el
//flujo de entrada, salida y de errores.
//Esta linea es usada por el preprocesador de C++.
1 #include<>
2 int main(){
3 std::cout <<"Hola, \n"; 4 std::cout <<"Que tal? \n"; 5 std::cout <<"Nos vemos! \n"; 6 return 0;



// Esta es una liberia estandar de C++, se tiene que declarar para usar el
//flujo de entrada, salida y de errores.
//Esta linea es usada por el preprocesador de C++.
1 #include<>
2 int main(){
3 std::cout <<"Hola, \n" 4 <<"Que tal? \n" 5 <<"Nos vemos! \n"; 6 return 0;


Entre algunas formas mas pero bueno ahi prueben que es la unica manera de aprender (practicando).

Ahora algo un poco mas complejo, algunas operaciones mediante el uso de los operadores aritméticos.


#include<>
int main()
{
using std::cout;
using std::cin;
using std::cerr;
int num1, num2;

cout<<"Escribe el num1: "; cin>>num1;
cout<<"Escribe el num2: "; cin>>num2;
cout<<"La suma de los dos numero es: "<<>

Vaya hay cosas nuevas XD..

Using std:: Es para poder omitir el std:: cada vez que ocupemos cout, cin o cerr (esto es referente a los espacios de nombre que veremos después).

int num1, num2 Nada especial declaramos dos variables que solo guardaran datos enteros.

cin>> Lo mismo que cout, se usa para obtener datos mediante el operador de extracción de flujo (>>). En este caso pedimos el valor de la variable num1.

<<>

miércoles, febrero 08, 2006

Regreso a clases X<

Pues de nuevo regresamos a las carreras y a la buena vida que nos da la uni :P XD

Sin embargo el primer dia la gran mayoria de los maestros ni se presentaron, esperemos para después de la primera semana todas la clases se normalizen..

Ps las materias que veremos esta semestre son estas:

Ética

Programación POO

Química X(

Probabilidad y Estadística

Dibujo (que ni idea de que se trata creo es AutoCad)

Matemáticas II

Ps la verdad la unica que me interesa es la de Programación y algo de dibujo si se da lo de AutoCad ya que si es de llevar la gran regla "T" ps safo XD.

Los maestros que se presentaron es el de mate., que seguraménte nos tendrá matandole con ejercicos XD, el de química, otro que estaremos viendo teoría y haciendo unas manualidades y documentación en diapositivas ( que comentó que al último con esa información subiriamos los tutoriales a la pagína de la escuela), la de ética, que ps se ve buena onda pero no espero hacer gran cosa..

Pues así están las cosas hasta el momento y espero tener tiempo para seguir con esto y hacer la sección de cursos =)..

Hasta la próxima.

viernes, febrero 03, 2006

Hoolingans







Tiene como 2 semanas que fui a ver esta pelicula sobre los "agrupaciones" llamadas hooligans y la violencia que llevan en cada partido que se presenta.
La historia comienza cuando Matt es explusado de la "tan famosa" universidad Harvad por incubrir a un we que se fumaba drogas =x . Sin el apoyo de su padre se va de la ciudad a visitar a su hermana en inglaterra donde conoce a Pete que es hermano del esposo de su hermana XD..
Aqui es donde el empieza todo el desmadre cuando este mentado Matt se va filtrando y se une al grupo de hooligans al que pertenece Pete..

Bueno la historia esta bien (no puedo decir que excelente), "supuestamente" es para mayores de edad xD pero no tiene una excesiva muestra de escenas violentas que no se puedan mirar (al menos para mi)..

El final no me parece lo mejor que digamos por que se me figuro muy simple, pero bueno, tal vez el productor(es) trato de finalizar con que estos actos no son los mejores para seguir y por eso justifica el final..

Bueno para los amantes de la acción y drama ps no es la mejor pero es mejor que ir a ver pinocho o zhatura xDDDD

Aqui les dejo el resumen en la pagina de Cinepolis Clic aqui XD

Para los fumadores XD

No me considero un adicto



Pero si fumo de vez en cuando..

Esto lo encontré buscando en google y espero les seá de utilidad y de paso también un test para mirar que tan adicto eres..

Me sorprendio mirar que quimicos se utilizan en la elaboración de los cigarrillos

Mi resultado fue este: Clic

Y el de ustedes? XD

Articulo

Test

jueves, febrero 02, 2006

Des/montaje de Memoria USB en Caliente


Apenas hice una compra de una memoria USB Kingston de 512 MB (mas que necesario XD, ya es una necesidad no un lujo)..
Para sopresa el gnome 2.12 ahora estable en gentoo me monto y desmonto automaticamente el dispositivo y la reconocio correctamente =), al parecer no realizé nada por que antes habia dado soporte a un impresora USB EPSON CX 1500 para que la detectara de la mismo forma..



Hay que tener soporte en el kernel de la siguiente forma:


Loadable module support --->
[*] Enable loadable module support
[*] Module unloading
[*] Automatic kernel module loading

Device Drivers

[*] Plug and Play support

USB support

[*] USB device filesystem
Support for Host-side USB
EHCI HCD (USB 2.0) support
OHCI HCD support
UHCI HCD (most Intel and VIA) support
USB Mass Storage support

File systems --->
DOS/FAT/NT Filesystems --->
VFAT (Windows-95) fs support


En gentoo hay dos demonios que cargan los modulos al inicio del sistema (claro si tienes un kernel modular): Coldplug y Hotplug
En mi caso uso coldplug y lo arranco al iniciar el sistema. También en vez de usar supermount uso ivman + hald + coldplug (seguir esta guia Ivman, sustituto de supermount)

La unica desventaja de ivman es que no funciona con los disquettes XD (ya casí obsoletos), si quieren usar supermount los usuarios de gentoo deberan usar las sources originales del kernel (vainilla creo se llaman). Aqui esta una guia Supermount

El unico problema que se me presento es que no tenia permisos para leer, escribir ni ejecutar nada en /media/Kingston, para esto miré que sucede y solo bastaba con agregar mi usuario al grupo plugdev


soullost@UnderHouse ~ $ ls -l /media
total 16
drwxrwx--- 3 ivman plugdev 16384 Dec 31 1969 Kingston

gpasswd -a soullost plugdev

soullost@UnderHouse ~ $ id
uid=1000(soullost) gid=100(users) groups=10(wheel),11(floppy),18(audio),19(cdrom),27(video),35(games),
80(cdrw),81(apache),85(usb),100(users),409(qemu),410(plugdev),411(vmware)


miércoles, febrero 01, 2006

Intel Pro/100 en Linux XD

Hoy (mas bien dicho ayer, ya es de madrugada xD ) llevó un chavo al curso su super pc (hd de 200 GB creo, RAM 1 GB, etc) para que el maestro le dierá soporte a la tarjeta Ethernet en Linux..

Resulta que fui a mirar que hacian y pum al ultimo termine dandole soporte =), siempre les recomiendo que antes de dar soporte a cualquier cosa en el kernel esten seguros de cual es su dispositivo (nombre, modelo) y de ahi busquen el modulo o "controlador" que use Linux para darle soporte.

Ps como este amigo no sabia ni como se llamaba su tarjeta Ethernet XD, realize algunos comandos para obtener un poco de información, aparte de verificar en windows la información ( vaya idea del maestro ¬¬ xD )

dmesg este manda a pantalla avisos del kernel, por ejemplo, dispositivos conectados recientemente o algún error con el hardware


Intel(R) PRO/100 Network Driver - version 2.3.38-k1


modprobe -l | grep net La primera parte ( separada por "|") muestra absolutamente todos los modulos o "controladores" qie soporta el kernel actual. La segunda parte hace una busqueda por la categoria "net" (la verdad solo busca cualquier cadena con "net") igual pueden poner directamente el nombre del modulo que da soporte a nuestro dispositivo si ya saben cual es (solo para verificar si existe el modulo y lo podemos cargar).
El resultado da una lista algo asi:


/lib/modules/2.6.14-gentoo-r5/kernel/drivers/net/mii.ko
/lib/modules/2.6.14-gentoo-r5/kernel/drivers/net/epro100.ko


modinfo e100 Este da un poco de información sobre el modulo:


escription: Intel(R) PRO/100 Network Driver
author: Copyright(c) 1999-2004 Intel Corporation
license: GPL
parm: debug:Debug level (0=none,...,16=all)
vermagic: 2.6.6-1.435.2.3 686 REGPARM 4KSTACKS gcc-3.3
depends: mii
alias: pci:v00008086d00001029sv*sd*bc02sc00i*
alias: pci:v00008086d00001030sv*sd*bc02sc00i*
alias: pci:v00008086d00001031sv*sd*bc02sc00i*


modprobe modulo Pues una vez sabiendo que esta el modulo que soporta el dispositivo solo queda levantarlo.. Esto se hace con el nombre del modulo quitandole la extención .ko por asi decirlo:

modprobe e100

ifconfig eth0 up mtu 1500 netmask 255.255.255.0 192.x.x.x Con esto le indicamos que levante la interfaz de red y le asigne una ip "192.x.x.x" y una mascara de red "255.255.255.0".

Ps con este es suficiente, ya solo quedo crear un archivo ifcfg-eth0 para que lo arrancará desde el inicio del sistema y no será necesario volver a repetir los datos =). Eso depende en gran medida de la distribución que manejes..

Solo para verificar hagan un ping a algún equipo de la red que pertenesca a la subred correspondiente..

Segundo codigo en php (juego del gato)

Buenas..

Pues lo prometido es deuda xD, aqui esta el juego del gato. Falta depurarlo aún mas y afinar detalles como por ejemplo poner una alerta en javascript si el lugar en el que se tiro ya esta ocupado entre otras circunstacias que pueden surgir xD. Pero de que funciona, funciona xD..

Cualquier comentario haganmelo saber. Sin mas que decir lo pongo aqui abajo..
Por cierto traté de acortarlo usando en un principio arreglos y funciones pero no pude hacer funcionar un arreglo declarado en otras funciones (que se a de poder pero no investigué mucho).

Una vez mas si lo quieren probar quitenle los espacios que puse entre las etiquetas html.
Ya despues estaremos explicando algo de prog. en php ;)



Archivo index.html


< html>
< head>
< title> Juego del gato
< /head>
< body>
< center>
< h1> Bienvenidos al juego del gato
< h5>Juega Jugador 1 con una 'X' (Favor escribir con Mayusculas)
< FORM action="gato.php" METHOD="GET">
< INPUT type="text" name="jd1" size=1 maxlength=1>
< INPUT type="text" name="jd2" size=1 maxlength=1>
< INPUT type="text" name="jd3" size=1 maxlength=1>
< br>
< INPUT type="text" name="jd4" size=1 maxlength=1>
< INPUT type="text" name="jd5" size=1 maxlength=1>
< INPUT type="text" name="jd6" size=1 maxlength=1>
< br>
< INPUT type="text" name="jd7" size=1 maxlength=1>
< INPUT type="text" name="jd8" size=1 maxlength=1>
< INPUT type="text" name="jd9" size=1 maxlength=1>
< br>
< INPUT type="hidden" name="jugador" value="1">
< INPUT type="hidden" name="contador" value="0">
< INPUT type="hidden" name="jugada" value="X">
< INPUT type="submit" value="Enviar Jugada">
< /FORM>
< /center>
< /body>
< /HTML>



Archivo gato.php

< html>
< head>
< title>Jugando al gato
< /head>
< body>
< center>
< h1> Juego del gato
$jd1=$_GET['jd1'];
$jd2=$_GET['jd2'];
$jd3=$_GET['jd3'];
$jd4=$_GET['jd4'];
$jd5=$_GET['jd5'];
$jd6=$_GET['jd6'];
$jd7=$_GET['jd7'];
$jd8=$_GET['jd8'];
$jd9=$_GET['jd9'];

$contador=$_GET['contador'];

$jugada=$_GET['jugada'];

$ganador=0;

//Checando Verticales


if ( $jd1 == $jugada && $jd2 == $jugada && $jd3 == $jugada )
{

$ganador=1;
}
if ( $jd4 == $jugada && $jd5 == $jugada && $jd6 == $jugada )
{
$ganador=1;
}
if ( $jd7 == $jugada && $jd8 == $jugada && $jd9 == $jugada )
{
$ganador=1;
}

//Checando Horizontales

if ( $jd1 == $jugada && $jd4 == $jugada && $jd7 == $jugada )
{
$ganador=1;
}
if ( $jd2 == $jugada && $jd5 == $jugada && $jd8 == $jugada )
{
$ganador=1;
}
if ( $jd3 == $jugada && $jd6 == $jugada && $jd9 == $jugada )
{
$ganador=1;
}

//Checando Diagonales

if ( $jd1 == $jugada && $jd5 == $jugada && $jd9 == $jugada )
{
$ganador=1;
}
if ( $jd3 == $jugada && $jd5 == $jugada && $jd7 == $jugada )
{
$ganador=1;
}

$jugador=$_GET['jugador'];


if ( $jugada=='X' || $jugada=='x')
{
$jugada='O';
}
else{
$jugada='X';
}

if ( $contador <= 8 && $ganador != 1 )
{
if ( $jugador==1)
{
$jugador=2;
}
else{
$jugador=1;
}
$contador++;
echo "< h5>Juega Jugador ",$jugador ," con una ",$jugada," (Favor escribir con Mayusculas)< /h5>";
echo "< FORM action=\"gato.php\" METHOD=\"GET\">";
echo "< INPUT type=\"text\" name=\"jd1\" size=1 maxlength=1 value=",$jd1,">";
echo "< INPUT type=\"text\" name=\"jd2\" size=1 maxlength=1 value=",$jd2,">";
echo "< INPUT type=\"text\" name=\"jd3\" size=1 maxlength=1 value=",$jd3,">";
echo "< br>";
echo "< INPUT type=\"text\" name=\"jd4\" size=1 maxlength=1 value=",$jd4,">";
echo "< INPUT type=\"text\" name=\"jd5\" size=1 maxlength=1 value=",$jd5,">";
echo "< INPUT type=\"text\" name=\"jd6\" size=1 maxlength=1 value=",$jd6,">";
echo "< br>";
echo "< INPUT type=\"text\" name=\"jd7\" size=1 maxlength=1 value=",$jd7,">";
echo "< INPUT type=\"text\" name=\"jd8\" size=1 maxlength=1 value=",$jd8,">";
echo "< INPUT type=\"text\" name=\"jd9\" size=1 maxlength=1 value=",$jd9,">";
echo "< br>";
echo "< INPUT type=\"hidden\" name=\"jugador\" value=",$jugador,">";
echo "< INPUT type=\"hidden\" name=\"contador\" value=",$contador,">";
echo "< INPUT type=\"hidden\" name=\"jugada\" value=",$jugada,">";
echo "< INPUT type=\"submit\" value=\"Enviar Jugada\">";
echo "< /FORM>";
}

if ( $contador < 8 && $ganador == 1 )
{
echo "< h2>Gano el Jugador ",$jugador ,"!!!";
echo "< FORM action=\"gato.php\" METHOD=\"GET\">";
echo "< INPUT type=\"text\" name=\"jd1\" size=1 maxlength=1 value=",$jd1,">";
echo "< INPUT type=\"text\" name=\"jd2\" size=1 maxlength=1 value=",$jd2,">";
echo "< INPUT type=\"text\" name=\"jd3\" size=1 maxlength=1 value=",$jd3,">";
echo "< br>";
echo "< INPUT type=\"text\" name=\"jd4\" size=1 maxlength=1 value=",$jd4,">";
echo "< INPUT type=\"text\" name=\"jd5\" size=1 maxlength=1 value=",$jd5,">";
echo "< INPUT type=\"text\" name=\"jd6\" size=1 maxlength=1 value=",$jd6,">";
echo "< br>";
echo "< INPUT type=\"text\" name=\"jd7\" size=1 maxlength=1 value=",$jd7,">";
echo "< INPUT type=\"text\" name=\"jd8\" size=1 maxlength=1 value=",$jd8,">";
echo "< INPUT type=\"text\" name=\"jd9\" size=1 maxlength=1 value=",$jd9,">";
echo "< br>";
echo "< INPUT type=\"hidden\" name=\"jugador\" value=",$jugador,">";
echo "< INPUT type=\"hidden\" name=\"contador\" value=",$contador,">";
echo "< INPUT type=\"hidden\" name=\"jugada\" value=",$jugada,">";
echo "< /FORM>";
}

if ( $contador == 9 && $ganador != 1 )
{
echo "< h2>Juego Terminado
EMPATE!! ";
}
?>
< /center>
< /body>
< /html>