jueves, 21 de enero de 2016

Windows 10 + apache 2.4 y php 5.5



Actualmente Apache httpd se tiene que descargar de páginas alternativas donde lo han compilado.

Instalando apache 

Descargue desde: http://www.apachehaus.com/cgi-bin/download.plx

Descomprima en su pc, en mi caso renombro la carpeta para que sea mas fácil:

E:/servidor/Apache24

Edite el archivo Apache24/conf/httpd.conf  con los valores de la ruta de la carpeta donde se localiza apache

Define SRVROOT "E:/server/Apache24"

DocumentRoot "E:/server/www"
<Directory "E:/server/www">


guarde e inicie desde una consola y ejecute el archivo

Apache24/bin/httpd

Inicie su explorador y escriba en la barra de dirección

localhost

El empaquetado viene con una guía para mayor información.
(httpd-2.4.18-x64-vc11/readme_first.html)


Instalando PHP5

Intente descargar varias versiones de php pero la única que tiene la librería php5papache2_4.dll es la
php-5.5.5-Win32-VC11-x64.zip 
 

Descargue php 5 desde http://windows.php.net/downloads/releases/archives/ 
Descomprima y coloque en una ubicación adecuada

E:/servidor/php


Duplique el archivo php.ini-production como php.ini

Edite el archivo httpd.conf de apache para configurar su uso con php

Agrege y edite las siguientes líneas

LoadModule php5_module "E:/server/php/php5apache2_4.dll"

DirectoryIndex index.php index.html
AddType application/x-httpd-php .php

Guarde y reinicie apache

verifique en httpd://localhost con un archivo que tenga código php


Ejecutando  Apache como servicio


Para agregar apache como un servicio de windows y se ejecute desde el inicio, ejecute el siguiente comando desde la consola:

httpd.exe -k install -n "Apache24"

Ahora puede verificar en el administrador de servicios que Apache24 ha sido agregado.

Es todo, espero agregar el uso de mysql próximamente.

Saludos =)


viernes, 8 de mayo de 2015

EZPDF especificar color en RGB


EZPDF es una gran librería para crear proyectos sencillos, sin embargo, conforme se avanza, deseamos tener más personalizada la salida de datos.

Con ese objetivo me encontré con un problema, darle un color específico a las tablas, celdas, líneas, etc.

Al ver las especificaciones de las funciones leí en el manual que se usa RGB  para dar color a los elementos,  entonces lo primero que hice fue poner los colores en el formato 255,255,255. Desafortunadamente no funciono, me daba un color azul turquesa o un blanco. Cosa fatal cuando tiene uno prisa.  El manual en uno de los apartados menciona que los colores deben estar en un rango de -0,1. Así que comencé a experimentar con poner (0, 0.7, 0.8) y tenía los mismos resultados: color turquesa o blanco.

La solución

Resulta ser que tenemos que dividir el 1 entre 255 y multiplicar por el color deseado en rgb

Color deseado RGB : 0,157,255      

Color deseado EZPDF:  = (1/255) * 157 = 0.61

setStrokeColor(0, 0.61,1)

o  para las celdas de las tablas

'shadeCol2' => array(0.81,0.84,0.9)


Nota: en algunos sitios encontre valores mayores a uno en sus ejemplos. No se la razón por que tambien funciona con esos numeros :/

EZPDF Centrar datos en columnas de las tablas de documentos PDF

Hace poco estaba realizando un reporte en pdf, para lo cual necesitaba listar datos en una tabla. Sin embargo, todas las columnas tenian el mismo ancho. El manual  PHP Pdf Creation de R&OS esta algo incompleto, así que buscando en internet por horas, encontré por casualidad como resolverlo.

La solución

El manejo de datos en EZPDF se hace mediante array
Para ello hay que pasarle los parametros al objeto que construye la tabla en la variable de opciones poniendo como clave de referencia cols que refiere a las columnas, y después describir el comportamiento de cada una de ellas a través de otro array. Es decir, es un array de arrays de opciones.


Ejemplo

$options['showHeadings'] =1;
$opcions['showlines'] = 1;
$options['shaded'] =1;
$options['shadeCol'] =array(0.81,0.84,0.9);
$opcions['shadeCol2'] = array(0.91,0.93,0.95);
$options['xPos'] ='left';
$options['xOrientation'] ='right';
$options['textCol'] = array(0,0,0);
$options['width'] =500;
$options['cols'] = array('col_num'=>array('justification'=>'center', 'width'=>30),'col_datos'=>array('justification'=>'left'),'col_total'=>array('justification'=>'center', 'width'=>100) );
$pdf->ezTable($data, $titles, '', $options);

Salida (Claro será en su documento pdf, esto es solo ilustrativo)


num datos total


Saludos

PHP Evaluar una expresión matemática (fórmula) almacenada en un string

En ocasiones hay datos almacenados en algún string con fórmulas que deseamos ejecutar en php, por ejemplo 2+4*6.  Una solución es recorrer el string caracter por caracter para comparar operadores, variables y elementos, pero eso nos llevaría un buen rato de programar.

La solución

Usar la función eval()

<?php
//php 4.3
$formula = "2+4*6";
eval(" $var = $formula; ");
echo $var;
?>


<?php
// php 5,6 y 7
$formula = "2+4*6";
$var = eval("return ".$formula.";");
print $var;

?>


Nuestra salida es 26


Así de fácil

jueves, 4 de septiembre de 2014

Solución Dspace Jspui Internal System Error


Si usted instalo Dspace posiblemente encontró este error:




Después de leer muchos foros encontré que esto es provocado por una configuración inadecuada para solr en [dspace src]/build.properties.


Antecedentes

Instalación de Dspace

  • Debian 7
  • Uso de tomcat7
  • Compilación con Openjdk7-jdk
  • Instalación de dspace-4.2 mediante src
  • Copia de la carpeta dspace/webapps/solr a tomcat7/webapps/



Problema

Una vez instalado Dspace al entrar a jspui se encuentra el mensaje Internal System Error, el cual es desconcertante.

Lo primero que hay que hacer es verificar los logs que se encuentran en [dspace]/log
Ahi encontramos que:

No hay permisos en los directorios para que pueda funcionar solr.

Lo cual lo solucionamos con mi anterior post: dspace-y-solr-problemas-al-ejecutar

Después de solucionar esa parte, y ver que solr funcionaba perfectamente al ingresar de manera local al servidor http://localhost:8080/solr

resulto que jspui seguía con el mensaje de Internal system error.

Entonces volvimos a los logs y encontramos ahora este nuevo error:

org.apache.catalina.core.StandardWrapperValve invoke GRAVE: El Servlet.service() para el servlet [jsp] en el contexto con ruta [/jspui] lanzo la excepcion [org.apache.jasper.JasperException: javax.servlet.ServletException: org.dspace.plugin.PluginException: org.dspace.app.webui.components.RecentSubmissionsException: org.dspace.browse.BrowseException: org.dspace.discovery.SearchServiceException: Server at http://192.168.1.1:8080/solr/search returned non ok status:403, message:Prohibido] 

Como Resolverlo

El problema en realidad es que al configurar los detalles de Dspace debemos especificar el uso de  solr de manera local, tomando en cuenta que solr solo responde a peticiones locales (No encontré como darle salida a una petición externa, ya que por default prohíbe el monitoreo externo)

Lo que hice fue recompilar Dspace ya que no encontré donde cambiar la ruta en Dspace que apunta a Solr.


Primero borramos las carpetas de las aplicaciones de Dspace en tomcat7

#  cd  /var/lib/tomcat7/
#  cd webapps/
# rm -R jspui/
#  rm -r oai/
# rm -r xmlui/
#  rm -r solr/

y desde http://tuservidor:8080/manager/ paramos y desplegamos las tres aplicaciones.

Entonces entramos a [dspace-src]/dspace y editamos el archivo  build.properties

# cd /home/cated/src/dspace-4.2-src-release/
# nano build.properties

solr.server=http://localhost:8080/solr

Guardamos con Ctrl + o

y seguimos los pasos para recompilar  Dspace: Rebuild Dspace 

en resumen, 

# su dspace
# cd /home/cated/src/dspace-4.2-src-release/dspace/
mvn package
cd [dspace-source]/dspace/target/dspace-[version]-build.dir/
ant update

vaya a su directorio dspace

# cd /ruta/dspace/webapps
# cp jspui /var/lib/tomcat7/webapps/
# cp -R jspui /var/lib/tomcat7/webapps/
# cp -R oai/ /var/lib/tomcat7/webapps/
# cp -R xmlui/ /var/lib/tomcat7/webapps/
# cp -R solr/ /var/lib/tomcat7/webapps/

# /etc/init.d/./tomcat7 restart

Verificamos que todo funcione bien 


http://tuservidor:8080/manager/

y verificamos nuestro jspui de Dspace

http://tuservidor:8080/jspui




¡¡Felicidades, ya está funcionando al 100!!


Notas finales

Como pueden observar son detalles que se nos llegan a pasar. Pronto, en un nuevo post: Como crear un tema personalizado para Dspace.







miércoles, 3 de septiembre de 2014

Dspace y solr: Problemas al ejecutar solr # Cannot create directory

Al instalar Dspace 4.2 encontré que había un error al utilizar solr

Antecedentes


  • Debian 7
  • Uso de tomcat7
  • Compilación con Openjdk7-jdk
  • Instalación de dspace-4.2 mediante src
  • Copia de la carpeta dspace/webapps/solr a tomcat7/webapps/


Problema
Como lo hacia desde una  maquina cliente, no veía que solr tenia problemas de funcionamiento.

Para ver la salida desde la consola basta con un 

root@magma#wget http://localhost:8080/solr > salida.html

Lo cual devuelve lo siguiente:

search: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Cannot create directory: /usr/local/dspace/solr/search/data/index
statistics: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Cannot create directory: /usr/local/dspace/solr/statistics/data/index
oai: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Cannot create directory: /usr/local/dspace/solr/oai/data/index


Como Resolverlo

Vaya a su Directorio Dspace

root@magma# cd /dspace/

cambie la asignación de propiedad de la carpeta solr/  (solo a la carpeta sin recursividad)

root@magma# chown tomcat7:dspace solr/

cambie los permisos de las carpetas statistics/  search/ oai/


root@magma# chmod 775  statistics/
root@magma# chmod 775  search/
root@magma# chmod 775  oai/

reinicie tomcat

root@magma#/etc/init.d/./tomcat7 restart

Vuelva a general el archivo de salida.

root@magma#wget http://localhost:8080/solr > salida2.html

Notas finales 

Como ven, esto lo soluciona sin problema, la salida muestra datos donde funciona.
(Recomendable verificar en un navegador de manera local en el servidor http://localhost:8080/solr/ y puedan ver las estadísticas y el funcionamiento) 



viernes, 7 de febrero de 2014

Usar YUI de un repositorio local

Hace meses comencé a trabajar con YUI (Yahoo User Interface ) un framework de javascript que te permite manejar efectos y acceder a un sin fin de funciones para dar una apariencia más dinámica a los sitios web.

Todo funcionaba bien, hasta que en una muestra me quede sin Internet, entonces el sitio no funciona por que hace peticiones la librería al servidor en línea de Yahoo donde están alojadas las librerías. Aun cuando descargues yui-min.js si utilizas algún módulo extra este es solicitado a yahoo.

Buscando en todas las páginas oficiales encontre la solución. Primero hay que bajar todo el framework en https://github.com/yui/yui3/releases , en mi caso baje http://yui.zenfs.com/releases/yui3/yui_3.14.1.zip 

Descomprimimos y lo colocamos en alguna carpeta a la que pueda acceder nuestro proyecto en nuestro servidor local, por ejemplo:  elproyecto/librerias/yui/

En la página html agregamos: 


<script type="text/javascript" src="yui-min.js"></script>

en este caso, es la librería básica para usar YUI

y después agregamos


<script>
<!-- 

var Y = YUI({base: 'librerias/yui/build/'});

Y.use('node', 'json','node-load', function(Y) {
  
  //// codigo a ejecutar
  
 });


y esto es lo suficiente para que trabaje YUI de manera local.

Saludos