En una tabla de wordpress se guarda un registro donde se concatenan los id’s de las imagenes adjuntas a un tipo de post, por ejemplo

meta_value
27954,27955,27956,27958,27960,27962,27964,

para encontrar los posts (de tipo attachment) que corresponden a estos id’s podemos utilizar la función find_in_set de la siguiente manera

select p.post_title, concat('http://localhost/wp-content/uploads/', m.meta_value) image_url
from wptv_posts p 
join wptv_postmeta m on p.id = m.post_id
where 1 = 1 
and m.meta_key = '_wp_attached_file'
and find_in_set(p.id, 
(select m.meta_value
from wptv_posts p
join wptv_postmeta m on p.id = m.post_id
where 1 = 1
 and p.id = 27116
 and m.meta_key = 'image_to_attach'
 )) > 0

en esta consulta utilizamos primero una subconsulta para encontrar la información ‘meta’, del post que nos interesa, donde estan las referencias a los archivos adjuntos y luego buscamos el atributo ‘_wp_attached_file’ para los registros encontrados para formar la ruta a las imagenes mediante la función concat.

Un ejemplo sin la subconsulta sería el siguiente

select p.post_title, concat('http://localhost/wp-content/uploads/', m.meta_value) image_url
from wptv_posts p 
join wptv_postmeta m on p.id = m.post_id
where 1 = 1 
and m.meta_key = '_wp_attached_file'
and find_in_set(p.id, 
'27954,27955,27956,27958,27960,27962,27964,') > 0

La función find_in_set regresa el índice del elemento si lo encuentra en el arreglo de cadena, por ello filtramos los registros en que es mayor a cero (si se encontró).

fuentes:
https://stackoverflow.com/questions/2153149/mysql-select-in-from-string

Anuncios

Para concatenar campos en Oracle utilizas el caracter ‘|’ (pipe), por ejemplo

select ‘titulo ‘ || ‘largo’ from dual;

En mySQL se utiliza una función llamada concat, por ejemplo

select concat(‘titulo ‘, ‘largo’);

nótese además que en mySQL no se utiliza una tabla auxiliar para ejecutar el query.

fuentes:
https://stackoverflow.com/questions/19261760/concatenate-string-with-field-value-in-mysql

We have a glassfish instance for development purposes in which monitoring was activated on all modules. This caused it to start very slow. We couldn’t access the admin console either because the startup process was failing or taking too long. So, changing the configuration from the admin console wasn’t an option neither from the command line (CLI) with the asadmin command -because it needs the server to be up and running first-

So, you have to disable monitoring from the configuration file prior to attempting to start the server. The file is {jboss-home}/glassfish/domains/domain1/config/domain.xml

look for the lines

<monitoring-service>
        <module-monitoring-levels connector-connection-pool="HIGH" jdbc-connection-pool="HIGH" ejb-container="HIGH" thread-pool="HIGH" jpa="HIGH"></module-monitoring-levels>
</monitoring-service>

and change it to

<monitoring-service>
        <module-monitoring-levels connector-connection-pool="OFF" jdbc-connection-pool="OFF" ejb-container="OFF" thread-pool="OFF" jpa="OFF"></module-monitoring-levels>
</monitoring-service>

or remove them altogether like so

<monitoring-service>
        <module-monitoring-levels></module-monitoring-levels>
</monitoring-service>

then start the server

asadmin start-domain –verbose

sources:
https://stackoverflow.com/questions/13747147/glassfish-3-1-2-monitoring-ejb-container-bean-methods
https://stackoverflow.com/questions/32118705/start-glassfish-domain-without-enabling-or-starting-deployed-applications
https://www.c2b2.co.uk/middleware-blog/glassfish-4-performance-tuning-monitoring-and-troubleshooting.php

runlevel3

What to do when there’s no space left on device (boot partition)

First identify your current kernel with

uname -r

then list all other kernel images you have installed (except your current)

dpkg -l linux-{image,headers}-“[0-9]*” | awk ‘/^ii/{ print $2}’ | grep -v -e uname -r | cut -f1,2 -d"-" | grep -e ‘[0-9]’

you can try to remove them with the following command

dpkg -l linux-{image,headers}-“[0-9]*” | awk ‘/^ii/{ print $2}’ | grep -v -e uname -r | cut -f1,2 -d"-" | grep -e ‘[0-9]’ | xargs sudo apt-get -y purge

if that doesn’t work, you could try to remove them manually.

Identify kernel images you may remove with

sudo dpkg –list ‘linux-image*’|awk ‘{ if ($1==”ii”) print $2}’|grep -v uname -r

remove the files with using the older versions and, perhaps, leaving out the last 2 versions for having an option in case you need to boot with a previous kernel

rm -rf /boot/-4.4.0-{47,51,53,57}

fix missing dependencies with

sudo apt-get -f install

and finally clean up with

sudo apt-get autoremove

fuentes:
https://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot
https://askubuntu.com/questions/345588/what-is-the-safest-way-to-clean-up-boot-partition

While I was working with a lot of reports, it made sense to use a standard file name for all the files. This was an afterthought, so it required me to rename the files. I was hoping Ubuntu Nautilus had this option, but for my current version -16.04- it doesn’t. That feature is expected to land in 17.04. in the meantime you can install nautilus-renamer which offers the same feature.

Just download the .deb package from the nautilus-renamer launchpad page and install it with

sudo dpkg -i nautilus-renamer_4.0-quantal_all.deb
sudo apt install -f
killall nautilus

It des not work if parent folders contain spaces in their name and it does not support unicode characters. I guess the nautilus version for 17.04 should work with these.

Then, just open a nautilus window and select a bunch of files, right click and select ‘rename…’ or just press F2.

done!

sources:
http://www.omgubuntu.co.uk/2016/06/nautilus-batch-rename-feature-coming-gnome-3-22
https://launchpad.net/nautilus-renamer
http://www.omgubuntu.co.uk/2016/08/quick-look-new-features-nautilus-3-22
https://launchpad.net/~gnome3-team/+archive/ubuntu/gnome3

Dokku es tu propio Heroku, gracias a Docker. Es un servicio de PaaS (Platform as a Service) para que puedas desplegar (deployear) tus aplicaciones de la misma manera que lo haces en Heroku.

Instalar Dokku es muy sencillo, yo lo hice en una máquina virtual con Ubuntu 16.04 siguiendo la documentación

wget https://raw.githubusercontent.com/dokku/dokku/v0.8.2/bootstrap.sh
sudo DOKKU_TAG=v0.8.2 bash bootstrap.sh

Una vez instalado, abres un navegador con la dirección http://localhost para completar la instalación. Puedes dejar los valores por default o modificarlos de acuerdo a tu configuración. Por ejemplo, si no configuras la IP, el valor por default es la IP publica del servidor. Decidí configurar el servidor con una IP estática y ese fue el valor que puse en el instalador. En el campo Public Key debes poner la llave publica de la computadora desde la cual vas a realizar los deployments (tu máquina de desarrollo). Más adelante puedes agregar otras llaves.
Para obtener tu llave pública, si no tienes una, ejecuta el siguiente comando en tu máquina de desarrollo

ssh-keygen -t rsa

y guarda bien el passphrase que escojas.Luego copia el contenido del archivo ~/.ssh/id_rsa al campo Public Key

Una vez terminado ya puedes crear y deployear aplicaciones.

Para crear una nueva aplicación (vamos a utilizar el ejemplo ruby-rails-sample), primero creala en el servidor dokku mediante el comando

dokku apps:create ruby-rails-sample

luego en tu maquina de desarrollo, clona la aplicación (primero debes agregar tu llave publica a tu cuenta de github)

git clone git@github.com:heroku/ruby-rails-sample.git

ingresa en la carpeta y agrega el repositorio remoto

cd ruby-rails-sample
git remote add dokku dokku@{dokku server ip}

sube la aplicación y mira como se inicia con el comando
gzip: stdin: unexpected end of file
! tar: Unexpected EOF in archive

git push dokku master

la primera vez no pude ejecutar la aplicación de manera exitosa, me aparecía un error

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive

este error esta documentado en la guía de errores y se debe a una conexión a internet lenta. Para solucionarlo, simplemente ejecuta los siguientes comandos en el servidor de dokku

dokku config:set --global CURL_TIMEOUT=600
dokku config:set --global CURL_CONNECT_TIMEOUT=30

y vuelve a publicar tu aplicación

git push dokku master

Para instalar nodejs hay muchas opciones, cada una con sus pros y contras. Si haces una búsqueda en Google los 2 primeros resultados son:

https://www.digitalocean.com/community/tutorials/como-instalar-node-js-en-ubuntu-16-04-es
https://nodejs.org/en/download/package-manager/

En la primera opción te explican diferentes maneras de instalar nodejs

1.- Desde los repositorios
ejecuta

sudo apt install -y nodejs nodejs-legacy

Ventaja: Fácil
Desventaja: No es la versión más actual (instala la versión 4.2.6) y no instala npm por default (tienes que ejecutar sudo apt install npm)
Resumen: Si no puedes vivir sin una versión reciente, esta opción no es para ti.

2.- Ejecutando un script remoto

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash –
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

Ventaja: Fácil e incluye la instalación de npm por default. La última línea permite la compilación de paquetes de npm.
Desventaja: Tienes que confiar en que el script remoto no es malicioso
Resumen: Esta es la opción que utilicé porque es la misma que se menciona en la documentación oficial.

3.- Utilizar NVM (Node Version Manager)

… (demasiado largo, referirse al enlace)

Ventaja: Puedes cambiar entre versiones de node.
Desventaja: Es más complejo y en algunos casos marca errores.
Resumen: Apto para usuarios avanzados con requerimientos específicos.

Fuentes:
https://www.google.com.mx/search?hl=es-419&output=search&sclient=psy-ab&q=ubuntu+16.04+install+node&btnG=&oq=&aq=&aqi=&aql=&gs_l=&pbx=1
https://www.digitalocean.com/community/tutorials/como-instalar-node-js-en-ubuntu-16-04-es
https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions