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 ... 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [56] 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 ... 768
551  Foros Generales / Foro Libre / Re: Que esta pasando en Mexico con la ley y el software libre? en: 2 Julio 2020, 10:18 am
Citar
En facebook salio una noticia

"Facebook" y "noticia" no son términos compatibles.


Saludos
552  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como puedo hacer esto equivalente con javascript? en: 2 Julio 2020, 09:52 am
Mmm tienes razón xD Supongo se podria arreglar añadiendo una lista de dominios ya reemplazados para evitar que salten dos veces.

La funcion esa esta bastante guay pero habría que añadirle el u flag para soporte unicode y aparte del XSS que mencionas, convierte urls como (http://google.com) lo cual rompe el enlace entero (curiosamente el foro tiene el mismo problema jaja).

Citar
y luego procesar cada texto completo y validar si es un enlace, y si lo es entonces reemplazar, para ello utilizaría un buffer principal donde se vaya acumulando el resultado y eliminando el original, como una pila pero de bytes

Pero tendrías el mismo problema. ¿Y si el enlace va entre paréntesis sin espaciado? ¿Y si en una parte es google.com, en otra parte es http://google.com y en otra es https://google.com/holamundo?

Las librerías que hacen estas cosas ya han pasado por estos problemas xD

Saludos
553  Foros Generales / Foro Libre / Re: Estados Unidos compra todo el 'stock' mundial de remdesivir, el fármaco contra en: 2 Julio 2020, 09:36 am
EEUU tiene 330 millones de habitantes menos 55.000.000 da como resultado 275 millones

55 millones de que? xD

Da igual. Eso no quita que sus ciudadanos hayan pagado el desarrollo y la patente en impuestos y que ahora se les pretenda cobrar el precio entero y más que en otros países donde esa patente será utilizada para crear medicamentos genéricos. A un ciudadano Australiano le costará $8... Y hay 25 millones de Australianos.

Es una ***** la situacion en Venezuela, pero Estados Unidos es el país con mayor PIB del mundo. Y según a quien preguntes, el más desarrollado, el más mejor, y en el que todo es posible. Ahora dile eso a esos 27 millones.

Saludos
554  Foros Generales / Foro Libre / Re: Estados Unidos compra todo el 'stock' mundial de remdesivir, el fármaco contra en: 2 Julio 2020, 00:08 am
me parece bien y es un precio bastante accesible para los habitantes de EEUU,

27 millones de ciudadanos en Estados Unidos no tienen seguro médico lo que implica que pagarán más de $5000 por un tratamiento.. y esos 27 millones tienen su razón para no tenerlo.. en la mayoría de los casos porque no  se lo pueden permitir. 38 millones de habitantes estadounidenses viven en la pobreza y se estima que unos 17 millones en extrema pobreza. Para que te hagas la idea, Venezuela tiene 28 millones de habitantes. ... es decir, Estados Unidos tiene a casi 1 Venezuela y media en la pobreza y a 1 Venezuela sin seguro medico.


Pero oye... Totalmente asequible.

Saludos
555  Programación / Desarrollo Web / Re: Ayuda. getelementbyid() no encuentra el nodo. en: 1 Julio 2020, 20:13 pm
El enlace que pasas, no tiene ningún div con id interContainer. Donde si que existe ese ID es dentro del iframe que apunta a la URL que te pase (vergol.com).



De hecho esta dentro de 2 iframes:



Al estar dentro de un iframe y que el iframe apunte a otro dominio, javascript no puede hacer nada dentro. Puedes leer sobre eso buscado Crossdomain, same-origin o CORS.


Lo que tendrias que hacer es que tu script de greasemonkey, apuntase a ese dominio. Tomando de ejemplo lo que ha pasado el compañero y cambiando la URL quedaria así:


Código:
// ==UserScript==
// @name         ScriptDePrueba
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Script de prueba
// @author       unsigned
// @match        https://vergol.com/canales228/live/la1.php
// @grant        none
// ==/UserScript==
 
function gm_main(){
   // 1. Create the button
   var button = document.createElement("button");
   button.innerHTML = "Do Something";
 
   // 2. Append somewhere
   var body = document.getElementsByTagName("body")[0];
   body.appendChild(button);
 
   // 3. Add event handler
   button.addEventListener ("click", function() {
       alert(document.getElementById("interContainer").innerHTML);
   });
}
 
(function() {
    'use strict';
 
    window.onload = gm_main();
 
})();


Y si abres directamente esa url, verás que si funciona.. Ahora tienes otros 2 problemas.

- La pagina original no muestra todo el contenido del iframe. Muestra solo los primeros 600 pixeles. Por lo tanto no ves el boton.
- Greasemonkey no parece cargarse cuando la página se ejecuta dentro de un iframe.

Buscando, he llegado a esto:

https://github.com/greasemonkey/greasemonkey/issues/2574

Donde se menciona que a partir de X actualización, ha dejado de ejecutar los scripts dentro de iframes. Al parecer hay un workaround que es cambiar el iframe por un embed, pero tendrias que cambiarlo tanto en la página principal como en el primer iframe.  Otros directamente dicen que mejor usar otras cosas como Tampermonkey.


He instalado Tampermonkey y efectivamente si que funciona bien:

Código
  1. // ==UserScript==
  2. // @name         ScriptDePrueba
  3. // @namespace    http://tampermonkey.net/
  4. // @version      0.1
  5. // @description  Script de prueba
  6. // @author       unsigned
  7. // @match        https://vergol.com/*
  8. // @grant        none
  9. // ==/UserScript==
  10.  
  11. function gm_main(){
  12.    var container = document.getElementById('interContainer');
  13.  
  14.    // Si el contendor no existe, no me ejecuto.
  15.    if (container.length < 1) {
  16.        return;
  17.    }
  18.  
  19.    alert(document.getElementById("interContainer").innerHTML);
  20. }
  21.  
  22. (function() {
  23.    'use strict';
  24.    window.onload = gm_main();
  25. })();

Saludos
556  Programación / Desarrollo Web / Re: Ayuda. getelementbyid() no encuentra el nodo. en: 1 Julio 2020, 19:07 pm
Estas targeteando contenido dentro de un iframe. Y el iframe no esta en el mismo dominio que la página esa ende javascript no puede ayudar en esa página en especifico. Tendrias que targetear la propia pagina del iframe:

//vergol.com/canales228/live/la1.php

Saludos
557  Foros Generales / Foro Libre / Re: Estados Unidos compra todo el 'stock' mundial de remdesivir, el fármaco contra en: 1 Julio 2020, 16:56 pm
Es MUY lamentable esa situación... no importa si EE.UU. ha comprado toda la partida hasta septiembre o no... lo super lamentable es que la han comprado a un precio exagerado y seguirán cobrándole entre 2000 y 3000 USD a sus ciudadanos por el tratamiento.  Los ciudadanos de Estados Unidos pagaron con impuestos los subsidios para el desarrollo de ese medicamento y ahora tienen que pagarse los costos de su tratamiento igualmente...

Luego esa misma gente es la que no se fía de la Sanidad Publica porque dicen que es mucho impuesto... el lobby americano desde luego sabe como lavar cerebros...


Citar
Gilead Sciences, the maker of the first covid-19 treatment found to have worked in clinical trials, remdesivir, said Monday it will charge U.S. hospitals $3,120 for the typical patient with private insurance.


Y ojo, porque eso son $3120 para gente con seguro médico en un país donde más de 27 millones de personas carecen de seguro médico y otras decenas de millones tienen seguros muy restrictivos o temporales.

Lamentable.
Saludos
558  Foros Generales / Dudas Generales / Re: Ciber acoso necesito ayuda en: 1 Julio 2020, 13:52 pm
Se juntaron 2....

Saludos
559  Programación / Desarrollo Web / Re: Ayuda. getelementbyid() no encuentra el nodo. en: 1 Julio 2020, 13:10 pm
¿Cuál es el código que tienes para hacer el click?

Quiero pensar que es porque tu código se ejecuta antes de que se cargue esa parte del DOM.

Saludos
560  Programación / Desarrollo Web / Re: [Pregunta]: ¿Como puedo hacer esto equivalente con javascript? en: 1 Julio 2020, 12:05 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
Páginas: 1 ... 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 [56] 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 ... 768
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines