Aiuto voglio imparare!

Ciao a tutti, è da poco che sto cercando di imparare a programmare in
Ruby, quindi come potete intuire sono un principiante.

Purtroppo finora ogni tentativo da parte mia di imparare qualsiasi altro
linguaggio è andato a vuoto.
Il problema è che riuscivo a scrivere giusto qualche semplicissimo
programma, ma poi non sapendo come fare a creare un interfaccia grafica
mi bloccavo sempre, non riuscivo ad andare avanti poiché quei programmi
si eseguivano tutti tramite la console di windows e questa cosa mi
limitava moltissimo nelle idee.

Adesso sto cercando seriamente di imparare Ruby.

All’inizio mi ero bloccato (sempre per il solito problema), poi ho
installato varie GUI ma dopo aver costruito la grafica del mio programma
(senza scrivere una riga di codice) poi non sapevo più dove mettere le
mani…, come interagire con i pulsanti, ecc…

Alla fine ho installato GTK e mi sono messo sotto a studiare per sapere
come creare finestre, pulsanti, ecc… (scrivendo solo codice, senza
utilizzare programmi che permettevano di farlo tramite interfaccia
grafica).

Oggi finalmente ho visto i primi risultati.
Non è stato facile entrare nell’ottica del linguaggio, la prima finestra
del programma ancora è da perfezionare nella disposizione degli oggetti,
ma sono molto soddisfatto di aver raggiunto il primo obiettivo.

Questa è la finestra del programma :
http://img91.imageshack.us/img91/723/programmaqo1.jpg

Ora avrei qualche consiglio da chiedervi…

Da come avrete sicuramente capito dall’immagine, vorrei che una volta
immesse username e password, premendo il tasto Ok venga controllata la
correttezza dei dati immessi e di conseguenza venga consentito l’accesso
(quindi con l’apertura di una nuova finestra , ecc…).

Qual’è il metodo più “sicuro” per inserire una password ? Come si fa ?

Io ho provato a scrivere questa semplice cosa per controllare giusto la
password e vedere se funzionava, però anche se inserisco la password
esatta mi continua a dire “Password errata, accesso negato.” :

button1.signal_connect(“clicked”) {
if password == “ruby”
puts “Password esatta”
else
puts “Password errata, accesso negato.”
end}

Altra cosa…, c’è un metodo per posizionare i bottoni e gli altri
oggetti esattamente nel punto in cui vogliamo ?

Grazie e scusate per la lunghezza del messaggio, ma stavolta sento che
ce la posso fare ad imparare.

Gia il fatto che so’ fare interagire i bottoni è una gran cosa per me :smiley:

Ciao io uso le librerie FOX (fxruby) per creare le gui, uso soprattutto
il gui builder foxguibuilder che mi permette di disegnare finestre,
bottoni etc e poi andarle a modificare nel codice

scaricalo dal link
http://webscripts.softpedia.com/script/Development-Scripts-js/foxGUIb-18522.html
oppure da sourceforge

Io uso questo per creare tool perche’ per me e’ comodo, e posso darti
dei consigli.
Sulle altre librerie grafiche non so niente

Fai qualche gui con foxguib, dimmi cosa ti serve e io vedro’ di darti
delle indicazioni
NOTA: in linux ci sono un po’ di problemi ad installare le librerie fox,
in windows tutto dovrebbe andare

Ciao

ecco il guibuilder di fxruby, capisco che forse vorrai comunque
continuare ad usare GTK comunque almeno potrai dirmi quale dei 2 (GTK o
FXRuby) e’ meglio

Ciao

devo vedere un po’ come funziona GTK, mi mandi i sorgenti del tuo
programmino completo?
Adesso ti invio quello che forse vuoi fare tu, lo faccio con foxguib
che mi generera’ i file ruby
il file in allegato non l’ho scritto io ma il foxguib

Ci sono un po’ di errori ma ho impiegato 2 min per farlo

Antonio Di Fluri wrote:

ecco il guibuilder di fxruby, capisco che forse vorrai comunque
continuare ad usare GTK comunque almeno potrai dirmi quale dei 2 (GTK o
FXRuby) e’ meglio

Ciao

Ciao, intanto grazie per la risposta :slight_smile:

Avevo gia installato FxRuby però non avevo provato l’editor grafico (cmq
lo approfondirò meglio non appena avrò più tempo), avevo solo provato a
studiare un pò di codice guardandomi gli esempi, però sotto questo punto
di vista GTK mi è sembrato più semplice.

Per quanto riguarda il codice (ovvero come fare a controllare che la
password inserita sia esatta), sai darmi qualche consiglio ?

Io purtroppo ho un pò di idee su quello che ho intenzione di fare, ma
ogni tanto mi blocco perchè magari il codice che metto non funziona bene
:frowning:

Grazie.

Questo è il mio programma.

Quando premo ok mi controlla solamente se la password è quella giusta.

Per quanto riguarda gli asterischi per la password ho gia provveduto :wink:

if password.text == array.to_s
puts “Accesso eseguito”
else
puts “Password errata, accesso negato”

  1. password e’ l’entry ma il testo l’ottengo richiamando l’attributo
    text: password.text
  2. il confronto “==” va fatto con oggetti della stessa classe percio’
    converto array in stringa

Ciao
P.s.: a me funziona

Argh e pensare che ci ero pure arrivato, però avevo messo solamente il
“.to_s”.

Ti ringrazio veramente, ora mi posso concentrare sui prossimi step :wink:

Ancora grazie :wink:

Dimenticavo:
Per quanto riguarda la password, tu vuoi far comparire nell’ input text
field gli “*” invece della password in chiaro. l’input text field di GTK
dovrebbe avere un’attibuto che permette di impostare la visualizzazione
del testo inserito con gli *******…
Vedi gli rdoc

Rieccomi :slight_smile:

Purtroppo non riesco a capire come devo fare per fare aprire una nuova
finestra quando premo su Ok.

Cioè devo prima distruggere la finestra che ho usato fino ad ora ? Devo
distruggere anche ogni singolo oggetto creato (pulsanti, label…)?

http://img140.imageshack.us/img140/7254/programmarc7.jpg

Se ne creo una nuova non me la fa visualizzare…

Altra cosa… ritornando alla finestra dell’username e della password…
se volessi che quando viene inserita un’username e una password errata
appaia una scritta (una label) sotto i 2 campi di inserimento… mi
conviene creare una label invisibile e renderla visibile quando si
verifica l’evento appena descritto ?

Sicuramente sono tutti problemi facilmente risolvibili, ma purtroppo mi
mancano le basi.
Fino a che non vedo esempi che rispecchiano quello che voglio fare non
riesco ad andare avanti.

Scusate per le tante domande, però avete a che fare con un niubbo :smiley:

Di solito c’e’ una main window che crea tutte le altre finestre con
pulsanti etc…
Ora parlero’ dando per scontato che tu stia usando la programmazione ad
aggetti per ogni finestra
Una finestra (come quella tua con username e password) che crea un’altra
finestra non puo’ essere distrutta altrimenti porta con se nella
distruzione anche quella che ha creato: nascondila!
Per la label mi sembra giusto il ragionamento
Almeno io faccio cosi’

Antonio Di Fluri wrote:

Di solito c’e’ una main window che crea tutte le altre finestre con
pulsanti etc…
Ora parlero’ dando per scontato che tu stia usando la programmazione ad
aggetti per ogni finestra
Una finestra (come quella tua con username e password) che crea un’altra
finestra non puo’ essere distrutta altrimenti porta con se nella
distruzione anche quella che ha creato: nascondila!
Per la label mi sembra giusto il ragionamento
Almeno io faccio cosi’

Ok quindi la nascondo, ma questo non appesantisce il mio programma
quando è in esecuzione ?

Meno male, almeno per la label allora ho ragionato bene :wink:

Di niente, questi sono i soliti errori che faccio sempre io
Consiglio: fai un po’ di logging cioe’:
puts password
puts array.to_s
puts variabile_che_uso
puts etc…

Ciao

Cavolo se lo appesantisce, infatti i programmi che faccio io fanno tutti
schifo come prestazioni: io punto piu’ sulla velocità di sviluppo (il
time to market e’ essenziale per uno studente di ing. che si rompe di
fare 10 esami in un anno con altrettanti proggetti) (java sucks)

:slight_smile:

Ho risolto.

Se nascondevo soltanto la finestra, alla chiusura del programma ricevevo
uno strano “exit code”.
Invece se prima la nascondo e poi la distruggo tutto fila liscio.

---------------------------------------------------------------------------|
window.hide() #Nasconde la finestra di
accesso |
window.destroy() #Distrugge la finestra di
accesso |
finestra_principale.call #Apre la FINESTRA PRINCIPALE

Dopo la distruzione della finestra di accesso al programma, per aprire
quella nuova ho richiamato il blocco di codice che ho creato usando il
“.call” (finestra_principale.call) e “lambda” :

-------------------------------|
finestra_principale = lambda { |
CODICE |

}

Ora in questa nuova finestra devo solo aggiungere un menu opzioni in
alto, implementare il Gtk::ListStore (che se ho capito bene deve essere
associato ad una Gtk::TreeViewColumn) per archiviare i miei dati ed il
mio primo programma “dovrebbe” essere terminato !!!

Aspetto a cantare vittoria ma spero di farcela…

Una domanda : Ma l’username e la password che scelgo per accedere al
programma… non si possono criptare ?

Se faccio in modo che il mio programma sia avviabile come file .exe ,
non c’è il rischio che vanno a controllare il programma con un hex
editor e scovano la password ? (Nella peggiore delle ipotesi).

Stavo pensando di aggiungere qualche “check button” (lo so, sono malato
hehehehe però voglio fare un programma sicuro), in modo che oltre ad
username e password venga controllata anche se la sequenza di
checkbutton selezionate sia esatta.

Ho risolto.

Se nascondevo soltanto la finestra, alla chiusura del programma ricevevo
uno strano “exit code”.
Invece se prima la nascondo e poi la distruggo tutto fila liscio.

---------------------------------------------------------------------------|
window.hide() #Nasconde la finestra di
accesso
window.destroy() #Distrugge la finestra di
accesso
finestra_principale.call #Apre la FINESTRA PRINCIPALE
---------------------------------------------------------------------------|

Dopo la distruzione della finestra di accesso al programma, per aprire
quella nuova ho richiamato il blocco di codice che ho creato usando il
“.call” (finestra_principale.call) e “lambda” :

-------------------------------|
finestra_principale = lambda {
CODICE
}
-------------------------------|

Ora in questa nuova finestra devo solo aggiungere un menu opzioni in
alto, implementare il Gtk::ListStore (che se ho capito bene deve essere
associato ad una Gtk::TreeViewColumn) per archiviare i miei dati ed il
mio primo programma “dovrebbe” essere terminato !!!

Aspetto a cantare vittoria ma spero di farcela…

Una domanda : Ma l’username e la password che scelgo per accedere al
programma… non si possono criptare ?

Se faccio in modo che il mio programma sia avviabile come file .exe ,
non c’è il rischio che vanno a controllare il programma con un hex
editor e scovano la password ? (Nella peggiore delle ipotesi).

Stavo pensando di aggiungere qualche “check button” (lo so, sono malato
hehehehe però voglio fare un programma sicuro), in modo che oltre ad
username e password venga controllata anche se la sequenza di
checkbutton selezionate sia esatta.