viernes, 7 de agosto de 2020

Monitor de actividad Mac no muestra columnas


Lo primero es comprobar que están activadas algunas columnas para mostrar. En el menú Visualización -> Columnas ->
Si están activas pero no se ven. Se cierra el Monitor de actividad. Y abrimos Finder -> Ir -> Ir a carpeta

Introducimos la siguiente ruta al fichero de configuración.
~/Biblioteca/Preferences/com.apple.ActivityMonitor.plist
Borramos el archivo.

Y abrimos el Monitor de actividad.

Visto en: https://macreports.com/activity-monitor-columns-are-missing-fix/



sábado, 27 de junio de 2020

MySQL. agrupar por fecha y contar incluido los ceros cuando no hay datos para una fecha



La idea la encontré en stack overflow "MySQL group by date and count including missing dates".
Consiste en generar tantos números como días se quiera. En el ejemplo se generan 10 mil filas. Y como se toma como referencia la fecha actual, son 10 mil días hacia atrás. Eso son más de 27 años.

create view datetable as
select
date_format(adddate(now(),-(a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a))),'%Y-%m-%d') AS date
from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4
union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4
union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4
union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4
union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as d
; 
Entonces, la idea es realizar un LEFT JOIN con esta vista para así obtener todas las filas incluidas las no relacionadas, y condicionar para el rango de fechas deseado. Por ejemplo, a continuación con una tabla de usuarios.
select 
    datetable.date,
    count(users.id) users
from
    datetable
    left join users on datetable.date = date_format(users.createdAt,'%Y-%m-%d')
where
    datetable.date 
        between date_format('2020-06-20','%Y-%m-%d') 
        and date_format('2020-06-30','%Y-%m-%d')
group by
    datetable.date;
+------------+-------+
| date       | users |
+------------+-------+
| 2020-06-20 |     0 |
| 2020-06-21 |     0 |
| 2020-06-22 |     0 |
| 2020-06-23 |     0 |
| 2020-06-24 |     0 |
| 2020-06-25 |     0 |
| 2020-06-26 |   207 |
| 2020-06-27 |     0 |
+------------+-------+
Todos los usuarios fuerondatos de alta el 2020-06-26 por eso se ve que ese día tiene los 207 usuarios y el resto de días cero. Aunque en el rango se indica entre el 20 y 30 de junio. La sentencia se ejecuta el 27 de junio que es la fecha actual que toma de referencia en la vista. Por ello, no se ve datos para el 28, 29, 30.
Entendiendo la idea se puede adaptar al problema a resolver.




sábado, 4 de mayo de 2019

Error de escritorio remoto cifrado CredSSP


Error de autenticación
No se permite la función solicitada
Puede deberse a una actualización de Oracle de cifrado CredSSP.
Para obtener más información, consulte https://go.microsoft.com/fwlink/?linkid=866660.


1) Abrir Símbolo del sistema en modo administrador. (clic derecho en Símbolo del sistema y luego en Ejecutar como Administrador)
2) Ejecutar el texto:
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /f /v AllowEncryptionOracle /t REG_DWORD /d 2
  • 0 = Forzar Clientes Actualizados —Las aplicaciones cliente que usan CredSSP no podrán recurrir a versiones inseguras.
  • 1 = Mitigado —Las aplicaciones cliente que usan CredSSP no podrán recurrir a versiones inseguras.
  • 2 = Vulnerable —Las aplicaciones cliente que utilizan CredSSP va a exponer a servidores remotos a los ataques mediante el apoyo de respaldo a las versiones inseguras.
Lo que se hace es configurar en modo vulnerable.


miércoles, 6 de marzo de 2019

MySQL en SQL Developer




En este caso interesa el JDBC Driver for MySQL

Escoge el sistema operativo en el que se utilizará. Para instalar en MAC: Platform Independent

Descarga el archivo ZIP en el que se encuentra el .jar

  • Segundo, añade el archivo en SQL developer->Preferencias
Bases de datos->Controladores JDBC de Terceros
Y agrega el archivo .jar




Al intentar utilizar MySQL con SQL developer puede dar un error:

«Status : Failure - The server time zone value 'AEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specific time zone value if you want to utilize time zone support»

Añade al archivo de configuración my.ini en la instalación de MySQL después de [mysqld] la línea.

default-time-zone='+01:00'

Guarda y reinicia el servicio.

El archivo my.ini utilizado fue el de: C:\ProgramData\MySQL\MySQL Server 5.7\my.ini al tener la instalación en un Windows.

Otras rutas en las que se puede encontrar o crear el archivo de configuración:
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf C:\Program Files\MySQL\MySQL Server 5.7\my.ini C:\Program Files\MySQL\MySQL Server 5.7\my.cnf

lunes, 25 de febrero de 2019

Crear una VPN con Ubuntu server y OpenVPN

Resultado de imagen de open vpn
Una manera rápida de hacerlo es utilizando los scripts desarrollados en:

https://github.com/angristan/openvpn-install

Como bien lo describe, lo primero es descargar el ejecutable y darle permisos de ejecución

curl -O https://raw.githubusercontent.com/Angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh

Ejecutarlo

./openvpn-install.sh

La ejecución inicia un entorno guiado vía terminal en la que permite:
  • Instalar la VPN
  • Agregar un cliente
  • Eliminar un cliente
  • Desinstalar la VPN
Probado en:
Ubuntu server 16.04

domingo, 24 de febrero de 2019

Montar un disco para compartir con Samba en Ubuntu server

Resultado de imagen de share "files" samba

Formatear disco

Consultar particiones y sistemas de fichero
sudo lsblk -fm

Otra forma de consultar los discos y particiones
sudo fdisk -l

Para gestionar particiones se indica el disco y se opera con las opciones dadas («m» para ver opciones)
sudo fdisk /dev/sdb

Para crear una partición se presiona «d» y se sigue la guía.


Formatear la partición
sudo mkfs.ext4 /deb/sdb1

*Tienen que estar desmontado. La primera vez que se haga lo estará. Pero si se ha montado y se quiere desmontar un disco:
sudo umount /dev/sdb1

*Si está ocupado no se puede desmontar el disco, se puede consultar qué procesos lo usan previo desmontaje:
sudo fuser -vm /dev/sdb1

En el ejemplo, estaba siendo usado por el proceso de Samba, así que detuve Samba y se pudo desmontar. Sino tocaría matar/parar procesos, o forzar el desmontaje.

*Si se da formato NTFS al disco no se puede aplicar la política unix de usuario/grupo a los ficheros impidiendo la gestión por usuario al compartir ficheros

Montar disco

Crear carpeta donde alojar el disco
sudo mkdir /media/data

Montar el disco en la carpeta
sudo mount /dev/sdb1 /media/data

Modificar el fichero fstab para que la configuración quede guardada
sudo nano /etc/fstab

En el ejemplo:
/dev/sdb1 /media/data ext4 defaults 1 2

Instalación y configuración de Samba (Ubuntu server 16.04)

Si estamos aquí es porque queremos compartir ficheros. Samba se instaló en Ubuntu y se accede desde Windows, Mac OS X, otros Linux. El proceso indica cómo hacer una carpeta de acceso general y otra de uso bajo usuario y contraseña.

Si no estuviera instalado samba se instala
sudo apt install samba

Se edita el archivo: /etc/samba/smb.conf

Se descomenta/modifica la línea
wins support = yes
net bios = MySERVER #nombre del equipo en la red

Y al final del fichero se añade la configuración de cada carpeta a compartir:
[publica]
path = /media/data/folderpublic 
browsable = yes 
guest ok = yes 
only guest = no 
read only = no 
create mask = 0777 
directory mask = 0777 
public = yes

[privada] 
path = /media/data/folderpriv 
browsable = yes 
guest ok = no 
read only = no 
create mask = 0770 
directory mask = 0770
  • path ubicación de la carpeta a compartir
  • browsable si es navegable desde el Explorador de Windows
  • guest si permite la conexión de forma anónima sin usuario y contraseña
  • read only si solo es de lectura o se permite escritura
  • create mask permisos con los que se van a crear los nuevos ficheros
Se tienen que tener la carpeta creada con los permisos adecuados
sudo mkdir -p /media/data/folderpublic 
sudo mkdir -p /media/data/folderpriv

Crear usuario linux y grupo a utilizar para acceso a la carpeta privada
sudo useradd userpriv
sudo groupadd grouppriv

Se asigna el grupo al usuario
sudo usermod -g grouppriv userpriv

*Si se quiere añadir el usuario a grupos adicionales
sudo adduser userpriv otrogrupo

Se agrega como usuario samba
sudo smbpasswd -a userpriv

Listar usuarios samba
pdbedit -L

Si se quiere eliminar un usuario
sudo smbpasswd -x userpriv

Aplicar permiso de forma recursiva al directorio y subdirectorios (por si los hubiese)
sudo chmod -R 775 /media/data/folderpublic
sudo chmod -R 775 /media/data/folderpriv

Cambiamos grupo a la carpeta
sudo chown -hR root:grouppriv /media/data/forderpriv
sudo chown -hR nobody:nogroup /media/data/folderpublic

Reiniciar samba tras los cambios
sudo /etc/init.d/samba restart

*Para Samba (en caso de necesitar)
sudo /etc/init.d/samba stop

*Iniciar Samba (en caso de necesitar)
sudo /etc/init.d/samba start

Eliminar credenciales de Windows para conexiones compartidas

Cuando estamos viendo carpetas compartidas Windows ya suele almacenar credenciales y como solo permite una a la vez si luego queremos acceder a otro recurso con credenciales diferentes tendremos problemas de acceso, para ello lo más rápido eliminamos credenciales guardadas.

- Presionar las teclas Windows + R
- Escriben en la ventana de Ejecutar: cmd
- En la ventana que se abre escribir: net use * /del
- Escriben una ese «S» para confirmar la eliminación de entradas en caso de existir.
- Pueden cerrar la ventana

Cerrar todas las ventanas del Explorador de Windows que están viendo recursos de red.

Ahora en la ventana de Ejecutar (Windows+R) escribir
rundll32.exe keymgr.dll, KRShowKeyMgr

En la ventana que se abre se elimina las credenciales que acceden a recursos compartidos (o se configura una para la conexión que queremos, en mi caso a 192.168.1.5). En el ejemplo no influye ni DriveFS ni GitHub.


Reiniciar el servicio de credenciales

Una vez hecho esto se podrá iniciar sesión para acceder al recurso. Si se almacenan las credenciales el acceso será directo.







viernes, 15 de febrero de 2019

MySQL: crear índice único y no único

Una PRIMARY KEY crea un índice único asociado al campo que es clave primaria, además es NOT NULL por defecto, y por tabla se tiene una sola clave primaria.
Cuando queremos que un campo o varios sean únicos entonces creamos una constraint UNIQUE y si queremos que sea un índice no único lo declaramos como KEY pero no en la misma línea del campo porque significaría que declaramos una PRIMARY KEY, y no es lo que queremos.

create table test(
    clave_primaria    int unsigned not null,
    clave_unica       varchar(128) default null,
    clave_nounica     varchar(128) default null,
    constraint pk_test_claveprimaria primary key(clave_primaria),
    constraint uq_test_claveunica unique(clave_unica),
    key(clave_nounica)
);





Se ha utilizado
-MySQL Ver 14.14 Distrib 5.7.23, for Win64