23 de julio de 2011

Actualizar debian 5.0 Lenny a debian 6.0 Squeeze en micra

Ha llegado el momento de actualizar el sistema operativo de mi servidor micra deDebian Lenny 5.0 a Debian Squeeze 6.0.
He realizado los siguientes pasos:

1) copia de seguridad de todo el disco duro:
He optado por hacer una imagen en una carpeta compartida en otro
equipo, arrancando micra con BT5, montando la carpeta compartida con smbmount y copiando la imagen vía ethernet:
# dd if=/dev/hda of=/micra_bck/micra160GB.bck
Esto le ha costado 48 horas!!!

2) Ya puestos he ampliado la partición swap, aumentando su tamaño y reduciendo la del sistema.
Ya que cuando cambié el sistema de HD ( Clonando Micra Server ) solo dejé 160MB de swap, lo que es muy poco ya que micra solo tiene 500MB de RAM.

He usado gparted arrancado desde un liveUSB con BT5.
La modificación de las particiones se hace de modo trasparente, sencillo y sin perdida de información

3) Actualizacion del sistema:

3.1) Actualización de los repositorios:
Modificar el fichero /etc/apt/sources.list

He usado estos repositorios para debian 6.0 Squeeze:

deb http://ftp.es.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.es.debian.org/debian/ squeeze main contrib non-free

deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile squeeze/volatile main
deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main

deb http://download.webmin.com/download/repository sarge contrib

#Google Chrome
deb http://dl.google.com/linux/deb/ stable main

3.2) Actualizamos base datos paquetes
# aptitude update

3.3) Actualizamos sistema base
# apt-get upgrade

He mantenido los ficheros de configuración

3.4) Actualizamos la distribución completa
# apt-get dist-upgrade

4) Últimos toques:
- He tenido que desinstalar PostgreSQL-8.3
# aptitude remove postgresql-8.3 postgresql-client-8.3

4.1) No arranca MySQL:

Desinstalo version anterior, instalo nueva MySQL-5.1
# aptitude remove --purge mysql-server-5.0
# aptitude install mysql-server

Modifico /etc/mysql/my.cnf
comento la línea: skip-bdb

.. y MySQL arranca en Debian 6.0 Squeeze

4.2) Actualizo el orden de arranque en GRUB2
Lo mas sencillo es usar starupmanager,
aunque si lo quieres modificar a mano el menu-lst de grub2:

Notas:
- Recomiendan hacerlo a pasos para controlar mejor el proceso.
- Recomiendan usar apt en vezde aptitude

20 de julio de 2011

Copiar una tabla en MySQL


Si quieres copiar una tabla con todos sus registros en una base de datos MySQL:

CREATE TABLE newtable AS (SELECT * FROM oldtable)

esto es muy útil, por ejemplo, para hacer una backup de una tabla antes de probar modificaciones en los campos.

17 de julio de 2011

Macros y Basic LibreOffice


Y que hay de VisualBasic en Linux ...
Pues el paquete LibreOffice tiene la posibilidad de programar macros con diferentes lenguajes como Phyton, JavaScript, BeanShell y Basic LibreOffice.

Aqui hay un Tutorial sobre Macros en LibreOffice con algo de info sobre Basic LibreOffice.

Y en este enlace de OpenOffice:

16 de julio de 2011

VisualBasic: incluir comillas en variables


Para usar las dobles comillas de forma literal se usa Chr(34).

Dim a As String
a = Chr(34) & pp & Chr(34)

VisualBasic: activar SOLVER en macros y código VB


Error de copilacion al intentar ejecutar un macro o código VB con SOLVER:

Para resolver este problema, cree una referencia al complemento Solver. Para crear una referencia al complemento Solver, siga estos pasos:
  1. Inicie el Editor de Visual Basic (presione opción + F11).
  2. En el menú Herramientas, haga clic en referencias.
  3. Seleccione Solver y, a continuación, haga clic en Aceptar. Nota: El archivo Solver.xla se encuentra en Microsoft Office 98 complementos carpeta
La próxima vez que ejecute la macro, no se produce este problema.

Verificar esto en cada fichero Excel con macros SOLVER.

VisualBasic: Traductor de coordenadas de celdas


Hay dos tipos de determinar las celdas:

Cells([nº de fila],[nº de columna])
Range("direccion de la celda")

en el primer caso usa números, v.g.: Cells(1,5)
en el segundo usa letras y números, v.g.: Range("A3")

Hay casos en que es necesario pasar de una notación a otra:

From numbers to address

Private Sub CommandButton1_Click()

Dim fil As Integer
Dim col As Integer
Dim add As String

fil = InputBox("Número de Fila ?")
col = InputBox("Número de Columna ?")

add = Cells(fil, col).Address

ActiveSheet.Cells(1, 1) = "Fila:"
ActiveSheet.Cells(2, 1) = "Columna:"
ActiveSheet.Cells(3, 1) = "Address:"

ActiveSheet.Cells(1, 2) = fil
ActiveSheet.Cells(2, 2) = col
ActiveSheet.Cells(3, 2) = add

End Sub


Para el caso contrario se podrían usar las funciones:

ActiveCell.Row
ActiveCell.Column

VisualBasic: Pegar formula en una celda


Private Sub CommandButton1_Click()

'1)--Este NO funciona--------------'
Hoja1.Cells(5, 3) = "=SUMA(C1:C4)"

'2)--Este NO funciona--------------'
Worksheets("Hoja1").Range("C6").Formula = "=SUMA(C1:C4)"

'3)--Este SI funciona--------------'
Worksheets("Hoja1").Range("C6").Formula = "=SUM(C1:C4)"

'4)--Este SI funciona--------------'
Worksheets("Hoja1").Range("C7").FormulaLocal = "=SUMA(C1:C4)"

'--Detector de formulas----------'
If Cells(5, 3).HasFormula Then
MsgBox "Si tiene Fórmula"
Else
MsgBox "No tiene Fórmula"
End If

End Sub


En 1) Excel me da error: "#¿NOMBRE?"
En 2) Creo que no detecta la fn "SUMA" y si "SUM" con .Formula
La de eleccion sería la 4).

15 de julio de 2011

Visual Basic: Copiar celdas entre tablas con variable


Private Sub CommandButton1_Click()

nMP = Hoja1.Cells(6, 2)
nNUT = Hoja1.Cells(5, 3)

Hoja3.Cells(1, 1) = nMP
Hoja3.Cells(2, 1) = nNUT

End Sub

N.B.: Hoja1 y Hoja3 son el nombre de las hojas, no sus etiquetas.

Visual Basic: Copiar Rangos de celdas entre hojas



Private Sub CommandButton1_Click()

'Copiar un rango de celdas'
Worksheets("TABLA_1").Range("a1", "e5").Value = Worksheets("TABLA_2").Range("a1", "e5").Value

'Copiar toda una linea de celdas'
Worksheets("TABLA_1").Range("6:6").Value = Worksheets("TABLA_2").Range("1:1").Value

'Copiar toda una columna de celdas'
Worksheets("TABLA_1").Range("A:A").Value = Worksheets("TABLA_2").Range("B:B").Value

End Sub

N.B.: TABLA_1 y TABLA_2 son las etiquetas de las tablas