Python: Encoding latin-1 utf-8

#!/usr/bin/python
# coding: latin-1

If script is stored in utf-8, a u character has to appear before any utf-8 strings, as in following example:

#!/usr/bin/python
# coding: utf-8

(....)

ws.write_string ("B6",u'Ñéñººª')

For cygwin users, python should be manually pointed at windows python available.

 ln -s  /cygdrive/c/Python27/python.exe /usr/bin/python

If encoding is not set up:

$ python fmyscript.py
  File "fmyscript.py", line 20
SyntaxError: Non-ASCII character '\xc3' in file ficha_conecta.py on line 20, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

To learn more about encoding: https://www.python.org/dev/peps/pep-0263/

 

 

Python: problemas con tildes, ñ, acentos, etc.

#!/usr/bin/python
# coding: latin-1

Si elegimos usar UTF-8, en todas las cadenas que vayan a tener un carácter especial se debe especificar una U delante de la cadena:

#!/usr/bin/python
# coding: utf-8

(....)

ws.write_string ("B6",u'Ñéñººª')

Si el script va a ejecutarse desde cygwin, es necesario apuntar /usr/bin/python a la versión del sistema:

 ln -s  /cygdrive/c/Python27/python.exe /usr/bin/python

Si en los scripts de python, no está bien especificado el tipo de caracteres de los fuentes, ante cualquier carácter especial del castellano aparece el siguiente error:

$ python fmyscript.py
  File "fmyscript.py", line 20
SyntaxError: Non-ASCII character '\xc3' in file ficha_conecta.py on line 20, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Para saber más:  https://www.python.org/dev/peps/pep-0263/

Python 2.7. Instlar pypdfocr en windows

Si al instalar pypdfocr en windows 7, da un error de compilación

$ pip2.exe  install pypdfocr

(...)
Installing collected packages: PyYAML, argh, pathtools, watchdog, httplib2, oauth2, evernote, pypdfocr
  Running setup.py install for PyYAML: started
    Running setup.py install for PyYAML: finished with status 'error'
    Complete output from command c:\python27\python.exe -u -c "import setuptools, tokenize;__file__='c:\\cygwin\\tmp\\pip-build-k7lz4j\\PyYAML\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\cygwin\tmp\pip-nggirp-record\install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build\lib.win32-2.7
    creating build\lib.win32-2.7\yaml
    copying lib\yaml\composer.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\constructor.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\cyaml.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\dumper.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\emitter.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\error.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\events.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\loader.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\nodes.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\parser.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\reader.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\representer.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\resolver.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\scanner.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\serializer.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\tokens.py -> build\lib.win32-2.7\yaml
    copying lib\yaml\__init__.py -> build\lib.win32-2.7\yaml
    running build_ext
    creating build\temp.win32-2.7
    creating build\temp.win32-2.7\Release
    checking if libyaml is compilable
    error: [Error 2] El sistema no puede encontrar el archivo especificado

    ----------------------------------------
Command "c:\python27\python.exe -u -c "import setuptools, tokenize;__file__='c:\\cygwin\\tmp\\pip-build-k7lz4j\\PyYAML\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\cygwin\tmp\pip-nggirp-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in c:\cygwin\tmp\pip-build-k7lz4j\PyYAML\

Es necesario instalar tal y como comentan en stackoverflow vc  para windows :

Microsoft Visual C++ Compiler for Python 2.7

Una vez instalado, vc for Python, debe estar accesible desde el path. Desde command :

cmd_python_pypdfocr

vmware powercli: tareas programadas

Para ejecutar un script de powercli mediante el programador de tareas, es necesario prepararlo para poder ser invocado desde powershell.

El script debe comenzar invocando el snapin de vmware:

add-pssnapin VMware.VimAutomation.Core

Antes de pasar a una tarea programada, recomendamos probar el script invocandolo a través de powershell:

powershell.exe c:\myscript.ps1

Tarea programada en windows

Herramientas administrativas > Programador de tareas

vmware_powercli_tarea_programada001

Tarea básica: Hora y fecha de comienzo.

vmware_powercli_tarea_programada002

Acción: Iniciar un programa
vmware_powercli_tarea_programada003Poner ruta de powershell y del script de powercli completa:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

 

powercli_tarea_programada_64bits

Windows 10: Utilidades de directorio activo

Para poder usar las utilidades de exploración del directorio activo en windows 7 y windows 10, es necesario activar RSAT ( Remote Server Administration Tools) a través de Programas y características.

rsat_windows_dominio_01

Panel de control > Programas > Programas y características > Activar o desactivar las características de windows.

rsat_windows_dominio_02Habilitamos Remote Server Administration Tools > Feature Administration Tools > AD DS and AD LDS Tools > AD DS Tools

rsat_windows_dominio_03

A través de la consola mmc (mmc.exe) añadimos el complemento de Usuarios y equipos de active directory.

rsat_windows_dominio_04

 

vmware: migración “La operación no se permite en el estado actual”

En un cluster con DRS activado (en modo agresivo) al mover una máquina da como error “La operación no se permite en el estado actual”.
vmware_esx_error_migracion001

El error sale tanto por el interfaz, como en powercli

$vm | move-VM -Datastore  $datastore -Destination $vmhost

Al analizar el propio host, su definición de vmotion aparece como “no”.

 

 

Sin embargo, el host tiene una licencia enterprise que permiten los movimientos en máquina virtual.

vmware_esx_error_migracion002

Paso 1: Reinicio en vcenter del servicio de licencias
vcenter:~ # /etc/init.d/vmware-cis-license restart
Stopping VMware CIS License Service...
Stopped VMware CIS License Service.
Starting VMware CIS License Service...
Waiting for VMware CIS License Service..................
running: PID:4108
Paso 2: Desconexión y conexión del host.

Al desconectar y conectar de nuevo el host, verifica la información de licencias y recupera la posibilidad de vmotion.

Vmware vcenter migration. The operation is not allowed in the current state .

Despite having DRS enabled on our vmware cluster, we are unable to migrate virtual machines.

Every migration ends with the following error:

The operation is not allowed in the current state .
vmware_esx_error_migracion001

Thist issue occurs not only when using powercli, but also when manually trying to migrate:

$vm | move-VM -Datastore  $datastore -Destination $vmhost

If you check the host configuration (summary tab),  vmotion state is set as “No”, though  Host license is Enterprise plus.

vmware_esx_error_migracion002

Step 1: Restart licencse service in vcenter
vcenter:~ # /etc/init.d/vmware-cis-license restart
Stopping VMware CIS License Service...
Stopped VMware CIS License Service.
Starting VMware CIS License Service...
Waiting for VMware CIS License Service..................
running: PID:4108
Step 2: Disconnect and reconnect host.

When a disconnection and reconnection is performed, licence information is read, and vmotion host configuration will be re-enabled.

Vmware: configurar host profile con distintas tarjetas hbas

En el caso de tener licencias enterprise plus, los perfiles de servidor nos ayudan a mantener todas las configuraciones iguales de los servidores.

En nuestro caso, usamos siempre  un servidor de referencia. Cuando se hacen cambios sobre la configuración, por ejemplo, de red

  1. Configurar la nueva red en el servidor de referencia
  2. Probar
  3. Aplicar host profile en todos los servidores Esxi.

El problema empieza a aparecer cuando tenemos servidores diferentes, con distintos componentes físicos.

Desde el update 2 de vcenter 6, por algún motivo, han decidido que el idioma del teclado fija también el idioma del interfaz, lo que nos complica un poco la vida al buscar ayuda.

En nuestro caso, el error de hbas es:

Faltan dispositivos PCI 2 vmhba en su host que son requeridos por el perfil. El modelo de host puede ser diferente del host de referencia

vmware_host_profile_error_hba

En inglés, el error es:

Your host is missing 2 vmnic PCI devices required by the profile. Your host model may be different from the reference host

Está ya reportado en Vmware Knowledge Base.

En nuestro caso, hemos tenido que deshabilitar dos apartados completos de los perfiles:

  • Device alias configuration
  • Storage configuration

vmware_host_profile_error_hba_002

 

Vmware: configure host profile to match with different physical hosts

Enterprise Plus licences adds host profiling as a way to keep hosts settings managed.

Since writing from scratch host profiles is hard, we use as reference one of our hosts.

Every time we have to changing a setting, for example a new portgroup:

  1. Configure new portgroup
  2. Test
  3. Update host profile and apply to other hosts in the cluster.

This works great as long as all our servers hardware are the same.

As our Emulex Hbas are not the same model, we are having this error:

 

vmware_host_profile_error_hba

Your host is missing 2 vmnic PCI devices required by the profile. Your host model may be different from the reference host

vmware_host_profile_error_hba

To avoid this issue, we have disabled two items in host profiles:

  • Device alias configuration
  • Storage configuration

vmware_host_profile_error_hba_002

More in Vmware Knowledge Base

R: Trabajando con cadenas de texto

nchart

La función Length no funciona con cadenas de texto. Devuelve una longitud, pero no es la del texto que contiene.

texto <- "¡Hola Mundo!"

nchar(texto)
[1] 12

substring

substring(texto,2,14)

strsplit

 strsplit("Me/gusta/programar/en/R","/")
[[1]]
[1] "Me"        "gusta"     "programar" "en"        "R"

sprintf

Misma sintáxis que en C

 sprintf("El cuadrado de %d es %d", i, i^2)

chartr() para sustituir caracteres en cadenas

Búsqueda con expresiones regulares

patron <- "Trabajador(e|a)s"

grep (patron,profesiones)

Otra opción es usar ?regexpr