miércoles, 22 de enero de 2014

Enviar correos desde la terminal de linux usando SSMTP y GMail

En ocasiones, es importante enviar correos desde nuestros servidores (o equipos personales), para enviar un reporte, o solo por que si. SSMTP, y Google nos ayudan con esto.

Lo primero que debemos hacer es instalar SSMTP. Si contamos con una distribución basada en Debian, escribimos en nuestra terminal:

# apt-get install ssmtp

Editamos el archivo de configuración ssmtp.conf así:

# vim /etc/ssmtp/ssmtp.conf

Buscamos el parámetro mailhub, y lo editamos así:

mailhub=smtp.gmail.com:587

Descomentamos la linea con FromLineOverride:

FromLineOverride=YES

Y por último, agregamos los datos de nuestra cuenta de correo:

AuthUser=correo@gmail.com
AuthPass=contrasenia
UseSTARTTLS=YES

Ya con esto, tendríamos nuestro sistema configurado para enviar correos haciendo uso del comando mail. Veamos un ejemplo de uso:

$ echo "Este es el mensaje del correo" | mail -s "Asunto" receptor@dominio.com

Para más información sobre el comando mail, siempre podremos usar el manual:

$ man mail

Espero les sirva de ayuda. Un saludo.

domingo, 21 de abril de 2013

Obtener dirección MAC con C en Linux

Paso por aquí a dejar un código que he recopilado de varios post encontrados en internet. Se trata de un procedimiento con el cual podemos obtener la dirección MAC de nuestro equipo (más exactamente de una interfaz de red contenida en nuestro equipo). El código lo pueden encontrar en la siguiente dirección:

https://github.com/sigifredo/cUtils

El código está en el archivo llamado hwaddr.c del directorio src.
Espero les sirva de ayuda.

miércoles, 19 de diciembre de 2012

Submódulos con Git

Hola a todos. Últimamente he estado estudiando un poco de Git, y encontré una funcionalidad que puede ser de mucha ayuda cuando tenemos sistemas muy grandes, o muchas dependencias que son desarrolladas en paralelo a nuestro proyecto. Los submódulos nos permiten tener un directorio dentro de nuestro proyecto Git que es a su vez un proyecto Git totalmente a parte. A continuación, veremos como hacer uso de estos:

Agregar submódulo:

$ git submodule add <url del submódulo> <ruta del submódulo>

Ejemplo:

$ git submodule add https://sitio-web.dominio/proyecto.git deps/proyecto

Clonar un proyecto que usa submódulos:

Ahora, cuando clonamos un proyecto que tiene submódulos, estos no se descargan automáticamente, a pesar de que se crean sus directorios. Para descargar los submódulos tenemos que hacer lo siguiente:

# Primero, inicializar todos los submódulos
$ git submodule init
# Luego y por último descargarlos
$ git submodule update

Actualizar submódulos:

Cuando desarrollamos submódulos en paralelo con nuestro proyecto principal, a menudo queremos estar actualizando nuestras dependencias, para esto, bastará con entrar al directorio donde tenemos nuestro submódulo y hacer pull (git pull), o si lo que queremos es actualizar todos los submódulos al mismo tiempo:

$ git submodule foreach git pull

Si lo que queremos es eliminar un submódulo que ya no usaremos, debemos seguir varios pasos:

1. Lo primero es abrir el archivo .gitmodules y eliminar las lineas que contengan información de este módulo. Este archivo luce así:

[submodule "deps/zlib"]
        path = deps/zlib
        url = git@github.com:sigifredo/zlib.git
[submodule "deps/libgit2"]
        path = deps/libgit2
        url = git@github.com:sigifredo/libgit2.git
Archivo: .gitmodules

Debemos eliminar las lineas en negrilla.

2. También tendremos que abrir el archivo .git/config y eliminar la configuración del submódulo. De nuevo, el archivo luce así:

[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
        hideDotFiles = dotGitOnly
[remote "origin"]
        url = git@github.com:sigifredo/gito.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "development"]
        remote = origin
        merge = refs/heads/development
[submodule "deps/zlib"]
        url = git@github.com:sigifredo/zlib.git
[submodule "deps/libgit2"]
        url = git@github.com:sigifredo/libgit2.git
Archivo: .git/config

Debemos eliminar las lineas en negrilla.

3. Por último, debemos eliminar el directorio del submódulo de la siguiente manera:

$ git rm --cached <dirección del submódulo>

Ejemplo:

$ git rm --cached deps/proyecto

Estos son los procedimientos básicos para trabajar con los submódulos de Git. Espero les sea de mucha ayuda en su proceso de desarrollo. Un saludo.

Referencias:
- Página oficial del proyecto: http://git-scm.com/
- Git Book (en ingles): http://git-scm.com/book

viernes, 16 de noviembre de 2012

Instalar y configurar gVim en Windows

Primero, descargar el software necesario:

- gVim para Windows.
http://www.vim.org/download.php

- Fuente (DejaVu Mono): es la predeterminada en las consolas de Linux (KDE y GNOME):
http://dejavu-fonts.org/wiki/Download



Luego de instalado gVim y la fuente DejaVu Mono, editamos el archivo de configuración de gVim C:\Program Files (x86)\Vim\_vimrc

y cambiamos su contenido por el siguiente código:

version 6.0
set guifont=DejaVu_Sans_Mono:h9:cANSI
set helplang=es
syntax on


domingo, 8 de julio de 2012

Jugar con varios realmlists en WoW

Actualmente me encuentro jugando World of Warcraft en un par de servidores, y me he encontrado con lo incómodo que es cambiar el archivo realmlists cada que voy a cambiar de servidor o versión del juego. Por esta razón he creado una aplicación simple que permite guardar los servidores en los que jugamos, y la ruta donde se encuentran los juegos. La aplicación la pueden descargar en este link https://sourceforge.net/projects/switchrl/. Se ha desarrollado bajo licencia GPLv3 así que es de libre distribución.





La aplicación cuenta con una sección llamada Directorio, en la cual guardaremos los directorios a WoW. En mi caso tengo dos versiones de este, entonces he guardado las dos rutas. Y la sección Servidor donde guardaremos los servidores en los que queremos jugar. Para iniciar el juego, seleccionamos el servidor y el directorio y presionamos Iniciar. Espero sea que esta aplicación les sea de utilidad. Un saludo.

domingo, 11 de diciembre de 2011

Instalar MinGW Qt4 y CMake

Primero, tenemos que descargar el software necesario:

- Qt SDK:
http://qt.nokia.com/downloads
- CMake:
http://cmake.org/cmake/resources/software.html


Instalación y configuración de Qt SDK:
1- Ejecutamos el archivo descargado, y esperamos que se prepare la información para la instalación:





2- A continuación, escogemos el tipo de instalación Personalizada (Custom):



3- Seleccionamos los componentes necesarios para usar MinGW y Qt:



4- Aceptamos la licencia e instalamos:



5- Luego de terminar la instalación, agregamos MinGW y Qt a las variables del sistema (especificamente en la variable PATH). Este proceso es diferente en cada versión de Windows, por eso no especificaremos como llegar a la configuración de las variables de entorno. Las rutas que agregaremos al PATH del sistema serán:

- C:\QtSDK\mingw\bin
- C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin


A continuación instalamos CMake:
Este proceso de instalación es trivial para el usuario de Windows. Lo único que se debe tener encuenta es especifiar durante la instalación, que se debe agregar CMake al PATH del sistema:



Ahora temenos nuestro sistema listo para usar. Para construir nuestro programa abriremos una consola de MS-DOS, e iremos a la dirección donde está guardado nuestro proyecto. Crearemos una carpeta donde compilaremos nuestro código fuente y e esta digitaremos el siguiente comando:

> cmake -G "MinGW Makefiles" ..


Y para compilar:

> mingw32-make

lunes, 31 de octubre de 2011

Pasar arreglo de un archivo a otro de PHP con GET

Hola a todos. El día de hoy les traigo un "truco" que recientemente usé en una página web que hice para la universidad.

Es posible que tengamos la necesidad de pasar un arreglo completo de un archivo a otro de PHP y resulta muy incómodo pasar cada uno de sus componentes. Para esto, lo que haremos será serializar el arreglo con la función serialize de PHP, y la cadena resultante la codificaremos con urlencode para ser pasada a otro archivo. En el otro archivo solo tendremos que decodificar la cadena con la función urldecode y deserializarla con unserialize.

Archivo emisor:
arr['ind'] = 4;

$val = urlencode(serialize(arr));

header('Location: recptor.php?s=$var');


Archivo receptor:
$s = unserialize(urldecode(stripslashes($_GET['s'])));
echo $s['ind'];


Así el echo de la última linea nos mostrará "4".