Sql Server prevent saving on table re-creation – Error al regrabar tabla


Acá va un post recordatorio para cuando tenemos un SQL Server 2008 Management Tools, donde creamos una tabla y posteriormente queremos modificar su estructura. Seguramente, si estamos con los parámetros por defecto, no podamos grabar las modificaciones en la estructura de la tabla.

Esto se debe a un parámetro de protección configurable que previene grabar los cambios que requieren una re creación de las tablas.

Debemos deshabilitar esta opción en Tools –> Options –> Designers –>Table and Database Designers –> destildar Prevent Saving changes that requires table re-creation.

 

Fedora en Virtual Box: Kernel Panic


Si están instalando un Linux Fedora x86 (ej. Fedora 7 ) sobre una máquina virtual con VirtualBox con arquitectura de 64 bits, es muy probable que obtengan el siguiente mensaje al booteo de la instalación:

"Kernel panic - not syncing: Attempted to kill init!"

Ante está situación, lo que tenemos que hacer es habilitar en el Virtual Box, la opción Sistema –> IO APIC.

 

Liberando código fuente: Descarga de padrones ARBA


Esta es mi primera liberación de código fuente, y pensando en que código liberar, me puse a revisar y encontré algo exótico. Algo que muchas empresas utilizan bastante hoy en día y que si solicitan su desarrollo, seguramente resulte bastante caro…

Así es que aquí está la disponible para todo el mundo el código fuente del algoritmo de comunicación con los servidores de ARBA para la descarga de padrones de recaudación por sujeto.

Este es el link: https://code.google.com/p/gestion-arba/ y está bajo licencia GNU GPL v3

Espero que esto anime a mas desarrolladores a liberar código fuente que sea útil para mejorar la productividad.

 

Control de Acceso del Personal con Linux


Alguna vez se encontraron en la situación en la que deben implementar algún sistema de control de acceso del personal, es decir, registrar horarios de entrada y salida del personal, pero no tienen accesorios o software específico para realizar esta tarea ?

Una solución para estas situaciones es muy simple: utilizar el sistema linux donde trabaja el usuario, registrando los horarios de logueo – deslogueo del sistema. Es decir, sus entradas / salidas, son los logueos / deslogueos de su  sistema linux.

Como verificamos después el registro de entradas /salidas ? con el comando last :

$ last | grep loginusuario

Obtenedremos una salida similar a la siguiente:

hvivani tty1         :0               Fri Feb 24 07:07 - 15:15  (08:07)    
hvivani tty1         :0               Thu Feb 23 07:28 - 15:58  (08:30)    
hvivani tty1         :0               Mon Jan 30 07:13 - 16:02  (08:49)    
hvivani tty1         :0               Tue Jan 17 07:11 - 15:58  (08:46)    
hvivani tty1         :0               Tue Jan  3 07:09 - 15:58  (08:49)    
hvivani tty1         :0               Wed Dec 28 07:05 - 15:58  (08:52)    
hvivani tty1         :0               Fri Dec 23 07:11 - 14:59  (07:48)    
hvivani tty1         :0               Mon Dec 19 07:14 - 15:59  (08:44)    
hvivani tty1         :0               Wed Dec  7 07:47 - 15:55  (08:07)

Vean que podemos obtener el horario de logueo / deslogueo y el tiempo trabajado.

regsvr32 on a 64 bit platform


Resulta que tengo una aplicación desarrollada en C# para un dispositivo de lectura de huellas dactilares FP200 de Wison Tecnologies. Este dispositivo viene con una librería (DLL) COM precompilada que es necesario registrar en el sistema operativo huésped a fin de poder acceder al dispositivo.

En plataformas de 32 bits, este registro lo realizaba siempre con el viejo y no tan querido regsvr32. En las nuevas plataformas de 64 bits, no me fué tan bien.

En principio hay que aclarar: en los sistemas operativos Microsoft (w7) de 64 bits hay dos versiones del regsvr32, una en \windows\system32 y otra en \windows\sysWOM64. La de system32 es para 64 bits y la de sysWOM64 es para 32 bits.

Debemos tratar de registrar nuestra librería con la aplicación y en el directorio correcto a fin de que funcione, de otra manera tendremos grandes dolores de cabeza.

Por otro lado, habiendo registrado la librería en alguno de los dos directorios mencionados, en mi caso, tuve que recompilar los ejecutables, indicando plataforma destino “x86” en vez de “Any CPU” ó “x64”.

Ojo al abrir la ventana de DOS “cmd.exe” que debe abrirse con permisos de administrador, sinó no podremos registrar la DLL.

Espero que esto sea de utilidad a los que se encuentren con este problema.

SQL: Concatenar varios registros de una columna en una sola cadena


Es probable que tengamos varios registros pertenecientes a una columna o campo que debamos concatenar y mostrar en una sola cadena. Algo así:

descripcion
===========
valor1
valor2
valor3

y necesitamos obtener algo así:

valor1, valor2, valor3

es decir, como si tuvieramos que trasponer la columna, pero sin complicarnos.

La solución es la siguiente:

DECLARE @valores VARCHAR(1000)
SELECT @valores= COALESCE(@valores + ', ', '') + descripcion FROM carpetas
select @valores as valores

La magia la hace el comando COALESCE que devuelve la expresión que no contenga el valor NULL entre sus argumentos.

OJO: Esta solución es válida solo si ningún renglon es NULL.

SQL: Concatenate several strings from a column into a single string


The problem:

We may have several records belonging to a column or field that we want to concatenate and display in a single string. Something like this:

description
===========
value1
value2
value3

and we want to get something like this:

value1, value2, value3

that is, as if we had to transpose the column, but without complicating ourselves.

The solution is:

DECLARE @values VARCHAR(1000)
SELECT @values= COALESCE(@values + ', ', '') + description FROM folders
select @values as values

The magic is done by the COALESCE command that returns the expression that does not contain the NULL value among its arguments.

NOTE: This solution is valid only if no row is NULL.

OpenUpload: Instalando tu propio servidor de descargas


OpenUpload es ideal para tener en tu propio servidor toda la funcionalidad de un servidor de descargas similar a YouSenIt, MegaUpload or RapidShare.

La instalación es bastante simple en Fedora/CentOS/RedHat:

1) descargamos el paquete de instalación desde sourceforge.

2) decomprimimos y copiamos a nuestro www:

# tar -zxvf openupload-0.4.2.tar.gz
# mv openupload-0.4.2 /var/www/html/openupload

3) Editamos la configuración de nuestro archivo config.inc.php.sample:

vi /var/www/html/openupload/www/config.inc.php.sample

Modificando basicamente las siguiente entradas:

/* Define the installation folder */
$CONFIG['INSTALL_ROOT']='/var/www/html/openupload';

/* define http:// address */
$CONFIG['WWW_SERVER']='http://www.hvivani.com.ar';
/* define the additional web path i.e. /openupload */
$CONFIG['WWW_ROOT']='/openupload/www';

/* Detail for dbconnection */
$CONFIG['database']['host']='localhost';
$CONFIG['database']['user']='useropenupload';
$CONFIG['database']['password']='passopenupload';
$CONFIG['database']['name']='openupload';

Guardamos la configuración en este archivo y lo renombramos:

mv /var/www/html/openupload/www/config.inc.php.example /var/www/html/openupload/www/config.inc.php

4) Ahora configuramos la base de datos, recordando que php-mysql tiene que estar instalado.

# mysql -uroot
create database openupload;
grant all privileges on openupload.* to openupload@localhost ideintified by 'passopenupload';

Importamos los esquemas configurando el servidor para uso privado:

mysql openupload -u openupload -p passopenupload< sql/mysql/1_structure.sql
mysql openupload -u openupload -p passopenupload< sql/mysql/2_base.sql
mysql openupload -u openupload -p passopenupload< sql/mysql/3_mode_private.sql

En este paso, para otros modos de uso como público, restringido u otros importamos la estructura de base de datos que corresponda en vez del 3_mode_restricted.

Con esto ya estamos listos para apuntar nuestro navegador a http://localhost/openuploade ingresar con usuario admin, passwd admin.

Aquí tenemos los archivos para agregar el idioma español que no viene por default.

Cargar archivos grandes en PHP con .htaccess / Uploading large(big) files in PHP using .htaccess


Hay veces que tenemos alguna aplicación que corre en nuestro apache y que necesita poder cargar archivos grandes. Esto podemos modificarlo en la configuración del PHP, pero en ese caso estaríamos permitiendo la carga de archivos grandes en todos nuestros sitios.

Para que esto no pase, podemos hacerlo a través de un archivo .htaccess creado en la carpeta de nuestro www con el siguiente contenido:

php_value upload_max_filesize 100M
php_value post_max_size 100M
php_value max_execution_time 200
php_value max_input_time 200

Otra cosa que tenemos que tener en cuenta es deshabilitar el Output Buffering, dado que sinó, el php comenzará con consumir tanta memoria como el tamaño del archivo. Esto lo podemos hacer agregando la siguiente línea en el mismo .htaccess:

php_value output_buffering off

 

MySql change root password


Es importante establecer la password de root de mysql antes de comenzar a utilizar el este motor de base de datos, mas aún si se va a utilizar para almacenar información de sitios web.

Para establecer la password de root de un servidor mysql, podemos hacerlo por consola con el siguiente comando:

$ mysqladmin -u root password XXXXX

Ahora, si lo que queremos es cambiar la password de root del mysql:

$ mysqladmin -u root -p'viejapassword' password newpassword

De la misma manera podemos cambiar la  password de root para otros usuarios:

$ mysqladmin -u hernan -p viejapassword password newpassword