jueves, 19 de septiembre de 2019

Actualizar caracteres extraños en mysql con un solo query

Actualizar caracteres extraños en mysql con un solo query

Para actualizar un campo de una tabla en mysql en su totalidad se utiliza este solo query:

UPDATE [tabla] SET [campo] = CONVERT(BINARY CONVERT([campo] USING latin1) USING utf8);

Ejemplo:

UPDATE wallpaper SET titulo = CONVERT(BINARY CONVERT(titulo USING latin1) USING utf8);

Nota importante:
Por motivos de seguridad de los datos es vital sacar un backup de los datos a actualizar.

martes, 17 de septiembre de 2019

Crear log en archivos PHP y recuperar la información

Crear log en archivos PHP y recuperar la información

Con este método podemos gestionar de forma fácil cualquier log en archivo que deseemos almacenar:

function saveLOG($nombre, $info) {
    $file = fopen($nombre . '_' . date('Y-m-d') . '.txt', 'a');
    fwrite($file, $info . PHP_EOL);
    fclose($file);
}

$nombre es el nombre del archivo. El método le agregaría la fecha actual y le pondría la extensión txt.

$info es la información que deseamos guardar.

Ejemplo de uso:

$info = "$dato1|$dato2|$dato3|$dato4|$dato5|$dato6";
saveLOG('noti_susc.txt', $info);

Aquí hemos separado por el carácter | (pipe) los datos que se encuentras en las variables. También podemos guardar texto literal, o cualquier otro dato tipo texto.

Para leerlo simplemente usamos la función de php fopen:

$f = fopen('noti_susc.txt_2019-09-17.txt', 'r'); // Aquí colocamos el nombre del archivo en el cual guardamos el log o cualquier otro log legible.

while ($l = fgets($f)) {
    if (feof($f)) { // Truco no muy bonito pero efectivo, que al llegar al fin de archivo salga del bucle
        break;
    }

    $aux = explode('|', $l); // Guardamos los datos separados por el carácter | y los separamos
    // Uso de los datos separados
    echo $aux[0] . $aux[1] . $aux[2] . $aux[3] . $aux[4] . $aux[5] . $aux[6]; // Etc. cantidad de variables
}

domingo, 14 de julio de 2019

Activar o desactivar hibernación Windows 10


Para desactivar hibernación en Windows 10 se debe ejecutar el comando en la consola:

powercfg.exe /h off


Para activar:

powercfg.exe /h on

lunes, 17 de junio de 2019

Parsear variables de una cadena get con PHP



Para obtener la variables de una cadena get de forma simple se usa el método parse_str() de php.

Ejemplo:

$cadena = "id=1&ver=1.0&os=ios&name=verizon";
parse_str($cadena);

Uso de variables:
$id, $ver, $os, $name

miércoles, 10 de abril de 2019

viernes, 5 de abril de 2019

Métodos sumar y restar fechas en PHP



Método para sumar días a una fecha:

function sumar_fecha($fecha, $dias) {
    $nuevafecha = strtotime("+$dias day", strtotime($fecha));
    $nuevafecha = date('Y-m-d', $nuevafecha);
    return $nuevafecha;
}

Uso:
sumar_fecha("2019-04-05", 7);

Resultado:
2019-04-12


Método para conocer cuantos días restan entre dos fechas:

function restar_fecha($start, $end) {
    $start_ts = strtotime($start);
    $end_ts = strtotime($end);
    $diff = $end_ts - $start_ts;
    return round($diff / 86400);
}

Uso:
restar_fecha("2019-04-01", "2019-04-05");

Resultado:
4

miércoles, 3 de abril de 2019

Optimizar Windows 10 sin programas externos

Windows 10


Es posible optimizar Windows 10 sin necesidad de programas de terceros para que este pueda permanecer siempre rápido.

Lamentablemente programas de terceros no pueden limpiar en su totalidad los problemas de Windows y por el contrario nos ocupan más espacio y pueden estar instalando otros programas no deseados.

La siguiente lista de comandos se debe ejecutar en su orden:

1. sfc /scannow
2. DISM /Online /Cleanup-Image /CheckHealth
3. DISM /Online /Cleanup-Image /RestoreHealth

lunes, 1 de abril de 2019

Cómo actualizar BIOS en un portátil sin batería y conectado directamente

Batería laptop


Muchas veces nuestro laptop se le puede dañar la batería y nos toca quitarla para conectar el equipo directamente a la corriente.

Cuando intentamos actualizar la BIOS de dicho laptop, nos suele aparecer una advertencia que conectemos nuestra batería y que esta debe tener más del 20% de su carga.

En estos casos debemos ir a los archivos de la actualización de la BIOS que descargamos de la página oficial de nuestro laptop y buscar el archivo de configuración que por lo general tiene la extensión .ini

Buscar el parámetro BatteryCheck = 1 y cambiarlo por 0

Ejecutar CMD de Windows como Administrador y allí correr el archivo para actualizar la BIOS.

Normalmente debería permitir actualizar. De lo contrario se debe ejecutar el archivo de la actualización con el parámetro /forceit

Ejemplo: BIOS.EXE / forceit

NOTA IMPORTANTE: Si por alguna razón nuestro laptop se apaga ya sea por desconexión del cable o se interrumpe la energía, este puede sufrir daños irreparables en la BIOS. Usar este procedimiento baja su propia RESPONSABILIDAD.

jueves, 28 de marzo de 2019

Portátil ASUS no carga sistema operativo (inicia sólo en la BIOS)

BIOS


Pasos para solucionar el problema de inicio sólo en la BIOS:

1. Ir al menú Security
2. Opción Boot Menu
3. Opción Secure Boot Control -> Disabled
Aptio Setup Utility


4. Ir al menú Boot
5. Opción Launch CSM -> Enabled
Aptio Setup Utility


6. Ir al menú Save & Exit
7. Opción Save Changes and Exit -> Enter

jueves, 14 de marzo de 2019

Smart TV LG 43 LJ550T dejó de reconocer redes wifi

El modelo LJ550T tiene una falla de diseño la cual puede afectar la tarjeta de Wi-Fi de forma intermitente o definitiva respecto a la conexión inalámbrica.

Esta falla consiste en que el módulo wifi esta en la parte inferior del Smart TV cerca a las ranuras externas del sonido, razón por la cual el polvo y partículas pueden ingresar y afectar los circuitos o aislarlos.

Sin embargo esto no impide que el Smart TV se pueda conectar por cable directamente hacia el módem pero esto en realidad es tener medio Smart TV.

La solución es destapar el Smart TV cuidadosamente y desconectar el módulo wifi. Limpiarlo y volver a conectar.


martes, 12 de marzo de 2019

Contraseña y acceso Modem Claro Hitron CGNV2


Probar con los siguientes:
password claro modem wifi



Para acceder al módem Hitron CGNV2 se debe acceder mediante la puerta de enlace predeterminada. Esto se puede averiguar con el comando ipconfig en la consola de Windows.

Se debe utilizar un navegador como Microsoft Edge o Mozilla Firefox, pues de lo contrario no funcionaría. (Funciona con la versión de Google Chrome 74 y superiores)

Credenciales:
Nombre de Usuario: CLRadminLAN1
Clave: Uq-4GIt3M

Importante no realizar cambios sin conocimientos de experto. Preferiblemente sacar una copia en la configuración en WAN/LAN -> Guardar la configuración localmente


Otra contraseña sugerida por usuario:
Usuario: admin
Clave: ZP9Lw$fGyUD

¡NOTA IMPORTANTE!:

Si estas credenciales no funcionan, intenta probar con las del Modem Technicolor: https://mismemoriasinformaticas.blogspot.com/2020/09/contrasena-y-acceso-modem-tigo.html

miércoles, 6 de marzo de 2019

En Windows 10 no se apaga mi portátil

laptop windows 10

En multitud de portátiles, especialmente en ordenadores con tecnología Intel, el apagado del sistema no se realiza de forma correcta. El ordenador no se apaga totalmente ni desde los iconos del menú de inicio ni empleando los atajos del teclado. Tampoco se puede salir del modo de hibernación, salvo forzando el apagado del ordenador tras pulsar durante unos segundos la tecla de apagado. Este problema está ocasionado por controladores no compatibles con Windows 10. El propio sistema instala controladores para el sistema de energía del equipo pero éstos no son compatibles en Windows 10 o están desactualizados.

Si la máquina incluye tecnología Intel, es posible que un controlador no esté instalado, o se haya instalado una versión no compatible. El problema no es de Windows ni del laptop, sino de Intel. Parece ser que este problema en el semi-apagado de los portátiles está relacionado con el controlador INTEL MANAGEMENT ENGINE INTERFACE (Intel MEI) (sólo los notebooks que incluyan la tecnología Intel).

Estos pasos, en orden, pueden solucionar el problema:

1. Pulsa las teclas Windows + X y haz clic en Administrador de dispositivos.
2. Busca el controlador de sistema Management Engine Interface (es posible que tenga una señal amarilla de que algo no va bien)
4. Haz doble clic sobre el controlador. En la ventana de Propiedades, haz clic en la ficha Controlador. Clic sobre el botón Actualizar controlador.
5. Reinicia el sistema.

viernes, 11 de enero de 2019

API para conocer el tipo de dispositivo en JavaScript


<head>
<script type="text/javascript" src="https://wurfl.io/wurfl.js"></script>

<script>
    if (WURFL.form_factor == 'Smartphone') {
        if (WURFL.complete_device_name.indexOf("Apple iPhone") == 0) {
            // iPhone
        } else {
            // Android
        }
    } else {
        // Feature phone
    }
</script>
</head>

API para obtener sistema operativo, navegador y versión del usuario en PHP


Request:
https://uploadbeta.com/api/parse-user-agent/?s=nUser-Agent:[USER AGENT]

Response:
{"platform":"Windows","browser":"Chrome","version":"71.0.3578.98"}



Método para retornar valores en array:

function infoUA($ua) {
    $url = 'https://uploadbeta.com/api/parse-user-agent/?s=nUser-Agent:' . urlencode($ua);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);

    $array = json_decode($response, 1);
    return array($array['platform'], $array['browser'], $array['version']);
}

API para obtener datos sobre el país según la IP en PHP


Request para recibir response en JSON:
http://api.ipaddress.com/iptocountry?format=json

Response:
{"ipaddress":"100.110.160.99","continent_code":"SA","continent_name":"South America","country_code":"AR","country_name":"Argentina"}


Request para recibir response en XML:
http://api.ipaddress.com/iptocountry?format=xml

Response
<?xml version="1.0"?><location><ipaddress>100.110.160.99</ipaddress><continent_code>SA</continent_code><continent_name>South America</continent_name><country_code>AR</country_code><country_name>Argentina</country_name></location>



Método PHP para obtener código del país y nombre del país:

function infoIP($ip) {
    $url = 'http://api.ipaddress.com/iptocountry?format=json&ip=' . $ip;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);

    $array = json_decode($response, 1);
    return array(strtolower($array['country_code']), $array['country_name']);
}

Método para retornar resultados en array MySQL en PHP


function consultar($sql) {
    $link = new mysqli('[IP]', '[USER]', '[PASSWORD]', '[BASE DE DATOS]');

    if ($link->connect_errno) {
        die('Fallo al conectar a MySQL: ' . $link->connect_error);
    }

    $result = $link->query($sql);

    if ($result->num_rows > 0) {
        $rows = array();

        while ($row = $result->fetch_assoc()) {
            $rows[] = $row;
        }

        return $rows;
    } else {
        return FALSE;
    }
}


USO:

$sql = "SELECT id FROM tabla";
$array = consultar($sql);

foreach ($array as $key => $value) {
    echo $value['id'];
}

Comprimir código HTML con PHP


Para comprimir se coloca el siguiente código PHP al inicio del documento:

ob_start('ob_gzhandler');
ob_gzhandler(ob_start('compress_page'), 5);

function compress_page($buffer) {
    $search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s');
    $replace = array('>', '<', '\\1');
    return preg_replace($search, $replace, $buffer);
}

Método para crear urls amigables en PHP


function urls_amigables($url)
{
    // Tranformamos todo a minúsculas
    $url = strtolower($url);

    // Reemplazamos caracteres especiales latinos
    $find = array('á', 'é', 'í', 'ó', 'ú', 'ñ', 'á', 'é', 'í', 'ó', 'ú');
    $repl = array('a', 'e', 'i', 'o', 'u', 'n', 'a', 'e', 'i', 'o', 'u');
    $url = str_replace($find, $repl, $url);

    // Añadimos los guiones
    $find = array(' ', '&', '\r\n', '\n', '+');
    $url = str_replace($find, '-', $url);

    // Eliminamos y reemplazamos los demás caracteres especiales
    $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
    $repl = array('', '-', '');

    return preg_replace($find, $repl, $url);
}

Método para ofuscar texto en PHP


function obfuscate($text) {
    $length = strlen($text);
    $scrambled = '';

    for ($i = 0; $i < $length; ++$i) {
        $scrambled .= '&#' . ord(substr($text, $i, 1)) . ';';
    }

    return $scrambled;
}

Obtener IP real de un usuario aunque este en un Proxy con PHP


Para obtener la IP real se utiliza:

$ip = filter_input(INPUT_SERVER, 'HTTP_X_FORWARDED_FOR') ?? filter_input(INPUT_SERVER, 'REMOTE_ADDR');

Guardar archivo y mini preview de una imagen en PHP


1. Leer variables del formulario:
$vars = get_defined_vars();

2. Obtener todos los campos FILE:
extract($vars['_FILES']);

3. Definir variables con el input a trabajar:
$file_name = $PREVIEW['name'];
$file_tmp_name = $PREVIEW['tmp_name'];
$file_error = $PREVIEW['error'];

4. Cargar archivo al servidor:
$path = '../game/image/' . $ID . 'b.jpg';
move_uploaded_file($file_tmp_name, $path);

5. Guardar mini preview:
list($width, $height) = getimagesize($path);
$new_width = 233;
$new_height = 146;
$prev = imagecreatetruecolor($new_width, $new_height);
$origen = imagecreatefromjpeg($path);
imagecopyresampled($prev, $origen, 0, 0, 0, 0, $new_width, $new_height, $new_width, $new_height);
imagejpeg($prev, '../game/thumbnail/' . $ID . 'm.jpg', 70);

jueves, 10 de enero de 2019

Descargar el CDN en App Engine de Google


Para descargar una copia del CDN de Google se utiliza el comando:

appcfg.py download_app -A [NOMBRE DE LA APP] -V 1 [UNIDAD + PATH DESCARGA]

Ejemplo:
appcfg.py download_app -A appengcdn -V 1 D:\appengcdn

URL thumbnail o miniatura para Youtube


Urls para la imagen del vídeo Youtube estandar y HD.

https://i1.ytimg.com/vi/[CODIGO VIDEO]/hqdefault.jpg
https://i.ytimg.com/vi/[CODIGO VIDEO]/maxresdefault.jpg

Ejemplo:
https://i1.ytimg.com/vi/ROOHPmzrQ9k/hqdefault.jpg
https://i.ytimg.com/vi/ROOHPmzrQ9k/maxresdefault.jpg

Codificación UTF-8 para Netbeans


Netbeans por defecto omite las tildes y caracteres especiales. Para solucionar:

1. Ir a la carpeta de instalación y buscar el directorio etc
C:\Archivos de programa\NetBeans x.x\etc

2. Editar el archivo netbeans.conf agregando  "-J-Dfile.encoding=UTF-8" en la línea de opciones por default del NetBeans (netbeans_default_options). El resto de opciones permanecen igual.

3. Volver a abrir Netbeans.

Buscar contenido en archivos de forma recursiva en Linux


Para buscar cualquier contenido dentro de un archivo y obtener la lista de archivos que coinciden se utiliza:

grep -lir "[TEXTO A BUSCAR]" "PATH"

Ejemplo:
grep -lir "8801202" "/html/apps"

Reemplazar contenido de varios archivos sin conocer el script en Linux


Si no se conoce el script pero se desea reemplazar el contenido de uno o varios archivos se utiliza el comando find de Linux

find PATH -name "*.php" -print | xargs perl -pi -e "s/[TEXTO A BUSCAR][TEXTO A REEMPLAZAR]/g"

PATH es la ruta en el servidor. Si en el texto a buscar y/o texto a reemplazar es una url se deben escapar los caracteres slash. Por ejemplo:

find PATH -name "*.php" -print | xargs perl -pi -e "s/http:\/\/getbootstrap.com\/dist\/css\/bootstrap.min.css/https:\/\/bootswatch.com\/4\/cerulean\/bootstrap.min.css/g"

Cómo actualizar uno o varios caracteres en un campo mysql

Formato
UPDATE tabla SET campo = REPLACE(campo, "a", "e");

Ejemplo
Si tenemos una tabla llamada juegos y en ella un campo llamado pais, cuyo contenido deseamos cambiar en todos los registros, debemos utilizar la siguiente expresión sql:

UPDATE juegos SET pais = REPLACE(pais, "rd", "do");