viernes, 24 de mayo de 2019

Ingresar a la BIOS HP 14 | Desactivar UEFI para instalar WINDOWS

Ingresar a la Bios / HP14[Esc]
Tecnología de Virtualización: DESACTIVADO

Opciones de Arranque:
Compatibilidad Heredada: DESACTIVADO(por defecto) (ACTIVAR para hacer instalaciones inferiores a Win8)

Ordenar las opciones de arranque.

 
Share:

miércoles, 20 de junio de 2018

Solucionar el problemas de las tildes y eñes con PHP y Mysql

Guía paso a paso para solucionar el problema de los acentos y eñes al traer los datos de la base de datos

  1. Cotejamiento
    Al crear la base de datos MySQL, asegúrate que los campos string y demás esten en utf8_spanish_ci y el cotejamiento de las tablas en utf_unicode_ci (más tarde en Operations > Collation de phpMyAdmin se puede cambiar)
  2. Content type HTML
    Pon en el <head> de todos los archivos HTML:
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  3. Content type PHP
    Y en los puramente PHP (que muestran XML, llamadas de AJAX, APIs…) pon el código:
    header("Content-Type: text/html;charset=utf-8");
  4. Set names
    Al crear la conexión de PHP con MySQL, envía esta consulta justo tras la conexión:
    mysqli_query("SET NAMES 'utf8'");
    (Para MySQLi escribe $acentos = $db->query("SET NAMES 'utf8'"); gracias Fernando)
  5. Convertir codificado a UTF-8
    Convierte todo lo que esté codificado de latin1 a UTF-8 (graciasGuillermo)
    SELECT convert(cast(convert(content using latin1) as binary) using utf8) AS content
  6. Apache
    Quita el DefaultCharset del Apache o modifícalo
  7. htmlentities
    Como última y desesperada opción, quita todos los htmlentities(); y sustitúyelo por otro parser para ‘sanitizar’ los datos.
Fuente: https://goo.gl/2DykoC
Share:

sábado, 9 de junio de 2018

Evitar el submit de la tecla enter en un form

No tiene mayor explicación, el onsubmit="return false;" en el formulario evita que al dar enter en cualquier input, me mande automaticamente al submit.

Por otro lado, el boton con el evento onClick="submit();" remplaza al input tipo submit, por lo que solo se podran enviar los valores si se hace clic y no con el enter.


<form action="agregar.php" method="post" onsubmit="return false;">
   <input name="usuario" type="text"><br/>    
   <input type="button"  value="Enviar" onClick="submit();">
</form>
Share:

miércoles, 14 de junio de 2017

isset(), is_null() y empty(): Diferencias y ejemplos de uso


En PHP tenemos diferentes funciones para comprobar una variable independientemente del tipo de datos que almacene. Puede que las tres funciones más populares y frecuentemente utilizadas para este fin sean isset()is_null() y empty(). Las tres devuelve un valor lógico true/false y en muchos casos utilizar cualquiera de ellas puede ser indiferente, en otros podemos encontrarnos con situaciones inesperadas.
En general, se suele entender is_null() como opuesta a isset(), y esta como opuesta a empty(). En este tutorial veremos como esto no es del todo cierto e intentaré explicar las peculiaridades de cada una de estas funciones para poder utilizarlas de forma correcta.
1

is_null

Echemos mano al manual PHP para is_null(). Dice así:
is_null — Comprueba si una variable es NULL
Por tanto, esta función devolverá true cuándo la variable comprobada tenga un valor NULL(nulo). En PHP NULL se considera un valor especial que representa a una variable sin valor, lo que puede ocurrir cuándo la variable no haya sido definida, cuándo esté definida pero sin valor asignado, cuándo se le asigne el valor NULL o cuándo haya sido destruida con usent().
//La variable no está definida
// Devuelve true y lanza un aviso tipo Notice: undefined variable
var_dump( is_null($var) );

//Se asigna la constante NULL
$var = NULL;
var_dump( is_null($var) );

//Se declara la variable pero no se le asigna ningún valor
$var;
var_dump( is_null($var) );

//La variable es destruida con unset()
$var = "Hola";
unset($var);
var_dump( is_null($var) );
En los cuatro casos anteriores is_null($var) devuelve true. Además, en el primer caso cuándo $var no ha sido definida, y en el último caso cuándo $var ha sido destruida, se lanzará un error tipo Notice: Undefined variable. Por el contrario, si se utilizan variables no definidas con isset() y empty() no aparecerá ningún tipo de aviso.
2

isset()

La función isset(), según el manual PHP, determina si una variable ha sido declarada y su valor no es NULO. Es importante fijarse bien: si una variable tiene valor nulo, aunque haya sido declarada, isset() devolverá false. En todos los ejemplos anteriores para is_null()isset() devolvería false mientras que is_null() devolvió true, por eso se consideran funciones opuestas. También es importante fijarse que isset() devuelve true para variables con valores vacíos, por ejemplo, cadenas de texto vacías:
//isset() devuelve false por que $var no ha sido definida
var_dump( isset($var) );

//isset() devuelve false aunque la variable haya sido declarada pues su valor es NULL
$var;
var_dump( isset($var) );

//isset() devuelve true. El valor ya no es nulo aunque esté vacío
$var = "";
var_dump( isset($var) );
Referencia: manual isset().
3

empty()

Echemos mano de nuevo al manual a ver que dice de la función empty():
empty — Determina si una variable está vacía
La definición es muy sencilla pero abarca muchos posibles escenarios. Una variable se considera vacía si no existe (aquí coincide con isset() y con is_null()) o si su valor es false. El valor false para una variable puede ser un valor lógico false, una cadena vacía, el número 0 (cero), un array vacío, el valor NULL y, aquí la peculiaridad, el string "0" (no como valor numérico, sino como cadena de texto) también dará positivo en la función empty().
//La variable no está definida. empty() devuelve true
var_dump( empty($var) );

//empty() devuelve true. El valor de $var es nulo
$var;
var_dump( empty($var) );

//empty() devuelve true para un string vacío
$var = "";
var_dump( empty($var) );

//empty() devuelve true para un array vacío
$var = array();
var_dump( empty($var) );

//empty() devuelve true para el string "0"
$var = "0";
var_dump( empty($var) );

//empty() devuelve true para el número entero 0
$var = 0;
var_dump( empty($var) );

//empty() devuelve true para el valor lógico false
$var = false;
var_dump( empty($var) );

//empty() devuelve false para el valor lógico true
$var = true;
var_dump( empty($var) );
Referencia: manual empty().

¿Cuándo utilizar cada una?

Esta es una pregunta con muy difícil respuesta y depende de cada situación. Lo más que puedo hacer es decir lo que yo suelo hacer:
  • Utilizo empty() con mucha más frecuencia que las demás y lo hago si necesito comprobar que una variable no tiene un valor vacío pero no es estrictamente necesario comprobar que la variable haya sido declarada. Si la variable no existe empty() devuelve true pero no lanza error. Si la cadena de texto “0” es un valor válido y posible para la variable a comprobar no se debe utilizar empty() por considerar este valor como vacío.
  • Utilizo isset() sólo cuándo necesito comprobar que una variable existe y no es nula aunque tenga un valor vacío.
  • Dejo is_null() para pocos casos y son aquellos en los que es necesario comprobar específicamente que una variable sea nula o no exista.
  • Si necesito hacer una comparación estricta pero no se si la variable ha sido declarada, lo compruebo previamente con isset().

Tabla comparativa

Esta tabla ha sido tomada de aquí y ampliada para los posibles valores de $x de espacio y NULL byte ("\0"). Nota que if($x) cuándo $x no existe se interpreta como false pero lanzará un error tipo NOTICE.
Comprobación de una variable con diferentes funciones PHP
Expresióngettype()empty()is_null()isset()booleanif($x)
$x = “”;stringTRUEFALSETRUEFALSE
$x = ” “; (espacio)stringFALSEFALSETRUETRUE
$x = null;NULLTRUETRUEFALSEFALSE
$x = “\0”; (NULL byte)stringFALSEFALSETRUETRUE
var $x;NULLTRUETRUEFALSEFALSE
$x is indefinidaNULLTRUETRUEFALSEFALSE
$x = array(); (array vacío)arrayTRUEFALSETRUEFALSE
$x = false;booleanTRUEFALSETRUEFALSE
$x = true;booleanFALSEFALSETRUETRUE
$x = 1;integerFALSEFALSETRUETRUE
$x = 42;integerFALSEFALSETRUETRUE
$x = 0;integerTRUEFALSETRUEFALSE
$x = -1;integerFALSEFALSETRUETRUE
$x = “1”;stringFALSEFALSETRUETRUE
$x = “0”;stringTRUEFALSETRUEFALSE
$x = “-1”;stringFALSEFALSETRUETRUE
$x = “Hola!”;stringFALSEFALSETRUETRUE
$x = “true”;stringFALSEFALSETRUETRUE
$x = “false”;stringFALSEFALSETRUETRUE

Share:

martes, 18 de abril de 2017

Mi primera aplicación en Laravel con TDD

Desarrollo guiado por pruebas de software, o Test-driven development(TDD) es una práctica de ingeniería de software que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring).


1. Crear una prueba tests/features (uma clase de prueba CreatePostsTest.php en camelcase)
   1.1. Crear la funcion public function test_a_user_create_a_post()
Fuente Styde; https://goo.gl/7axYrg

2. Ejecutar prueba  vendor\bin\phpunit --filter test_a_user_create_a_post
3. Crear la Ruta (routes) routes/web.php

// Posts
Route::get('posts/create', [
    'uses' => 'CreatePostController@create',
    'as' => 'posts.create',
])

Route::post('posts/create', [
    'uses' => 'CreatePostController@store',
    'as' => 'posts.store',
])

4. Crear el controlador (Mencionado en el punto 3)

Para esta lección hemos usado los métodos del componente de pruebas de Laravel:
  • actingAs para autenticar un usuario dado.
  • visit para visitar una ruta o URL dado.
  • type para escribir algún texto en un campo dado.
  • press para hacer clic en un botón con el nombre dado.
  • seeInDatabase para evaluar si el registro fue creado correctamente en la base de datos.
  • seeInElement para evaluar si un elemento HTML contiene la información especificada. 
Puedes conocer más de este método en la lección:
Métodos de pruebas within y seeInElement de InteractsWithPages en Laravel 5.2

Comandos usados para crear:
  • El controlador php artisan make:controller CreatePostsController
  • La migración php artisan migration create_posts_table --create=posts
  • El modelo php artisan make:model Post
Share:

jueves, 13 de abril de 2017

Codeship - Integración Continua 

Usualmente en un equipo de trabajo se desarrollan actualizaciones y avances del proyecto lo que a merita en algunos casos integrar ese código al proyecto varias veces al día.
Para estos casos se utiliza la practica de desarrollo de software [Continuous Integration - CI] Integración Continua, esta práctica permite a los miembros de un equipo integrar su trabajo frecuentemente, validando que antes de integrar su código al proyecto se evalué que no contenga errores lo que lleva a una reducción de conflictos y problemas de integración que ocurren cuando trabajamos en equipo, además también permite detectar errores de forma temprana y en resumen permite que los desarrolladores trabajen de forma más precisa y creen proyectos en menos tiempo.

Fuente Styde: https://goo.gl/7SxpcH

Accesos:

Codeship: https://app.codeship.com/projects
Bitbucket: https://bitbucket.org/


Share:

lunes, 20 de marzo de 2017

Repara USB de tamaño falso y colocar su tamaño real

[Link de descarga




Share:

BTemplates.com

Con la tecnología de Blogger.