martes, 28 de diciembre de 2010

Ejecutando Wsdl desde batch

Para quienes desarrollan Web Services en .Net. Aveces es necesario crear clases proxy para consumir web services. En estos casos se usa de la herramienta wsdl.exe.

Para automatizar un poco el uso de esta aplicación, cree el siguiente archivo bat, el cual explico a continuación:

cd C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin
wsdl.exe C:\del\%1.wsdl /out:C:\del\%1.cs
echo "Generado archivo " %1
cd c:/

El programa se puede nombrar como deseen, en mi caso wsdl.bat.
Acepta un parametro, que es el nombre del archivo wsdl del cual queremos un proxy.
Asume que ejecutamos desde una carpeta llamada del
Asume tambien que la dirección de wsdl.exe es la de la primera linea.

Modo de uso:
wsdl.bat Nombre_Archivo_Wsdl_Sin_Extencion

Son libres de cambiar el archivo de acuerdo a lo que necesiten hacer.

viernes, 26 de noviembre de 2010

Deprecated : Assigning the return value of new by reference is deprecated





Encontre este error preparando un demo, de un sistema que habia hecho algún tiempo atras. Basicamente tiene que ver con código obsoleto y la solución consiste en editar el archivo que indica el error corregir y cambiar el codigo obsoleto por lo que corresponda.

Llendo a la solución. Editamos el archivo PEAR.php. Y encontramos lo siguiente en la linea 569:
$a = &new $ec($code, $mode, $options, $userinfo);

la asignacion &new esta obsoleta. Por lo que se tiene que reemplazar de la siguiente manera:
$a = new $ec($code, $mode, $options, $userinfo);

En algunos foros, algunas personas recomiendan modificar el archivo php.ini y no permitir que muestre los errores. A todas luces esa no es solución.


Documentación PHP:
http://j.gs/PDu

viernes, 19 de noviembre de 2010

Ajustar ancho de un iframe desde Javascript

El siguiente código, es una prueba que realize para comprobar si se puede ajustar el ancho de un iframe desde Javascript. El cual funciona.

<html>
<head>
<title></title>
<script type="text/javascript">


function resizeIframe(){
var miIframe=document.getElementById("icontenido");
var alturaPagina= document.getElementById('ancho').value;
miIframe.style.height=alturaPagina;

}

</script>
</head>
<body>
Ancho <input type="text" id="ancho" /> <input type="button" value="Ajustar" onclick="resizeIframe()" />
<iframe name="icontenido" id="icontenido" width="100%" scrolling="no" frameborder="1" vspace="0" hspace="0">
</iframe>
</body>
</html>

Si lo anterior no funciona esta solución esta buena de igual manera:
http://www.lost-in-code.com/programming/jquery-auto-iframe-height/

lunes, 15 de noviembre de 2010

Iframe e Internet Explorer 8

En la publicación de un sitio me encontre con el siguiente problema. Que tiene relación con el uso de iframes y el navegador IE8.

El funcionamiento del sitio consiste en cargar dentro de un iframe los links desde javascript cuando el usuario elije un elemento en un menu.

El problema que se produce con IE8, es que el contenido no se carga inmeditamente en el iframe, sino hasta que se realiza alguna de estas acciones con el mouse: click o elegir un nuevo elemento en el menu.

Encontre esta solución para salir del paso, y de esa forma hacer que el menu funcione correctamente. Agregue el siguiente meta en la página donde se encuentra el menu:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">

Con este meta le indicamos al navegador que el sitio ha sido diseñado para IE7. Versión que no presenta problemas con los iframe. Por lo menos en mi caso.

Mas información:
http://goo.gl/2yyid

jueves, 23 de septiembre de 2010

Una instalación previa no se completo

Estaba instalando GXMAME via consola en ubuntu. Cuando descubri que habia un fork de este emulador (GMAMEUI esta en el centro de software de Ubuntu). Por lo que decidí parar la instalación presionando CTRL-Z. Lo cual no debí hacer. Porque cuando trate de instalar GMAMEUI me aparecio el siguiente error:

Una instalación previa no se completo



luego de eso ejecute en consola lo siguiente:
sudo dpkg --configure -a

Intente instalar nuevamente el software desde el centro de software de Ubuntu, y el error cambio:

El paquete de sistema esta roto



De acuerdo al dialogo ejecuto:
sudo apt-get install -f

con eso funciono. Espero le sirva a alguien mas

lunes, 23 de agosto de 2010

IIS APPPOOL\DefaultAppPool - Error de Inicio de sesión

Algun tiempo que no programaba en .Net. Hasta que me toco hacer una mantención sobre una aplicación vb.net y SQL 2005. El ambiente de desarrollo lo puse con SQL 2005 Express, Visual Studio 2008 e IIS 7.

Indiqué la cadena de conexión en el web.config, pero me aparecía este error que copio a continuación:

Error de servidor en la aplicación '/xxx_app'.
--------------------------------------------------------------------------------

No se puede abrir la base de datos "BD" solicitada por el inicio de sesión. Error de inicio de sesión.
Error de inicio de sesión del usuario 'IIS APPPOOL\DefaultAppPool'.


La solución esta en crear al usuario que indica el error en SQL con los permisos necesarios:

exec sp_grantlogin 'IIS APPPOOL\DefaultAppPool'
use TuBD
exec sp_grantdbaccess 'IIS APPPOOL\DefaultAppPool'


Fuente:
http://j.gs/RGi

miércoles, 7 de julio de 2010

Blocks y Regiones en Drupal (Apuntes)

Todas los temas Drupal dividen sus páginas en regiones. Estos se pueden administrar en la página de administración de los bloques del tema, en Administer/Site building/Blocks/list. Esa página proporciona una interfaz drag-and-drop para asignar un block a una región, y para controlar el orden de los bloques dentro de las regiones.

Los bloques (blocks) son fragmentos de texto o funcionalidad que estan fuera del area de contenido de un sitio web. Por ejemplo, a la izquierda o derecha de las barras laterales, en el encabezado o pie de página.

Las regiones son secciones de un sitio donde los blocks son puestos.Las regiones son creadas y expuestas por los temas (en los archivos .info del theme). Los bloques sin una region asignada no son mostrados.

sábado, 3 de julio de 2010

Facebook Connect - Drupal

Este modulo permite a los usuarios logearse en un sitio Drupal a travez de la API de Facebook (Facebook Connect).

El modulo ademas trae otras características extra:

Los usuarios pueden ver cuales de sus amigos en Facebook tienen una cuenta en el sitio Drupal.

Los usuarios pueden publicar un mensaje personalizado sobre su estado en Facebook anunciando que ha creado una cuenta en el sitio Drupal.

Los usuarios pueden invitar a sus amigos en Facebook a crear una cuenta en el sitio Drupal.

Puedes descargar la ultima versión de desarrollo desde http://github.org/vectoroc/fbconnect

La versión de desarrollo no contiene la carpeta facebook-client, por lo que es mejor bajar alguna de las versiones ofrecidas en el mismo sitio:
http://drupal.org/project/fbconnect

Traducción de:
http://drupal.org/project/fbconnect

domingo, 27 de junio de 2010

Cargar iframe desde javascript

El siguiente código es una función javascript que permite cargar un iframe cuyo id es icontenido con una página que le pasemos como parametro:

function mostrarPagina(pagina){
document.getElementById('icontenido').src=pagina;
}

La forma de uso es sencilla:

<a href="#" onclick="mostrarPagina('cierre.htm')"><span>Cierre de Mes</span></a>

jueves, 3 de junio de 2010

Utilidades online para el desarrollo Web

He encontrado algunas utilidades online que permiten avanzar gran parte del trabajo de desarrollo Web. Una parte importante es la compatibilidad con los navegadores:

http://css3generator.com/
Es un sitio que genera código css para por ejemplo cuadros con sombras

http://gradients.glrzad.com/
CSS3 Gradient Generator v2.0
Permite generar gradientes.

http://border-radius.com/
Generador de la propiedad Border Radius

http://www.widgetpad.com/694/
Este generador CSS3 funciona en exploradores basados en WebKit como Safari.

http://instantblueprint.com
Blueprint es un framework css. Esta página genera los archivos necesarios para tu web validados (un framework) HTML/XHTML y CSS válido.


http://tools.arantius.com/tabifier
Tabifier es una herramienta que permita identar código html, css y c.


http://infohound.net/tidy/
Infohound tidy permite tabular el código que le ingresamos, ademas de detectar tags no cerrados correctamente.

http://htmlpurifier.org/demo.php
Html Purifier, depura nuestro código HTML.

Procedimientos almacenados en PhpMyAdmin


MySql desde la version 5.xx soporta la creación de procedimientos almacenados.
Una de las ventajas que aporta el desarrollar aplicaciones con procedimientos es que permite un mejor rendimiento de las aplicaciones. Ya que no son tantos los datos que transitan entre el cliente y el servidor.

Probablemente quienes quieran hacer sus pruebas, creando sp (Store Procedures / Procedimientos Almacenados) en phpmyadmin se darán cuenta que no resulta tan sencillo. Por esto este tip:

Por ejemplo: Tengo una tabla que se llama usuarios y creare un procedimiento para que me retorne todos los datos de esa tabla. Esto seria de la siguiente manera:



al finalizar la sentencia END se agregan estos signos $$, mas abajo en la caja de texto que dice delimitador, se vuelven a ingresar estos signos $$. Tal cual aparece en la imagen que adjunto.



Edición 01/05/2012
Tal como lo indica  uno de los comentarios anónimos. Para obtener una lista de los procedimientos creados en una base de datos se usa la siguiente orden:



Para obtener una lista de todos los procedimientos almacenados en tu instalación de MySql, debes seleccionar la base de datos information_schema y hacer la consulta:



También se puede obtener el código de un procedimiento




Por defecto, PhpMyAdmin muestra el código en una linea. Se debe hacer click sobre el link Opciones y elegir Texto Completo.

Para cerrar el circulo. Lo que normalmente va a pasar es que quieras hacer alguna modificación al procedimiento. Pero en MySql un ALTER PROCEDURE no va a funcionar para cambiar parámetros ni el código (ver link ALTER PROCEDURE Syntax). Lo que se debe hacer es eliminar el procedimiento y volver a crearlo.




Artículos de este blog Relacionados
Otros Links


sábado, 29 de mayo de 2010

Como exportar HTML a MS Word con PHP

Un cliente me solicito que la aplicación PHP que le estoy desarrollando pueda exportar a MS Word. Es una solicitud poco usual, ya que es mas comun que las aplicaciones exporten a pdf o excel. Pero bueno. Inmediatamente fui a phpclasses.org (el nombre lo dice todo). Y encontré una clase para realizar esta tarea, se trata de HTML to DOC. La descarga que ofrece el sitio consta de dos archivos. La clase en si misma html_to_doc.inc.php y un archivo de prueba que instancia esta clase para crear el documento Word.

El archivo de prueba es como sigue(modifique la tercera linea pasandole mis parámetros ):



Por defecto el tercer parámetro de createDocFromURL que es download viene como false. Eso significa que si ejecutas el archivo tal como viene no vas a ver nada. Es necesario pasarle como parámetro true y al ejecutar la pagina de prueba podrás descargar el archivo Word.

Descarga de la clase mas un archivo de ejemplo:
Descargar

martes, 25 de mayo de 2010

Function eregi_replace() is deprecated (AMFPHP)



estoy implementando una solución Flash que permite registrar video y audio asociandolo al nombre de un usuario. Este software funciona con AMFPHP, por lo que al momento de revisar las clases en la pantalla browser de amfphp, me aparece este error asociado a los servicios php que tengo.

Error retrieving service info:

Function eregi_replace() is deprecated
C:\xampp\htdocs\Testimonio\amfphp\core\shared\util\MethodTable.php on line 506


La solución la encontré en este blog y consiste en comentar las lineas donde se usa la funcion eregi_replace por pre_replace tal como muestro en el código siguiente:

function cleanComment($comment){

$comment = str_replace("/**", "", $comment);
$comment = str_replace("*/", "", $comment);
$comment = str_replace("*", "", $comment);
$comment = str_replace("\r", "", trim($comment));

/*
$comment = eregi_replace("\n[ \t]+", "\n", trim($comment));
$comment = str_replace("\n", "\\n", trim($comment));
$comment = eregi_replace("[\t ]+", " ", trim($comment));
*/

$comment = preg_replace("`\n[ \t]+`U", "\n",trim($comment));
$comment = str_replace("\n", "\\n", trim($comment));
$comment = preg_replace("`[\t ]+`U", " ",trim($comment));

$comment = str_replace("\"", "\\\"", $comment);
return $comment;
}

Resultado




miércoles, 19 de mayo de 2010

Como agregar fondo transparente a una imagen con GIMP

Una imagen con fondo transparente, normalmente se necesita cuando se quiere incluir un botón o botones redondeados, y lógicamente no se desea que se vean los cuadros de fondo del botón.

La idea es que el diseño se vea integrado y no superpuesto contra la naturaleza :). Y la forma de lograrlo es transformando el fondo de la imagen en transparente. ¿Como hacerlo con GIMP? De eso trata este How To, ayuda memoria o como se quiera llamar.

Uso actualmente la versión GIMP 2.6.7 sobre sistema Operativo Ubuntu 9.10

Abrir la imagen con GIMP.

Presionar botón derecho sobre la imagen elegir Capa -> Transparencia -> Añadir canal alfa

Nuevamente presionar botón derecho elegir Seleccionar -> Por Color -> Clic sobre la imagen

Por ultimo botón derecho Editar -> Cortar y guardas en un formato que soporte la transparencia como es PNG.

Como unir partes de un rar en Ubuntu/Linux

Para unir las partes de un Rar en este formato
Software.part01.rar
Software.part02.rar
Software.part03.rar

primero que nada desbes tener instalado rar en tu maquina
sudo apt-get install unrar

luego puedes usar cat para unir los archivos

Ejemplo:
cat Software.part01.rar Software.part02.rar Software.part03.rar > Software.rar

o bien

cat Software.part* > Software.rar

miércoles, 14 de abril de 2010

FLVPlayback - Video en una pelicula Flash



FLVPlayback es un componente Flash que permite linkear y controlar un video dentro de una película. Se puede configurar en el Component Inspector (Window -> Component Inspector o Shift+F7 en Windows).

Algunas propiedades importantes son:

autoPlay : true indica que se carga el video al lanzar la pelicula.Valor true por defecto.
Skin : Permite seleccionar distintas formas en que se mostrará el control.
source : Indica la ruta del video a mostrar (ActionScript3).

En cuanto a la propiedad source, si trabajas con ActionScript2 no vas a encontrar esa propiedad sino contentPath.

viernes, 9 de abril de 2010

Aprendiendo VIM

VI / VIM es un poderoso editor, que se puede usar como IDE de propósito general. A pesar de lo que se pueda pensar. Trabaja con coloreado de sintaxis, numerado de lineas, identación y una larga lista de características.

Los usuarios de Ubuntu contamos con una versión reducida de este editor, por lo que para instalar la versión full se debe hacer lo siguiente:

Desintalar la versión existente:
apt-get remove vim-tiny

Luego instalar la versión full:
sudo aptitude install vim-full

sudo apt-get install vim

les recomiendo una vez instalado revisar el tutor, escribiendo en una consola:
vimtutor es



Documentación de VI
http://j.gs/RGp

jueves, 11 de febrero de 2010

Generador de Passwords para Apache

Con Apache es posible controlar el acceso a las páginas solicitando usuario y password. La forma en que se puede hacer es configurando un archivo .htpasswd en la ruta del servidor que queremos proteger.

Encontre esta utilidad para generar los archivos .htpasswd y .htaccess llamada:
htpasswdgenerator
http://www.htpasswdgenerator.com/download_htpasswd_generator.html

Si quieres obtener el path completo del server, dato útil en el archivo .htpasswd debes comprar la versión con esa funcionalidad.

Pero si quieres seguir usando la versión gratis, guarda el script siguiente en un archivo, subelo a la carpeta donde esta el .htpasswd y lo llamas en el navegador. Te dará la ruta completa que debes ingresar.

<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>

el contenido del archivo .htaccess queda como sigue, lógicamente cambie mis valores.

#---------------------
AuthName "restricted access"
AuthType Basic
AuthUserFile "/home/a/carpeta/html/admin/.htpasswd"
Require valid-user
#---------------------

y el .htpasswd quedo de la siguiente manera


#-->> This file was generated in 'Htpasswd Generator' (12/02/2010) <---#
#---> www.htpasswdgenerator.com <---#
#---> <---#
#---> Total users: 1 <---#
#---> Disabled users: 0 <---#
#--->>+++

usuadmin:$apr1$a54.....$gbHtLsfS0vuGROhwfiudUi0
#-->>User extra data<---#
#+++>FirstName=admin<+++#
#+++>RealPassword=gSghW8h8q3083w==<+++#
#+++>Email=correo@dominio.cl<+++#
#+++>AddDate=40221<+++#
#--->>+++

martes, 9 de febrero de 2010

CRMOS Resurrection

CRMOS es un proyecto Open Source que intente levantar hace un año mas o menos. El desconocimiento de la tecnología (NHibernate), un par de usuarios que me hicieron dudar sobre si era mejor hacer un CRM o ERP, el proyecto quedo stand by. Ahora vuelvo a la carga pero con un excelente programador comprometido a Full. Mas conocimiento y la experiencia de un intento ya fallido.

Por lo que estoy revisando el proyecto y ver que cosas van a cambiar en la página del proyecto.

Definición del proyecto
http://code.google.com/p/crmos/

Requerimientos
http://code.google.com/p/crmos/wiki/Requerimientos

Como empezar
http://code.google.com/p/crmos/wiki/ComoEmpezar

Interfaz
http://code.google.com/p/crmos/wiki/Interfaz

Estilo
http://code.google.com/p/crmos/wiki/Estilo

Tablas
http://code.google.com/p/crmos/wiki/Tablas

martes, 5 de enero de 2010

Exportar desde Excel a MySql

xls2mysql es un script PHP que permite gestionar un archivo Excel para convertir sus datos en datos MySql.

Para utilizarlo se deben seguir los siguientes pasos:

Descargar el script
http://scripts.ringsworld.com/database-tools/xls2mysql/

Publicarlo
http://tuhost/xls2mysql/xls2mysql.php

Tras los pasos anteriores, aparece una pantalla con dos pestañas Upload y MySql, en upload permite subir el excel. Una vez que se sube se transforma en data y te muestra el contenido. En la pestaña MySql muestra el código. Este código debe ser ejecutado desde el cliente MySql, y crea la estructura de la tabla y llena los campos en la tabla MySql...

recomendado funciona perfecto...