Newsgroup: it.comp.lang.delphi
Titolo: [OT] Scrupoli....

Ciao.
Tempo fa chiesi consiglio per come strutturare un corso di Delphi.
Bene, diciamo che domani dovrebbe concludersi con la decima lezione (forse
ci sarà bisogno di una undicesima e comunque alcuni argomenti che non sono
stati toccati saranno presi in oggetto durante lo sviluppo di un progetto in
cui li guiderò).
A grandi linee il corso si è così svolto :
1 -            - Uno sguardo a Delphi [ObjectTreeView, CodeExplorer,
EditorOptions, GExperts etc.]
2 -            - Inizio OOP - Teoria dell'incapsulazione
3 - 15/12/2004 - Gestione eccezioni - Inizio CallSorter - Classe Wrapper per
form Password Dialog -
4 - 17/12/2004 - TWinControl (Incapsulazione oggetti Win3.1/32- Owner e
Parent -
        - Creazione dinamica oggetti -> Esempio Shapes
5 - 13/01/2005 - Incapsulazione e Form (Variazioni di comportamento a
seconda di dove si dichiarano le variabili)
        - Costruttori e Distruttori
        - Reference Counting
        - Riassunto gestione memoria di Delphi (come si disalloca la
memoria)
        - Esercizio : Lista di Controlli
6 - 14/01/2005 - Form Modali e non (Veloce) + Form Stay on Top
        - Bordi e Icone (Velocissimo)
        - Riuso delle Form (cenni ereditarietà)
        - ESERCIZIO : Salvataggio stato Form
7 - 19/01/2005 - Utilizzo diretto di TForm
        - KeyPreview
        - Gestione dei Messaggi (Messaging di Windows e TMessage in Delphi)
        - Effetti speciali (Alpha Blend etc)
        - Posizione e stato della form
        - Dimensioni e Scala (ScrollBars, PixelPerInch, ScaleBy, etc.)
8 - 26/01/2005 - Gestione dei file in Delphi
        - Gli stream (+ lo streaming dei componenti)
9 - 31/01/2005 - I Thread
        - La Clipboard
10 - Le stampe in Delphi
     - Cenni sulla programmazione Database con Delphi
In media le lezioni sono durate almeno 1 ora e 30.
Per ogni lezione io stimerei una preparazione di ca 3 ore.
Io devo fare il prezzo. Il cliente è una ditta per cui ho lavorato per un
anno e mezzo e in cui ho imparato i rudimenti di Delphi (a volte .. le
combinazioni..) e con cui ho continuato a collaborare fino ad oggi. I
partecipanti alle lezioni erano 3.
Diciamo che non voglio prendergli i soldi che si chiederebbero normalmente
ma starei un po' sotto....
Voi che cifra chiedereste?
Se fossero altri saprei quanto chiedere, ma in questo caso c'è anche un
legame di amicizia.
Giusto per farmi un'idea.
Grazie a tutti e scusate l'OT.
David

 Io devo fare il prezzo.
Ho insegnato in molti corsi, soprattutto quelli che organizzavano le 
provincie, finanziati dalla cee (non ho mai insegnato delphi). Ho sempre 
chiesto come minimo minimo 50 Euro l'ora (dipende dall'orario, dagli 
argomenti e dal luogo in cui si svolge). Il tuo caso è un po' 
particolare....
Generalmente si cerca di fare lezioni con durata di 3/4 (ovviamente non 
chiamiamo corsi quelli che si svolgono su 8 ore in 1 gg). Questo per non 
spezzarti la giornata. Nel tuo caso fai 1,30 ore che ti spezza la 
giornata (mattinata o pemeriggio che sia), oltretutto in un ora e mezzo 
riesci a fare tutto solo se corri :-) tralasciando magari la parte 
pratica che richiede generalmente tempo. Indubbiamente per così poche 
ore a lezione devi chiedere molto di più perchè comunque non riesci ad 
"ammortizzare" quella ora e mezzo nel tempo che perdi tra l'andare in 
sede corsi e ritornare a casa (o in ufficio).
Quindi, nel tuo caso, non scenderei sotto i 70 euro/ora.
Ciao
Gianni

 9 - 31/01/2005 - I Thread
Giusto per curiosità, i punti principali di questa lezione quali sono
stati ?
guastatore

Questi sono gli appunti che ho utilizzato come promemoria durante la lezione 
:
ARGOMENTO 1 : Introduzione ai Threads (Esempio)
-         Cosa sono (S.O. Multi Tasking <--> Applicazione Multi Threading)
-         Delphi, il "VCL Thread" (gestione di eventi di form e controlli) + 
Componenti WinSockect + Sharing CPU su sistemi mono processore
-         API Windows (CreateThread) <--> Delphi classe Abstract TThread (in 
part. il metodo Execute che sarà il codice da eseguire "contemporaneamente")
ARGOMENTO 2 : Da facile a meno Facile - SINCRONIZZAZIONE
            - Nessuna garanzia dell'ordine di esecuzione delle istruzioni. 
APPENDIX #1
            - Il metodo Synchronize (esempio progressbar) APPENDIX #2 (Qui 
ho fatto dei casi prova)
- Synchronize Ok per controllare il Principale dal secondario ma viceversa ?
  Suspend e Result (NOTA! Le suspend si sommano!!!!)
- Suspend e Resume : LIMITAZIONI !!! APPENDIX #3 (Qui ho fatto dei casi 
prova descrivendo una semplice applicazione)
ARGOMENTO 3 : Attese pulite e non (Esempio)
            - Le finestre di Windows usano la GetMessage che implemente una 
attesa pulita
ARGOMENTO 4 : Oggetti di Sincronizzazione
            - Eventi, Semafori, Mutex, CriticalSection e Timer
            - TCriticalSection : La classe rappresenta una parte di codice 
che va eseguita
  senza interruzioni. Due metodi Acquire e Release ( o Enter e Leave). Si 
crea
 CON VISIBILITA' GLOBALE.
- TMultiReadExclusiveWriteSynchronizer : come TCriticalSection ma più thread
  in lettura e uno solo in scrittura (BeginRead, BeginWrite, EndRead, 
EndWrite)
- TEvent --> TEvent.WaitFor(timeout) : molto utile quando si deve attendere 
che
  accada qualcosa (anche di questi ne va creato uno per evento.....etc etc)
- Semafori : No Classi in Delphi , come TCriticalSection con accesso N alla 
volta
  invece di 1
- Mutex, come TCriticalSection... ma non funzionano nel contesto di un 
singolo
  processo, ma anche tra processi diversi
Giusto per darti un'idea.....
Ho rinfrescato le mie conoscenze con la lettura del famoso articolo di MSX e 
del capitolo dedicato ai Thread del libro di Teixeira e Pacheco su D4.
Ciao ciao,
David 

 Pacheco su D4.
Grazie David. Mi sembra un buon programma.
Se posso permettermi, ho solo il dubbio che si riesca a fare una
lezione di un'ora e mezza per i threads che sono un argomento un pò
ostico.
Come base inserirei anche i problemi di race condition che possono
verificarsi se non si sincronizza l'accesso a dati condivisi tra più
thread e comunque può esserti utile anche questo link per avere degli
altri spunti:
http://www.pergolesi.demon.co.uk/prog/threads/ToC.html
ciao 
Antonio

 
http://www.pergolesi.demon.co.uk/prog/threads/ToC.html
Grazie! Ne terrň certamente conto per altre occasioni, nel frattempo me lo 
studio io
Ciao,
David 

approfondire le loro conoscenze, ma per dei novizi;
Giusta precisazione, David.
Questo topic mi ha di fatto sollevato una domanda assai curiosa: quanti di noi
ICLDers fanno uso dei threads nella programmazione delphi?
Io credo che siano molto pochi... ma per quale motivo?
Io ad esempio li ho usati solo in un caso, aiutato da un amico tra l'altro,
per accedere contemporaneamente ad un db access.
Questo perche' i threads saranno semplici ma in realta' io li trovo
complicati, oltretutto mi ha sempre scoraggiato il fatto che siano assi
complicati da debuggare... vuoi per problemi di sincronizzazione con l'ide di
delphi, sia per il fatto che un errore in un thread si tramuta in AV e quindi
e' impossibile capire da dove sia partita l'eccezione.
Almeno, questi sono i motivi per i quali io non uso mai i threads se non
costretto (o incoraggiato ;-) ).
Sarei curiosio di contare quanti sono quelli che li usano qui dentro :-)
Ciao
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 non costretto (o incoraggiato ;-) ).
E' vero, dietro la programmazione dei thread spesso si nascondono
insidie anche se alcune classi della vcl mettono a disposizione
semplici metodi per la sincronizzazione (vedi Synchronize).
Il problema vero, imho, è nella estrema volatilità dei thread e quindi
la loro difficoltà di debug e anche nella intrinseca caratteristica di
passare da un mondo sincrono ad uno asincrono.
guastatore

Ciao!
Io qualche volta li uso.
Ad esempio avevo costruito un server HTTP con Delphi, e il cliente da cui 
dovevo ricevere dei post in XML che dovevano essere salvati in dei file, me 
ne mandava moltissimi tutti insieme, nell'ordine delle centinaia al secondo.
Questo generava grossi problemi perchè l'elaborazione e il salvataggio di un 
singolo post comportava un tempo molto maggiore a quello che intercorreva 
tra un post e il successivo. Per cui per ogni post ricevuto creavo un thread 
al quale delegavo tutte le operazioni conseguenti.
Comunque li ho sempre adoperati senza particolari tecniche quali i 
semafori.... o i mutex.... .Ho usato la Synchronize, e al massimo le 
criticalsection e in  qualche caso ho giocato un po' con le priorità ma 
niente di più.
Ciao,
David 

 costretto (o incoraggiato ;-) ).
Come hai giustamente precisato, le problematiche da gestire sono forse 
tali da rendere i thread un meccanismo da evitare, a meno che non se ne 
possa fare a meno; questo probabilmente riduce la frequenza di utilizzo, 
quindi ogni volta che ci si trova ad aver a che fare con i thread è 
necessario "ripassare" le proprie risorse formative per essere certi di 
fare le cose per bene.
Personalmente, mi sento più deciso e imbarazzato quando si parla di 
"report" invece che di thread. :-D
Ciao! :-)
-- 
Marco «Alka» Breveglieri
  (marco [@] abls [.] it)
  ABLS Team S.n.c. - Software & Web
  42019 Scandiano (Reggio Emilia)
 
http://www.abls.it

 "report" invece che di thread. :-D
Più deciso è ok, ma imbarazzato anche ? :-))
ciao
Antonio

 Più deciso è ok, ma imbarazzato anche ? :-))
Scusa, volevo scrivere _indeciso_. :-D
Ciao!


Io ne ho fatto un uso davvero intensivo all'interno di un'applicazione 
[...]
Cioe', fatemi capire: tutti quelli che hanno risposto ne hanno fatto uso, ma
da quello che scrivete sembrerebbe proprio che la mezza pippa della situazione
sia sempre io... LOL... ;)


Io se fossi in te farei il calcolo delle ore spese per il corso tenendo
conto della preparazione.
Per cui 1,5 ore di corso + 3 ore di preparazione = 4,5 ore totale.
Poi sommate tutte le ore moltiplicherei per non meno di 50 euro l'ora.
Se a questo punto vuoi fare uno sconto del 30%, 40%, 50% o 60% almeno sai
quanto sarebbe il totale e cosě puoi anche comunicare cosa sarebbe costato
il corso senza il tuo intervento.
Ciao
Mario - (
mari...@inwind.it
)
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 sia sempre io... LOL... ;)
Acc...mi sembrava invece di aver lasciato intendere il contrario, 
evidenziando la mia "timidezza" verso l'uso dei thread che, almeno per 
quanto mi riguarda, adopero solo se _strettamente_ necessario. :-)
Ho descritto il "panorama" di utilizzo proprio per porre l'accento sul 
fatto che, a differenza di altre "best practice" e abilità di 
programmazione Delphi che ho acquisito abbastanza bene, i thread mi 
costringono ogni volta a ripassare l'argomento per evitare di incappare 
in soluzioni architetturali che generano problemucci; se li adoperassi 
con maggiore frequenza, forse questo non accadrebbe. :-|


 Per cui 1,5 ore di corso + 3 ore di preparazione = 4,5 ore totale.
Non condivido,
da che mondo e mondo, tu sei pagato per le ore effettive di corso, cioè 
le ore di insegnamento. Nel suo caso 1:30 x n°lezioni.
Il tempo che perdi nella preparazione non puoi conteggiarlo e non è ben 
quantificabile oltre che soggettivo:
1) dipendono dall'esperienza
2) dipende se hai già il materiale pronto
3) dipende se dai delle prove e non riesci a finirle in aula
ecc...
Se si segue il tuo ragionamento, le persone con meno eperienza 
guadagnano di più perchè impiegano più tempo nella preparazione.... 
credo che invece debba essere il contrario, chi ha già le dispense 
pronte, l'esperienza e gli esercizi preparati necessariamente guadagna 
di più pur lavorando meno.
Quello che deve presentare è la costo/ora del corso.
Ovviamente non sono la bibbia e queste sopra sono solo mie 
considerazioni e mie personalissime opinioni :-)
Ciao
Gianni

 Sarei curiosio di contare quanti sono quelli che li usano qui dentro :-)
Anche se non sono un argomento che padroneggio benissimo, mi capita di
usarli abbastanza di frequente, forse dipende anche dal tipo di applicazioni
sviluppate. Ora, ad esempio, sto creando una unit di log che dovrà essere
"condivisa" da più applicazioni contemporaneamente e ho dovuto farne uso
-- 
Lis                                               
www.alessandroghezzi.it
Inizia il campionato di F1, iscriviti ad O'Telma: 
http://snipurl.com/otelma
Il giovane cammina più veloce dell'anziano, ma l'anziano conosce la strada
Now playing: Aerosmith - Dream On

 Io credo che siano molto pochi... ma per quale motivo?
Io li uso, direi spesso!
I motivi che tu scrivi sono veri, ma a volte non puoi farne a meno...
Comunque basta "blindare" gli accessi alle risorse condivise e le eccezioni.
Poi se qualcosa va storto ci si arma di MemProof e Overseer e comincia il "calvario" :-)
[cut]
Ciao Daniele


Sigh... ormai non vi conto piu': direi che mi autoproclamo MEZZA PIPPA DI
ICLD!
:((
.
.
.
.
.
.
.
.
.
.
.
:D
;)
