lunes, 18 de noviembre de 2024

Emacs en windows: arranque rápido

En windows la carga de emacs implica una demora en windows pero se puede mejorar usando el demonio de emacs y modificar la llamada usando el demonio. Para esto seguimos los pasos:

1. En el cmd ubicar emacs instalado 

where emacs.exe 

en mi caso lo tengo en : C:\ProgramData\chocolatey\bin\emacs.exe

2. Ingresar a la carpeta "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup" y crear un shortcut apuntando a "C:\ProgramData\chocolatey\bin\runemacs.exe --daemon" (carpeta ubicada del paso anterior)

Esto iniciara emacs daemon al iniciar windows para precargar emacs. 

3. Modificamos el lanzador de "%APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs" y editamos el shortcut emacs.exe para que apunte a ejecutar "C:\ProgramData\chocolatey\bin\emacsclientw.exe -c -n -a C:\ProgramData\chocolatey\bin\runemacs.exe"

Con esto tenemos emacs utilizando la carga del emacs daemon. 


Listo, es necesario reiniciar y ejecutar emacs.

martes, 9 de enero de 2024

Configure Grafana and Slack

To configure Grafana to send alerts to Slack, you need to set up a notification channel in Grafana and configure it to use the Slack integration. Here are the steps to configure Grafana to contact Slack:


Create a Slack Workspace:

If you don't already have one, create a Slack workspace where you want to receive Grafana alerts. You can sign up for Slack at https://slack.com/.


Set Up an Incoming Webhook:

To allow Grafana to send messages to Slack, you'll need to create an Incoming Webhook integration in your Slack workspace. Here's how:

Go to your Slack workspace.

Click on your workspace name in the top-left corner and select "Settings & administration" > "Manage apps."

In the "Custom Integrations" section, click on "Incoming Webhooks."

Activate incoming webhooks if they are not already enabled.

Scroll down and click on "Add New Webhook to Workspace."

Select a channel where you want to receive Grafana alerts.

Click "Authorize."

You'll be provided with a Webhook URL. This URL is required for Grafana to send messages to Slack.


Configure a Notification Channel in Grafana:

Log in to your Grafana instance.

Click on the gear icon (⚙️) in the left sidebar to open the "Configuration" menu.

Click on "Notification channels" under the "Alerting" section.

Click on "New Channel" to create a new notification channel.

Configure the channel settings:

Name: Give your channel a descriptive name (e.g., "Slack Alerts").

Type: Select "Slack" from the dropdown menu.

Send reminders: Enable this option if you want to send reminders for unresolved alerts.

Include image: Enable this option to include an image in your alerts (optional).

API URL: Paste the Slack Webhook URL you obtained in step 2 here.

Username: Set the username that will appear in Slack notifications.

Channel: Enter the Slack channel or user where you want to send alerts (e.g., "#general").

Click "Save."

Test the Notification Channel:

After creating the notification channel, you can test it to ensure that alerts are successfully sent to Slack. Click on the "Send Test" button in the notification channel settings to send a test message to Slack. If everything is set up correctly, you should see a message in your Slack channel.


Set Up Alerts in Grafana:

To send alerts to the Slack notification channel, you need to configure alert rules in Grafana. Create or edit a dashboard, add an alert panel, and configure the alert conditions as needed. Then, select the Slack notification channel you created as the "Send to" option for the alert.


Now, when the alert conditions are met, Grafana will send notifications to your specified Slack channel using the configured notification channel.

viernes, 20 de mayo de 2022

Mostrar la rama GIT en Powershell

 Algo muy util en los terminales para los desarrolladores es que se muestre el branch actual de la carpeta en la que uno se encuentra.

Powershell es un terminal para windows muy poderoso el cual es facil de configurar para que podamos añadir el nombre de repositorio en el prompt. Para esto necesitamos ejecutar 2 líneas de comandos en Powershell:

(new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/psget/psget/master/GetPsGet.ps1") | iex

Add-PoshGitToProfile


La primera línea se encarga de descargar el módulo necesario, lo instala y lo ejecuta.

La segunda línea se encarga de guardar la configuración por defecto cada vez que se inicie el terminal. 

viernes, 19 de noviembre de 2021

Emacs: ejecutar comandos linux en windows (rgrep)

 En Emacs para windows algunos comandos se ejecutan esperando que el sistema sea linux por tanto fallan. 

Para solucionar esto debemos realizar instalaciones adicionales. 

En nuestro caso vamos a probar con el comando rgrep que depende de los comandos grep y find que en windows no encontramos. 

Para esto debemos realizar los siguientes pasos:

1. Primero vamos a http://gnuwin32.sourceforge.net/packages.html donde podemos encontrar los comandos de linux para ser ejecutados en windows. De esta web descargamos Grep y FindUtils y los instalamos. 

Por defecto este software se instalara en: C:\Program Files (x86)\GnuWin32

2. En nuestro archivo de configuración .emacs añadimos las siguientes lineas:

(setq find-program "\"c:\\Program Files (x86)\\GnuWin32\\bin\\find.exe\"")

(setq grep-program "\"c:\\Program Files (x86)\\GnuWin32\\bin\\grep.exe\"")


Con esto le estamos indicando a Emacs que use como programas para buscar los nuevos comandos ingresados.

3. Probamos realizando una búsqueda M-x rgrep 
  • Indicamos los archivos en donde buscaremos [ENTER]  Podemos usar comodines como *.org que buscara en todos los archivos que tengan extensión .org
  • Indicamos el texto a buscar [ENTER]
  • Indicamos la carpeta raíz desde donde buscaremos [ENTER]
Listo, emacs nos devolverá la lista de archivos con la línea que tiene el texto buscado. 

miércoles, 17 de noviembre de 2021

Emacs Doom y swiper

Encontré swiper (https://github.com/abo-abo/swiper) un buscador alternativo a isearch que permite mostrar todos los resultados de búsqueda. 

Para implementarlo en emacs necesitamos configurar los siguiente:

1. En .doom.d/packages.el añadimos el paquete a instalar

(package! swiper)

2, En .doom.d/init.el en la sección de :editor añadimos
swiper

3. En .doom.d/config.el añadimos el shortcut para las búsquedas:
(global-set-key (kbd "C-s") #'swiper-isearch)

4. Ejecutamos .emacs.d/bin/doom.cmd sync y reiniciamos emacs 

Listo, con esta configuración podremos realizar búsquedas de una forma mas efectiva:



python: errno 5 input/output error

 Recientemente tuve el error "errno 5 input/output error" al ejecutar una aplicación en python:

# python3 src/main.py &

El cerrar sesión en el servidor y dejando la ejecución en segundo plano python intenta escribir la salida del comando en la pantalla, pero al cerrar sesión genera el fallo. 

Lo debemos realizar en ese caso es enviar la salida a algún archivo (si buscamos guardar un log) o a /dev/null 

# python3 src/main.py >> /dev/null &

o 

# python3 src/main.py >> /tmp/miapp.log


martes, 23 de marzo de 2021

Instalar emacs doom en windows

 Hoy vamos a cambiar nuestro spacemacs a Doom, la razón principal es velocidad. 

0. Como pre-requisitos necesitamos tener emacs, git cmd y ripreg 

En mi caso emacs se instaló en: C:\Program Files\Emacs\x86_64\bin

En mi caso instale Ripreg en C:\Program Files (x86)\ripgrep-12.1.1-x86_64-pc-windows-msvc

1. Añadimos las variables de entorno

HOME: /Users/[USUARIO]

en PATH añadimos: C:\Program Files\Emacs\x86_64\bin y C:\Program Files (x86)\ripgrep-12.1.1-x86_64-pc-windows-msvc

2. Clonamos Doom

En Git CMD entramos a la carpeta: C:\Users\[USUARIO] y clonamos el proyecto

git clone --depth 1 https://github.com/hlissner/doom-emacs .emacs.d

con esto se debió crear la carpeta: C:\Users\[USUARIO]\.emacs.d

2. Iniciamos la instalación

Seguimos en Git CMD y ejecutamos la instalación:

.emacs.d\bin\doom.cmd install

En este punto debemos de tener un poco de paciencia ...

Listo, ya tendremos nuestra emacs con doom

viernes, 1 de mayo de 2020

spacemacs Package undo-tree is unavailable. Is the package name misspelled?

Si al iniciar la carga de spacemacs nos aparece el mensaje  "Package undo-tree is unavailable. Is the package name misspelled?" quiere decir que no tenemos acceso a una fuenta de paquetes, para habilitar el acceso ejecutamos los siguientes pasos:

1. Editar el archivo .spacemacs cambiando el valor del parámetro dotspacemacs-elpa-https de 1 a nil, si el parámetro  dotspacemacs-elpa-https esta comentado lo descomentamos.

2. Añadir la llave ELPA:
sudo gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40 

3. Reiniciamos emacs. 

lunes, 9 de julio de 2018

Slackware post-instalación

Luego de la instalación quizá no nos guste Slackware desde consola. Vamos a realizar algunos cambios que mejorarán el uso de Slackware después de la instalación.

1. Arranque rápido

Al terminar la instalación e iniciar Slackware por primera vez el Lilo toma 2 minutos de espera. Vamos a disminuir este tiempo a 3 segundos. Para esto debemos editar el archivo /etc/lilo.conf
#nano /etc/lilo.conf
Buscamos la sección
timeout = 1200
y la cambiamos por
timeout = 30

Guardamos el archivo (Ctrl+O) y salimos (Ctrl+X)

luego ejecutamos el programa
#lilo
Con esto se carga la nueva configuración, y en el siguiente reinicio tendremos la carga rápida.

2. Crear un usuario 

Es critico para la seguridad usar el usuario root por los permisos que tiene, así que es recomendable tener un usuario no administrador, que se encargue de usar el sistema como un usuario de escritorio. Para esto vamos a crear un usuario llamado "warhammer" (pueden darle otro nombre)
#adduser warhammer
Llenamos los datos que nos piden
Con esto ya debemos de tener creado el usuario

Vamos a darle permisos en sudoers para poder realizar actividades de administrador usando el comando sudo.
#nano /etc/sudoers
en la sección "User privilege specification" añadiremos a nuestro usuario
warhammer ALL=(ALL) ALL
Guardamos y salimos (Ctrl+O Ctrl+X)

3. Iniciar con interface gráfica XFCE 

Para hacer amigable el inicio con una interface gráfica modificaremos el archivo /etc/inittab
#nano /etc/inittab
Buscamos la sección
id:3:initdefault:
Cambiaremos el valor 3 por 4
id:4:initdefault:

Guardamos y salimos (Ctrl+O Ctrl+X)

4. Reiniciamos para cargar la nueva configuración
#shutdown -r 0

Ahora a disfrutar de Slackware con una interface gráfica y un usuario de escritorio. 

instalar Slackware 14.2

Hoy vamos a realizar una instalación básica de Slackware.

Como entorno para la instalación tenemos un PC con las siguientes caracteristicas
- Procesador Core 2 Duo
- 1GB de Ram
- 1HD de 64GB
- Teclado español latinoamericano

0. Preparativos previos:

Descargamos la ISO de slackware de
https://mirrors.slackware.com/slackware/slackware-iso/slackware64-14.2-iso/slackware64-14.2-install-dvd.iso
esta ISO pesa 2.6GB la quemamos en un DVD

1. Inicio

Para iniciar debemos de configurar nuestro BIOS para que cargue desde la unidad DVD e iniciar el booteo con el DVD.

Tendremos una pantalla sencilla y muy agradable:
En esta parte podemos indicar como iniciaremos el instalador, quizá necesitemos algunas características especiales para soportar dispositivos, o solo haremos un testeo de memoria. En otro post explicaremos como usar esto a mayor detalle. 

Por ahora daremos [ENTER]

2. Teclado

Tendremos una pantalla para la selección del teclado, para seleccionar el teclado es necesario poner el valor 1 [ENTER] en : 

Luego debemos seleccionar la opción correspondiente a nuestro teclado de la lista:

Al seleccionar la correcta configuración del teclado, puedes probar el mismo en el cuadro de texto que aparece a continuación. Si todo esta bien presionas [ENTER] 1 [ENTER], si todavía no es el teclado que te corresponde regresas a la pantalla de selección escribiendo [ENTER] 2 [ENTER]. 

En mi caso seleccione qwerty/la-latin1.map

3. Particionar el disco

En esta parte, primero nos pedirá loguearnos con usuario root (sin clave) y tendremos a linea de consola a nuestra disposición. 

Para particionar usaremos la herramienta cfdisk, pero si tienes mas experiencia utiliza fdisk (no hay problema
# cfdisk

- La primera parte indica el tipo de LABEL que pondremos al disco, pongamos por defecto DOS[ENTER], tendremos una pantalla como la siguiente:

Bueno ahora crearemos una estructura para nuestros disco duro, calculamos los tamaños de las unidades a crear de acuerdo a nuestra necesidad.
- Por defecto separa el tamaño de 2 x RAM para una memoria de intercambio SWAP
- Por defecto separamos 10GB para los archivos base de sistema. Slackware corre en 7GB con todos los paquetes instalados. 
- Si utilizaremos el disco para oficina, el resto de espacio debemos usarlo para la unidad que apunte a  /home (archivos de los usuarios), también aplica si usaras la máquina par servidor FTP
- Si usaremos el disco para un servidor de base de datos, webserver , la carpeta /var debe ser la de mayor tamaño.
Nosotros la usaremos para escritorio por tanto el particionado será de la siguiente manera:
- root: 10GB
- SWAP: 2GB  
- home: 52GB o restante, hay un espacio que ocupa la tabla de particiones y lo restante puede ser menor. 

Partición root:
new [ENTER] -> partition size: 10G [ENTER]-> primary [ENTER] 
type: 83 LINUX [ENTER] 
Bootable [ENTER]


Partición swap
FreeSpace
new [ENTER] -> partition size: 2G [ENTER] -> primary [ENTER]
type: 82 LINUX SWAP[ENTER]

Partición home
FreeSpace
new [ENTER] -> partition size: 52G [ENTER] -> primary [ENTER]
type: 83 LINUX [ENTER]

Tendremos al finalizar la siguiente estructura:


Luego escribiremos el disco con los cambios, con la opción write [ENTER] yes [ENTER], Si todo va bien tendremos el mensaje:
the partition table has been altered.

Luego de esto saldremos de cfdisk con quit[ENTER]

4. Formateo y distribución de unidades


Regresando a  línea de comandos con el usuario root y teniendo los requisitos listos debemos de iniciar la instalación con :
# setup[ENTER]

Vamos a iniciar con la opción 3 ADD SWAP [ENTER]

El instalador debe mostrar por defecto la unidad marcada como SWAP. Nos permite verificar si debemos ejecutar mkswap en la unidad, en este caso pondremos YES[ENTER]

Listo tenemos nuestra SWAP. Presionamos OK[ENTER]
Ahora debemos de seleccionar nuestra unidad root (raiz o /), como recordamos en el inicio indicamos que sería el de 10G (adicionalmente cuando lo particionamos lo marcamos como booteable). Presionamos SELECT[ENTER]
Recomiendo formatear con la segunda opcion (CHECK), sobre todo con los discos que ya tienen un tiempo de vida medio, así verificamos los bloques dañados. Si es un disco nuevo podremos dar la primera opción. 

Presionamos OK [ENTER]
Nos toca seleccionar el sistema de archivos, por defecto tenemos seleccionado la ultima versión estable de ext4. Presionamos [OK]

El instalador de slackware detectara la otra partición y nos preguntara para que la usaremos:
Presionamos SELECT[ENTER], luego nos indicara para formatear la unidad. Por defecto la formateamos y nos indicará a que carpeta lo vamos a apuntar
En esta sección pondremos /home  OK[ENTER]
Luego nos dará un resumen de los cambios que se van a realizar, solo los aceptamos [OK]

5. Instalación

En esta parte vamos a instalar los paquetes en nuestro sistema. Primero debemos seleccionar la unidad desde donde instalaremos:
Como lo  estamos instalando desde DVD, seleccionamos la primera opción y presionamos OK[ENTER]
Nos indicará si deseamos hacer una revisión del disco, lo ponemos por defecto la primera opción y presionamos OK[ENTER]

En esta parte tendremos que escoger los paquetes a instalar, podemos dejarlo por defecto, pero como tengo una PC con pocos recursos, voy excluir o desmarcar lo siguiente:
- KDE
- Games

Listo, presionamos OK[ENTER]
Podemos tener mayor control de lo que vamos a instalar en esta ventana. Por ahora seleccionaremos la primera opcion FULL -> OK [ENTER]

Y arrancan... comienza la instalación. Podemos dejar esto corriendo hasta que termine. 

6. Configurar el Arranque

Luego de terminada la instalación de paquetes nos preguntara si deseamos crear un usb booteable, por el momento nos saltamos este paso Skip OK[ENTER]


Luego tendremos que seleccionar la configuración del lanzador de Linux (lilo) dejamos la configuración por defecto 

simple OK[ENTER]

De igual forma en la selección de la interface que nos mostrara al iniciar el linux, seleccionamos standard OK[ENTER]

En el siguiente paso nos preguntará si queremos añadir parámetros adicionales al kernel, lo dejamos vacío y continuamos. 

Luego tendremos que activar el UTF-8 para las consolas, en la pantalla siguiente ponemos Yes[ENTER]

También tendremos que indicar donde instalar el arrancador, lo dejamos por defecto con MBR OK[ENTER]


Ahora debemos de seleccionar como esta conectado el mouse, en mi caso USB


OK[ENTER] y para configurar la linea que carga el mouse YES[ENTER]

7. Red y servicios

En esta parte vamos a configurar la red y los servicios:


Nos pedirá llenar algunos valores como:
hostname: mipc.com
domain: mipc.com

Luego podremos activar algunos servicios o demonios que queremos cargar al iniciar la PC. La dejamos por defecto. 

Luego nos preguntara sobre "Console font configuration" lo dejamos por defecto NO OK[ENTER]

Al seleccionar el tipo de configuración del reloj, lo dejamos por defecto. 

Luego debemos de escoger la zona horaria, en mi caso America/Lima OK[ENTER]


8. Escritorio de trabajo 

Vamos a configurar el escritorio de trabajo en el siguiente paso. Por ahora usaremos xinitrc.xfce OK[ENTER]

Finalmente asignaremos el password al usuario root 
el usuario root sera nuestro administrador, asi que no olvidemos el password. YES[ENTER]
Ingresamos y reingresamos el password y tendríamos terminada la instalación. OK[ENTER]


Listo , hemos regresado al menú de pasos y aquí debemos escoger EXIT OK[ENTER] y extraer el DVD de instalación. 
A la pregunta de reboot, reiniciamos el sistema. 


No debemos esperar el tiempo que dice abajo, presionamos enter y ya debe iniciar el arranque de Slackware. 



lunes, 25 de junio de 2018

Emacs: Encriptar archivos

Si necesitas seguridad adicional en tus archivos texto o código fuente, puedes usar Emacs como una herramienta de encriptado de archivos de manera muy fácil, para esto tenemos 2 caminos:

- Usando org-mode, lo archivos .org se pueden encriptar fácilmente añadiendo la extensión .gpg y luego una clave cuando emacs nos solicite la clave.

- Sin org-mode, al archivo que quieres encriptar debes añadirle en su primera linea los siguiente:
# -*- mode:org; epa-file-encrypt-to: ("me@mydomain.com") -*-

Luego al guardarlo le añadimos la extensión .gpg . Luego de esto el sistema lo procesara como un archivo org-mode encriptado y pedirá la clave.

PD: me@mydomain.com: debe ser el propietario de la encriptación, pongan allí su correo.


Emacs: Hacer consultas a base de datos en org-mode

El modo Org-mode de emacs es una herramienta de productividad increíble. Bajo esta interface es posible realizar consultas a base de datos, el resultado de estas pueden mostrarse inline en el mismo archivo .org. Para esto debemos de configurar algunas cosas pequeñas en Emacs.

1. Vamos a modificar nuestro archivo .emacs y añadir los lenguajes soportados
(org-babel-do-load-languages
'org-babel-load-languages
'((sql . t)))
;; add additional languages with '((language . t)))

(org-babel-do-load-languages
'org-babel-load-languages
'(
(emacs-lisp . t)
(org . t)
(sh . t)
(C . t)
(python . t)
(gnuplot . t)
(octave . t)
(R . t)
(dot . t)
(awk . t)
(sql . t)
))

2. Para poder conectarnos a una BD nuestro archivo .org tendremos que añadir algunos tags:
#+name: result-list
#+header: :engine mysql
#+header: :dbhost localhost
#+header: :dbuser mydbuser
#+header: :dbpassword mydbpass
#+header: :database mydatabase
#+begin_src sql :exports results
select * from table1 order by 1 desc;
#+end_src

#+RESULTS: result-list

Como observamos debemos de cambiar los valores :
engine: el motor de base de datos, en nuestro caso usamos mysql
dbhost: el host de la base de datos, en nuestro caso localhost o 127.0.0.1
dbuser: el usuario de base de datos
dbpass: la clave del usuario de base de datos
database: la base de datos a la que nos conectamos
name: indica el nombre del bloque de consulta, si observan en RESULT hay uno con el mismo nombre, quiere decir que el resultado de ejecutar el SQL se verá en el bloque RESULT
begin_src: esta es la consulta SQL que ejecutaremos

Para ejecutar la consulta nos ubicamos dentro del bloque del código y presionamos Ctrl+c Ctrl+c.

Mayor detalle en : https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-sql.html

Linux: Comparar 2 archivos binarios

En esta ocasión vamos a verificar que un archivo es igual a otro, pero vamos a compara archivos binarios.

En mi caso he copiado un archivo ISO de un disco duro extorno a la PC y quiero verificar si se ha copiado correctamente. Para esto usamos diff <archivo1> <archivo2>

# diff /media/usb/archivo.iso ./archivo.iso

Si diff no envía mensaje de diferencia el archivo es idéntico, en caso contrario son distintos.


Linux: Crear un USB booteable

En esta ocasión vamos a crear un USB booteable partiendo de una ISO, esto sobre nuestro querido GNU/Linux.

1. Primero vamos a detectar el USB, para esto insertamos el USB en la PC y en consola ejecutamos
# sudo fdisk -l 
Nos aparecerá la unidad añadida, en mi caso es una unidad de 8G y formato FAT32


Como observamos nuestro dispositivo es /dev/sdb1, ahora desmontamos el dispositivo para poder iniciar el copiado.
# umount /dev/sdb1

2. Comenzamos a realizar la copia de la imagen ISO usando el comando dd, uno de los parámetros principales serán if (archivo de entrada o ISO) y of (archivo de salida o unidad USB)
# sudo dd bs=4M if=TuArchivo.iso of=/dev/sdb
Si observan el valor de of no esta completo /dev/sdb , le falta el valor 1 (/dev/sdb1) esto indica que estamos apuntando a toda la unidad y no a una partición de esta.

Ahora debemos esperar un poco hasta que se termine el copiado del archivo.

PD. Para crear un USB booteable con Windows 10 es necesario usar WoeUSB.

miércoles, 18 de noviembre de 2015

Revisar IPs en el Log de Apache para detener ataques de denegación de servicio

Como parte del mantenimiento de servidores web es necesario hacer revisión del número de accesos de los usuarios a nuestro servidor web para detectar un ataque de denegación de servicio. Para esto veremos como revisar el Log de nuestro servidor web Apache.

Para realizar la revisión buscaremos las IPs que tienen mas de 500 visitas a nuestro portal, para luego bloquearlas. Esto bajo el supuesto que las IPs que pasan las 500 visitas están realizando ataques a nuestra web. (Puede tomar otro valor mayor o menor según como Ud. considere)

Para esto ejecutamos las siguientes líneas.

FILE=/var/log/httpd/access_log;
 for ip in `sudo cat $FILE |cut -d ' ' -f 1 |sort |uniq`;
 do { COUNT=`sudo grep ^$ip $FILE |wc -l`;
 if [[ "$COUNT" -gt "500" ]]; then echo "$COUNT:   $ip";
 fi }; done

La ejecución anterior nos devolverá las IPs con los números de visitas de estas IPs, podemos ayudarnos con una herramienta de Tracking Web  ( como http://www.ip-tracker.org/) para ver cual es el origen de estas IPs y hacer un análisis de que acción tomar con estas IPs. Por ejemplo, si nuestro portal vende productos peruanos a los peruanos, y observamos en los Logs excesivas visitas de Rusia o USA, deberíamos bloquear esas IPs.

Para bloquear las IPs podemos hacerlo actualizando nuestro portal web, específicamente el archivo .htaccess al cual añadiremos las siguientes líneas (donde IPx es la IP del visitante)

order allow,deny
deny from IP1
deny from IP2
...
deny from IP3
allow from all 

lunes, 27 de octubre de 2014

Error instalando RSA en GNU/Linux (libstdc++.so.5)

Al instalar IBM RSA recientemente en GNU/Linux Ubuntu aparece el problema: "libstdc++.so.6 and libstdc++.so.5 not found in LIBRARY PATH" para solucionar el problema seguiremos los siguientes pasos:

Primero instalamos la librería libstdc++.so.5 en ubuntu
$sudo apt-get install libstdc++5 libstdc++5:i386

Luego debemos de crear un enlace simbólico a una carpeta accesible al RSA:

$sudo ln -s /usr/lib/i386-linux-gnu/libstdc++.so.5 /usr/lib32/libstdc++.so.5

Listo, ahora si podemos instalar RSA
$sudo RSA_SETUP/InstallerImage_linux_gtk_x86/install

domingo, 27 de julio de 2014

Virtualbox: Backup and Restore (Disaster Recovery)


Copia de seguridad:

Para sacar una copia de seguridad de nuestra máquina virtual podemos hacer un CRON (Linux) o una TASK (Windows) que ejecute el siguiente script.

#Detenemos la máquina virtual
VBoxManage controlvm "MiVM" savestate
#Removemos un backup anterior
rm MiVM_backup*
#Creamos una copia, exportando la máquina virtual
VBoxManage export "MiVM" -o MiVM_backup.ovf
#Iniciamos la máquina virtual
VBoxManage startvm sdl "MiVM"
#Copiamos el backup a un servidor ssh
scp MiVM_backup* user@ipserver:/carpeta/server



Restaurar una copia de seguridad:

Para importar la copia que hicimos lo podemos hacer ejecutando:

VBoxManage import MiVM.ovf --dry-run

martes, 19 de noviembre de 2013

Oracle Linux 6 + Atheros AR9285

Lamentablemente el kernel de Oracle Linux 6 no tiene soporte para Atheros AR9285 (wireless), tampoco es posible recompilar los modulos de los fuentes ya que mandan un error.

Revisando en varios sitios encontre la recomendación de cambiar el kernel que carga por defecto.

Si revisamos /etc/grub.conf encontraremos otros kernels disponibles en la distribución, el kernel que recomiendo es el de titulo "Oracle Linux Server Red Hat Compatible Kernel", lo podemos mover al inicio de la lista y reiniciamos.

Iniciamos el módulo utilizando:

# modprobe ath9k

Y revisamos si esta levantada la tarjeta
# ifconfig -a

Si todavía tienes problemas recomiendo instalar kmod-compat-wireless de la siguiente manera:

# yum install http://elrepo.reloumirrors.net/elrepo/el6/x86_64/RPMS/kmod-compat-wireless-3.3-2.n.el6.elrepo.x86_64.rpm

y reiniciar.

Con esto ya deberíamos tener levantada la wireless.

viernes, 15 de noviembre de 2013

Instalar OVMM sobre un Oracle Virtual Server

Requerimientos:

Tener instalado un servidor OVM con las particiones:
/ (root) de 16GB
swap de 16GB

Pasos:

1. Crear el hostname de la aplicación

# hostname
el valor mostrado lo añadimos a nuestro archivo /etc/hosts, ya que es necesario para la instalación de OVMM
# echo "127.0.0.1   [HOSTNAME]" >> /etc/hosts

2. Añadir memoria RAM a OVS 

Modificar el archivo /boot/grub/grub.conf 
y asignar el valor de dom0_mem=2048M

3. Modificamos la versión de Oracle 

OVMM necesita una versión de Oracle Linux superior a la de OVS, por tanto es necesario modificar la versión de linux e instalar algunos paquetes adicionales necesarios
# echo "RedHat Enterprise Linux Server release 5.5 (Tikanga)" > /etc/redhat-release 
# cd /etc/yum.repos.d/
# wget http://public-yum.oracle.com/public-yum-e15.repo
# yum list
# yum install xz-devel
# yum install zip 


4. Instalamos OVMM

El proceso es sencillo, en mi caso lo hice desde un DVD.

# mkdir /mnt/dvd
# mount /dev/dvd /mnt/dvd
# cd /mnt/dvd
# ./createOracle.sh
# ./runInstaller.sh 

Listo!!


miércoles, 18 de septiembre de 2013

Android: Generar R.java manualmente

Me encontré recientemente con el error de  que no se genera el archivo R.java. Revisando algunos portales logre llegar a la solución con este pequeño script.

PATH_ANDROID=programs/android-studio/sdk/build-tools/android-4.2.2
PATH_MANIFEST=workspaces/DefaultWorkspace/MyApp/AndroidManifest.xml
PATH_RESOURCE=workspaces/DefaultWorkspace/MyApp/res
PATH_LIBS=workspaces/DefaultWorkspace/MyApp/libs
PATH_GENERATE=workspaces/DefaultWorkspace/MyApp/gen

$PATH_ANDROID/aapt package --non-constant-id -f -m \
-M $PATH_MANIFEST \
-S $PATH_RESOURCE \
-I $PATH_LIBS \
-J $PATH_GENERATE --generate-dependencies


El script esta basado en rutas que crea Eclipse, si usas otro IDE puedes cambiar las rutas a las que se ajusten a tu IDE.

Suerte.

(Para hacerlo en Eclipse de forma visual, botón derecho sobre el proyecto -> Android Tools -> Fix project properties)

Emacs en windows: arranque rápido

En windows la carga de emacs implica una demora en windows pero se puede mejorar usando el demonio de emacs y modificar la llamada usando el...