martes, diciembre 27, 2011

Visual Basic .NET Leer un fichero de texto

Tenemos que leer un fichero.

.CONFIG
En el fichero .config de la aplicación tenemos una indicación de dónde está el fichero. Lo indicamos así:
add key="pathFicheroPumadata" value="c:\programa-gestion\pumapc\pumadata.dat"



Primero leemos la entrada, luego comprobamos si el fichero está en su sitio. Si no está, se captura la excepción y se muestra el mensaje correspondiente al usuario.

Se lee el fichero procesando cada línea.

Private Sub mnuLeerFichero_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuLeerFichero.Click
Dim configurationAppSettings As System.Configuration.AppSettingsReader = New System.Configuration.AppSettingsReader
Dim ficheroPumadata As String
Dim contador As Integer = 0
ficheroPumadata = configurationAppSettings.GetValue("pathFicheroPumadata", GetType(System.String))
If ficheroPumadata = "" Then
ficheroPumadata = Application.StartupPath
End If
Try
If System.IO.File.Exists(ficheroPumadata) = False Then
MessageBox.Show("El fichero pumadata.dat no está en su sitio.")
Exit Sub
End If
strPATH_BASEDATOS = ficheroPumadata
'Abrir el fichero de texto:
Dim sr As New System.IO.StreamReader( _
ficheroPumadata, _
System.Text.Encoding.Default, _
True)
' Leer el contenido mientras no se llegue al final
While sr.Peek() <> -1
' Leer una línea del fichero
Dim s As String = sr.ReadLine()
If String.IsNullOrEmpty(s) Then
Continue While
End If
contador = contador + 1
escribirLinea(s)
End While
' Cerrar el fichero
sr.Close()
MessageBox.Show(contador & " repostajes leídos")
Catch ex As Exception
MessageBox.Show("ERROR: " & ex.Message & vbCrLf & "El fichero pumadata.data no está en su sitio")
Exit Sub
End Try
End Sub




Saludos.

Consola Web de Administración Oracle

Con el usuario oracle:

Creación de la consola (sólo para la primera vez):
emca -config dbcontrol db -repos create

Levantar:
emctl start dbconsole

Parar:
emctl stop dbconsole

Reiniciar
emctl restart dbconsole

Cuando restauramos la base de datos entera puede ser necesario recrear la consola web. También te puede hacer falta cuando levantas la base de datos en un servidor alternativo:

emca -config dbcontrol db -repos recreate

Hará unas preguntas como el SID, el $ORACLE_HOME, la password de SYS, del usuario DBSNMP, etc.


jueves, diciembre 22, 2011

Consejo informático


Estaba escuchando la radio... que si el nuevo gobierno... que si tal...que si cual, y uno va y dice: "El único que dice si un barco es bueno es el mar".

Lo anoto porque no quiero que se me olvide.
Cuando un sistema es suficientemente complejo para no saber cómo va a comportarse al modificar algo de su entorno, puedes decirle a tu jefe:

-¡El único que dice si un barco es bueno es el mar!

Nota: No abuses del dicho. Sólo cuando algo no se pueda simular en laboratorio.

Saludos.

lunes, diciembre 19, 2011

Editor VI, recordatorio de comandos

Unir dos ficheros de texto (merge files):
Abrimos el primero cuando llamamos al VI.
Colocamos el cursor donde corresponda (el comando añade el segundo fichero justo debajo del cursor).
:r fichero

Unir dos líneas de texto contiguas:
Nos colocamos en la primera línea.
J

Ir al final de la línea:
$

Borrar hasta el final de línea:
D

Moverse al principio de la palabra anterior:
b

Ir a la línea 25:
25G

Ir a la última línea:
G

Copiar una línea y pegarla justo debajo (duplicar la línea):
Y (copia la línea actual).
p (pega lo copiado debajo de la línea actual).

Cambiar la palabra actual:
wc (word change)


Repetir el comando:
.

Avanzar de palabra en palabra:
w

Mostrar los números de línea:
:set nu

Deshabilitar los números de línea:
:set nu!

Borrar las siguientes 1000 líneas
d1000

Eliminar las líneas que cumplan un patrón determinado:
:g/patrón/d

Eliminar las líneas que NO cumplan un patrón:
:g!/patrón/d

Deshacer el último cambio en la línea:
U

Deshacer el último cambio:
u

Deshacer los 3 últimos cambios:
3u


Cambiar a mayúsculas o minúsculas:
Para este tema hay que recordar que la letra "g" es para cambir de un tipo al otro y algunas cosas más:
gu significa cambiar a minúsculas
gU significa cambiar a mayúsulas
w significa palabras (word).
G es para ir al final del fichero.
$ es para ir al final de línea.

Por lo tanto comandos válidos son:

gUw -> Cambiar la palabra a letras mayúsculas.
guw -> Cmabiar la palabra a letras minúsculas.
gU100w -> Cambiar las siguientes 100 palabras a mayúsculas.
gu100w -> Cambiar las siguientes 100 palabras a minúsculas.
gU$ -> Cambiar la línea actual a mayúsculas.
gu$ -> Cambiar la línea actual a minúsculas.
gUG -> Todo en mayúsculas hasta el final.
guG -> Todo en minúsculas hasta el final.

Comando de sustitución en el modo EX:
:s sustituye en la línea actual.
:%s sustituye en todo el fichero.

Cambiar en la línea actual la primera palabra "hola" que encuentre por "HOLA".
:s/hola/HOLA/

Cambiar en la línea actual todas las palabras "hola" por "HOLA".
:s/hola/HOLA/g

Cambiar todos los "hola" del fichero por "HOLA":
:%s/hola/HOLA/g

%s es lo mismo que 1,$, por lo que también podemos hacer:
:1,$s/hola/HOLA/g

Cambiar "hola" por "HOLA" de la línea 100 a la 200:
:100,200s/hola/HOLA/g

Para que pida confirmación en cada cambio añadimos la letra c al final:
:100,200s/hola/HOLA/gc

Para que ignore las mayúsculas/minúsculas
:100,200s/hola/adios/gci

Para que no ignore las mayúsculas/minúsculas:
:100,200s/hola/adios/gcI

Reemplazar la palabra "hola" por "HOLA" en las líneas que cumplan un patrón:
:g/patron/s/hola/HOLA/g

Caracteres especiales o "metacaracteres" para formar el patrón:

^ es el inicio de la expresión regular (inicio de línea).
$ es el final de línea.
. es cualquier carácter menos el salto de línea.
* es cero o más caracteres.
[] es cualquier carácter de los que se encuentra entre corchetes.
\ es el carácter de escape. Así \$ se refiere al carácter $ y no al final de línea.
\s es el espacio en blanco
\d es un dígito

Más metacaracteres aquí.


Un sencillo manual PDF con más comandos de VI aquí.

domingo, diciembre 18, 2011

Dinamic y army moves 1986 (hace 25 años)



Hoy se ha publicado el el diario Público un interesante reportaje sobre un juego mítico de los de los 8 bits: Army moves de la Dinamic.


Curiosamente hay entrada en la wikipedia inglesa y no así en la castellana.

El artículo que podéis leer aquí, se titula "CUANDO DINAMIC CONQUISTÓ EUROPA", y se centra en la descripción del proyecto de Víctor Ruiz que junto con otros dos hermanos desarrollaron "un arcade de scroll lateral con temática militar".




"Salió simultáneamente para Spectrum, Amstrad, MSX y Commodore en la Pascua de allí, que es muy fuerte. Número uno de ventas en todos los países en los que salió, en todas las plataformas", apunta Pablo, que cierra el relato enfatizando una sola palabra: "Arrasó".

jueves, diciembre 15, 2011

Oracle, consulta de privilegios de un usuario

Script SQL muy útil que nos pregunta por un usuario de la base de datos y nos proporciona la lista de privilegios de ese usuario.

Muy útil antes de eliminar el usuario (drop user cascade) para una importación.

Código descargado de: http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html
Ahí hay otros dos scripts para consultas generales de privilegios en la base de datos.

Ejecutado correctamente en Oracle 10.2.0.4


select
    lpad(' ', 2*level)  granted_role "User, his roles and privileges"
  from
    (
    /* THE USERS */
      select
        null     grantee,
        username granted_role
      from
        dba_users
      where
        username like upper('%&enter_username%')
    /* THE ROLES TO ROLES RELATIONS */
    union
      select
        grantee,
        granted_role
      from
        dba_role_privs
    /* THE ROLES TO PRIVILEGE RELATIONS */
    union
      select
        grantee,
        privilege
      from
        dba_sys_privs
    )
  start with grantee is null
  connect by grantee = prior granted_role;


Al ejecutarse el script nos pide que introduzcamos un usuario:


Enter value for enter_username: E623E
old  12:       username like upper('%&enter_username%')
new  12:       username like upper('%E623E%')


Y esta es la lista que obtenemos:


User, his roles and privileges
------------------------------
  E623E
    ALTER SESSION
    CONNECT
      CREATE SESSION
    CREATE SEQUENCE
    CREATE SYNONYM
    CREATE VIEW
    RESOURCE
      CREATE CLUSTER
      CREATE INDEXTYPE
      CREATE OPERATOR
      CREATE PROCEDURE
      CREATE SEQUENCE
      CREATE TABLE
      CREATE TRIGGER
      CREATE TYPE
    UNLIMITED TABLESPACE

17 rows selected.

Adjunto imagen del código fuente original, ya que en blogger han eliminado algunos caracteres importantes (como la doble barra):



Saludos.

miércoles, diciembre 14, 2011

Solucionar problema con DBLINK oracle

Descripción del problema: En una instancia Oracle consigues compilar vistas que utilizan un Database Link de la siguiente forma:




CREATE OR REPLACE VIEW usuario.vista1 (campo1,
campo2)
AS
SELECT campo3
FROM usuarioDB2@nombreDblink



Teniendo un Database Link llamado: nombreDblink.nombreCompañía.es

Sin embargo, en una segunda instancia la sentencia anterior no se compila bien.
Resulta que poniendo el nombre completo del DBLink sí compila bien:




CREATE OR REPLACE VIEW usuario.vista1 (campo1,
campo2)
AS
SELECT campo3
FROM usuarioDB2@nombreDblink.nombreCompañia.es


Solucion del problema:

Iniciar sesión como sysdba y consultar la tabla GLOBAL_NAME de las dos bases de datos.
Probablemente en la primera el
GLOBAL_NAME = nombreInstancia.nombreCompañía.es

En la segunda será sólo el nombreInstancia.

Saludos.

Deshabilitar el firewall en Red Hat, CentOS, Oracle Linux

De esta forma se deshabilitaría definitivamente:

# service iptables save
# service iptables stop
# chkconfig iptables off

Si usamos IPv6:

# service ip6tables save
# service ip6tables stop
# chkconfig ip6tables off

Si en lugar de deshabilitar queremos modificar la configuración:
http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables
Saludos.

martes, diciembre 13, 2011

Instalación de paquetes RPM en Linux

La instalación sería:
rpm -i paquete
i de "install"

Con yum instala también las dependencias (disponible en RedHat, CentOS y Oracle Linux):
yum install paquete

Buscar:
yum search paquete

Obtener información:
yum info paquete

Para desinstalar un paquete:
rpm -e paquete
e de "erase"

PROBLEMA DE LAS INTERDEPENDENCIAS:

A veces para instalar un paquete A tienes que instalar el paquete B.
Entonces va a instalar el paquete B y te pide el paquete A.

Solución: prueba a instalarlos juntos.

rpm -i paqueteA paqueteB


PROBLEMA 2: Hay interdependencias entre un montón de paquetes y no nos entran en una línea.

Solución:
En UNIX y Linux podemos usar la contrabarra para ejecutar un comando largo utilizando varias líneas:

rpm -i paqueteA \
paqueteB \
paqueteC \
...
paqueteZ \

Nota: antes de la contrabarra dejar un espacio.

viernes, diciembre 09, 2011

Montar CD-ROM o DVDROM en Linux

dmesg | grep DVD 
nos dará algo de información (ojo, hay un pipe entre los dos comandos).
Si no es así probamos:

dmesg | grep CD

Podemos redirigir dmesg a dmesg.txt para buscar más información sobre el DVD-ROM.

Se trata de saber cual es el fichero de dispositivo asignado.

En mi caso, en dmesg he encontrado que el dispositivo es el /dev/sr0

En mi Oracle Linux también podemos referenciarlo como /dev/cdrom
Si no existe ya, creamos el directorio /mnt/cdrom o cualquier otro similar.

Y montamos el dispositivo en ese directorio:
mount /dev/sr0 /mnt/cdrom
o
mount /dev/cdrom /mnt/cdrom

Ya podemos ir a /mnt/cdrom y ver el contenido.

Saludos.

Linux, como saber si es de 32 o 64 bits?

# getconf LONG_BIT
32

miércoles, diciembre 07, 2011

Explorer, la pestaña de seguridad






Por políticas Windows de una organización, o cualquier otro motivo, puede ocurrir que no vemaos la pestaña "Seguridad" cuando entramos en el menú "Herramientas", "Opciones de Internet" del navegador Internet Explorer.

Siempre que tengamos los permisos necesarios para modificar el registro podemos editarlo y habilitar la pestaña.










Hacemos REGEDIT.

Vamos a HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel

Editamos la entrada "Seguridad" y cambiamos el valor 1 por 0.

El siguiente problema puede ser que no tengamos el botón "SITIOS" activo. En ese caso vamos a HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Internet Settings\Zones\3

Tenemos que editar la entrada "FLAGS" y pondremos alguno de estos valores dependiendo de lo que queramos:

1->Intranet local
2->Sitios de confianza
3.-> Internet
4.-> Sitios restringidos

Si el problema es que no se nos están aplicando las políticas de la organización podemos intentar cargarlas desde la línea de comandos: gpupdate /force

Saludos.

lunes, diciembre 05, 2011

Linux, configuación de red. Problemática de VMware




Estoy configurando un Oracle Linux Server 6.1. que se basa en Red Hat Enterprise Linux.

Comandos útiles para la configuración de red:

Comprobar la conectividad:

dmesg grep eth
Si no vemos link up malo.

ping localhost
ping dir-ip

Para ver la configuración actual:




ifconfig
ifconfig eth0
ifconfig eth0 down
ifconfig eth0 up


ifdown eth0

ifup eth0


Estadísticas de bytes enviados, errores:
cat /proc/net/dev

Parar el servicio e intentar levantarlo:
# service network stop
# service network start

O también:
# service network restart

Configuración de la dirección IP, red, etc.

Fichero /etc/sysconfig/network

Por lo menos tendrá:

NETWORKING=yes
HOSTNAME=nombre

También podemos meter el GATEWAY si es que es común a todos los interfaces.

Configuración de un interfaz (el eth0 por ejemplo):

Fichero /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE="eth0"
HWADDR="00:50:56:01:00:20"
ONBOOT="yes"
BOOTPROTO="static"
BROADCAST="192.168.50.255"
NETWORK="192.168.50.0"
IPADDR="192.168.50.13"
NETMASK="255.255.255.0"
TYPE="Ethernet"
GATEWAY="192.168.50.253"



Problemática cuando se crea un servidor a partir de una plantilla en VMware.

O también cuando se crea un CLON VMware.

Puede que nos encontremos con estos errores:

# service network start
Activando interfaz eth0: El dispositivo eth0 no parece estar presetne, retrasando la inicialización.

# ifconfig eth0 up
eth0: unknown interface: No existe el dispositivo.

1.-Parar la máquina virtual.
2.-Ir a EDIT Setting-s (VMware).
3.-Ver la MAC address de la tarjeta de red virtual. Comprobar si es la misma que tenemos en el fichero /etc/sysconfig/network-scripts/ifcfg-eth0



#ls /sys/class/net


Si nos indica los dispositivo que esperábamos entonces la cosa está bien.


Si en lugar de eth0 y lo (loopback), nos encontramos con eth2 y lo, significa que el CLON VMware nos ha jugado una mala pasada, ya que es como si hubieramos cambiado los dispositivos.



Solución:



Ir a /etc/udev/rules.d/70-persistent-net.rules y sustituir eth2 que no esperábamos (por ejemplo) por el eth0 que esperábamos encontrar (también por ejemplo), y viceversa.




¿Qué es UDEV?



Udev se incorporó en Fedora Core 3 y Red Hat Enterprise Linux 4. Se trata de facilitar el trabajo con los dispositivos. Permite a Linux utilizar nombre de dispositivos consistentes, aunque haya dispositivos removibles (impresoras, etc.). En lugar de ver decenas o cientos de dispositivos en /dev, gracias a UDEV sólo se verían los presentes y disponibles. UDEV monitoriza /sys para saber cuales son los disponibles.



El fichero de configuración de UDEV está en /etc/udev/udev.conf

En ese fichero se indica dónde está la base de datos, dónde las reglas y dónde los permisos sobre los dispositivos. Para las reglas hay varios ficheros .rules que van numerados.El sistema va leyendo los ficheros siguiendo el orden.Por eso algunos recomiendas si creamos reglas propias llamar al fichero:

10-my.rules



Saludos.