domingo, 31 de diciembre de 2017

Mejores canciones para bailar Reggaeton

Todos a bailar reggaeton con las mejores canciones

¿Estás en una fiesta y todos están aguados hablando en grupitos?

He observado que con estas canciones de reggaeton fresa la gente comienza a mover el cuerpo.

* De la ghetto (feat. Farruko & Zion) - Mírala - 3:48
* J Balvin - Sigo extrañándote - 3:14
* Pitbull & J Balvin ft Camila Cabello - Hey Ma - 2:57
* Justin Quiles Ft J Balvin - Orgullo - 3:34
* J Balvin - Solitario - 3:12
* J alvarez feat daddy yankee - junto al amanecer - 4:34
* Kevin Roldan - Si Tu No Te Enamoras - 4:02
* Andy Rivera Ft Baby Rasta & Gringo - Si me necesitas - 2:48
* J Balvin - Ginza - 3:02
* Maluma - Borró cassette - 3:39
* J Balvin BONITA feat. Jowell & Randy - Bonita - 6:05
* El Indio Ft. Maluma - Tus besos - 3:37
* Maluma Ft.Thalia - Desde Esa Noche - 3:46
* Charly Black - Gyal You A Party Animal - 3:31
*

Mi Libro: 💃🏻"Liga mientras bailas"🕺🏻 ya a está a la venta!


Mejores canciones para bailar BACHATA
Mejores canciones para bailar KIZOMBA
Mejores canciones para bailar CUMBIA
Mejores canciones para bailar SALSA
Mejores canciones para bailar ZOUK
Mejores canciones RUSAS para bailar o escuchar

jueves, 28 de diciembre de 2017

phpmyadmin error ·1071 declaración de clave demasiado larga [SOLUCIONADO con truco]

Me encontraba en la situación de querer agregar un índice único (UNIQUE) a una columna de una tabla cuando me salió ese molesto error 1071 de mysql alegando una declaración de clave demasiado larga en PhpMyAdmin.

MySQL error #1071 Declaración de clave demasiado larga en PhpMyAdmin
Para solucionarlo, descubrí que hay que hacer una cosa truculenta. 😁 Ni modo. 😇

martes, 26 de diciembre de 2017

homestead-7: Failed to restart php7.2-fpm.service: Unit php7.2-fpm.service not found.

Después de ejecutar el comando
$ vagrant provision
me ha salido el siguiente error:
homestead-7: Failed to restart php7.2-fpm.service: Unit php7.2-fpm.service not found.
El cual se deba probablemente a alguna actualización reciente del box de laravel homestead; es decir, después de haber ejecutado el comando:
$ vagrant box update

El error se solucionó actualizando el laravel homestead:

Cómo actualizar Laravel Homestead en Mac

Cómo actualizar Laravel Homestead en Windows 7

Saludos. 🤘🏽

phpmyadmin cómo restaurar todas las bases de datos desde un archivo de respaldo .sql

Primero hay que colocarse en la página de inicio de PhpMyAdmin (evidentemente ya estando autentificado o logueado).

De ahí hay que hacer clic sobre la pestaña "Importar"

Restaurar bases de datos de mysql con phpmyadmin a partir de archivos de respaldo .sql

phpmyadmin cómo respaldar todas las bases de datos

Para respaldar todas tus bases de datos utilizando PhpMyAdmin debes hacer lo siguiente:

1) Dar clic sobre la pestaña que dice "Bases de datos"
2) En la parte inferior marca la casilla "Seleccionar todo". Luego puedes desmarcar las bases de datos que no creas necesario respaldar.
3) Ahora haz clic sobre la pestaña que dice "Exportar"

Cómo respaldar todas las bases de datos con PhpMyAdmin

domingo, 10 de diciembre de 2017

Wordpress - Fatal error: Maximum execution time of 30 seconds exceeded in class-wp-image-editor-imagick.php

Para corregir este error debes encontrar el archivo php.ini y localizar la siguiente línea de código en donde dice:

max_execution_time = 30

Te aconsejo aumentarla por ejemplo a 60

max_execution_time = 60

Ahora, reinicia el servidor, de Apache en este caso, para que los cambios hagan efecto.

Es todo.

Referencias: https://codex.wordpress.org/Common_WordPress_Errors#Maximum_execution_time_exceeded

lunes, 4 de diciembre de 2017

Windows 7 abre los archivos del explorador con un solo clic

Resulta que en el explorador de archivos, para seleccionar un archivo bastaba con sólo un clic. Para abrirlo tienes que hacer doble clic. Ahora resulta que los archivos se abren con el primer clic.

Esto suele ser molesto. Si quieres que se abran los archivos con doble clic en  vez de con un clic. Lo que hay que hacer es lo siguiente:

Abrir el panel de control. Luego selecciona "Opciones de carpeta" y en la pestaña de general, ver que la opción de "Doble clic para abrirlo (un clic para seleccionarlo)" esté seleccionada.

Windows 7. Seleccionar archivos con doble clic


Saludos.


jueves, 30 de noviembre de 2017

Windows 7 cuadro de búsqueda no muestra resultados

Si el cuadro de "buscar programas y archivos" no muestra ya ningún resultado aunque sabes que sí existe. Aquí te muestro cómo solucionarlo.

1) Abre el panel de control
2) Selecciona la opción que dice "Opciones de indización"

Opciones de indización para cuando la búsqueda de windows 7 no funcione


3) Se abrirá una nueva ventanita y dale clic en el botón que dice "modificar"
Opciones de indización para cuando la búsqueda de windows 7 no funcione

Prueba ahorita a buscar de nuevo lo que sea, porque parece que ya funciona ...

Iba a seguir con los siguientes pasos pero hasta aquí llegué.


4) Había hecho yo clic en "Disco local (C:)" pero empecé a buscar un programa para poner la siguiente ilustración y me di cuenta de que ya estaba funcionando :-D No sé si fue por darle simplemente al botón "Modificar" en el paso 3. Le puse cancelar y ya.

Opciones de indización para cuando la búsqueda de windows 7 no funcione

Saludos.

Referencias: 
1) https://superuser.com/a/558186

jueves, 23 de noviembre de 2017

Mac OS archivos comprimidos .zip se convierten en .cpgz

Lo más seguro es que el archivo que tienes o que acabas de bajar esté corrupto, incompleto o vacío.

Al menos eso me pasó a mí.

Favor de verificar.

miércoles, 8 de noviembre de 2017

MySQL Error: SELECT command denied to user ''@'' for table ''

Este error ocurre debido a que el usuario, el cual se está intentando conectar a una base de datos específica, no cuenta con los privilegios para hacer una consulta (SELECT).

Aquí ofrezco una solución trabajando directamente en la base de datos pero, para ello, deberás tener acceso como usuario root.

Vamos a por ello:

Conéctate a tu base de datos desde la consola:

$ mysql -u root -p

Si tuvieras problemas, entonces conéctate de la siguiente manera:

$ mysql -h 127.0.0.1 -P 3306 -u root -p


Teclea la contraseña y enter.

lunes, 25 de septiembre de 2017

Failed to set time zone: Invalid time zone

Esto se debe a que probablemente has tecleado mal la zona horaria.

Para consultar el listado de las zonas horarias disponibles, haz clic en el siguiente enlace:

http://php.net/manual/es/timezones.america.php

Saludos.

martes, 5 de septiembre de 2017

Type error: Too few arguments to function Illuminate\View\Factory::composer(), 1 passed in /home/vagrant/Code/ads/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 221 and exactly 2 expected

Lo que indica este error es que estás pasando solamente un argumento a la función.

Revisa bien si te ha faltado colocar una coma entre las variables, o cerrar el arreglo del primer argumento (te faltó quizás cerrar el arreglo con un corchete ] )

Saludos ✌🏽

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

    martes, 25 de julio de 2017

    Laravel htmlspecialchars() expects parameter 1 to be string, object given

    Este problema, en mi caso, surgió de un query o consulta Eloquent a la cual le faltaba un ->get() al final. Por ejemplo, yo tenía en un método lo siguiente:
    public static function commissionThisMonth()
        {
            $now = Carbon::now();
    
            return static::whereBetween('created_at',[
                $now->startOfMonth(),
                $now->copy()->endOfMonth(),
            ]);
        }
    
    Pero ahora que le agregué el get() más otro método que necesitaba para sumar los totales:
    public static function commissionThisMonth()
        {
            $now = Carbon::now();
    
            return static::whereBetween('created_at',[
                $now->startOfMonth(),
                $now->copy()->endOfMonth(),
            ])->get()->sum('sale_commission');
        }
    
    Ahora ya quedó 😌.

    lunes, 17 de julio de 2017

    Laravel checkbox SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'on' for column

    Si en tu formulario tienes un checkbox y al darle al botón de submit de tu formulario te sale ese error 1366, te aconsejo hagas lo siguiente, por ejemplo, en tu controlador:

    Dado que el checkbox, en vez de TRUE, FALSE devuelve 'on' y '' (cadena vacía), hay que darle otro tratamiento:
    /*Para evitar tener que preguntar si el valor es 'on' o vacío para el caso del checkbox*/
    $checkboxValue = $request->get('checkboxValor') == 'on' ? true : false;
    
    Saludos ✌🏽

    lunes, 10 de julio de 2017

    Cómo poner emoji en tu terminal en la MAC

    Para poner emoji en tu terminal como se muestra en la imagen, sigue los siguientes pasos:

    Emoji en la terminal de la Mac


    Abre una terminal y ve al directorio raíz:

    $ HOME

    Ahora debes editar un archivo como sigue:

    $ sudo nano .bash_profile

    Pon ahora el siguiente texto, si hay más líneas de código ponlo hasta abajo:


    export PS1="  :\w  \u $ "

    Ahora, dentro de las comillas, y antes de los dos puntos diagonal inversa doble u :\w pon el o los emojis que quieras. Coloca tu cursor antes de esa doble u, haz click en el menú de hasta arriba en donde dice Edición y luego hasta abajo donde dice "Emoji y símbolos" y ya se te aparecerá una lista de emojis. Los eliges. Pero toma nota que no se verán, simplemente estarán ahí invisibles. Ahora, para guardar los cambios presiona "control O" luego enter para guardar los cambios y ahora presiona "Control X" para salir.

    Para visualizar los cambios, abre otra pestaña de la terminal. O simplemente cierra todo, si gustas, y vuelve a abrir la terminal.

    Listo! 🙌🏽

    Cómo saber si tengo instalado npm y si es global

    Para saber si tienes instalado el npm en tu máquina e incluso si sólo a nivel local o global, ejecuta primero este comando para ver si tienes instalado el npm de manera global:

    $ npm list -g npm

    Te dirá la versión que tienes de npm instalada globalmente y si además necesitas instalarla.

    Si necesitas actualizar tu npm, simplemente ejecuta el siguiente comando:

    $ sudo npm i -g npm

    Si quieres saber cómo actualizar node.js y el npm, haz clic aquí.

    Referencias: https://stackoverflow.com/a/26104367/1883256
    Saludos 😎

    Laravel blade, mostrar un listado de todos los errores de un formulario

    Para mostrar todos los errores en laravel blade, hacer lo siguiente:
    
    
    @if($errors->has())
       
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif

    o también:
    @if(count($errors)>0)
         Your details could not be changed due to the following errors:
       
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif
    Esto es muy útil para cuando muestras error por error en cada casilla o entrada (input) y de repente Laravel te dice que hay errores pero no sabes cuál es.

    Saludos 🤘🏽

    domingo, 9 de julio de 2017

    Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 8.x

    Este error me salió justo después de haber actualizado Node js en mi máquina virtual de Laravel Homestead en Mac.

    Para solucionarlo, corrí el siguiente comando (dentro del directorio raíz de Laravel Homestead):

    npm rebuild node-sass

    Y después de que se ejecutó el programa, me salí de la máquina virtual:

    $ exit

    Reinicié todo el vagrant:

    $ vagrant reload --provision

    Entré de nuevo y volví a correr dentro de la carpeta raíz de mi proyecto de prueba de Laravel:

    $ npm run watch

    Y ya no me salieron errores.

    sábado, 8 de julio de 2017

    403 Forbidden nginx/1.11.9

    Este error suele suceder porque a tu Laravel, en el archivo Homestead.yaml está mal la ruta a tus archivos, es probable que le falte ponerle lo siguiente:

    Le ha de faltar /public:

          - map: proyecto.app

          to: /home/vagrant/Dir/proyecto/public
    Saludos 🍸

    Laravel homestead npm run events.js:160 Unhandled 'error' event

    Este error me salió al intentar correr el comando $ npm run watch

    De hecho salen un montón de errores ... 😱

    Procedí pues a la carpeta raíz de mi proyecto en Laravel Homestead y ejecuté el siguinete comando:

    $ npm install


    Y esperé varios minutos a que descargara e instalara un montón de cosas. Una vez terminado. Pues sí. Ya jaló. 😌

    Referencias: [al final hasta abajo]: https://github.com/JeffreyWay/laravel-mix/issues/94

    jueves, 6 de julio de 2017

    Cómo declarar una variable en Laravel Blade

    Hay veces en las que necesitas declarar una variable en laravel blade. Hay básicamente dos maneras:
     
    {{ $variable }}
    
    y la otra
    {{--*/ $variable = 'prueba' /*--}}
    {{ $variable }}
    
    Saludos 🍸!

    Generar registros aleatorios en la base de datos con faker en Laravel

    En este caso lo haremos para generar nuevos registros dentro de la tabla `users`. Cabe resaltar que en las últimas versiones de Laravel, Faker ya viene incluido. Obsérvese que estoy utilizando varios campos, dependerá del lector cuáles pone o quita.

    Para fines prácticos, vamos a generar los registros desde nuestro archivo de rutas routes/web.php:
    /* FAKER */
    Route::get('/users/generate',function (){
        $faker = Faker\Factory::create();
    
        for($i=0;$i<102;$i++){
            //echo $faker->name . ', Email Address: ' . $faker->unique()->email . ', Contact No' . $faker->phoneNumber . '
    '; \App\User::create([ 'username' => $faker->userName, 'firstname' => $faker->firstName, 'lastname' => $faker->lastName, 'email' => $faker->email, 'birthdate' => $faker->date('Y-m-d'), 'password' => bcrypt('la_contraseña'), 'location' => $faker->city, 'gender' => $faker->randomElement($array = ['male','female']), 'active' => $faker->numberBetween(0,1), 'country_id'=> $faker->biasedNumberBetween('254','506'), 'created_at'=> $faker->dateTime, ]); } });
    Para ejecutar el código, simplemente tecleamos en la dirección, dependiendo del dominio de nuestra aplicación, digamos, "miaplicacion.app:8000", tecleamos la siguiente dirección:

    http://miaplicacion.app:8000/users/generate

    En este caso generamos 102 nuevos registros.

    Con DB Seeder
    Con esta metodología hay que generar otro archivo via consola y luego correr dicho comando. Generamos el archivo en consola con el siguiente comando:
    $ php artisan make:seeder UsersTableSeeder
    Abrimos el archivo database/seeds/UsersTableSeeder.php y lo editamos instanciando a la clase Faker e indicando cuáles columnas llenar así como el número de registros deseados en el ciclo for:
      $faker->userName,
                    'firstname' =>  $faker->firstName,
                    'lastname'  =>  $faker->lastName,
                    'email'     =>  $faker->email,
                    'birthdate' =>  $faker->date('Y-m-d'),
                    'password'  =>  bcrypt('password'),
                    'location'  =>  $faker->city,
                    'gender'    =>  $faker->randomElement($array = ['male','female']),
                    'active'    =>  $faker->numberBetween(0,1),
                    'country_id'=>  $faker->biasedNumberBetween('254','506'),
                    'created_at'=>  $faker->dateTime,
                ]);
            }
        }
    }
    
    Luego tenemos que dar de alta dicho seeder en /database/seeds/DatabaseSeeder.php
    call(UsersTableSeeder::class);
            $this->call(UsersTableSeeder::class);
        }
    }
    
    Finalmente ejecutamos el archivo en consola:
    $ php artisan db:seed
    Saludos

    miércoles, 5 de julio de 2017

    Microsoft Word Cómo pasar texto a minúsculas o a mayúsculas

    Estás en Word, pegas un pedazo de texto y resulta que está en mayúsculas y lo quieres pasar a minúsculas. Aquí te digo como.

    A manera de ejemplo vamos a pasar un pedazo de texto que está en mayúsculas a minúsculas.

    Localizamos dicho texto:

    Laravel crear un nuevo evento para enviar una notificación al usuario vía correo electrónico

    En este artículo explico cómo hacerle para enviar una notificación vía correo electrónico al usuario cuando ocurre un evento específico.

    Contexto

    Digamos que tenemos un formulario en donde el usuario puede actualizar su perfil, entre ellos su nombre de usuario. Dado que, en este caso, el usuario puede acceder al sistema ya sea tecleando su nombre de usuario o correo electrónico, es necesario notificar, a manera de mensaje informativo vía correo electrónico, al usuario de que, para poder acceder al sistema, deberá teclear el nuevo nombre de usuario.

    martes, 4 de julio de 2017

    Laravel: cómo crear una nueva regla de validación personalizada

    Para crear una o más nuevas reglas de validación en Laravel, es recomendable hacerlo en un (nuevo) Service Provider.

    Vamos pues a la consola dentro de la carpeta raíz de nuestro proyecto (Artisan CLI) y tecleamos lo siguiente:

    $ php artisan make:provider CustomValidationRulesProvider

    Abrimos este nuevo archivo app\Providers\CustomValidationRulesProvider.php .  Dentro de la función boot() ponemos nuestra regla, en este caso la que vimos en el post anterior "Laravel: cómo validar entradas de sólo letras pero con espacios":
    use Illuminate\Support\Facades\Validator;
    
    ...
    public function boot()
        {
            Validator::extend('alpha_spaces', function($attribute, $value)
            {
                return preg_match('/^[\pL\s]+$/u', $value);
            });
        }
    
    Ahora hay que registrar este nuevo provider dentro del archivo config\app.php:
            //Custom validation rules
            \App\Providers\CustomValidationRulesProvider::class,
    
    Luego probamos nuestra nueva regla en cualquiera de nuestros formularios o métodos de store():
    $this->validate($request,[
                /* ... */
                'location'  =>  'max:100|alpha_spaces',
                /* ... */
            ]);
    
    Y por último agregamos el mensaje correspondiente (error) en caso de que esta nueva regla no se cumpla. Para ello hay que agregarla dentro del archivo /resources/lang/en/validation.php Yo lo puse junto a las reglas "alpha":
        'alpha'                => 'The :attribute may only contain letters.',
        'alpha_dash'           => 'The :attribute may only contain letters, numbers, and dashes.',
        'alpha_num'            => 'The :attribute may only contain letters and numbers.',
        'alpha_spaces'         => 'The :attribute may only contain letters and spaces.',
    
    Listo. Referencias: http://blog.elenakolevska.com/laravel-alpha-validator-that-allows-spaces/

    Salud 2 🍸!

    Laravel: Cómo validar entradas de sólo letras pero con espacios

    En la documentación de Laravel tenemos que se puede validar cadenas ya sea con puras letras, con guiones bajos y medios o sólo alfanuméricas.


    1. alpha
    2. alpha_dash
    3. alpha_num


    Pero qué tal si queremos validar, por decir nomás un ejemplo, nombres de ciudades tales cómo "Ciudad de México". Si sólo ponemos "México", con alpha sí pasa la validación, pero si queremos introducir "Ciudad de México", la validación no pasa porque hay espacios.

    Para validar sólo letras y con espacios, podemos meter la siguiente regla personalizada:
    use Illuminate\Support\Facades\Validator;
    
            Validator::extend('alpha_spaces', function($attribute, $value)
            {
                return preg_match('/^[\pL\s]+$/u', $value);
            });
    
    Ahora si no sabes dónde poner esa nueva regla en tu Laravel, sigue leyendo aquí: "Laravel: Cómo crear una nueva regla de validación personalizada"

    Para probar que esta regla realmente funciona, puedes probarla en regex101.com.

    Salud! 🍸

    domingo, 2 de julio de 2017

    Laravel: autentificar usuario tanto por dirección de correo electrónico email o por nombre de usuario

    En términos generales nunca hay que modificar los archivos que estén bajo el namespace de "foundation" 🙈, porque si los modificas, cuando actualices tu Laravel, dichos cambios que hayas hecho, serán borrados 😱 y sustituidos por los nuevos archivos de la actualización en cuestión.

    Es mejor hacer las modificaciones un nivel más arriba 🤓, por ejemplo, dentro del archivo de app/http/Controllers/Admin/AdminController.php
    Agregamos estas dos funciones al final, las cuales se llamarán igualito a las que se encuentran dentro del trait AuthenticatesUsers.php
    Esto hará que Laravel ignore o no tome en cuenta las funciones de autentificación del trait:
    //References: https://laracasts.com/discuss/channels/requests/laravel-5-middleware-login-with-username-or-email?page=2
        protected function validateLogin(Request $request)
        {
            $field = filter_var($request->input('email'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
            $request->merge([$field => $request->input('email')]);
            $this->validate($request, [
                $field => 'required', 'password' => 'required|string',
            ]);
        }
    
        protected function credentials(Request $request)
        {
            $field = filter_var($request->input('email'), FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
            return $request->only($field, 'password');
        }
    
    Ahora lo que hay que hacer, si es tu caso, es cambiar la columna de `users`.`name` a `users`.`username`. En mi caso yo cambié o agregué una columna que se llame `username`.

    Entonces, ahora dentro de la plantilla de login, simplemente cambié en el input donde dice "Email", le puse "Email / Username" y ya.

    Y en la parte superior del menú en donde aparece el nombre del usuario, si hiciste el cambio de nombre de columna a `username`, le puse:
                            
    
    Evidentemente también deberás modificar la lógica del registro, pero igual, no necesitarás hacer cambios sustanciales, dependiendo cómo quieras validar el nombre de usuario, puede ser por un alpha, alpha_dash o alpha_num. y quizás modificar la columna `name` por `username` en register.blade.php

    Quizás también te interese leer "Laravel: Cómo validar entradas de sólo letras pero con espacios"

    Saludos 🍸.

    sábado, 1 de julio de 2017

    Solución al error mysql add unique error 1062 Duplicate entry ''

    El problema es que, en la columna a la cual se pretende agregar el índice Unique, tiene valores vacíos no nulos, es decir, en vez de NULL, tiene espacios ' '.
    La solución es que llenes con información (correspondiente) las columnas con espacios o valores vacíos (no nulos, sin NULL, más bien "   ").

    Saludos

    Instalar phpmyadmin en laravel homestead en MAC

    Hay veces que con las migraciones de laravel no es tan cómodo hacer ediciones avanzadas en la BD. por ejemplo, me he topado con que hay errores en crear índices, pero este error vino por un bug en el paquete Doctrine cuando intenté hacer un rollback en una migración y marcó un error al no poder borrar una columna mysql del tipo enum. De ahí las cosas se vienen complicando en cascada. Total que en estos casos, resulta más fácil hacer los cambios manualmente en tu base de datos.

    Claro está que podría rehacer las migraciones y esta vez ya no incluir columnas del tipo enum pero dado el error que esto provoca a los rollback, prefiero ya no perder tiempo en esto y mejor instalar el phpmyadmin dentro del laravel homestead, hacer las correcciones y seguir con mi proyecto.

    Los pasos que hay que seguir es, evidentemente,


    bajar el phpmyadmin a tu computadora.

    Bajar el phpmyadmin a la Mac para el Laravel Homestead


    Luego de esto, hay que descomprimir la carpeta en donde tienes tus demás proyectos de Laravel (para que los cambios se reflejen en tu servidor de laravel homestead).
    Renombra la carpeta a "phpmyadmin".
    Edita el archivo homestead.yaml que está en $ sudo nano /Users/TuNombre/Homestead/Homestead.yaml y agrega las siguientes dos líneas:
        - map: phpmyadmin.app
          to: /home/vagrant/Code/phpmyadmin
    Ahora edita tu archivos hosts: $ sudo nano /etc/hosts y agrega la siguiente línea: 127.0.0.1 phpmyadmin.app #:8000
    Finalmente para que los cambios se reflejen, teclea $ vagrant provision
    Una vez hecho lo anterior, entra a phpmyadmin desde tu navegador tecleando la dirección: http://phpmyadmin.app:8000/ con las credenciales correspondientes.


    Es todo 😎!

    Quizás también te interese: "Cómo acceder a la base de datos de Laravel Homestead".

    jueves, 29 de junio de 2017

    Laravel [ErrorException] include(/home/vagrant/Code/fresh/vendor/composer/../../database/migrations/_create_users_table.php): failed to open stream: No such file or directory

    Estaba yo intentando crear un archivo de migración para crear una nueva tabla en Laravel cuando, de repente, me salió el siguiente error:

    [ErrorException]                                          include(/home/vagrant/path/to/vendor/composer/../../database/migrations/2017_06_29_205757     _create_users_table.php): failed to open stream: No such file or directory

    La solución es primero ejecutar los dos siguientes comandos:

    $ php artisan cache:clear

    $ composer dump-autoload -o

    Y ahora sí, volver a intentar crear tu archivo de migración para la creación de una nueva tabla en la base de datos con Laravel.

    $ php make:migration create_users_table --table=users

    Saludos a toda la Hinchada.

    Laravel [Doctrine\DBAL\DBALException] Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it.

    Una solución poco ortodoxa es simplemente borrar la columna del tipo enum manualmente en tu base de datos.

    Y de ahí hacer el rollback de tu migración en un sólo paso:

    $ php artisan migrate:rollback --step=1

    Saludos.

    Laravel Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found

    Si después de ejecutar el comando

    $ php artisan migrate

    Te sale el siguiente error:

    [Symfony\Component\Debug\Exception\FatalThrowableError]  

      Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found

    Lo que tienes que hacer es ejecutar primero el siguiente comando:

    $ composer require doctrine/dbal

    Ahora intenta de nuevo el $ php artisan migrate

    jueves, 15 de junio de 2017

    Cómo actualizar registros con Laravel Eloquent update() save()

    Si deseas actualizar una o más columnas de un registro con Laravel, la idea general es básicamente instanciar en una variable el modelo junto con el identificador (ID) del registro correspondiente.

    Una primera manera sería:
    $id = 1; //Obtienes, de alguna manera el identificador correspondiente o lo obtienes del $request ... si viene de un formulario
    
    $user = User::find($id);
    $user->active = 1;
    $user->save();
    
    Otra sería:
    User::find($id)->update(['active' => 1]);
    
    Saludos.

    PHP utilizar la función preg_replace con diagonal "/" - error unknown modifier

    Ciertamente utilizar el caracter de diagonal "/" dentro de la función preg_replace() provoca un error que dice "unknown modifier".

    La solución es que, antes de aplicar la función preg_replace, primero aplica esta otra función que se llama preg_quote():
    $elTexto = preg_quote($elTexto, '/');
    
    //Ahora sí, aplica la función preg_replace como la tenías pensada, por ejemplo ....
    
    preg_replace("/$elTexto/i", ... etc);
    
    Saludos

    sábado, 10 de junio de 2017

    Laravel 5 NotFoundHttpException in Handler.php line 113 [SOLUCIONADO]

    Este error suele salir cuando tienes en tu archivo de rutas routes.php a una ruta sin argumentos al final. Es decir, si tienes una o más rutas simples sin argumentos:
    Route::auth();
    
    Route::get('/home', 'HomeController@index');
    
    Route::get('/index','WosController@index');
    Route::get('/create','WosController@create');
    Route::post('/create','WosController@store');
    
    Y luego le pones una ruta más abajo con argumentos:
    Route::auth();
    
    Route::get('/home', 'HomeController@index');
    
    Route::get('/index','WosController@index');
    Route::get('/create','WosController@create');
    Route::post('/create','WosController@store');
    Route::get('/{workorder}','WosController@show');
    
    Hasta ahí todo bien.

    Pero si después de una ruta con argumentos pones una sin argumentos, es cuando te brinca el error 😱.
    Route::auth();
    
    Route::get('/home', 'HomeController@index');
    
    Route::get('/index','WosController@index');
    Route::get('/create','WosController@create');
    Route::post('/create','WosController@store');
    Route::get('/{workorder}','WosController@show');
    
    Route::get('/foo', function () {
        return view('foo');
    });
    
    Lo que debes hacer es poner las rutas sin argumentos primero y al final poner las rutas con argumentos.
    Route::auth();
    
    Route::get('/home', 'HomeController@index');
    
    Route::get('/index','WosController@index');
    Route::get('/create','WosController@create');
    Route::post('/create','WosController@store');
    
    Route::get('/foo', function () {
        return view('foo');
    });
    
    Route::get('/{workorder}','WosController@show');
    
    Saludos! 🤘🏽

    jueves, 8 de junio de 2017

    Laravel blade cómo hacer un @if con varias condiciones AND OR

    Si quieres evaluar un @if con más de una condición en Laravel Blade, puedes intentar lo siguiente:
    @if ($var1 === '1' || $var2 === '1')
        {{--Tu código aquí ...--}}
    @endif
    
    Saludos

    Laravel blade asignar un valor a una nueva variable

    Si estás en blade y quieres crear una nueva variable y asignarle un valor, haz lo siguiente:
    
    {{ $var }}
    
    saludos.

    miércoles, 7 de junio de 2017

    Obtener el año a partir de una fecha en cadena de texto con PHP

    Para obtener el año de una fecha que está en una cadena de texto, por ejemplo '2016-06-17'; Hay que hacer lo siguiente:
    $la_fecha = '2017-06-20';
    echo 'La fecha es '.$la_fecha.'
    '; $datetime = new DateTime(); $newDate = $datetime->createFromFormat('Y-m-d', $la_fecha); echo 'El año de término es '.$newDate->format('Y').'
    ';
    
    
    Ojo que no estoy utilizando strtotime(); ya que dicha función no sirve después del año 2038
    Es todo.

    domingo, 4 de junio de 2017

    Robarse un iPhone no debería ser cualquier cosa

    Si eres un usuario que posee un iPhone (entendiendo que tú mismo te lo compraste o te lo dieron de regalo y siendo éste de procedencia lícita), puedes ayudar a disminuir a cero el número de robos.

    Las recomendaciones son las siguientes:


    • * Deshabilita SIRI en el modo bloqueado. He visto varios videos en Youtube que muestran cómo desbloquear un iPhone sin contraseña a través de SIRI mediante trucos.
    • * Vincula tu iPhone (así como iPad y MacBook) a una cuenta en iCloud, ya que así no podrán resetearlo (a menos que cuenten con tu contraseña) y se mantendrá bloqueado.
    • * Activa la función de "Buscar mi iPhone"
    • * Configura la opción de "Acceso guiado". Es una buena opción de bloqueo porque desactivo las opciones de apagado y de volumen.


    Qué hacer  si tu iPhone fue robado o si lo has perdido


    Accede a tu cuenta en iCloud y selecciona la Opción de "Buscar mi iPhone". Si sospechas que tu iPhone anda cerca, puedes pedir en esa aplicación que el iPhone emita sonidos, para que lo puedas escuchar. También puedes ponerlo en modo "Perdido" y enviar un mensaje a la persona que lo tiene en su poder.

    Si tu iPhone no emite señal en ese momento, puedes programar una alerta a tu correo electrónico que te avise de cuando tu iPhone ya ha sido encendido así como el envío de su ubicación.


    ...

    viernes, 2 de junio de 2017

    Obtener el número de días entre dos fechas con PHP

    Para encontrar la diferencia en días entre dos fechas con PHP hay que hacer lo siguiente:
    //General time settings:
    
    date_default_timezone_set('America/Mexico_City');
    
    $datetime1 = new DateTime('2017-06-01');
    $datetime2 = new DateTime('2017-06-03');
    $interval = $datetime1->diff($datetime2)->format("%a");
    echo '

    La duración en días del '.$datetime1->format('Y-m-d').' al '.$datetime2->format('Y-m-d').' es de '.$interval.' días.

    ';
    Si se requiere contar con la diferencia de días desde el día cero, simplemente sumamos uno:
    //General time settings:
    date_default_timezone_set('America/Mexico_City');
    
    $datetime1 = new DateTime('2017-06-01');
    $datetime2 = new DateTime('2017-06-03');
    $interval = $datetime1->diff($datetime2)->format("%a")+1;
    
    echo '

    La duración en días del '.$datetime1->format('Y-m-d').' al '.$datetime2->format('Y-m-d').' es de '.$interval.' días.

    ';
    Saludos!

    sábado, 27 de mayo de 2017

    La función ready() de Vue.js no funciona [SOLUCIONADO]

    Antes que nada debes revisar qué versión de Vue.js estás utilizando.

    Si tú versión es mayor a la 2, entonces en ves de utilizar la función ready(), utiliza la función mounted().

    Saludos.

    JQuery $.ajax success is not a function [SOLUCIONADO]

    Antes que nada, verifica la versión de jQuery que estás utilizando. La función de success() ha sido eliminada para la versión de JQuery 3.0.0 Si quieres evitar ese error, entonces utiliza la función done().

    Asimismo, las funciones de error() y complete() han sido sustituidas por fail() y always()

    Referencias:

    https://github.com/jquery/jquery/issues/3239

    Saludos

    viernes, 26 de mayo de 2017

    Cómo ganar Bitcoins aún cuando ya está muy caro

    Comprar Bitcoin (BTC) ahora para después revenderlo no es la única manera para invertir.

    Esta forma de compra y reventa puede volverse más difícil conforme el BTC va subiendo de precio. Por ejemplo, últimamente ha estado rondando entre los $2000 USD y los $2500 USD.

    Hay otra manera que te ofrece rendimientos sin necesidad de comprar los ya caros Bitcoins: La minería. De manera resumida lo explico:

    Para invertir en minería no requieres de tanto capital para invertir.

    En pocas palabras, la minería es el proceso de verificación de las transacciones de Bitcoin que se realizan y anotarlas en el libro de contabilidad o Blockchain

    Te aconsejo que abras una cuenta gratuita (wallet, cartera) para que ahí te vayan depositando tus ganancias en Bitcoin.

    Ahora procede a registrarte o abrir una cuenta en Hashflare.io. Es una compañía que te permite invertir en minería Bitcoin.

    Una vez que has registrado tu cuenta, te aconsejo invertir sobre todo en SHA-256, ya que en Scrypt cuesta más caro y las ganancias son menores. Él primero (SHA-256) ofrece más ganancias por un menor costo de inversión.

    Comienza a invertir ahora haciendo clic en esta liga o imagen:

    HashFlare

    miércoles, 24 de mayo de 2017

    Twig templating: A template that extends another one cannot have a body in [SOLUCIONADO]

    Este error me salió porque estaba asignando una variable
    leftNavigation = 'path/to/navigation/navbar.twig'
    
    sin utilizar la sentencia {% set %}

    por lo que el error desapareció utilizando el SET:
    {% set leftNavigation = 'path/to/navigation/navbar.twig' %}
    
    Es todo!

    domingo, 14 de mayo de 2017

    Cómo colocar tu imagen de perfil en Wordpress

    La idea principal es que tienes que abrir una cuenta en gravatar.com y ahí colocar un listado de tus correos electrónicos con los que quieres asociar tu imagen de perfil. Ahí mismo subes tu foto de perfil y listo.

    De hecho, así como Wordpress, hay varios sitios que se han delegado (outsourced) la tarea de almacenar tu imagen de perfil, la cual se vincula por medio de una o varias direcciones de correo electrónico.

    Asimismo, puede funcionar con aplicaciones web que estés programando.

    sábado, 6 de mayo de 2017

    Cómo usar disco duro externo para Mac Time Machine y Windows

    ¿Tienes un disco duro externo y deseas usarlo para respaldar tanto en Mac OS con Time Machine y en Windows para Copias de Seguridad?

    La solución es que debes particionar el disco.

    Es mejor que particiones el disco en Mac OS con la aplicación que se llama "Utilidad de Discos" (Disk utility)

    MacOS no se puede particionar disco. Opción en gris desactivada

    Estás ya dentro de la "Utilidad de discos", ya has seleccionado tu disco duro externo y ¿resulta que la opción de "Partición" está deshabilitada?

    Nota: Antes que nada, debes saber que si tienes información o archivos dentro de tu disco duro externo, será mejor que primero lo respaldes todo, ya que el siguiente procedimiento que se describe, implica el borrado o formateado de todo el disco. En mi caso se trata de un disco duro externo nuevo por lo que no hay problema.

    Para poder lograr hacer esto, ve a tu terminal y averigua dónde está tu disco externo con el siguiente comando:

    miércoles, 3 de mayo de 2017

    PHP Undefined offset: 0

    Este error normalmente se relaciona con elementos no encontrados en un arreglo.

    Por ejemplo, digamos tienes un arreglo el cual debe recibir valores desde un formulario:

    $array=[];
    

    Pero si, por alguna razón, ese arreglo no recibió ningún valor y luego lo mandas a llamar de la siguiente manera:

    echo $array[0];
    

    Pues te generará ese error Undefined offset: 0.

    La solución no es única y depende mucho de lo que hayas tecleado en el código.
    Investiga, rastrea ese arreglo, ya que en alguna parte del código no está recibiendo ningún valor.

    lunes, 1 de mayo de 2017

    php artisan --version could not open input file

    Si acabas de teclear el siguiente comando para conocer la versión de tu Laravel:

    $ php artisan --version

    Y te sale este mensaje:

    Could not open input file: artisan

    Probablemente se deba a que no estás dentro del directorio raíz de tu aplicación de Laravel.

    domingo, 30 de abril de 2017

    Instalar Laravel Debug Bar

    Cómo instalar Laravel Debug Bar.

    Para instalarlo, dentro de la consola y de tu proyecto de Laravel teclea el siguiente comando:

    $ composer require barryvdh/laravel-debugbar

    Instalando laravel debugbar

    miércoles, 26 de abril de 2017

    Comparar fechas en PHP

    Para comparar fechas en PHP es recomendable hacer uso de la clase DateTime. No es recomendable hacerlo con la función strtotime() ya que ésta funcionará bien hasta el año 2038.

    Aquí les muestro un pedazo de código para que lo prueben. Además agrego una función que valida la fecha, en este caso, con el formato 'aaaa-mm-dd', típico de MySQL:
    /*Función para validar fechas 'Y-m-d' */
    function validateDate($date)
    {
        $d = DateTime::createFromFormat('Y-m-d', $date);
        return $d && $d->format('Y-m-d') === $date;
    }
    
    /*Función para comparar fechas con DateTime*/
    
    function fecha_iniciada($fecha,$hoy = null){
      if($hoy==null){
        // Change the line below to your timezone!
        date_default_timezone_set('America/Mexico_City');
        $hoy = date('Y-m-d', time()); 
        }
      if(validateDate($fecha) && validateDate($hoy)){
           $d2 = new DateTime($fecha);
           $d1 = new DateTime($hoy);
          
          if($d1>=$d2){
                return true;
                }
          else if ($d1<$d2){
                return false;
                }
          
        }//fin de if validateDate
      return false;
    }
    
    date_default_timezone_set('America/Mexico_City');
        $today = date('Y-m-d', time());
    $fecha_inicio = '2017-06-05';
    
    if(fecha_iniciada($fecha_inicio)){
      echo '

    Ya arrancó el proyecto porque su fecha de inicio es: '.$fecha_inicio.' y la fecha de hoy es '.$today.'

    '; }else{ echo '

    No ha arrancado el proyecto porque su fecha de inicio es hasta: '.$fecha_inicio.' y la fecha de hoy es '.$today.'

    '; }
    Saludos!

    martes, 25 de abril de 2017

    composer diagnose missing pubkey

    Este error se refiere a que debes actualizar las llaves de tu composer.

    Como lo indica el mensaje:

    Open https://composer.github.io/pubkeys.html to find the latest keys

    Abre esa página y verás dos cuadros de texto (en textarea)

    domingo, 23 de abril de 2017

    Laravel 5 TokenMismatchException [SOLUCIONADO]

    Este error te sale generalmente justo después de que le diste al botón de Submit de un formulario. Hace falta que pongas el siguiente código en tu formulario. Si quieres ponlo al final de los campos, justo antes de cerrar el formulario < / form >:
    
    
    ¡¡¡Es todo!!! ☺

    viernes, 14 de abril de 2017

    Cómo acceder a los datos del usuario autentificado en Laravel Blade

    En Blade simplemente teclea, por ejemplo para acceder al nombre del usuario, lo siguiente:

    {{ Auth::user()->name }}

    Es todo.

    Laravel Artisan UnexpectedValueException Invalid route action

    Si estabas creando un nuevo controlador para tu aplicación de Laravel en artisan:

    $ php artisan make:controller Auth\\ChangePasswordController

    Y te salió el siguiente error:

    [UnexpectedValueException]
      Invalid route action: [App\Http\Controllers\Auth\ChangePasswordController].

    En mi caso fue porque ya había declarado la ruta en el archivo de rutas web.php

    //Change password
    Route::get('/user/password/change/','Auth\ChangePasswordController')->name('auth.password.change');

    Por lo que mejor lo quité, volví a ejecutar el comando Artisan:

    $ php artisan make:controller Auth\\ChangePasswordController

    Y ya quedó.


    Entonces más vale crear primero el controlador y luego teclear la ruta :P

    Cómo acceder a la base de datos de Laravel Homestead

    En este caso asumiré que utilizas por defecto MySQL.

    Las credenciales de acceso son:

    Host: 127.0.0.1
    Port: 33060
    Database: homestead (u otra que hayas puesto)
    Username: homestead
    Password: secret

    ¡Es todo 🙌🏽!

    Quizás también te interese: "Cómo Instalar PHPMyadmin en Laravel Homestead"

    Cómo instalar Laravel Homestead en Windows 7 - tutorial completo y detallado

    Programas a utilizar:

    Cmder (opcional).
    Si no tienes un programa de consola, te recomiendo que bajes un programita que se llama "cmder" (Commander).

    Ahora sí vienen los dos programas a instalar necesariamente:

    Vagrant. Y da clic en donde dice "windows universal" -> en mi caso 2.0.0
    Virtual Box. Y da clic en donde dice "windows hosts" -> en mi caso es la 5.0.40



    jueves, 13 de abril de 2017

    Dónde está el archivo hosts en Windows 7 para el laravel homestead

    Si ahora necesitas tu archivo de hosts para registrar las direcciones de tus aplicaciones, el archivo de hosts se encuentra básicamente en la siguiente dirección:

    C:\Windows\system32\drivers\etc\hosts

    Cabe resaltar que, para encontrar dicho archivo, debes hacerlo en modo administrador. De otra manera, no podrás dar con él.

    vagrant up found a tab character that violate intendation while scanning a plain scalar at line column (Psych::SyntaxError) [SOLUCIONADO]

    Si acabas de ejecutar el comando

    $ vagrant up

    y te sale el siguiente error:

    C:/HashiCorp/Vagrant/embedded/lib/ruby/2.2.0/psych.rb:370:in `parse': (): found a tab character that violate intendation while scanning a plain scalar at line 18 column 11 (Psych::SyntaxError)

    Significa que en tu archivo Homestead.yaml tiene tabuladores en vez de espacios. Procede pues a poner espacios en vez de tabuladores.

    y ahora vuelve a ejecutar

    $ vagrant up --provision

    domingo, 26 de marzo de 2017

    Imprimir pantalla de manera parcial en Windows

    Normalmente, cuando haces una impresión de pantalla en Windows con el botón "imprimir pantalla" te saca toda la pantalla. Pero si tú quieres sólo una parte, aquí te cuento cómo.

    Hay un programa dentro de Windows que se llama "Recortes"

    Con "Recortes" selecciona el área de la pantalla a imprimir
    Programa "Recortes" en Windows para imprimir pantalla de manera parcial

    Wordpress Fallo en la instalación del tema. La carpeta ya existe.

    Estás actualizando un tema de Wordpress subiendo el .zip y dice que hay fallo en la instalación del tema porque la carpeta ya existe. Esto es lo que tienes que hacer:

    Wordpress Fallo en la actualización del tema porque la carpeta ya existe
    Wordpress Fallo en la instalación del tema La carpeta ya existe


    1) Accede al directorio de dicha carpeta (en el mensaje de error se te especifica la ruta de dicha carpeta).

    jueves, 23 de marzo de 2017

    Cómo cambiar los comentarios de las columnas en MySQL

    Cambiar el comentario de una columna en MySQL implica prácticamente redeclarar la estructura de la misma para que, al final de la sentencia o comando, puedas cambiar el texto del comentario de tal columna.

    Esto puede tener algunas implicaciones como alterar el orden del AUTO_INCREMENT, equivocaciones en la estructura de la columna, etc.

    Normalmente esto lo puedes hacer en Phpmyadmin. Y te das cuenta de esto. Pero lo tienes que hacer columna por columna y además hacer una consulta o query en la que prácticamente tienes que renombrar o reconstruir la columna completa de la tabla:

    ALTER TABLE `MiTabla` CHANGE `columna_tal` `columna_tal` VARCHAR(255)CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '¡Todo esto para cambiar solamente el comentario!';

    Existe otra forma que la puedes hacer con puro lenguaje SQL y esto es especialmente útil cuando quieres modificar el comentario de una columna que puede estar repetido en varias tablas.
    Además te evitas la necesidad de tener que declarar otra vez la estructura de la o de las columnas en cuestión cuyos comentarios deseas cambiar. Este primer método que acabamos de ver hace que prácticamente MySQL reconstruya toda la tabla.

    Un método más eficiente es ir directamente a la tabla que almacena los comentarios de todas las columnas. La tabla se llama `COLUMNS` la cual se encuentra en la base de datos llamada `information_schema`, es decir `information_schema`.`COLUMNS`.

    De entrada no te recomiendo abrir dicha tabla en su totalidad con un SELECT * FROM `information_schema`.`COLUMNS` ya que es una tabla enorme y puede que nunca puedas cargar toda la información. En vez de eso, para localizar la columna, cuyo comentario quieres cambiar, puedes intentar con la siguiente columna o query:

    SELECT * FROM `COLUMNS` WHERE COLUMN_COMMENT LIKE '%El comentario que quiero cambiar%';

    O puedes hacerlo buscando por tabla:

    SELECT * FROM `COLUMNS` WHERE TABLE_NAME LIKE '%MiTabla%' AND TABLE_SCHEMA LIKE '%MiBaseDeDatos%';

    Una vez localizada tu columna, la puedes actualizar de la siguiente manera (por supuesto que hay cientos de formas de hacerlo, esto es tan sólo un ejemplo ilustrativo):

    Primero compruebo que el siguiente query o consulta sólo me muestre un resultado:

    SELECT * FROM `COLUMNS` WHERE TABLE_NAME = 'miTabla' AND TABLE_SCHEMA = 'MiBD' AND COLUMN_NAME = 'miColumna';

    Si sí te sale un sólo resultado, procedemos a actualizar con el nuevo comentario:

    UPDATE `COLUMNS` SET COMMENT = 'Mi nuevo comentario`' WHERE TABLE_NAME = 'miTabla' AND TABLE_SCHEMA = 'MiBD' AND COLUMN_NAME = 'miColumna';

    Si no te saliera un resultado, intenta agregar más filtros o restricciones a tu consulta.


    http://stackoverflow.com/a/2162456/1883256

    http://stackoverflow.com/questions/2162420/alter-mysql-table-to-add-comments-on-columns

     SELECT COLUMN_NAME, COLUMN_COMMENT FROM COLUMNS
        -> WHERE COLUMN_NAME LIKE 'created_at';

    USE information_schema;
    SHOW TABLES;
    DESC COLUMNS;

    miércoles, 15 de marzo de 2017

    Cómo actualizar Laravel Homestead en Mac

    Te puede interesar:


    Cada vez que corres el comando:

    $ vagrant up

    Te sale un mensaje como este:



    Significa que tienes que actualizar tu homestead.

    En este video explico cómo actualizar tu Laravel Homestead en Mac:


    Te pongo aquí en texto los pasos que seguí.

    Atención: Antes de seguir, haz un respaldo de


    Ya que tendremos que borrar todo al instalar la nueva box de laravel.

    Descarga las nuevas versiones de Vagrant y del VirtualBox e instálalas.

    Para conocer las versiones de Vagrant y Virtual Box con las que cuentas, ejecuta el siguiente comando en consola:


    $ vagrant -v
    en este caso tengo la versión Vagrant 2.0.2


    $ vboxmanage --version
    en este caso tengo la versión de virtualBox 5.2.8r121009

    También hay que ejecutar el siguiente comando para bajar la nueva caja

    $ vagrant box update

    Este proceso puede tardar, ya que la caja pesa más de un 1GB.

    Si vas a hacer lo mismo en otra computadora, puedes copiar la Vagrant Box desde este lugar:


    ~/.vagrant.d/boxes/laravel-VAGRANTSLASH-homestead

    Ahí verás carpetas con los nombres de las versiones, copias la carpeta y listo. Ya la puedes pegar en otra computadora en donde trabajes con Laravel Homestead.

    De ahí, ve a tu carpeta Homestead/ y ejecuta el siguiente comando:

    $ git pull origin master

    Éste último comando lo que hará es actualizar en su archivo de configuración, la caja más reciente a utilizar. Lo podrás comprobar con los siguientes comandos:

    Para mostrar el listado de las máquinas virtuales con las que contamos así como el ID de cada una, tecleamos:

    $ vagrant global-status

    También otro comando útil para conocer todas las cajas o boxes que tienes es:

    $ vagrant box list

    Primero, respaldamos el siguiente archivo Homestead.yaml que se encuentra en la carpeta /Users/pathros/Homestead (en tu caso se representa como /Users/TuNombre/Homestead):


    $ cp -r /Users/TuNombre/Homestead/ /Users/TuNombre/Homestead_old


    En mi caso, lo copio (mas no mover) en otra carpeta que yo llame /respaldos. Si sólo lo moviste y no lo copiaste, te saldrá el siguiente error: "Homestead settings file not found in /Users/TuNombre/Homestead"; Si no, lo que hago también es cambiar el nombre de la carpeta de Homestead a Homestead_old

    Ahora, procedemos a destruir el ambiente de vagrant (estando dentro de la carpeta /Homestead)

    $ vagrant destroy


    se nos pedirá que confirmemos si queremos destruir o no 'Homestead-7' VM. Tecleamos que sí: yes (sólo teclea yTe pide confirmar. Si no la encuentra, entonces ponle el ID que le corresponda justo después de haber aplicado el global-status

    $ vagrant destroy [el ID]

    También puedes proceder a eliminar las cajas anteriores con el siguiente comando (aprovechando para ir ya también quitando la basura)

    $ vagrant box remove laravel/homestead --box-version=5.1.0 

    Ahora vamos a respaldar la siguiente carpeta renombrándola
    “Borrar /Homestead” .. Lo voy a renombrar mejor a “/Homestead_old”, por ejemplo:
    nos colocamos dentro de la carpeta /Users/TuNombre/ , es decir

    $ cd ..

    o también puedes intentar con:

    $ cd ~


    Y procedemos a respaldar cambiándoles el nombre

    mv Homestead/ Homestead_old/


    Estando en mi carpeta /Users/TuNombre/, voy a ejecutar el siguiente comando el cual va a crear una nueva carpeta Homestead:

    $ git clone https://github.com/laravel/homestead.git Homestead

    Nos pasamos a la carpeta Homestead

    $ cd Homestead

    Comprobamos la última versión estable en github visitando el siguiente enlace:

    https://github.com/laravel/homestead/releases, en este caso, la versión actual es la 7.3.0 (checa la versión en https://laravel.com/docs/5.6/homestead#first-steps) por lo que ejecuto el siguiente comando:

    $ git checkout v7.3.0

    ejecutamos el siguiente comando para crear el archivo Homestead.yaml

    $ bash init.sh

    Ahora editamos nuestro Homestead.yaml. En este caso hay dos caminos, uno, que el Homestead.yaml anterior lo sustituyas directamente. Te aconsejo primero veas los dos archivos para ver si no tienen diferencias entre uno y otro, sobre todo en la parte de configuraciones principales. Lo que sí tendrás que copiar es el listado de carpetas de tus proyectos y dominios.

    Si ves que no habrá problema en copiar el Homestead.yaml de la carpeta vieja a la nueva, entonces puedes ejecutar el siguiente comando:

    Primero me voy a mi carpeta:

    $ cd $HOME

    visualizo las dos carpetas Homestead y Homestead_old

    $ ls

    Ahora sí, viene el comando:

    $ cp Homestead_old/Homestead.yaml Homestead/

    y ya finalmente me voy a la carpeta Homestead

    $ cd Homestead

    y ejecuto el comando

    $ vagrant up

    $ mv Homestead.yaml Homestead_old.yaml

    Ahora voy a copiar mi Homestead.yaml de mi respaldo a esta carpeta (si quieres antes visualiza ambos archivos y compara si no hay grandes diferencias a tomar en cuenta):

    $ cp /Users/pathros/Desktop/backup/Homestead.yaml /Users/pathros/Homestead/Homestead.yaml

    Generamos las llaves SSH

    $ ssh-keygen -t rsa -C "tu-nombre@homestead"

    Le dices que sí quieres copiar y sobreescribir las llaves. Y deja todo sin contraseña dando enter nadamás.

    Al final, una vez que se ha confirmado que hemos actualizado todo exitosamente, borramos la box anterior (para saber cuáles boxes tenemos, teclea $ vagrant box list):

    $ vagrant box remove laravel/homestead --box-version=2.0.0

    Posiblemente hay que cambiarle el nombre a nuestra máquina virtual por otro. Ahora pasarnos a la carpeta de Homestead, si es que no estamos ahí

    $ cd Homestead/

    y ya arrancamos la máquina de vagrant laravel homestead

    $ vagrant up


    Listo, ahora procede a restaurar tus bases de datos con los respaldos .sql que guardaste antes de empezar con todo este relajo

    Saludos
    🤘🏽
    Sigue leyendo:

    Probablemente después de actualizar, el comando laravel no funcione (laravel: command not found), aquí está cómo solucionarlo

    phpmyadmin cómo respaldar todas las bases de datos

    phpmyadmin cómo restaurar todas las bases de datos desde un archivo de respaldo .sql



     

    Tags