Difference between revisions of "LU-LSP-b11:MD3"

From DiLab
Jump to: navigation, search
m (salabots links)
 
(3 intermediate revisions by the same user not shown)
Line 14: Line 14:


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. Izņemot MD5 režīmā, kad failu vienādību nosaka MD5 vertības.
Apstaigāšana jāsāk no tās direktorijas, kurā programma izpildās (t.i. direktorijas ar nosaukumu ".").
* Saites (links) jāignorē. Divas saites, vai fails un saite uz to, nav jāsalīdzina.

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 vērtības.

Saites (symbolic links, t.i. "vājās" saites) jāignorē. Divas vājās saites, vai arī fails un vājā 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:
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 -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 -md5 vai --md5 aprēķina un salīdzina MD5 vērtību faila saturam (bez vārda un datuma).
* md3 --help izvada palīga tekstu par parametriem (divas domu zīmes!)
md3 --help izvada palīga tekstu par parametriem (divas domu zīmes!)


'''Izdrukas formāts''':
'''Izdrukas formāts''':
Line 46: Line 50:
===Jāiesniedz===
===Jāiesniedz===


* Jāiesniedz C programmas pirmkods un Makefile.
* Jāiesniedz C programmas pirmkods.
* Iesniedzamais fails jānosauc šādi: LSP_MD3_vards_uzvards.c
* 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
* Fails sūtāms pa e-pastu piekabē, ar sekojošu "Subject:" LSP MD3 vards uzvards
* Risinājums jānosūta uz kursa asistenta e-pastu.


===Vērtējums===
===Vērtējums===
Line 64: Line 69:
md3 -d > log
md3 -d > log


Salīdzinam failus tikai pēc vārdiem
Salīdzinām failus tikai pēc vārdiem
md3
md3
Salīdzinam failus pēc vārdiem un datumiem
Salīdzinām failus pēc vārdiem un datumiem
md3 -d
md3 -d
Salīdzinam failus pēc satura
Salīdzinām failus pēc satura
md3 -md5
md3 -md5
Salīdzinam failus pēc satura un vārdiem un datumiem. Izvadam tikai tos kam visi vienādi.
Salīdzinām failus pēc satura, vārdiem un datumiem. Izvadam tikai tos, kam visi vienādi.
md3 -d -md5
md3 -d -md5


Line 88: Line 93:
A: Noteiktais termiņš paliek spēkā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai.
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?====
====J: Vai jāignorē gan "soft", gan "hard" saites?====


A: Vājās saites (soft links) jāignorē. Stingrās saites (hard links) nav jāignorē.
A: Vājās saites (soft links) jāignorē. Stingrās saites (hard links) nav jāignorē.

Latest revision as of 14:37, 12 October 2011

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.

Apstaigāšana jāsāk no tās direktorijas, kurā programma izpildās (t.i. direktorijas ar nosaukumu ".").

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 vērtības.

Saites (symbolic links, t.i. "vājās" saites) jāignorē. Divas vājās saites, vai arī fails un vājā 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 vai --md5  aprēķina un salīdzina MD5 vērtī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.
  • Iesniedzamais fails jānosauc šādi: LSP_MD3_vards_uzvards.c
  • Fails sūtāms pa e-pastu piekabē, ar sekojošu "Subject:" LSP MD3 vards uzvards
  • Risinājums jānosūta uz kursa asistenta e-pastu.

Vērtējums

Uzdevums tiks vērtēts sekojoši:

  1. 60% - Korekta programmas darbība salīdzinot tikai failu vārdus un izmērus
  2. 10% - -d datuma salīdzināšanas opcijas realizācija
  3. 20% - -md5 opcijas realizācija
  4. 10% - --help realizācija

Piemēri

Darbinām md3, salīdzinām arī datumus, izvadam rezultātus log failā.

md3 -d > log

Salīdzinām failus tikai pēc vārdiem

md3

Salīdzinām failus pēc vārdiem un datumiem

md3 -d

Salīdzinām failus pēc satura

md3 -md5

Salīdzinām failus pēc satura, 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)

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 jāignorē 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 LSP kursa sākuma lapu.