Cercar en aquest blog

28/1/11

Why asynchronous?

"The problem is that remote operations are different from local ones."

Els Documents, on els guardem?

Bé, consultant alguns blocs del meu interés he trobat un POST molt interessant que parla d'una Base de dades orientada a l'enmagatzament de documents. Degut als patiments de com guardar documents, com indexar-los, com poder fer recerques en els seus continguts, com mantenir versions, com eliminar fitxers de logs caducats, etc, l'he trobat molt interessant.

Arquitectura Orientada a Servir

Si, l' arquitectura orientada a serveis està pensada per oferir funcionalitats de negoci (entenem negoci com a procés informatitzat), una arquitectura orientada a servir és el model triat per aquesta fundació Xprize. Impulsar les iniciatives per poder posar-les en un futur a disposició de la Societat, i molt important, valorant el coneixement dels seus col.laboradors.

26/1/11

L’ anonimat a Internet, el gran problema

- Avui arribaré a casa, i em descarregaré l’últim disc de “Pajarito en el Facebook”. Utilitzaré un software
P2P i apa, disc nou. També aprofitaré per baixar-me alguna pel·lícula i alguna sèrie.

-Jo ahir em vaig baixar, hackers 3, és molt bona, si no la tens, et faig una copia.
Això podria ser una conversa molt comuna i real entre dues persones del tot legals, que només per gaudir d’una connexió a Internet “anònima” i un accés a informació il•limitat, aprofiten el temps per aconseguir allò que els hi agrada i tenen a l’abast. Saben que això és il•legal? Doncs bé, no ho tenen clar, el que si saben es que existeix un debat i que aquest no acaba de definir-se o resoldre, i que de moment, mentre hi hagi discurs, ens podem aprofitar de les avantatges de ser anònim a Internet.

Realment som anònims a Internet? Bé, actualment per connectar-nos a Internet, només ens cal tenir un ISP (Internet Service Provider) a la nostre disposició, pagant clar, i bastant. Quan ens connectem, aquest sap des d’ on ens connectem, o sigui, des de casa, des de la feina o des del mòbil, però no sap qui som. Coneixen el terminal, però no a la persona, i per tant els hi és molt difícil validar qui ha fet que, ja que no tenen mitjans que demostrin qui ha fet que. I per què? Doncs encara que accedim a webs que demanin autentificació, usuari i contrasenya, adreces de correu, etc, les dades que hi ha al darrere les pot haver omplert qualsevol “anònim”. Em puc moure per Internet amb el nom d’un altre? La resposta és evident, si, només cal entrar a qualsevol xarxa social i comprovar-ho.

L’anonimat, també, ens permet publicar qualsevol cosa, i això porta una conseqüència molt directe, que és la mala informació. Només cal entrar en un cercador, i cercar qualsevol cosa, i veure que poc és aprofitable.

Bé, podríem estar dies parlant de tot el que podem fer anònimament a la xarxa. Amb això no vull dir que tot sigui dolent, jo no puc viure sense Internet, però que no m’agrada veure tanta degradació de la informació, tants anuncis, lluitar amb els pop-ups, amb els virus, amb spyware, enllaços trencats, poca protecció d’accés infantil, etc.

I com ho podríem solucionar tot això? Doncs fent que a Internet tota comunicació, càrrega o descàrrega, estigues signada per l’autor d ’aquesta. I es pot fer això? Jo crec que si. Només cal voler-ho fer. Val diners? Doncs evidentment, aquí no es regala res. Primer de tot, tothom hauria de disposar d’una identitat digital, emesa per una entitat reconeguda i de confiança (el que anomenem, certificat digital, un exemple, e-dni). La connexió a Internet a través del proveïdor, hauria requerir d’una identitat digital per establir-se, si no, aquesta no ens deixaria navegar. D’aquesta manera ja tenim identificat des d’on i qui està fent una descàrrega o càrrega, ja que aquestes anirien signades pel seu autor, ah!! molt important, també podem saber-ne l’edat. Això, però, suposa que sempre hem de tenir a l’abast aquest certificat, o dit d’una altre manera, la nostre identitat digital, sempre l’hauríem de dur amb nosaltres. Per solucionar això, es podria muntar una xarxa de Gestors d’Identitats federats entre ells, on podríem, donar-nos d’alta un primer cop, utilitzant el nostre certificat, i en un futur, accedir a ell, per obtenir la nostre identitat des de qualsevol lloc, mitjançant un mètode més habitual, usuari, contrasenya i alguna cosa més. Això també reduiria, tots els registres a diferents webs que tenim, un registre pel Facebook, un altre pel Twitter, un altre pel Gmail, un altre, i un altre, i un altre....quin merder de claus i contrasenyes. OpenID és un intent de fer això, però els seus usuaris no deixen de ser anònims. Amb un sistema com aquest, també quedaria resolt l’accés a la nostre Historia Clínica, a entitats Sanitàries per demanar hores de visita, a entitats de l’administració Pública, etc.

Els DNS identifiquen o resolen ubicacions de servidors web, els gestors d’identitats identifiques persones. Amb les dues coses a Internet, assegurem qui accedeix, i a on accedeix, com hi accedeix i a que accedeix.

La validesa de la Identitat Digital, és evident, només cal veure com és un dels sistemes utilitzats per validar usuaris en moltes entitats financeres i en el propi ministeri d’hisenda. I la resta, per què no ho fan. No interessa, poder, no dona diners, o poder si, si calculem el que gastem en mirar “qui fa.... i el que fa, a internet”.



24/1/11

Distribució del negoci (PART V)

En aquest post, intentaré explicar com accedir al negoci distribuit (a una part d'ell), des d'una aplicació client desenvolupada en Winforms. Per fer-ho utilitzarem el nostre proxy transparent.
Abans de res hem de referenciar dues llibreries, la del proxy transparent "TransparentProxy.dll" i la de la interfície del negoci distribuit amb els missatges que utilitzem per intercanviar informació amb els clients, "ServeisDistribuits.Ingresos.dll".

 Primerament el que farem és crear una interfície amb les operacions que s'executaràn des de lapart client.

using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WinIngressos
{
    interface IForm1Negoci
    {
        IList<serveisdistribuits.ingresos.informaciollits>
                                             Carregar_Llits();
        IList<serveisdistribuits.ingresos.informaciometges>
                                            Carregar_Metges();
        IList<serveisdistribuits.ingresos.informaciopacient>
  Cercar_Pacient(ServeisDistribuits.Ingresos.CriteriCercarPacient criteri);

        ServeisDistribuits.Ingresos.ResultatOperacio
    Ingressar_Pacient(ServeisDistribuits.Ingresos.DadesIngres dades);


    }
}





Tot seguit fem un dissany de la pantalla, amb els components que lligarem amb les funcions o operacions.




Si ens hi fixem, formulari consta de les següents parts:
  1. Una Grid o mostrarem els resultats de la cerca de pacients.
  2. Un TextBox on entraren el criteri de recerca de pacients utilitzant un senzill patró d'entrada, Cognom1/Cognom2/Nom.
  3. Un ComboBox amb el llistat de metges.
  4. Un ComboBox amb el llistat d'habitacions.
  5. Un Button per enviar les dades de l'ingrés, Pacient-Metge-Llit.
  6. I un TextArea on mostrar el resultat de la transacció. Tota operació del negoci que persisteixi dades, ha de ser Transaccional.
Tot seguit he de conectar les operacions del client amb les operacions del negoci (servei distribuit). Per fer-ho utilitzarem el proxy transparent, i implementarem les operacions del client.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace WinIngressos
{
    public class Form1ServeiNegoci:IForm1Negoci
    {

        

        public IList<ServeisDistribuits.Ingresos.InformacioLlits> Carregar_Llits()
        {
            WSHttpBinding bind = CrearVincul();

            TransparentProxy.IProxy<ServeisDistribuits.Ingresos.IModulPrincipal> proxy = new TransparentProxy.Proxy<ServeisDistribuits.Ingresos.IModulPrincipal>(bind, "http://localhost:53538/WCFGAPService/Service.svc", null, null);
            IList<ServeisDistribuits.Ingresos.InformacioLlits> res=proxy.Client.LlistarLlits(ServeisDistribuits.Ingresos.LlitEstats.Buits);
            proxy.Close();
            return res;
        }

        public IList<ServeisDistribuits.Ingresos.InformacioMetges> Carregar_Metges()
        {
            WSHttpBinding bind = CrearVincul();

            TransparentProxy.IProxy<ServeisDistribuits.Ingresos.IModulPrincipal> proxy = new TransparentProxy.Proxy<ServeisDistribuits.Ingresos.IModulPrincipal>(bind, "http://localhost:53538/WCFGAPService/Service.svc", null, null);
            IList<ServeisDistribuits.Ingresos.InformacioMetges> res = proxy.Client.LListarMetges();
            proxy.Close();
            return res;
        }

        public IList<ServeisDistribuits.Ingresos.InformacioPacient> Cercar_Pacient(ServeisDistribuits.Ingresos.CriteriCercarPacient criteri)
        {
            WSHttpBinding bind = CrearVincul();

            TransparentProxy.IProxy<ServeisDistribuits.Ingresos.IModulPrincipal> proxy = new TransparentProxy.Proxy<ServeisDistribuits.Ingresos.IModulPrincipal>(bind, "http://localhost:53538/WCFGAPService/Service.svc", null, null);

            IList<ServeisDistribuits.Ingresos.InformacioPacient> res = proxy.Client.CercarPacient(criteri);
            proxy.Close();
            return res;
        }

        public ServeisDistribuits.Ingresos.ResultatOperacio Ingressar_Pacient(ServeisDistribuits.Ingresos.DadesIngres dades)
        {
            WSHttpBinding bind = CrearVincul();

            TransparentProxy.IProxy<ServeisDistribuits.Ingresos.IModulPrincipal> proxy = new TransparentProxy.Proxy<ServeisDistribuits.Ingresos.IModulPrincipal>(bind, "http://localhost:53538/WCFGAPService/Service.svc", null, null);

            ServeisDistribuits.Ingresos.ResultatOperacio res = proxy.Client.Ingresar(dades);
            proxy.Close();
            return res;
        }


        private WSHttpBinding CrearVincul()
        {
            WSHttpBinding bind=new WSHttpBinding();
            bind.Security.Mode = SecurityMode.Message;
            bind.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
            bind.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
            bind.Security.Message.NegotiateServiceCredential = true;
            return bind;
        }
    }
}


Una de tantes maneres de fer, però que crec, que es bastant ordenada, separada per capes, seguint els principis de la POO.

I finalmet només ens falta lligar la interfície amb el negoci. Posaré un exemple, laresta es bastant evident.

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinIngressos
{
    public partial class Form1 : Form
    {
        private IForm1Negoci negoci = null;
        
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            negoci = new Form1ServeiNegoci();

            // Carreguem combos

            this.comboBox2.DataSource = negoci.Carregar_Llits();
 

            ................

I això es tot, la resta, imaginació.

11/1/11

Arduino The Documentary (2010) English HD


Arduino The Documentary (2010) English HD from gnd on Vimeo.


Ja sé que no té res a veure amb SOA però realment crec que és increible.

5/1/11

Qualitats del Know-How

El terme "Know-How" està àmpliament estudiat en el llibre "The 8 Skills That Separate People Who Perform from Those Who Your say" (en català: Les 8 habilitats que separen la gent que rendeixen i les que no) del Dr Ram Charan, un dels consultors més reconegut a nivell mundial. Abans de dedicar-se a la consultoria, va ser professor de Màrqueting a Harvard Business School, Kellogg School of Management i Boston University. Segons aquest llibre les vuit habilitats principals del "Know-How" són les següents:


  • Posicionar i Re-posicionar. Trobar la idea central del negoci que permeti satisfer les demandes dels compradors, i fer diners.
  • Identificar amb Precisió el Canvi Extern. Detectar les amenaces de canvi en el comportament d'indústries i compradors, per mantenir el negoci a l'ofensiva.
  • Liderar el Sistema Social. Agrupar les persones adequades amb les conductes correctes i la informació correcta per prendre decisions millors, més ràpidament i aconseguir resultats.
  • Examinar a la Gent. Calibrar a les persones basant-se en les seves accions, decisions i conductes, alineats a les demandes de treball.
  • Crear un Equip. Aconseguir líders  competents, emocionalment estables, realistes, madurs, calmats i lleials, que treballin junts expeditivament.
  • Fixar Objectius. Determinar resultats desitjats que estiguin balancejats entre els que el negoci pot arribar a ser, amb el que és realista aconseguir.
  • Establir Prioritats amb Precisió Làser. Definir el camí i alinear recursos, accions i energies per assolir els objectius.

  • Confrontar les Forces Socials. Anticipar-se i respondre a les pressions socials que no es controlen, però que poden afectar el seu negoci.