Siempre que el entorno es complejo suceden estas cosas: sucede que hablo espanol vivo en alemania trabajo para windows linux y macos y uso una mac. Para hacerlo mas complejo no uso el terminal incluido en macOS sino que uso iTerm2, que es muchooooo mejor.
Pero desde siempre he tenido problemas con algunos símbolos como el de tuberia y los corchetes rectos: [ | ]
Esto se debe a que mac los hace con la combinación [opcion]+5 o 6 y [opcion][control]+7 para tuberías.
Cuando quería hacer alguno de estos símbolos me salia un pequeno prompt asi:
[arg:5] o cuando apretaba la tecla varias veces : [arg:55555]
[arg:6] o cuando apretaba la tecla varias veces : [arg:66666]
[arg:7] o cuando apretaba la tecla varias veces : [arg:77777]
hasta ahora no sé que significa, o para qué sirve (si claro, argumentos para algo)
Para que salgan los corchetes y la tubería correctamente y no ese mensaje, es necesario cambiar algo en la configuración del perfil:
iTerm --> Preferencias --> Perfiles --> ServidorX --> Teclas --> Tecla opción izq "normal"
Claro, el problema se da SOLAMENTE cuando se configuran perfiles para acceder a servidores por SSH.
Si connectas SSH con otro, desde tu consola de localhost no pasa este problema con el perfil y es porque el perfil que tienes por defecto "default" ya tiene esta configuración.
Publicacion de problemas informaticos y su resolución en mi vida diaria -trabajo y casa- para mi documentación personal y para quien le sirva. Temas corrientes aqui son: Linux, macOS, Deployement, bash, configuraciones, DHCP, optimización, Samba, Programas, DOSBOX, Comandos de consola, Scripts, Virtualización, DNS,
miércoles, 25 de abril de 2018
miércoles, 11 de abril de 2018
mis tipps para DOSBOX
cambiar de pantalla pequena a full = alt + enter
cambiar el teclado (online) = keyb gr (para aleman) keyb (para espanol)
montar una carpeta (para mac) = mount /users/miusuario/documents/DOSBOX c:
cambiar el teclado (online) = keyb gr (para aleman) keyb (para espanol)
montar una carpeta (para mac) = mount /users/miusuario/documents/DOSBOX c:
Automatizar tareas con Cron en Linux / Unix
Cron es un servicio de automatización de tareas muy versátil.
Se configura en el archivo de configuración root /etc/crontab segun queramos como se ejecuten las tareas diarias, semanales o mensuales segun un formato establecido
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root cd / && run-parts --report /etc/cron.daily
47 6 * * 7 root cd / && run-parts --report /etc/cron.weekly
52 6 1 * * root cd / && run-parts --report /etc/cron.monthly
Se ve fácilmente en el encabezado lo que cada columna significa.
Las tareas a ejecutar se guardan en las carpetas hourliy, daily, weekly, monthly en forma de scripts
Para la automatización de tareas que no se realizen según días de la semana existe tambien la herramienta "ANACRON" que funciona de modo parecido.
Se configura en el archivo de configuración root /etc/crontab segun queramos como se ejecuten las tareas diarias, semanales o mensuales segun un formato establecido
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root cd / && run-parts --report /etc/cron.daily
47 6 * * 7 root cd / && run-parts --report /etc/cron.weekly
52 6 1 * * root cd / && run-parts --report /etc/cron.monthly
Se ve fácilmente en el encabezado lo que cada columna significa.
Las tareas a ejecutar se guardan en las carpetas hourliy, daily, weekly, monthly en forma de scripts
Para la automatización de tareas que no se realizen según días de la semana existe tambien la herramienta "ANACRON" que funciona de modo parecido.
LVM fácil. Como crear y mantener particiones con el Logical Volume Manager de Linux
Primero que nada necesitamos el programa LVM.
Para comprobar si lo tenemos podemos llamar alguna de sus rutinas: pvs ó tambien pvdisplay.
el resultado será:
-bash: pvs: command not found
Si asi es el caso de no tenerlo entoces lo installamos con
apt-get install lvm2
despues de esto podemos probar los comandos de arriba otra vez y no tendremos ningún resultado. Esto es porque el comando fue encontrado pero no hay volumenes que mostrar
ahora debemos saber como se llama el dispositivo de almacenamiento, nos puedes ayudar
df -h
y ahora convertir el dispositivo en un Phisical Volume (PV)
(importante: no debe estar montado, si asi es usar umount)
pvcreate /dev/sdb1
y como proximo paso sera crear el Virtual Group y darle el Phisical Volume, asi:
vgcreate vg-nombre /dev/sdb1
y casi como último paso sera crear el o los volúmenes lógicos
lvcreate -L 100GB -n datos vg-nombre
donde -L sera por Longitude, que aquí son 100 Gigabytes y -n será el nombre del volumen, el último valor no tiene interruptor pues es el grupo de volumen dondé estara ubicado el LV
antes de montar la particion, sera necesario asignarle una partición pues de lo contrario estaremos recibiendo el mensaje:
Error: /dev/mapper/vg-nombre--datos: unrecognised disk label
aquí simplemente con
mkfs.ext4 /dev/vg-nombre/datos
ahora bastará que con el comando
blkid /dev/mapper/vg-nombre-datos
veamos la UUID del disco virtual y luego lo montemos con mount, o mejor lo escribamos en /etc/fstab
ver mi otro articulo de este blog llamado "agregar disco en linux"
Para comprobar si lo tenemos podemos llamar alguna de sus rutinas: pvs ó tambien pvdisplay.
el resultado será:
-bash: pvs: command not found
Si asi es el caso de no tenerlo entoces lo installamos con
apt-get install lvm2
despues de esto podemos probar los comandos de arriba otra vez y no tendremos ningún resultado. Esto es porque el comando fue encontrado pero no hay volumenes que mostrar
ahora debemos saber como se llama el dispositivo de almacenamiento, nos puedes ayudar
df -h
y ahora convertir el dispositivo en un Phisical Volume (PV)
(importante: no debe estar montado, si asi es usar umount)
pvcreate /dev/sdb1
y como proximo paso sera crear el Virtual Group y darle el Phisical Volume, asi:
vgcreate vg-nombre /dev/sdb1
y casi como último paso sera crear el o los volúmenes lógicos
lvcreate -L 100GB -n datos vg-nombre
donde -L sera por Longitude, que aquí son 100 Gigabytes y -n será el nombre del volumen, el último valor no tiene interruptor pues es el grupo de volumen dondé estara ubicado el LV
antes de montar la particion, sera necesario asignarle una partición pues de lo contrario estaremos recibiendo el mensaje:
Error: /dev/mapper/vg-nombre--datos: unrecognised disk label
aquí simplemente con
mkfs.ext4 /dev/vg-nombre/datos
ahora bastará que con el comando
blkid /dev/mapper/vg-nombre-datos
veamos la UUID del disco virtual y luego lo montemos con mount, o mejor lo escribamos en /etc/fstab
ver mi otro articulo de este blog llamado "agregar disco en linux"
Etiquetas:
blkid,
blkidls,
discos,
ext4,
formatear,
formato,
gestor de volumenes logicos,
linux,
logical volume manager,
lvm,
lvm2,
mkfs,
particionar,
particiones,
vgcreate
viernes, 23 de marzo de 2018
Python : Una excelente explicacion sobre self
https://stackoverflow.com/questions/2709821/what-is-the-purpose-of-self
Pongo aqui este excelente explicacion sobre el parámetro de python "self".
El original esta en el enlace de arriba, pero copio el articulo por si es que
desapareciera, ya que esta demasiado bueno como para permiterse perderlo:
When objects are instantiated, the object itself is passed into the self parameter.

Because of this, the object’s data is bound to the object. Below is an example of how you might like to visualize what each object’s data might look. Notice how ‘self’ is replaced with the objects name. I'm not saying this example diagram below is wholly accurate but it hopefully with serve a purpose in visualizing the use of self.

The Object is passed into the self parameter so that the object can keep hold of its own data.
Although this may not be wholly accurate, think of the process of instantiating an object like this: When an object is made it uses the class as a template for its own data and methods. Without passing it's own name into the self parameter, the attributes and methods in the class would remain as a general template and would not be referenced to (belong to) the object. So by passing the object's name into the self parameter it means that if 100 objects are instantiated from the one class, they can all keep track of their own data and methods.
See the illustration below:


Because of this, the object’s data is bound to the object. Below is an example of how you might like to visualize what each object’s data might look. Notice how ‘self’ is replaced with the objects name. I'm not saying this example diagram below is wholly accurate but it hopefully with serve a purpose in visualizing the use of self.

The Object is passed into the self parameter so that the object can keep hold of its own data.
Although this may not be wholly accurate, think of the process of instantiating an object like this: When an object is made it uses the class as a template for its own data and methods. Without passing it's own name into the self parameter, the attributes and methods in the class would remain as a general template and would not be referenced to (belong to) the object. So by passing the object's name into the self parameter it means that if 100 objects are instantiated from the one class, they can all keep track of their own data and methods.
See the illustration below:

escribir una lista en un archivo:
archivo.write("\n".join(itemlist))
miércoles, 14 de marzo de 2018
usos de XARGS
Me llega un Email con una lista de profesores los cuales haran una presentacion y cada uno debe guardarlo en una carpeta,
Si hago una carpeta donde todos ellos puedan escribir y poner su carpeta, en poco tiempo tendre algo como esto:
/Prof. Perez
/lopez
/Profesora Ortiz
/Suares Prof. Literatur
/4to Semestre Olivares
/Arquitectura
etc, es decir el caos!
entonces, copio la lista del email, y la pego en un archivo que llamare profes.txt
en Shell escribo:
cat profes.txt | xargs mkdir
el comando cat mostrara el contenido del archivo profes.txt y lo mandara al comando mkdir a traves de xargs. Entonces mkdir creara una carpeta con los nombres de cada uno asi:
/perez
/lopez
/ortiz
/suares
/olivares
/smidt
Si hago una carpeta donde todos ellos puedan escribir y poner su carpeta, en poco tiempo tendre algo como esto:
/Prof. Perez
/lopez
/Profesora Ortiz
/Suares Prof. Literatur
/4to Semestre Olivares
/Arquitectura
etc, es decir el caos!
entonces, copio la lista del email, y la pego en un archivo que llamare profes.txt
en Shell escribo:
cat profes.txt | xargs mkdir
el comando cat mostrara el contenido del archivo profes.txt y lo mandara al comando mkdir a traves de xargs. Entonces mkdir creara una carpeta con los nombres de cada uno asi:
/perez
/lopez
/ortiz
/suares
/olivares
/smidt
jueves, 8 de marzo de 2018
Linux/Unix Configurar una segunda tarjeta de red
Herramientas necesarias:
ifconfig, ethtool, ifdown, ifup, nano/vim
Suponiendo que nuestras 2 tarjetas de red ya estan instaladas en el equipo, al correr la utilidad ifconfig, es posible que sólo veamos una, eth0.
Podemos encontrar la tarjeta con el comando
ethtool eth1
el cual muy posiblemente sin nos dará la información sobre la tarjeta inactiva, ademas de que al final pondra algo como:
Link detected: no
Lo cual significa que el cable no esta conectado (o no esta funcionando)
Si tratamos de arrancar la segunda tarjeta con ifup / ifdown, es posible que nos topemos con un mensaje:
interface eth1 not configured
Para configurarla nos vamos al archivo de interfaces con nano:
nano /etc/network/interfaces
alli, agregamos la nueva interfaz:
Para DHCP (automático)
Para DHCP (automático)
iface etc1 inet dhcp
Manual:
iface eth1 inet static
address 192.0.2.254/24
O con todos sus detalles:
iface eth1 inet static
address 192.0.2.7
netmask 255.255.255.0
gateway 192.0.2.254
broadcast 192.0.2.254
Para el caso que queramos hacer una red peer2peer o de crossover-cable
(ya no hace falta el cable especial), o con sólo un swicht como intermediario...
iface eth1 inet static
address 10.0.0.18
netmask 255.255.255.0
broadcast 10.0.0.254
Reiniciar el demonio de redes:
/etc/init.d/networking restart
viernes, 2 de marzo de 2018
Montar un nuevo disco fisico en una maquina linux
Primero que nada, debemos estar seguros que el disco esta reconocido por la BIOS.
Luego podemos usar el comando df -h para ver lo que hay, que tiene una salida mas o menos asi:
root@server:~# df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
udev 10M 0 10M 0% /dev
tmpfs 806M 284K 805M 1% /run
/dev/sda1 7,5G 1,7G 5,6G 23% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,6G 0 1,6G 0% /run/shm
de todos estos sólo /dev/sda1 es un dispositivo fisico. En este caso conectado al SATA0 con 8GB (se trata de un pequeno SSD para el sistema. El dispositivo es sda pero la particion es sda1
El otro disco que he montado no aparece por ninguna parte. En mi test he atravesado un pequeño inconveniente: la aplicacion fdisk -l.
fdisk -l /dev/sdb
Como sé que mi segundo Disco esta en SATA1, entonces lo crearé como sdb.
Para ello usaré el comando
cfdisk /dev/sdb
este comando tiene una interfaz interactiva de usuario, y nos presentará de manera sencilla, p.e. el tamaño del disco en la columna Size Type. Si compruebas que coincide con el tamaño instalado vas por buen camino. la columa "Device" debería decir "Free Space".
El resto se explica por si solo: New --> Partition Size -->
cfdisk permite escojer algunos formatos de particion como ext4 (Linux). Pero faltan algunos como btrfs para el que podemos usar mkfs.btrfs /dev/sda1
Para asignar un formato ext4 usamos mkfs.ext4 /dev/sda1
y asi sucesivamente hay tambien:
mkfs mkfs.btrfs mkfs.exfat mkfs.ext3 mkfs.ext4dev mkfs.ntfs
mkfs.bfs mkfs.cramfs mkfs.ext2 mkfs.ext4 mkfs.minix
Luego podemos crear una carpeta en el dir raíz para montar la unidad:
mkdir /DATA
y montarla (temporalmente):
mount /dev/sdb1 /DATA
pero para que la particion se monte despues de cada reinicio debemos también, encontrar el UUID y anotarlo en el archivo fstab:
blkid /dev/sdb1
y escribir el fstab con el UUID obtenido en blkid imitando el formato del disco existente
(ó vim) nano /etc/fstab
y ahora sería bueno reiniciar para comprobar que nuestra particion esta todavia alli con df -h
Comando tipp: lsblk
Luego podemos usar el comando df -h para ver lo que hay, que tiene una salida mas o menos asi:
root@server:~# df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
udev 10M 0 10M 0% /dev
tmpfs 806M 284K 805M 1% /run
/dev/sda1 7,5G 1,7G 5,6G 23% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,6G 0 1,6G 0% /run/shm
de todos estos sólo /dev/sda1 es un dispositivo fisico. En este caso conectado al SATA0 con 8GB (se trata de un pequeno SSD para el sistema. El dispositivo es sda pero la particion es sda1
El otro disco que he montado no aparece por ninguna parte. En mi test he atravesado un pequeño inconveniente: la aplicacion fdisk -l.
fdisk -l /dev/sdb
Como sé que mi segundo Disco esta en SATA1, entonces lo crearé como sdb.
Para ello usaré el comando
cfdisk /dev/sdb
este comando tiene una interfaz interactiva de usuario, y nos presentará de manera sencilla, p.e. el tamaño del disco en la columna Size Type. Si compruebas que coincide con el tamaño instalado vas por buen camino. la columa "Device" debería decir "Free Space".
El resto se explica por si solo: New --> Partition Size -->
cfdisk permite escojer algunos formatos de particion como ext4 (Linux). Pero faltan algunos como btrfs para el que podemos usar mkfs.btrfs /dev/sda1
Para asignar un formato ext4 usamos mkfs.ext4 /dev/sda1
y asi sucesivamente hay tambien:
mkfs mkfs.btrfs mkfs.exfat mkfs.ext3 mkfs.ext4dev mkfs.ntfs
mkfs.bfs mkfs.cramfs mkfs.ext2 mkfs.ext4 mkfs.minix
Luego podemos crear una carpeta en el dir raíz para montar la unidad:
mkdir /DATA
y montarla (temporalmente):
mount /dev/sdb1 /DATA
pero para que la particion se monte despues de cada reinicio debemos también, encontrar el UUID y anotarlo en el archivo fstab:
blkid /dev/sdb1
y escribir el fstab con el UUID obtenido en blkid imitando el formato del disco existente
(ó vim) nano /etc/fstab
y ahora sería bueno reiniciar para comprobar que nuestra particion esta todavia alli con df -h
Comando tipp: lsblk
miércoles, 28 de febrero de 2018
Claves Privadas y Publicas para SSH, Correo y demás
Bien, una vez mas y como siempre, escribo esta pequena explicación primero para mi mismo, y luego para el que le sirva de algo.
Las conecciones remotas a través de el protocolo SSH se pueden facilitar obviando el usuario y la contraseña usando sistemas de validacion asimetrica.
Esta validación se fundamenta en la creación de dos claves encriptadas, una privada que solo tendrá el dueño del mensaje o la conección y una pública que tendran los destinatarios de correo o las computadoras remotas.
El principio es practicamente el mismo para SSH y para los correos autentificados.
Primero que nada el usuario (x-man) que desee conectarse por SSH con Claves debe generar esas claves en el Cliente (aqui x-man-pc). Para esto usara en sistemas niXs una herramienta llamada ssh-keygen.
x-man-pc:~ x-man$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/x-man/.ssh/id_rsa):
Created directory '/Users/x-man/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/x-man/.ssh/id_rsa.
Your public key has been saved in /Users/x-man/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:G8M+S4PG5MfdWmbntaRnptl3KBgnpV2HdBoS8L1mJ8w X-man@x-man-pc.local
The key's randomart image is:
+---[RSA 2048]----+
| .... |
| ...o .|
| .o.= |
| . .o+..|
| . S + .E..|
| + + =+.oo o |
| = O .== .o.|
| . o +.=.o*=+|
| . . =*oo|
+----[SHA256]-----+
Esto significa que ssh-keygen va a crear un par de claves publica/privada y las va a guardar (por defecto) en la carpeta (Escondida por . ) de usuario con el nombre id_rsa
Ahora ssh-keygen ha creado una nueva carpeta y dentro estan las dos claves.
Y cuando quiero conectarme por ssh...
este fingerprint (arriba) es lo mismo que esta guardado en ir_dsa.pub, es sólo otra formato, para verlo como fingerprint otra vez, debemos ejecutar:
Si el cliente pregunta "password"
Las conecciones remotas a través de el protocolo SSH se pueden facilitar obviando el usuario y la contraseña usando sistemas de validacion asimetrica.
Esta validación se fundamenta en la creación de dos claves encriptadas, una privada que solo tendrá el dueño del mensaje o la conección y una pública que tendran los destinatarios de correo o las computadoras remotas.
El principio es practicamente el mismo para SSH y para los correos autentificados.
Primero que nada el usuario (x-man) que desee conectarse por SSH con Claves debe generar esas claves en el Cliente (aqui x-man-pc). Para esto usara en sistemas niXs una herramienta llamada ssh-keygen.
x-man-pc:~ x-man$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/x-man/.ssh/id_rsa):
Created directory '/Users/x-man/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/x-man/.ssh/id_rsa.
Your public key has been saved in /Users/x-man/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:G8M+S4PG5MfdWmbntaRnptl3KBgnpV2HdBoS8L1mJ8w X-man@x-man-pc.local
The key's randomart image is:
+---[RSA 2048]----+
| .... |
| ...o .|
| .o.= |
| . .o+..|
| . S + .E..|
| + + =+.oo o |
| = O .== .o.|
| . o +.=.o*=+|
| . . =*oo|
+----[SHA256]-----+
Esto significa que ssh-keygen va a crear un par de claves publica/privada y las va a guardar (por defecto) en la carpeta (Escondida por . ) de usuario con el nombre id_rsa
Ahora ssh-keygen ha creado una nueva carpeta y dentro estan las dos claves.
Y cuando quiero conectarme por ssh...
este fingerprint (arriba) es lo mismo que esta guardado en ir_dsa.pub, es sólo otra formato, para verlo como fingerprint otra vez, debemos ejecutar:
x-man-pc:.ssh x-man$ ssh-keygen -l -f id_rsa.pub
2048 SHA256:G8M+S4PG5MfdWmbntaRnptl3KBgnpV2HdBoS8L1mJ8w x-man@x-man-pc.local (RSA)
cambiar la Paraphase:
ssh-keygen -p -f ~/.ssh/id_dsaTipos de claves:
ecdsa = 256
dsa = 1024
rsa = 2048
Importante:
Si el cliente pregunta "password"
3 veces antes de ejecutar la conneccion ssh, y luego conecta sólo poniendo un usuario existente en el servidor-ssh es porque la clave publica no se ha exportado al servidor, para esto ejecutamos:sudo ssh-copy-id -i ~/.ssh/id_rsa.pub administrator@192.168.148.136donde administrador va a ser el usuario que va a poder entrar con esa clave sin importar el nombre que tenga en el cliente. Es el nombre antes de @nombrehost. Tiene que existir en el ServidorSi todavia para exportar la clave pregunta por 3 veces por la clave del administrador, puede ser que el acceso sobre ssh esta impedido para el root Mas Informacion:https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/openssh.htmlhttp://manpages.ubuntu.com/manpages/xenial/en/man8/sshd.8.html https://www.linuxtotal.com.mx/index.php?cont=info_seyre_010https://www.linuxtotal.com.mx/index.php?cont=info_seyre_003https://serverfault.com/questions/690855/check-the-fingerprint-for-the-ecdsa-key-sent-by-the-remote-hosthttps://blog.mellenthin.de/archives/2007/08/08/ssh-fingerprint-uberprufen/https://apple.stackexchange.com/questions/254468/macos-sierra-doesn-t-seem-to-remember-ssh-keys-between-reboots
TIPPS:Si tienes varias computadoras no necesitas generar una nueva Llave en cada una, lo causaria que el servidor tenga una lista grande de computadoras, claves publicas, etc. , es suficiente si copias las claves que ya tienes de computadora en compu. No confundas esto con ssh-copy-id. Esta copia la debes realizar manualmente por ejemplo con un usb-stick o por la red.
- En algunas Distribuciones de Linux viene el usuario root desactivado, si lo activas por ejemplo con sudo -u root passwdpuedes tener problemitas para logearte por ssh y hasta para exportar la clave. Esto es puede ser porque el ssh esta desactivado para root. Para esto te vas a /etc/ssh/sshd_config y agregas la linea:PermitRootLogin yes- Cuando copiamos unas claves en la carpeta .ssh de manera manual (con el explorador de archivos, finder, cp) los derechos se cambian a rwxrr o 644, lo que ssh reconocerá como riesgoso. Al probar la conexion aparece el mensaje:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/usuariox/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/usuariox/.ssh/id_rsa": bad permissions
root@servidor.com's password:
para reparar esto basta asignarle los permisos 600. Algunos Blogs dicen que el 400 funciona, cosa que a mi no me resulta puesto que me dice que no es accesible.
miércoles, 20 de diciembre de 2017
ocultar comentarios en vim
AGRUPA LOS COMENTARIOS EN UNA LINIA Y LOS MUESTRA RESUMIDOS
:set fdm=expr
:set fde=getline(v:lnum)=~'^\\s#'?1:getline(prevnonblank(v:lnum))=~'^\\s#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
MAS LEGAL QUE LA SIGUIENTE PARA DESAPARECER COMENTARIOS
:hi! link Comment Ignore |
CAMBIA EL COLOR DE LOS COMENTARIOS, SI VIM ES NEGRO Y SE COLOCA NEGRO DESAPARECEN
:hi! Comment guifg=bg ctermfg=white
|
jueves, 23 de noviembre de 2017
Encontrar a que Unidad Organizacional pertenece un usuario
A veces hay cosas que deberian ser faciles pero son dificiles. Esta es una de ellas. A pesar de todo no es tan dificil:
en PowerShell ejecutar:
Get-ADUser nombredelusuario
Entre la informacion importante que volcará esta el Distiguishname, donde esta la OU
en PowerShell ejecutar:
Get-ADUser nombredelusuario
Entre la informacion importante que volcará esta el Distiguishname, donde esta la OU
viernes, 10 de noviembre de 2017
Mis notas sobre Python3.6
Opciones confundibles:
>>> pals = ['uno','pepe','tomate', 'gusanito']
>>> for p in pals:
print(p)
uno
pepe
tomate
gusanito
>>> print(pals)
['uno', 'pepe', 'tomate', 'gusanito']
EXPLICACION:
pals es una lista. Listas se conocen por sus corchetes cuadrados [] . En el primer ejemplo contamos cada elemento de pals, llamandolo "p" y lo imprmimimos. Asi el resultado fue cada elemento uno tras otro sin mas ni menos
print(pals)
Imprime la lista, tal como es, con corchetes, comillas, comas separadoras, y elementos.
si despues de esto hicieramos
>>>len(p)
8
mientras que
>>>len(pals)
4
y eso es porque
>>>print(p)
gusanito
mientras que:
>>> print(pals)
['uno', 'pepe', 'tomate', 'gusanito']
osea que 8 es el largo de la palabra gusanito y 4 la cantidad de elementos en la lista pals
>>> pals = ['uno','pepe','tomate', 'gusanito']
>>> for p in pals:
print(p)
uno
pepe
tomate
gusanito
>>> print(pals)
['uno', 'pepe', 'tomate', 'gusanito']
EXPLICACION:
pals es una lista. Listas se conocen por sus corchetes cuadrados [] . En el primer ejemplo contamos cada elemento de pals, llamandolo "p" y lo imprmimimos. Asi el resultado fue cada elemento uno tras otro sin mas ni menos
print(pals)
Imprime la lista, tal como es, con corchetes, comillas, comas separadoras, y elementos.
si despues de esto hicieramos
>>>len(p)
8
mientras que
>>>len(pals)
4
y eso es porque
>>>print(p)
gusanito
mientras que:
>>> print(pals)
['uno', 'pepe', 'tomate', 'gusanito']
osea que 8 es el largo de la palabra gusanito y 4 la cantidad de elementos en la lista pals
viernes, 15 de septiembre de 2017
2.- Linux from Scratch bajo mi concepto
despues de borrar y borrar cosillas, me canse y crei capaz de empezar por otro lado: Linux desde cero. Mi plan es mas o menos asi:
1. Formatear un disco (con fdisk, diskpart, etc ?)
2. Ponerle MBR con install-mbr
3. Instalarle Grub con grub-install
4. Copiar un kernel
Mi objetivo es lograr todo esto desde la consola de comandos, pero para empezar voy a usar el instalador standard. Con este, mi proceso esta siendo asi:
1. Crear la tabla de particion. Para esto me ayudé con el video:
https://www.youtube.com/watch?v=AkkW63toTOM
aunque no separé / y /home, sino que hice solo /. /boot le asigne 250MB y swap 600MB. El disco virtual era de unos 6 GB
Al aceptar arranca ubuntu con una rutina de "installing the system"
Con un poco de búsqueda, me parecio que lo mejor para lograr mi objetivo es Gentoo Linux.
El Manual de Gentoo Linux recomienda dos caminos para la particion. Entre Fdisk y parted, escoji fdisk por parecer mas antiguo y tener mas adeptos asi como funciones. parted parece una implementacion que salva a los discos mayores de 2TB, cosa que hasta podría esperarse de fdisk en un futuro (quizas ya ahora, y estoy en el pasado)
Particion de Arranque BIOS:
fdisk
d (si se desea eliminar particiones existentes, mi DD virtual estaba nuevecito)
n (nueva)
p (primaria)
1 (particion no. 1)
2048 (primer sector)
+2M (ultimo)
t 4
Particion de Arranque
default (al final de la anterior)
+128M
t 83 (linux)
Particion SWAP
default (al final de la anterior)
+1024M
t 84 (linux swap)Particion Root /
default (al final de la anterior)
bis zum ende (default)
t 83 (linux)
Crear los sistemas de archivos:
el 2 con 2 y el 4 con 4 es solo coincidencia. Systema de Archivos EXT2 se utiliza para boot y ext4 es mejor para los archivos.
Inicializar y Activar la partition swap
mkswap /dev/sda3
swapon /dev/sda3
montar root
montar la particion gentoo
mount /dev/sda4 /mnt/gentoo
configuring compiler option
nada me molesta mas que un handbook o tutorial que parezca muy facil, explique banalmente y mande a leer otros manuales indecifrables. Exactamente esto es lo que este apartado de la guia de gentoo me parece.
Bueno, pero a lo hecho pecho y hay que seguir adelante.
IMPORTANTE: si reinicias la maquina, tendras que remontar la particion gentoo otra vez
Critica:
el trabajo de la gente de gentoo es maravilloso. Se puede aprender mucho a traves de este sistema. Pero la "independizacion" me parece perjudicial. Me explico: gentoo ofrece comodas herramientas para la configuracion como portage o emerge. Estas herramientas son lamentablemente solo bajo gentoo disponible. Aprender a configurar linux a traves de esto significa aprender gentoo y no linux estandar.
selecionar los mirrors:
otra vez a traves de una herramienta gentoo, aunque es bastante rudimentaria y a pesar de ello útil, ya que si no habria que escribir largamente direcciones de url´s en el archivo make.conf en una variable llamada GENTOO_MIRRORS
el manual dice, "crear la carpeta boot", pero ya esta creada
Configurar Portage
1. Formatear un disco (con fdisk, diskpart, etc ?)
2. Ponerle MBR con install-mbr
3. Instalarle Grub con grub-install
4. Copiar un kernel
Mi objetivo es lograr todo esto desde la consola de comandos, pero para empezar voy a usar el instalador standard. Con este, mi proceso esta siendo asi:
1. Crear la tabla de particion. Para esto me ayudé con el video:
https://www.youtube.com/watch?v=AkkW63toTOM
aunque no separé / y /home, sino que hice solo /. /boot le asigne 250MB y swap 600MB. El disco virtual era de unos 6 GB
Al aceptar arranca ubuntu con una rutina de "installing the system"
Con un poco de búsqueda, me parecio que lo mejor para lograr mi objetivo es Gentoo Linux.
El Manual de Gentoo Linux recomienda dos caminos para la particion. Entre Fdisk y parted, escoji fdisk por parecer mas antiguo y tener mas adeptos asi como funciones. parted parece una implementacion que salva a los discos mayores de 2TB, cosa que hasta podría esperarse de fdisk en un futuro (quizas ya ahora, y estoy en el pasado)
Particion de Arranque BIOS:
fdisk
d (si se desea eliminar particiones existentes, mi DD virtual estaba nuevecito)
n (nueva)
p (primaria)
1 (particion no. 1)
2048 (primer sector)
+2M (ultimo)
t 4
Particion de Arranque
default (al final de la anterior)
+128M
t 83 (linux)
Particion SWAP
default (al final de la anterior)
+1024M
t 84 (linux swap)Particion Root /
default (al final de la anterior)
bis zum ende (default)
t 83 (linux)
Crear los sistemas de archivos:
mkfs.ext2 /dev/sda2mkfs.ext4 /dev/sda4 el 2 con 2 y el 4 con 4 es solo coincidencia. Systema de Archivos EXT2 se utiliza para boot y ext4 es mejor para los archivos.
Inicializar y Activar la partition swap
mkswap /dev/sda3
swapon /dev/sda3
montar root
mount /dev/sda4 /mnt/gentooCopiar el Stage3 adentrocd /mnt/gentoowget http://distfiles.gentoo.org/releases/amd64/autobuilds/20170824/stage3-amd64-nomultilib-20170824.tar.bz2 (puede variar segun version)
desempaquetar el bz2tar xvjpf stage3-*.tar.bz2 --xattrs --numeric-ownermontar la particion gentoo
mount /dev/sda4 /mnt/gentoo
configuring compiler option
nada me molesta mas que un handbook o tutorial que parezca muy facil, explique banalmente y mande a leer otros manuales indecifrables. Exactamente esto es lo que este apartado de la guia de gentoo me parece.
Bueno, pero a lo hecho pecho y hay que seguir adelante.
IMPORTANTE: si reinicias la maquina, tendras que remontar la particion gentoo otra vez
Critica:
el trabajo de la gente de gentoo es maravilloso. Se puede aprender mucho a traves de este sistema. Pero la "independizacion" me parece perjudicial. Me explico: gentoo ofrece comodas herramientas para la configuracion como portage o emerge. Estas herramientas son lamentablemente solo bajo gentoo disponible. Aprender a configurar linux a traves de esto significa aprender gentoo y no linux estandar.
selecionar los mirrors:
otra vez a traves de una herramienta gentoo, aunque es bastante rudimentaria y a pesar de ello útil, ya que si no habria que escribir largamente direcciones de url´s en el archivo make.conf en una variable llamada GENTOO_MIRRORS
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.confmkdir /mnt/gentoo/etc/portage/repos.confcp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
Copiar informacion DNScp -L /etc/resolv.conf /mnt/gentoo/etc/Montar archivos de sistema necesarios root #mount -t proc /proc /mnt/gentoo/proc
root #mount --rbind /sys /mnt/gentoo/sys
root #mount --make-rslave /mnt/gentoo/sys
root #mount --rbind /dev /mnt/gentoo/dev
root #mount --make-rslave /mnt/gentoo/dev
descartar algun problema de gentoo con el cdroot #test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
root #mount -t tmpfs -o nosuid,nodev,noexec shm /dev/shmroot # chmod 1777 /dev/shmentrar en el nuevo ambienteroot #chroot /mnt/gentoo /bin/bash
root #source /etc/profile
root #export PS1="(chroot) $PS1"
Montar la particion bootel manual dice, "crear la carpeta boot", pero ya esta creada
root #mount /dev/sda2 /boototra opcion gentoo: Configurar Portage
root #emerge-webrsync hasta aqui llege donde un error se repite:rsync_ recv_generator mkdir "/usr/portage/xxxxx failed: no space left on device (28)parece ser que la particion esta llena, y como el disco es de alrededor 8 GB casi no puede ser, entonces el problema parece estar en los inodos. Pero antes de entrar en la lata de buscar un error en un sistema de test del que no estoy ni tan convencido, prefiero continuar como si nada pasara...
eselect profile listeselect profile set 2 (el standard, paso innecesario)
Critica:No encuentro como instalar 2 perfiles. El estandar es nomultilib que no incluye las librerias x32 pero si ademas quiero systemd no veo la forma de elegir los dos
jueves, 27 de julio de 2017
Estudio y comparacion de las herramientas básicas de trasferencia de archivos
ftp
sftp
ftps
scp
wget
curl
git
rsync
cp
mv
rdiff
sftp
ftps
scp
wget
curl
git
rsync
cp
mv
rdiff
lunes, 17 de julio de 2017
mis notas sobre un DHCP server en linux (ubuntu 16)
modificar el archivo de interfaces para asignar al servidor una ip fija:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens3
iface ens3 inet static
address 192.168.0.240
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 213.146.232.2 213.146.230.2
reiniciar la tarjeta de red
sudo service networking restart
modificar el nombre del host
sudo nano /etc/hostname
e importante para que resuelva su propio nombre
sudo nano /etc/hosts
agregar el nombre en la linea despues de localhost para 127.0.1.1
logs se encuentran en
cat /var/lib/dhcp/dhcpd.leases
y los de sistema que se pueden ver con
cat /var/log/syslog | grep -Ei 'dhcp'
escribir el archivo de configuracion
sudo nano /etc/dhcp/dhcpd.conf
contenido (minimo) del archivo de configuracion
# Lokal netz
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option domain-name-servers 213.146.232.2, 213.146.230.2;
# Dynamisch IPs
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.70;
default-lease-time 86400;
max-lease-time 86400;
}
reiniciar dhcp
sudo /etc/init.d/isc-dhcp-server start
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens3
iface ens3 inet static
address 192.168.0.240
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 213.146.232.2 213.146.230.2
reiniciar la tarjeta de red
sudo service networking restart
modificar el nombre del host
sudo nano /etc/hostname
e importante para que resuelva su propio nombre
sudo nano /etc/hosts
agregar el nombre en la linea despues de localhost para 127.0.1.1
logs se encuentran en
cat /var/lib/dhcp/dhcpd.leases
y los de sistema que se pueden ver con
cat /var/log/syslog | grep -Ei 'dhcp'
escribir el archivo de configuracion
sudo nano /etc/dhcp/dhcpd.conf
contenido (minimo) del archivo de configuracion
# Lokal netz
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option domain-name-servers 213.146.232.2, 213.146.230.2;
# Dynamisch IPs
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.70;
default-lease-time 86400;
max-lease-time 86400;
}
reiniciar dhcp
sudo /etc/init.d/isc-dhcp-server start
viernes, 14 de julio de 2017
pequeno razonamiento sobre como utilizar los recursos de thunderbird para el trabajo efectivo
Cuales recursos?
Thunderbird no solo recibe emails. Aparte de otros clientes de email muy aceptados como Outlook o iMail, Thunderbird tiene una infinidad de recursos limitados solamente por nuestros propios conocimientos, ya que por ser OpenSource, podemos hasta "reescribir" el código para adaptarlo a nuestras necesidades.
Esto de reescribir el código es por supuesto una exageracion una porque pocos estamos en la capacidad de hacerlo y dos porque no es necesario porque los recursos que ya tiene son muy grandes y poderosos.
- Carpetas de Busqueda
- Carpetas (IMAP)
- Marcas con estrella (kennzeichnung)
- Palabras clave (schlagworte)
- Filtros rápidos
- Filtros
- Convertir en
-- Cita
-- Nota
- Columnas y Configuracion de Columnas para Carpetas
Ejemplo:
Casi una vez al mes pero irregularmente me llega un email invitandome a una conferencia a la que quiero participar.
Tengo varias reglas para que todos los email del departamento invitador se metan en una carpeta de notificaciones, pero quisiera que exactamente esas invitaciones no se me pasen desapercibidas.
En mi compañia los departamentos escriben nombrandose con corchetes en el asunto. El asunto es un poco variable, aunque he observado que una palabra siempre esta alli. Por esto, genero un filtro que busque dentro de la carpeta DEPTO-CONT la cadena "invitacion" y marque esta con mi palabra clave "citas" y agrege una estrella.
Como en la carpeta hay tambien invitaciones anteriores, entonces pierdo nuevamente un poco el objetivo, con lo que complemento el filtro con "antiguedad en días" y asi le pido que solo marque asi los emails que tienen menos de 60 dias.
Una posibilidad es tambien copiar o mover los emails que cumplen la regla a otra carpeta, llamada por ejemplo "Citas-Actuales". Copiar tiene una desventaja: cada vez que aplicas el filtro a la carpeta copia nuevamente lo mismo. Mover tiene la desventaja de que cuando busques los emails del departamento, los de estas citas no van a estar en esta carpeta. Para que esta repeticion no suceda, puedes agregar el filtro "estatus""no es""marcado", pues como la marca la agrega el filtro al copiar, no volvera a aplicarse el filtro en los emails ya copiados porque al mismo tiempo fueron marcados.
Esta desventaja de mover tambien se puede solventar con una carpeta de busqueda, pues es virtual y puede contener emails que estan en diferentes carpetas.
Ademas de estos recursos estandar de Thunderbird, puedo recomendar los Addons
ColorFolder
RegExSuche
ThemeFontSizeChanger
CalendarTweks
Thunderbird no solo recibe emails. Aparte de otros clientes de email muy aceptados como Outlook o iMail, Thunderbird tiene una infinidad de recursos limitados solamente por nuestros propios conocimientos, ya que por ser OpenSource, podemos hasta "reescribir" el código para adaptarlo a nuestras necesidades.
Esto de reescribir el código es por supuesto una exageracion una porque pocos estamos en la capacidad de hacerlo y dos porque no es necesario porque los recursos que ya tiene son muy grandes y poderosos.
- Carpetas de Busqueda
- Carpetas (IMAP)
- Marcas con estrella (kennzeichnung)
- Palabras clave (schlagworte)
- Filtros rápidos
- Filtros
- Convertir en
-- Cita
-- Nota
- Columnas y Configuracion de Columnas para Carpetas
Ejemplo:
Casi una vez al mes pero irregularmente me llega un email invitandome a una conferencia a la que quiero participar.
Tengo varias reglas para que todos los email del departamento invitador se metan en una carpeta de notificaciones, pero quisiera que exactamente esas invitaciones no se me pasen desapercibidas.
En mi compañia los departamentos escriben nombrandose con corchetes en el asunto. El asunto es un poco variable, aunque he observado que una palabra siempre esta alli. Por esto, genero un filtro que busque dentro de la carpeta DEPTO-CONT la cadena "invitacion" y marque esta con mi palabra clave "citas" y agrege una estrella.
Como en la carpeta hay tambien invitaciones anteriores, entonces pierdo nuevamente un poco el objetivo, con lo que complemento el filtro con "antiguedad en días" y asi le pido que solo marque asi los emails que tienen menos de 60 dias.
Una posibilidad es tambien copiar o mover los emails que cumplen la regla a otra carpeta, llamada por ejemplo "Citas-Actuales". Copiar tiene una desventaja: cada vez que aplicas el filtro a la carpeta copia nuevamente lo mismo. Mover tiene la desventaja de que cuando busques los emails del departamento, los de estas citas no van a estar en esta carpeta. Para que esta repeticion no suceda, puedes agregar el filtro "estatus""no es""marcado", pues como la marca la agrega el filtro al copiar, no volvera a aplicarse el filtro en los emails ya copiados porque al mismo tiempo fueron marcados.
Esta desventaja de mover tambien se puede solventar con una carpeta de busqueda, pues es virtual y puede contener emails que estan en diferentes carpetas.
Ademas de estos recursos estandar de Thunderbird, puedo recomendar los Addons
ColorFolder
RegExSuche
ThemeFontSizeChanger
CalendarTweks
martes, 13 de junio de 2017
Como usar una carpeta compartida en la red para guardar Backups de Time Machine de Apple Mac
Para la mayoría, Apple Mac resulta un icono de la facilidad y amabilidad con el usuario. Claro que el usuario solo abre la maquinilla y lo ve todo bonito, pero cuando se trata de administrar Mac en un ambiente empresarial es otra la historia.
Los usuarios Windows, cuentan con Shadows Copy. Si los usuarios Mac guardan en una Carpeta de servidor windows esta funcion estar corriendo "por debajo de la mesa". Si un archivo se pierde o borra, se podrá recuperar del servidor windows, pero solamente con un Cliente windows en el que se haga clic con el boton derecho y luego en Versiones.
Este clic no estará presente en Mac, aunque las versiones estén ahí.
Claro que hay mucho que se puede hacer: Maquinas Virtuales, Servidores de Remote Desktops Services, Exploradores de Archivos especializados, etc. Lamentablemente todo resulta "pañitos calientes" o en IT-Jerga "Worksarounds".
Por otro lado, utilizar una Carpeta de Servidor Windows con SMB no siempre resulta tan facil con mac. Mac no tiene GPOs con las que podamos mandar los perfiles completos al servidor y una sincronizacion no es de mi agrado (pocas veces sabe el usuario que esta sincronizado y que no).
Pero Mac tiene su propia solución, y además que se ve bonita (esto es siempre importante para Mac y sus usuarios) se llama Time Machine o Maquina del Tiempo. En TM puedes ver como en el tiempo tus documentos y toda tu máquina ha pasado por el tiempo y puedes restablecer con una increible facilidad las versiones pasadas.
Claro, tienes que enchufar un disquito externo a tu mac... o también correrá bien (o mejor) si te compras una no tan económica Cápsula del Tiempo, con la que podrás guardar tus Backups por el aire.
Pero si la empresa tiene un grande y poderoso servidor SMB, porque necesitamos unos aparatitos de jugete como las capsulas del tiempo?. Eso se puede preguntar cualquier IT administrador que tenga mas de dos dedos de frente y algunos usuarios con fundamento.
Pues porque no es tan fácil. Lo ideal sería que mac nos permitiera en Time Machine, encontrar las Shares que estan disponibles en la red y que podamos decirle "aqui por favor". Pero esto no es posible. Si bien existe un "hack" bastante elegante y eficiente que nos lo permitirá:
Crea una Imagen de Disco con la aplicación estandard de administracion de Discos. Debe ser HFS-J (journaled) y de crecimiento automatico "parseled bunded" ni mas esta decir que del tamaño adecuado para tus documentos.
Pon esta imagen en tu carpeta de red (Share) y luego montala en el sistema de archivos (simple doble clic)
Ahora manda a Time Machine a usar esta unidad montada con
Pero esto es tema de otro Blog donde me ocupo de esto.
Los usuarios Windows, cuentan con Shadows Copy. Si los usuarios Mac guardan en una Carpeta de servidor windows esta funcion estar corriendo "por debajo de la mesa". Si un archivo se pierde o borra, se podrá recuperar del servidor windows, pero solamente con un Cliente windows en el que se haga clic con el boton derecho y luego en Versiones.
Este clic no estará presente en Mac, aunque las versiones estén ahí.
Claro que hay mucho que se puede hacer: Maquinas Virtuales, Servidores de Remote Desktops Services, Exploradores de Archivos especializados, etc. Lamentablemente todo resulta "pañitos calientes" o en IT-Jerga "Worksarounds".
Por otro lado, utilizar una Carpeta de Servidor Windows con SMB no siempre resulta tan facil con mac. Mac no tiene GPOs con las que podamos mandar los perfiles completos al servidor y una sincronizacion no es de mi agrado (pocas veces sabe el usuario que esta sincronizado y que no).
Pero Mac tiene su propia solución, y además que se ve bonita (esto es siempre importante para Mac y sus usuarios) se llama Time Machine o Maquina del Tiempo. En TM puedes ver como en el tiempo tus documentos y toda tu máquina ha pasado por el tiempo y puedes restablecer con una increible facilidad las versiones pasadas.
Claro, tienes que enchufar un disquito externo a tu mac... o también correrá bien (o mejor) si te compras una no tan económica Cápsula del Tiempo, con la que podrás guardar tus Backups por el aire.
Pero si la empresa tiene un grande y poderoso servidor SMB, porque necesitamos unos aparatitos de jugete como las capsulas del tiempo?. Eso se puede preguntar cualquier IT administrador que tenga mas de dos dedos de frente y algunos usuarios con fundamento.
Pues porque no es tan fácil. Lo ideal sería que mac nos permitiera en Time Machine, encontrar las Shares que estan disponibles en la red y que podamos decirle "aqui por favor". Pero esto no es posible. Si bien existe un "hack" bastante elegante y eficiente que nos lo permitirá:
Crea una Imagen de Disco con la aplicación estandard de administracion de Discos. Debe ser HFS-J (journaled) y de crecimiento automatico "parseled bunded" ni mas esta decir que del tamaño adecuado para tus documentos.
Pon esta imagen en tu carpeta de red (Share) y luego montala en el sistema de archivos (simple doble clic)
Ahora manda a Time Machine a usar esta unidad montada con
sudo tmutil setdestination /Volumes/TimeMachineDespues tendrás el problema de montar esta Carpeta de Servidor o Share automaticamente en mac, pues aunque esto parezca evidente, y de echo en un clic en Windows, resulta un dolor de cabeza en mac. Sobre todo, si tus usuarios no son Administradores de su Cliente. Pero esto es tema de otro Blog donde me ocupo de esto.
miércoles, 10 de mayo de 2017
Thunderbird deja todos los documentos anexos en en escritorio de Mac
escribo "de Mac" porque realmente no habi visto esto antes en Windows, quizas tambien pasa, quizas le pasa a alguien. Pero esta molesto hábito se puede configurar relativamente fácil y los encontramos en en link:
http://cote.cc/blog/stop-thunderbird-from-littering-your-desktop-with-attachments
Por si el link se pierde, o la pagina, o simplemente necesitas un manual es espanol, lo explico a continuacion:
- Ve a configuracion: Extras --> Configuracion --> Avanzada --> Trabajar la Configuracion (about:config)
- Ahi buscas la clave :
http://cote.cc/blog/stop-thunderbird-from-littering-your-desktop-with-attachments
Por si el link se pierde, o la pagina, o simplemente necesitas un manual es espanol, lo explico a continuacion:
- Ve a configuracion: Extras --> Configuracion --> Avanzada --> Trabajar la Configuracion (about:config)
- Ahi buscas la clave :
"browser.helperApps.deleteTempFileOnExit" sin comillas, que debe estar presente y configurada como "False".
- Dale doble clic y deberia cambiar a "True", sino haslo manualmente.
y ya esta, con esto Thunderbird borrara todos los archivos temporales dejados al terminar la sesion.
jueves, 4 de mayo de 2017
Identacion para archivos XML sin identacion en TextWrangler
TextWrangler es excelente. Si algo le puede criticar es que es un poquito lento, pero para lo brinda en comparacion con los rapidos, se puede soportar.
Un problemita que me ocupó mientras trataba de editar archivos de configuracion sin saltos de linea en xml, es justamente que no tienen saltos de linea, es decir que toda la configuración era una sola linea. A pesar de que esto pueda parecer lógico, tambien debe resultar logico que se pueda crear una identacion, ya que cada linia posee un nuevo tag con la forma <> y esto lo puede encontrar un programa.
Entonces por esto me di a la busqueda de una solucion para ello y encontre esta bella solucion:
https://magp.ie/2010/02/15/format-xml-with-textwrangler/
No por copiar, sino porque me desagrada que a veces cuando guardo unos vinculos con buena informacion desaparecen de internet, pongo aqui tambien el contenido de la solución, sin dejar de agredecer a su autor original Eoin Gallagher
-----------------------------------------------------------------------------------------------------------------------
Simple guide
We want to add a UNIX script to TextWrangler so it can format an XML file… to do this, do this…

This is an interesting facility to extend an already great text editor, and I will be looking into more cool scripts that can hopefully lessen my daily annoyances.
UPDATED:: Added UTF8 encoding, thanks Rolan.
UPDATED:: Added a post to format PHP code in TextWrangler.
UPDATED:: Updated for TextWrangler version 4.5.8.
---------------------------------------------------------------------------------------------------------------------
Un problemita que me ocupó mientras trataba de editar archivos de configuracion sin saltos de linea en xml, es justamente que no tienen saltos de linea, es decir que toda la configuración era una sola linea. A pesar de que esto pueda parecer lógico, tambien debe resultar logico que se pueda crear una identacion, ya que cada linia posee un nuevo tag con la forma <> y esto lo puede encontrar un programa.
Entonces por esto me di a la busqueda de una solucion para ello y encontre esta bella solucion:
https://magp.ie/2010/02/15/format-xml-with-textwrangler/
No por copiar, sino porque me desagrada que a veces cuando guardo unos vinculos con buena informacion desaparecen de internet, pongo aqui tambien el contenido de la solución, sin dejar de agredecer a su autor original Eoin Gallagher
-----------------------------------------------------------------------------------------------------------------------
Simple guide
We want to add a UNIX script to TextWrangler so it can format an XML file… to do this, do this…
- Open TextWrangler and open a new text file.
- Copy and paste the code below into this file.
1
2
| #!/bin/shXMLLINT_INDENT=$'\t' xmllint --format --encode utf-8 - |
- Save the file, something like Tidy XML.sh, in the
~/Library/Application Support/TextWrangler/Text Filters/folder. - Now anytime you want to format an XML file, just go to the Text menu and select the Tidy XML.sh script and BOOM, neat tidy XML.

This is an interesting facility to extend an already great text editor, and I will be looking into more cool scripts that can hopefully lessen my daily annoyances.
UPDATED:: Added UTF8 encoding, thanks Rolan.
UPDATED:: Added a post to format PHP code in TextWrangler.
UPDATED:: Updated for TextWrangler version 4.5.8.
---------------------------------------------------------------------------------------------------------------------
miércoles, 12 de abril de 2017
Templates o Plantillas en Libre Office para Mac
Para crear Templates que se puedan usar en el futuro en LibreOffice, es necesario crear el template (mejor vacío) y luego guardarlo como template.
En las ayudas estandar de libre office aparece un camino facil de equivocar, puesto que (por lo visto en mac el camino es un poco distinto, hay discrepancias y redundancias)
Primero:
Crear un Documento con las características que deseamos. Luego guardarlo como plantilla con
File --> Templates --> Save as Template ---> MyTemplates --> Set as Default
Esto abrira un cuadro de Dialogo que permitira guardar la plantilla como estandar para los proximos documentos.
Si haz usado un documento existente, con contenido, siempre se abrira el contenido. Cosa que me parece tonta puesto que lo interesante es el formato.
De alguna manera se puede disculpar, puesto que es quizas pensado para que siempre aparezca el mismo titulo, asi como los pie de paginas y otras caracteristicas que son intermedias entre contenido y formato.
Si haz guardado la opcion "set as Default" cada nuevo documento contendrá automaticamente el contenido de esta plantilla incluyendo, contenido y formatos.
CUIDADO:
Si piensas que el Documento abierto lo puedes "save as" y luego escojer "template", hasta allí funcionará, pero luego no estará esta plantilla en "My Templates" ni mucho menos como estandar.
CUIDADO:
Cuida de guardar un Documento vacio con el contenido que deseas como estandar y no un texto en especial, pues aparecerá despues en cada nuevo documento
En las ayudas estandar de libre office aparece un camino facil de equivocar, puesto que (por lo visto en mac el camino es un poco distinto, hay discrepancias y redundancias)
Primero:
Crear un Documento con las características que deseamos. Luego guardarlo como plantilla con
File --> Templates --> Save as Template ---> MyTemplates --> Set as Default
Esto abrira un cuadro de Dialogo que permitira guardar la plantilla como estandar para los proximos documentos.
Si haz usado un documento existente, con contenido, siempre se abrira el contenido. Cosa que me parece tonta puesto que lo interesante es el formato.
De alguna manera se puede disculpar, puesto que es quizas pensado para que siempre aparezca el mismo titulo, asi como los pie de paginas y otras caracteristicas que son intermedias entre contenido y formato.
Si haz guardado la opcion "set as Default" cada nuevo documento contendrá automaticamente el contenido de esta plantilla incluyendo, contenido y formatos.
CUIDADO:
Si piensas que el Documento abierto lo puedes "save as" y luego escojer "template", hasta allí funcionará, pero luego no estará esta plantilla en "My Templates" ni mucho menos como estandar.
CUIDADO:
Cuida de guardar un Documento vacio con el contenido que deseas como estandar y no un texto en especial, pues aparecerá despues en cada nuevo documento
Suscribirse a:
Comentarios (Atom)