Comando screen en Linux: Guía completa y ejemplos de uso

0

Introducción

El comando screen en Linux es una herramienta poderosa que permite a los usuarios manejar múltiples sesiones de terminal dentro de una sola ventana de terminal. Esto es especialmente útil para los administradores de sistemas y desarrolladores que necesitan ejecutar múltiples tareas simultáneamente y mantenerlas funcionando incluso cuando cierran la sesión de su sistema.

Instalación

En la mayoría de las distribuciones de Linux, screen se encuentra disponible en los repositorios oficiales. Para instalarlo, se pueden usar los siguientes comandos según la distribución:

En Debian/Ubuntu y derivados:

sudo apt-get install screen

En Red Hat/CentOS y derivados:

sudo yum install screen

En Fedora:

sudo dnf install screen

Uso Básico

Iniciar una sesión de screen

Para iniciar una nueva sesión de screen, simplemente escribe:

screen

Esto abrirá una nueva ventana de terminal dentro de screen. Puedes comenzar a trabajar normalmente dentro de esta sesión.

Separar (detach) y reanudar (reattach) una sesión

Una de las características más útiles de screen es la capacidad de separar una sesión y luego reanudarla. Esto es particularmente útil si necesitas desconectarte del sistema pero deseas que tus procesos continúen ejecutándose.

Para separar una sesión activa, presiona:

Ctrl + A y luego D

Esto te devolverá a la terminal original, mientras que la sesión de screen continuará ejecutándose en segundo plano.

Para listar todas las sesiones de screen disponibles, usa:

screen -ls

Verás una lista de todas las sesiones activas, similar a esta:

There is a screen on:
    12345.pts-0.hostname    (05/19/24 12:34:56)    (Detached)
1 Socket in /run/screen/S-username.

Para reanudar una sesión específica, usa el siguiente comando seguido del ID de la sesión (en este caso, 12345):

screen -r 12345

Crear una nueva sesión con un nombre específico

Asignar nombres a tus sesiones puede facilitar su gestión, especialmente cuando tienes múltiples sesiones activas. Para crear una nueva sesión con un nombre específico, usa:

screen -S nombre_sesion

Por ejemplo:

screen -S desarrollo

Dividir la pantalla

screen también permite dividir la pantalla en múltiples regiones. Para dividir la pantalla horizontalmente, usa:

Ctrl + A y luego S

Para dividir la pantalla verticalmente, usa:

Ctrl + A y luego |

Para cambiar entre las regiones, usa:

Ctrl + A y luego Tab

Para cerrar una región, navega a ella y usa:

Ctrl + A y luego Q

Comandos de screen

Dentro de screen, puedes usar una variedad de comandos para gestionar tus sesiones y regiones. Aquí hay una lista de comandos comunes:

  • Ctrl + A seguido de C: Crear una nueva ventana.
  • Ctrl + A seguido de N o P: Navegar a la siguiente o anterior ventana.
  • Ctrl + A seguido de ": Listar todas las ventanas.
  • Ctrl + A seguido de K: Cerrar la ventana actual.

Enviar comandos a screen

Puedes enviar comandos directamente a una sesión de screen desde fuera de la misma. Por ejemplo, para enviar un comando a una sesión específica, usa:

screen -S nombre_sesion -X comando

Por ejemplo, para enviar el comando ls a una sesión llamada desarrollo, usa:

screen -S desarrollo -X stuff "ls\n"

Ejemplo de uso práctico

Supongamos que estás ejecutando un servidor en tu máquina local y necesitas mantenerlo funcionando incluso después de cerrar la terminal. Aquí hay un ejemplo de cómo podrías hacerlo usando screen:

  1. Inicia una nueva sesión de screen y nómbrala servidor: screen -S servidor
  2. Dentro de esta sesión, inicia tu servidor (por ejemplo, un servidor Python simple): python3 -m http.server
  3. Separa la sesión para mantener el servidor funcionando en segundo plano: Ctrl + A y luego D
  4. Cierra tu terminal o desconéctate del sistema. El servidor seguirá ejecutándose.
  5. Cuando necesites volver a esta sesión, reanúdala: screen -r servidor

Conclusión

El comando screen es una herramienta versátil y esencial para cualquier usuario de Linux que maneje múltiples tareas en la terminal. Con screen, puedes crear, separar y reanudar sesiones, así como dividir tu pantalla para una mayor productividad. Conocer y utilizar screen puede mejorar significativamente tu eficiencia al trabajar en un entorno de línea de comandos.

LM Studio: ejecutar modelos de IA LLM en un portátil o pc y offline para crear tu chatbot local

0

LM Studio es una aplicación que nos permite probar en local diferentes modelos LLM (Large Language Model) de una forma muy sencilla. Además de su sencillez, estos modelos no transmiten ningún tipo de información a otros servidores, con lo que puedes crear tu propia IA y configurarla como consideres.

LM Studio dispone de versiones para Windows, MacOS X y Linux.

Instalación

Lo primero que tendrás que hacer será descargar la aplicación para tu SO: https://lmstudio.ai/

En el caso de Linux, se descargará un fichero de extensión appImage, el cual hay que darle permisos de ejecución (si no los tiene ya), y con eso ya funcionará.

Descargar un modelo

Una vez instalada la aplicación, ábrela, verás la siguiente pantalla:

Vamos a descargar el modelo llamado «LLama 3 8B Instruct» (el primero que aparece en la captura) que se publicó el 19 de abril de 2024. Para ello vamos a pulsar en el icono de la lupa al lado del nombre del modelo. Nos aparecerá la siguiente pantalla:

El nombre del modelo tiene varias partes que hay que explicar:

  • Meta LLama 3, es el nombre del modelo propiamente dicho. Es un modelo LLM de Meta (Facebook), es la versión 3 del mismo, y es el más pequeño de los modelos de esta versión.
  • 8B: es el número de parámetros con los que ha sido entrenado. En este caso ocho mil millones de parámetros. Para esta versión existen los modelos 70B y 400B (que aun está siendo entrenado).
  • Instruct: se refiere al «Fine Tunning» que se le ha realizado. En este caso se ha entrenado para que ejecute las acciones que se le indiquen. Si en vez de «Insctruct» fuera «Chat«, pues habría sido entrenado para responder preguntas.

La parte importante de la captura anterior está en el listado de ficheros disponible. Como habrás observado hay cinco ficheros con un tamaño bastante diferente. Esto es debido a la «Quantización» que se les ha aplicado. Podríamos definir «Quantización» como una especie de compresión que reduce el tamaño del modelo, pero también lo hace más tonto. La «Quantización» aplicada en el modelo se puede ver en la etiqueta «Q4_K_M«, «Q5_K_M«, «Q6_K«, etc. Cuanto más alta sea la quantización mejor será el modelo, claro que también ocupará más espacio.

El tamaño del fichero es muy importante, porque este también será la cantidad de VRAM que el modelo necesita para poder funcionar. Cuanta más VRAM tenga tu tarjeta gráfica mejor.

Para elegir qué fichero descargar tienes que tener en cuenta la tarjeta gráfica que tengas, sobre todo su VRAM. Si tienes una gráfica de 8GB, posiblemente el fichero de 8GB no te funcione, y tendrás que descargar el de 6GB o el de 5GB. Tienes que entender que tu SO también consume una parte de la VRAM. Aun así, LM Studio nos da ciertas configuraciones para poder ejecutar parte del modelo en la GPU y parte en la CPU, pero se ejecutará mucho más lentamente.

Cuando hayas decidido qué fichero es el mejor para ti pulsa en el botón «Download» del fichero. Al pulsarlo se iniciará la descarga, que podrás seguir en la parte inferior de la pantalla:

Y si pulsas sobre la barra de progreso podrás ver el listado de descargas:

Probando el modelo

Cuando termine de descargar y validar el fichero descargado podrás probar el modelo.

Para ello pulsa en el icono de la burbuja de dialogo con tres puntos del menú de la izquierda:

Esta opción nos mostrará un chat como el de chatGPT. Arriba, en «Select a model to load», despliégalo y seleccionar el modelo que acabas de descargar.

Si al seleccionarlo te aparece este mensaje, simplemente pulsa en «Accept New System Prompt»:

En todo momento podrás ver la cantidad de RAM que consume el modelo y el uso de CPU que está realizando:

Abajo tienes un campo de texto para interacturar con el modelo. Escríbele algo:

Al cargar por primera vez el modelo y escribirle en español, quizás tenga alguna confusión con el idioma. Para corregirlo tenemos que indicarle cómo debe comportarse. Para ello, a la derecha tenemos un listado de opciones que nos permiten configurar diferentes aspectos del modelo:

En este caso la opción que nos interesa es el «System Prompt». Además del texto introducido, le indicamos también «Speak spanish»:

Si le volvemos a saludar ahora responderá correctamente:

Con esta pequeña configuración ya puedes interactuar con el modelo.

Modificar la personalidad del modelo

Aunque lo ideal es que pruebes por ti el modelo, puedes seguir modificando el «System Prompt», por ejemplo indicando que hable como Peppa Pig:

Dominando el comando «less» en Linux: Leyendo ficheros enormes con elegancia

0

Cuando se trata de manejar archivos grandes en sistemas Linux, la eficiencia es clave. El comando less emerge como una herramienta fundamental para leer y explorar archivos de gran tamaño con facilidad y rapidez. A diferencia de su predecesor, less permite navegar hacia adelante y hacia atrás dentro de archivos extensos de una manera fluida y sin consumir grandes cantidades de recursos del sistema. En este artículo, exploraremos a fondo el uso de less para enfrentar el desafío de leer archivos enormes con elegancia y eficiencia.

¿Qué es «less«?

less es una utilidad de línea de comandos que permite ver el contenido de archivos de texto, especialmente útil cuando se trata de archivos demasiado grandes para abrirlos en un editor de texto convencional. A diferencia de otros editores, less no carga el archivo completo en la memoria, lo que lo hace más eficiente para archivos de gran tamaño. Permite navegar hacia adelante y hacia atrás, buscar texto, y ofrece una variedad de características para facilitar la lectura de archivos extensos.

Uso básico de «less«

El uso básico de less es muy sencillo. Simplemente escribe less seguido del nombre del archivo que deseas ver:

less nombre_del_archivo

Esto abrirá el archivo en el visor de less, donde puedes desplazarte hacia arriba y hacia abajo usando las teclas de flecha o las teclas de página arriba y página abajo. Para salir de less, simplemente presiona la tecla q.

Funcionalidades avanzadas de «less«

  1. Búsqueda de texto: Puedes buscar texto dentro del archivo usando / seguido de la palabra o frase que deseas buscar. Por ejemplo, para buscar la palabra «error», escribe /error y presiona Enter. less resaltará todas las ocurrencias de «error» en el archivo.
  2. Navegación con etiquetas: less permite definir etiquetas en el archivo para facilitar la navegación. Para hacerlo, presiona la tecla m seguido de una letra para crear una etiqueta. Luego, puedes saltar a esa etiqueta en cualquier momento usando ' (Comilla simple) seguido de la letra de la etiqueta. Por ejemplo, para marcar una etiqueta con la letra «a», escribe ma, y luego para saltar a esa etiqueta, escribe 'a.
  3. Control de líneas largas: Los archivos grandes pueden contener líneas que exceden el ancho de la pantalla. less permite que estas líneas se envuelvan automáticamente o que se recorten. Puedes cambiar este comportamiento añadiendo el parámetro -S para recortar las líneas largas o --chop-long-lines para cortarlas al escribir el comando para abrir el fichero.
  4. Vista de línea y columna: Si necesitas conocer la posición exacta de una línea o columna en el archivo, less te permite habilitar una visualización en la parte inferior de la pantalla que muestra la línea y la columna actual. Para hacerlo, presiona la tecla =.
  5. Modo silencioso: Si solo estás interesado en saber si un archivo contiene texto y no necesitas ver su contenido, puedes usar less en modo silencioso con el parámetro -q. Esto evitará que less muestre el contenido del archivo y solo te informará si está vacío o no.

Conclusiones

El comando less es una herramienta poderosa y versátil para leer y explorar archivos enormes en sistemas Linux. Con su capacidad para cargar archivos grandes de manera eficiente, buscar texto, navegar con etiquetas y más, less proporciona una experiencia de lectura fluida y efectiva. Ya sea que estés trabajando con archivos de registro, archivos de datos o cualquier otro tipo de archivo de texto grande, less te ayuda a enfrentar el desafío con elegancia y eficiencia.

¡Así que adelante, domina el arte de leer archivos enormes en Linux con less y lleva tu productividad al siguiente nivel!

RGPD: ¿Cookies o suscripción? La respuesta del CEPD a la eliminación del botón de rechazar cookies

0

En enero, muchos usuarios del internet español nos encontramos con una sorpresa desagradable al visitar ciertos sitios web: el botón para rechazar todas las cookies había desaparecido. En su lugar, algunos medios de comunicación empezaron a ofrecer una opción diferente: una suscripción sin publicidad. Este cambio repentino planteó interrogantes sobre la privacidad en línea y su conformidad con el Reglamento General de Protección de Datos (RGPD).

El RGPD, implementado en abril de 2016, es una legislación integral que busca proteger la privacidad y los datos personales de los ciudadanos de la UE. En relación con el uso de cookies, el RGPD establece requisitos claros sobre el consentimiento informado de los usuarios y su derecho a controlar sus datos personales en línea.

Uno de los principios fundamentales del RGPD es que el consentimiento del usuario debe ser otorgado de manera libre, específica, informada e inequívoca. Esto significa que los usuarios deben tener la opción de aceptar o rechazar el uso de cookies de manera clara y fácil. Sin embargo, al eliminar la opción de rechazar todas las cookies y condicionar el acceso al contenido público a una suscripción sin publicidad, algunos medios podrían estar infringiendo el RGPD.

En concreto, esta práctica podría contravenir varios artículos clave del RGPD:

  1. Artículo 7 – Condiciones para el consentimiento: Este artículo establece que el consentimiento del usuario debe ser libremente otorgado, lo que implica que los usuarios deben tener la posibilidad de aceptar o rechazar el uso de cookies sin sufrir consecuencias adversas, como la denegación de acceso al contenido.
  2. Artículo 25 – Protección de datos desde el diseño y por defecto: Según este artículo, las empresas deben implementar medidas técnicas y organizativas adecuadas para garantizar que solo se procesen los datos personales necesarios para los fines específicos para los que fueron recopilados. Condicionar el acceso al contenido público a la aceptación de cookies podría ser considerado como un procesamiento de datos que no cumple con este principio.

Las empresas que incumplen el RGPD están sujetas a multas que pueden ser muy significativas. Según el artículo 83 del RGPD, las multas pueden ascender hasta el 4% del volumen de negocios anual global de una empresa o hasta 20 millones de euros, lo que sea mayor. Estas multas se aplican en casos de violaciones graves, como el incumplimiento de los principios básicos de procesamiento de datos o la falta de consentimiento válido por parte del usuario.

La guía de cookies de la AEPD

Estos cambios de enero se realizaron a partir de la publicación de las Directrices 05/2020 que aclaraba algunos conceptos de la RGPD, y que añadía algunos patrones que no cumplían con la RGPD, y además explicaban qué patrones sí la cumplirían. En 2022 también se publicaron las Directrices 02/2022 por el que se explicaban algunos patrones en redes social que implicaban el incumplimiento de la RGPD.

Sin embargo la AEPD en Julio de 2023 publicó una nota de prensa en la que indicaban que habían actualizando su guía sobre cookies en base a estas directrices. En esta guía indican lo siguiente:

3.2.10. Posibilidad de denegación de acceso al servicio en caso de rechazo a las cookies

Siguiendo las directrices del CEPD sobre el consentimiento, para que este se dé libremente, el acceso a los servicios y funcionalidades no debe supeditarse a la aceptación por el usuario del uso de cookies. Por ello, no podrán utilizarse los denominados “muros de cookies” que no ofrezcan una alternativa al consentimiento, tal y como se explica a continuación. Este criterio resulta especialmente importante en aquellos supuestos en los que la denegación de acceso impediría el ejercicio de un derecho legalmente reconocido al usuario, por ser, por ejemplo, el acceso a un sitio web el único medio facilitado al usuario para ejercitar tal derecho.

Podrán existir determinados supuestos en los que la no aceptación de la utilización de cookies impida el acceso al sitio web o la utilización total o parcial del servicio, siempre que se informe adecuadamente al respecto al usuario y se ofrezca una alternativa, no necesariamente gratuita, de acceso al servicio sin
necesidad de aceptar el uso de cookies. Conforme establecen las Directrices 05/2020 sobre el consentimiento del CEPD, los servicios de ambas alternativas deberán ser genuinamente equivalentes, y además no será válido que el servicio equivalente lo ofrezca una entidad ajena al editor.

https://www.aepd.es/guias/guia-cookies.pdf

Pero los medios de comunicación debieron dejar de leer en las frases «no necesariamente gratuita, de acceso al servicio sin necesidad de aceptar el uso de cookies», y no se molestaron en leer la directiva, y que por desgracia en la AEPD ni se molestaron en enlazar.

La respuesta del CEPD

El Comité Europeo de Protección de Datos (CEPD) llevó a cabo su última sesión plenaria en Bruselas el 17 de abril, donde emitió un dictamen en respuesta a una solicitud conforme al artículo 64, apartado 2, del Reglamento General de Protección de Datos (RGPD). La solicitud fue presentada por las autoridades neerlandesas, noruegas y de Hamburgo para la protección de datos, y abordó la validez del consentimiento para el tratamiento de datos personales con fines de publicidad comportamental en el contexto de modelos de «consentimiento o pago» utilizados por grandes plataformas en línea.

El presidente del CEPD, Anu Talus, enfatizó la importancia de que las plataformas en línea proporcionen a los usuarios una opción genuina al emplear modelos de «consentimiento o pago». Se destacó que los modelos actuales a menudo llevan a los usuarios a ceder todos sus datos o a pagar por el servicio, lo que resulta en una falta de comprensión de las implicaciones de sus elecciones por parte de la mayoría de los usuarios.

El CEPD concluyó que, en la mayoría de los casos, los modelos de «consentimiento o pago» no cumplen con los requisitos para un consentimiento válido si los usuarios solo tienen la opción entre consentir al tratamiento de datos personales con fines de publicidad comportamental o pagar una tarifa. Se señaló que ofrecer únicamente una alternativa de pago no debe ser la práctica predeterminada para los responsables del tratamiento.

Se instó a las grandes plataformas en línea a considerar proporcionar una «alternativa equivalente» que no implique el pago de una tarifa, y en caso de que se cobre una tarifa por el acceso a esta alternativa, se debe ofrecer una alternativa adicional gratuita sin publicidad comportamental.

El CEPD subrayó que obtener el consentimiento no exime a los responsables del tratamiento de cumplir con todos los principios establecidos en el RGPD, y se proporcionaron criterios específicos a considerar para evaluar la validez del consentimiento. Además, se instó a evaluar el posible desequilibrio de poder entre el individuo y el controlador, así como a considerar las posibles consecuencias negativas para los usuarios que decidan no otorgar su consentimiento.

El presidente del CEPD, Anu Talus, enfatizó la importancia de evitar que el derecho fundamental a la protección de datos se convierta en una característica que las personas tengan que pagar para disfrutar. Además del dictamen emitido, se anunció que el CEPD elaborará directrices más amplias sobre modelos de «consentimiento o remuneración» y colaborará con las partes interesadas en su desarrollo.

Cómo citar una página de internet en formato APA

0

En la era digital, la información está a solo unos clics de distancia. Ya sea que estés realizando un trabajo académico, un informe profesional o simplemente buscando información para enriquecer tus conocimientos, es fundamental saber cómo citar correctamente las fuentes en tus textos. En este artículo, nos enfocaremos en cómo citar una página de internet en formato APA, el estándar ampliamente utilizado en el ámbito académico y científico.

¿Por qué es importante citar correctamente?

Citar correctamente las fuentes no solo es una cuestión de ética académica, sino también de dar crédito a los autores originales y permitir que los lectores accedan a la información de manera verificable. Además, citar adecuadamente fortalece la credibilidad de tu propio trabajo al respaldar tus afirmaciones con fuentes confiables.

Formato APA para citar una página web

Cuando cites una página web en formato APA, es crucial incluir la información necesaria para que otros puedan localizar la fuente con facilidad. Aquí está la estructura básica para citar una página web:

Apellido, Inicial del nombre. (Año). Título de la página. Recuperado de URL

Vamos a desglosar cada elemento:

  • Apellido, Inicial del nombre: Comienza la cita con el apellido del autor, seguido de su inicial. Si no hay autor identificable, puedes omitir este elemento o usar el nombre de la organización responsable del contenido.
  • Año: Indica el año en que la página fue publicada o la última fecha de actualización. Si no hay fecha de publicación, puedes usar la abreviatura «s.f.» (sin fecha).
  • Título de la página: Incluye el título de la página web. Si no hay título específico, puedes utilizar una descripción breve pero precisa del contenido.
  • Recuperado de URL: Finaliza la cita con la URL completa de la página. Asegúrate de que la URL sea precisa y esté activa para que otros puedan acceder a la fuente fácilmente.

Ejemplo de cita en formato APA

A continuación, se presenta un ejemplo de cómo citar una página web utilizando el formato APA:

Smith, J. (2023). Importancia de la conservación del medio ambiente. Recuperado de https://www.ejemplo.com/medioambiente

En este ejemplo:

  • Smith, J. es el autor (o el responsable del contenido).
  • (2023) indica el año de publicación.
  • Importancia de la conservación del medio ambiente es el título de la página web.
  • Recuperado de https://www.ejemplo.com/medioambiente es la URL de la página.

Conclusión

Saber cómo citar una página web en formato APA es esencial para respaldar tus argumentos con fuentes confiables y dar crédito adecuado a los autores originales. Recuerda seguir la estructura proporcionada y prestar atención a los detalles, como la ortografía correcta de los nombres y la precisión de las URL. Al citar correctamente, contribuyes a la integridad académica y profesional, y construyes una base sólida para tus propias investigaciones y trabajos.

Dominando el comando SCP en Linux para transferir archivos: Una guía para usuarios iniciados

0

En el vasto mundo de la administración de sistemas y la transferencia de archivos, el comando «scp" (Secure Copy Protocol) emerge como una herramienta fundamental. Si eres nuevo en el mundo de la administración de sistemas o simplemente estás comenzando tu viaje en el mundo de la línea de comandos, «scp" es una herramienta que pronto se convertirá en tu mejor aliado. En este artículo, exploraremos qué es «scp«, cómo funciona y cómo puedes empezar a usarlo para transferir archivos de forma segura entre sistemas remotos.

¿Qué es SCP?

«scp» es un comando utilizado en sistemas basados en Unix y Unix-like que permite la transferencia segura de archivos entre sistemas locales y remotos a través de SSH (Secure Shell). Utiliza el mismo protocolo de autenticación y encriptación que SSH, lo que garantiza que tus datos se transfieran de manera segura a través de redes inseguras como Internet.

Sintaxis Básica de SCP

La sintaxis básica de «scp" es bastante sencilla. La estructura general del comando es la siguiente:

scp [opciones] origen destino
  • origen: Especifica la ubicación del archivo o directorio que deseas transferir. Puede ser un archivo local o remoto.
  • destino: Especifica la ubicación a la que deseas transferir el archivo o directorio. Al igual que el origen, puede ser una ubicación local o remota.

Ejemplos Prácticos

Copiar un Archivo Local a un Servidor Remoto

Para copiar un archivo desde tu sistema local a un servidor remoto, puedes usar el siguiente comando:

scp archivo.txt usuario@servidor:/ruta/destino

Esto copiará el archivo «archivo.txt" al servidor remoto especificado en la ruta «/ruta/destino«, autenticándote con el nombre de usuario usuario.

Copiar un Archivo Remoto a tu Sistema Local

Si deseas copiar un archivo desde un servidor remoto a tu sistema local, simplemente invierte el orden del origen y el destino:

scp usuario@servidor:/ruta/archivo_remoto.txt /ruta/destino_local

Esto copiará el archivo «archivo_remoto.txt" del servidor remoto a la ruta local «/ruta/destino_local«.

Opciones Útiles de SCP

scp ofrece una variedad de opciones que puedes utilizar para personalizar tu experiencia de transferencia de archivos. Algunas de las opciones más útiles incluyen:

  • -r: Permite la copia recursiva de directorios y sus contenidos.
  • -P puerto: Especifica el puerto SSH a utilizar en lugar del puerto estándar (22).
  • -v: Habilita el modo verboso, lo que proporciona una salida detallada para depurar problemas.
  • -C: Habilita la compresión durante la transferencia para mejorar el rendimiento en conexiones lentas.

Conclusiones

«scp" es una herramienta poderosa y fácil de usar para transferir archivos de forma segura entre sistemas remotos y locales. Con su integración con SSH, puedes estar seguro de que tus datos se transfieren de manera segura en todo momento. A medida que te familiarices más con la línea de comandos y la administración de sistemas, «scp» se convertirá en una herramienta indispensable en tu caja de herramientas.

Cómo copiar y restaurar un repositorio Subversion en Linux

0

Subversion es un software de control de versiones que precedió a Git, y que en su momento disponía del monopolio de este tipo de software.

Debido a que aun quedan algunos repositorios en Subversion (el mismo WordPress aun lo usa), es posible que puedas verte en la situación de disponer de código legado que aun use este CVS.

Si has llegado hasta aquí, bien porque el repositorio de Subversion te ha dado un error y quieres restaurar un backup de tu repositorio, o bien porque estás moviendo el repositorio a una nueva máquina, o simplemente porque quieres asegurarte de no perder los datos, te voy a indicar cómo realizar una copia o backup de tu repositorio de Subversion y restaurarlo donde lo necesites.

Realizar una copia de respaldo (backup) de un repositorio Subversion usando «svnadmin dump»

El comando «svnadmin dump» es el que realizará el trabajo por nosotros. creará un fichero de los datos del repositorio.

svnadmin dump [ruta_del_repositorio] > [nombre_del_fichero_de_respaldo]

Por ejemplo, para realizar un backup del repositorio localizado en la ruta /var/repos/mi_repo habría que ejecutar el siguiente comando:

svnadmin dump /var/repos/mi_repo > backup_mi_repo.dump

Restaurar una copia de respaldo (backup) desde un fichero usando «svnadmin load»

El funcionamiento del comando «svnadmin load» es igual de simple:

svnadmin load [ruta_del_repositorio] < [nombre_del_fichero_de_respaldo]

Por ejemplo, si quisieramos restaurar la copia del repositorio en el fichero anterior al nuevo repositorio que se encuentra en /var/repos/mi_nuevo_repo:

svnadmin load /var/repos/mi_nuevo_repo < backup_mi_repo.dump

Este ejemplo considera que el directorio en el que se restaura la copia es un repositorio nuevo, creado con el comando:

svnadmin create /var/repos/mi_nuevo_repo

Realizar una copia de respaldo (backup) incremental usando «svnadmin dump»

Si realizas backups frecuentes es posible que solo te interesen los cambios realizados desde la última vez que realizaste el backup, para ello la mejor forma es usar el parámetro «–incremental» y especificar la revisión desde la que comenzar (y terminar) usando «-r»:

svnadmin dump [ruta_del_repositorio] --incremental -r [revision_inicio]:[revision_final] > [nombre_del_fichero_de_respaldo]

El parámetro «-r» puede tener como valor solo la revisión de inicio, o bien usar «HEAD» para la revisión final:

svnadmin dump /var/repos/mi_repo --incremental -r 10:HEAD > backup_mi_repo_incremental.dump

Restaurando una copia de respaldo (backup) usando «svnadmin load»

No es diferente a la restauración de la copia de respaldo normal:

svnadmin load /var/repos/mi_nuevo_repo < backup_mi_repo_incremental.dump

Comprimir el fichero de la copia de respaldo

Esto se puede hacer fácilmente con «gzip»:

gzip backup_mi_repo.dump

Este comando generará un fichero con extensión «.gz» y un tamaño mucho más reducido respecto al fichero original, que fácilmente pueden ser cientos de gigabytes.

Para descomprimir el fichero hay que utilizar «gunzip»:

gunzip backup_mi_repo.dump.gz
Cron Job WordPress

Versión 0.5 del plugin para WordPress Collapsing Category List

1

En esta nueva versión del plugin se ha añadido una nueva página de administración para el plugin, que podéis encontrar en el menú Settings (Ajustes)/Collapsing category list.

Desde ella podréis activar una nueva funcionalidad para poder limitar el número de categorías y subcategorías que se pueden seleccionar en el listado de categorías al crear o modificar un post. Se puede indicar más de un nivel de subcategorías y el número de categorías máxima que se pueden seleccionar. Si lo dejáis a cero no habrá límite; si indicáis una sola categoría o subcategoría el checkbox se convertirá en un radio button para cada categoría de ese nivel. Si se supera el número de categorías que se pueden seleccionar, el usuario verá un mensaje indicando que este límite sea superado, impidiéndole que pueda seleccionar más categorías.

Hasta la próxima versión.

 

Cron Job WordPress

Versión 0.4 del plugin para WordPress Collapsing Category List

0

Poquito a poco se va aumentando el número de características y utilidades que el plugin ofrece. En esta ocasión se ha añadido la posibilidad de mantener colapsadas las categorías cuando se muestra la página de un post al usuario. Además se han corregido varios bugs.

Como novedad para los desarrolladores de WordPress que usen el plugin, se han añadido los archivos de traducción para español e inglés (que ya era hora), y la compatibilidad para poder traducir el plugin a cualquier otro idioma.

Logo Cassandra

Cassandra 2.x y PHP para desarrolladores SQL: El modelo de datos

0

Si has trabajado con una base de datos relacional tal vez te resulte algo confuso al principio comprender el modelo de datos que usa Cassandra, intentaré ser lo más claro posible, pero si te surgen preguntas no dudes en dejarlas en los comentarios.

 

Columns

El elemento más básico de la base de datos Cassandra es la columna, se compone de tres elementos: nombre de la columna, valor y timestamp. Os muestro un ejemplo como un array:

array(
  "nombre" => "email",
  "valor" => "webmaster@localhost.com",
  "timestamp" => time(),
);

Cassandra añade el timestamp automáticamente, con lo que otra forma de representarlo es como un conjunto clave:valor:

nombre_columna:valor

Super columnas (En desuso) y Columnas Compuestas

Las super columnas son un conjunto de columnas con sus correspondientes valores:

array(
  "nombre_superColumna" => array(
    "usuario1" => array(
      "nombre" => "email",
      "valor" => "webmaster@localhost.com",
      "timestamp" => time()
    ),
    "usuario2" => array(
      "nombre" => "email",
      "valor" => "email@email.com",
      "timestamp" => time()
    ),
    "usuario3" => array(
      "nombre" => "email",
      "valor" => "otroemail@otroemail.com",
      "timestamp" => time()
    ),
  ),
)

Las super columnas tienen algunos problemas de rendimiento, sobre todo al ordenarlas. Para solucionarlo se crearon las columnas compuestas que se benefician de los comparadores compuestos, y sobretodo, de CQL 3 (Cassandra Query Language).

Familia de columnas

Es el conjunto de columnas o super columnas. Me explico:

Las column Family o  familia de columnas se puede configurar de dos maneras: como Super o como Standard. Si se elige la opción Standard, en la column family solo se podrán guardar columnas, no super columnas. En cambio si la column family está configurada como Super podrá guardar, además de las columnas, las super columnas. Esta flexibilidad permite jugar con la base de datos y adaptarla a nuestras necesidades.

Ejemplo:

array(
  "name" => "ColumnFamily",
  array( "name" => "SuperColumn",
    array( "colums" )
  ),
)

Keyspace

El keyspace es nuestra base de datos, donde alojaremos todas las columFamilies que necesitemos.

Ejemplo:

array(
  "name" => "keyspace",
  array("name" => "columnFamily",
    array(
      [...]
    ),
  ),
)
Ir arriba