Como funciona esta web y su creación
Después de leer el artículo que había publicado Carlos M. en su blog, pensé, que porque no hacer lo mismo con el mío.
Eso sí, tengo que indicar antes, que su artículo, es mucho mejor que el mío, porque el funcionamiento de mi página web es muy parecido a la suya, pero con alguna diferencias. La primera y más importante, es que yo no uso Emacs ni Org-Mode.
Mi web es mucho más simple, pero eso sí, intentaremos seguir un poco la guía que puso Lazaro, para que sea fácil seguir la mía.
◇ Hardware
Es un poco subjetivo, en mi caso decir Hardware, porque en mi caso, todo depende de 2 ordenadores. El primero es mi portátil de uso normal (personal) que es desde donde escribo los artículos gracias a markdown y esto lo hago a través de Geany, si ahora es cuando todos me vais a echar en cara que había dicho en este artículo que estaba usando nvim y que esta decisión, había venido después de ver el vídeo de Atareao donde explicaba que había echo el cambio de vim a neovim para mejorar su productividad.
Yo hice lo mismo, pero después de unos meses de usarlo, me he dado cuenta, que en mi caso, para el uso que le doy a neovim, que es solo para los artículos de mi blog, me resultaba todo más lento y esto es porque aún me falta mucho por aprender de vim y de neovim y como no le voy a dar todo el uso que tendría que darle, pues la curva de aprendizaje sería muy lenta y sobretodo, tediosa porque como digo, no voy a sacarle todo el partido, por ese motivo, me he tirado a Geany que es lo más parecido a notepad++ que era el que usaba cuando estaba programando y con el que estuve más cómodo.
Pero no nos vayamos por las ramas y volvamos al hardware, como he dicho antes, para escribir los artículos uso mi portátil personal y que gracias a las ideas que saqué del artículo de Lazaro, lo sincronizo con mi servidor que junto con el container, docker, de Jekyll veo el resultado de como quedará todo.
Una vez, hechas todas las comprobaciones y validaciones, uso otro script, también en bash, que actualiza mi árbol del projecto de GitHub que es donde tengo alojada mi web.
Como veis, uso 2 ordenadores, seguramente podría usar uso solo, pero de momento, estoy cómodo con este funcionamiento.
◇ Scripts
Como he dicho antes, tengo 2 scripts para la sincronización de los artículos con el servidor y luego otro para sincronizar con el árbol de GitHub.
El primero de estos scripts, el de sincronizar con el servidor funciona a través rsync de la siguiente manera:
#!/bin/bash
rsync -azvhP --rsh='ssh -pPORT' --exclude='draff' DIRECTORI_ORIGEN USUARI@IP_SERVIDOR:/DIRECTORI_DESTI
Usando este script, hay que tener en cuentas unas cosas (como yo lo tengo configurado):
- PORT: Es el puerto que uses para comunicarte con el servidor, en mi caso, no uso el por defecto de
SSH - exclude: el / los directorios que quieres excluir a la hora de sincronizar los directorios.
- DIRECTORI_ORIGEN: Es el directorio donde tenemos los ficheros
origen - USUARI@IP_SERVIDOR: El usuario y ip del servidor al que nos tenemos que conectar
- DIRECTORI_DESTI: Directorio de destino, es el que
rsyncactualizará los archivos que estén en el directorio de origen.
El segundo script, también en bash, sirve para sincronizar el projecto que tengo en local con el projecto que tengo en GitHub.
Lo primero que hay que tener en cuenta, es que para usarlo, lo que se tiene que hacer, tal como yo lo tengo, es que el servidor tenga las claves SSH dadas de alta en GitHub para que así, no tengas que estar insertando todo el rato el usuario y el password.
Si esto ya lo tienes, ahora solo falta el script:
#!/bin/bash
# UpToGit 0.1
# Actualiza facilmente tu repositorio Git
# (CC) 2011 Alfonso Saavedra "Son Link"
# http://sonlinkblog.blogspot.com
# Bajo licencia GNU/GPL
# Modo de uso: copia o mueve este script a /usr/bin o /usr/local/bin y desde el directorio donde se encuentre la copia de un repo git, ejecútalo de esta manera:
# uptogit <ficheros>
# Comprobamos si el directorio en el que estamos es de un repositorio git
if [ ! -d '.git' ]; then
echo 'Esta carpeta no contiene un repositorio Git'
exit -1
fi
# Ahora comprobamos si se le paso algun parametro
if [ $# == 0 ]; then
echo "UpToGit: ¡Error! No se le a pasado ningún parámetro"
echo "uptogit fichero1 fichero2 ... ficheroN"
exit -1
else
# Recorremos los parametros para comprobar si son ficheros o directorios
for file in $*; do
if [ ! -e $file ]; then
echo "UpToGit: El archivo o directorio $file no existe"
exit -1
fi
done
# Si llegamos hasta aquí, indicamos a Git los archivos a subir
git add $*
# Esto nos pedira el mensaje del commit
echo "Introduce el mensaje del commit:"
read TXT
git commit -m "$TXT"
# Y terminamos subiendo los archivos
git push --force origin master
fi
Este script, tal como he dicho antes, actualiza nuestro repositorio de GitHub. Para su uso se ejecuta de la siguiente manera:
usuari@debian:~$sh up2Git.sh arxiu1, arxiu2, etc...
Donde:
arxiu1, arxiu2, etc...: Son los archivos que quieres sincronizar. Si pones el.estás indicando que quieres sincronizar todo el directorio.Introduce el mensaje del commit: Nos está pindiendo un mensaje para describir la acción que vamos a llevar a cabo (yo lo entiendo así).
Con esto, ya tenemos actualizado nuestro repositorio con GitHub.
◇ Publicación
Para la publicación, se puede decir, que ya se ha hecho con el segundo de los scripts que antes he puesto.
Lo único que falta, es otro script, esta vez hecho en python, de factoría también de Carlos M. que lo que hace es crear un toot en Mastodon con el último artículo publicado en nuestro blog.
En el artículo, puedes ver como se hace tanto para Twitter como para Mastodon, pero en mi caso yo solo uso Mastodon.
El script es el siguiente:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# script que lee el feed rss de un blog y publica el ultimo articulo creado en Mastodon
# Tienes que tener instaladas las librerias feedparser, Twython, Mastodon
# Autor: Carlos M.
# https://elblogdelazaro.org
# Llama los modulos Python
import feedparser
from twython import Twython
from mastodon import Mastodon
# Llamando a las llaves del Diccionario (Twitter)
CONSUMER_KEY = "xxxxxxxxx"
CONSUMER_SECRET = "xxxxxxxxx"
ACCESS_KEY = "xxxxxxxxx"
ACCESS_SECRET ="xxxxxxxxx"
# Seleccionamos el Feed
feed = 'ADREÇA DEL FEED'
# Parseamos el Feed
d = feedparser.parse(feed)
# Inicializa la API de Twitter, escribe el nuevo estado y salimos d['entries'][0] es el último articulo publicado
status_text = d['entries'][0]['title'] + '\n' + d['entries'][0]['link']
articulo = ("Ultimo articulo publicado:" +'\n' + status_text)
# Publica en mastodon
# Token y url de la Instancia
mastodon = Mastodon(
access_token = 'TOKEN_MASTODON',
api_base_url = 'https://URL_TU_MASTODON/'
)
mastodon.status_post(articulo)
Con esto, está explicado todo el funcionamiento desde la creación del artículo hasta la publicitación de dicho artículo en Mastodon. Seguramente, el artículo de Lazaro le da mil vueltas al mío, pero…