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

#731
$(window).ready y $(document).ready son exactamente igual. De hecho, el .ready de jQuery usa ambos eventos, DOMContentLoaded y load. El .ready de  jquery también sigue disparando los handlers una vez que el documento este cargado, mientras que las APIs nativas solo disparan los handlers registrados antes de que ocurra el evento.
#732
Si te das cuenta setTimeout ya devuelve un valor. Es el identificador del timer. La realidad es que no hay forma de regresar un valor en una función que se ejecuta después. Lo más cercano a esto es: await.

Código (javascript) [Seleccionar]


function miFuncion(){
   //han pasado 3000 msecs desde que la función setTimeout se llamo
   //miFuncion hace algo importante aquí y lo guarda en una variable
   let miValorImportante = 'muyimportante';
   //puedo trabajar con el valor importante de aquí en adelante.
}

setTimeout(miFuncion, 3000);


Para que entiendas mejor, el runtime de JS lo va a procesar así:

1. El runtime ve la declaración de la función, evalua, hace el hoisting, etc, etc.
2. Se ejecuta la función setTimeout y le dice al runtime: "En 3 segundos corre la función miFuncion".
3. Pasan 3 segundos y el runtime corre la función miFuncion
4. La función genera el valor que es importante para seguir el script.

Es imposible que setTimeout regrese un valor que se calcula después.

Si tu quieres trabajar con ese valor, la única forma es trabajarlo desde ese punto, tal y como lo comente en el script. Por ejemplo, puedes crear otra función fuera y llamarla desde la función agendada por setTimeout:

Código (javascript) [Seleccionar]


function procesaValorImportante(importante){
    //sigo procesando el valor muy importante
}

function miFuncion(){
   //han pasado 3000 msecs desde que la función setTimeout se llamo
   //miFuncion hace algo importante aquí y lo guarda en una variable
   let miValorImportante = 'muyimportante';
   //puedo trabajar con el valor importante de aquí en adelante.
   procesaValorImportante(miValorImportante);
}

setTimeout(miFuncion, 3000);


Y así sigues el flujo de tu script, dentro de la función. Se vuelve un poco complicado manejar el flujo de está manera porque lo tienes que continuar desde la función.

Para eso se inventaron las promesas. Una promesa es simplemente un objeto que maneja un valor eventual. No todas las APIs asincronas manejan promesas, para eso puedes usar el constructor de las promesas:

Código (javascript) [Seleccionar]

let timeoutP = function(ms){
    return new Promise(function(f, r){ setTimeout(f, ms);  });
};


Y para usarlo es muy sencillo:

Código (javascript) [Seleccionar]

let miValorImportante = timeoutP(3000).then(function(){ /* han pasado 3000 msecs desde entonces */ return 'muyimportante' });
importanteP.then(function(importante){ importante == 'muyImportante' });


Y finalmente, como ya trabajamos con promesas podemos usar async/await (nada más considera que quizás no todos los navegadores soportan este syntax).

Código (javascript) [Seleccionar]

async function miFuncion(){
    await timeoutP(3000);
    //3000 msecs han pasado
    let miValorImportante = 'muyimportante';
};

miFuncion();
#733
Cita de: EntidadX en 13 Septiembre 2019, 20:55 PM
Ya he hecho lo último que me dijiste, ¿alguna cosa más?, bueno...está claro que si,  ;D.

Si hiciste todo esto debería funcionar. ¿No ves la tarjeta gráfica en el juego?

Código (bash) [Seleccionar]

xrandr --listproviders


Debería mostrar nvidia.
#734
Si, es el mismo procedimiento. Guardas el archivo en tu home y le pones cualquier nombre y luego haces:

Código (bash) [Seleccionar]

sudo cp ~/nombredelarchivo /usr/share/gdm/greeter/autostart/optimus.desktop
sudo cp ~/nombredelarchivo /etc/xdg/autostart/optimus.desktop


Y listo.
#735
Foro Libre / Re: Tinypic ha cerrado
13 Septiembre 2019, 19:41 PM
Cita de: doctorman en 13 Septiembre 2019, 19:21 PM
luto activo, aunque antes de tinypic existio y todavia existe imageshack

Ni como olvidarse de imageshack. Todo el foro de Diseño Gráfico probablemente este muerto porque se cargaron casi todos los tutoriales porque iban hosteados en imageshack. Deben haberse borrado miles de diseños tan solo de este foro.
#736
No estoy muy seguro, quizás con DD-WRT. Lo importante es separar tus equipos host en su propia subred y vlan y crear reglas de acceso para que no vayan de una subred a otra.
#737
Lo puedes hacer desde la consola, pero lo mejor sería que te bajaras un editor de texto. Si usas ubuntu probablemente tengas acceso a gedit, buscalo en el menu de ubuntu y si no desde la terminal de ubuntu puedes correr:

Código (bash) [Seleccionar]

gedit


Y debe lanzarte el editor de texto. De ahí puedes simplemente escribir el archivo y guardarlo en tu home por ejemplo, ponle de nombre xorg.conf.bkup (no hay ninguna restricción en cuanto a la extensión, puedes guardar el archivo así desde gedit).

Lo segundo que vas a hacer es copiar el archivo de tu home a ese directorio:

sudo cp ~/xorg.conf.bkup /etc/X11/xorg.conf


Y listo.

Nuevamente, no te preocupes por las extensiones, todos estos son archivos de texto que los pueden crear y leer cualquier editor de texto.

Hay otras formas de escribir el archivo pero esta es una forma muy sencilla de hacerlo, sin necesidad de correr ningún programa en root mas que cp (copy).
#738
Quizás si es necesario tocar la configuración de Xorg. Todo esto esta en la wiki de arch por cierto.

Primero revisa si tienes un archivo xorg en:


/etc/X11/xorg.conf


Si no tienes ese archivo o está vacio puedes agregar lo siguiente. Si tienes un archivo xorg, no lo toques. Ponlo aquí en el foro para evitar problemas después de que no puedas arrancar el servidor gráfico.

Código (x11) [Seleccionar]

Section "Module"
   Load "modesetting"
EndSection

Section "Device"
   Identifier "nvidia"
   Driver "nvidia"
   BusID "PCI:1:0:0"
   Option "AllowEmptyInitialConfiguration"
EndSection


De ahí vas a necesitar xrandr:

Código (bash) [Seleccionar]

sudo apt-get install x11-xserver-utils


Si estás usando Ubuntu, probablemente estes usando Gnome y GDM, lo que significa que tienes que agregar este archivo:

Código (desktop) [Seleccionar]

[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer


Y copiarlo en dos diferentes lugares:


/usr/share/gdm/greeter/autostart/optimus.desktop
/etc/xdg/autostart/optimus.desktop


Es muy importante que todo este escrito EXACTAMENTE como está.

Lo único que no estoy seguro es si ya está activado el DRM KMS... Porque no tengo ni idea que tanto haga apt con el paquete de prime. Si tienes problemas de tearing probablemente no este activado.

Edit: Tienes que reiniciar para que los cambios tomen efecto.
#739
Copiaste mal el primer comando. No se si prime-select funcione con nouveau, lo dudo mucho. Yo creo que ya tienes el driver privativo de Nvidia instalado. Prime-select dice que ya estas usando nvidia así que no hay ningún problema, no necesitas correr el primer comando.

No sale nvidia por el grep, porque está buscando por VGA en "VGA Controller", si buscas por 3D debe salir la tarjeta:

Código (bash) [Seleccionar]

lspci | grep 3D


Puedes checar la lista entera sino:

Código (bash) [Seleccionar]

lspci


Debe salir ahi la tarjeta nvidia.

Revisa si todavía esta usando el driver nouveau:

Código (bash) [Seleccionar]

lspci -k | grep nouveau
#740
Entonces si te la reconoce el kernel y esta cargando el driver nouveau. Te puedes bajar el driver privativo de nvidia:

Código (bash) [Seleccionar]

sudo apt-get update && sudo apt-get install nvidia-dkms-390


Reinicia tu PC después de esto.

Puedes revisar que tarjeta estás usando con:

Código (bash) [Seleccionar]

prime-select query


Y te dice exactamente si usas nvidia o intel.

Si usas:

Código (bash) [Seleccionar]

sudo prime-select nvidia


Te activa nvidia y si usas:

Código (bash) [Seleccionar]

sudo prime-select intel


Usa nada más el intel. Necesitas hacer un reboot (o creo que solo logouts) cada que haces un cambio de tarjeta.

Si no funciona prime-select, ¿Quizás necesites el paquete nvidia-prime?

Lo importante es que el kernel empiece con el DRM KMS (lo carga al bootear).