viernes, mayo 22, 2015

Ejecutar en segundo plano Maquinas Virtuales VirtualBox al arrancar sistema Linux

Tengo 2 maquinas virtuales windows en las que estoy desarrollando unas modificaciones.  El acceso a las VMs es solo para tener el servicio de SQL Server y IIS.

Como me resulta tedioso abrir VirtualBox y despues encender las VMs manualmente y ademas tener ahí las pantallas de las maquinas sin usar, ocupando espacion en mi monitor.

He encontrado en http://askubuntu.com/questions/57220/start-vboxheadless-vm-at-startup la manera de cargar en automatico las VMs de VirtualBox al iniciar el sistema.

Paso 1: Crear archivo dentro de /etc/init.d

sudo vim /etc/init.d/StartVM

Paso 2: Pegar el siguiente código, adecuar segun tus necesidades. 


#! /bin/sh
# /etc/init.d/VM
#
#Edit these variables!
VMUSER=pixelead0
case "$1" in
  start)
    echo "Starting VirtualBox VM DevSQLServer ..."
    sudo -u $VMUSER VBoxManage startvm DevSQLServer --type headless
    echo "Starting VirtualBox VM DevIIS ..."
    sudo -u $VMUSER VBoxManage startvm DevIIS --type headless
    ;;
  stop)
    echo "Saving state of Virtualbox VM DevSQLServer ..."
    sudo -u $VMUSER VBoxManage controlvm DevSQLServer savestate
    echo "Saving state of Virtualbox VM DevIIS ..."
    sudo -u $VMUSER VBoxManage controlvm DevIIS savestate
    ;;
  *)
    echo "Usage: /etc/init.d/VM {start|stop}"
    exit 1
    ;;
esac

exit 0

Paso 3: Dar permiso de ejecución al script

 sudo chmod +x /etc/init.d/StartVM

Paso 4: Agregar script en el arranque del sistema.

 sudo update-rc.d StartVM defaults 99 01


Con esos 4 pasos tendremos levantadas la maquinas virtuales en segundo plano. Si por alguna razón requieres tener acceso a ellas, habilita el acceso remoto y utiliza rdesktop.

#! /bin/sh
rdesktop -u dev -p{PASSWORD} -K -T{nombreVentana} {HOST}  -g 1280x800 -r disk:share={~/Escritorio}


Happy Coding!

domingo, enero 04, 2015

Comprimir varias carpetas en archivos separados. #ShellSripting

Para comprimir varias carpetas en archivos ZIP separados desde la terminal de linux. Nos ubicamos en el directorio que contiene los directorios a comprimir y escribimos.

for i in * ;
do zip ../backup/$i.zip -j $i;
done

Parametro:
-j En mi caso solo requiero que se guarden los archivos sin subdirectorios, para eso utilizo este parametro.


martes, diciembre 30, 2014

Personalizar Sublime Text 3

Les comparto mi configuración perzonalizada para Sublime-Text-3.

Entre las que destacan.
  • Desactivar el ajuste de línea.
  • Cambiar de color las pestañas con archivos modificados.
  • Eliminar espacios en blanco al final de las lineas, despues de guardar.
  • Mostrar en la barra de estado el tipo de codificación
  • Resaltar la linea en donde se encuentra el cursor.
  • Remarcar el recuadro en el minimapa.

Así se ve la configuración personalizada.
Solo hay que entrar en Menú --> Preferences --> Settings - User y pegar las siguientes líneas.



// Settings in here override those in "Default/Preferences.sublime-settings",
// and are overridden in turn by file type specific settings.

{
    // Adds whitespace up to the first open bracket when indenting. Requires
    // auto_indent to be enabled.
    "indent_to_bracket": true,

    // Disables horizontal scrolling if enabled.
    // May be set to true, false, or "auto", where it will be disabled for
    // source code, and otherwise enabled.
    "word_wrap": "false",


    // Controls auto pairing of quotes, brackets etc
    "auto_match_enabled": true,

    // Set to true to draw a border around the visible rectangle on the minimap.
    // The color of the border will be determined by the "minimapBorder" key in
    // the color scheme
    "draw_minimap_border": true,

    // Always visualise the viewport on the minimap, as opposed to only
    // showing it on mouse over
    "always_show_minimap_viewport": true,

    // If enabled, will highlight any line with a caret
    "highlight_line": true,

    // Valid values are "smooth", "phase", "blink" and "solid".
    "caret_style": "smooth",

    // Set to false to not highlight angle brackets. This only takes effect if
    // match_brackets is true
    "match_brackets_angle": true,

    // Controls how the indent guides are drawn, valid options are
    // "draw_normal" and "draw_active". draw_active will draw the indent
    // guides containing the caret in a different color.
    "indent_guide_options": ["draw_active"],

    // Set to true to removing trailing white space on save
    "trim_trailing_white_space_on_save": true,

    // Makes tabs with modified files more visible
    "highlight_modified_tabs": true,

    "show_tab_close_buttons": true,

    // Display file encoding in the status bar
    "show_encoding": true,

    // Display line endings in the status bar
    "show_line_endings": true,
}



HAPPY CODING!

sábado, agosto 02, 2014

Facturacion CFD/CFDI - Programa en python para administrar comprobantes. (PARTE 2)


Desde que entró en vigor la nueva reforma fiscal del SAT a partir del 2014 se ha hecho a un lado la factura en papel, y ahora toda la facturación se hace en electrónico.

Esto se convierte en un problema, porque hay que descargar del correo o desde la pagina del SAT todos los archivos XML y posteriormente hay que 'descifrarlos', en la mayoría de los casos esto se vuelve demasiado tedioso para todos.

En un post anterior, compartí un pequeño script en PHP para Administrar la recepción de CFD/CFDI y renombrar los archivos XML a algo más entendible a la vista.

Días despues nuestro amigo +Ricardo Torres nos ayudó a pasar el mismo script a python y nos explica paso a paso como hacer que funcione en Windows.

Y a partir de su código en github, he creado una versión modificada que hace lo siguiente.

RENOMBRA CFD/CFDI RECIBIDOS.


Este script lee un CFD/CFDI con nombre archivo.xml para después renombrarlo de la siguiente manera:

_RFCReceptor_Fecha_RFCemisor_serie_folio_subtotal_iva_total_descuento_tipoComprobante_version.xml
Donde:
  • RFCReceptor: RFC de quien recibe el cfd/cfdi, es opcional y controlado por la opción -r
  • Fecha: Fecha en que se generó el comprobante
  • RFCemisor: RFC de quien emite el cfd/cfdi
  • Serie y Folio: Numero de Serie y folio de la factura
  • Subtotal, iva, total: Importes de la factura.
  • Descuento: Monto de descuento , es opcional y controlado por la opción -d
  • Tipo de comprobante: Ingreso/Egreso
  • Version: Version del CFDI
---

En esta última versión se agregó la opción para exportar el resultado a un archivo CSV el cual puede abrirse en una hoja de calculo.

Solo hay que descargar la ultima version de RENAMECFD desde gihub.

Una vez en tu maquina, ejecuta en la linea de comandos

python renamecfd.py -r -d -o reporte.csv *.xml



Despues de ejecutar el programa la lista de archivos se ve así:


Ademas te generará un archivo CSV el cual puedes abrir sin problemas en cualquier hoja de calculo.

Si esta información te fue de ayuda compartela.

Deja tus comentarios aca abajo o contactame en twitter @pixelead0

..
HAPPY CODING!

sábado, marzo 23, 2013

MySQL: Consultar llaves foraneas (FK) existentes en una base de datos

Con este script podemos conocer cuales son las llaves foraneas (FK) existentes en una base de datos.


SELECT b.table_name, b.column_name, b.constraint_name,
       b.referenced_table_name, b.referenced_column_name
FROM information_schema.table_constraints a
JOIN information_schema.key_column_usage b
ON a.table_schema = b.table_schema AND a.constraint_name = b.constraint_name
WHERE a.table_schema=database() AND a.constraint_type='FOREIGN KEY'
ORDER BY b.table_name, b.constraint_name;

Fuente: http://stackoverflow.com/questions/2470356/mysql-show-create-constraint

.