miércoles, 30 de agosto de 2017

FPDF construir y mostrar textos HTML

Cuando se trabaja con la creación de fpdf en nuestra web lo primero que nos llega a la mente es FPDF, sin embargo es un lió crear un simple texto con esta herramienta, ya que su desplazamiento y cuadros de texto los maneja a través de celdas.

por ejemplo si quisiera crear un pequeño reporte:

habilidades-web.blogspot.com
30/08/2017


Se extiende la siguiente constancia a:
Ing. Alfonso Medina Duran

Por medio de la presente se informa que al empleado Alfonso Medina Duran con numero
de empleado 1234 le es autorizado salir de vacaciones un total de 10 dias, los cuales serán aplicados a partir del día 31/08/2017



_________________________________
Firma de quien autoriza


Para el cual primeramente pensaria en utilizar un multicell, sin embarco al momento de incluir la mezcla de fuente negrita con normal, no seria posible, tendríamos que utilizar cell normal e identificar las coordenadas donde irían las palabras en negritas.... un caos.

Con las siguientes funciones que nos provee los mismos tutoriales de fpdf este reporte se vuelve super sencillo solo construyendo el texto con las etiquetas correspondientes, este caso practico tenemos que usar <b>Alfonso Medina Duran</b> para que aparezca con letra negrita con la función WriteHTML.




<?php
require('fpdf.php');
class PDF extends FPDF{
protected $B = 0;
protected $I = 0;
protected $U = 0;
protected $HREF = '';


function WriteHTML($html){
// Intérprete de HTML
$html = str_replace("\n",' ',$html);
$a = preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
foreach($a as $i=>$e){
if($i%2==0){
// Text
if($this->HREF)
$this->PutLink($this->HREF,$e);
else
$this->Write(5,$e);
}else{
// Etiqueta
if($e[0]=='/')
$this->CloseTag(strtoupper(substr($e,1)));
else{
// Extraer atributos
$a2 = explode(' ',$e);
$tag = strtoupper(array_shift($a2));
$attr = array();
foreach($a2 as $v){
if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
$attr[strtoupper($a3[1])] = $a3[2];
}
$this->OpenTag($tag,$attr);
}
}
}
}


function OpenTag($tag, $attr){
// Etiqueta de apertura
if($tag=='B' || $tag=='I' || $tag=='U')
$this->SetStyle($tag,true);
if($tag=='A')
$this->HREF = $attr['HREF'];
if($tag=='BR')
$this->Ln(5);

}

function CloseTag($tag){
// Etiqueta de cierre
if($tag=='B' || $tag=='I' || $tag=='U')
$this->SetStyle($tag,false);
if($tag=='A')
$this->HREF = '';

}

function SetStyle($tag, $enable){
// Modificar estilo y escoger la fuente correspondiente
$this->$tag += ($enable ? 1 : -1);
$style = '';
foreach(array('B', 'I', 'U') as $s){
if($this->$s>0)
$style .= $s;
}
$this->SetFont('',$style);
}

function PutLink($URL, $txt){
// Escribir un hiper-enlace
$this->SetTextColor(0,0,255);
$this->SetStyle('U',true);
$this->Write(5,$txt,$URL);
$this->SetStyle('U',false);
$this->SetTextColor(0);
}
}


$html = 'Por medio de la presente se informa que al empleado <b>Alfonso Medina Duran</b> con numero de empleado <b>1234</b> le es autorizado salir de vacaciones un total de <b>10 dias</b>, los cuales serán aplicados a partir del día <b>31/08/2017</b>';


$pdf = new PDF();

$pdf->AddPage();
$pdf->SetLeftMargin(45);
$pdf->SetFontSize(14);
$pdf->WriteHTML($html);
$pdf->Output();

?>




Fuente

http://www.fpdf.org/es/tutorial/tuto6.htm




Cualquier duda o aclaración, estaré para servirte
Ing. Alfonso Medina

Uso de repositorios para el desarrollo de aplicaciones WEB

Uso de repositorios para el desarrollo de aplicaciones WEB


Resumen


Dentro del mundo de la programación web se pueden encontrar numerosas herramientas que nos ayudan en el desarrollo de nuestras aplicaciones, de lo más utilizado y con extensas  comunidades, foros de contribuyentes se encuentran lenguajes como ASP.NET, PHP, NODE.JS, JAVA, PYTHON, PERL entre muchos otros, sin mencionar el uso de frameworks, cuya función principal es proveer herramientas que le faciliten al desarrollador la construcción de un código HTML el cual es interpretado por el navegador web del usuario final, a su vez se tiene que elegir el servicio de hospedaje de la aplicación el cual puede ser un servicio de hosting o el uso de repositorios. Como es bien sabido las tecnologías están en constante evolución y es un hecho que día a día un buen programador debe actualizar su conocimiento y sus metodologías de programación para evitar el que sus desarrollos se vuelvan obsoletos y sean superados por nuevos desarrolladores con nuevas metodologías de desarrollo que los vuelve más rápidos, eficientes y ordenados.


Introducción


Dentro de este artículo estudiaremos las nuevas herramientas para el desarrollo web y hablaremos de las ventajas que traen consigo, utilizaremos solo herramientas OpenSource por sus grandes comunidades de contribuyentes, quisiera dejar en claro que, el que sean herramientas de código abierto no las hace la mejor opción siempre.


Metodología


El desarrollo de este artículo se basa en la experimentación y evaluación de las herramientas ya mencionadas, analizaremos las cualidades que nos ofrece el manejo de repositorios en la nube, esta nueva tecnología que nos ayuda con el manejo de versiones durante el desarrollo de nuestras aplicaciones así como una excelente herramienta para trabajar en equipo o desarrollo distribuido.

Antes que nada debemos conocer algunos de los conceptos básicos para el uso de de estas herramientas:

Que es un Repositorio Remoto?
Un repositorio remoto es una metodología de desarrollo donde puedes manejar versiones de tu proyecto que están hospedadas en Internet. Puedes tener varios de ellos. Colaborar con otras personas implica gestionar estos repositorios remotos y enviar y traer datos de ellos cada vez que necesites compartir tu trabajo.
Que es GIT?
Git es esa herramienta que te ayuda con la gestión de tus repositorios remotos. cuenta con una gran variedad de herramientas que te facilitan el trabajo en equipo, control de versiones, seguridad de accesos, registro de incidencias, monitoreo de avance, entre otras cosas.

Que es un Framework?
Un framework es la base, esos pilares donde construir nuestro edificio de codigo, cuenta con funciones de asistencia, módulos normalizados que sirven de base para la organización, un framework provee una estructura y una especial metodología de trabajo.

Que es MVC?
MVC son las siglas de Models, Views, Controllers (Modelo Vista Controlador), es una arquitectura de software que separa los datos de una aplicación, las interfaces para el usuario y la lógica de nuestro desarrollo.


Resultados


Para entender cómo funcionan todas estas herramientas mostraremos cómo probar una sencilla aplicación “HOLA MUNDO DESDE UN REPOSITORIO USANDO UN FRAMEWORK” involucrando todas estas tecnologías, utilizaremos el framework CodeIgniter en su versión 3.1.5 una herramienta muy ligera y poderosa con arquitectura MVC para el desarrollo de aplicaciones web en código PHP, gestionaremos un repositorio que almacenaremos en www.gitHub.com, un hospedaje con www.openshift.com , para la gestión de dicho repositorio utilizaremos GIT, todo desde un equipo con sistema operativo linux (Lubuntu 16.04.1 LTS) .
openshiftCodeigniter.png

Paso 1. Obtener servicio de hosedaje con openshift.com y crear un nuevo proyecto.
Por fines prácticos contrataremos un servicio de hospedaje gratuito que nos ofrece cabida a un solo proyecto, 1GB de memoria, una cuota de 1GB de tránsito mensual y 1GB de almacenamiento, para ello hay que ir a la pagina de www.openshift.com y entrar en su apartado de precios, buscar el servicio mencionado.

consola_openshift.pngUna vez contratado el hospedaje con openshift nos daremos a la tarea de crear un proyecto nuevo, para ello solo tendremos que entrar con nuestros datos de registro en openshift nos dara la opcion de crear un nuevo proyecto, nos preguntara en que lenguaje desarrollaremos el proyecto, para este caso practico elegimos PHP, una ves terminado openshift nos proveera un acceso web a nuestra aplicacion en este caso practico hemos conseguido: http://prototipo-prototipo2.a3c1.starter-us-west-1.openshiftapps.com/
crearemos un repositorio en www.github.com que ligaremos con openshift, en este caso practico eh creado https://github.com/4lfonsomedina/prototipo.git

Paso 2. Conectarnos al repositorio mediante GIT
Debemos instalar instalado GIT en nuestro equipo linux consola con el comando:

$ sudo apt-get install git-all

Para sistemas windows solo hay que descargar git desde su pagina official https://git-scm.com/

Dentro de la línea de comandos seleccionaremos la carpeta donde queremos copiar el repositorio proveído por GitHub.com, mediante el comando “cd” en este caso:

$ cd Documentos/web

Con el comando “git clone” bajaremos el contenido del repositorio y así poder trabajar en nuestro equipo, en este caso práctico es


Listo ya esta listo nuestro repositorio en nuestro equipo listo para realizar nuestras primeras versiones del software.

Paso 3. HOLA MUNDO
Al clonar el repositorio en nuestro equipo, GIT irá registrando todos los cambios que hagamos dentro de de la carpeta del proyecto, esa es la magia de Git, almacena todos los cambios hechos durante el desarrollo de tu aplicación y en caso de que algún codigo se sobreescriba y se pierda (esto sucede con mucha frecuencia cuando se trabaja en equipo).

Dentro de la carpeta que se creo al clonar el repositorio, crea un nuevo archivo con el nombre index.php y dentro de el pondremos nuestra primera linea de código:
<?= ‘<h1>HOLA MUNDO DESDE UN REPOSITORIO</h1>’; ?>

Y veremos que sucede con Git mediante el comando
$ git status

Nos mostrará el cambio que hicimos, “un nuevo archivo llamado index.php”, y para agregar los cambios a nuestro avance usaremos el comando:
$ git add .

Ahora si ejecutamos de nuevo git status no mostrará cambios pendientes por agregar,
ahora solo es cuestión de comentar nuestros cambios y subirlo al repositorio:
$ git commit -a -m “Este es un comentario nuevo”
$ git push

build.pngPara ver nuestros cambios realizados en nuestro repositorio en el url de nuestra aplicacion que nos provee openshift, tenemos que entrar a nuestro web panel e indicarle a nuestra aplicación que se sincronice presionando en start build, una vez hecho esto podremos ver nuestro avance en el enlace de la aplicacion, en este caso practico se puede observar en http://prototipo-prototipo2.a3c1.starter-us-west-1.openshiftapps.com/


Paso 4. HOLA MUNDO v2.0
Una vez configurado nuestro repositorio y sincronizado nuestro equipo, es momento de implementar un framework MVC, para este caso práctico fue instalado codeigniter el cual tiene que descargarse desde su pagina official https://codeigniter.com/ , se descargara un archivo con extensión ZIP y el contenido se tendrá que extraer dentro de la carpeta donde tenemos clonado nuestro repositorio y subiremos los cambios como en el paso 3.

Al entrar en el enlace de nuestra aplicación tendremos que ver el mensaje de bienvenida de codeigniter, esto nos indica que hemos cargado correctamente codeigniter en nuestro repositorio.

En este artículo no profundizaremos en codeigniter, lo único que haremos será es cambiar el mensaje de bienvenida por nuestro mensaje. para ello entraremos en las carpetas de nuestro proyecto en la ruta application/views/ y modificaremos el contenido del archivo welcome_message.php, en este caso práctico borraremos todo el contenido y pondremos:
<?= ‘<h1>HOLA MUNDO 2.0 DESDE UN REPOSITORIO USANDO UN FRAMEWORK</h1>’; ?>

Realizamos el paso 3 de nuevo y si todo salio bien tendríamos que ver nuestro mensaje “HOLA MUNDO 2.0 DESDE UN REPOSITORIO USANDO UN FRAMEWORK
navegador.png

Conclusiones


Aunque en este proyecto se abordó a una pequeña escala, gracias OpenShift puedes administrar todas tus aplicaciones, controlar sus diferentes versiones y trabajar en de manera distribuida, cualidades de mucho valor para una empresa dedicada al desarrollo de software, sin mencionar los módulos que ofrece el utilizar un framwork MVC para el desarrollo de aplicaciones.

Al adentrarse en el uso de estas herramientas parece una implementación complicada pero después de una considerable lectura y práctica te das cuenta de que estas herramientas tienen mucho poder, son de gran ayuda y te solucionan una serie de problemas que suceden cuando se trabaja de manera distribuida con métodos convencionales, dentro de este proyecto solo vimos la punta de un inmenso iceberg.

Referencias

https://codeigniter.com/




Cualquier duda o aclaración, estaré para servirte
Ing. Alfonso Medina

Interfaz fpga - cloud computing

Interfaz fpga - cloud computing Ing. Alfonso Medina Duran 4lfonsomedina@gmail.com Proyecto para la materia de Sistemas Inteligent...