viernes, 8 de mayo de 2015

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 


martes, 24 de septiembre de 2013

Eliminar MBLPCBlock

Eliminar MBLPCBlock

Hace días me llego una computadora con muchos archivos con extensión .html y buscando en internet encontre esta solución.


MBL Advisory (MBLPCBlock) es un malware del tipo ransomware, que cifra los archivos que se encuentran en el disco duro del usuario agregándoles una extensión extra .html haciendo que cuando se intenten abrir, el usuario sea dirigido a un sitio web mblpcblock.in/index.php en donde se le solicita una cantidad económica para descifrar los ficheros.


Ransom.MBLPCBlock encripta los siguientes tipos de archivo:
.txt, .xls, xlw, .docx, .doc, .cer, .key, .rtf, .xlsm, .xlsx, .xlc, .docm, .xlk, .htm, .chm, .text, .ppt, .djvu, .pdf, .lzo, .djv, .cdx, .cdt, .cdr, .bpg, .xfm, .dfm, .pas, .dpk, .dpr, .frm, .vbp, .php, .js, .wri, .css, .asm, .html, .jpg, .dbx, .dbt, .dbf, .odc, .mde, .mdb, .sql, .abw, .pab, .vsd, .xsf, .xsn, .pps, .lzh, .pgp, .arj, .gzip, .gz, .pst, .xl

El cifrado utilizado por el malware es realmente RC6 con un simple ofuscación XOR. Dado que la clave de cifrado es estática, el descifrado de los archivos cifrados si es posible (al menos en las variantes de MBLPCBlock encontradas hasta este momento).


Para la solución leer el manual:

Guía de cómo eliminar el Ransomware MBL Advisory (MBLPCBlock) 

de Elpiedra en:  http://www.forospyware.com/t460439.html




Descargue e instale: Malwarebytes Anti-malware
y Decrypt_MBLblock.exe  de Fabian Wosar de Emsisoft GmbH

Saludos =)


lunes, 29 de julio de 2013

Rootear Sony Ericcson Walkman Wt19a

Pase días buscando como rootear mi cel Sony Ericcson Wt19a  Walkman e intente con varias utilerías que no mencionare por ser ineficaces.

Hasta que un día encontré la página de http://elbauldelprogramador.com/programacion/android/rootear-samsung-galaxy-s-gt-i9003/

Donde se explica de manera fácil como rootear a un dispositivo (otro  modelo, pero funciona).

Recomiendo lo hagan desde windows.

En la página que refiero anteriormente, pide que entren a http://shortfuse.org/?p=80 desde donde se dice que se puede descargar SuperOneClick, lo cual a la fecha de hoy (29 de julio del 2013) no es posible. Entonces me dirijí a CNET, y busqué el software: http://es.download.cnet.com/SuperOneClick/3000-2094_4-75447027.html

y de ahí si es posible descargarlo.

Es un zip, descompriman y ejecuten la aplicación.

Ahora sí, continúen con el paso dos que Alejandro Alcalde menciona, así como sus tips:

  • Es necesario configurar nuestro terminal en modo depuración:
    Settings -> Application -> Development -> USB debugging
     
  • Tenemos que asegurarnos que no tenemos montada la tarjeta SD:
    Settings -> SD card and phone storage -> Unmount SD card

Enhorabuena, no deben tener ningún problema.

Saludos y buena Tarde =)

sábado, 1 de septiembre de 2012

Problemas con spooler de windows 7

Hace días dejo de funcionar el servicio de impresion de windows 7 print spooler, este iniciaba pero se detenia y por lo tanto era imposible ver las impresoras. 

Buscando en la red encontre las siguientes soluciones: 

La primera es que tengas instalado ccleaner. Con esto vacias el caché de windows y te permite que los análisis de las herramientas no sean bloqueadas. 

El segundo paso es abrir el Task Manager (ctrl + alt + spr) y detener los procesos de aplicaciones que no sean del sistema. 

Tercero, entra a http://support.microsoft.com/kb/929833 y sigue las instrucciones para reparar los archivos de sistema que esten dañados. Esto permitira que sea mas estable el windows.

Cuarto, descargamos Microsoft fix it, el cual reparará cualquier problema con las impresoras: http://windows.microsoft.com/en-US/windows-vista/Troubleshoot-printer-problems 

Ahora reiniciamos nuestro sistema. 

Desinstala tu impresora. Baja la último versión del driver de tu impresora y reinstala. Recuerda sustituir los drivers si te pregunta el sistema. 

Prueba imprimiendo algún archivo. 

Felicidades. 

No olvides bajar las actualizaciones de tu sistema usando windows update.