domingo, 18 de diciembre de 2016

Alfresco con Active Directory

     Muchos días han pasado desde mi ultimo post, pero nunca es tarde para hablar de Alfresco. Este gran gestor empresarial para manejo de contenidos, tiene su origen nada menos que en Documentum por lo que resultara muy útil vincularlo con Active Directory.
     Dentro de la wiki oficial hay información como vincularlo con ldap, también hay un ejemplo de validación Alfresco contra un Windows Server 2003. Vale la pena aclarar que esta configuración vinculara nuestro gestor de contenidos  con versiones 2008 en adelante peeeero de forma temporal y llenando nuestra bitácora de eventos con entradas WARN, lo cual no es muy bueno, sobre todo si somos EVENT VIEWER STALKER ☺
     Y la configuración sugerida de Alfresco para versiones Windows Server 2008 en adelante...

## Editamos el archivo alfresco-global.properties para que quede de la siguiente manera:

### AD authentication only ###
authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap-ad1:ldap-ad
ldap.authentication.active=true
ldap.authentication.allowGuestLogin=true
ldap.authentication.userNameFormat=%s@MI_DOMINIO.local
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://MI.SERVER.MI_DOMINIO.local:389
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false

##EL USUARIO alfresco (EN ESTE CASO) DEBERA SER CREADO EN Active Directory

ldap.authentication.defaultAdministratorUserNames=alfresco 
ldap.synchronization.active=true
ldap.synchronization.java.naming.security.principal=alfresco@MI_DOMINIO.local
ldap.synchronization.java.naming.security.credentials=
ldap.synchronization.queryBatchSize=1000
ldap.synchronization.attributeBatchSize=1000
synchronization.synchronizeChangesOnly=false
synchronization.allowDeletions=true
synchronization.syncWhenMissingPeopleLogIn=true 
ldap.synchronization.groupQuery=objectclass\=group
ldap.synchronization.groupDifferentialQuery=(&(objectclass\=group)(!(modifyTimestamp<\={0})))

## cms_alfresco SERA EL GRUPO DONDE ESTARA EL USUARIO alfresco

ldap.synchronization.personQuery=(&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(|(memberOf=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local)(memberOf=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local)))

ldap.synchronization.personDifferentialQuery=(&(objectclass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(|(memberOf=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local)(memberOf=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local))(!(modifyTimestamp<\={0})))

ldap.synchronization.groupSearchBase=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local

ldap.synchronization.userSearchBase=CN=cms_alfresco,OU=Security Groups,OU=MI_UNIDAD_ORGANIZACIONAL,DC=MI_DOMINIO,DC=local

ldap.synchronization.modifyTimestampAttributeName=modifyTimestamp
ldap.synchronization.timestampFormat=yyyyMMddHHmmss'.0Z'
ldap.synchronization.userIdAttributeName=sAMAccountName
ldap.synchronization.userFirstNameAttributeName=givenName
ldap.synchronization.userLastNameAttributeName=sn
ldap.synchronization.userEmailAttributeName=mail
ldap.synchronization.userOrganizationalIdAttributeName=company
ldap.synchronization.defaultHomeFolderProvider=largeHomeFolderProvider
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupDisplayNameAttributeName=displayName
ldap.synchronization.groupType=group
ldap.synchronization.personType=user
ldap.synchronization.groupMemberAttributeName=member
ldap.synchronization.enableProgressEstimation=true



miércoles, 30 de diciembre de 2015

Regimen Informativo Compras y Ventas AFIP

 Se nos va el año y vengo bastante colgado con esto.... quería compartir unas planillas de excel que permiten generar el archivo de texto para cargar en el Régimen Informativo Compras y Ventas de Siap, correspondientes a AFIP, de esta manera podremos realizar de manera mas sencilla la presentación.




domingo, 28 de junio de 2015

Base de datos contribuyentes AFIP

 En el proceso de implementar facturación electrónica en un par de clientes me doy con el padrón de contribuyentes AFIP pero en formato .db (sqlite). El sistema de consultas rápidas que estoy armando almacena en Mysql así que me decidí a migrar los mas de 4 millones de registros.
 La DDL (campos de la tabla padron) seria algo así:

-CUIT.
-Razon Social.
-Impuesto a las ganancias (Activo/No Inscripto/Exento/No Corresponde).
-IVA (Activo/Exento/No Alcanzado/Exento No Alcanzado/ Activo No Alcanzado).
-Monotributo (Categoría/No Inscripto).
-Integrante Sociedad (SI/NO).
-Empleador (SI/NO).
-Actividad Monotributo (Nro).

Aqui el Link



viernes, 20 de febrero de 2015

Arduino en la Industria?

  Llegando de mis merecidas vacaciones y después de no publicar nada en lo que va del 2015, quería compartir una serie de cuestiones referentes a Arduino. Debo decir que la comunidad es grandisima y genial por la diversidad de proyectos, sketchs y documentos que se pueden encontrar, un nuevo triunfo para el conocimiento libre sin dudas.
  Hace unas semanas atrás asistí a un expo de tecnología y automatización muy importante que se realiza anualmente por estos lares, mientras recorría los stands escucho la voz conocida (ronca de fumador empedernido) de un amigo, me detuve a saludarlo y también porque me inquieto su pregunta:

  -Que tienen de bueno los plc que no tengan los pics o las otras boards que hay en el mercado?

 La pregunta se la hizo a un vendedor (técnico) de una multinacional con gran enfoque en automatización y su respuesta textual fue:

-Mira, para que te des una idea estas comparando un iphone 6 contra un nokia 1100, el pic y las otras plaquitas es para cuando vas al cole y soñas con estudiar robotica o algo parecido y queres mover un motorcito o hacer una pequeña tarea de forma automática a muy baja escala y de muy bajo presupuesto, osea algo impensado en ambiente laboral o industrial.

  La respuesta nos resulto muy mezquina a los que en ese momentos estábamos mirando el stand y comenzó una serie de preguntas y respuestas a tal punto que se torno en debate (los 5 que estábamos mirando el stand contra los 5 que atendían), la cuestión es que luego de esta respuesta, medio que me calente y pense por unos instantes (...el forro este sentado en su silla reclinable tomando nespresso responde con esa liviandad!), inmediatamente pregunto:

 -Tengo varias conjeturas en base a tu respuesta...

 primero: si lo que yo quiero es solo hacer llamadas me compro un nokia 1100, vale el 2% de un iphone 6 y te dura 7 días la batería.

segundo: un pic sin meterle gran cantidad de lineas funciona perfectamente en cualquier ambiente, arme un proyecto con pic que controla tarjas de turnos rotativos para los obreros en un lugar que se llama Campo Chico en Oran, donde la temperatura supera ampliamente los 40 grados y hace mas de 3 años que lo usan a diario.

tercero: las "otras plaquitas" que decís, como Arduino por ejemplo, desde hace mas de 3 años que están basadas en arquitectura ARM lo cual, si entendes algo del tema, sabrás que son capaces de manejar interrupciones propias, 32 bits, sistemas operativos nativos, lenguajes propios e interpretados y varias cuestiones mas...

cuarto: Instale un Arduino Mega en un contenedor que es una sala de generadores en la Cordillera de las Andes a mas de 4.000 metros sobre el nivel del mar en una caja estanco alimentado con panel solar + regulador rectificando a 5v, funciona desde  Marzo 2013 con temperaturas que oscilan de -25 a 35 grados centigrados y vientos que llegan a 110 kilómetros por hora conectado a ethernet shield + sensor de temperatura(hace datalogging en sd card cuando pasa umbrales establecidos cada un minuto, grabando temperatura-humedad-fecha-hora) certificado y calibrado + sensor de monoxido de carbono (graba registro en sd card si el valor expresado en particulas por millon es mayor o igual a 30 por un lapso de 45 minutos y mediante la gsm shield envía un sms al de seguridad e higiene y al de mantenimiento) certificado y calibrado + decibelimetro(si los decibeles son mayor o igual a 70 graba en sd) certificado y calibrado+optoacoplador con salida a 220v AC 10A, aquí se conectaron un reflector (exclusivo para tablero principal y 1er tablero segregado aguas abajo) estanco led a 220v 6000 lumenes conectado a switch booleano (sensor de presencia/pulsador) + driver con salida a 220v 30A y motor paso a paso 220v a 6 newton por metro cuadrado (el motor abre/cierra puerta aislante para ambiente controlado donde están los filtros, aceite y una pc touchscreen para control de services preventivos y correctivos de generadores) + higrometro (pequeño sensor que mide presencia de agua, si llego a nivel 2 que sera 1.5 cms graba en sd card y manda sms a personal responsable)  + impresorita térmica arduino con teclado membrana (si la pequeña insulsa esta funciona en el ambiente controlado perfectamente e imprime un reporte de los valores fuera de los umbrales establecidos en temperatura, decibeles, nivel de agua en suelo, humedad y gases).

la ultima acotación que hice fue: Tenemos plcs para manejar bombas trifasicas, agitadores, motores eléctricos grandes, un tablero de transferencia y dos cintas transportadoras medianas + scada que por batch replica a un motor de base de datos (cabe aclarar que el Arduino también replica a un mysql)...TE CUENTO TODO ESTO PARA QUE SEPAS QUE LA IMPLEMENTACION REALIZADA CON ARDUINO SE HIZO EN UN 1/3 DEL TIEMPO QUE PROYECTARON HACER CON PLC E INVERTIMOS MENOS DEL 10 % DE DINERO...

Ergo: 
        -Para grandes tensiones, para grandes corrientes, para grandes volúmenes en gral lo correcto es usar plc sin dudas.

        -No todo lo que implica industria funciona a >=380v o a cientos de amperes.

        -Se pueden usar sensores calibrados y certificados fuera de plc.

        -Zelio no es plc, no es mas que un rele "casi inteligente" (se configura mediante diagrama de bloque, imaginate...).

        -Si Arduino funciona en las inclemencias climáticas que comente...funciona en muchiiiisimos lugares!.




sábado, 27 de diciembre de 2014

Base de datos de paises, provincias y localidades de todo el mundo

  Parámetros muy útiles en el desarrollo de aplicaciones, disponer de tablas relacionadas con países, provincias y localidades...
  La siguiente base de datos esta para mysql, pero funcionaria perfectamente en Oracle, Postgres, Sql Server y demás, esta trimiada (termino vulgar para decir libre de basura), en Español y muy sencilla de entender. Recuerden setear las tablas a UTF8 en vuestro motorcico de base de datos para intepretar acento y eñe.
  La DDL seria algo así (localidades con 2 fk por el tema de cascada en alguno motores):

##paises
paiscod *pk
paisnom

##provincias
provincod*pk
provinnom
paiscod*fk

##localidades
localidcod*pk
localidnom
provincod*fk
paiscod*fk















 Link de descarga

domingo, 14 de diciembre de 2014

Sistema para PyMES gratis

 Sistema bastante completo para ventas, gestión y control de stock, unas de sus principales bondades es que corre perfectamente en computadoras de bajo costo y moderadas prestaciones (probado en pc con 256 de ram, amd sempron 1.8ghz, disco de 40gb y windows xp light ).
 Algunas de las bondades del sistema son:

-Proveedores.
-Clientes.
-Control de caja.
-Reportes.
-IVA compras.
-Manejo de código de barras para los artículos.
-Control de stock e inventarios.
-Control de cajas.
-Manejo de compras y ventas.
-Pagos.
-Control de tarjetas de crédito.
-Cuentas corriente.
-Imputaciones y ajustes.
-Notas de crédito.
-Notas de débito.
-Control detallado de saldos y movimientos.
-Facturación.
-Devoluciones de mercadería.
-Manejo de perfiles/jerarquía de usuarios.
-Centros de costo.
-Listas de precio.
-Señas/adelanto por productos.

  Instrucciones:

    Descomprimir y copiar la carpeta a C:\ el sistema tiene tres archivos ejecutables (compras, caja, stock) hacer acceso directo de c/u al escritorio. El usuario y pass del administrador estan en el archivo de texto. En el caso de que una compu este solo para facturar,  realizar el acceso directo del ejecutable caja.exe y....sale con frita.  











Link de descarga


martes, 9 de diciembre de 2014

Base de datos de marcas y modelos de autos

  Hace varios días que vengo atrasado con una migración y no tuve tiempo de postear nada, en ese proceso encontré una base de datos (sql) de marca y modelos de autos, es de este año así que resulta bastante útil para diferentes usos.
















     Link de descarga

viernes, 5 de diciembre de 2014

Enviar mail desde Linux usando Gmail

   Actualmente estoy usando un servidor Cloud (servidor de nube tipo dropbox pero corriendo localmente y open source...en algún momento voy a compartir un how-to al respecto)  y tenia la necesidad de configurar el servicio smtp en Linux(debian), por lo que voy a compartir como quedo parametrizado:

##instalamos exim
 sudo apt-get install exim4

## seteamos ip estática
sudo nano /etc/network/interfaces

##debera quedar de la siguiente manera
iface eth0 inet static
        address 192.168.10.10
        netmask 255.255.255.0
        network 192.168.10.0
        gateway 192.168.10.1

##declaramos la ip y nombre del servidor en /etc/hosts
##debera ser igual al que tenemos en /etc/hostname
127.0.0.1   localhost
192.168.10.10   servidor03.midominio.local    servidor03

## ahora hay que configurar exim para que envie correos a través de internet
sudo dpkg-reconfigure exim4-config

#Nos aparece un menu, vamos a seleccionar la segunda opcion smarthost

#En nombre del sistema de correo poner el mismo nombre configurado en /etc/hostname

#En Direccion IP de las conexiones entrantes SMTP poner  127.0.0.1

#En la opción Otros Destinos para que acepten correo, dejar en blanco.

#En la opción maquinas para reenviar correo, dejar en blanco

#En Direccion IP o nombre del smarthost poner: smtp.gmail.com::587  (asi tal cual con ::)

#En la opción ocultar el nombre de correo local para mensajes salientes, poner No

#En la opción limitar nro de consultas de DNS, poner No.

#Para el mecanismo de entrega de correo local, elegir /var/mail

#En la opción dividir la configuración en pequeños ficheros, elegir Si.

#Editar el archivo /etc/exim4/passwd.client donde se agregaran estas lineas:
##obviamente con el usuario y password de tu cuenta de mail
gmail-smtp.l.google.com:pepito@gmail.com:p4ssw0rd
*.google.com:pepito@gmail.com:p4ssw0rd
smtp.gmail.com:pepito@gmail.com:p4ssw0rd

##reiniciar exim
sudo service exim restart

#Los logs se podrán consultar en /var/log/exim4/

#Para controlar los mails que hayan quedado en cola:
sudo exim –bp

#Para borrar los mails en cola
sudo exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash

#Enviamos un mail de prueba
mail -s "Esto es una prueba" jaimito@gmail.com

LISTO! ya tenemos funcionando nuestro servicio de mailing desde Linux con una cuenta de gmail, lo cual es bueno ya que nos aseguramos de que lleguen a la bandeja de entrada ;)





miércoles, 3 de diciembre de 2014

Manuales Oracle

 Esta vida que te vuelve mercenario (entiéndase este termino por trabajar con cuestiones comerciales...como lo es Oracle) me llevo a relacionarme con este muy buen motor de base de datos y tuve la suerte de disponer de material de estudio a mas no poder!.
 Varios de estos documentos provienen de Metalink (departamento técnico oficial del soporte Oracle). En este archivo comprimido contiene material sobre:

-Conceptos básicos sobre Oracle database.
-Administración de base de datos Oracle.
-Scripting.
-Tunning(mejorar performance).
-RAC (alta disponibilidad).
-Seguridad en Oracle.
-RMAN(ackup&restore).
-SQL.
-PL/SQL.
-Datawarehouse.
-Datamining.
-Oracle en Linux.
-Dataguard(recuperación de desastres, contingencias).
-Tips para ser un buen DBA Oracle.
-Exámenes Oracle DBA.




















Link ->

martes, 2 de diciembre de 2014

Lenguaje Python para niños

Que geek no soñó con formar un hijo desde pequeño en algo bueno y sustentable como python!. Comparto un manual muy bueno escrito por Jason Briggs y traducido por Jose Miguel Gonzalez














Link manual