miércoles, 30 de agosto de 2017

Laravel Homestead Windows 7 Timed out while waiting for the machine to boot

Si finalmente has podido instalar tanto el Virtual Box como el Vagrant en tu windows 7 y resulta que después de haber tecleado el comando:

$ vagrant up

pasa mucho tiempo para que al final te salga el siguiente mensaje de error en letras chiquitas:

 homestead-7: SSH address: 127.0.0.1:2222
    homestead-7: SSH username: vagrant
    homestead-7: SSH auth method: private key
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

Lo que pasó, en mi caso, es que faltó habilitar la virtualización de hardware desde el BIOS (Intel Virtualization Technology: enabled). Una vez que hice esto, la máquina de vagrant continuó arrancando sin problemas.

Versiones:
Virtual Box: 5.0.40
Vagrant: 1.9.8
Vagrant Box: 3.0.0

Windows 7 64bits i5 8GB RAM


Referencias: https://laravel.io/forum/05-18-2014-trouble-getting-homestead-to-start-in-windows

Saludos.

jueves, 24 de agosto de 2017

Laravel Homestead Packages can be updated

Si en tu Laravel Homestead te preocupa tal mensaje o realmente deseas llevar a cabo las actualizaciones, dentro de tu máquina virtual (después de haber ejecutado el comando $vagrant ssh), ejecuta el siguiente comando:

$ sudo apt-get dist-upgrade

Y listo.

Sólo habrá un detalle: quizás te aparezca un mensaje relacionado con el archivo /etc/ssl/openssl.cnf
en donde te pregunta si deseas actualizar los paquetes. La verdad me daba ñáñaras 🙈 que se modificara (y, eventualmente, se echara a perder la configuración de la máquina virtual, por lo que no me quise arriesgar y le teclee N, para no hacer nada.

Saludos 😅

martes, 22 de agosto de 2017

Laravel Error MethodNotAllowedHttpException in RouteCollection.php

Este error sale cuando tienes una liga que apunta directamente a un método que está en un controlador en el cual deseas actualizar o registrar información en una base de datos.

Por ejemplo, tienes lo siguiente:

web.php (archivo de rutas)

Route::post('/{listing}/favourites','ListingFavouriteController@store')->name('listings.favourites.store');

TuControladorController.php

public function store(Request $request, Area $area, Listing $listing)
    {
        dd($listing);
    }

TuVista.blade.php

  • Add to favourites
  • Para solucionarlo, la opción "más fácil" es cambiar "post" por "get" en la ruta (que está en web.php) pero no es la mejor solución ya que no se tiene protección CSRF. Entonces la mejor práctica es que, similar a lo que hace Laravel a la hora de cerrar la sesión (logout), hay que poner un formulario con su respectivo CSRF dentro del archivo vista TuVista.blade.php justo debajo del link o enlace:
    Add to favourites
    {{--Por defecto, lo de arriba no funciona con post en la ruta, aquí se requiere del uso de un formulario con su respectivo CSRF--}}
    
    
    Lo que se hizo fue crear un formulario cuya acción ahora contiene la ruta con sus respectivos parámetros, así como el generador del CSRF. Nótese que se ha hecho que el formulario no se muestre en pantalla con su clase "hidden", en este caso si usas Bootstrap. Ahora en la liga, se quitó el link del "href" y con javascript prevenimos el "submit" y mejor mandamos a llamar el formulario con Javascript a través de un "id".

    Saludos! 🍸

    lunes, 21 de agosto de 2017

    PHP cómo encriptar contraseña

    Una función sencilla para encriptar la contraseña en la base de datos con PHP es la siguiente:
    $password = 'contraseña';
    
    function setPassword($password){
     return password_hash($password,PASSWORD_BCRYPT,[10]);
    }
    
    $hashed = setPassword($password);
    
    echo 'La contraseña es '.$password.'.
     Hashed: '.$hashed.'
    
    ';
    
    Y para verificar si la contraseña es la correcta, simplemente se vuelve a aplicar la misma función. Dicho resultado de la encriptación se compara con el valor encontrado en la base de datos.

    En este caso, por ejemplo, si encriptamos la palabra "contraseña", la resultante va a ser "$2y$10$SEZ0yZ2ZVjOdTIrAwGYwlOIi1HhQY2EsEP48R8cg057Rov3xOr0mC".

    Puedes probar dicha función en http://www.writephponline.com/.

    Saludos

    domingo, 20 de agosto de 2017

    Cómo invertir y obtener ganancias con Bitcoin

    La manera más fácil y segura de obtener Bitcoin (BTC) es la minería en la nube.

    La minería en la nube consiste en que tú compres "potencia de minado" a través de un intermediario que lo hace por ti (evitándote todos esos dolores de cabeza y altísimos precios) y comparte contigo las ganancias obtenidas de acuerdo a la inversión que hayas realizado. Obviamente entre más inviertas más ganas.

    miércoles, 2 de agosto de 2017

    Laravel Blade mostrar HTML junto con el texto


    Hay veces en las que quieres mostrar texto o mensajes al usuario en Laravel desde, por ejemplo, un flash message y quieres ponerle etiquetas HTML para mejorar la presentación del texto, pero resulta que ves el texto junto con las mismas etiquetas "escapadas" dentro del mensaje.

    Para solucionarlo, en Blade, en vez de mostrar el mensaje de la siguiente manera:
    {{ $mensaje }}
    
    Hay que mejor permitir la ejecución de las etiquetas HTML como se muestra:
    {!! $mensaje !!}
    
    Saludos!🍸
    Referencias: https://stackoverflow.com/a/29254016/1883256
     

    Tags