#!/bin/sh# /etc/rc.d/rc.firewall# GNU/Linux FIREWALL con Iptablesf_start() {iptables -Fiptables -Xiptables -Ziptables -t nat -F# A nuestro firewall tenemos acceso total desde nuestra IP# iptables -A INPUT -s 127.0.0.1 -j ACCEPT# Establecemos politicas por defectoiptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT# Permitir todo a Localhostiptables -A INPUT -j ACCEPT -i lo# Enmascaramiento de la red local# activamos el BIT DE FORWARDING# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE# wwwiptables -A INPUT -p tcp --dport 80 -j ACCEPT# mail (25, 110, 143)iptables -A INPUT -p tcp --dport 25 -j ACCEPTiptables -A INPUT -p tcp --dport 110 -j ACCEPTiptables -A INPUT -p tcp --dport 143 -j ACCEPT# ftpiptables -A INPUT -p tcp --dport 20:21 -j ACCEPT# sshiptables -A INPUT -p tcp --dport 22 -j ACCEPT# xdmcpiptables -A INPUT -p udp --dport 177 -j ACCEPT# cups/lpdiptables -A INPUT -p udp --dport 631 -j ACCEPT# Reglas específicas por ejemplo: bittorrent# iptables -A INPUT -p tcp --dport 6881:6883 -j ACCEPT# apply rulesiptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTecho "Firewall iniciado..."}f_stop() {iptables -Fiptables -Xiptables -Ziptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTecho "Firewall parado..."}f_status() {iptables -nL}f_restart() {fw_stopfw_start}case "$1" in'start')f_start;;'stop')f_stop;;'status')f_status;;'restart')f_restart;;*)echo "Usage: $0 start|stop|restart|status"esac
sábado, 26 de diciembre de 2009
Script y reglas Firewall con Iptables
domingo, 13 de diciembre de 2009
Salvar y Restaurar Base de Datos en MySQL de forma rápida y sencilla
En un sistema Debian la ubicación del directorio de datos de MySQL por omisión es en /var/lib/mysql . Para salvar la(s) base(s) dato(s) realizamos los siguientes pasos:
Salvar:
1. Paramos el servicio MySQL con:
/etc/init.d/mysql stop
2. Compiamos el directorio de datos a un directorio de respaldo:
cp -r /var/lib/mysql/ /algun_dir/ó lo comprimimos mediante:
tar czf mysql-backup.tar.gz /var/lib/mysql3. Iniciamos el servicio:
/etc/init.d/mysql start
Restaurar:
1. Paramos el servicio MySQL con:
/etc/init.d/mysql stop
2. Restauramos la copia de los datos
cp /algun_dir/respaldo-mysql/* /var/lib/mysql3. Importate restaurar el dueño y el grupo a los archivos de datos para tener los accesos correctamente. Por omisión es el usuario mysql el encargado del servicio.
chown -R mysql:mysql /var/lib/mysql4. Iniciamos el servicio:
/etc/init.d/mysql start
Les dejo un documento interesante sobre Bases de datos en MySQL donde el objetivo principal es: "adquirir las habilidades y conocimientos de MySQL necesarios para utilizar y administrar este SGBD (Sistema Gestor de Bases de Datos)".
En el punto Copias de seguridad abordan con más profundidad este tema.
Referencias:
Base de datos en MySQL
Activar innoDB en Mysql Server
jueves, 10 de diciembre de 2009
Serie sobre cómo construir un datawarehouse
Cuando estamos investigando en el tema de Business Intelligence o Inteligencia de negocio y poco a poco nos damos cuenta que hay muchas temáticas, nos suele surgir preguntas como, ¿Por dónde empezar? .
Existen muchos sitios que aborden este mundo. Una forma fácil de entender los principales conceptos y herramientas que dispone la inteligencia empresarial, es en el siguiente blog: Business Intelligence fácil
Una sección recomendada es: Serie sobre cómo construir un datawarehouse.
En este post les dejo la sección en formato pdf para que la puedas consultar offline. Espero que disfruten del buen contenido del blog.
Referencias:
Artículos sobre Serie DWH (web, pdf)
miércoles, 9 de diciembre de 2009
SQL Server 2005, Limpiar base de datos y restablecer columnas identity, todo en 6 lineas!
Una manera sencilla para vaciar nuestras base de datos en SQL Server 2005 se muestra a continuación. El artículo original se encuentra en DotNetSlackers.
/*Disable Constraints & Triggers*/
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
/*Perform delete operation on all table for cleanup*/
exec sp_MSforeachtable 'DELETE ?'
/*Enable Constraints & Triggers again*/
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'
/*Reset Identity on tables with identity column*/
exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 BEGIN DBCC CHECKIDENT (''?'',RESEED,0) END'
Referencias:
SQL Server 2005, Clean your Database Records & reset Identity Columns, all in 6 lines!
lunes, 7 de diciembre de 2009
Configurar JDK 6 por default en GNU/Linux Debian
update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jdk/jre/bin/java" 1update-alternatives --set java /usr/lib/jdk/jre/bin/java
java -version
domingo, 6 de diciembre de 2009
Configuración sitio web principal en Apache
Para establecer un sitio web por omisión en el servidor web Apache utilizaremos la directiva RedirectMatch. Para ello creamos un fichero de configuración en el directorio /etc/apache2/conf.d , por ejemplo: websitedefault.conf
Referencias:
# Web Site default Apache configuration
# Configuración Sitio Web por omisión en Apache
Alias /website /var/www/website/
RedirectMatch ^/$ /website
Options +FollowSymLinks
AllowOverride None
Order Deny,Allow
#Deny From All
#Allow From 127.0.0.0/255.0.0.0 ::1/128
Allow From All
Apache Module mod_alias
sábado, 28 de noviembre de 2009
Software World: PowerBuilder 9: Internet and Distributed Application Development
PowerBuilder 9: Internet and Distributed Application Development
By William Green, John D. Olson
* Publisher: Sams
* Number Of Pages: 816
* Publication Date: 2003-10-03
* ISBN-10 / ASIN: 0672324997
* ISBN-13 / EAN: 9780672324994
* Binding: Paperback
Product Description:
Version 9 of PowerBuilder introduces many features designed specifically to blend the traditional strength of PowerBuilder as a rapid Client/Server application development tool with the new and emerging models for distributed application development. PowerBuilder developers need PowerBuilder-specific information on interacting with Java application servers, such as WebSphere, WebLogic, and Sybase’s Enterprise Application Server (EAServer) and Web Service development. This book presents the new capabilities of PowerBuilder 9 along with the architecture and patterns required to create distributed systems in PowerBuilder."
miércoles, 18 de noviembre de 2009
Filtros SQL dinámico para reportes en SQL Server
martes, 10 de noviembre de 2009
Funte de datos Stored Procedure y Transact SQL
sábado, 7 de noviembre de 2009
Poblar un DropDownListBox control desde base datos
datastore dsds = create datastoreds.dataobject='dw_tdo_doc'ds.settransobject(sqlca)ds.retrieve()int lifor li=1 to ds.rowcount()insertitem(ds.getitemstring(li,'tdo_desc'),li)nextinsertitem('Seleccionar...',1)selectitem(1)
viernes, 30 de octubre de 2009
Datos y Notación por punto en Power Builder
dw_1.Object.avg_cf[1]
miércoles, 28 de octubre de 2009
Power Builder 10.5 ShellExecute
- Declaramos la función local externa:
- Luego podemos utilizar la función externa de la siguiente forma:
martes, 13 de octubre de 2009
Solucionando error Mondrian y PostgreSQL 8.3.8
<!-- Producto -->
<Dimension name="Producto">
<Hierarchy name="Tipo" hasAll="true" primaryKey="id_dim" caption="Producto/Tipo" allMemberName="Todas" allMemberCaption="(Todas)">
<Table name="dim_producto"/>
<Level name="Tipo" column="tipo_codigo" nameColumn="tipo_desc" hideMemberIf="IfBlankName" type="String"/>
<Level name="Producto" column="id_producto" nameColumn="nombre_producto" hideMemberIf="IfBlankName" type="Numeric">
<Property name="Precio_mn" column="precios" type="Numeric"/>
<Property name="Precio_usd" column="precio_usd" type="Numeric"/>
<Property name="Unidad_medida" column="unidad_medida" type="String"/>
</Level>
</Hierarchy>
<Hierarchy name="Grupo" hasAll="true" primaryKey="id_dim" caption="Producto/Grupo" allMemberName="Todas" allMemberCaption="(Todas)">
<Table name="dim_producto"/>
<Level name="Grupo" column="grupo_codigo" nameColumn="grupo_desc" hideMemberIf="IfBlankName" type="String"/>
<Level name="Producto" column="id_producto" nameColumn="nombre_producto" hideMemberIf="IfBlankName" type="Numeric">
<Property name="Precio_mn" column="precios" type="Numeric"/>
<Property name="Precio_usd" column="precio_usd" type="Numeric"/>
<Property name="Unidad_medida" column="unidad_medida" type="String"/>
</Level>
</Hierarchy>
</Dimension>
{"String", "Numeric", "Integer", "Boolean", "Date", "Time", "Timestamp"}
por defecto es String. Seguido les dejo algnas referenias que me ayudaron a reslver el problema.
Referencias:
http://forums.pentaho.org/
http://forums.pentaho.org/
http://docs.huihoo.com/
lunes, 12 de octubre de 2009
Asistente para la publicación de datos en MSSQL 2005
sábado, 10 de octubre de 2009
Crear un Esquema de Base Datos en SQL Server Management Studio
viernes, 18 de septiembre de 2009
Modify DropDown Datawindow DDDW en Power Builder
domingo, 13 de septiembre de 2009
Trabajando con DropDownDW Datawindow
miércoles, 9 de septiembre de 2009
Culumnas computadas vs Campos computados en Power Builder
miércoles, 19 de agosto de 2009
Sincronización de marcadores en Chrome 4
domingo, 16 de agosto de 2009
Salvar y Restaurar Base de Datos en MS SQL Server 2005
jueves, 13 de agosto de 2009
Blogger y resumenes de entradas "Más información"
Control de Versiones de Fuente en Power Builder con Subversion
Requisitos:
Subversion (aplicaciones de consola SVN)
TortoiseSVN (interfaz visual SVN para Window)
PbSccProxy (ver 2009-08-01)PBSCC Proxy
PBNativo vs. PBSCC Proxy
En el repositorio de fuentes PBNativo no se almacena un histórico de las versiones de cada objeto, es decir de los cambios hechos en cada check-out. Aunque cuando se hace un check-in se incrementa el número de versión del objeto, solamente queda guardada la última versión en el repositorio; mientras que con PBSCC y TortoiseSVN podemos obtener un histórico de manera fácil, además de todas las bondades que podemos tener usando Subversion como control de versiones de nuestros fuentes.
Desarrollo
En esta entrada abordare sobre el software necesario que necesitaríamos para hacer un buen control de versiones en Power Builder utilizando Subversion y PbSccProxy.
1. Descargamos, configuramos e instalamos Subversion. Asegurarse de que este ejecutándose como servicio (svnserve.exe)
2.Creamos el repositorio para los fuentes en Subversion (svnadmin) o mediante TortoiseSVN.
3. Instalamos TortoisesSVN y creamos el repositorio local SVN.
4. Instalamos PbSccsetup (pbsccsetup.exe)
5. Abrimos y configuramos las propiedades del espacio de trabajo (workspace) de nuestro proyecto, para un control de Fuentes utilizando PBSCC Proxy. Veamos las propiedades establecidas:6. Nos conectamos al repositorio SVN
7. Adicionamos los objetos de nuestro espacio de trabajo al repositorio SVN (Add to Source Control…, haciendo click derecho sobre el workspace)
8. Escribimos el mensaje para log del SVN
9. Verificar que los objetos (SR*) fueron adicionados al repositorio SVN
10. Actualizamos nuestra espacio de trabajo haciendo un "PowerBuilder Check Out"
11. Ver el historial del objeto, haciendo click derecho sobre el objeto de la librería y "Show History".
miércoles, 12 de agosto de 2009
Informe de Bodega III
SELECT p.pro_codigo, ((
SELECT ISNULL(SUM(compra.com_cantidad),0)
FROM compra
WHERE p.pro_codigo=compra.pro_codigo)-(
SELECT ISNULL(SUM(venta.vta_cantidad),0)
FROM venta
WHERE p.pro_codigo=venta.pro_codigo)) AS stock
FROM producto p
SELECT p.pro_codigo
FROM producto p
GROUP BY p.pro_codigo, p.pro_stock
HAVING p.pro_stock > ((
(
SELECT ISNULL(SUM(compra.com_cantidad),0)
FROM compra
WHERE p.pro_codigo=compra.pro_codigo)-(
SELECT ISNULL(SUM(venta.vta_cantidad),0)
FROM venta
WHERE p.pro_codigo=venta.pro_codigo))
)
SELECT p.pro_codigo , producto.pro_nombre, p.pre_valor
FROM precio p, producto
WHERE pre_desde = (
SELECT MAX(pre_desde) FROM precio
WHERE pro_codigo=p.pro_codigo AND pre_desde < '20080101')
AND producto.pro_codigo=p.pro_codigo
lunes, 10 de agosto de 2009
Temas para Google Chrome
viernes, 7 de agosto de 2009
Informe de Bodega II
Confeccionar una consulta SQL que permita:
3. Obtener el código y nombre de cada producto que registre más de 500 unidades vendidas durante el 2005.
SELECT producto.pro_codigo, producto.pro_nombre
FROM producto, venta
WHERE producto.pro_codigo=venta.pro_codigo AND vta_fecha BETWEEN '20050101' AND '20051231'
GROUP BY producto.pro_codigo, venta.vta_cantidad, producto.pro_nombre
HAVING 500 < SUM(vta_cantidad)
SELECT producto.pro_codigo, producto.pro_nombre
FROM producto
WHERE pro_codigo NOT IN
(SELECT pro_codigo
FROM venta
WHERE venta.vta_fecha BETWEEN DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) AND dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))