• Goltratec Blog

  • Solucion a problemas informaticos (hardware, programacion, redes, etc)

31st August 2010

Auditar borrado y uso de ficheros en samba.

Tip super rapido para loguear creacion/borrado/escritura de archivos o carpetas en SAMBA

En [global] (o en el recurso que queramos loguear) agregamos las lineas:

vfs objects = full_audit
full_audit:prefix = %U|%u|%I
full_audit:success = mkdir rmdir rename pwrite write unlink
full_audit:failure = none
full_audit:facility = LOCAL6
full_audit:priority = ALERT

Luego en /etc/syslog.conf agregamos la siguiente linea:

local6.* /var/log/samba/samba_audit.log

Reiniciamos samba y syslog:

service syslog restart && service smb restart

Y comenzaremos a ver en /var/log/samba/samba_audit.log lo que borran o crean los usuarios.
Ejemplo:

Mar 17 17:16:57 localhost smbd_audit: csepulveda|web|192.168.1.11|pwrite|ok|123
Mar 17 17:17:00 localhost smbd_audit: csepulveda|web|192.168.1.11|unlink|ok|./123
Mar 17 17:17:28 localhost smbd_audit: csepulveda|web|192.168.1.11|mkdir|ok|carpeta
Mar 17 17:17:30 localhost smbd_audit: csepulveda|web|192.168.1.11|rmdir|ok|carpeta
Mar 17 17:17:39 localhost smbd_audit: csepulveda|web|192.168.1.11|pwrite|ok|renombrar
Mar 17 17:17:46 localhost smbd_audit: csepulveda|web|192.168.1.11|rename|ok|./renombrar|./renombrar123

posted in Linux, Redes, windows | 0 Comments

4th August 2010

Activity y Sub-Activity

El que se este iniciando en esto de Android, ya sabe que el Activity viene a ser como una aplicación de formulario en Windows (salvando las distancias claro)… pues al igual que en una aplicación Windows, no se organiza todo en un solo form o como en este caso en un solo activity.

Siempre existe un Activity principal que dispara otros “Sub-Activity” y generalmente estos últimos  nos deben devolver algún valor. Pues estos son los que vamos a ver, pero antes de empezar quiero pedir disculpas anticipadas a los gurús de Android ya que este mini tutorial lo escribo para afianzar lo que he aprendido hoy, y como todo el mundo sabe en esto de la programación, la experiencia la da el tiempo, por lo tanto con seguridad que tratare las cosas con cierta sencillez y dejando algunas cosas fuera del tintero por no terminar de comprenderlas.

Pues bien dicho esto comencemos a definir algunos conceptos:

  • Intent: Digamos que son los sistemas que nos proporciona Android para invocar a un Activity. (buen artículo sobre los Intent en español)
  • Bundle: es una estructura que permite almacenar datos (clave/valor) y pasarla de una actividad a otra, siempre de datos primitivos.

Bueno, sigamos preparándonos para una Sub-Actiity. La clase que vayamos a usar como subactivity la debemos crear en el mismo proyecto en el que estemos trabajando en un fichero diferente sobre el directorio src. Debe pertenecer al mismo paquete donde tenemos nuestro Activity principal. A continuación os dejo una captura de mi proyecto en eclipse (comento esto porque en los diferentes tutoriales que he ido encontrando nadie lo comentaba, y me hubiera ahorrado un tiempo si lo hubieran hecho).

activity

 

Para terminar de preparar nuestro proyecto, debemos decirle al AndroidManifiest.xml que vamos a disponer de otro activity. Lo que hacemos es abrirlo y colocar la línea que marco en rojo.

manifiest

Tened en cuenta que el atributo android:name debe coincidir con el nombre de la clase que hayáis definido. y el android:label, yo lo cojo del fichero que cuelga de values llamado strings.xml donde previamente he definido un ítem llamado “configuracion_name”.

ACTIVITY PRINCIPAL

Bien, vamos a comentar con el código que debemos usar en nuestra Activity principal. En mi caso lo que he hecho es que en una opción del menú de mi aplicación, llamo al sub-activity:

Intent i = new Intent(this,configuracion.class);
                this.startActivityForResult(i, 0);

Como ya hemos dicho, el intent nos permite llamar a otro activity. El intent lo instanciamos pasándole el contexto en el que va a actuar (o sea la propia aplicación) y la clase que queremos llamar. La siguiente línea lo que indica es que el Activity se lanza esperando una respuesta con el intent que hemos creado y esperando que si todo va bien el código que nos devuelva sea 0. Si hubiéramos querido pasar alguna información al activity que vamos a llamar, deberíamos haber hecho algo como lo que sigue:

Bundle bund; //creamos el bunde
bund.putString(“clave01”,”valor para clave”); //definimos una clave y un valor para la misma.
i.putExtras(bund); //lo añadimos al intent

En el activity principal solo nos queda crear un evento que responda cuando el sub-activity finaliza. Debemos tener muy en cuenta que esto no funciona como formulario modales donde el flujo del programa se para… por ello es necesario controlar con un evento el funcionamiento del sub-activity. Bien, en nuestro activity principal creamos una función como esta:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 0){
                Bundle b = data.getExtras();
                tv.setText(b.getString("ImagenSeleccionada"));
        }
    }

Básicamente lo que hacemos es comparar si lo que nos ha devuelto el sub-activity corresponde con el código que le hemos pasado al crearlo como que todo es ok. Si es así, creamos un bundle donde cargamos toda la información que nos hayan remitido y finalmente la muestro en un textview (en este caso muestro solo el valor cuya clave es ImagenSeleccionada).

SUB ACTIVITY

Bien, ahora pasamos a la clase (en mi caso llamada configuracion) que vamos a llamar desde la principal. A casi todos los efectos es una clase normal, igual que la principal, pero debemos controlar que esta devuelva lo necesario. En mi caso he creado una función a la que llamo cuando finalizo el trabajo con este Activity:

public void returnToCaller(View view){
         Intent i;
         i=new Intent();
         i.putExtras(bund);
         setResult(0,i);
         finish();
     }

Bien, analicemos esto, en primer lugar el intent.. necesitamos comunicarnos con el otro activity por lo tanto nos toca usarlo (sin embargo en este caso no le indicamos clase ninguna, es decir lo vamos a usar como transporte de los datos del bundle). Lo siguiente cargar en el intent los datos del bundle al cual le habremos cargado información en nuestra aplicación conforme nos haya hecho falta (hemos visto un ejemplo de como hacerlo antes). Y ahora lo más importante, el setResult donde el primer parámetro indica que todo ha ido bien (recordamos que en el ACtivity principal definimos que si el sub-activity devolvía 0 es porque todo había ido con normalidad) y el intent que contiene el bundle. Y como colofón el finish(); que se encarga de cerrar el Activity y pasar todo lo que teníamos preparado al Activity principal.

Para llamar a esa función, lo que yo he hecho ha sido crearme un botón y en el evento onClick le he asignado la función returnToCaller. Es por este motivo que he tenido que crear la función con un parámetro View, ya que cuando declaras funciones para eventos en el xml este por defecto siempre pasa como parámetro el View que lo dispara… y voila.. ya tenemos nuestro Activity con su SubActivity….

¿O no?.. veréis, estaba yo tan contento con que todo funcionaba, hasta que se me ocurre, estando en la pantalla de la clase de configuración, dar al botón Back …y de pronto ….la bonita pantalla de Android diciendo que ha ocurrido alguna cosa inesperada y que tiene que cerrarse. El motivo de esto es que hemos vuelto al Activity principal sin remitir los datos necesarios para el evento onActivityResult. Pues buscando un poco he visto como disparar nuestra función returnToCaller cuando se pulsa esta tecla:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
        returnToCaller(null);
    return true;
    }

Ahora si, de esta forma ya podemos usar un formulario llamado desde otro formulario (en lenguaje windows XD) o mejor dicho, que un Activity dispare otro Activity.

Espero que os haya sido de ayuda…

posted in Programacion, android | 0 Comments

3rd August 2010

Como crear un menu en Android desde XML

Aunque es posible crear el menú desde el propio código del Activity, nosotros lo crearemos desde los recursos definiendolo en un xml con la finalidad de separar el aspecto de la parte lógica del programa.

En primer lugar creamos un directorio dentro de res llamado menu y dentro de este creamos un fichero menu.xml.

A continuación , el fichero debe contener algo como esto:

<menu xmlns:android="http://schemas.android.com/apk/res/android">

       <item android:id="@+id/mnMenu1" android:title="Este es el menu 1" />

       <item android:id="@+id/mnMenu2" android:title="Este es le menu 2" />

</menu>

Ni que decir tiene que cada item admite más parámetros, para eso nos podemos dirigir a la ayuda del sdk de android.
Bien ya tenemos el menú definido en el xml, ahora nos queda implementarlo en la aplicación.

public boolean onCreateOptionsMenu(Menu menu){

        MenuInflater inflater=getMenuInflater();

        inflater.inflate(R.menu.menu,menu);

        return true;

    }

Expliquemos esto:

  • onCreateOptionsMenu es un evento del propio Activity que se dispara de forma automática y es aquí donde decimos a la aplicación que cargue nuestro menú.
  • MenuInflater es una clase qeu sirve para crear un view Menu a partir de la definición XML.
    Bueno, ahora solo nos queda implementar lo que sería la función que cada ítem del menú debe ejecutar. Con este evento controlamos que ítem se ha clicado y llamamos a la función que necesitemos en cada caso.

public boolean onOptionsItemSelected (MenuItem item){

        switch (item.getItemId()){

            case R.id.mnMenu1:

            break;

            case R.id.mnMenu2:

            break;

        }

Por último no olvidad que necesitáis importar los siguientes paquetes para que eso funcione:

import android.view.Menu;

import android.view.MenuInflater;

import android.view.MenuItem;

posted in Programacion, android | 0 Comments

3rd August 2010

Hacer vibrar Android (SDK)

Tras una hora pegándome contra google y maldiciendo porque mi código era igual que el de otros… he llegado a un post donde apuntan el problema.

Lo primero de todo, hay que decir a android que la aplicación tiene permisos para acceder al servicio de vibración. Esto lo conseguimos añadiendo al AndroidManifiest.xml la siguiente línea (la subrayada).

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="...">

<uses-permission android:name="android.permission.VIBRATE"/>

<application android:label="...">

     ...

</application>

</manifest>

Después solo debemos cargar un objeto que herede del servicio de vibración.

// Instancia del contexto en el que estamos

Vibrator v = (Vibrator) getSystemService(getApplicationContext().VIBRATOR_SERVICE);

// Vibrar durante 3 segundos

v.vibrate(3000);

posted in Programacion, android | 0 Comments

2nd August 2010

Diseñar formulario en Android

Apoyanos ,no te cuesta nada.

Este es mi primer artículo sobre Android. Uno de los problemas que uno se encuentra es el diseño, todo se configura a través de un fichero xml y buscando información para entender bien como funcionan los layout (diferentes viewgroups que permiten distribuir de una forma u otra los views / componentes) me he topado con esta utilidad hecha en java y accesible vía web.

http://www.droiddraw.org/

No es la panacea, pero ayuda y sobre todo cuando estas aprendiendo puedes ver que código necesitas para mostrar de una u otra forma tu aplicación.

posted in Programacion, android | 0 Comments

26th July 2010

¿Ficheros en la Nube? lo mejor es Dropbox

Esta herramienta la conocí a partir de las pesquisas y pruebas realizadas por mi compi de penurias en el trabajo , Jesus. En cuanto me la enseño me enamore. Me permitía, ni más ni menos, que disponer de los ficheros que normalmente necesito en cualquier lugar donde tuviera internet, además de esto el propio programa te guarda diferentes versiones de los ficheros modificados lo cual es un alivio en caso de modificar algo y querer rescatar una versión sin los cambios.

Se puede usar de una forma dual, es decir, puedes tener una aplicación instalada en tu equipo (por cierto esta aplicación la puedes usar en linux, windows, mac, android, iphone …)  o bien acceder via web lo que te permite una libertad total.

Para la sincronización es necesaria la instalación del software pero es increíble la forma que tiene de gestionar tu ancho de banda, no notas que lo tienes, el solo regula la velocidad a la que debe subir los cambios e incluso se puede usar (para los desarrolladores esto es muy útil) como svn, de hecho nosotros lo hemos usado en alguna ocasión de esta forma para proyectos Flash.

La versión gratuita la puedes obtener aquí, y te proporciona 2gb de espacio, personalmente a mi me es suficiente ya que lo uso más a nivel profesional que otra cosa y ahi dispongo de los documentos y plantillas que siempre necesito. Otra buena utilidad es la de disponer de una copia en la nube (eso si, con la consiguiente limitación de espacio de los 2gb que tiene la cuenta gratuita.

Las versiones de pago no son nada caras, tienes una versión Pro de 50gb por solo 9,99$ al mes o 99$ al año y otra de 100Gb (Diosssss) por 19.99$ al mes o 199$ al año.

En resumen, bajo mi criterio esta es una de esas herramientas que siempre debes tener…

posted in General | 0 Comments

26th July 2010

Un buen servidor de correo corporativo gratis.

Goltratec siempre anima a las empresas con cierto volumen que apuesten por un servidor de correo propio para poder centralizar el almacenamiento de todos los emails, así como la gestión de usuarios y copias. Para eso intentamos buscar siempre las soluciones más óptimas desde el punto de vista de rendimiento y desde el punto de vista económico. Pues esta es una de las soluciones que llevamos usando  4 años y que además dispone de una versión gratuita, Desknow. Desde que descubrimos esta herramienta , firmamos un acuerdo de distribución con esta empresa con el fin de disponer de soporte para todas aquellas empresas  que desean pasar a la versión profesional del producto por un coste 5 veces inferior al de otras soluciones que ofertan similares características.

A continuación os mostramos un cuadro comparativo de la versión gratuita y la versión profesional para que veáis que la herramienta no tiene desperdicio en ninguna de sus variantes:

desknow 

Dispondremos de una herramienta de trabajo en grupo con calendarios, libretas de direcciones, documentos, acceso al correo por web, acceso al correo a través de terminales móviles, descarga de otras cuentas de correo, etc. No obstante si la herramienta gratuita se queda corta, podemos migrar a la versión profesional desde 149€ con 1 año de soporte y actualizaciones (pago único salvo que deseemos soporte durante años consecutivos y acceso a nuevas actualizaciones).

Además , otra muy buena característica es que podemos instalarlo tanto en windows como en linux de manera que podemos conseguir un servidor de correo y colaboración potente, escalable y  100% gratuito.

posted in Linux, Redes, windows | 0 Comments

26th July 2010

DeepFreezer y Goltratec

Apoyanos ,no te cuesta nada.

Desde hace algunos meses, Goltratec distribuye para la zona de Alicante el producto DeepFreezer de Faronics con un porcentaje de satisfacción en los proyectos empleados del 100%. Este producto nos parece lo suficientemente interesante para algunos escenarios que deseamos hacerles llegar una breve explicación de su uso y funcionamiento.

Definición

Deep Freeze es un controlador del núcleo que protege la integridad del disco duro redirigiendo la información que se va a escribir en el disco duro o partición protegida, dejando la información original intacta. Las escrituras redirigidas desaparecen cuando el sistema es reiniciado, restaurando el equipo a su estado original. Esto permite a los usuarios realizar cambios virtuales en el equipo, por ejemplo para probar cambios potencialmente inestables o peligrosos, sabiendo que al reiniciar el sistema volverá a estar intacto.
Para realizar cambios el sistema se debe descongelar, desactivando Deep Freeze, de forma que los subsiguientes cambios sean permanentes.
Deep Freeze puede restaurar ciertos daños provocado por el malware y virus ya que tras el reinicio cualquier cambio hecho por el software malicioso puede quedar eliminado del sistema al ser revertido al estado original (junto con cualquier otro tipo de modificaciones que se hayan hecho). Sin embargo, esto no impide que un virus ó malware se desarrolle mientras que no se reinicie el sistema, ó que el virus afecte a una partición que no esté protegida, o que se coloque en el registro del Deep Freeze como archivo que estaba previamente en el sistema.

Usos

Faronics diseñó Deep Freeze enfocado en cuatro mercados específicos:

  • Educación - incluyendo Escuelas, Universidades, etc.
  • Gobierno.
  • Bibliotecas - incluyendo las bibliotecas públicas y privadas, así como también otros computadores de acceso público.
  • Salud - útil para Hospitales, Centros de Enfermería, etc.

 

A través de este sistema podemos disponer de nuestros equipos como el primer día lo cual nos va a hacer ahorrar en costes de mantenimiento y nos va a permitir un mayor tiempo de productividad. Ademas DeepFreezer es multiplataforma, es decir, es compatible con Windows (xp, vista, 7), con Mac Os X, y algunas versiones de Linux como Suse Enterprise Desktop.

posted in General, Linux, Redes, windows | 0 Comments

22nd July 2010

Como crear alias en sql server 2005

Esto nos puede ser muy útil, si como en nuestro caso , queremos ahorrarnos tener que cambiar en un red completa el origen de datos en cada equipo a la hora de haber cambiado el nombre del servidor (cosa que puede ocurrir por motivos muy variopintos, una migración, una caída del sistema, una ampliación, un balanceo de cargas)…

Los alias nos van a permitir que nuestra aplicación se conecte al origen “servidorprincipal\sql” aunque el nombre real del servidor sea “servidortemporal” por ejemplo. Lo que a continuación definimos es valido tanto para las versiones profesionales como para las versiones express, student, etc..

Comenzamos por acceder al Administrador de configuración de SQLSERVER.

admconf

A continuación obtenemos la siguiente pantalla y navegamos hasta “configuración de sql native client /alias”

sql

Si pulsamos con el botón derecho sobre Alias, obtenemos un menú emergente que nos permite crear un nuevo Alias.
El Nº de puerto lo dejamos en blanco para que use el que hay por defecto, en el nombre del nuevo Alias colocamos la dirección que deseamos que se use como origen de datos y en Servidor , la dirección con la instancia real del servidor.. y voila.. ya tenemos definido un Alias.

 

alias

posted in General | 0 Comments

20th July 2010

Conexiones remotas a sql server 2005 express

Apoyanos ,no te cuesta nada.

En nuestras tareas de desarrollo de aplicaciones Windows usamos sqlserver 2005 express por aquello de que es gratis (con sus limitaciones, pero gratis) y que es un motor muy poderoso. El problema que se encuentra mucha gente es que no puede acceder a este motor desde otros equipos que no sea el local. Esto se debe a que Sqlserver express por defecto viene sin abilitar protocolos de red.

Para solucionar esto tenemos que seguir los siguientes pasos.

Debe habilitar conexiones remotas para cada instancia de SQL Server 2005 que desea conectarse desde un equipo remoto. Para ello, siga estos pasos:

  • Haga clic en Inicio , seleccione programas , Microsoft SQL Server 2005 , Herramientas de configuración y haga clic en Configuración de área de superficie de SQL Server .
  • En la página Configuración de superficie de SQL Server 2005 , haga clic en Configuración de superficie para servicios y conexiones .
  • En la página Configuración de superficie para servicios y conexiones , expanda el Motor de base de datos , haga clic en Conexiones remotas , haga clic en conexiones remotas y locales , haga clic en el protocolo adecuado para habilitar para su entorno y a continuación, haga clic en Aplicar .

Personalmente y aunque algunos me tachen de cutre, yo habilito todos los protocolos para evitar futuros problemas ya que cuando en una empresa hay un administrador, no hay problema, para eso le pagan, pero cuando eres una empresa que le lleva el mantenimiento, lo que necesitas es minimizar los riesgos.

Bueno, ahora solo queda habilitar tambien el servicio SqlServer Browser, para lo que deberemos editar sus propiedades y poner que el inicio es automatico.

Como último paso, reiniciamos el servicio de sqlserver y el del sqlserver browser… ya debemos poder usar nuestro sqlserver desde la red sin problemas.

posted in Redes, Sql Server, windows | 0 Comments

  • Publicidad

  • Calendar

  • September 2010
    M T W T F S S
    « Aug    
     12345
    6789101112
    13141516171819
    20212223242526
    27282930