Zadania różne - zestaw 1.
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaZadania różne - zestaw 1.
Zadania poniższe nie zostały dane studentom na zajęciach. Wpisałem je dla tych, którzy chcą spróbować swoich sił w programowaniu na trochę swobodniejszym poziomie. Tym samy jest to okazja do zdobycia nieco praktyki programistycznej :) W razie czego służę pomocą.
- Pomoc do perla dostępna jest przez np. manual systemowy (man lub strony info), ale także przez dedykowane polecenia perldoc. Napisz program, który sprawdzi, czy w systemie jest zainstalowany system pomocy tego właśnie rodzaju oraz jakie obsługuje moduły. Modułem perldoca będziemy tu rozumieć określone słowo kluczowe, np. perlre, perlop, itp. Podpowiedź: sprawdź wynik działania funkcji system.
- Napisz program który pobiera jeden parametr z wiersza poleceń. Parametr ten jest nazwą modułu perlowego, np. Time::HiRes, DBI, albo Term::ANSIColor. Zadaniem programu ma być sprawdzenie, czy dany moduł jest zainstalowany. Podpowiedź: można to zrobić przez załadowanie modułu i sprawdzenie powodzenia operacji, zapoznaj się z eval.
- Napisz program, którego zadaniem jest przetwarzanie opcji podanych w wierszu poleceń. Każda opcja podana jako np. --opcja=wartosc, powinna powodować ustawienie w programie odpowiedniego klucza w haszu %CONFIG, w postaci $CONFIG{opcja} = wartosc. Podpowiedź: wykorzystaj moduł Getopt::Long.
- Zapoznaj się z modułem Benchmark. Za pomocą tego modułu oblicz, ile czasu zajmuje wywołanie pustej procedury. Wyniki porównaj z czasem działania funkcji print "";.
- Używając modułu Benchmark sprawdź, która pętla działa szybciej:
while($a++ < 1_000_000){}
czy:for($a=0;$a<1_000_000;$a++){}
- Używając modułu Time::HiRes oraz dowolnej biblioteki do wczytywania naciśnięć klawiszy, napisz program lub zestaw procedur do wczytywania hasła. Zamiast znaków w terminalu powinny pojawiać się gwiazdki.
- Dodaj do poprzedniego programu/procedur funkcję określania wysokorozdzielczego czasu pomiędzy naciśnięciami klawiszy. Gdy dana osoba podaje jakieś hasło, zwykle naciska klawisze z pewną dość powtarzalną dynamiką. Można wymierzyć okresy pomiędzy naciśnięciami klawiszy, a następnie sporządzić profil czasowy wpisanego hasła. Tak zabezpieczone hasło następnie będzie musiało być wpisane z podobną charaketerystyką czasową, aby zostało zaakceptowane. Napisz do tego odpowiednie procedury, a następnie wypróbuj swoje zabezpieczenie na osobach, które będą wpisywać znane hasło. Czy tego typu timing czasowy jest dobrym zabezpieczeniem?
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.