Aprender código Morse

.- .--. .-. . -. -.. . .-. / -.-. -.. .. --. --- / -- --- .-. ... . .-.-.

Código Morse, publicación de 1922. Wikipedia

Dicen que el saber no ocupa lugar, menos en la nube que si ocupa y te puede costar dinero.
De esta nueva realidad hemos aprendido que nuestra casa es muy pequeña y que siempre podemos aprender, por ejemplo un idioma nuevo.
Esperemos que no, pero todo indica que nos encontremos con una segunda ola y nos volvamos a confinar. Si este es el motivo o te encuentras en la parada del metro y no sabes que hacer, te dejo esta web de Google donde podrás aprender a utilizar el código morse, y practicar vocabulario en ingles. Puedes usarlo en el navegador y con el teclado para smartphone Gboard Android
Si queréis habilitarlo en vuestros telefono Android, deberéis seguir estos pasos. En IOS deberemos añadir el idioma y añadiendolo a nuestro teclado.


Pero en esta página web, si disponemos de tiempo y somos constantes aprenderemos este idioma, que aunque en muy poquitos sitios se utiliza, nos puede resultar útil si nos ataca una raza aliena que controla todos los satélites pero no controla las ondas de radio de larga distancia, y con el cual organizaremos un ataque a nivel mundial y sincronizado. Solo si eres norteamericano 👽👾😊

Morse Typing Trainer

Practicando código Morse

Como enviar correo electronico con archivo adjunto en PHP

Como enviar un correo electrónico con archivos adjuntos con PHP 📨. 
Puede ser que necesitemos crear una función para enviar un correo electrónico con un archivo adjunto, como respuesta a un formulario o para realizar publicaciones en otros servidores.
Si utilizamos una plataforma que en al que podemos programar y ejecutar PHP debemos asegurarnos que se encuentre instalado sendmail
Si somos el administrador de nuestro propio servidor, podremos instalarlo desde el terminal:
sudo apt-get install sendmail
Si somos invitados en el servidor, lanzaremos un script para comprobar si podemos utilizar la función mail:

<?php
    ini_set( 'display_errors', 1 );
    error_reporting( E_ALL );    //Comprobaremos si ha sido enviado o no
    $from = "TU CORREO ELECTRONICO"; //La dirección de correo desde que la enviamos
    $to = "DESTINATARIO";    //Dirección de correo a la que enviamos el mail
    $subject = "Probando PHP mail";    //Encabezado del correo
    $message = "PHP mail funciona correctamente";    //El mensaje
    $headers = "From:" . $from;    //Cabecera que dejamos tal cual
    mail($to,$subject,$message, $headers);    //Enviamos el correo
    echo "The email message was sent.";    //Confirmamos que el correo ha sido enviado

?>

Si hemos recibido el correo, podremos continuar con la programación de nuestra función.


//Recipiente
$to = 'DESTINATARIO';     //A quien le enviamos nuestro correo

//remitente del correo
//Desde que correo le envamos y quien será el destinatario de la respuesta si lo hubiera
$from = 'NUESTRO CORREO ELECTRONICO';
$fromName = 'UN NOMBRE, O NICK DESCRIPTIVO';    //Quienes somos o nuestra organización

//Asunto del email
//Utilizamos la función utf8_decode() para que nos reconozca las tildes y la ñ, entre otros caracteres
$subject = utf8_decode('ASUNTO DEL CORREO'); 

//Ruta del archivo adjunto
$file = 'DIRECCIÓN GLOBAL DEL ARCHIVO QUE VAMOS A ENVIAR';

//Contenido del Email
//La función htmlentities() nos convertira las tildes ñ y caracteres especiales en etindades HTML
$htmlContent = htmlentities('CONTENIDO DEL CORREO CODIFICADO EN HTML'); 

//Encabezado para información del remitente
$headers = "De: $fromName"." <".$from.">";

//Limite Email
$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

//Encabezados para archivo adjunto 
$headers .= "\n MIME-Version: 1.0 \n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 

//límite multiparte
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n"; 

//preparación de archivo
if(!empty($file) > 0){
    if(is_file($file)){
        $message .= "--{$mime_boundary}\n";
        $fp =    @fopen($file,"rb");
        $data =  @fread($fp,filesize($file));
        @fclose($fp);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" . 
        "Content-Description: ".basename($file)."\n" .
        "Content-Disposition: attachment;\n" . " filename=\"".basename($file)."\"; size=".filesize($file).";\n" . 
        "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
    }
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $from;

//Enviar EMail
$mail = @mail($to, $subject, $message, $headers, $returnpath); 

Esta función requiere mucho tiempo de ejecución y no es recomendable para el envio masivo de correos electronicos.

Citas en Blog en faseterminal

Nuevo blog recién salido del horno, en una Beta muy avanzada, Frases y citas más o menos celebres

Blog de citas

No te des prisa en adquirir nuevos amigos, ni menos en dejar los que tengas.   Salón de Atenas


Retomando un antiguo proyecto personal para aprender a programar en PHP y SQL, que quedó aparcado. Ahora que tenemos mucho, tiempo, le he vuelto a retomar enfocandole de una forma más sostenible. Intenté adaptar el código a Python, pero he encontrado muchas dificultades para conectar con el gestor de bases de datos. Al final lo he retomado con PHP y MariaDB
Estoy usando como fondo de imágenes las que se encuentran catalogadas, y de uso libre en: Pixabay.
Y he creado un Bot en Telegram en el que podéis ver y compartir citas @Citaxdia_Bot Aun es un juguete en el que trabajaré para darle más funciones.

Enlaces relacionados:

¿Donde descargar los fondos de pantalla del buscador Bing?

Si eres de aquellos que utilizan el buscador Bing, disfrutaras en su página principal de un fondo de pantalla de alta resolución  personalizado a la conmemoración del  día. En este caso 8 de mayo se conmemora la victoria de los aliados en la Segunda Guerra Mundial en el año 1945.

Navegador Bing


Vista de los Campos Elíseos desde el Arco de Triunfo el 8 de mayo de 1945, París, Francia


Siempre nos muestra información de la fotografía y nos permite compartirla en redes sociales. Pero no siempre nos deja descargarlas. Y cuando nos lo permite nos añade una pequeña marca de agua:

Baile pingüinos

Pero desde la pagina bingwallpaperhd.com nos permiten recorrer los fondos de pantalla que han aparecido en Bing. Nos encontraremos todas estas fotografías ordenadas por su:
  • Popularidad
  • Tema de la fotografia
  • Región o país donde fue tomada
  • etc..
Una vez localicemos la fotografía que nos ha gustado, entrado en la página de la misma nos mostrara su información en varios idiomas, sobre el momento en el que se tomó y ha quien pertenece. Tambien podemos descargarla de forma gratuita, y sin marca de agua, en distintas resoluciones y, dependiendo si queremos colcarlo de fondo de pantalla, nos permitirá su adquisición adaptada al dispositivo en el que queramos utilizarlo.

  • Antike römische Goldmine Las Médulas, León, Spanien
  • Ancient Roman gold mining site of Las Médulas, León, Spain
  • Antiguas minas de oro romanas en Las Médulas, León, España
  • Ancien site minier aurifère romain de Las Médulas, León, Espagne
  • Las Médulas, ancienne mine d’or de l’Empire romain, León, Espagne
  • 拉斯梅德拉斯的古罗马金矿遗址,西班牙莱昂
  • 「ラス・メドゥラス」スペイン, レオン
  • HD Resolution: 1366x768 1600x900 1920x1080 Original
  • Mobile VGA: 240x320 480x640 320x240 640x480
  • Mobile iPhone: 960x640 1136x640 1134x750
  • Tablet Android/iPad: 1024x768 1280x1080

La Medulas





Como borrar las claves almacenadas ssh de un equipo

Al iniciar la conexión ssh con un nuevo servidor, nos advierte que no es de confianza y si queremos almacenar las claves. Esta asociación es almacenada y nos permitirá encriptar las conexiones con el ordenador que queremos conectarnos.

sudo ssh 192.168.100.2 -l enfaseterminal
The authenticity of host '192.168.0.4 (192.168.100.2)' can't be established.
ECDSA key fingerprint is SHA256:EAM0qnIeDoo4cjNdWxkvbiRpc+5TREn4eaJ6+6WvT0U.
Are you sure you want to continue connecting (yes/no)?

En los siguientes inicios de sesion a traves de ssh no nos pedirá esta confirmación de seguridad, por que la asociación ya ha sido almacenada. 
Pero si en algún momento la confianza entre el servidor y el cliente se corrompe. La conexión no será posible.


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@                                   WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!                                                              @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.


Por una reinstalación del equipo o una actualización del sistema....., la clave maestra se modificara, y por lo tanto no coincidirá con la que nuestro cliente tiene almacenada, y por lo tanto la conexión ya no será segura, y no se permitirá. Esto requiere por nuestra parte una doble confirmación.
Tendremos que almacenar los datos almacenados de nuestro servidor.

Primero tendremos que borrar de la base de datos la dirección ip y la clave maestra a ella asociada.

sudo ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.100.2"

Y nos responderá, la dirección ip del servidor ha sido encontrada y borrada del almacén y archivo actulizado. Pero por si fuera necesario se ha guardado una copia del original.

 # Host 192.168.100.2 found: line 2
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

Y Segundo, al volver a conectar nos pedirá confirmación para almacenar el servidor SSH  y su clave SHA256.

sudo ssh 192.168.100.2 -l enfaseterminal
The authenticity of host '192.168.0.4 (192.168.100.2)' can't be established.
ECDSA key fingerprint is SHA256:EAM0qnIeDoo4cjNdWxkvbiRpc+5TREn4eaJ6+6WvT0U.
Are you sure you want to continue connecting (yes/no)?

Temas relacionados: