Difference between revisions of "LU-LKP-B10:MD3"
m |
m (→J: Uzdevums pārāk grūts, vai var pagarināt termiņu?) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{TocRight}} |
{{TocRight}} |
||
= |
=MD3= |
||
===Mērķi=== |
===Mērķi=== |
||
* Direktorijas koka |
* Direktorijas koka rekursīva apstaigāšana |
||
* Failu parametru nolasīšana un analīze |
* Failu parametru nolasīšana un analīze |
||
* Darbs ar stat, opendir,readdir,closedir |
* Darbs ar stat(), opendir(),readdir(),closedir() |
||
* Hash tabulas pielietojumi |
* Hash tabulas pielietojumi |
||
* MD5 pielietojums |
|||
===Uzdevums=== |
===Uzdevums=== |
||
Uzrakstīt programmu '''md3''', kas apstaigā direktoriju koku un atrod tos failus kas ir duplikāti, respektīvi, atrodami vairākos eksemplāros. |
Uzrakstīt programmu '''md3''', kas apstaigā direktoriju koku un atrod tos failus kas ir duplikāti, respektīvi, atrodami vairākos eksemplāros. |
||
Faili tiek uzskatīti par vienādiem ja tiem ir vienāds izmērs un faila vārds. |
Faili tiek uzskatīti par vienādiem ja tiem ir vienāds izmērs un faila vārds. Izņemot MD5 režīmā, kad failu vienādību nosaka MD5 vertības. |
||
* Saites (links) jāignorē. Divas saites, vai fails un saite uz to nav |
* Saites (links) jāignorē. Divas saites, vai fails un saite uz to, nav jāsalīdzina. |
||
Vārds un izmērs jāpārbauda vienmēr, izņemot MD5 režīmu. Papildus pārbaudes nosaka parametri: |
|||
* md3 -d pārbauda arī datumu sakritību |
|||
* md3 -md5 aprēķina un salīdzina MD5 vertību faila saturam (bez vārda un datuma). |
|||
* md3 --help izvada palīga tekstu par parametriem (divas domu zīmes!) |
|||
'''Izdrukas formāts''': |
'''Izdrukas formāts''': |
||
=== filename1 |
=== date size filename1 [MD5] |
||
path1 |
path1/filename1 |
||
path2 |
path2/filename1 |
||
... |
... |
||
=== filename2 |
=== date size filename2 [MD5] |
||
path1 |
path1/filename2 |
||
path2 |
path2/filename2 |
||
... |
|||
Datuma formāts ir tāds pat kā ls -l: (yyyy-mm-dd hh:mm). Piemēram: 2010-09-25 21:45 |
|||
MD5 jādrukā tikai tad, ja pie programmas izsaukuma parametrs bija -md5 |
|||
Šajā gadījumā failu vienādību nosaka tikai MD5 sakritība, un izvads var nedaudz atšķirties - jo vienādiem failiem var atšķirties to vārdi un datumi. Datums izvadāms tika vienam failam. |
|||
=== date size filename1 [MD5] |
|||
path1/filename1 |
|||
path2/filename2 |
|||
... |
... |
||
Line 34: | Line 53: | ||
Uzdevums tiks vērtēts sekojoši: |
Uzdevums tiks vērtēts sekojoši: |
||
# 60% - Korekta programmas darbība salīdzinot tikai failu vārdus un izmērus |
|||
# 80% - Korektu ievaddatu apstrāde un pareiza rezultātu izdruka. |
|||
# 10% - -d datuma salīdzināšanas opcijas realizācija |
|||
# 20% - Nekorektu ievaddatu atpazīšana un kļūdas paziņojuma izdruka. |
|||
# 20% - -md5 opcijas realizācija |
|||
# 10% - --help realizācija |
|||
===Piemēri=== |
===Piemēri=== |
||
Darbinām md3, salīdzinām arī datumus, izvadam rezultātus log failā. |
|||
md3 -d > log |
|||
Salīdzinam failus tikai pēc vārdiem |
|||
md3 |
|||
Salīdzinam failus pēc vārdiem un datumiem |
|||
md3 -d |
|||
Salīdzinam failus pēc satura |
|||
md3 -md5 |
|||
Salīdzinam failus pēc satura un vārdiem un datumiem. Izvadam tikai tos kam visi vienādi. |
|||
md3 -d -md5 |
|||
===Derīga informācija=== |
===Derīga informācija=== |
||
* [http://linux.die.net/man/2/stat stat()] |
|||
* xx |
|||
* [http://linux.die.net/man/3/opendir opendir()], [http://linux.die.net/man/3/readdir readdir()], [http://linux.die.net/man/3/closedir closedir()] |
|||
* [http://xml-lit.sourceforge.net/doc/indexs05.html Hash funkcijas un tabulas piemērs] |
|||
* [http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html MD5] |
|||
* Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem. |
* Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem. |
||
==J&A (jautājumi un atbildes)== |
==J&A (jautājumi un atbildes)== |
||
Papildus skatieties kursa vēstkopu LU_LKP_B@googlegroups.com |
|||
====J: Uzdevums pārāk grūts, vai var pagarināt termiņu?==== |
====J: Uzdevums pārāk grūts, vai var pagarināt termiņu?==== |
||
A: Noteiktais termiņš paliek spēkā |
A: Noteiktais termiņš paliek spēkā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai. |
||
====J: Vai jaignorē gan "soft" gan "hard" saites?==== |
|||
A: Vājās saites (soft links) jāignorē. Stingrās saites (hard links) nav jāignorē. |
|||
Lielākā daļa failu, ko mēs ikdienā redzam savās direktorijās ir cietās |
|||
saites uz failu i-node struktūrām. Tāpēc ignorējot arī stingrās saites mēs ignorētu |
|||
praktiski visus failus. |
|||
---- |
---- |
Latest revision as of 17:28, 26 October 2010
MD3
Mērķi
- Direktorijas koka rekursīva apstaigāšana
- Failu parametru nolasīšana un analīze
- Darbs ar stat(), opendir(),readdir(),closedir()
- Hash tabulas pielietojumi
- MD5 pielietojums
Uzdevums
Uzrakstīt programmu md3, kas apstaigā direktoriju koku un atrod tos failus kas ir duplikāti, respektīvi, atrodami vairākos eksemplāros. Faili tiek uzskatīti par vienādiem ja tiem ir vienāds izmērs un faila vārds. Izņemot MD5 režīmā, kad failu vienādību nosaka MD5 vertības.
- Saites (links) jāignorē. Divas saites, vai fails un saite uz to, nav jāsalīdzina.
Vārds un izmērs jāpārbauda vienmēr, izņemot MD5 režīmu. Papildus pārbaudes nosaka parametri:
- md3 -d pārbauda arī datumu sakritību
- md3 -md5 aprēķina un salīdzina MD5 vertību faila saturam (bez vārda un datuma).
- md3 --help izvada palīga tekstu par parametriem (divas domu zīmes!)
Izdrukas formāts:
=== date size filename1 [MD5] path1/filename1 path2/filename1 ... === date size filename2 [MD5] path1/filename2 path2/filename2 ...
Datuma formāts ir tāds pat kā ls -l: (yyyy-mm-dd hh:mm). Piemēram: 2010-09-25 21:45
MD5 jādrukā tikai tad, ja pie programmas izsaukuma parametrs bija -md5
Šajā gadījumā failu vienādību nosaka tikai MD5 sakritība, un izvads var nedaudz atšķirties - jo vienādiem failiem var atšķirties to vārdi un datumi. Datums izvadāms tika vienam failam.
=== date size filename1 [MD5] path1/filename1 path2/filename2 ...
Jāiesniedz
- Jāiesniedz C programmas pirmkods un Makefile.
- Visi iesniedzamie faili jāsapako arhīvā LKP_MD3_vards_uzvards.tgz
- Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LKP MD3 vards uzvards
Vērtējums
Uzdevums tiks vērtēts sekojoši:
- 60% - Korekta programmas darbība salīdzinot tikai failu vārdus un izmērus
- 10% - -d datuma salīdzināšanas opcijas realizācija
- 20% - -md5 opcijas realizācija
- 10% - --help realizācija
Piemēri
Darbinām md3, salīdzinām arī datumus, izvadam rezultātus log failā.
md3 -d > log
Salīdzinam failus tikai pēc vārdiem
md3
Salīdzinam failus pēc vārdiem un datumiem
md3 -d
Salīdzinam failus pēc satura
md3 -md5
Salīdzinam failus pēc satura un vārdiem un datumiem. Izvadam tikai tos kam visi vienādi.
md3 -d -md5
Derīga informācija
- Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem.
J&A (jautājumi un atbildes)
Papildus skatieties kursa vēstkopu LU_LKP_B@googlegroups.com
J: Uzdevums pārāk grūts, vai var pagarināt termiņu?
A: Noteiktais termiņš paliek spēkā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai.
J: Vai jaignorē gan "soft" gan "hard" saites?
A: Vājās saites (soft links) jāignorē. Stingrās saites (hard links) nav jāignorē. Lielākā daļa failu, ko mēs ikdienā redzam savās direktorijās ir cietās saites uz failu i-node struktūrām. Tāpēc ignorējot arī stingrās saites mēs ignorētu praktiski visus failus.
Uz LKP kursa sākuma lapu.