Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MinusFour

#551
Desarrollo Web / Re: Implementación de let en ES5?
17 Diciembre 2019, 01:04 AM
Cita de: @?0!,5^34 en 17 Diciembre 2019, 00:25 AM
A esta pattern se le llama proxied? .call es el método interno [[call]] y al utilizar this se referencia a la función anónima no? Cleaver!
La vi anteriormente para sobrescribir window.alert, andaba buscando como sobrescribirla para substituirla por un componente.

Qué forma más curiosa la de babel. Parece que optimiza la cantidad de código en vez de la performnce no?

Muchas gracias!

Es una IIFE, solo que use call para invocarla.  Realmente, en ese código no es necesario usar call. Lo pongo ahí nada más porque puede ser necesario dependiendo del caso.

Por ejemplo:

Código (javascript) [Seleccionar]

let obj = { sum : 0 };
obj.fn = function(){
    for(let i = 0; i < 5; i++){
        this.sum += i;
    }
    console.log(obj.sum); //10
}

obj.fn();


Y si haces lo que yo hice sin el call:

Código (javascript) [Seleccionar]

let obj = { sum : 0 };
obj.fn = function(){
    (function(){
        for(var i = 0; i < 5; i++){
            this.sum += i;
        }
    })();
    console.log(obj.sum); //0
}

obj.fn();


Y con el call te daría 10. Las IIFEs no heredan el contexto de this y tampoco puedes usar una función flecha porque no existían en ES5. Hay otros casos que también tienes que recordar para que este como lo dice el estándar.

Babel se salta algunas cosas en el estandar ya sea por razones de rendimiento o porque simplemente no lo pueden hacer sin tener un runtime de JS en JS. Por lo general trata de apegarse lo más que pueda al estándar.
#552
Desarrollo Web / Re: Implementación de let en ES5?
16 Diciembre 2019, 22:01 PM
Lo hace para ahorrarse una función. En ES5 la única forma de crear nuevos contextos es a través de funciones. Lo que está haciendo babel ahí únicamente es evitar una colisión entre variables, no tiene nada que ver con que sea privada o no.

Código (javascript) [Seleccionar]

(function(){
  for(var x = 0; x < 10; ++x){
      alert(x);
  }
}).call(this);

var x = 12;
alert(x);


Edit: Y es importante mencionar que babel trabaja otros scenarios dependiendo del código. Por ejemplo, cada ciclo tiene su propia instancia de "x", así que lo mete dentro de una función si tiene funciones anidadas.
#553
Son expresiones de funciones flecha. La primera función espera una función de argumento que se ejecute cuando la petición termina (y esta solo en el caso cuando la petición fue exitosa). La segunda función que está anidada dentro de la primera función realiza la petición y crea el ciclo (independientemente del resultado), de modo que cuando termine esa petición vuelve a llamar a la segunda función que lanza nuevamente una petición y hace lo mismo.

Subscribe -> pollUserEvents -> callback -> pollUserEvents -> callback -> pollUserEvents
#554
Hardware / Re: BIOS versus UEFI
14 Diciembre 2019, 14:31 PM
Cita de: huerto123 en 14 Diciembre 2019, 08:34 AM
- Es mejor UEFI a pesar de no tneer activo "Secure boot"?
- Primero paso: la partición de MBR a GPT o pongo que use UEFI?

1) Depende de tu implementación de UEFI. Hay algunas que realmente no son muy buenas y solo complican su uso. Los equipos recientes por lo general tienen mejores implementaciones. Donde yo veo que la gente tiene más problema con UEFI es arrancando nuevos sistemas y manejando el orden de booteo.

2) Si puedes hacer eso es preferible (UEFI tecnicamente puede funcionar con MBR). Para que entre a UEFI necesitas establecer que no se use BIOS Legacy sino UEFI. Si tienes un sistema operativo instalado vas a tener que reinstalar habiendo iniciado con UEFI.
#555
Cita de: AlbertoBSD en 14 Diciembre 2019, 01:06 AM
En cambio openssl_random_pseudo_bytes

Si se puede espeficiar el flag de crypto_strong

If passed into the function, this will hold a boolean value that determines if the algorithm used was "cryptographically strong", e.g., safe for usage with GPG, passwords, etc. TRUE if it did, otherwise FALSE

No lo digo exactamente por eso, en un pasado ya ha tenido bugs esa función:

https://bugs.php.net/bug.php?id=70014

El segundo parámetro no es exactamente un parámetro para forzar el uso de una fuente criptográfica segura sino para revisar si el resultado fue así. No dudo que no sea una función valida hoy en día, después de que se parcho correctamente... pero si hay sistemas que pueden acabar usando la forma insegura preferiría que se usara la otra función.
#556
Cita de: AlbertoBSD en 13 Diciembre 2019, 23:51 PM
Sobre la cantidad disponible de entropia no tengo ningun problema, la maquina donde estoy haciendo las pruebas tiene hardware RNG y la cantidad de entropia disponible siempre retorna mas de 3000

cat /proc/sys/kernel/random/entropy_avail



Asegurate que la función este usando un fuente cristalográfica fuerte. Para eso es el segundo argumento de la función. Realmente nunca me he tomado la molestia para revisar cuanto entropia tengo en los servidores que me ha tocado manejar pero al generar llaves para GPG (que son menos de 8192 bits) si me ha pedido esperar a que se genere suficiente entropia. Y el limite es realmente 4096 bits según la documentación... Así que no estoy completamente seguro como lo hace /dev/urandom (si es que acaso necesita esos bits exactamente para entropia o si genera en base a una entropia menor).

random_bytes es una mejor opción si se tiene acceso a la función, al menos te quitas la posibilidad de usar una fuente no suficientemente "fuerte".
#557
Una semilla de 8192 bits...



Creo que incluso si la usas con /dev/urandom no tienes suficiente entropia para generar un solo token.

Yo creo que 128-256 bits es más que suficiente. No es necesario pasarlo por ninguna función de cifrado (en especial si útilizas random_bytes u openssl_random_pseudo_bytes). Técnicamente, estás abierto a un ataque de sincronización (que a estás alturas es más teórico que práctico) por usar == para comparar strings que hash_equals.
#558
Cita de: NEBIRE en 12 Diciembre 2019, 19:21 PM
Lo siento pero no es odio...

Sencillamente, parece que hay gente que olvida que esa niña tiene solo 16 años, tiene (como cualquier otro), su pensamiento y posición (que además coincide con la mía)... pero no porta respuestas, ni soluciones. Simplemente no es nadie y las críticas vienen por ahí...

...además teniendo un síndrome de Asperger, puede contribuir a que s eobsesione más con ello, lo cual no favorece su salud.

en España (y creo que en muchas otras partes), simplemente se ve que es una niña utilizada por adultos, y no precisamente con propósitos acordes a lo que defiende.

¿Y por eso es valido hablar de ella en esa forma? Para ser alguien que, como dices tú, no es nadie... me parece raro que amerite este tipo de reacciones. Una niña de 16 años se toma tiempo fuera de la escuela para acusar a políticos de un problema que se venía venir hace 30 años y la gente se vuelve loca.

¿Ah pero si estuviera hablando del desempleo en España?
#559
Porque el scope de PHP es únicamente dentro de la función. Tendrías que poner:

Código (php) [Seleccionar]

<?php
$dato 
'este es el dato';
 
function 
Mirar()
{
        global 
$dato;
echo $dato;
}
 
Mirar();
?>


Hay algunas variables que las puedes acceder de cualquier lado (super globales) pero las demas necesitan ser tratadas cuidadosamente.
#560
Desarrollo Web / Re: [Pregunta]: Websockets
12 Diciembre 2019, 16:17 PM
Cita de: MiguelCanellas en 12 Diciembre 2019, 04:37 AM
Buenas noches,

Ando hace rataso ya intentando hacer mi aplicación web en tiempo real, la verdad estoy tratando de aprender sobre websockets que según lo que pude averiguar es la mejor forma posible pero cada vez que intento ver información me suelen decir que es necesario que sepa usar node js... La verdad ando estancado y no se por donde empezar, ustedes como aprendieron de websockets? Que material me recomdarían ver?

Yo jamás he usado websockets con PHP pero si existen soluciones... El protocolo de websockets no es el mismo que HTTP. Usa HTTP para el handshake y nada más. Node.js es muy conveniente para esto porque puede utilizar la misma instancia para procesar ambos tipos de paquetes. En cambio, los servidores web como Apache o Nginx no actúan como servidores de websockets simplemente crean tuneles a los servidores de websockets.

El servidor puede ser escrito en cualquier lenguaje, inclusive PHP. En mi opinión, PHP no fue diseñado para hacer de este tipo de servidor. Mi impresión es que está más orientado a ser backend para un servidor web que para cualquier otra cosa. En cambio, Node.js desde sus inicios, ha sido pensado para ser una aplicación que funcione como servidor. No se que tanto se ha trabajado PHP en estos últimos años para resolver este problema así que puede ser que me equivoque.