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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6]
51  Programación / Bases de Datos / necesito opinión e ideas sobre mi base de datos en: 6 Enero 2010, 02:41 am
Bueno primero tengo mucho sueño, asi que si me dejo algo me lo hacen saber y mañana lo publcio  :silbar:

Estoy diseñando la base de datos para un sitio que queremos hacer con unos amigos.

Esto es lo que tengo diseñado:
url:http://img266.imageshack.us/img266/8137/esquemamysql.jpg
esta todo compactado para que entre en la imagen  :-X

1. Las tablas son myisam y llevan foreing keys (FK) algún problema en ello??

Bueno e separado las diferentes partes por colores, las que no tienen color son funciones generales.

Los mediumint(8) son valores de un id de usuario smf.. no e puesto la tabla porque es un lio  :rolleyes:

Todas las relaciones son 1:N con FK.

Empiezo a explicar:

Amarillo superior:
es un sistema de noticias con comentarios, una tabla de noticias y otra de comentarios.
la tabla secciones es porque habrá varias páginas que usen el sistema de noticias, entonces con esa tabla me ahorro hacer varias tablas iguales.
(el web_ es solo un prefijo para distinguir de smf)

Azul:

es una area de consultas, sigue un sistema casi igual que el de las noticias.
la tabla de secciones se refiere al area de consulta que se hará.
ejemplo: sección: informatica; sección:medio ambiente, etc

Verde pequeño:
Es una bd que solo linka con el responsable de la ong.
Contiene una descripcion y esas cosas xD

verde grande:
es un sistema de peticiones de oración [ok si no creen me da igual, de que trata la web no es el caso  :silbar: :silbar:] y mas abajo otro sistema de noticias.
El sistema de noticias solo varia en los otros que se guardan noticias para todo tipo de users-visitantes y noticias de ambito privado (un grupo concreto de users).

El sistema de oración es lo mas complicado de toda la web creo yo, lo explico mas o menos:

Contamos con un responsable de país (un admin), responsable de Comunida autonoma, provincia, comarca y ciudad.
Bien, a los usuarios se les presentan los datos según los datos que dieron de donde son y cuando envian una petición esta se envia al responsable directo (lease el de ciudad), si el de ciudad cree que es una peticion de caracter comarcal la envia a su superior (el responsable de comarca).
Para eso habia pensado usar el campo de "relevancia" cuanto mas alto mas arriba busca en la bd, pero aun no lo tengo del todo claro....
el resto son categorias de oracion y los votos.

Bueno también se pensó el crear un Top10 de las peticiones para cada zona.

Explico como va esa parte:

El responsable de una ciudad recive X peticiones de las cuales toma 10 como importantes, esas 10 se guardan en un top10 de su ciudad.
Esas mismas 10 se envian al responsable de comarca (las de todas las ciudades de la comarca), el responsable recive todas ellas y selecciona 10 que agrega al top 10 de la comarca, esas 10 se envian a la provincia y así hasta llegar al final.

Esa parte no se como diseñarla, así que si hay ideas son bien recibidas  :xD

Rosa:

Es como una red social, los usuarios se agregan a las categorias que les gustan en la pagina principal se listan las ultimas noticias de todas las redes y en cada red las noticias de esa red.

Amarillo abajo:

es una zona de indignados, ejemplo: estoy indignado "porque el pan es caro"  ;-)

entonces hay ciertas tematicas (indignaciones politicas, de familia, dinero... etc)
y la gente puede comentarlas y votar por ellas.


y eso es todo!
el modlog es un log de las acciones de los mod's
y la papelera no es mas que eso  :o

el id_mod también linka con la tabla de usuarios smf, pero en estos casos le id_mod suele ser quien acepta los comentarios que requieren moderacion

Este es mi segundo diseño de una bd tan grande así que no me maten!!! el primero fue al finalizar el FP I... y espero ancioso el FP II el año que viene para poder darle mas caña al mysql...
si hay grandes catastrofes en el diseño me pegan un poco y lo corrijo  :o

Desde ya mis mas sinceras gracias por el simple hecho de leer esto.
Y si amportan alguna idea será bien recibida y valorada.

Cualquier dato extra que necesiten haganmelo saber!

saludos
nax
52  Programación / PHP / Re: Todo para webmaster y gratis proyecto en: 5 Enero 2010, 01:04 am
no se me ocurre nada util xD sino ya te hubiese comentado algo  :-\
53  Programación / PHP / Publicar correctamente código PHP en blogger en: 5 Enero 2010, 00:37 am
Bueno, hace tiempo que vengo con este problemilla encima, y una de las razones de que tuviese el blog medio dejado era exactamente eso...

Los códigos que encontraba por la red o coloreaban o formataban con stripslashes, pero ninguno hacia ambas cosas..

Hoy mismo di con un código PHP, por supuesto, que permite (por medio de stripslashes) introducir carácteres especiales al código y a la vez lo colorea.

He modificado el código original porque me resulta mas cómodo como lo e dejado. Pero si a alguien le interesa el original se puede encontrar aquí  (En realidad es una modificación del original, pero es en la que yo me e basado)

Esta es la muestra y el código a la vez (ok perdon, la muestra aqui no se ve XD miren la fuente :P)
Código
  1. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" style="margin-bottom:40px">
  2.  
  3. <div id="formulario">
  4.  
  5. <textarea rows="20" cols="80" name="codigo"></textarea> <br />
  6. <input type="submit" name="enviar" value="Formatear" /></div>
  7.  
  8. </form>
  9.  
  10. <?php
  11.  
  12.   if (!empty($_POST['codigo'])) {
  13.  
  14.      $codigo = $_POST['codigo'];
  15.      $codigo = str_replace("t", "   ", $codigo);
  16.      $codigo = highlight_string(stripslashes($codigo), true);
  17.  
  18.      $codigo = str_replace("#ECE6B4", "#ECE6B4", $codigo);
  19.      $codigo = str_replace("#3769f6", "#3769f6", $codigo);
  20.  
  21.      echo '<div id="formatado" style="border: double #dfdfdf;"> <h3>El code formatado </hr>';
  22.      echo '<p>' . $codigo . '</p><hr />';
  23.  
  24.      $file = fopen("tmp.txt", "w");
  25.      fwrite($file, $codigo);
  26.      fclose($file);
  27.  
  28.      $lineas = file('tmp.txt');
  29.      unlink('tmp.txt');
  30.  
  31.      for ($i = 0; $i < count($lineas); $i++)
  32.         $resultado = $resultado.htmlentities($lineas[$i]);
  33.  
  34.      echo '<h3> Inserta ste codigo en tu site: </h3>' .$resultado.'</div>';
  35.   }
  36.  
  37. ?>


Trabaja con el mismo estilo que el original pero con 2 cambios:
1- El original pone numeros, cosa que al copiar codes hay que ir borrandolos...
2- El original me dió problemas de formato al copiar el code a dreamweaver, por lo que e tenido que hacerlo a mano xD

Así que espero que lo disfruten y lo usen mucho, yo de seguro que lo usaré

Fuente: ~ Syntax Error ~
54  Programación / PHP / Re: problema con imagecolorat en: 4 Enero 2010, 21:42 pm
no los separé al principio porque no tomaba bien los colores...

ahora... el tema de la linea azul me puede llegar a obligar a tener que replantear el código  :-X

el captcha no cambia, el único cambio es que aveces hay 6 letras y aveces 5...

El problema lo solucioné tomando el valor de $rgb, ya que era 1 o 0, y con eso salí del apaño

gracias :D

mi problema ahora es un tanto mas complicado, ya que si creo con un code el captcha y lo guardo, luego cargo la imagen en el mismo script (o uso la variable que creo el captcha) me limpia mal el fondo (directamente lo borra todo -.-)

sin embargo si lo pego en el paint lo guardo y lo cargo via script lo hace bien  :rolleyes: :rolleyes: :rolleyes:
55  Programación / PHP / Re: Curiosidades del rendimiento de PHP en: 4 Enero 2010, 18:18 pm
como dice tifa ese es el procedimiento.

y el artículo en sí sirve para tomar "buenas prácticas" y por ejemplo pasar las querys por un foreach y no un while, personalmente no me gusta pasarle el while.

La idea es que cuando acabas un programa le haces el Benchmark y miras cuanto tarda y si crees que es normal...

entonces te dedicas a hacerlo mas ligero cambiando aquellas funciones que, usando otras, produce un mismo resultado en menor tiempo  ;-)


saludos
56  Programación / PHP / problema con imagecolorat en: 3 Enero 2010, 22:41 pm
Buenas, resulta que estoy trabajando en un script de reconocimiento de captchas y me sucede un problema un tanto singular

Este es el captcha ejemplo:



y esta una letra aislada por el script, con la previa funciona Limpiar() aplicada


remarco lo de la función Limpiar() aplicada porque como veis, lo que hace es eliminar el fondo y trabajar con 2 colores, blanco y negro.
de esa función resalto esto:

Código
  1. //Recorremos cada pixel
  2. for ($x = 0; $x < $w; $x++) {
  3. for ($y = 0; $y < $h; $y++) {
  4.  
  5. //asignamos los valores numéricos a los canales RGB
  6. $rgb = imagecolorat($imagen, $x, $y);
  7. $r = ($rgb >> 16) & 255;
  8. $g = ($rgb >> 8) & 255;
  9. $b = $rgb & 255;
  10.  
  11. if ($r > 220 && $g < 200 && $b < 200) {
  12. $f = imagecolorresolve($newimg, 0, 0, 0);
  13. imagesetpixel($newimg, $x, $y, $f); //Pintamos negro si es una letra roja
  14. } else {
  15. $f = imagecolorresolve($newimg, 255, 255, 255);
  16. imagesetpixel($newimg, $x, $y, $f); //Sino pintamos blanco
  17. }
  18. }
  19. } //End for


sobre todo el tema $rgb con la función imagecolorat. en este caso funciona perfectamente.

después de aislar la imagen, la idea es crear un registro de cada pixel y el color que contiene (blanco o negro) entonces para ello uso otra funcion createdatamap()

Código
  1. for ($x = 0; $x < $w; $x++) {
  2. for ($y = 0; $y < $h; $y++) {
  3.  
  4. $rgb = imagecolorat($imagen, $x, $y);
  5. $r = ($rgb >> 16) & 255;
  6. $g = ($rgb >> 8) & 255;
  7. $b = $rgb && 255;
  8.  
  9. if ($r < 220)
  10. $color = 1;
  11. else
  12. $color = 0;
  13.  
  14. //creamos el datamap
  15. $datamap .=":".$x.",".$y.",".$color;
  16. }

ahora... el problema está en el $rgb....
a diferencia del caso anterior me reconoce todo como 0 ($color = 0) y nunca como 1. es decir nunca encuentra negro y siempre blanco...
le di muchas vueltas a las imagenes prové de crear el datamap sin separar las imagenes.. enfin un monton de cosas...

al final empezé a dumpear las variables y encntré que el $rgb es 0... es decir no toma valor... porqué? no lo se... en la función anterior el $rgb si toma valor al querer limpiar el fondo, pero en este no..

aunque yo los vea igual..

en los 2 casos $w y $h se sacan de aqui:

Código
  1. $w = imagesx($imagen);
  2. $h = imagesy($imagen);

y $imagen en la primera función es la imagen del captcha y en la 2nda es el carcter limpio

saludos y gracias
nax
57  Programación / PHP / Re: Curiosidades del rendimiento de PHP en: 3 Enero 2010, 18:02 pm
jajaja pues con funciones de php por supuesto xD

si vas a la web del creador dice:

Citar
NOTE: The microtime() method for testing out these tests has only been utilised for simplicities sake. If anything more advanced was used, those whom are just starting out on their PHP journey would have difficulties understanding.

y si le das a "view code" de cualquiera de sus codes publicados puedes ver como la usa:

Código
  1. <?php
  2.  
  3. // Test Source
  4. function Test4_1() {
  5.    global $x;
  6.  
  7.    /* The Test */
  8.    $t = microtime(true);
  9.    $size = count($x);
  10.    $i = 0;
  11.    while($i < 1000) {
  12.        $alias = $aSingleDimArray[$i];
  13.        ++$i;
  14.    }
  15.  
  16.    return (microtime(true) - $t);
  17. }
  18.  
  19. ?>
  20.  
58  Programación / PHP / Curiosidades del rendimiento de PHP en: 3 Enero 2010, 15:17 pm
PHP Benchmark nace como un sitio en el cual su único objetivo es demostrar que no todos los procesos similares de PHP funcionan a la misma velocidad, podeis visitar la página, pero para aquellos que no les gusta el inglés dejo las partes que me parecieron mas curiosas:


comillas dobles (") contra simples (')

+ 105 %   comillas simples (') en una string vacia: $tmp[] = ''';
+ 102 %   comillas dobles (") en una string vacia: $tmp[] = "";
+ 100 %   simples ('). 20 bytes de texto: $tmp[] = 'aaaaaaaaaaaaaaaaaaaa';
+ 103 %   dobles ("). 20 bytes de texto: $tmp[] = "aaaaaaaaaaaaaaaaaaaa";
+ 102 %   simples ('). 20 bytes de teto y 3 $: $tmp[] = 'aa $ aaaa $ aaaa $ a';
+ 106 %   dobles ("). 20 bytes de teto y 3 $: $tmp[] = "aa $ aaaa $ aaaa $ a";
+ 100 %   dobles ("). . 20 bytes de teto y 3 \$: $tmp[] = 'aa \$ aaaa \$ aaaa \$ a';

Conclusión: en este caso podemos llegar a la conclusión de que ambas formas no suponen una gran diferencia de velocidades y que con las comillas dobles, escapar los carácteres como $ (\$) supone un ahorro de tiempo, mínimo eso si.

foreach() vs for() vs while(list() = each())

+ 100 %   foreach($aHash as $val);
+ 657 %   while(list($val)) = each($aHash);
+ 119 %   foreach($aHash as $key => $val);
+ 688 %   while(list($key,$val)) = each($aHash));
+ 238 %   foreach($aHash as $key => $val) $tmp[] = $aHash[$key];
+ 757 %   while(list($key)) = each($aHash)) $tmp[] = $aHash[$key];
+ 300 %   Get Key-/value-array: foreach($aHash as $key[]=>$val[]);
+ 329 %   Get Key-/value-array: array_keys() / array_values()
+ 381 %   $key = array_keys($aHash);  $size = sizeOf($key); for($i=0; $i < $size; $i++) $tmp[] = $aHash[$key[$i]];

Conclusión: La conclusión mas obvia que podemos sacar es que foreach() es mas rapido que while() y
for()


acabo con este que me pareció muy muy curioso:

Test del bucle For

El test se orienta a, si el rendimiento cambia al calcular el tamaño de una variable antes del for o en el momento que declaramos el for.

Ejemplos:
antes del for: "for ($i=0; $i<$tamaño; $i++)"
en el for: "for ($i=0; $i<sizeOf($x); $i++)"

+ 100 %      Antes del for con count()
+ 50058 %   En el for con count()
+ 100 %      Antes del for con sizeof()
+ 50421 %   En el for con sizeof()

Conclusión: este es quizá el ejemplo mas claro a la hora de programar nuestras aplicaciones, hemos de tener muy en cuenta que el tamaño deveriamos calcularlo antes de declarar el for() para así agilizar sustancialmente nuestra aplicación.

Sin mas os animos a visitar la página del autor: http://www.phpbench.com/

Entrada original: My blog: Syntax Error
59  Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿Geshi y SMF incompatibles? en: 3 Enero 2010, 14:35 pm
Es completa y absolutamente legal poner GeSHi en un foro, solo es ilegal decir como lo hiciste! (porque GeSHi solo permite ser integrado con software libre, y SMF no lo es).

De hecho yo estoy violando la licencia de SMF al redistribuir el codigo fuente:
http://code.google.com/p/smf2-review/source/browse/

Pero me vale *.* jajaja, el problema es que la licencia de SMF es de lo peor =/..


como indica el compañero el problema está con el SMF.... algunos estamos deseando que cambie su politica pero de momento...

solo hace falta pasarse por el buscador de SMF y:

http://www.simplemachines.org/community/index.php?topic=278004.msg1825756#msg1825756
http://www.simplemachines.org/community/index.php?topic=313166.msg2078025#msg2078025

algunos foros decidieron no buscar problemas y no se han arriesgado, otros si..

y de momento no hay problemas con el tema..
60  Programación / PHP / Re: Todo para webmaster y gratis proyecto en: 3 Enero 2010, 03:42 am
hola men,


primeramente necesitas un servidor, lo cual, o tienes uno en casa con buena linea o mal vamos....

porque el resto es de pago y para pagar esa deuda tienes que recurrir a cosas como publicidad, etc

luego de scripts... hmm no sabria decirte ninguno de memoria, dejamelo pensar y en un par de dias te cuento algo

saludos
nax
Páginas: 1 2 3 4 5 [6]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines