Git en pocas palabras

Git es un controlador de versiones.

Para comenzar con un proyecto podemos crearlo desde un directorio donde tengamos nuestro código, o descargarlo desde alguna ubicación externa.

Para crearlo desde un directorio nos vamos a la raiz del proyecto: Ej: cd $RUTA/MiProyecto lo inicializamos como repositorio GIT.

git init

Agregar todos los archivos nuevos

git add .

Guardar los cambios

git commit

Si está en una ubicación externa usamos

git clone [url]

Una opción interesante para [url]  es usar el protocolo SSH por ejemplo: usuario@servidor:/ruta.git lo que es genial cuando no se cuenta con un servidor externo.

Con git status conocemos en el estado de cada archivo.

Herramientas de programación de Code Beautify (Online)

En esos andares naufragando por la web, buscando simplemente algo que convirtiera un XML en un JSON, me encontré una herramienta llamada XML Viewer, que cumple esa función y además, muestra el XML formateado, exporta a CSV, reduce el archivo, lo muestra como árbol, etc.

Sin embargo, XML Viewer no es la única herramienta disponible, en codebeautify.org, se pueden encontrar un sin fin de herramientas para formatear, convertir, exportar código que sin duda son muy útiles para hacer comprobaciones y transformaciones de manera rápida.

Ahí dejo el enlace >> codebeautify.org, para que veas todo por ti mismo/a, de nada xD

“Uncompilable source code” RuntimeException en NetBeans

netbeans-ide-logoProblema: Programando en Netbeans 6.9.1 al ejecutar el proyecto, un mensaje de error que dice “Uncompilable source code”.

Causa: Corrupción de los archivos temporales del IDE.

Solución: , Borrar los archivos que están en la ruta:

$USER/.netbeans/<version>/var/cache/

Nuevos Cursos MOOC en MiriadaX

A continuación, nuevos MOOCs que están a punto de empezar o en preparación, que son de interés de programadores o personas que quieren incursionar en estos ámbitos.

El primer MOOC “Gestión de proyectos Software con Git y GitHub” empieza el próximo 1 de febrero y pueden registrarse aquí: https://miriadax.net/es/web/gitmooc. Git y GitHub son herramientas muy importantes para un programador y muy demandadas en empresas. Pero si además están interesados en el nuevo MOOC de node.js y JavaScript 6 que comenzará en breve, deben hacer este MOOC. Es un nanoMOOC que se puede hacer en 2 semanas a buen ritmo o en 4 a ritmo lento.

También está abierto en este momento el MOOC “Siete habilidades clave en la era digital” en el que pueden registrarse aquí: https://miriadax.net/web/siete-habilidades-clave-en-la-era-digital-2-edicion-. Es un nanoMOOC de tipo transversal donde cada tema lo da un experto y muy corto. Se puede hacer en 2-3 días .

La octava edición del MOOC “Desarrollo en HTML5, CSS y Javascript de Apps Web, Android, …” empieza también el próximo 1 de febrero y pueden registrarse aquí: https://miriadax.net/web/html5mooc.

Pronto se abrirá un MOOC sobre diseño de aplicaciones de servidor con node.js, HTML5 y JavaScript 6. Habra otro con un proyecto completo con node.js y un tercero sobre React.js y Angular.js. Los que esten estén interesados en JavaScript 6 y node.js pueden acceder a los videos a medida que los generan en el canal de Youtube en: https://www.youtube.com/playlist?list=PLo4CW_btA6oYqRyo4z_WxZUiyObbsqb-Z. De momento están solo los videos de JavaScript 6, pero en breve se irán añadiendo node.js, BBDD, express.js y otros temas.

Información vía:

Juan Quemada
Coordinador del curso
A través de MiriadaX

Laravel: Nuestros primeros pasos – Instalación

No ahondaré mucho en cuestiones teóricas, Laravel es un Framework de desarrollo para PHP; y como la mayoría trata de ser muy organizado y liberarnos de la recodificación, este organiza todo al patrón MVC (Modelo-vista-controlador).

INSTALACIÓN DEL SERVIDOR Y DE COMPOSER

En Windows

Descargamos Xampp Server, su instalación no lleva ningún paso esotérico, luego instalamos Composer, un manejador de dependencias y librerías para PHP. Al instalarlo la cónsola de Windows automáticamente toma los comandos de Composer.

En Linux (Debian/Ubuntu)

Instalamos Lamp como se indica [aquí], luego fuimos a la cónsola y usamos los siguientes comandos.

Se descarga el instalador

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Comprobamos que el archivo se descargó correctamente

php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Ejecutamos la instalación en modo super usuario, agregando una opción para que el archivo generado de la instalación este disponible globalmente

php composer-setup.php --install-dir=/usr/local/bin/ --filename=composer

Borramos el archivo de instalación

php -r "unlink('composer-setup.php');"

Listo, hasta este punto, ya tenemos el comando composer disponible tanto para Linux, como para Windows. Lo que sigue aplica para cualquier sistema operativo.

Entonces, para crear nuestro primer proyecto… Nos vamos a la ruta donde queremos crear nuestro proyecto y colocamos el comando

composer create-project laravel/laravel NombreDelProyecto

Alternativamente

laravel new NombreDelProyecto

Listo, ya tenemos un proyecto Laravel listo para modificar y usar. Para correrlo con el siguiente comendo

php artisan serve

En el navegador deberias escribir 127.0.0.1:8000

O lo colocamos en nuestro servidor, y apuntamos a la carpeta public. y accedemos a el http://localhost/NombreDelProyecto/public o si usamos el servidor exclusivamente para el proyecto, pudieramos colocar solo el contenido de la carpeta del proyecto, quedando http://localhost/public

Conectar con MySQL por nombre de host

A veces, luego de instalar y configurar MYQSL, éste nos permite conectarnos vía dirección ip, pero no vía hostname o URL, para solventar esto basta con agregar la siguiente línea al archivo, my.cnf

[mysqld]
skip-name-resolve 

Obtener ruta de trabajo en Java

Java-duke-guitarLa siguiente instrucción retorna la ruta absoluta de trabajo o ruta actual en String, ideal para saber por ejemplo, donde se guarda un archivo. No se recomienda debido a que el programa perderá portabilidad, pero puede ser útil en casos muy específicos.

System.getProperty(“user.dir”)

Configuración de Apache2 en Debian para soportar VirtualHost

A continuación, muestro un ejemplo, que puede servir de plantilla, para configurar Apache2 con lo básico para soportar VirtualHost, por lo tanto la posibilidad de tener varios dominios y varias carpetas (incluso fuera del típico /var/www) y con soporte de URL Rewriting, importantes para instalaciones de WordPress, Moodle, CakePHP, etc.

Antes de esto, recordar que los archivos de configuración se encuentran en el directorio: /etc/apache2/sites-available/

Si bien es cierto que, se puede tener un solo archivo para toda la configuración de Apache, se recomienda tener un archivo de configuración por sistema, de tal modo que no tengamos un archivo grande, sino un archivo por sistema, fácil de editar y configurar.

También es necesario recordar que, se debe colocar en el archivo en el directorio sites-available antes mencionado para poder activarlo y desactivarlo con los comandos

sudo a2ensite example.com.conf
sudo a2dissite example.com.conf

También se puede deshabilitar la configuración por defecto:

sudo a2dissite 000-default.conf

También recomiendo tener un archivo por cada sub domain, ya que, por lo general, los subdomains son sistemas completamente separados físicamente (en el sistema de archivos) y se puede requerir configuraciones específicas y separadas.

A continuación un archivo de ejemplo que involucra todas las prácticas mencionadas.

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName subdomain.example.com
  ServerAlias subdomain.example.com
  DocumentRoot /home/user/www/subdomain.example.com/main
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  
  <Directory /home/user/www/subdomain.example.com/main>
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    # New directive needed in Apache 2.4.3:
    Require all granted
  </Directory>
</VirtualHost>

Cada modificación requiere el reinicio del servicio de Apache.

Instalando CakePHP en Raspbian… #Capítulo1

El multifacético Raspberry PI puede ser usado en infinidad de áreas tecnológicas. Particularmente estoy usando uno como “servidor de desarrollo”, es decir, le instalé Raspbian, una distribución ligera basada en Debian, y lo uso como servidor dentro de una red local. Al servidor le instalé Apache2, MySQL y PHP5.

Para descargar CakePHP, actualmente se usa el manejador de dependencias Composer… Instalarlo es tan sencillo como seguir los pasos de su página web. En la web oficial de CakePHP nos dan adicionalmente un pequeño truco para ejecutar composer como un comando desde cualquier parte.

mv composer.phar /usr/local/bin/composer

Nota: recordar tener activado el mod rewrite.

Dato: si queremos instalar openssh-server, es necesario activarlo desde las opciones de configuración del raspberry con el comando

sudo raspi-config

Luego, para descargar CakePHP, nos ubicamos en el directorio del servidor donde queremos crear el proyecto y si tenemos el composer global colocamos el siguiente comando

composer self-update && composer create-project –prefer-dist cakephp/app [NOMBRE_DEL_PROYECTO]

Con esos pasos ya tenemos la instalación básica de CakePHP y debería lucir así para la versión 3.4.4


Fuentes:

Hablemos de Javadoc (Nivel Dummy)

Hablemos de programación… Supongamos que te inicias en el ámbito laboral con Java o vas a trabajar en un equipo de desarrolladores o vas a tomar un proyecto que alguien más ha hecho.

Sin duda alguna, tratar de entender el código de alguien más pudiera ser complejo, de hecho, muchas veces he encontrado proyectos, que es más fácil hacer de cero, que intentar trabajar sobre el código existente.

Javadoc es una herramienta del lenguaje de programación Java para documentar código fuente. Es importante dedicar tiempo a esto porque la documentación hace más legible, mantenible y perdurable el código. En entornos de alta rotación del equipo que trabaja en los proyecto es casi una obligación. Así que vayamos a lo práctico.

Javadoc define una serie de convenciones que estandarizan el modo en que se documenta el código, de este modo, se logran cosas como que los IDEs de desarrollo usen esta información para generar ayudas, que la utilidad javadoc (un programa distribuido con la plataforma Java) arme documentación off-line en formato HTML, o simplemente como intradocumentación estándar para tu sitio de estudio o trabajo.

En este artículo veremos las primeras nociones para documentar Clases con lo básico (probablemente en algún artículo posterior les comente opciones de documentación adicionales para enriquecer nuestros sistemas.

En primer lugar, un comentario con Javadoc inicia con los caracteres /** y finalizan con */

Dentro podemos colocar etiquetas con la notación de annotations, es decir, precedidas de un símbolo @

Las etiquetas que podemos colocar y dónde las podemos colocar están en la documentación oficial, (<sarcasmo>aunque gracias al grandioso y esmerado trabajo de Oracle</sarcasmo> en la migración de la documentación de Java creada por Sun, es posible que encontremos muchos enlaces rotos), pero con el siguiente ejemplo, te muestro algunas opciones básicas para que puedas comenzar con una documentación útil.

Nota: Si usas Netbeans y quieres agilizar un poco la documentación con Javadoc puedes ir al menú “Tools” >> “Analyze Javadoc” y podrás generar automáticamente la documentación básica para un proyecto completo (no necesitas plugins).

package com.guzman6001.example;

import com.remote.guzman6001.utils;

/**
 * Aquí puedes agregar una descripción de la clase que estás desarrollando
 * puedes agregar código HTML como <b>Negritas</b> o las que quieras.
 *
 * @author Autor de la clase.
 */

public class JavadocExample {

/**
 * Aquí incluyes la descripción del método que vas a implementar.
 *
 * @author guzman6001
 * @param par1 Explico para que sirve el primer parámetro (opcional)
 * @param par2
 * @throws ExampleException Explicación opcional de la excepción.
 * @throws OtherException
 * @return Explica que retorna el método
 */

  public String saludo(String par1, String par2) throws ExampleException,OtherException {
    if (par1.equals(par2)){
        return ExampleException;
    }
    if (par2.isEmpty()){
         return OtherException;
    }
    return "Everything is ok!";
  }

Pareciera en el ejemplo que hay más documentación que código, pero con la buena costumbre y la ayuda de las herramientas, la documentación será algo tan natural como necesario.

🙂