J2EE desde cero cero

Esta entrada tiene por objeto documentar el paso a paso para activar el entorno de desarrollo J2EE en tu ambiente GNU/Linux basado en Debian.

Esta guía asume conocimiento cero en el asunto por eso va muy básico el paso a paso. Está realizada con Debian 10 por lo cual se usa tomcat9

Decidí pedirle ayuda y orientación a mi camarada Profesor Jesús Gil quien da clase en la Universidad Bolivariana de Venezuela y me recomendó instalar netbeans y ver este curso. Esta parte la hice siguiendo la guía de programadores novatos disponible aquí.

Instalamos Tomcat pero no levantaremos el servicio porque eso lo haremos en la primera clase virtual.

wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz
tar xzf apache-tomcat-9.0.37.tar.gz
mv apache-tomcat-9.0.26 /usr/local/apache-tomcat9
mv apache-tomcat-9.0.37 /usr/local/apache-tomcat9
update-alternatives –config java
echo “export CATALINA_HOME=/usr/local/apache-tomcat9” >> ~/.bashrc
echo “export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64” >> ~/.bashrc
echo “export JRE_HOME=/usr/lib/jvm/java-11-openjdk-amd64” >> ~/.bashrc
source ~/.bashrc
cd /usr/local/apache-tomcat9
chmod +x ./bin/startup.sh
chmod +x ./bin/shutdown.sh
nano /usr/local/apache-tomcat9/conf/tomcat-users.xml

A continuación configuraremos nuestro usuario administrador de aplicaciones de nuestro servidor de aplicaciones tomcat9. Recuerda que en nano, para grabar los cambios usamos Control-O. En este archivo vamos a agrega lo siguiente en la penúltima línea del archivo:

<!– user manager can access only manager section –>
<role rolename=”manager-gui” />
<user username=”manager” password=”123456″ roles=”manager-gui” />
<!– user admin can access manager and admin section both –>
<role rolename=”admin-gui” />
<user username=”admin” password=”123456″ roles=”manager-gui,admin-gui” />

Le damos control-O para salvar y Control-X para salir. Puedes usar el editor que más te guste.

Para ello, desde la terminal hice lo siguiente que básicamente es descargar el instalador de netbeans 9 en el directorio /tmp (el cual se borra cada vez que inicio la máquina), descomprimir el programa, moverlo al directorio de aplicaciones que es /opt y hacer el enlace simbólico al ejecutable

cd /tmp
wget https://archive.apache.org/dist/incubator/netbeans/incubating-netbeans-java/incubating-9.0/incubating-netbeans-java-9.0-bin.zip
unzip incubating-netbeans-java-9.0-bin.zip
mv /tmp/home/netbeans/ /opt/
cd /usr/bin
ln /opt/netbeans/bin/netbeans netbeans

Para ejecutar el netbeans instalado, ejecuto lo siguiente

netbeans &

Una vez que tengamos eso listo vamos crear nuestro típico hola mundo. Para ello una vez que abra netbeans, vamos a confgurarlo. Siguiendo la lista del cursos del principio, veamos la lección 3.

En un paso debo agregar el servidor tomcat y no aparece en la lista… entonces te sugiero ver este documento

 

Cómo medir el ancho de banda de acceso a internet desde una consola?

Hay veces que queremos saber la velocidad de subida y bajada de nuestros servidor; pero no tenemos entorno gráfico para abrir speedtest.net que es una de las maneras más comunes que usamos para este fin.

Por ello si estás en una terminal y estás trabajando vía ssh, puedes usar el programa speedtest.

Para instalarlo sigue estos pasos:

sudo apt-get install gnupg1 apt-transport-https dirmngr
export INSTALL_KEY=379CE192D401AB61
# Ubuntu versions supported: xenial, bionic
# Debian versions supported: jessie, stretch, buster
export DEB_DISTRO=$(lsb_release -sc)
sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys $INSTALL_KEY
echo “deb https://ookla.bintray.com/debian ${DEB_DISTRO} main” | sudo tee /etc/apt/sources.list.d/speedtest.list
sudo apt-get update
# Other non-official binaries will conflict with Speedtest CLI
# Example how to remove using apt-get
# sudo apt-get remove speedtest-cli
sudo apt-get install speedtest

Luego simplemente escribe speedtest y listo!

speedtest
==============================================================================

You may only use this Speedtest software and information generated
from it for personal, non-commercial use, through a command line
interface on a personal computer. Your use of this software is subject
to the End User License Agreement, Terms of Use and Privacy Policy at
these URLs:

https://www.speedtest.net/about/eula
https://www.speedtest.net/about/terms
https://www.speedtest.net/about/privacy

==============================================================================

Do you accept the license? [type YES to accept]: YES
License acceptance recorded. Continuing.
Speedtest by Ookla

Server: EWINET – Valencia (id = 860)
ISP: Cantv
Latency: 84.51 ms (0.15 ms jitter)
Download: 3.80 Mbps (data used: 3.7 MB)
Upload: 4.04 Mbps (data used: 3.2 MB)
Packet Loss: 0.6%

Fuente: https://www.speedtest.net/es/apps/cli

Eliminar acentos de una celda en LibreOffice Calc

Hay veces que es necesario eliminar acentos y caracteres especiales, por ejemplo cuando queremos hacer una cuenta de correo a partir de datos en una hoja de cálculos.

En mi caso, resolví la eliminación de los acentos y la ñ con esta simple fórmula:

=+SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(C2;”ñ”;”n”);”ú”;”u”);”ó”;”o”);”í”;”i”);”é”;”e”);”á”;”a”)

Cambia donde dice C2 por la celda donde tienes los datos con acentos.

 

¿Cómo hacer una aplicación Web desde cero con Yii2? – Ideas básicas

Estos son cosas que quizá ya sabes pero que deben estar claras. Si ya las sabes, obvia el artículo porque te fastidiarás y sólo encontrarás debilidades en lo escrito; sino, adelante.

Para desarrollar en Yii que es PHP5 con BD MySQL se requiere:

  1. Un sistema operativo como Linyx o Windows con Apache2, MySql y PHP5 instalado. Para hacerlo facil usar un amp…. Puedes instalar cada uno por separado; pero es más tedioso la configuracón para que todo ande.
  2. Es importante saber que el Apache2 es el servidor WEB, su trabajo es procesar páginas html, ejecutar scripts a partir de librerías módulos para interactuar con bases de datos a través de lenguajes de programación web como PHP
  3. La base de datos mysql se encarga de manejar los datos en una base de datos referencial
  4. PHP se encarga de manejar datos construidos en el código o tomados de algun sitio como la Base de datos. También maneja las sesiones de usuario y la interacción de la aplicación con la base de datos.
  5. Para que todo funcione, debe estar instalado los componentes y correctamente configurados. Esto lo hace los AMP de manera automática sin sufrimiento
  6. Yii no es más que un desarrollo en PHP que tiene un grupo de librerías y es muy sencillo arrancar. Cuenta con generadores de CRUD (Que es que automaticamente te hace las pantallas de Creación, Recuperación, Actualización y Eliminación de Datos de la base de datos) lo que te ahorra muchas horas de desarrollo.
  7. Debes conocer el directorio de tu disco duro que será publicado en el servidor web, esto quiere decir que podrá ser consultado desde el navegador
  8. El servidor web lo pruebas accediendo a la dirección http://localhost
  9. El ambiente de desarrollo no puede ser accedido desde internet; solo puede ser visto por la red local. Hay maneras de hacerlo con unos ajustes en el router wifi…pero eso es al final cuando todo está listo y no quieras pagar un hosting.
  10. Sublime Text es un editor muy poderoso que facilita desarrollar en una gran cantidad de lenguajes de programación…
  11. Podrás acceder a tu administrador de MySQL accediendo a http://localhost/phpmyadmin/. Esto quiere decir que todo está listo para que empieces a desarrollar

Cantidad de páginas vistas y de visitantes con logs de Apache2

Nos ha sucedido que nos han preguntado ¿Cuántas visitas hemos tenido a nuestro sitio? y no hemos tenido respuesta ni tampoco hemos tomado las acciones para activar un plugin que nos ayude en esta tarea.

En ese caso, si usas apache2 como servidor web, dejo estas instrucciones para que puedas usarla y poder responder tecnicamente a la pregunta. Al mismo tiempo, anota en la pizarra que debes activar algún elemento que te ayude a llevar estas mediciones de manera más prolija y funcional.

Estas instrucciones las usé para generar los indicadores descritos anteriormente en un servidor apache2 que sirve un site Joomla. En este caso el CMS Joomla 3.5 no tenía ningún componente de estadísticas de visitas ni nada por el estilo.
Lo primero que se debe saber es que normalmente los archivos de logs de apache están en /var/logs/apache2/. En esa ruta encontrarás los access.log, los cuales se van numerando para guardar los históricos. A veces pueden encontrarse en formato GZ o comprimido.
Lo que recomiendo es tener todos los archivos .log descomprimidos en un directorio, yo use /tmp/logs para asegurar que al reiniciar se borre porque no los necesito para siempre en este caso.
Se deben colocar todos los archivos de logs de acceso de apache en un mismo directorio y luego ubicarse con el shell o terminal en ese directorio.
Con las instrucciones que acá documento, se pueden ver la cantidad de páginas vistas, descartando los accesos al site de administración de joomla.
  1. Cantidad de páginas vistas totales: Con este comando se recibe un número, para este caso, 46.030 visitas totales
    • cat * |  grep GET | grep -v “administrator” |   wc -l
  2. Cantidad de páginas vistas entre Septiembre y Octubre: Con esta instrucción se recibe un número, para este caso, 25.689 visitas entre septiembre y octubre
    • cat * |  grep GET | grep -v “administrator” | egrep -w ‘Sep|Oct’ |  wc -l
  3. Cantidad de usuarios que visitaron la intranet entre Septiembre y Octubre: Con esta instrucción se recibe un número, para este caso, 51 usuarios visitaron la intranet
    • cat * |  grep GET | grep -v “administrator” | egrep -w ‘Sep|Oct’ | awk ‘{print $1}’ | sort | uniq | wc -l 
Breves comentarios:
  • grep permite filtrar la salida de un stdin.
  • grep -v sirve para excluir alguna palabra, en este caso, se excluyen todas las líneas que indiquen administrator para que en las estaísiticas no se cuente el site administrativo
  • egrep -w sirve para aplicar una expresión regular de búsqueda, en este caso egrep -w ‘Sept|Oct’ quiere decir, filtra o deja pasar sólo aquellos registros que sean de septiembre y octubre.
  • wc -l indica la cantidad de líneas o registros que generó la consulta
Espero les sea de utilidad.

17 INCREÍBLES BENEFICIOS DE LAS HOJAS DE GUAYABA PARA SU CABELLO, PIEL Y SALUD

Gracias a la entrada del compañero Anton D en un grupo de Agricultura Urbana, pude recibir este texto que comparto con todos y todas.

La guayaba es venerada porque está llena de vitaminas A y C, potasio, licopeno y fibra dietética. Pero ¿sabía que las hojas de guayaba también poseen muchos beneficios? Siga leyendo para conocer los 17 beneficios de las hojas de guayaba.

1. Promueven la pérdida de peso. El consumo de té de hojas de guayaba se dice que no convierte los hidratos de carbono complejos en azúcar, que es lo que puede causar la sensación de hambre y el aumento de peso si no se quema.

2. Beber té de hojas de guayaba regularmente es beneficioso para las personas que sufren de diabetes. Esto se debe a que ayuda a reducir los niveles de glucosa en la sangre sin causar un aumento en la producción de insulina.

3. El té también es conocido por ayudar a reducir los niveles de colesterol LDL (lipoproteína de baja densidad) o colesterol malo sin tener ningún efecto negativo sobre los niveles de HDL (lipoproteína de alta densidad) o colesterol bueno.

4. El té de hojas de guayaba es muy eficaz contra la diarrea y la disentería porque las hojas tienen propiedades antimicrobianas

5. El mismo té también es bueno para hacer frente al malestar estomacal. También ayuda a poner fin a la intoxicación alimentaria debido a las propiedades antimicrobianas de las hojas de guayaba.

6. Se recomienda consumir te de hojas de guayaba a las personas que sufren de bronquitis, así como para la tos.

7. Ayudan a lidiar con el dolor de muelas, las encías inflamadas y las úlceras orales. Estos problemas pueden ser tratados efectivamente simplemente masticando unas hojas de guayaba.

8. Beber té de hojas de guayaba es beneficioso para los enfermos de dengue. La receta perfecta para esta enfermedad viral son 9 trozos de hojas de guayaba hervida en 5 tazas de agua hasta que se reduzca a la mitad.

9. Los hombres que sufren de problemas en la próstata e incluso de cáncer de próstata pueden beneficiarse del consumo de té de hojas de guayaba

10. Del mismo modo, el té también muy recomendable para los hombres con problemas de fertilidad.

11. Las hojas de guayaba trituradas colocadas en raspones, abrasiones y cortes menores ayudan a que no se infecten las heridas.

Las infecciones del oído externo se pueden curar más rápido dejando caer té de hojas de guayaba, frió a temperatura ambiente, en el área afectada.

12. Colocar hojas de guayaba machacadas en áreas de la piel con picores debido a las reacciones alérgicas ayuda a proporcionar alivio.

13. Las hojas machacadas también son buenas para aliviar las picaduras de insectos.

14. Las hojas de guayaba finamente trituradas se pueden aplicar sobre el acné y las espinillas. Hacer esto permite que el contenido de vitamina C de las hojas entre en acción ayudando a curar.

15. Está buscando una manera totalmente natural de deshacerse de las espinillas? En una licuadora, ponga unas cuantas hojas de guayaba trituradas y algo de agua. Utilice la mezcla resultante como un exfoliante facial.

16. La misma mezcla se puede utilizar como una máscara facial para ayudar a mejorar la apariencia de los signos de envejecimiento prematuro.

17. Con las hojas de guayaba hervidas en agua y dejándolo enfriar a temperatura ambiente puede darse masajes en el cuero cabelludo para así poner fin a la caída del cabello.

Si usted tiene un guayabo en su patio, tiene suerte! Ahora ya sabe dónde ir cuando necesite un remedio casero para diversos problemas.

Ingreso de Fechas con el widget DatePicker

Muchas gracias por este documento. Estuve pariendo con las fechas porque me empeñaba en usa formato d-m-y cuando mi base de datos estaba configurada en y-m-d. Decidí dejarla en standar como me muestras en tu blog.

Yii 2 en Español

Hola, ¿cómo están?

Un requerimiento muy común en las aplicaciones, es que el usuario ingrese alguna fecha. Las fechas pueden tener diferentes formatos, y no podemos simplemente utilizar un cuadro de texto para ingresarlas. Afortunadamente, existe una fantástica extensión para Yii 2 que encapsula Widgets de JQuery UI como Widgets de Yii.

Podemos pensar en los widgets como componentes que proporcionan cierta funcionalidad de un modo reutilizable, permitiendo incorporarla en nuestros proyectos. Los widgets son utilizados frecuentemente para mejorar la interacción con el usuario. Es importante recordar que la facilidad y sencillez de uso para una aplicación es clave, y además, es muy importante también la estética.

Los widgets nos ayudan en ese sentido. Voy a señalar desde ya que Yii no sólo nos permite utilizar widgets, sino construirlos, tema que veremos más adelante.

JQuery Ui, es un conjunto no sólo de widgets, sino de muchas funcionalidades más…

Ver la entrada original 569 palabras más

¿Cómo validar el dato de un campo de un formulario con una consulta SQL a una tabla externa en Yii2?

Como principante en Yii2, estoy documentando los casos que voy resolviendo, a este caso en particular le dediqué cerca de 8 horas de trabajo porque realmente me costó, por nuevo. Gracias a la ayuda de @JeanCuadros@telegram, pude resolverlo. Gracias a su apoyo colaborativo, tiempo y paciencia.

Supongamos que queremos levantar un registro de propietarios de un edificio que estén interesados en contratar un nuevo servicio de Fibra al Hogar (FTTH). Por el alto costo que tiene FTTH, sabemos que no todos querran el servicio; pero debemos asegurar que sólo se registren los propietarios que están al día en el condominio. Para ello tenemos una tabla donde registramos a los propietarios (campo:cedula)que están al día, indicando también el apartamento (campo: apartamento) donde viven. También tendremos una tabla de registro de propietarios interesados en el servicio, donde registraremos sólo aquellas personas  que indiquen correctamente la combinación de su Cédula de Identidad (campo:cedula_interesado) y su Apartamento (campo:apartamento_interesado) y que están al día en el condominio. Para ello haremos una regla de validación que nos asegure esto.

A nivel de Base de Datos:

  • Tenemos una tabla de propietarios de un edificio donde se tiene la Cédula de Identidad y el apartamento donde vive ya precargado en la tabla llamada propietarios, donde sólo se cargan a los propietarios que están al día.
  • Tenemos una tabla llamada interesados, donde registraremos a todos los propietarios que quieren el servicio de FTTH y que irán llenando el formulario y que sólo se registrarán efectivamente si superan la validación.

Lo primero que debo decir es que el tema se resuelve en el modelo de la tabla interesados, cuyo archivo php supongamos que se llama /models/Interesados.php, en ese archivo haremos 2 cambios:

  • En la función rules, cambiaremos la regla para validar el campo apartamento para que asegure que en la tabla propietarios existe el registro que contiene la Cédula y el apartamento que está al día
  • Agregaremos la función que llamaremos validarApartamento(), la cual será llamada desde la función rules.

Como premisa de novato, debo indicar que el modelo de la tabla de interesados y de referencia externa que en este caso es propietarios, deben existir.

De esta manera en la función rules() hacemos esto: Agregamos una regla para el campo apartamento_interesado para que llame a la función validarApartamento <<note que el nombre de la función se pone sin () en la definición de la regla>>:

public function rules()
{
return [

[[‘cedula_interesado’, ‘apartamento_interesado’], ‘required’],

[[‘apartamento_interesado’], ‘validarApartamento’],
];
}

Ahora agregamos la función validarApartamento más abajo en el mismo archivo donde modificamos la función rules anteriormente:

public function validarApartamento($attribute,$params)
{
if (empty(Propietarios::find()->where([‘cedula’=>$this->cedula_interesado])->andwhere([‘apartamento’=>$this->apartamento_interesado)->one()))
{
$this->addError($attribute,’Por favor revise que ha introducido correctamente su número de cédula y su apartamento, le recordamos que si no está al día con el condominio, No podrá registrarse.’);
}

 

Con estos dos cambios ya podrá validar lo requerido. Con esta lógica podrán validar cualquier campo contra cualquier tabla externa. Suele haber la necesidad de cumplir premisas como “para realizar el registro, debes asegurarse que exista en la tabla tal”.

 

Espero les sea de utilidad. Cualquier recomendación, bienvenido el comentario.

 

Recomendaciones para hacer Presentaciones Digitales Efectivas

Esta entrada es para documentar los lineamientos a seguir para hacer presentaciones electrónicas de trabajo. Son las mejores prácticas que he venido acumulando a lo largo de los años. Para nada es una camisa de fuerza y obviamente cada quien tiene su estilo. En este caso, sólo recomiendo las siguientes líneas; pero soy consciente que hay millones de maneras distintas de hacer presentaciones.

Sigue leyendo