Ruby: Generisanje random lozinki
Otkriti novi nacin generisanja nasumicne lozinke mi je uvijek bio od interesa.
Random Metoda
Primjeri iz ovog clanka koriste Random metodu/funkciju koja o kojoj mozete vise procitati ovdje. Ovu metodu mozemo testirati tako
sto cemo generisati nasumicni broj. Pokrenite IRB pomocu komande irb zatim pozovite rand metodu.
rand
=> 0.8270045384707297 Po defaultu rand vraca decimale a ako metodi dodijelimo argument u vidu broja onda ce rand generisati broj od nule sve do tog broja, ne ukljucujuci broj koji smo naveli kao argument.
rand 200
=> 187 U navedenom primjeru rand je vratio broj izmedju 0 i 200 odnosno broj 187. Navedeni primjer mozemo dodatno zakomplikovati ako saberemo broj nasumicno generisani broj sa brojem po zelji.
65 + rand(200)
=> 103 U ovom primjeru sabiramo sa brojem 65.
Da generisemo broj odredjenog raspona rand koristimo na sljedeci nacin
rand 100..400
=> 295 U ovom primjeru rand je generisao nasumicni broj 295.
Sample Metoda
Ovu metodu mozemo koristiti ako zelimo da izaberemo nasumicno broj iz zadane liste. U ovom primjeru sample metoda ce izabrati nasumicno broj iz liste [2, 5, 15, 40, 20, 11].
[2, 5, 15, 40, 20, 11].sample
=> 20 Jos jedan nacin da izaberemo nasumicni broj iz liste je vezivanjem metoda shuffle, first ili last.
[2, 5, 15, 40, 20, 11].shuffle.first
=> 11 Nakon sto shuffle pomijesa brojeve iz liste metoda first prikaze prvi clan liste.
[2, 5, 15, 40, 20, 11].shuffle.last
=> 15 Nakon sto shuffle pomijesa brojeve iz liste metoda last prikaze zadnji clan liste.
Opseg i Sample metoda
Metodu sample mozemo vezati na niz iz nekog opsega. Recimo kada zelimo generisati nasumicno slovo iz abecede.
('a'..'z').to_a.sample
=> "l"Slican primjer ali ovaj put sa opsegom brojeva od 0 do 99.
(0..99).to_a.sample
=> 88 Nekoliko primjera kako pomocu Ruby generisati random lozinke
Prvi primjer
Pokrenute IRB pomocu komande irb zatim prekucajte kod ispod
(0...8).map { (65 + rand(26)).chr }.joinTakodjer isti kod mozete pokrenuti direktno iz CLI
ruby -e "puts (0...8).map { (65 + rand(26)).chr }.join"Drugi primjer
(0...50).map { ('a'..'z').to_a[rand(26)] }.joinTreci primjer
charset = [*'a'..'z', *'A'..'Z'].sample(30).join