Seguir descubrimientos cientificos

Para los que nos gusta la ciencia, aquí hay una pagina web, que registra los descubrimientos científicos en una linea de tiempo. Muy interesante!!!

Toda buena regla también tiene buenas excepciones

Toda buena regla también tiene buenas excepciones

Si alguna vez a tenido problemas con el content filter  de amavis news, puedes crear listas blancas/listas, negras para los remitentes de los correos de una manera muy sencilla. Busca la siguiente línea en amavisd.conf.

Modificando amavisd.conf para que realice una calificación global

read_hash("/var/amavis/sender_scores_sitewide"),

Colocas la dirección de correo completa o sólo las partes del dominio junto con una calificación positiva/negativa ha añadir a la calificación de correo no deseado.

ejemplo de una lista blanca

(Poner en la lista blanca a todos los correos del destinatario especificado)

micuenta@midominio.com                -3.0

(Poner en la lista blanca todos los correos de example.net excluyendo subdominios)

.midominio.com                           1.0

 

queda algo de este estilo:

 

#  read_hash("/var/amavis/sender_scores_sitewide"),

 

   { # a hash-type lookup table (associative array)

     'nobody@cert.org'                        => -3.0,

     'micuenta@midomonio.com’               => -3.0,

       .

       .

       .

          # soft-blacklisting (positive score)

     'sender@example.net'                     =>  3.0,

     '.example.net'                           =>  1.0,

 

   },

 

Reinicias amavisd y todo listo ..

 

Tomado de http://www.gentoo.org/doc/es/mailfilter-guide.xml

 

Saludos,

 

andres mosquera

 

Mover archivos de bases de datos

El proceso de mover bases de datos se resume en lo siguiente:
  1. des-adjuntar la base de datos
  2. mover los archivos
  3. adjuntar la base de datos
En código:
----Nos conectamos a la base de datos actual
use nombre_base_datos_actual
----Para saber el nombre de los archivos actualmente, ejecutamos:
execute sp_helpfile
/* Este es el resultado:
C:\Users\jmartinez\Documents\xxx\bd_datos.mdf
C:\Users\jmartinez\Documents\xxx\bd_log.ldf
*/
----Nos salimos de la conexión a la base de datos actual
use master
----des-adjuntamos la base de datos
execute sp_detach_db 'nombre_base_datos_actual'
/* definimos la nueva ruta de los achivos
C:\desarrollo\BD\bd_datos.ldf
C:\desarrollo\BD\bd_log.mdf
*/
----Adjuntamos de nuevo la base de datos
execute sp_attach_db 'bd', 'C:\desarrollo\BD\bd_log.mdf', 'C:\desarrollo\BD\bd_datos.ldf'

Archos 5, nueva alternativa a Ipod y Zune

Ya era hora de que el mercado de los dispositivos multimedia portatiles tuviera otro color, lanzan Archos, un dispositivo que funciona con Android, el sistema operativo para dispositivos mobiles de Google, y que a diferencia de Ipod y Zune, cuenta con sintonizador FM y hasta 500GB de almacenamiento, muy elegante y con todas las funcionalidades de un sistema operativo con todas las opciones que uno desea, correo, calendario, juegos, instalación de aplicaciones desde internet, etc, etc, etc!! cada ves los monopolios se van descartando!!.

Pagina del producto: http://www.archos.com/products/imt/archos_5/index.html?country=co&lang=en






John J. Martinez
visitar en: http://solucionesjj.blogspot.com

Moblin, Otro sistema operativo para MIDs

Se ve interezante, juzgen ustedes mismos.

Sin duda se ve que es una buena opción en sistemas operativos mobiles, sin embargo Windows Mobile, Apple y Android dieron el primer paso hace mucho tiempo, aunque aun falta mucho por definir en este ambito, pienso que deben hacer un gran esfuerzo para motivar el desarrollo y el avance de este nuevo sabor en sistemas operativos mobiles. 
Para mi aun Android lleva la delantera, por ser abierto frente a otros sistemas, por su facilidad en desarrollo e instalación de aplicaciones, iphone tiene un gran entorno gráfico, pero esta muy cerrado tecnológicamente hablando y Windows Mobile, no ha innovado mucho, esperemos que el nuevo sistema de Windows para mobiles este al nivel de Android y apple que aun son los mas opcionados para quedarcen con este mercado.


John J. Martinez

Sistema operativo en Assembler

Para los que nos gusta el desarrollo de software, aqui hay un proyecto donde intentan hacer un sistema operativo totalmente desarrollado en Assembler, se ve interezante,


?ui=2&view=att&th=123be17b27e2f5e2&attid=0.1&disp=attd&realattid=ii_123be17b27e2f5e2&zw

John J. Martinez

Error en la ejecucion de una tarea programada en SQL Server 2000 Error = -2147467259 (80004005)

Detalle del error:
DTSRun OnStart:  DTSStep_DTSExecutePackageTask_1
DTSRun OnError: DTSStep_DTSExecutePackageTask_1, Error = -2147467259 (80004005)
   Cadena de error:  DTSStep_DTSExecutePackageTask_3: DTSStep_DTSDataPumpTask_1: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
   Origen del error:  Microsoft OLE DB Provider for ODBC Drivers
   Archivo de Ayuda:  
   Contexto de la Ayuda:  0

Registros de detalles de error:
Error: -2147467259 (80004005); Error de proveedor: 0 (0)
   Cadena de error:  [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
   Origen del error:  Microsoft OLE DB Provider for ODBC Drivers
   Archivo de Ayuda:  
   Contexto de la Ayuda:  0

Solución:
Crear conexión ODBC a nivel de sistema y no de usuario.

John J. Martinez

SQLSTATE = 4200 al ejecutar sp_addlogin

El problema se presenta en SQL Server 2005 porque el usuario con el cual se esta ejecutando el comando no tiene los privilegios suficientes, la solución consiste en agregar al usuario como miembro de sysadmin o securityadmin.

John J. Martinez

Cargar archivos a sitio web con php

Cargar archivos a sitio web con php

Requerimentos
  • Php
  • MySQL
  • Apache

Configuracion PHP
Para subir archivos por medio de php es necesario configurar las siguientes variables del php.ini
  • post_max_size = 20M          (En este caso se coloco 20 Mb, pero este valor puede cambiar según los requerimientos)
  • file_uploads = On
  • upload_max_filesize = 20M   (En este caso se coloco 20 Mb, pero este valor puede cambiar según los requerimientos)
Archivos necesarios:
  • subir_archivo.php
  • index.php
Base de datos
  • tabla t_documento

=====================================================
index.php
=====================================================
<form action="subir_archivo.php" method="post" enctype="multipart/form-data"> 
   <b>Nota:</b> 
   <br> 
       <input type="hidden" name="c_id_documento" value="<? echo $_GET['c_id_documento'];?>" />
       <textarea name="c_nota"></textarea>
   <br> 
   <b>Archivo: </b> 
   <br> 
   <input name="archivo" type="file">&nbsp;&nbsp;&nbsp;<input type="submit" value="Guardar" name="Guardar"> 
</form> 
=====================================================

=====================================================
subir_archivo.php
=====================================================
<? 
$hostname_localhost = "localhost";
$database_localhost = "archivos";
$username_localhost = "root";
$password_localhost = "****"; 

$localhost = mysql_connect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR); 
mysql_select_db($database_localhost, $localhost);

$c_nota = $_POST["c_nota"]; 
//datos del arhivo 
$nombre_archivo  = date("Y_m_d_H_i_s")."_".$_FILES['archivo']['name']; 
$tipo_archivo  = $_FILES['archivo']['type']; 
$tamano_archivo  = $_FILES['archivo']['size']; 
//compruebo si las características del archivo son las que deseo 

if(move_uploaded_file($_FILES['archivo']['tmp_name'], "archivos/".$nombre_archivo))
{
$sql = "insert into t_archivo (,c_nota,c_ruta_archivo,c_tipo, c_fecha) 
values
(
'".$_POST['c_nota']."',
'archivos/".$nombre_archivo."',
'".$_FILES['archivo']['type']."',
now()
)
";
$resultado = mysql_query($sql,$localhost);
if (mysql_error())
{
?>Error al guardar el archivo. <? echo mysql_error();
}
else
{
?>El archivo se guardo correctamente.<?
}
}
else
{
?>Error al cargar el archivo.<?
}
?> 
=====================================================

=====================================================
index.php
=====================================================
<form action="subir_archivo.php" method="post" enctype="multipart/form-data"> 
   <b>Nota:</b> 
   <br> 
       <textarea name="c_nota"></textarea>
   <br> 
   <b>Archivo: </b> 
   <br> 
   <input name="archivo" type="file">&nbsp;&nbsp;&nbsp;<input type="submit" value="Guardar" name="Guardar"> 
</form> 
=====================================================

=====================================================
SQL para crear la tabla
=====================================================
create database archivos;
use archivos;
--
-- Definition of table `t_archivo`
--

DROP TABLE IF EXISTS `t_archivo`;
CREATE TABLE `t_archivo` (
  `c_id_archivo` int(10) unsigned NOT NULL auto_increment,
  `c_nota` text NOT NULL,
  `c_ruta_archivo` text NOT NULL,
  `c_tipo` varchar(50) NOT NULL,
  `c_fecha` datetime NOT NULL,
  PRIMARY KEY  (`c_id_archivo`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

=====================================================


Error IIS: Aplicación de servidor no disponible


Aplicación de servidor no disponible

La aplicació&n Web a la que está intentando obtener acceso en este servidor Web no está disponible actualmente.nbsp; Presione el botón "Actualizar" del explorador Web para reintentar la solicitud. 

Sucede porque el IIS fue instalado después que el .Net, la solución es registrar de nuevo el .Net con el siguiente comando:

aspnet_regiis -i

John J. Martinez

Visitar en: http://solucionesjj.blogspot.com

Tips para ser un buen programador

Encontre el siguiente articulo en internet, sobre como ser un buen programador, me gusto mucho, por eso lo comparto con ustedes:
 
 
John J. Martinez

 

Basico e interezante manual para convertir a linux en un servidor todo terreno

Este documento te mostrara paso a paso como instalar varios programas para convertir tu maquina de linux en un servidor útil, que puede ser utilizado en casa, si tienes mas de una maquina o en una empresa.
El servidor te proveerá de varios servicios;
Windows File sharing (Servidor de archivos) - Telefonía IP - Servidor de WEB, Servidor de MySQL, Servidor de email , etc.
 
John J. Martinez


 

SPF Records

Esta es una información relacionada con los registros SPF de los servidores DNS

Una buena pagina para realizar pruebas de SPF es:
http://www.vamsoft.com/spfcheck.asp (me pareció súper)

Una buena pagina para crear los registros SPF es:
http://old.openspf.org/

Este es un ejemplo de un registro SPF:
v=spf1 ip4:200.118.116.204/32 mx:mail.presentacionprovinciasantafe.com.co ~all

v=spf1
Especifica que un registro de texto del DNS que corresponde al dominio presentacionprovinciasantafe.com.co es un registro SPF

ip4:200.118.116.204/32
A esta ip se le permite enviar correos para el dominio en mención.

mx:mail.presentacionprovinciasantafe.com.co
Al host mail.presentacionprovinciasantafe.com.co se le permite enviar correo para el dominio en mención.

~all
solo los host mencionados anteriormente están autorizados a enviar correo para el dominio en mención.

John J. Martinez

http://solucionesjj.blogspot.com

Consumir webservice con powerbuilder

Se debe crear un proxy al servicio web, por medio del "Web service proxy wizard"

Se deben importar las librerias: (Estas se encuentran el las carpetas de instalacion de power builder)

PBDOM110.pbx

pbsoapclient110.pbx

pbwsclient110.pbx

Luego se debe ejecutar "Deploy" para que el powerbuilder construya el proxy al servicio web.

Se crea una funcion que recibe una variable de tipo string(Que es el nombre del campo del cual queremos el valor) y retorna un string que es el valor buscado:
string      dato;
long       conexion_estatus;
pbdom_builder    lector_xml;
pbdom_document  documento_xml;
pbdom_element  elemento_xml;
pxservice1    servicio;

//crea un objeto soap para conectar al servicio web
SoapConnection conexion_ws;
conexion_ws = create SoapConnection;

//configura un archivo de logs para ver errores de la conexion
conexion_ws.setoptions( 'SoapLog="c:\\soaplog.txt"');

//realiza la conexion al servicio web
conexion_estatus = conexion_ws.createinstance( servicio,"pxservice1");

//Verifica que la conexion se alla realizado con exito
if (conexion_estatus <> 0) then
 MessageBox("Error", "Error al contactar el servicio web.", Exclamation!, OK!,1);
 end if

//recibe la informacion del webservice llamando a la funcion informacion_deudor con el parametroidentificacion_deudor
dato = servicio.informacion_deudor( identificacion_deudor);

//decodifica el archivo xml y crea un documento dom
lector_xml = Create pbdom_builder;
documento_xml = lector_xml.BuildFromString (dato);
elemento_xml = documento_xml.getrootelement( ).getchildelement( "deudor");
elemento_xml = elemento_xml.getchildelement( "nombre_completo");
return string(elemento_xml.gettext( ));

John J. Martinez

http://solucionesjj.blogspot.com

Que version de linux tengo?

Alguno de los siguientes comandos nos puede servir:

uname -r all
uname -a
cat /etc/issue 
cat /proc/version 
cat /etc/*version*

John J. Martinez

Herramientas de Unix en Windows

Para los que estamos acostumbrados a usar ciertos comandos bastante útiles en Linux, ahora los podemos usar en Windows, hay un proyecto interesante para migrar a Windows las herramientas que se usan habitualmente en el shell de Linux.

Para mayor información visitar:                http://unxutils.sourceforge.net/
Para descargar las utilidades visitar:       http://sourceforge.net/projects/unxutils/ (Incluyen código fuente en C)

Instalación:
1. Descargue el paquete
2. Descomprima
3. registre la ruta (C:\ruta_hasta\UnxUtils\usr\local\wbin) en la variable de entorno PATH de Windows,
4. Reinicie la maquina

John J. Martinez
No olviden visitar: http://solucionesjj.blogspot.com/

Listado de Herramientas (121 en total):

agrep.exe

expand.exe

makedepend.exe

su.exe

ansi2knr.exe

expr.exe

makemsg.exe

sum.exe

basename.exe

factor.exe

man.exe

sync.exe

bc.exe

fgrep.exe

md5sum.exe

tac.exe

bison.exe

find.exe

mkdir.exe

tail.exe

bunzip2.exe

flex.exe

mkfifo.exe

tar.exe

bzip2.exe

fmt.exe

mknod.exe

tee.exe

bzip2recover.exe

fold.exe

mv.exe

test.exe

cat.exe

fsplit.exe

mvdir.exe

touch.exe

chgrp.exe

gawk.exe

nl.exe

tr.exe

chmod.exe

gclip.exe

od.exe

type.exe

chown.exe

gplay.exe

paste.exe

uname.exe

cksum.exe

grep.exe

patch.exe

unexpand.exe

cmp.exe

gsar.exe

pathchk.exe

uniq.exe

comm.exe

gunzip.exe

pclip.exe

unrar.exe

compress.exe

gzip.exe

pr.exe

unshar.exe

cp.exe

head.exe

printenv.exe

unzip.exe

csplit.exe

id.exe

printf.exe

uudecode.exe

cut.exe

indent.exe

pwd.exe

uuencode.exe

date.exe

install.exe

recode.exe

wc.exe

dc.exe

join.exe

rm.exe

wget.exe

dd.exe

jwhois.exe

rman.exe

wget.hlp

df.exe

less.exe

rmdir.exe

which.exe

diff.exe

lesskey.exe

sdiff.exe

whoami.exe

diff3.exe

libfl.a

sed.exe

xargs.exe

dircolors.exe

libfl.lib

seq.exe

yes.exe

dirname.exe

ln.exe

shar.exe

zcat.exe

du.exe

logname.exe

sleep.exe

zip.exe

echo.exe

ls.exe

sort.exe

 

egrep.exe

m4.exe

split.exe

 

env.exe

make.exe

stego.exe

 

 

PowerBuilder: "Procedure has not been executed or has no results"

Este mensaje se presenta al tratar de ejecutar un procedimiento almacenado con un usuario que no tiene los privilegios suficientes. Para corregirlo otorgue permisos de ejecución al usuario o perfil especifico sobre el procedimiento que está tratando de ejecutar.

Ej: grant execute on procedimiento_almacenado to public

20101025 NOTA: Este error me volvió aparecer, y después de mucho darle vueltas, decidí realizar un SQL Server Profiler, donde pude constatar que un cursor de SQL queda abierto después de realizar un update() en los datawindows de powerbuilder, aun no se porque sucede, pero tengo la sospecha que es por el nivel de Isolation con el que estoy conectado, lo cual aun no se manejar!, la forma como lo solucione por ahora es realizando un retrieve() después del update(), no me parece la mas técnica, pero por ahora si, la mas útil. ideas?


Seguridad linux: DenyHost

DennyHost es una herramienta interesante escrita en Python para bloquear intrusiones al protocolo SSH, muy útil para administradores de sistemas Linux que día a día luchan contra  los ataques de diccionario y fuerza bruta, muy comunes en servidores que prestan servicios hacia internet.

 

http://denyhosts.sourceforge.net/

http://www.denyhosts.net/

 

Andres mosquera

 

Visitar: http://solucionesjj.blogspot.com/

Activar xp_cmdshell en SQL server

Xp_cmdshell permite ejecutar secuencias de comando en el shell de Windows, muy útil para importar y exportar archivos de texto a partir de consultas SQL.

 

EXEC sp_configure 'show advanced options', 1

RECONFIGURE

EXEC sp_configure 'xp_cmdshell', 1

RECONFIGURE

 

Comentarios?, Preguntas?

 

 

 

Fatal error: Cannot use string offset as an array in

TEMA: PHP
Es un error al crear un arreglo multidimencional, por algún motivo no funciona si no se declara antes:

$variable_arreglo = array();

y listos!!

Backup y Restauracion base de datos mysql

TEMA: MYSQLPara realizar el backup, entramos a la linea de comandos y ejecutamos:
mysqldump --opt base_de_datos > c:\archivo_de_salida.sql

Para restaurar la base de datos por medio del archivo de backup entramos a la linea de comandos y ejecutamos:

mysqldump base_de_datos < c:\archivo_de_salida.sql

Nota: Este comando funciona tambien en las versiones de mysql para linux

Script para backup Zimbra Comunity Edition

TEMA: ZIMBRA
Descargar archivo

carpeta_para_guardar_el_backup="/home/soporte/backups"
mkdir $carpeta_para_guardar_el_backup
#carpetas_para_archivar="/etc /opt /var"
carpetas_para_archivar="/opt/zimbra"
archivo_destino=$carpeta_para_guardar_el_backup/$(date +"%Y_%m_%d__%H_%M")_backup_zimbra.zip
#archivo_destino=$carpeta_para_guardar_el_backup/backup_zimbra.tar
comando="tar -cf "
echo $(date +"%Y/%m/%d %H:%M:%S ")"------ Iniciando el proceso de backup ------" >> $carpeta_para_guardar_el_backup/registro.txt
echo $(date +"%Y/%m/%d %H:%M:%S ")"Deteniendo Zimbra:" >> $carpeta_para_guardar_el_backup/registro.txt
/etc/init.d/zimbra stop >> $carpeta_para_guardar_el_backup/registro.txt
echo $(date +"%Y/%m/%d %H:%M:%S ")"Zimbra detenido" >> $carpeta_para_guardar_el_backup/registro.txt
echo $(date +"%Y/%m/%d %H:%M:%S ")"Iniciando proceso de backup" >> $carpeta_para_guardar_el_backup/registro.txt
echo $(date +"%Y/%m/%d %H:%M:%S ")"Archivo destino: "$archivo_destino >> $carpeta_para_guardar_el_backup/registro.txt
$comando $archivo_destino $carpetas_para_archivar >> $carpeta_para_guardar_el_backup/registro.txt
echo $(date +"%Y/%m/%d %H:%M:%S ")"Finalizo proceso de backup" >> $carpeta_para_guardar_el_backup/registro.txt
echo $(date +"%Y/%m/%d %H:%M:%S ")"Iniciando Zimbra" >> $carpeta_para_guardar_el_backup/registro.txt
/etc/init.d/zimbra start >> $carpeta_para_guardar_el_backup/registro.txt
echo $(date +"%Y/%m/%d %H:%M:%S ")"Zimbra Iniciado" >> $carpeta_para_guardar_el_backup/registro.txt
echo $(date +"%Y/%m/%d %H:%M:%S ")"------ Finalizo el proceso de backup ------" >> $carpeta_para_guardar_el_backup/registro.txt

programacion del script:
crontab -e
agregar la linea:
1 4 * * * sh /root/backup.sh
Es decir que el proceso de backup se realizara todos los dias de todo el mes a las 4:01 AM