jueves, 8 de agosto de 2013

html2pdf error: Impossible de charger l'image

html2pdf error: Impossible de charger l'image

Al utilizar el componente HTML2PDF el cual es un conversor de HTML a PDF escrito en php, me salió el siguiente error:

Fatal error: Uncaught <span style="color: #AA0000; font-weight: bold;">ERREUR n°6</span><br>Fichier : /var/www/html/assets/html2pdf_v4.03/html2pdf.class.php<br>Ligne : 1319<br><br>Impossible de charger l'image thrown in /var/www/html/assets/html2pdf_v4.03/html2pdf.class.php on line 1319

Este error del componente html2pdf sale cuando estás itentando convertir un archivo HTML a PDF y el html contiene imágenes.

Esto es porque las rutas de las imágenes no deben ser urls absolutas ni relativas a algún sitio, deben ser rutas físicas.

Solución.

Lo que deben hacer es colocar las rutas fisicas de las imágenes como en el siguiente ejemplo:

<img src='/var/www/html/assets/img/laimagen.png' />

Espero les sirva.

miércoles, 7 de agosto de 2013

Reemplazar todos los caracteres con javascript

Reemplazar caracteres dentro de una cadena con javascript


Para reemplazar caracteres dentro de una cadena de texto con javascript se utiliza la función replace.
Sin embargo por defecto la función replace unicamente va a eliminar la primer ocurrencia del string buscado a menos que se especifique que se deben eliminar todas las ocurrencias del mismo.

Ejemplo:
En este caso se intenta reemplazar todas las ocurrencias del texto abc por un espacio en blanco. Lo primero que hacemos es un replace simple sin embargo esto sólo eliminará la primer ocurrencia del string buscado.

var str = "abc1, abc2, abc3, abc4 y abc5";
str=str.replace("abc"," ");
//str = " 1, abc2, abc3, abc4 y abc5";

Por lo tanto hay que especificar que se quieren eliminar todas las ocurrencias dentro de la cadena. Para esto se debe especificar lo siguiente:

var str = "abc1, abc2, abc3, abc4 y abc5";
str=str.replace(/abc/g," ");
//str = " 1,  2,  3,  4 y  5";

La letra g indica un replace global por lo que todas las coincidencias son reemplazadas. Se puede especificar también gi en caso de que se quiere hacer un replace global sin importar mayúsculas ni minúsculas.

Esto sería útil para casos como el siguiente en el que se quiere reemplazar todas las coincidencias de abc dentro de la cadena independientemente de si está en mayúsculas o minúsculas.

var str = "abc1, ABC2, Abc3, aBc4 y abC5";
str=str.replace(/abc/gi," ");
//str = " 1,  2,  3,  4 y  5";

El otro caso es para cuando quieres reemplazar todos los caracteres contenidos en una variable dentro de una cadena.
Dado que las instrucciones anteriores se colocan entre diagonales en el replace, no se pueden poner variables directamente en el replace por lo que debes hacer lo siguiente:

Ejemplo

var str = "abc1, abc2, abc3, abc4 y abc5";
var buscar="abc" 
str=str.replace(new RegExp(buscar,"g") ," ");
//str = " 1,  2,  3,  4 y  5";

Espero les sirva.

martes, 6 de agosto de 2013

Como detectar navegador con jquery

Como detectar navegador de internet con jquery

No es recomendable usar jQuery.browser según la propia API de jquery ya que parece que será descontinuado. Sin embargo sí existe la manera de usarlo y aquí se las pongo.

Para detectar si se está utilizando Internet Explorer con jquery, debes utilizar la siguiente línea de código:

if ($.browser.msie) {
// tu código aquí
}


No se puede detectar Google Chrome con jQuery por lo que se debe usar javascript puro como con el siguiente código:

var isChrome = window.chrome; 
if(isChrome) { 
// es chrome 
} else {
// no es chrome 

Existen algunas otras formas para detectar el navegador con javascript puro pero estas me parecieron las más sencillas.
No para todo se debe crear algún método de jQuery, en especial cuando se puede resolver con javascript simple en una sola línea.

Espero les sirva

sábado, 25 de mayo de 2013

Problema con teclas de backspace y eliminar en Oracle SQL Developer

Si utilizas alguna versión de Oracle como manejador de base datos, habrás utilizado Oracle SQL Developer para facilitarte la tarea de hacer consultas.

Cierto día al intentar utilizar Oracle SQL Developer para realizar algunas consultas me encontré con el problema de que no podía utilizar las teclas de backspace y delete (eliminar) en el editor, por lo que no podía modificar las líneas fácilmente.

El volver a instalar el programa generalmente no es una primera opción así que investigué un poco y encontré la forma de resolver este problema.

Solución.

La solución es regresar a las opciones predeterminadas de Oracle SQL Developer, las cuales yo no había cambiado, por lo que no supe cual había sido la causa.

Para solucionar esto hay que ir a:

Herramientas > Preferencias > Aceleradores > Cargar Predefinido > Aceptar
Tools -> Preferences -> Accelerators -> Load Preset

Como en la siguiente imagen.


Espero les sirva.

jueves, 23 de mayo de 2013

Consider changing your password en windows server 2008

Cómo quitar la caducidad de contraseña en windows 2008

Por defecto los usuarios de Windows Server 2008 tendrán activada la política de caducidad de contraseñas por lo que seguramente estás viendo el  mensaje de "Consider changing your password" como en la imagen de abajo.


Solución.

Lo que hay que hacer para cambiar la política de caducidad de contraseñas en Windows Server 2008 es lo siguiente:
  1. Entrar como administrador o con usuario con privilegios de administrador
  2. Ir a "Local Security Policy" seleccionando Start > Administrative Tools > Local Security Policy
  3. Expander "Account Policies"
  4. Seleccionar "Password Policy"
  5. Establecer "Maximum password age" a cero "0"
 Como en la siguiente imágen.


Listo. Ahora la contraseña ya no expirará ni volverá a salir el mensaje "Consider changing your password".

Espero les sirva.

viernes, 17 de mayo de 2013

Obtener el texto de un li por índice con jquery

Cómo obtener el texto de un li por índice en una lista con jquery


Se puede acceder al texto de un li dentro de una lista utilizando jquery. Esto se puede acceder por el índice dentro de la lista fácilmente con alguna de las opciones que ofrece jquery.

Se puede hacer de dos maneras con jquery usando .eq() o :eq()

Ejemplo.

<ul>
  <li>Opción 1</li>
  <li>Opción 2</li>
  <li>Opción 3</li>

  <li>Opción 4</li>
</ul>


Se accedería de esta manera la segunda opción, recuerden que empieza en cero:

$('ul').get(1).text(); 

o así

$('ul :eq(1)').text();

Pueden probar en esta página: http://jsfiddle.net/nick_craver/BU6et/

De aquí tome la referencia:
http://stackoverflow.com/questions/3370443/jquery-find-by-index-in-a-list

Espero les sirva.


Como obtener los valores seleccionados de un arreglo de checkbox de un formulario con php

Como leer un arreglo de checkbox con php


Para obtener los valores seleccionados de un arreglo de checkbox en php es necesario que el nombre de los checkbox utilice corchetes "[]" al final para que al hacer el $_GET de php ésta variable pueda ser tomada como arreglo. 

Al hacer el $_GET de php se usa el nombre de la variable sin corchetes.

Si no se usan lo corchetes en el nombre de los checkbox sólo devolverá el primer elemento seleccionado y eso seguramente es lo que los trajo aquí.
 
Les pongo un ejemplo de cómo debe ser colocado el código HTML y cómo debe ser recibido con PHP

Ejemplo.

El código html:


<form method="get">
    <input type="checkbox" name="dias[]" value="Lunes"/> Lunes<br/>
    <input type="checkbox" name="dias[]" value="Martes"/> Martes<br/>
    <input type="checkbox" name="dias[]" value="Miércoles"/> Miércoles<br/>

    <input type="checkbox" name="dias[]" value="Jueves"/> Jueves<br/>   
    <input type="checkbox" name="dias[]" value="Viernes"/> Viernes<br/>  
    <input type="checkbox" name="dias[]" value="Sábado"/> Sábado<br/>
    <input type="checkbox" name="dias[]" value="Domingo"/> Domingo<br/>     
 <input type="submit" value="Guardar" />
</form>


El código php:

$seleccionados = $_GET['dias'];
for($i=0; $i < count($
seleccionados); $i++){
    echo "Días seleccionados " . $
seleccionados[$i] . "<br/>";
}


Espero les sirva.

lunes, 18 de marzo de 2013

Cómo compartir una red inalámbrica wifi en windows 7 a otra computadora o dispositivo

Cómo compartir internet a otro computadora o dispositivo

Me vi en la necesidad de tener que compartir una conexión inalámbrica wifi desde mi lap.

Leyendo me encontré que Windows 7 incluye una utilidad para crear redes wifi virtuales. Les comparto estos pasos muy interesantes que te permiten compartir internet a otros dispositivos.

Como crear una red virtual wifi en windows 7

Abrir una línea de comandos de windows con privilegios de administrador. Es muy importante que la línea de comandos la abran con permisos de administrador para que no les salgan errores.

Para esto ir a Inicio - Programas - Accesorios - Click derecho en Símbolo del sistema y seleccionar "Ejecutar como administrador". Como en la imagen de abajo.


|

Como configurar la interface virtual

Escriban en el símbolo del sistema lo siguiente:

netsh wlan set hostednetwork mode=allow ssid=nombredered key=elpassword

Escribir en ssid el nombre como quieran llamar a a la red virtual y en key la contraseña deseada.


Al ejecutar esta línea se puede ver una nueva conexión de red en la lista de conexiones de red la cual aparece como Virtual WiFi miniport como en la imagen de abajo. Aparecerán tantas redes como se ejecute la la línea anterior que se encarga de crear redes virtuales. Hay que tener en cuenta que si se activan muchas, la capacidad de cada una y la original se verán mermadas porque todas son una que está siendo compartida a través de software.



En Panel de Control - Redes e Internet - Conexiones de red seleccionar la red que está siendo actualmente utilizada. Ir a Propiedades - Uso Compartido y seleccionar la casilla "Permitir que los usuarios de otras redes se conecten a través de la conexión a Internet de este equipo". Seleccionar la red virtual recien creada para indicar que se va a compartir hacia ella como en la siguiente imagen.




Después de esto, en la misma línea de comandos, ejecutar la siguiente instrucción para iniciar la red virtual:

netsh wlan start hostednetwork




Esta segunda instrucción se debe ejecutar cada que quieran iniciar la red virtual. Cuando apaguen la máquina la red se desactivará por lo que cada que la prendan deben ejecutar únicamente la segunda instrucción, con permisos de administrador también, como en la siguiente imagen.



Tal vez encuentren alguna manera de iniciar la red wifi virtual al iniciar windows automáticamente.

Desde otros dispositivos con wifi podrán ver la nueva red creada y conectarse con los datos que configuraron para ssid y key.

De aquí he tomado la referencia y una imagen:

http://www.blogsdna.com/5506/how-to-setup-virtual-wifi-in-windows-7-without-any-extra-software.htm

Espero les sirva.

domingo, 10 de marzo de 2013

RegAsm : warning RA0000


RegAsm : warning RA0000 : El registro de un ensamblado sin signo con /codebase puede provocar que dicho ensamblado interfiera con otras aplicaciones instaladas en el mismo equipo. El modificador /code
base sólo se utiliza con ensamblados con signos. Proporcione al ensamblado un nombre seguro y vuelva a registrarlo.


RegAsm : warning RA0000 : Registering an unsigned assembly with /codebase can cause your assembly to interfere with other applications that may be installed on the same computer. The /codebase switch is intended to be used only with signed assemblies. Please give your assembly a strong name and re-register it.




Al intentar registrar una dll para enviar correos con regasm me encontré con el warning RegAsm : warning RA0000.  Este warning aparece cuando intentas registrar una dll que no está firmada.

La dll la quiero llamar desde mi aplicación web con asp clásico por lo que necesito registrarla en la máquina para después poder llamarla desde mi código asp clásico.

Solución.

Lo que se debe hacer es firmar la dll generada y volver a compilar el proyecto

Para firmar la dll en Visual Studio 2010 debes ir a la ventana de Propiedades del proyecto en la pestaña de Firma, hacer click en Nuevo y aceptar las ventanas siguientes. Verificar que la casilla "Firmar el ensamblado" esté activa como en la imagen.




Si lo que deseas también es utilizar esta dll para llamarla desde algún proyecto .NET o ASP clásico, se 
debe establecer la propiedad ComVisible a True en el archivo assemblyInfo.cs 



O también seleccionando la opción Crear ensamblado visible a través de COM en la ventana de Propiedades del proyecto - Aplicación como en la imagen de abajo.



Con esto ya se puede hacer el llamado al objeto desde la aplicación de asp clásico de acuerdo al namespace, nombre de clase y métodos que se hayan definido. Sería una llamada como la siguiente:

Set myMail = CreateObject("Namespace.Clase") 
myMail.From = NombreFrom
myMail.To =  EmailTo
myMail.Subject = MsgSubject 
myMail.BodyFormat = 0 
myMail.MailFormat = 0 
myMail.Body = strResult 
myMail.Send
Set myMail = Nothing

Espero les sirva.