Username
Password

Programmazione

Supporto per Linguaggi di Programmazione
Rispondi Invia Nuova Discussione 
Tuesday, 5 April 2011, 09:53
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577
Question

Due clienti, due loghi, una applicazione


Supponiamo di avere un applicativo C# a finestre in cui ci sia una finestra iniziale col logo del cliente che chiede utente e password; l'applicativo è composto poi da altre finestre che, una volta effettuato il login, possono essere mostrate al cliente se decide di fare certe operazioni ecc. ecc. .

Supponiamo che lo stesso applicativo venga utilizzato da un altro cliente, per cui l'unica differenza a parte i parametri di configurazione nel .config e/o nel .settings sia il logo da mostrare nella form di login.

Una soluzione per gestire il caso è banalmente quella di:
  • creare il progetto con il logo del cliente A e con tutte le funzionalità:
  • ad ogni aggiornamento del progetto si crea l'eseguibile per il cliente A, si modifica il logo mettendo quello del cliente B e si ricompila anche per lui.

La soluzione è sì banale, ma non è efficace in quanto bisogna ripetere l'operazione tutte le volte che l'applicativo è soggetto a modifiche.

La domanda pertanto è:
qual è la soluzione più veloce per rendere l'applicativo utilizzabile da N clienti diversi, ognuno col proprio logo?
Non voglio che ogni installazione abbia gli N loghi e venga mostrato quello corretto a seconda di un parametro di configurazione, poiché nessun cliente dev'essere a conoscenza dell'altro.
Mi va benissimo creare un secondo progetto che "estenda" il primo solo per la modifica del logo, ma vorrei sapere come fare per mettere nel secondo progetto il minimo numero di modifiche per permettergli di utilizzare tutte le funzionalità del primo. Non ho problemi a creare un componente grafico "form di login" in cui si possa modificare il logo, ma come posso fare in due progetti diversi?

Anticipatamente ringrazio per le risposte.
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 11:06
palin
 Giuseppe
 Militante
 
L'avatar di  palin
 
 Località: Albano Laziale
 Età: 44
 Messaggi: 4,246

Ma se il logo lo metti come immagine esterna (es. una bella jpeg) e modifichi la jpeg e basta?
__________________

Palin -- <palin AT email DOT it>

Democracy doesn't mean “my ignorance is just as good as your knowledge.” - Isaac Asimov
draco dormiens nunquam titillandus
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 11:11
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

Il problema è che a quel punto qualcuno di più "smaliziato" può mettere al posto del logo l'immagine che vuole, sostituendo al logo aziendale ciò che più gli aggrada.
È per quello che cercavo di legarlo in qualche modo all'interno dell'applicativo.
C'è poi un altro aspetto:
se su tutte le installazioni del cliente A devo mettere l'immagine del logo separata è possibile che il cliente A si chieda: "come mai ha staccato il logo? Non è che rivende l'applicativo, che avevamo commissionato noi, anche ad altri?"
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 11:56
gillesvilleneuve
 GillesVilleneuve
 Utente Appassionato
 
L'avatar di  gillesvilleneuve
 
 Messaggi: 1,446

cripta l'immagine!

Apri l'immagine come testo e inserisci all'inizio una parola di controllo. se non c'è il logo non è valido.

Non so se mi son spiegato
    Rispondi Citando Rispondi
Commenti a questo messaggio
  Neles: Interessante
Tuesday, 5 April 2011, 12:04
palin
 Giuseppe
 Militante
 
L'avatar di  palin
 
 Località: Albano Laziale
 Età: 44
 Messaggi: 4,246

La risposta di Gilles è valida.
io metterei semplicemente l'immagine con un estensione strana (chessò un file .res) e applicherei su di essa un'offuscamento light (chessò basta uno zip in base64).

L'alternativa è fare una dll di risorse con dentro la bitmap (nel formato che preferisci). Magari il programma di installazione la schiaffa in C:\windows\system32 così non si nota
__________________

Palin -- <palin AT email DOT it>

Democracy doesn't mean “my ignorance is just as good as your knowledge.” - Isaac Asimov
draco dormiens nunquam titillandus
    Rispondi Citando Rispondi
Commenti a questo messaggio
  Neles: Interessante
Tuesday, 5 April 2011, 13:25
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

@gillesvilleneuve: soluzione decisamente interessante e valida, soltanto mi prenderebbe un po' di tempo la parte di crypt/decrypt dell'immagine.
Però è davvero interessante.

@palin: bella l'idea del file di risorse, ora me la studio un attimo e poi vedo.

Sicuramente però ci sarebbe da stare attenti a mettere il file di risorse giusto per il cliente giusto. Quello che mi piacerebbe è avere un'operazione più automatica del tipo "Compilo progettoA.csproj per il cliente A e progettoB.csproj per il cliente B" con i due progetti che si differenziano giusto per l'immagine.
Quella soluzione potrebbe venir utile anche nel caso di altre minime differenziazioni tra i clienti.
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 13:27
palin
 Giuseppe
 Militante
 
L'avatar di  palin
 
 Località: Albano Laziale
 Età: 44
 Messaggi: 4,246

Quote:
Originariamente inviato da Neles
@palin: bella l'idea del file di risorse, ora me la studio un attimo e poi vedo.

Sicuramente però ci sarebbe da stare attenti a mettere il file di risorse giusto per il cliente giusto. Quello che mi piacerebbe è avere un'operazione più automatica del tipo "Compilo progettoA.csproj per il cliente A e progettoB.csproj per il cliente B" con i due progetti che si differenziano giusto per l'immagine.
Quella soluzione potrebbe venir utile anche nel caso di altre minime differenziazioni tra i clienti.

Beh spero che la cosa si possa automatizzare a livello di progetto
__________________

Palin -- <palin AT email DOT it>

Democracy doesn't mean “my ignorance is just as good as your knowledge.” - Isaac Asimov
draco dormiens nunquam titillandus
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 13:33
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

Eh, questo è un po' il punto principale:

se il file con le risorse si chiama ad es. sempre resources.res, sia che si tratti del cliente A che del cliente B, per l'installazione basta mettere tutti i file del progetto più il resources.res di quel cliente.

Poi certo, nell'installatore basta annettere il file giusto. Però, visto che l'annessione è fatta "a mano", non si sa mai che si metta quello di A anziché quello di B...
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 13:35
Duilio
 Khn'nr
 Stuff
 
L'avatar di  Duilio
 
 Località: Tarnax IV
 Età: 56
 Messaggi: 27,900

Magari c' e' gia' qualche metodo compreso nel prezzo per validare le resources.
Che dice Rafe' ?

__________________

Uccidete pure me, ma l'idea che è in me non l'ucciderete mai

-
"Non consolarmi della morte", a Ulisse replicava il Pelìde.
"Io pria torrei servir bifolco per mercede, a cui scarso e vil cibo difendesse i giorni,
che del Mondo defunto aver l'impero."
-
tutto il klan deve rendere conto solo a Dio, mica agli elettori e alla giustizia [taunus 20:10]
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 14:31
RomeoKnight
 Militante
 
L'avatar di  RomeoKnight
 
 Messaggi: 4,968

Ma se metti un parametro nel config che sceglie quale immagine leggere non fai prima?
Se il parametro è qualcosa tipo una chiave di attivazione o un tag, in sua assenza il programma rifiuta di partire. Chiaramente il cliente non può immaginare che ci siano più immagini.
__________________
Hic erant dracones
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 14:56
palin
 Giuseppe
 Militante
 
L'avatar di  palin
 
 Località: Albano Laziale
 Età: 44
 Messaggi: 4,246

Quote:
Originariamente inviato da RomeoKnight
Ma se metti un parametro nel config che sceglie quale immagine leggere non fai prima?
Se il parametro è qualcosa tipo una chiave di attivazione o un tag, in sua assenza il programma rifiuta di partire. Chiaramente il cliente non può immaginare che ci siano più immagini.

Lui voleva proprio escludere di inserire le immagini non del cliente nel pacchetto.
Effettivamente se uno è un po' scafato e cerca nei file, le immagini se ci sono le trova...
__________________

Palin -- <palin AT email DOT it>

Democracy doesn't mean “my ignorance is just as good as your knowledge.” - Isaac Asimov
draco dormiens nunquam titillandus
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 16:26
SatRider
 Utente Appassionato
 
L'avatar di  SatRider
 
 Messaggi: 1,382

Tra i parametri ne aggiungi uno, magari chiamato in modo "oscuro" (chiamalo bruno? ), nel quale metti un crc/hash oscurato (shift dei bit?) del file logo.jpg.
Se cambi logo, devi cambiare l'hash/crc nella config.
Durante l'avvio verifichi che l'hash/crc sia corretto, altrimenti una pernacchia....e formattazione immediata di tutti i dirve!

SatRider
P.S.: volendo puoi estendere il calcolo del hash/crc su altri file in modo da "firmarli"
P.P.S.: ovviamente è una sicurezza....del piffero, ma forse sufficiente
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 16:59
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

Le soluzioni che mi state dando sono tutte più o meno valide e di questo vi ringrazio.

"Nascosta" nella mia domanda ce n'era una più generale: c'è un modo in Visual Studio per estendere un progetto (o una soluzione) in uno nuovo in cui basta semplicemente cambiare/estendere una form per avere lo stesso comportamento cambiando semplicemente la grafica della form di login?

Continuo comunque a dire che preferirei nascondere un po' di più al cliente che il logo sia un parametro: se esiste un file di risorse generico in cui può pescare "di tutto un po'" allora sono a posto (salvo la solita possibilità di errore umano per lo scambio dei loghi), altrimenti vorrei cercare il più possibile una soluzione che non richieda troppe operazioni "strane" (shift dei bit, nome del file in cima, watermark in generale) perché ad ogni nuovo cliente dell'applicativo occorrerebbe applicare una procedura non standard per metterci semplicemente il suo logo.
Un conto è creare un file pippo.res standard proprio di ogni cliente, un altro è ricordarsi come diavolo andava creato il file col logo...


P.S.: sbaglio o il buon vecchio SataNik è un po' che non si fa vedere?
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 19:07
palin
 Giuseppe
 Militante
 
L'avatar di  palin
 
 Località: Albano Laziale
 Età: 44
 Messaggi: 4,246

Alle brutte c'è sempre il buon vecchio .zip con password con la password cablata nel codice diversa per ogni cliente (magari con una funzione di offuscamento), dentro lo zip un file con estensione rigorosamente finta con dentro i dati dell'immagine
In questo modo se uno sbaglia a fare il pacchetto, il logo non si vede perché non si riesce ad aprire lo zip
__________________

Palin -- <palin AT email DOT it>

Democracy doesn't mean “my ignorance is just as good as your knowledge.” - Isaac Asimov
draco dormiens nunquam titillandus
    Rispondi Citando Rispondi
Tuesday, 5 April 2011, 21:22
RomeoKnight
 Militante
 
L'avatar di  RomeoKnight
 
 Messaggi: 4,968

C'è il make condizionale del progetto, ti può andare bene quello?
__________________
Hic erant dracones
    Rispondi Citando Rispondi
Commenti a questo messaggio
  Neles: Interessante
Rispondi Invia Nuova Discussione


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori)
 

Thread già visto da:
Andrea72, Pocket, RomeoKnight, SanK, foul64, Duilio, palin, Scarpetta, S71ng, lentz, SatRider, Foxes, ale82x, Neles, Attilio, GattaMatta, Ciopi, TW, alexjohnp, jtd, mr.ummagumma
Strumenti Discussione Cerca in questa Discussione
Cerca in questa Discussione:

Ricerca Avanzata
Modalità Visualizzazione

top Regole di scrittura
Tu non puoi inserire messaggi
Tu non puoi rispondere ai messaggi
Tu non puoi inviare allegati
Tu non puoi modificare i tuoi messaggi

codice vB è Attivo
Smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Attivo

Se hai problemi, contattaci


Visite Totali Posts: 81.268.865
Tutti gli Orari sono GMT +1. Attualmente sono le 07:17.

iGroup Black
Powered by vBulletin Versione 3.5.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Traduzione italiana a cura di: Enzo-Staff-VbulletinItalia.it
 
2000, 2012 © Visiva Group