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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 74
201  Programación / Desarrollo Web / [Pregunta]: Optimización de una consulta. en: 3 Julio 2020, 05:14 am
Buenas noches,

básicamente tengo una consulta que llama de una base de datos todos los registros, generalmente uso este tipo de consultas para obtener la cantidad total y no para otra cosa, que tampoco hago un foreach (recorro cada dato) imaginensen 75,000 registros... me explota la computadora y de paso el servidor  :xD

por ejemplo..
Código
  1. $cantidad_total = count(registros::Todos());
  2. echo 'En total hay '.($cantidad_total).' registros!';
  3.  

¿Habrá algún problema si un día hay 500,000 registros u obviamente muchos más?
202  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como puedo hacer esto equivalente con javascript? en: 1 Julio 2020, 13:51 pm
Generalmente no tiene nada de malo utilizar librerías de terceros. Te ahorras tiempo, dolores de cabeza, y casos en los que no has pensado. Por ejemplo, enla funcion PHP que muestras, que pasa si le paso un string como este:

<p>http://google.com</p>

Te va a devolver esto:

Código
  1. <p><a target="_blank" href="http://google.com</p>">http://google.com</p></a>

Lo cual obviamente esta rotisimo... E incluso no tenemos que ir tan lejos, basta con que el texto incluya comillas:

Puedes leer más sobre tortugas en "https://es.wikipedia.org/wiki/Testudines"

Código
  1. Puedes leer más sobre tortugas en "<a target="_blank" href="https://es.wikipedia.org/wiki/Testudines"">https://es.wikipedia.org/wiki/Testudines"</a>

Ahí rompes todo el HTML con una simple camilla doble. Ya que usas ReGeX, te puedes asegurar de capturar solo lo que consideraríamos como una URL valida.

https://regexr.com/3e6m0

Eso sacado de StackOverflow con más de 600 votos.. Y aun así, no es válido porque no aceptaría dominios perfectamente válidos como:

https://hello.amsterdam/
https://barça.cat
http://ñoño.com


Porque limita el TLD a un máximo de 6 caracteres y solo espera a-z sin caracteres UTF-8. Tampoco acepta todo mayúsculas...

Código:
((http|https)\:\/\/)?[\w0-9\-\.]{1,255}\.[\w]{2,63}(\/[\w_\.\/\#]*)?

Este más o menos cumple con su cometido... Aunque si no lleva http/https delate, habría que ponerlo y eso implica comprobar antes de hacer el replace. En PHP seria algo así:

Código
  1. function makeLinks(string $string): string
  2. {
  3.    $regex = '/((http|https)\:\/\/)?[\w0-9\-\.]{1,255}\.[\w]{2,63}(\/[\w_\.\/\#]*)?/iu';
  4.    $links = preg_match_all($regex, $string, $output);
  5.  
  6.    foreach ($output[0] as $link) {
  7.        $url = strtolower($link);
  8.  
  9.        // Comprobar si empieza por http/https
  10.        if (strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) {
  11.            $url = 'http://' . $url;
  12.        }
  13.  
  14.        // Creamos un enlace valido manteniendo el formato original.
  15.        $anchor = sprintf('<a href="%s" target="_blank">%s</a>', $url, $link);
  16.        $string = str_replace($link, $anchor, $string);
  17.    }
  18.  
  19.    return $string;
  20. }


Donde un texto como este:

Puedes leer más sobre tortugas en "https://es.wikipedia.org/wiki/Testudines" y para todo lo demás google.com

Se convierte en esto:

Código
  1. Puedes leer más sobre tortugas en "<a href="https://es.wikipedia.org/wiki/testudines" target="_blank">https://es.wikipedia.org/wiki/Testudines</a>" y para todo lo demás <a href="http://google.com" target="_blank">google.com</a>


Ahora, en javascript hay un problema enorme, hasta ES6 javascript no tenía soporte para unicode en regex. Ende, no podemos utilizar el importantísimo flag /u (unicode) y por lo tanto, no podemos targetear dominios como ñoño.com sin añadir parafernalias como \0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF]) . Hay 3 opciones, o nos saltamos los dominios unicode... no muy recomendable, o solo soportamos navegadores con ES6 (tampoco muy recomendable) o toca transpilar ( https://github.com/mathiasbynens/regexpu )  y con suerte sacar algo funcional…

Yo este paso me lo salto y voy a quitarme unicode de por medio, más que nada para ahorrar tiempo:

Código
  1. function makeLinks(string) {
  2.    var regex = /((http|https)\:\/\/)?[\w0-9\-\.]{1,255}\.[\w]{2,63}(\/[\w_\.\/\#]*)?/ig;
  3.    var output = string.match(regex);
  4.  
  5.    if (!output || output.length < 1) {
  6.        return string;
  7.    }
  8.  
  9.    for (var i = 0, t = output.length; i < t; ++i) {
  10.        var link = output[i];
  11.        var url  = link.toLowerCase();
  12.  
  13.        if (!/^https?:\/\//.test(url)) {
  14.            url = 'http://' + url;
  15.        }
  16.  
  17.        var anchor = '<a href="' + url + '" target="_blank">' + link + '</a>';
  18.        string = string.replace(link, anchor);
  19.    }
  20.  
  21.    return string;
  22. }

Con ES6 quedaría un poco más bonito:

Código
  1. function makeLinks(string) {
  2.    const regex = /((http|https)\:\/\/)?[\w0-9\-\.]{1,255}\.[\w]{2,63}(\/[\w_\.\/\#]*)?/ig;
  3.    const output = string.match(regex);
  4.  
  5.    if (!output || output.length < 1) {
  6.        return string;
  7.    }
  8.  
  9.    output.forEach((link) => {
  10.        let url = link.toLowerCase();
  11.            url = (!/^https?:\/\//.test(url) ? `http://${url}` : url);
  12.  
  13.        string = string.replace(link, `<a href="${url}" target="_blank">${link}</a>`);
  14.    });
  15.  
  16.    return string;
  17. }


Código
  1. console.log(makeLinks('Puedes leer más sobre tortugas en "https://es.wikipedia.org/wiki/Testudines" y para todo lo demás google.com'));


Y todo esto, te lo puedes ahorrar con:

Código
  1. <script src="linkify.min.js"></script>
  2. <script src="linkify-html.min.js"></script>
  3. <script>
  4.    console.log(linkifyHtml('Puedes leer más sobre tortugas en "https://es.wikipedia.org/wiki/Testudines" y para todo lo demás google.com', {
  5.        className: '',
  6.        defaultProtocol: 'http'
  7.    }));
  8. </script>

... pero no quieres usar librerías de terceros xD


Saludos

jaja me encanta como me decis al final "pero no quieres usar librerias de terceros" jaja... no, el tema es que las liberias de terceros (no se si todas) te ofrecen más cosas de las que quizás en mi proyecto necesito... yo se que jquery es una libreria de terceros que ofrece más cosas por ahí que yo vaya a necesitar pero es diferente... veo que es muy engorroso esto de detectar una url plana y pasarla a html y no me va a quedar de otra que usar linkify xD pero no porque no use... uso si no hay más remedio.. GRACIAS! xD
203  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como puedo hacer esto equivalente con javascript? en: 1 Julio 2020, 09:23 am
Muchas gracias! ya había escuchado de linkify pero por lo general no me gusta usar librerías de terceros, no digo que no lo haga pero si puedo evitarlo mucho mejor.
204  Programación / Desarrollo Web / [Pregunta]: ¿Como puedo hacer esto equivalente con javascript? en: 30 Junio 2020, 02:27 am
Tengo una función php que recibe un parámetro que es una cadena cualquiera, lo que va hacer es que toda esa cadena va a detectar urls planas y las va a poner en html... Hasta acá todo va perfecto, el problema está al tratar de pasarla a js... No me llevo muy bien con las expresiones regulares y ese tipo de cosas... estuve viendo otras funciones pero son muy diferentes y terminan teniendo algún error...

Código
  1. function Convert_Content($string)
  2. {
  3.    $result = preg_replace('/((http|https|www)[^\s]+)/', '<a target="_blank" href="$1">$0</a>', $string);
  4.   $result = preg_replace('/href=\"www/', 'href="http://www', $result);
  5.  
  6.   return $result;
  7. }
  8.  
205  Programación / Desarrollo Web / Re: Problema con botones y los input. en: 25 Junio 2020, 06:49 am
Lo que está pasando es que le estas poniendo una clase a un botón "botoncito" hasta ahí vamos bien, pero después hace esto...

Código
  1. .botoncito button {
  2.    // [...]
  3. }
  4.  
  5. // Simplemente hace
  6. .botoncito {
  7.    // [...]
  8. }
  9.  
206  Programación / Desarrollo Web / Re: Recuperar datos de una tabla a un formulario en: 23 Junio 2020, 14:53 pm
Hola!

https://www.youtube.com/watch?v=IHVQX52W-LQ

Recorda que una cosa en jquery es .html y otra es .append

con .html lo que hace es como setear el html de un elemento... reemplazarlo...
pero con append lo que se hace es agregar html a un elemento, no reemplaza agrega al final...

por ejemplo,

en un buscador dinámico te va a convenir usar .html
pero en un sistema donde al hacer scroll muestre más resultados sobre algo, ya te conviene usar append...

Mira el vídeo y me vas a entender un poco mejor capaz  :xD
207  Programación / Desarrollo Web / Re: loguearse a mi pagina usando cuenta de facebook en: 23 Junio 2020, 14:47 pm
Yo iba a hacer eso pero al final me arrepentí, no se mucho sobre el tema porque en su momento no llegué a revisarlo muy a fondo...

https://developers.facebook.com/docs/facebook-login/web/login-button?locale=es_ES

https://developers.facebook.com/products/facebook-login/
208  Programación / Desarrollo Web / Re: [Pregunta]: ¿Una forma eficiente de hacer algo como esto? en: 16 Junio 2020, 00:16 am
Estaba pensando en hacerlo con una consulta SQL,
no se si se podrá, que dicha consulta diga de agregar una notificación a todos los usuarios registros en lugar de usar un for en php, no se si será el mismo gasto la verdad...
209  Programación / Desarrollo Web / Re: [Pregunta]: ¿Una forma eficiente de hacer algo como esto? en: 14 Junio 2020, 10:44 am
Pues lo ideal sería que usara concurrencia y paralelismo. Por ejemplo, podrías dividir la carga entre 4 diferentes procesos (250,000 registros por proceso) aunque ahí también va a depender del scheduler del sistema operativo.

Realmente, 1 millon de usuarios conectados al mismo tiempo a un solo servidor es bastante de por sí... Ni se diga que tienes que cargar 1 millon de registros. Imagina que son 250 bytes de información por registro, 1 millon de registros es cerca de 250MB en RAM.

Estaba pensando algo parecido, pero lo dejé como una utopía... pero ahora que vos también lo comentas veré si no hago algo como eso.

No tengo del todo claro como debería hacerlo igualmente...
210  Programación / Desarrollo Web / Re: Metodo eliminar utilizando AJAX y PHP en: 14 Junio 2020, 10:29 am
Hola!

EDIT: (primero proba esto antes que nada)
Código
  1. // proba eso...
  2. $query = "DELETE FROM avion WHERE Id = ".($Id);
  3.  

No estoy muy afinado con todo ese script, tengo un método más simple que utilizo para estas cosas...

Si lo que estas intentando es eliminar un registro de la base de datos, entonces hasta donde yo puedo ver lo único necesario puede ser el id del registro... (igualmente podes usar la cantidad de datos que vos quieras)

digamos...

Código
  1. if(!empty($resultados) // si hay al menos un registro existente...
  2. {
  3.       foreach($resultados as $res) // recorro el arreglo que me devuelve la consulta
  4.       {
  5.             ?>
  6.            <p>Registro ID: <?php echo($res['id']); ?></p> <button type="button" onclick="Eliminar_Dato(<?php echo($res['id']); ?>)"></button><br>
  7.            <?php
  8.       }
  9. }
  10. else
  11. {
  12.     ?>
  13.     <p>No hay datos encontrados.</p>
  14.     <?php
  15. }
  16.  

Función javascript (ajax):
Código
  1.        function Eliminar_Dato(id_data)
  2. {
  3. $.ajax({
  4. url: 'eliminar_registro.php',
  5. type: 'POST',
  6. dataType: 'html',
  7. data: {id_data},
  8.  
  9. success: function()
  10. {
  11. $(document).ready(function()
  12. {
  13. // acá va lo que quieras, esto es cuando el archivo ajax deja de ejecutarse, es decir cuando la petición recibe una respuesta.
  14.                                        });
  15. }
  16. })
  17.  
  18. .done(function(results)
  19. {
  20. $('body').append(results); // si expulsa código html podes cambiar body por tu elemento y append por html dependiendo lo que necesites... para el ejemplo lo dejo así
  21. })
  22. }
  23. }
  24.  

en el archivo ajax ahora...

Código
  1. <?php
  2. require_once("conexion.php");
  3. $link = conectar();
  4. $Id=$_POST['id_data'];
  5. $query = "DELETE FROM avion WHERE Id = '".$Id."";
  6.  
  7. echo $consulta=mysqli_query($link, $query);
  8. ?>
  9.  

De igual forma antes de probar el ejemplo que te dí, lo que haría sería cambiar...
Código
  1. <?php
  2. require_once("conexion.php");
  3. $link = conectar();
  4. $Id=$_POST['txtID'];
  5. ?>
  6. <script>console.log(<?php echo($Id); ?>);</script>
  7. <?php
  8. $query = "DELETE FROM avion WHERE Id = '".$Id."";
  9.  
  10. echo $consulta=mysqli_query($link, $query);
  11. ?>
  12.  

Abrí la consola del navegador, y mira que te aparece...
Páginas: 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ... 74
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines