elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 ... 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 [69] 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 ... 96
681  Programación / Scripting / Re: Duda imprimir variables Python en: 21 Noviembre 2009, 23:03 pm
Yo tengo la 2.6.2 :)  deberia probar la 3 haber como va.
682  Programación / Scripting / Re: Duda imprimir variables Python en: 21 Noviembre 2009, 22:10 pm
Citar
Según leí en un libro, no hace falta declarar la variable al hacerla, por ejemplo para los números si es entero complejo o real, pero he probado a poner una "x"  y da error.

No, efectivamente no hace falta declarar que tipo de datos soporta una variable en este lenguaje, pero si hace falta saber que tipo de datos soportan como parametros ciertas funciones internas de ciertos modulos.

En python hay 2 funciones para recibir datos
* raw_input
* input

raw_input colecciona cualquier dato insertado por teclado por parte del usuario y lo convierte en caracteres. Sin embargo en el caso de input colecciona los datos insertados por teclado y los convierte a numeros, otra falla de input es que no solo convierte todo lo recibido a numero o lo trate como un numero sino que tambien asume lo insertado como codigo python he intentara ejecutarlo... por ende te recomendaria usar raw_input en lugar del debil input.

Si tu inconveniente es que no quieres que raw_input convierta numeros insertados por teclado en caracteres, no hay problema alguno filtra la entrada especificando que meramente debe recibir solo numeros asi:

Código
  1.  
  2. try:
  3.  
  4.  numero=int(raw_input("Inserta un numero  "))
  5.  
  6. except Exception:
  7.  
  8.  print "Debes insertar un Numero!!"
  9.  
  10. else:
  11.  
  12.  print ("Mi suma con 10 es ", numero+10)
  13.  
  14.  
  15.  
683  Programación / Bases de Datos / Re: Diagrama de BD. Como definir moderador para cada foro en: 21 Noviembre 2009, 03:26 am
Me he ausentado... mucho trabajo y poco tiempo.  :P

Yo tampoco le veo mucha concordancia a incluir id_hilo y id_res juntos... por una parte porque en algun punto tendras que hacer una relacion o consulta a la misma tabla como el ejemplo que te expuso Napk y si analizamos el ejemplo expuesto por Napk, aca en esa simple consulta el motor tendra la optimizacion suficiente para buscar datos cuando se encuentre con esto:

select * from hilo where idhilo = 'algo'

y cuando se encuentre con esto otro:

select * from hilo where idhilo_res = 'algo'

Porque son consultas haciendo referencia a una pk constante pero... cuando le incluyes el UNION ahi el motor para dicho predicado no filtra nada... hara una busquedad de todos los registros que poseas... lo cual te podrias evitar si ambas tablas estuviesen individual.

Que despejes datos a la hora de estructurar no implica que sea redundante algo, redundante es que despues te afecte indirecta o directamente la construccion de algo.  Pero mientras mas despejes aveces mas te puede convenir. Aunque visualmente parece que posee detalles demas el diagrama de Napk el meramente ha despejado tablas para evitarse problemas futuros de relacion, sobre optimizaciones de consultas es otro temita que se trata luego que tengas disenada las estructuras de tus tablas y mientras mas despejes mejor porque asi puedes decidir asignarles el motor conveniente a cada tabla sin necesidad de afectar a otra...  :-*





684  Programación / Bases de Datos / Re: Ayuda con una consulta con tablas relacionadas mysql en: 19 Noviembre 2009, 03:15 am
De nada mark182  ;)

Suerte con eso.
685  Programación / Bases de Datos / Optimizacion MySQL (Para programadores y DBA) en: 18 Noviembre 2009, 15:24 pm
Esto solo es el primer paso de como optimizar un motor MySQL para mejores resultados. Ire ofertando mas nuevas implementaciones en el futuro cercano.

Citar

EXPLAIN MySQL es una herramienta indispensable (no la única) a la hora de realizar tareas de otpimización sql.

Explain MySQL no es más que una manera de mostrar como MySQL procesa las sentencias SQL mediante sus índices y uniones. El uso de Explain MySQL permite ayudar a los DBAs, en una primera instancia, a mejor el diseño de base de datos agregando índices y permitiendo una selección de consultas más óptimas.

Lo único que debemos hacer para hacer uso de Explain MySQL es anteponer “Explain” a la SQL deseada.


    
Código
  1. EXPLAIN SELECT * FROM `localidades` WHERE id =1


Ejecutando esta SQL, MySQL nos indica como la está procesando y nos mostrará un listado con información sobre índices, tablas, resultados, etc.

En el resultado de explain de mysql visualizaremos una tabla con 10 columnas de información para cada tabla implicada




De las columnas anteriores cabe destacar:

1. type: Esta columna indica el tipo de unión que se está usando (de más a menos óptimo).

Donde SIMPLE (Es cuando no se usan Uniones o SubConsultas)
Donde UNION (Es cuando usamos la clausula UNION en 2 tablas)
Donde SubQUERY ( Es cuando usamos Subconsultas)


2. const: Es la más óptima y se dá cuando la tabla tiene como máximo una fila que coincide. Como solo hay una fila coincidente, MySQL la considerará como constante por el optimizador.

3. eq_ref: Una fila será leída de la tabla A por cada combinación de fila de la tabla B. Este tipo es usada cuando todas las partes de un índice son usados para la consulta y el índice es UNIQUE o PRIMARY

4. ref: Todas las filas con valores en el índice que coincidan serán leídos desde esta tabla por cada combinación de filas de las tablas previas. Si la clave que es usada coincide sólo con pocas filas, esta unión es buena.

5. range: Sólo serán recuperadas las filas que estén en un rango dado, usando un índice para seleccionar las filas. La columna key indica que índice se usará, y el valor key_len contiene la parte más grande de la clave que fue usada. La columna ref será NULL para este tipo.

6. index: Este es el mismo que ALL, excepto que sólo el índice es escaneado. Este es usualmente más rápido que ALL, ya que el índice es usualmente de menor tamaño que la tabla completa.

7. ALL: Realiza un escaneo completo de tabla por cada combinación de filas de las tablas previas. Este caso es el peor de todos.

8. possible_keys: Esta columna indica los posibles índices a utilizar en la consulta

9. key: Esta columna indica el indice que MySQL actualmente está usando. Esta columna es NULL si no se ha elegido ninguno. Es interesante saber que podemos forzar a MySQL a usarlo (y también a ignorarlo) mediante el uso de FORCE INDEX, USE INDEX o IGNORE INDEX

10. key_len: El tamaño del índice usado. A menor valor mejor.

11. ref: La columna ref muestra que columna o constante es usada junto a la key para seleccionar las columnas de la tabla

12. rows: Indica el número de columnas que MySQL cree necesario examinar para ejecutar la SQL.

13. extra: Indica información adicional de como MySQL ha resuelto la SQL y hay que prestar atención si aparece USING FILESORT o USING TEMPORARY. En el primer caso, indica que MySQL debe hacer un paso extra para recuperar la información. En el segundo, MySQL necesita generar una tabla extra para mantener la información y después mostrarla y es típico al usar GROUP BY u ORDER BY.

En ocasiones, MySQL puede mostrar ALL en la columna type cuando:

1. La tabla es tan pequeña que MySQL ve más rapido hacer un escaneo completo de la tabla.

2. No hay restricciones usando las cláusulas ON o WHERE.

3. Se compara columnas indexadas con valores constantes.

4. Las claves utilizadas devuelven muchos registros que coinciden con el valor.

Aún así, hay que decir que éste no es el único método de optimización SQL, aunque es uno bueno


Fuente de lo publicado Anteriormente:
http://www.sergiquinonero.net/explain-mysql-o-como-optimiza-sql.html
686  Programación / Bases de Datos / Re: Ayuda con una consulta con tablas relacionadas mysql en: 18 Noviembre 2009, 13:29 pm
Disculpa mark182, hice un punto de referencia sobre optimizacion de una consulta en una DB. (Hare una mini introduccion mas extendida de ventajas y desventajas de optimizacion en una base de datos de MySQL para pegarle una chinchetita y asi puedan conocer de mejor forma esta funcionalidad tan olvidada entre programadores webs  ;) asi el tema no sera tan avanzado como lo vez por el momento.)

Ok, me temo que no podemos ayudarte mas extendido sino sabemos que informacion tienen las tablas de tu base de datos, ni que consulta tu estas haciendo para obtener esos datos. Mi pregunta era, que consulta SQL es que estas realizando para obtener los datos que pides???  si tus tablas realmente tienen registros cualquiera de las consultas anteriormente posteadas aqui deben retornarte un valor (Al menos dentro del motor, esto es individual de lo que tengas en PHP)

Segun las tablas que colocaste de ejemplo, hice una imitacion de las tuyas con 3 filas cada una (Como podras ver en el ejemplo):

Código
  1.  
  2. mysql> SELECT * FROM usuarios;
  3. +-------+---------+----------------------------------+
  4. | id_us | usuario | contraseña                       |
  5. +-------+---------+----------------------------------+
  6. |     1 | coco    | 202cb962ac59075b964b07152d234b70 |
  7. |     2 | shersy  | 202cb962ac59075b964b07152d234b70 |
  8. |     3 | xoxo    | 202cb962ac59075b964b07152d234b70 |
  9. +-------+---------+----------------------------------+
  10. 3 ROWS IN SET (0.00 sec)                              
  11.  
  12. mysql> SELECT * FROM alumnos;
  13. +---------+---------+---------+
  14. | id_alum | nombres | colegio |
  15. +---------+---------+---------+
  16. |       1 | Juan    | Perez   |
  17. |       2 | Maria   | Mendez  |
  18. |       3 | Matias  | Lopez   |
  19. +---------+---------+---------+
  20. 3 ROWS IN SET (0.00 sec)      
  21.  
  22.  
  23.  

De igual manera viste como obtuve el campo colegio solamente con el nombre de usuario (Como lo andas solicitando):

Código
  1.  
  2. mysql> SELECT *  FROM alumnos INNER JOIN usuarios WHERE usuario = 'coco' AND usuarios.id_us = alumnos.id_alum;  
  3.  
  4. +---------+---------+---------+
  5. | id_alum | nombres | colegio |
  6. +---------+---------+---------+
  7. |       1 | Juan    | Perez   |
  8.  
  9.  

si te fijas en la tabla usuarios al usuario 'coco' le corresponde el id_us = 1 por ende retornamos la info de la tabla alumnos correspondiente a id_alum = 1, en tu caso deberia ser un SELECT colegio en vez de SELECT * (ALL) y funciona perfectamente dentro del motor (Puedes probarlo conectandote individualmente a MySQL por MS-DOS si estas en Windows o una Terminal si estas en Linux y realizando la mismita consulta que se te ha publicado aca) Si obtienes los datos que buscas dentro del motor, pero no lo obtienes a traves de web... me temo que el problema estaria dentro de la programacion de tu codigo PHP y no de la manera de realizar tu consulta SQL en si.
687  Programación / Scripting / Re: (Python)Existen ventanas de entrada y salida de datos en python en: 18 Noviembre 2009, 02:25 am
Blender es un programa para hacer graficos 3D y la libreria GTK es un API para desarrollar formularios (tu entiendes).  No es lo mismo y pygtk es para desarrollar aplicaciones graficas con python + GTK, mas Blender es para otro tipo de modelado de cosas... (Como las imagenes 3D que ves en wallpapers y asi)

Puedes crear un script en python (python nativo sin gtk) y llamarlo desde la aplicacion Blender para crear alguna imagen 3D a gran velocidad, pero es solo una imagen no es una aplicacion con 1 formulario, botones llamadas a eventos, etc, etc que harias con python+Gtk.

Es lo mas que conozco sobre el tema, si alguien considera que es posible realizar aplicaciones graficas con python y blender (Que aun no me entero que se pueda) que te lo exponga. De antemano puedes descargarte Blender desde su website, pero hasta lo que yo se solo te serviria para crear imagenes en 3D no para programar o desarrollar cosas dentro de este.
688  Programación / Bases de Datos / Re: Ayuda con una consulta con tablas relacionadas mysql en: 18 Noviembre 2009, 02:03 am
No se que registro tengas dentro de tu tabla, serias tan amable de postear que consultas estas utilizando? que registros tienes dentro de la tabla (Aunque sean 5 de ejemplo)... y bueno que codigo PHP (Aunque ya esa parte no corresponderia para este subforo, sino a PHP) obvia el codigo (Aunque por la respuesta que expones que siempre te retorna Resourse#4 y aunque no he visto tu tabla segun los campos que tienes este dato como que no concuerda... pareciera que es un fallo mas de codigo que de consulta) Pero sino es mucho pedir, podrias entras por el cliente MySQL (En una terminal o MS-DOS) y realizar la misma consulta SQL (que haces en tu codigo PHP) dentro del mismo motor MySQL y ver que te retorna y exponerlo aca?

Una recomendacion :) (para todos) Procura usar mas indices puesto que:

Cita de: sql

mysql> select * from usuarios;
+-------+---------+----------------------------------+
| id_us | usuario | contraseña                       |
+-------+---------+----------------------------------+
|     1 | coco    | 202cb962ac59075b964b07152d234b70 |
|     2 | shersy  | 202cb962ac59075b964b07152d234b70 |
|     3 | xoxo    | 202cb962ac59075b964b07152d234b70 |
+-------+---------+----------------------------------+
3 rows in set (0.00 sec)                               

mysql> select * from alumnos;
+---------+---------+---------+
| id_alum | nombres | colegio |
+---------+---------+---------+
|       1 | Juan    | Perez   |
|       2 | Maria   | Mendez  |
|       3 | Matias  | Lopez   |
+---------+---------+---------+
3 rows in set (0.00 sec)       


Lo anterior es un ejemplo, llaves primarias solo son id_alum y id_us por el momento, pero si solo quieres el campo 'colegio' y filtras por las 2 llaves de cada tabla mira que pasa:

Código
  1.  
  2. mysql> EXPLAIN SELECT colegio AS COLEGIO FROM alumnos INNER JOIN usuarios WHERE alumnos.id_alum = usuarios.id_us;
  3. +----+-------------+----------+--------+---------------+---------+---------+--------------------------+------+-------------+
  4. | id | select_type | TABLE    | TYPE   | possible_keys | KEY     | key_len | REF                      | ROWS | Extra       |
  5. +----+-------------+----------+--------+---------------+---------+---------+--------------------------+------+-------------+
  6. |  1 | SIMPLE      | alumnos  | ALL    | PRIMARY       | NULL    | NULL    | NULL                     |    3 |             |
  7. |  1 | SIMPLE      | usuarios | eq_ref | PRIMARY       | PRIMARY | 1       | primaria.alumnos.id_alum |    1 | USING INDEX |
  8. +----+-------------+----------+--------+---------------+---------+---------+--------------------------+------+-------------+
  9.  
  10.  
  11.  

Lo anterior muestra como la tabla alumnos para encontrar el campo 'Colegio' del usuario 'coco' tiene que rebuscar en todos los registros que contiene la tabla (Por eso no basta con hacer id = id esto buscara en todos los registros).

Sin embargo si haces:

Código
  1.  
  2. mysql> CREATE INDEX indice ON usuarios(usuario);
  3. Query OK, 3 ROWS affected (0.03 sec)
  4. Records: 3  Duplicates: 0  Warnings: 0
  5.  
  6. mysql> EXPLAIN SELECT colegio AS COLEGIO FROM alumnos,usuarios WHERE usuario = 'coco' AND alumnos.id_alum = ( SELECT id_us FROM usuarios WHERE usuario = 'coco');
  7. +----+-------------+----------+-------+---------------+---------+---------+-------+------+--------------------------+
  8. | id | select_type | TABLE    | TYPE  | possible_keys | KEY     | key_len | REF   | ROWS | Extra                    |
  9. +----+-------------+----------+-------+---------------+---------+---------+-------+------+--------------------------+
  10. |  1 | PRIMARY     | alumnos  | const | PRIMARY       | PRIMARY | 1       | const |    1 |                          |
  11. |  1 | PRIMARY     | usuarios | REF   | indice        | indice  | 21      | const |    1 | USING WHERE; USING INDEX |
  12. |  2 | SUBQUERY    | usuarios | REF   | indice        | indice  | 21      |       |    1 | USING WHERE              |
  13. +----+-------------+----------+-------+---------------+---------+---------+-------+------+--------------------------+
  14. 3 ROWS IN SET (0.00 sec)
  15.  
  16. mysql> EXPLAIN SELECT colegio AS COLEGIO FROM alumnos,usuarios WHERE usuario = 'coco' AND usuarios.id_us = alumnos.id_alum;                      +----+-------------+----------+--------+----------------+---------+---------+-------------------------+------+-------------+
  17. | id | select_type | TABLE    | TYPE   | possible_keys  | KEY     | key_len | REF                     | ROWS | Extra       |
  18. +----+-------------+----------+--------+----------------+---------+---------+-------------------------+------+-------------+
  19. |  1 | SIMPLE      | usuarios | REF    | PRIMARY,indice | indice  | 21      | const                   |    1 | USING WHERE |
  20. |  1 | SIMPLE      | alumnos  | eq_ref | PRIMARY        | PRIMARY | 1       | primaria.usuarios.id_us |    1 |             |
  21. +----+-------------+----------+--------+----------------+---------+---------+-------------------------+------+-------------+
  22. 2 ROWS IN SET (0.00 sec)
  23.  
  24.  
  25.  

En ambos casos de consultas donde hay hasta un subquery, ves como la consulta solo analiza 1 columna en vez de todas para retornarte el resultado???  ;)  ten pendiente que campos pueden ser candidatos a llave o indices en tu tabla para que le saques provecho de optimizacion a una consulta.

689  Seguridad Informática / Hacking / Re: Burlar dansguardian en: 15 Noviembre 2009, 04:28 am
Dansguardian es solo un filtro de contenido  :-*  no un firewall....

Burlar el filtro como tal cualquier no proxy podria servirte (depende como hayan configurado el archivo conf de Dansguardian) pero tienes otro dilema, la red, si hay o no reglas en iptables o si minuciosamente estas detras de un proxy transparente (sin saberlo) que aplica Dansguardian quieras o no.....

Es extremadamente sencillo filtrar a traves de iptables por direccion MAC de tarjetas que maquina puede o no salir a internet no restringuido y que maquina pasara por proxy transparente (Yo configure un servidor asi una vez) si el proceso esta asi... la tienes un pelin mas dificil, pero si solo es el mero filtro Dansguardian podrias intentar colarla. Aunque lo de no conexión por msn por cliente (no web), ares, etc... tiene pinta de algo extra como un firewall con iptables o quien sabe.
690  Programación / Scripting / Re: (Python)Existen ventanas de entrada y salida de datos en python en: 15 Noviembre 2009, 00:43 am
TKinter no seria para programar con el API de Tk en Python? Yo uso el modulo TK pero para Perl, va bastante sencillo y simple de usar la verdad, imagino que para python es similar aunque en python tiene mas tendencia POO que otra cosa.
Páginas: 1 ... 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 [69] 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 ... 96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines