Como obtener listado de tablas con un campo especifico.

18 febrero 2010

En este caso buscaremos todas las tablas que tengan un campo llamado nombre

El código es el siguiente (probado en Sql Server):

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (COLUMN_NAME LIKE ‘%nombre%’)

Está demás mencionar que en este ejemplo no solamente obtendremos el nombre de los campos, si no que mucha información más.

Borrar registros duplicado con SQL

18 febrero 2010

Escribo la solución a este problema porque me pasó que tuve que borrar los registros duplicados de una tabla.

Como era un concurso, me pidieron explicitamente que no importaba que se repitieran los registros, por lo que una persona podría poner sus mismos datos una y otra vez. Una jugada sin ningún tipo de beneficio adicional.

¿Entonces que paso?, había que hacer el concurso, pero la posibilidad de ganar tenía que ser igual para todos, por lo que había que eliminar los registros repetidos de la tabla del concurso.

¿Como lo hice?, con el siguiente código:

DELETE FROM concurso c1 WHERE id > (SELECT MIN(id) FROM concurso c2 WHERE c1.nombre = c2.nombre and c1.celular = c2.celular

Lo que hago es buscar el nombre y celular en cada registro, si ambos son iguales a uno ya existente en la tabla se elimina el que tenga el id mayor.

Intente con una tabla temporal… y funciona bien, pero cuando hablamos de millones de registro tarda demasiado el proceso.

Limpiar el campo password al no ser valido el formulario

17 febrero 2010

Hoy me encontré con un problema al intentar realizar las validaciones en un formulario de registro de usuarios.

Cuando escrito todos los datos correctamente (según lo definido en el Model::validate()) se registra el usuario correctamente, en caso contrario, se despliegan los errores, pero el campo password aparece con información (******) y si vemos el value del campo, nos damos cuenta que es la codificación del valor enviado.

Recuerden que si uno envía el campo en blanco eso también es codificado y convertido a una cadena de tipo 76cda45484db78aw7

Para evitar eso puse el siguiente código en mi controlador (usuarios_controller.php en mi caso)

[codesyntax lang="php"]
function beforeRender()
{
parent::beforeRender();
$this->data['Usuario']['password'] = ”;
}

[/codesyntax]

Eso significa que antes de hacer el render limpiará ese valor del arreglo de datos.

Si crees tener una mejor solución, por favor escribelo en los comentarios.

Los 3 .htaccess que necesita tu aplicación CakePHP

9 febrero 2010

error404Uso Filezilla como cliente FTP, cree mi aplicación con CakePHP, la moví a un subdirectorio y ya no funcionaba. El navegador me mostraba el Error 404.

Entonces con ayuda de Michael Gomez entendí que el Filezilla tenía desactivado el modo para ver los archivos ocultos (.htaccess). Para activar esa opción y habilitar que se puedan ver los archivos ocultos (los que empiezan con punto en el nombre del archivo) deben presionar en el menú de Filezilla la opción Servidor y luego Forzar mostrar archivos ocultos.

A continuación les publico como son los .htaccess que deben tener en la aplicación CakePHP:

En la raíz del sitio:

RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]

En la carpeta App:

RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]

En la carpeta WebRoot:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Les puede ser de ayuda en caso que lo olviden.

Obtener valor de campos invisibles en gridviews VB.NET

18 diciembre 2009
.NET

.NET

Una de las cosas típicas que se realizan con los GridViews son los mantenedores en los cuales seleccionas una fila y los valores de las celdas se pasan a los Textbox para poder manipularlos.

Pero pasa que cuando ocultamos columnas en el GridView no podemos tener acceso a ella si usamos .NET Framework 2.0, por lo que debemos usar la propiedad DataKeyNames del GridView.

<asp:GridView ID=”gvEjemplo” runat=”server” AutoGenerateColumns=”False” GridLines=”None” OnSelectedIndexChanged=”gvEjemplo_SelectedIndexChanged” Width=”100%” DataKeyNames=”Campo1,Campo2″ CssClass=”Estilo3″ PageSize=”6″>
<Columns>
<asp:BoundField  Visible=”False” DataField=”Campo1″ >
</asp:BoundField>
<asp:BoundField  Visible=”False” DataField=”Campo2″ >
</asp:BoundField>

<asp:GridView ID=”gvDatos” runat=”server” AutoGenerateColumns=”False” OnSelectedIndexChanged=”gvDatos_SelectedIndexChanged” DataKeyNames=”Campo1,Campo2″>

<Columns>
<asp:BoundField  Visible=”False” DataField=”Campo1″ ></asp:BoundField>
<asp:BoundField  Visible=”False” DataField=”Campo2″ ></asp:BoundField>
………..

DataKeyNames contendrá los campos ocultos pero podremos recuperar sus valores.

Luego en el evento

[codesyntax lang="vbnet"]protected Sub gvDatos_SelectedIndexChanged(ByVal object sender,  ByVal EventArgs e)

txtTuCampoDeTexto.Text = gvDatos.DataKeys(“nombreCampo”).Values.ToString()
End Sub[/codesyntax]

Eso es todo.

Así que ya sabes como solucionar este problemilla.

Instalación y configuración de servidor Samba

18 diciembre 2009

Samba

Samba

Samba, un programa que nos permite intercambiar archivos entre un sistema Linux-Windows como si fuesen equipos en red.

Para más información

¿Como instalar Samba en 10 pasos?

* En este caso uso Windows Xp con máquina virtual VMWare montando CentOs 5.3

Paso 0.- Debes verificar si está instalado el servicio Samba con el comando:

# service smb status

Te mostrará el estado del servicio.

Si el servicio no está arriba y no está instalado, lo podremos instalar simplemente usando yum:

# yum -y install samba samba-client samba-common

Ahora que ya está instalado seguimos con los demás pasos.

Seguir leyendo…

CakePHP en Dreamweaver, editar templates

16 noviembre 2009

La gran pregunta que nos deja con una cuota de comodidad y acelera en un pequeño porcentaje el desarrollo usando el framework CakePHP.

Debemos hacer que Dreamweaver lea los archivos .ctp (y cualquier extensión que quieras ocupar) para que de esa forma podamos ver estos archivos en vista Diseño.

Primero se debe encontrar y modificar el archivo Extensions.txt, esta en el directorio @DREAWEAVER\Configuration\Extensions.txt

abrimos este archivo y en la linea en donde que termina con :P HP Files (Archivos PHP en español), en donde estan las extensiones de los archivos de PHP, agregamos las extensiones  CTP
PHP,PHP3,PHP4,PHP5,TPL,INC,CTP:PHP Files
guardamos el archivo

Paso 2.  Modificar el archivo MMDocumentTypes.xml
El archivo MMDocumentTypes.xml, esta en el directorio @DREAMWEAVER\Configuration\DocumentTypes\MMDocumentTypes.xml en donde el tag documenttype con id=”PHP MySQL”, en el atributo winfileextension y macfileextension agregamos ctp:

Cerramos el Dreamweaver si es que estaba abierto… y ahora nos mostrará la vista Diseño con esos archivos.

Clases simples en Java

21 septiembre 2009

En este ejemplo usaremos una clase que se llamará Estudiante, 7 atributos con 3 tipos de datos distintos (String, int, boolean). 2 constructores, métodos accesadores (get), métodos mutadores (set) y un método personalizado.

Esta es la estructura básica de una clase simple.

Seguir leyendo…

Caida de Gmail

1 septiembre 2009

Siendo las 16:10 minutos, muchos contactos me preguntan si acaso hay Gmail… y no… no hay.

Veré que pasa y si acaso Google le da una explicación a esto… quizás un cafe desparramado en un servidor maestro.

Hacker de ChileCompras

28 agosto 2009

Me parece realmente vergonzozo y patético que gente inteligente sea condenana por descubrir fallas de seguridad.

Ver nota

¿No será mejor que el gobierno contrate gente con esta capacidad?, ¿es justo que por un “delito” informático estés privado de libertad junto con asesinos, ladrones, agresores, violadores y demases por 5 años?

Como dice en la nota de Terra el experto en seguridad… si uno da un par de click en un sitio web por curiosidad y ver información privada, entonces cometes un delito y pagas en carcel lo mismo que un homocidio. Insólito.

¿Que opinan ustedes?