Monday, July 31, 2006

Pensieri #2

Chi cerca trova
Per realizzare un programma per gestire una segreteria telefonica per registrare alcuni dati su archivio ho individuato i due punti focali del problema:
che modem ci vuole?
che software è necessario per l'interfacciamento al modem?

Dopo una mezz'ora di ricerche su Internet avevo la risposta ad entrambe le domande:
- il modem deve essere un modello con l'estensione Voice
- per il software Windows mette a disposizione le TAPI (Telephone API)

Bene, mi sono detto, fammi allora cercare se tra queste TAPI e Delphi esiste una intersezione. La risposta? Async Professional della TURBOPOWER le mitiche librerie per Delphi diventate di libero dominio un paio di anni fa. E allora cosa scopro? che le avevo già scaricate ed installate su Delphi 5.
Dopo un po' di verifiche sono pronto a realizzare il programma che poi altro non è che un input in tabella pilotato via telefono-
Tempo di ricerca ed individuazione della soluzione: un'ora.
Delphi grazie ancora una volta!

Le procedure e le persone
Le persone sono come computer?
Possono cioè eseguire delle attività ripetitive seguendo un elenco di procedure?
Fino a che livello aziendale si può parlare di procedure e da che punto si deve parlare di analisi della realtà e scrittura di nuove procedure? Deve esistere una procedura per le procedure?
Secondo il mio parere le procedure sono valide sino al livello impiegatizio. Cioè se una persona lavora come operaio in un fast food a preparare panini ha bisogno di sapere per filo e per segno tutte le varie tempistiche per evitare di dare al panino un sapore diverso da quello che deve avere. A livello impiegatizio, invece, è la persona che deve preoccuparsi di organizzare come meglio riesce il proprio lavoro. Magari userà dei registri cartacei oppure un programma che ha inventato suo cugino, comunque tutto ciò che farà sul lavoro sarà un qualcosa visto dal suo punto di vista. Ed allora non si può prescindere dalle persone. Chi organizzerà meglio il suo lavoro riuscirà a fare di più per l'azienda. La sconfitta delle procedure? No di certo perchè per certe attività esiste la legge e comunque non si può prescindere dal seguire certi schemi. La sconfitta della azienda completamente proceduralizzata però si!

Tuesday, July 25, 2006

Pensieri #1

  • Continua l'avventura di DevCo per Delphi: positivo l'incremento di documentazione anche su ECO.
  • L'account di posta usato al lavoro e la privacy: per i messaggi "top secret" meglio usare un account esterno
  • Gli sviluppatori "interni": leggendo un capitolo dal libro Joel on Sofware in cui si citano gli sviluppatori interni (ad una azienda) come qualcosa di inspiegabile, ho riflettuto sul fatto che esiste una industria del Software in cui gli sviluppatori PRODUCONO ciò che la società vende. Chi lavora come sviluppatore "interno" ad un'azienda (che ha come business non lo sviluppo software ma la produzione di beni di consumo), è uno strumento per il business e quindi deve sviluppare con questa logica in testa: i programmi non usciranno "pacchettizzati" e non saranno mai "completati" per la distribuzione, non esisteranno "compilazioni" notturne dell'ultima release o Tester interni. I programmi sviluppati internamente sono opere "incomplete" e, come le sculture di Michelangelo che ogni osservatore conclude con la propria immaginazione, possono essere adeguati o buttati al cambio di dirigenza. Comunque ciò che cambia di fondamentale è l'uso dell'ambiente Informatico: chi lavora in una azienda di Software usa gli strumenti di sviluppo come macchine che producono e quindi sono un patrimonio per l'azienda; chi invece lavora da "interno", ha tutto l'interesse ad usare l'ambiente che ritiene più produttivo e più malleabile dal punto di vista delle mutabili esigenze.

Friday, June 16, 2006

Selezionare con il mouse: DrawFocusRect

Ecco come disegnare un rettangolo che permette di selezionare un area della form:

Servono 2 variabili boolean per indicare l'avvio della operazione di disegno ed il fatto che si sia effettivamente disegnato un rettangolo (per evitare effetti indesidetati).
Gli eventi da gestire sono il mousedown (che consente di attivare la procedura e per indicare il punto di inizio del disegno), il mousemouve (che cancella il precedente rettangolo e disegna il nuovo) ed il mouseup che disattiva l'operazione.

Ecco il codice inserito in Delphi:

type
TForm2 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private { Private declarations }
disegnato:boolean;
start:boolean;
rS:TRect;
xS,yS:Integer;

public { Public declarations }
end;

var Form2: TForm2;

implementation
{$R *.dfm}
procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin
start:=true;
xS:=X;
yS:=Y;
rS.Left:=X;
rS.Top:=Y;
rS.Right:=X;
rS.Bottom:=Y;
disegnato:=false;
end;

procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var tmp:integer;
begin
caption:=Format('(%d,%d) x (%d,%d)',[xS,yS,X,Y]);
if start then
begin
//cancello il vecchio
if disegnato then canvas.DrawFocusRect(rS);

// verifico se sono a sinistra o a destra del punto iniziale xS
if xS>X then
begin
rS.Right:=xS;
rs.Left:=X
End
else
begin
rS.Right:=X;
rS.Left:=xS;
end;

//verifico se sono sopra o sotto del punto iniziale yS

if yS>Y then
begin
rS.Bottom:=yS;
rS.Top:=Y
end
else
begin
rS.Bottom:=Y;
rS.Top:=yS;
end;

//disegno il rettangolo
canvas.DrawFocusRect(rS);
disegnato:=true;
end; //if Start
end;

procedure TForm2.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
start:=false;
//forza il repaint e la cancellazione dell'ultimo rettangolo
invalidate;
end;

La cosa più complicata è la gestione dei vertici del rettangolo: un rettangolo con un vertice finale sopra o a sinistra di quello iniziale non viene disegnato. Per questo bisogna invertire i vertici.

Thursday, June 15, 2006

Agire o reagire

Fare Help Desk = Reagire
Fare il Project Manager = Agire

La reazione non consente programmazione: si è chiamati per un problema e si va.

L'azione richiede analisi e studio: non esiste un problema impellente, esiste un progetto.

Non esiste un interruttore per passare da uno stato all'altro. Si decide di programmare (anche nel senso di sviluppare) ed ecco arriva una interruzione, si reagisce, e si cerca di ritornare a programmare.
Siamo, sono, in questo periodo come un processore. Lavoro per interrupt.
Il problema è che nel caso della reazione non si sa quando si potrà riprendere il lavoro lasciato.

E' chiaro: dipende da quanto tempo uno ha, qual'è la priorità del problema da risolvere, quanto è importante il progetto su cui si lavora.
Il dato di fatto però è uno solo: gli utenti se hanno un problema VOGLIONO risolverlo.

Esistono le sette opere di misericordia spirituale delle chiesa cattolica, almeno quattro di queste si sposano perfettamente con il lavoro di chi deve, un po' reagire, un po' agire, un po' reagire, un po' agire...

Saturday, June 03, 2006

Lo sviluppo in DELPHI

Ebbene si.
Nel mondo delle aziende che producono Software sta accadendo una cosa MOLTO interessante (per DELPHI).
Sappiamo tutti che la politica di Microsoft per gli ambienti di sviluppo è .NET oriented. Sappiamo anche che pochi prodotti interni a Microsoft sono stati sviluppati con .NET. Evidentemente deve essere accaduto che la scelta di lasciare Win32 un po' a se stesso ha lasciato spazio all'UNICO ambiente che offre le stesse capacità e produttività di sviluppo sia per .NET che per Win32: Delphi.
Esempi come Skype o prodotti ancora in fase Beta come Yahoo Go TV! sono sviluppati in Delphi.
Esistono MOLTI PC con ancora Windows 98 ed Hw poco performante. La scelta di .NET richiede un sacco di condizioni: installazione del Framework, una certa pesantezza nell'esecuzione, possibili incompatibilità con il SO installato etc.
Allora le aziende cominciano a capire la vera potenza di Delphi: elevata produttività, assoluta mancanza di concorrenti per lo sviluppo in Win32 (mantenendo una produttività pari a quella di .NET).
Di fronte ad un mondo che si muove verso nuovi standard (che non si sa se produrranno frutti) una certezza rimane: lo sviluppo per Win32 che funziona sarà possibile in DELPHI!

Thursday, April 27, 2006

Inviare una MAIL POSTICIPATA

La procedura seguente consente di inviare una mail ad un certo indirizzo in maniera POSTICIPATA alla data ed ora indicate in DeferrededDeliveryTime.

L'uso della Procedura da VBA richiede l'installazione del Software REDEMPTION per l'invio delle mail bypassando il controllo AntiSpam di Outlook.

Private Sub InviaMailRitardata()
Dim objItem As Outlook.MailItem
Dim SafeItem As SafeMailItem

Set objItem = Application.CreateItem(olMailItem)

objItem.DeferredDeliveryTime = Now + TimeSerial(0, 5, 0) ' Posticipa l'invio tra 5 minuti

'Mail per il risveglio
objItem.To = "MyMAIL@MYDOMAIN.COM" 'Indirizzo mail cui inviare

Set SafeItem = New SafeMailItem
SafeItem.Item = objItem
SafeItem.Subject = "Soggetto della mail"

SafeItem.Recipients.ResolveAll
SafeItem.Send

Set objItem = Nothing
Set SafeItem = Nothing

End Sub


Wednesday, April 19, 2006

Delphi 2006 e .NET 2.0: errore in PCNTRLSRV.CPP

Dopo l'installazione di NET 2.0 si verifica un errore in Delphi 2006 nel caso di progetti WinForm.
L'errore indicato fa riferimento al modulo PCNTRLSRV.CPP.

Per risolvere il problema è necessario operare a livello di registro di sistema come riportato nel link sottostante.

Atozed Software - Delphi 2006 and .NET 2.0 debugger issues

Tuesday, April 04, 2006

Agile o solo Intelligente?

Agile
Che dire. Sono sempre poco attratto dallo schematismo portato all'eccesso, dalla documentazione, dai diagrammi e dai flussi.
La proposta del movimento Agile della comunicazione ed il raffinamento successivo è una formalizzazione del mio modo di lavorare.
Non dico questo per andare nella ottica della confusione e nel fare ciò che mi piace di più (programmare), ma perchè penso che ciascuno di noi abbia un modo di lavorare: chi riesce a portare avanti le cose e raggiunge il risultato NON ha bisogno di avere tanti formalismi. Evidentemente non è semplice coordinare grossi gruppi di lavoro senza avere una precisa metodologia. Dal punto di vista dell'industria del SW è quindi fondamentale rendere i programmatori il più possibile pilotati dalle esigenze dell'azienda.

Thursday, March 16, 2006

Report con Visual Studio 2005 Express Edition

Sia utilizzando C# Express che VB Express 2005, è possibile creare reports sfruttando il designer contenuto in Visual Web Developer 2005 Express Edition.
Per fare ciò è necessario seguire le istruzioni riportate in questo Blog.
C# Express 2005
and Report - MSDN Forums

In pratica si crea una pagina WEB in VWD, si aggiunge un controllo Report Viewer, si seleziona lo Smart tag e si crea un nuovo report che punti alla stessa sorgente dati che utilizzeremo nel progetto WinForm (C# o VB).
A questo punto, disegnato il report, si salva nella cartella del progetto WinForm e si aggiunge al progetto. Si inserisce un controllo Report Viewer alla form e si seleziona il report precedentemente aggiunto, indicando la sorgente dati con l'opzione dello Smart Tag.
Il gioco è fatto ed il problema è risolto.

ReportViewer control in Visual Studio 2005

Il reporting è una fase importante in ogni applicazione che gestisce dati.
Il nuovo Visual Studio 2005 include un sistema di reporting che estende all'uso locale il meccanismo precedentemente sviluppato come estensione per l'ambiente SQL 2000 (Reporting Services). Questo sito contiene una serie di utili consigli ed esempi per utilizzare al meglio il sistema di reporting incluso in VS 2005.
ReportViewer control in Visual Studio 2005

Si deve notare che le versioni Express di Visual Studio NON includono gli strumenti per la creazione dei Reports fatta eccezione per la Web Developer Edition che invece include la parte di design.

Monday, March 13, 2006

SQL EXPRESS Edition

Come questo post post sembra dire, l'uso di SQL Express non è consentito in Windows 98. In effetti i Sistemi Operativi supportati da sono: Windows 2000 Service Pack 4; Windows Server 2003 Service Pack 1; Windows XP Service Pack 2 come riportato qui.
Come sempre è necessario conoscere tutti gli aspetti per la realizzazione di un nuovo progetto, non concentrandosi solo sull'analisi. E così un bel programma basato su SQL può non essere accettato da una realtà poichè hanno dei sistemi datati (d'altro canto non tutti sono fanatici del nuovo a tutti i costi).

Friday, March 10, 2006

Tutto Open Source?

Ho letto con interesse questo blog Sciabarra.com: Il_vero_informatico scritto bene.

Mi sono trovato poi a fare alcune considerazioni:
- l'open source è un bene che esista
- per offrire delle garanzie un qualunque progetto open source deve approdare a qualche forma di finanziamento (altrimenti rischia di non essere aggiornato adeguatamente)
- l'open source è importante ma più importante è il rispetto degli standard
- la produttività insegna che le soluzioni "mono" fornitore e pacchettizzate hanno, per certi progetti, un costo di sviluppo più basso
- molte volte non è il tecnico che propone lo strumento ma il cliente che chiede di usarne uno specifico (in base alle installazioni che ha)

L'informatica è bella anche perchè è varia ed ognuno trova il proprio "karma" negli ambienti a lui più consoni.

Tuesday, February 21, 2006

untitled

Un altro grande esempio di inventiva.
untitled
Può essere una cosa inutile ma risulta molto interessante.

Saturday, February 18, 2006

Verifica la popolarità di un linguaggio

TPCI - TIOBE Programming Community Index

DELPHI: indice delle lezioni

Per la diffusione di questo ambiente e per una infarinatura iniziale questo corso On-Line non è male:
DELPHI: indice delle lezioni

Perchè Delphi?

Dopo le ultime notizie da Borland relative alla dismissione degli ambienti di sviluppo, c'è stata come una sorta di riflessione da parte degli sviluppatori Delphi che sembrano si siano resi conto (forse per la prima volta) di dover PROMUOVERE maggiormente il loro uso di Delphi.
Perchè si parla solo di Java, di C# e di VB? Perchè c'è un unico libro in italiano su Delphi? Verrebbe da pensare che siano pochi coloro che usano Delphi. Invece non è così! Le società che ho avuto modo si contattare con il mio lavoro, fanno uso di Delphi. Molti ragazzi usano Delphi.
Tutto questo lavorare non pubblicizzato è stato forse il motivo per cui Borland ha dovuto dismettere questo ambiente. E' vero: molto deve essere fatto all'origine (cioè dalla stessa Borland) ma molto possiamo fare anche noi.

Ed allora poniamoci una semplice domanda: perchè uno sviluppatore in erba dovrebbe considerare Delphi? Perchè non dovrebbe usare Visual Studio o Java?
Esistono diverse risposte:
1. Attualmente ci sono molti PC con sistemi operativi "datati" su cui è impensabile installare un Framework.
2. Se sviluppi con Delphi puoi convertire le tue applicazioni Win32 in applicazioni .NET (grazie alla VCL .NET)
3. Se vuoi puoi comunque sviluppare in .NET (per ora 1.1)

Quindi se sei uno sviluppatore che non vuole essere in balia delle scelte di un'unica compagnia, devi utilizzare DELPHI. Se sei uno sviluppatore che mira alla produttività devi sviluppare in DELPHI. Se sei uno sviluppatore che desidera preservare l'investimento, devi sviluppare in DELPHI.

Spesso mi vengono richiesti dei programmi. La mia prima domanda è: che sistema operativo hai? La risposta generalmente non è Windows XP SP2 ma Windows 98. A questo punto NON esistono alternative: devo sviluppare in DELPHI.

In altre parole: è bello avere gli ambienti Express di Microsoft ma è anche vero che per distribuire l'applicazione è necessario fornire anche lo strato .NET. E' bellissimo avere a disposizione Eclipse o Netbeans, ma è anche vero che Java non è un fulmine sotto Windows.