„2007:SZR:Közlekedés” változatai közötti eltérés

A Miau Wiki wikiből
(A saját megoldás bemutatása (MÓDSZER))
(A saját megoldás bemutatása (MÓDSZER))
39. sor: 39. sor:
 
* csak egy internet böngésző szükséges a gondatlan használatához
 
* csak egy internet böngésző szükséges a gondatlan használatához
  
Tehát, a rendszer futásához szükség van valamilyen webszerverre (például Apache) és a webszerverbe integrált PHP modulra.
+
Tehát, a rendszer futásához szükség van valamilyen webszerverre (például [http://httpd.apache.org/ Apache]) és a webszerverbe integrált [http://php.net/ PHP modulra].
  
 
A program kombinatorikai terét a legegyszerűbben a HA-AKKOR szabályokkal lehet leírni. Azonban, figyelembe kell venni, hogy hány be- és kimenettel rendelkezik a program. Az IF-ELSE nagy és bonyolult elágazások lekezelésére nem alkalmas. A legtöbb programozási nyelv rendelkezik, az IF-ELSE logikájához hasonló működésű szintaktikával, ez általában a SWITCH, vagy CASE névre hallgat.
 
A program kombinatorikai terét a legegyszerűbben a HA-AKKOR szabályokkal lehet leírni. Azonban, figyelembe kell venni, hogy hány be- és kimenettel rendelkezik a program. Az IF-ELSE nagy és bonyolult elágazások lekezelésére nem alkalmas. A legtöbb programozási nyelv rendelkezik, az IF-ELSE logikájához hasonló működésű szintaktikával, ez általában a SWITCH, vagy CASE névre hallgat.
86. sor: 86. sor:
 
   ?>
 
   ?>
  
Továbbá a fejlesztés során még egy technikát alkalmaztam. Ez a sablonkezelés volt egy sablonkezelő motor segítségével (smarty). A sablonkezelés két legfontosabb előnye:
+
Továbbá a fejlesztés során még egy technikát alkalmaztam. Ez a sablonkezelés volt egy sablonkezelő motor segítségével ([http://smarty.php.net/ Smarty Template Engine]). A sablonkezelés két legfontosabb előnye:
  
 
* csökkenti a végleges kódméretet
 
* csökkenti a végleges kódméretet
 
* teljesen elválasztható a működtető kód a megjelenéstől
 
* teljesen elválasztható a működtető kód a megjelenéstől
 +
 +
További előnyök, hogy rengeteg favágó munkát levesz az ember válláról (mint egy jó keretrendszer egy JAVA project-ben - például [http://struts.apache.org/ Apache Struts] vagy [http://www.hibernate.org/ Hibernate]). Gyorsítótárazás, debugging, űrlapok, képek kódjának beillesztése és megannyi dolog. Ha valakit érdekel a dolog, az olvasgassa a Smarty oldalát.
  
 
'''A rendszer szempontjából ez miért volt jó?'''
 
'''A rendszer szempontjából ez miért volt jó?'''
Azért, mert így a kód részében a dolognak csak és kizárólag a vezérlést kellett megírnom, minden mást a sablonkezelő motor intéz el. Még az eredmények kiértékelését is a sablonkezelő motor intézi.
+
 
 +
Azért, mert így a kód részében a dolognak csak és kizárólag a vezérlést kellett megírnom, minden mást a sablonkezelő motor intéz el. Még az eredmények kiértékelését is a sablonkezelő motor intézi. Az egész program kevesebb mint 500 sorból áll (egész pontosan 493). Ebben a 493 sorban benne vannak a vezérlő, sablon (HTML) illetve stíluslapok (CSS) fájlok sorai is. Ha nem használok sablon motort, ez a szám több lenne mint 1000-1500.
  
 
=Az eredmények értelmezése (EREDMÉNY)=
 
=Az eredmények értelmezése (EREDMÉNY)=

A lap 2007. december 14., 01:35-kori változata

Forrás

EXS

A tervezett alkalmazás/megoldás címe

A közlekedési balesetet okozó személy(ek) ellen kiróható bűntetés a mai jogrendszer alapján.

A feladat előtörténete

Végül is mondhatom, hogy az ötlet, csoporttársammal folytatott beszélgetés során alakult ki. Ő a jogosítványról levonható pontokról csinált egy szakértői rendszert. Ekkor hasított belém az ötlet, hogy vajon, ha – jogosítvánnyal rendelkező állampolgárként – ilyen-olyan dolgokat elkövetek a közlekedés során, akkor milyen büntetést róhat ki rám a bíróság a ma, hatályban lévő jogszabályok alapján. Így kezdtem el a téma után olvasni és kutatni, majd elkezdeni létrehozni a rendszer struktúraszerkezetét, majd később a programot.

A feladat megoldás jelenlegi helyzete és ennek értékelése

A tervezett megoldás adatvagyonának bemutatása (ANYAG)

Mivel a rendszer tisztán a jogra támaszkodik, ezért nem volt szükség bonyolult és hosszas adatgyűjtésre. A Magyarország.hu internetes portál rendelkezik jogszabály keresővel, így az oda beillesztett kulcsszavak (közúti baleset) alapján hamar megtaláltam azt amit kerestem.

Adatforrás

A feladat által érintett célcsoportok

Bárki, aki Magyarországon, a ma hatályos jogszabály(ok) alapján természetes személy és jogosult a B kategóriás (autó) járművezetői engedély megszerzésére.

A feladat megválaszolása kapcsán várható hasznosság

Az óra során pont ebből a pontból alakult ki vita a rendszert illetően. Sajnos az ilyen rendszerek megvalósítása elég nehéz olyan szempontból, hogy én mint fejlesztő, nem állíthatom biztosan hogy jártas vagyok a jogban.

Tehát ha így csupaszon kirakom a webre és melléírom a nevem, akkor az első felhasználó, aki kapcsolatba kerül a rendszerrel (és a program rossz, vagy helytelen eredményt hoz), minden további nélkül beperelhet és a pert elég nagy valószínűséggel meg is nyerné.

A probléma kiküszöbölésére két járható út létezik. Az egyik, hogy kézen fogva egy jogásszal (akinek jogi végzettsége van) építem fel a lehetséges be- és kimeneteket, így ha mégis perre kerülne a sor, akkor a jogászt terhelné a felelősség, mert a nevét adta hozzá.

A másik megoldás pedig a validáció lenne. Ez nem takarna mást, mint hogy a kész programot, egy erre a célra létrehozott bizottság vagy szervezet vizsgálná meg, és amennyiben minden be- és kimenetet rendben talál, hozzáadja a minősítést. Ez a megoldás már létezik napjainkban, elég csak az Adó- és Pénzügyi Ellenőrzés Hivatal – APEH – által validált adóbevalló programot elővenni.

A válaszokat befolyásoló tényezők

  • A baleset okozója ittas állapotban vezetett.
  • A baleset okozója cserben hagyta a sérülte(ke)t.
  • A baleset okozója hány embert sértett, vagy ölt meg.
  • A baleset okozója szándékosan vagy véletlenül követte el azt, amit elkövetett.

A saját megoldás bemutatása (MÓDSZER)

A rendszer megvalósításához a PHP – szerveroldali programozási nyelvet választottam. Azért ezt, mert ezzel a nyelvvel már több éve foglalkozom és jártas vagyok benne. A rendszer előnye a programozási nyelv miatt a következőek:

  • a felhasználónak semmit nem kell átállítani a saját számítógépén
  • nem kell letöltenie semmilyen programot
  • az interneten keresztül a világ bármely pontján elérhető
  • csak egy internet böngésző szükséges a gondatlan használatához

Tehát, a rendszer futásához szükség van valamilyen webszerverre (például Apache) és a webszerverbe integrált PHP modulra.

A program kombinatorikai terét a legegyszerűbben a HA-AKKOR szabályokkal lehet leírni. Azonban, figyelembe kell venni, hogy hány be- és kimenettel rendelkezik a program. Az IF-ELSE nagy és bonyolult elágazások lekezelésére nem alkalmas. A legtöbb programozási nyelv rendelkezik, az IF-ELSE logikájához hasonló működésű szintaktikával, ez általában a SWITCH, vagy CASE névre hallgat.

Miért használjuk a SWITCH vagy CASE szintaktikát, mikor ugyanaz a működési logikája, mint az IF-ELSE-nek? Roppant egyszerű: a PHP interpreter sokkal gyorsabban lefuttatja – bonyolult elágazások esetén – a SWITCH-et, mint az IF-et.

a PHP-ban az IF-ELSE szintaktika a következőképpen néz ki:

  <?php
  …
  if ($valtozo == ertek1) {
     Ha a $valtozo erteke egyenlo az ertek1-gyel, akkor ez a programblokk kerül végrehajtásra.
  }
  elseif ($valtozo == ertek2) {
     Ha a $valtozo erteke egyenlo az ertek2-vel, akkor ez a programblokk kerül végrehajtásra.
  }
  további elseif-ek {
  …
  }
  else {
     Az az eset, amikor egyetlen-egy korábbi elseif ág feltétele nem volt igaz.
  }
  …
  ?>

Míg a SWITCH/CASE így:

  <?php
  …
  switch ($valtozo) { 
    Az IF-ELSE szintaktikában ez volt az IF blokk.
     case "ertek1":
        Akkor hajtódik végre ez a programblokk, amikor a $valtozo egyenlő lesz az ertek1-gyel.
        Az IF-ELSE szintaktikában ez volt egy ELSEIF blokk.
     break;
     case "ertek2":
        Akkor hajtódik végre ez a programblokk, amikor a $valtozo egyenlő lesz az ertek2-vel.
        Az IF-ELSE szintaktikában ez volt egy ELSEIF blokk.
     break;
     default:
        Akkor hajtódik végre ez a programblokk, amikor a $valtozo egyik case-ben megadott értékkel sem volt egyenlő.
        Az IF-ELSE szintaktikában ez volt az ELSE blokk.
     break;
  }
  …
  ?>

Továbbá a fejlesztés során még egy technikát alkalmaztam. Ez a sablonkezelés volt egy sablonkezelő motor segítségével (Smarty Template Engine). A sablonkezelés két legfontosabb előnye:

  • csökkenti a végleges kódméretet
  • teljesen elválasztható a működtető kód a megjelenéstől

További előnyök, hogy rengeteg favágó munkát levesz az ember válláról (mint egy jó keretrendszer egy JAVA project-ben - például Apache Struts vagy Hibernate). Gyorsítótárazás, debugging, űrlapok, képek kódjának beillesztése és megannyi dolog. Ha valakit érdekel a dolog, az olvasgassa a Smarty oldalát.

A rendszer szempontjából ez miért volt jó?

Azért, mert így a kód részében a dolognak csak és kizárólag a vezérlést kellett megírnom, minden mást a sablonkezelő motor intéz el. Még az eredmények kiértékelését is a sablonkezelő motor intézi. Az egész program kevesebb mint 500 sorból áll (egész pontosan 493). Ebben a 493 sorban benne vannak a vezérlő, sablon (HTML) illetve stíluslapok (CSS) fájlok sorai is. Ha nem használok sablon motort, ez a szám több lenne mint 1000-1500.

Az eredmények értelmezése (EREDMÉNY)

Ajánlások megfogalmazása (KÖVETKEZTETÉS)

Ha ittasan vezetett, most már tudja mennyit számít a józan ész. Ha cserben hagyta a sérülteket, az a lehető legemberibb tulajdonság eltiprása. Ha gyorsabban hajtott mint amennyit az adott tábla megengedett, akkor szabálysértést követett el. Ha szándékosan okozta a balesetet és/vagy sérüléseket, akkor bűntettet követett el.

A KRESZ mindenkire vonatkozik.

Az információ többletérték lehetőségének levezetése (VITA)

Szintén az óra kapcsán derült ki, hogy hála a csodás anyanyelvünk bonyolultságának, vannak olyan kérdések, amik félrevezetőek lennének, ha nem lenne ott a megfelelő információ. Utólag belegondolva, talán az összes kérdést újra lehetne fogalmazni, hogy még egyértelműbb legyen és ne legyen benne ellentmondás vagy bármi olyanra utaló szó, vagy szótöredék, ami félrevezetheti a felhasználót.

Röviden és tömören: teljesen nem felhasználóbarát.

Kapcsolódó, ill. konkurens megoldások, dokumentumok

Kapcsolódó rendszer van, csak még nem elérhető a Miaú weboldalon.

Dokumentumok

  • A jogszabály idetartozó része: PDF-ben (Adobe Reader), DOC-ban (Microsoft Word) vagy ODT-ben (OpenOffice Writer)
  • A kombinatorikai tér: PDF-ben (Adobe Reader), XLS-ben (Microsoft Excel) vagy ODS-ben (OpenOffice Calc)