├── .gitignore ├── topics ├── bi-spol-27 │ ├── gates.pdf │ ├── karnaugh.jpg │ └── bi-spol-27.tex ├── bi-wsi-si-09 │ ├── dip.png │ ├── isp.png │ ├── not.png │ ├── self.png │ └── super.png ├── bi-wsi-si-10 │ ├── null.png │ ├── strategy.png │ ├── double-dispatch.png │ └── inheritance-vs-delegation.png ├── bi-spol-06 │ └── image │ │ ├── DH.png │ │ ├── sha2.png │ │ ├── rsaDecrypt.png │ │ ├── rsaEncrypt.png │ │ ├── shaCompare.png │ │ ├── oneWayHashFunction.png │ │ └── digitalSubscription.png ├── bi-spol-04 │ └── images │ │ ├── graf.png │ │ ├── doplnek.png │ │ ├── jarnik.png │ │ ├── kruskal.png │ │ ├── topSort.png │ │ ├── dijkstra.png │ │ └── bellman-ford.png ├── bi-spol-05 │ └── images │ │ ├── avl1.png │ │ ├── avl2.png │ │ ├── bvs.png │ │ ├── BHMerge.png │ │ ├── binary-heap.png │ │ ├── hashRetizky.png │ │ ├── binominal-heap.png │ │ ├── binominal-tree.png │ │ └── hashOpenInsert.png ├── bi-spol-07 │ └── images │ │ ├── cbc.pdf │ │ ├── cfb.pdf │ │ ├── ctr.pdf │ │ ├── des.pdf │ │ ├── ecb.pdf │ │ ├── mac.pdf │ │ ├── ofb.pdf │ │ └── rc4.png ├── bi-spol-32 │ └── images │ │ ├── ind1.PNG │ │ ├── ind2.PNG │ │ ├── it1.PNG │ │ ├── it2.PNG │ │ ├── mt1.PNG │ │ ├── mt2.PNG │ │ ├── kuchar.PNG │ │ └── slozitost.png ├── bi-spol-34 │ └── images │ │ ├── roll.png │ │ ├── jed_lim.png │ │ ├── nor_lim.png │ │ ├── prubeh.png │ │ ├── tecna.png │ │ ├── derivace.png │ │ └── lagrange.png ├── bi-spol-35 │ └── images │ │ ├── inf.png │ │ ├── sup.png │ │ ├── plocha.png │ │ ├── integraly.png │ │ ├── fig_dolni_soucet.png │ │ ├── fig_horni_soucet.png │ │ └── fig_vypocet_plochy.png ├── bi-spol-10 │ ├── images │ │ └── state.pdf │ └── bi-spol-10.tex ├── bi-spol-11 │ ├── images │ │ ├── bTree.png │ │ ├── cluster.png │ │ └── views.png │ └── bi-spol-11.tex ├── bi-spol-16 │ └── images │ │ ├── stavy.png │ │ ├── thread1.png │ │ └── multitask.png ├── bi-spol-30 │ ├── images │ │ └── cycle.png │ └── bi-spol-30.tex ├── bi-spol-33 │ └── images │ │ └── primes.png ├── bi-wsi-si-02 │ └── images │ │ ├── MToN.png │ │ ├── isa.png │ │ ├── entita.png │ │ ├── oneToN.png │ │ ├── decoMToN.png │ │ ├── oneToNV2.png │ │ ├── oneToOne.png │ │ ├── oneToOneV2.png │ │ ├── weakEntity.png │ │ └── idenRelation.png ├── bi-wsi-si-15 │ ├── images │ │ ├── list.pdf │ │ ├── eval-tree.pdf │ │ ├── list-cdr.pdf │ │ ├── list-cons.pdf │ │ ├── list-empty.pdf │ │ └── list-inner.pdf │ └── bi-wsi-si-15.tex ├── bi-wsi-si-19 │ ├── images │ │ ├── state.png │ │ ├── adapter.png │ │ ├── builder.png │ │ ├── observer.png │ │ └── abstractFactory.png │ └── bi-wsi-si-19.tex ├── bi-spol-09 │ ├── images │ │ ├── RaExample.png │ │ ├── division.png │ │ └── halfConnection.png │ └── bi-spol-09.tex ├── bi-wsi-si-04 │ ├── images │ │ ├── exists.png │ │ ├── sqlJoin.png │ │ ├── unique.png │ │ └── agregation.png │ └── bi-wsi-si-04.tex ├── bi-wsi-si-22 │ ├── images │ │ └── vModel.png │ └── bi-wsi-si-22.tex ├── bi-wsi-si-27 │ ├── images │ │ ├── image1.png │ │ └── image2.png │ └── bi-wsi-si-27.tex ├── bi-wsi-si-28 │ ├── images │ │ ├── image1.png │ │ └── image2.png │ └── bi-wsi-si-28.tex ├── bi-wsi-si-29 │ ├── images │ │ ├── image1.png │ │ └── image2.png │ └── bi-wsi-si-29.tex ├── bi-spol-31 │ ├── images │ │ ├── entityState.png │ │ └── connectionTypes.png │ └── bi-spol-31.tex ├── bi-wsi-si-05 │ ├── ulmanns_triangle.png │ └── bi-wsi-si-05.tex ├── bi-wsi-si-06 │ ├── images │ │ ├── complete.png │ │ ├── disjoint.png │ │ └── type-categories.png │ └── bi-wsi-si-06.tex ├── bi-wsi-si-18 │ ├── images │ │ ├── akcni-uzly.png │ │ ├── ridici-uzly.png │ │ └── diagram-aktivit.png │ └── bi-wsi-si-18.tex ├── bi-spol-28 │ └── images │ │ ├── mem_hierarchie.png │ │ └── hw_architektura.png ├── bi-spol-01 │ └── images │ │ └── Chomsky_hierarchy.png ├── bi-spol-15 │ └── images │ │ └── logicalEvaluation.png ├── bi-wsi-si-20 │ ├── images │ │ ├── sekvencni-async.png │ │ ├── sekvencni-diagram.png │ │ ├── sekvencni-navratova.png │ │ └── sekvencni-vytvareni.png │ └── bi-wsi-si-20.tex ├── bi-spol-22 │ └── images │ │ ├── ADT_signature_axiom.png │ │ └── multidimensionalArray.png ├── bi-spol-23 │ └── images │ │ ├── TCP-IP-Architektura.png │ │ └── ISO-OSI-Architektura.png ├── bi-wsi-si-24 │ ├── images │ │ └── iterativeDevelopment.png │ └── bi-wsi-si-24.tex ├── bi-spol-29 │ └── bi-spol-29.tex ├── bi-wsi-si-07 │ └── bi-wsi-si-07.tex ├── bi-spol-18 │ └── bi-spol-18.tex ├── bi-wsi-si-23 │ └── bi-wsi-si-23.tex ├── bi-wsi-si-25 │ └── bi-wsi-si-25.tex ├── PI.md ├── bi-wsi-si-03 │ └── bi-wsi-si-03.tex ├── bi-spol-02 │ └── bi-spol-02.tex ├── WSI-SI.md ├── bi-wsi-si-08 │ └── bi-wsi-si-08.tex ├── bi-wsi-si-16 │ └── bi-wsi-si-16.tex ├── bi-wsi-si-30 │ └── bi-wsi-si-30.tex ├── bi-wsi-si-14 │ └── bi-wsi-si-14.tex ├── bi-wsi-si-13 │ └── bi-wsi-si-13.tex ├── bi-spol-08 │ └── bi-spol-08.tex ├── bi-spol-12 │ └── bi-spol-12.tex ├── bi-spol-36 │ └── bi-spol-36.tex ├── bi-wsi-si-26 │ └── bi-wsi-si-26.tex ├── bi-wsi-si-17 │ └── bi-wsi-si-17.tex ├── bi-wsi-si-01 │ └── bi-wsi-si-01.tex └── SPOL.md ├── dependencies ├── szz-code.sty └── szz-math.sty ├── README.md ├── szzclass.cls ├── Makefile └── example └── math.tex /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | 3 | *.swp 4 | 5 | .DS_Store -------------------------------------------------------------------------------- /topics/bi-spol-27/gates.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-27/gates.pdf -------------------------------------------------------------------------------- /topics/bi-wsi-si-09/dip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-09/dip.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-09/isp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-09/isp.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-09/not.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-09/not.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-09/self.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-09/self.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-10/null.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-10/null.png -------------------------------------------------------------------------------- /topics/bi-spol-06/image/DH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-06/image/DH.png -------------------------------------------------------------------------------- /topics/bi-spol-27/karnaugh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-27/karnaugh.jpg -------------------------------------------------------------------------------- /topics/bi-wsi-si-09/super.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-09/super.png -------------------------------------------------------------------------------- /topics/bi-spol-04/images/graf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-04/images/graf.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/avl1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/avl1.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/avl2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/avl2.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/bvs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/bvs.png -------------------------------------------------------------------------------- /topics/bi-spol-06/image/sha2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-06/image/sha2.png -------------------------------------------------------------------------------- /topics/bi-spol-07/images/cbc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-07/images/cbc.pdf -------------------------------------------------------------------------------- /topics/bi-spol-07/images/cfb.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-07/images/cfb.pdf -------------------------------------------------------------------------------- /topics/bi-spol-07/images/ctr.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-07/images/ctr.pdf -------------------------------------------------------------------------------- /topics/bi-spol-07/images/des.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-07/images/des.pdf -------------------------------------------------------------------------------- /topics/bi-spol-07/images/ecb.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-07/images/ecb.pdf -------------------------------------------------------------------------------- /topics/bi-spol-07/images/mac.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-07/images/mac.pdf -------------------------------------------------------------------------------- /topics/bi-spol-07/images/ofb.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-07/images/ofb.pdf -------------------------------------------------------------------------------- /topics/bi-spol-07/images/rc4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-07/images/rc4.png -------------------------------------------------------------------------------- /topics/bi-spol-32/images/ind1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-32/images/ind1.PNG -------------------------------------------------------------------------------- /topics/bi-spol-32/images/ind2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-32/images/ind2.PNG -------------------------------------------------------------------------------- /topics/bi-spol-32/images/it1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-32/images/it1.PNG -------------------------------------------------------------------------------- /topics/bi-spol-32/images/it2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-32/images/it2.PNG -------------------------------------------------------------------------------- /topics/bi-spol-32/images/mt1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-32/images/mt1.PNG -------------------------------------------------------------------------------- /topics/bi-spol-32/images/mt2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-32/images/mt2.PNG -------------------------------------------------------------------------------- /topics/bi-spol-34/images/roll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-34/images/roll.png -------------------------------------------------------------------------------- /topics/bi-spol-35/images/inf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-35/images/inf.png -------------------------------------------------------------------------------- /topics/bi-spol-35/images/sup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-35/images/sup.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-10/strategy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-10/strategy.png -------------------------------------------------------------------------------- /topics/bi-spol-04/images/doplnek.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-04/images/doplnek.png -------------------------------------------------------------------------------- /topics/bi-spol-04/images/jarnik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-04/images/jarnik.png -------------------------------------------------------------------------------- /topics/bi-spol-04/images/kruskal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-04/images/kruskal.png -------------------------------------------------------------------------------- /topics/bi-spol-04/images/topSort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-04/images/topSort.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/BHMerge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/BHMerge.png -------------------------------------------------------------------------------- /topics/bi-spol-10/images/state.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-10/images/state.pdf -------------------------------------------------------------------------------- /topics/bi-spol-11/images/bTree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-11/images/bTree.png -------------------------------------------------------------------------------- /topics/bi-spol-11/images/cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-11/images/cluster.png -------------------------------------------------------------------------------- /topics/bi-spol-11/images/views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-11/images/views.png -------------------------------------------------------------------------------- /topics/bi-spol-16/images/stavy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-16/images/stavy.png -------------------------------------------------------------------------------- /topics/bi-spol-16/images/thread1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-16/images/thread1.png -------------------------------------------------------------------------------- /topics/bi-spol-30/images/cycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-30/images/cycle.png -------------------------------------------------------------------------------- /topics/bi-spol-32/images/kuchar.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-32/images/kuchar.PNG -------------------------------------------------------------------------------- /topics/bi-spol-33/images/primes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-33/images/primes.png -------------------------------------------------------------------------------- /topics/bi-spol-34/images/jed_lim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-34/images/jed_lim.png -------------------------------------------------------------------------------- /topics/bi-spol-34/images/nor_lim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-34/images/nor_lim.png -------------------------------------------------------------------------------- /topics/bi-spol-34/images/prubeh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-34/images/prubeh.png -------------------------------------------------------------------------------- /topics/bi-spol-34/images/tecna.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-34/images/tecna.png -------------------------------------------------------------------------------- /topics/bi-spol-35/images/plocha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-35/images/plocha.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/MToN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/MToN.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/isa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/isa.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-15/images/list.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-15/images/list.pdf -------------------------------------------------------------------------------- /topics/bi-wsi-si-19/images/state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-19/images/state.png -------------------------------------------------------------------------------- /topics/bi-spol-04/images/dijkstra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-04/images/dijkstra.png -------------------------------------------------------------------------------- /topics/bi-spol-06/image/rsaDecrypt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-06/image/rsaDecrypt.png -------------------------------------------------------------------------------- /topics/bi-spol-06/image/rsaEncrypt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-06/image/rsaEncrypt.png -------------------------------------------------------------------------------- /topics/bi-spol-06/image/shaCompare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-06/image/shaCompare.png -------------------------------------------------------------------------------- /topics/bi-spol-09/images/RaExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-09/images/RaExample.png -------------------------------------------------------------------------------- /topics/bi-spol-09/images/division.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-09/images/division.png -------------------------------------------------------------------------------- /topics/bi-spol-16/images/multitask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-16/images/multitask.png -------------------------------------------------------------------------------- /topics/bi-spol-32/images/slozitost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-32/images/slozitost.png -------------------------------------------------------------------------------- /topics/bi-spol-34/images/derivace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-34/images/derivace.png -------------------------------------------------------------------------------- /topics/bi-spol-34/images/lagrange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-34/images/lagrange.png -------------------------------------------------------------------------------- /topics/bi-spol-35/images/integraly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-35/images/integraly.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/entita.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/entita.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/oneToN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/oneToN.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-04/images/exists.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-04/images/exists.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-04/images/sqlJoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-04/images/sqlJoin.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-04/images/unique.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-04/images/unique.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-19/images/adapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-19/images/adapter.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-19/images/builder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-19/images/builder.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-22/images/vModel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-22/images/vModel.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-27/images/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-27/images/image1.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-27/images/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-27/images/image2.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-28/images/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-28/images/image1.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-28/images/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-28/images/image2.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-29/images/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-29/images/image1.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-29/images/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-29/images/image2.png -------------------------------------------------------------------------------- /topics/bi-spol-04/images/bellman-ford.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-04/images/bellman-ford.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/binary-heap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/binary-heap.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/hashRetizky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/hashRetizky.png -------------------------------------------------------------------------------- /topics/bi-spol-31/images/entityState.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-31/images/entityState.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/decoMToN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/decoMToN.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/oneToNV2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/oneToNV2.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/oneToOne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/oneToOne.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/oneToOneV2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/oneToOneV2.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/weakEntity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/weakEntity.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-04/images/agregation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-04/images/agregation.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-05/ulmanns_triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-05/ulmanns_triangle.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-06/images/complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-06/images/complete.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-06/images/disjoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-06/images/disjoint.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-10/double-dispatch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-10/double-dispatch.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-15/images/eval-tree.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-15/images/eval-tree.pdf -------------------------------------------------------------------------------- /topics/bi-wsi-si-15/images/list-cdr.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-15/images/list-cdr.pdf -------------------------------------------------------------------------------- /topics/bi-wsi-si-15/images/list-cons.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-15/images/list-cons.pdf -------------------------------------------------------------------------------- /topics/bi-wsi-si-15/images/list-empty.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-15/images/list-empty.pdf -------------------------------------------------------------------------------- /topics/bi-wsi-si-15/images/list-inner.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-15/images/list-inner.pdf -------------------------------------------------------------------------------- /topics/bi-wsi-si-18/images/akcni-uzly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-18/images/akcni-uzly.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-19/images/observer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-19/images/observer.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/binominal-heap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/binominal-heap.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/binominal-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/binominal-tree.png -------------------------------------------------------------------------------- /topics/bi-spol-05/images/hashOpenInsert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-05/images/hashOpenInsert.png -------------------------------------------------------------------------------- /topics/bi-spol-09/images/halfConnection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-09/images/halfConnection.png -------------------------------------------------------------------------------- /topics/bi-spol-28/images/mem_hierarchie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-28/images/mem_hierarchie.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-02/images/idenRelation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-02/images/idenRelation.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-18/images/ridici-uzly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-18/images/ridici-uzly.png -------------------------------------------------------------------------------- /topics/bi-spol-01/images/Chomsky_hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-01/images/Chomsky_hierarchy.png -------------------------------------------------------------------------------- /topics/bi-spol-06/image/oneWayHashFunction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-06/image/oneWayHashFunction.png -------------------------------------------------------------------------------- /topics/bi-spol-15/images/logicalEvaluation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-15/images/logicalEvaluation.png -------------------------------------------------------------------------------- /topics/bi-spol-28/images/hw_architektura.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-28/images/hw_architektura.png -------------------------------------------------------------------------------- /topics/bi-spol-31/images/connectionTypes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-31/images/connectionTypes.png -------------------------------------------------------------------------------- /topics/bi-spol-35/images/fig_dolni_soucet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-35/images/fig_dolni_soucet.png -------------------------------------------------------------------------------- /topics/bi-spol-35/images/fig_horni_soucet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-35/images/fig_horni_soucet.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-06/images/type-categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-06/images/type-categories.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-18/images/diagram-aktivit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-18/images/diagram-aktivit.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-19/images/abstractFactory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-19/images/abstractFactory.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-20/images/sekvencni-async.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-20/images/sekvencni-async.png -------------------------------------------------------------------------------- /topics/bi-spol-06/image/digitalSubscription.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-06/image/digitalSubscription.png -------------------------------------------------------------------------------- /topics/bi-spol-22/images/ADT_signature_axiom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-22/images/ADT_signature_axiom.png -------------------------------------------------------------------------------- /topics/bi-spol-23/images/TCP-IP-Architektura.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-23/images/TCP-IP-Architektura.png -------------------------------------------------------------------------------- /topics/bi-spol-35/images/fig_vypocet_plochy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-35/images/fig_vypocet_plochy.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-20/images/sekvencni-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-20/images/sekvencni-diagram.png -------------------------------------------------------------------------------- /topics/bi-spol-22/images/multidimensionalArray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-22/images/multidimensionalArray.png -------------------------------------------------------------------------------- /topics/bi-spol-23/images/ISO-OSI-Architektura.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-spol-23/images/ISO-OSI-Architektura.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-10/inheritance-vs-delegation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-10/inheritance-vs-delegation.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-20/images/sekvencni-navratova.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-20/images/sekvencni-navratova.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-20/images/sekvencni-vytvareni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-20/images/sekvencni-vytvareni.png -------------------------------------------------------------------------------- /topics/bi-wsi-si-24/images/iterativeDevelopment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fit-szz/szz-bootcamp/HEAD/topics/bi-wsi-si-24/images/iterativeDevelopment.png -------------------------------------------------------------------------------- /dependencies/szz-code.sty: -------------------------------------------------------------------------------- 1 | \NeedsTeXFormat{LaTeX2e} 2 | \ProvidesPackage{../szz-code}[2019/05/01 SZZ Code package] 3 | 4 | \RequirePackage[outputdir=build]{minted} 5 | \usemintedstyle{vs} 6 | 7 | % \RequirePackage{fontspec} 8 | % \setmonofont[Scale=MatchLowercase]{Hasklig} 9 | % \setmonofont[Path=../dependencies/,BoldFont = Hasklig-Bold.otf]{Hasklig-Regular.otf} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > :warning: Otázky zpracovávejte do větve `markdown` (do souborů .mdx), která je napojená na https://fit-szz.github.io/szz-bootcamp/. 2 | 3 | # SSZ 4 | 5 | ## Jak přidat otázku 6 | *oznaceni-otazky nahradit za kód otázky malými písmeny* 7 | 8 | 1) Do .md souboru zapsat, kterou otázku zpracováváte. 9 | 2) Zdrojáky hodit do adresáře topics/oznaceni-otazky. Hlavní tex soubor by se měl jmenovat `oznaceni-otazky.tex`. 10 | -------------------------------------------------------------------------------- /topics/bi-spol-29/bi-spol-29.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | 4 | \title{Kódy pro zobrazení čísel se znaménkem a realizace aritmetických operací (paralelní sčítačka/odčítačka, realizace aritmetických posuvů, dekodér, multiplexor, čítač). Reprezentace čísel v pohyblivé řádové čárce.} 5 | 6 | \renewcommand*\contentsname{Obsah} 7 | \author{Václav Kubernát} 8 | 9 | \begin{document} 10 | \maketitle 11 | 12 | \tableofcontents 13 | \newpage 14 | 15 | 16 | \end{document} 17 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-07/bi-wsi-si-07.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage[czech]{babel} 4 | 5 | \subject{KOM} 6 | \code{BI-SPOL-7} 7 | \topic{Klíčové pojmy inženýrství podniků a metoda DEMO} 8 | 9 | \begin{document} 10 | 11 | \tableofcontents 12 | \newpage 13 | 14 | \section{Klíčové pojmy inženýrství podniků} 15 | WTF, hodně štěstí, kdo to bude zpracovávat. 16 | 17 | \section{Metoda DEMO} 18 | Použít \url{https://onedrive.live.com/view.aspx?resid=25F963FFF5A74DC6!588008&ithint=file%2cdocx&authkey=!ABkjjjkKEU9Jt3I}. 19 | \end{document} 20 | -------------------------------------------------------------------------------- /szzclass.cls: -------------------------------------------------------------------------------- 1 | \NeedsTeXFormat{LaTeX2e} 2 | \ProvidesClass{szzclass}[2019/05/17 SZZ class] 3 | \LoadClass{article} 4 | \RequirePackage{todonotes} 5 | \RequirePackage[parfill]{parskip} 6 | \RequirePackage[margin=2.8cm]{geometry} 7 | \usepackage{hyperref} 8 | 9 | % Hlavička 10 | \newcommand{\subject}[1]{\def\thesubject{#1}} 11 | \newcommand{\code}[1]{\def\thecode{#1}} 12 | \newcommand{\topic}[1]{\def\thetopic{#1}} 13 | 14 | \AtBeginDocument{ 15 | \@ifundefined{thesubject}{}{ 16 | \begin{center} 17 | \Large \textbf{\thesubject~--~\thecode}\\ 18 | \Large \thetopic 19 | \end{center} 20 | } 21 | } 22 | 23 | \renewcommand*\contentsname{Obsah} 24 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | default_deps=dependencies/* szzclass.cls | build 2 | TOPPIC=$(filter-out $@,$(MAKECMDGOALS)) 3 | 4 | # The wildcard function call expands the argument the same way as the shell 5 | # does. The patsubst function replaces `topics/bi-something` with 6 | # `build/bi-something.pdf`. 7 | all: $(patsubst topics/%,build/%.pdf,$(wildcard topics/bi-*)) 8 | 9 | # This is an implicit rule for all the subjects: 10 | # - `%` in the prerequisites matches with as many characters as needed (the 11 | # subject name) 12 | # - `$*` in the recipe expands to what was matched with % 13 | # Unfortunately, the `topics/%/*` wildcard isn't recursive, so if you change 14 | # something in a subdirectory of a subject (an image for example), you'll have 15 | # to recompile (the solution is to not use subdirectories). 16 | build/%.pdf: topics/%/* $(default_deps) 17 | # Latex build process is pretty fragile, so let's remove everything 18 | # before we start the build. 19 | rm -rf build/*$** 20 | xelatex -shell-escape -output-directory=build topics/$*/$*.tex 21 | xelatex -shell-escape -output-directory=build topics/$*/$*.tex 22 | 23 | build: 24 | mkdir build 25 | 26 | clean: 27 | rm -rf build 28 | 29 | new: 30 | mkdir topics/${TOPPIC} 31 | touch topics/${TOPPIC}/${TOPPIC}.tex 32 | mkdir topics/${TOPPIC}/images 33 | 34 | 35 | example: example/math.tex 36 | xelatex -shell-escape -output-directory=build example/math.tex 37 | 38 | clean/%: 39 | rm -rf build/*$** 40 | -------------------------------------------------------------------------------- /dependencies/szz-math.sty: -------------------------------------------------------------------------------- 1 | \NeedsTeXFormat{LaTeX2e} 2 | \ProvidesPackage{../szz-math}[2019/05/01 SZZ Math package] 3 | 4 | \RequirePackage{amsmath} 5 | \RequirePackage{amsthm} 6 | \RequirePackage{amsfonts} 7 | \RequirePackage{mathtools} 8 | 9 | % čára přes písmenko nahoře - \overline{x} 10 | % "svorka" dole - \underbrace{1 + 2}_{= 3} 11 | % IP nad rovnítkem - \IP{=} 12 | % krok (třeba indukční nebo závěr) - \step{Indukční krok} 13 | 14 | % Zarovnanej příklad 15 | % \begin{align*} 16 | % x = & 1+(2+3) + 0\cdot 12 & \\ 17 | % \IP{=} & 1+(2+3) = & \describe{sečteme $(2+3)$} \\ 18 | % = & 1+5 \\ 19 | % = & 6 20 | % \end{align*} 21 | 22 | 23 | \newcommand{\describe}[1]{\text{\textit{(#1)}}} 24 | % ekvivalentní 25 | \newcommand{\equi}{\Leftrightarrow} 26 | % krok v indukci 27 | \newcommand{\step}[1]{\textit{\textbf{#1}:}} 28 | % Indukční předpoklad (místo rovnítka) 29 | \newcommand*\IP[1]{\stackrel{\mathmakebox[\widthof{=}]{\mathrm{IP}}}{#1}} 30 | % zkrakta pro bigO 31 | \newcommand{\bigO}{\mathcal{O}} 32 | % zkrakta pro bigP 33 | \newcommand{\bigP}{\mathcal{P}} 34 | 35 | 36 | \newtheorem{lemma}{Lemma} 37 | \newtheorem{theorem}[lemma]{Věta} 38 | \newtheorem{corollary}[lemma]{Důsledek} 39 | \newtheorem{definition}[lemma]{Definice} 40 | \newtheorem{observation}[lemma]{Pozorování} 41 | \newtheorem{proposition}[lemma]{Tvrzení} 42 | 43 | \usepackage{amsmath} 44 | \makeatletter 45 | \renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{% 46 | \hskip -\arraycolsep 47 | \let\@ifnextchar\new@ifnextchar 48 | \array{#1}} 49 | \makeatother -------------------------------------------------------------------------------- /example/math.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage{dependencies/szz-math} 3 | 4 | \begin{document} 5 | 6 | \section{Úvod} 7 | Toto je pouze ukázka matematiky Latexu. Upozorňuji, že rovnice nemusí dávat smysl. 8 | 9 | \section{Test} 10 | $$ 11 | x_1,\dots, x_n \in\mathbb{R} 12 | $$ 13 | $$ 14 | \bigO(n^2)=3n+2^n 15 | $$ 16 | 17 | \section{Zarovnané rovnice} 18 | \begin{align*} 19 | x & \equiv 5 \pmod{6} \\ 20 | x & \equiv 3 \pmod{10} \describe{i s poznámkou} \\ 21 | x & \equiv 8 \pmod{15} 22 | \end{align*} 23 | 24 | \begin{center} 25 | $x \equiv 5~(\text{mod } 6)$\linebreak 26 | $x \equiv 3~(\text{mod } 10)$\linebreak 27 | $x \equiv 8~(\text{mod } 15)$ 28 | \end{center} 29 | 30 | 31 | \section{Delší výpočty} 32 | Svůj výsledek ověřte matematickou indukcí. 33 | \begin{equation*} 34 | \begin{split} 35 | s_n = & 1\cdot2 + 3\cdot4 + 5\cdot6 + \cdots + (2n-1) \cdot 2n = \\ 36 | = & \sum\limits_{i=1}^{n} (2i-1)\cdot 2i = 37 | \sum\limits_{i=1}^{n} (4i^2-2i) = 38 | \sum\limits_{i=1}^{n} 4i^2 - \sum\limits_{i=1}^{n} 2i = 39 | 4\sum\limits_{i=1}^{n} i^2 - 2\sum\limits_{i=1}^{n} i = \\ 40 | = & 4 \cdot \frac{n(n+1)(2n+1)}{6} - 2 \cdot \frac{n(n+1)}{2} = 41 | n(n+1) (2 \cdot \frac{2n+1}{3} - 1) = 42 | n(n+1) \frac{4n-1}{3} \\ 43 | = & \frac{1}{3} \cdot n(n+1)(4n-1) 44 | \end{split} 45 | \end{equation*} 46 | 47 | \step{Základní krok} Dokážeme platnost tvrzení pro $n = 1$: 48 | $$ 49 | \frac{1}{3} \cdot (1+1)(4-1) = \frac{1}{3} \cdot 2 \cdot 3 = 2. 50 | $$ 51 | Tvrzení v základním kroku platí. 52 | 53 | \step{Indukční krok} Dokážeme $V(n) \Rightarrow V(n+1)$ pro $n\geq1$: 54 | \begin{align*} 55 | s_{n+1} = & \underbrace{1\cdot2 + 3\cdot4 + 5\cdot6 + \cdots + (2n-1) \cdot 2n}_{s_n} + (2n+1) \cdot (2n+2) = & \\ 56 | \IP{=} & \frac{1}{3} \cdot n(n+1)(4n-1) + (2n+1) \cdot (2n+2) = & \describe{vytkneme $3$} \\ 57 | = & \frac{n(n+1)(4n-1) + 3 \cdot (2n+1) \cdot (2n+2)}{3} = & \describe{vytkneme $n+1$} \\ 58 | = & \frac{(n+1)(n(4n-1) + 12n + 6)}{3} = & \describe{upravíme druhou část zlomku} \\ 59 | = & \frac{(n+1)(4n^2 + 11n + 6)}{3} = & \\ 60 | = & \frac{(n+1)(n+2)(4n+3)}{3} 61 | \end{align*} 62 | \step{Závěr} Vše je zřejmé. \qed 63 | 64 | \end{document} -------------------------------------------------------------------------------- /topics/bi-wsi-si-05/bi-wsi-si-05.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | \topic{Konceptuální modelování, jeho význam, základní pojmy a způsoby modelování reálného světa.} 4 | \code{BI-WSI-SI-05} 5 | \subject{KOM} 6 | 7 | \begin{document} 8 | 9 | \tableofcontents 10 | \newpage 11 | 12 | \section{Konceptuální modelování} 13 | 14 | Konceptuální modelování slouží k popisu reality a pochopení domény, kterou modelujeme. 15 | Pomocí konceptuálního modelování může zjednodušit a navrhnout automatizaci určitých úkonů. 16 | Z konceptuálního modelování lze poté přejít již k samotnému návrhu aplikace, například OntoUML je nástroj konceptálního modelování, 17 | který lze jednoduše přeložit na UML (Unified Modeling Language). Díky tomu může analytik připravit v OntoUML model, který si 18 | poté programátor převede do UML a na základě kterého napíše danou aplikaci. 19 | 20 | \subsection{Pojmy} 21 | 22 | \begin{itemize} 23 | \item Abstrakce 24 | Zjednodušení od nepodstatných detailů. Pracujeme s koncepty namísto skutečných věcí (konceptualizace). 25 | Koncepty reprezentuje dohodnutými symboly, které tvoří jazyk. 26 | \item Jazyk 27 | Jazyk může být textový, grafický nebo smíšený. 28 | \item Formální konceptualizace 29 | Oproti neformálním konceptuálním modelům, které jsou dnes běžně používané, mají formální modely 30 | výhody v přesnosti a možnosti je validovat a simulovat postup, který reprezentují, což zvyšuje jejich kvalitu. 31 | Tyto modely lze poté transformovat na návrhové modely (OntoUML -> UML) nebo rovnou přenést do implementace. 32 | \item Ulmannův trojúhelník 33 | Symbolizuje vztah mezi věcí, realitou a konceptualizací. 34 | \begin{figure}[ht] 35 | \centering 36 | \includegraphics[width=0.5\textwidth]{topics/bi-wsi-si-05/ulmanns_triangle.png} 37 | \caption{Ulmannův trojúhelník} 38 | \end{figure} 39 | \end{itemize} 40 | 41 | \subsection{OntoUML} 42 | 43 | OntoUML je jedním z možných nástrojů konceptuálního modelování pro popisování reálného světa. Narozdíl od UML nepopisuje třídy a objekty 44 | z programátorského hlediska, místo toho definuje objekty podle jejich vlastností a stavů. 45 | Součástí OntoUML je Unified Foundational Ontology (UFO), ta se dělá na tři části: 46 | \begin{enumerate} 47 | \item UFO-A: strukturální aspekty reality - objekty, jejich typy, podčásti a role (v OntoUML se jedná o sortály) 48 | \item UFO-B: dynamické aspekty - události, jejich části a vazby mezi nimi (non-sortály) 49 | \item UFO-C: sociální aspekty - cíle, vztahy, stavy 50 | \end{enumerate} 51 | 52 | Používá modální logiku (rozšíření predikátové logiky): 53 | \begin{itemize} 54 | \item existenční kvantifikátor 55 | \item univerzální kvantifikátor 56 | \item nutnost - ve všech světech platí 57 | \item možnost - v některém světě platí 58 | \end{itemize} 59 | 60 | \subsection{DEMO} 61 | 62 | \end{document} 63 | -------------------------------------------------------------------------------- /topics/bi-spol-18/bi-spol-18.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{url} 3 | 4 | \subject{PA1} 5 | \code{BI-SPOL-18} 6 | \topic{Datové typy v programovacích jazycích. Staticky a dynamicky alokované proměnné, spojové seznamy. Modulární programování, procedury a funkce, vstupní a výstupní parametry. Překladač, linker, debugger.} 7 | 8 | \begin{document} 9 | 10 | \tableofcontents 11 | \newpage 12 | 13 | \section{Datové typy v programovacích jazycích.} 14 | \begin{description} 15 | \item[Číselné datové typy] - signed/unsigned; různé velikosti; little/big endian 16 | \begin{itemize} 17 | \item char 18 | \item integer 19 | \item float 20 | \item double 21 | \end{itemize} 22 | \item[String] - pole charů 23 | \item[Boolean] 24 | \item[Class, struct] 25 | \item[NULL, void] 26 | \item[enum, typedef] 27 | \item[array] 28 | \item[Ukazatele, reference] 29 | \end{description} 30 | 31 | \section{Staticky a dynamicky alokované proměnné.} 32 | \begin{description} 33 | \item[staticky] - definované při kompilaci, alokované na zásobníku 34 | \item[dynamicky] - alokované při běhu, programátor se musí o alokovanou paměť starat (v případě C, malloc, free). 35 | \end{description} 36 | 37 | \subsection{Spojové seznamy} 38 | Dynamicky alokovaná struktura. Každý prvek má nějakou hodnotu a ukazatele na další prvky. Cyklický, jednosměrný, obousměrný. 39 | 40 | \section{Modulární programování} 41 | Jednotlivé části se dají vyměňovat. Oddělení zodpovědnosti, zlepšení udržovatelnosti. 42 | \subsection{Procedury a funkce, vstupní a výstupní parametry.} 43 | Procedury jsou vesměs funkce bez návratové hodnoty. Vstupní parametry mají svůj typ, název a mohou mít defaultní hodnotu. Hodnoty parametrů se při volání funkce kopírují. 44 | 45 | \section{Překladač} 46 | \begin{itemize} 47 | \item kompilátor 48 | \item slouží k překladu vyššího jazyka do jazyka nižšího 49 | \item nejčastěji překládá zdrojový kód do strojového kódu 50 | \item vzniká strojový kód s neřešenými referencemi mezi moduly – objektový soubor 51 | \item Skladá se ze dvou častí: 52 | \begin{itemize} 53 | \item Front-end – parsuje zdrojový kód do vnítřní reprezentace kompilátoru. Tato část závisí na programovácím jazyce. 54 | \item Back-end – překladá vnítřní reprezentace do strojového kódu. Tato část zavísí na cílové architektuře (Intel, AVR, atd.). 55 | \end{itemize} 56 | \end{itemize} 57 | \subsection{Linker} 58 | \begin{itemize} 59 | \item řeší reference mezi objektovými soubory a knihovnami 60 | \item slouži k propojení zkompilovaných modulů 61 | \item slouží k sestavení samostatně přeložených modulů a knihoven do funkčního celku 62 | \item jeho výstupem je spustitelný soubor 63 | \end{itemize} 64 | \subsection{Debugger.} 65 | \begin{itemize} 66 | \item nástroj pro ladění kódu a hledání chyb v programu 67 | \item používá se pro usnadnění pochopení, jak program funguje 68 | \end{itemize} 69 | 70 | \url{http://www.fit.vutbr.cz/~martinek/clang/gcc.html.} 71 | \end{document} 72 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-04/bi-wsi-si-04.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{DBS} 7 | \code{BI-WSI-SI-04} 8 | \topic{Pokročilé principy dotazování v SQL: agregace, vnější spojení, vnořené dotazy, všeobecná kvantifikace.} 9 | \providecommand{\tightlist}{% 10 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 11 | 12 | \begin{document} 13 | \tableofcontents 14 | \newpage 15 | 16 | \section{Agregace} 17 | Výpočet napříč skupinou zdrojových řádků. Syntax: 18 | \begin{itemize} 19 | \item agregační\_funkce({\underline{ALL}|DISTINCT} sloupec | vyraz) 20 | \begin{itemize} 21 | \item COUNT, SUM, MAX, MIN, AVG\dots 22 | \item COUNT($\oslash$) = 0 23 | \end{itemize} 24 | \end{itemize} 25 | \begin{figure}[h!] 26 | \centering 27 | \includegraphics[width = 0.8 \textwidth]{topics/bi-wsi-si-04/images/agregation.png} 28 | \caption{Úkázka agregační funkce} 29 | \end{figure} 30 | Pořadí vyhodnocení: 31 | \begin{itemize} 32 | \item zdroj - from 33 | \item selekce - where 34 | \item seskupení - group by 35 | \item agregační funkce 36 | \item selekce na výsledky agregační funkce - having 37 | \item řazení výsledků - order by 38 | \end{itemize} 39 | \section{Vnořené dotazy} 40 | Dělí se na vztažné a nevztažné. 41 | \begin{itemize} 42 | \item vztažné - použivají referenci na nadřazený dotazování (většinou časově náročnější) 43 | \item nevztažné - jedná se o nezávislý poddotaz, který nemá vztah s nadřazeným 44 | \end{itemize} 45 | \section{Pohledy - view} 46 | \begin{itemize} 47 | \item pohled je virtuální relace 48 | \item je uložen ve formě SELECT příkazu 49 | \item z hlediska dotazování zaměnitelný s tabulkou 50 | \item nepřinášejí výkonové zrychlení - k tomu lze použít Materialized views 51 | \end{itemize} 52 | 53 | \section{Vnější spojení} 54 | Vnější spojení (outer join) - normální spojení (inner join) + lefá/pravá/obě (left/right/join). Chybějící sloupce jsou doplněny 55 | hodnotou NULL. 56 | \newline 57 | anti-join - redukce n-tic relace za ty, které nejsou spojitelné s žádnou n-ticí druhé relace 58 | \begin{figure}[h!] 59 | \centering 60 | \includegraphics[width = 1 \textwidth]{topics/bi-wsi-si-04/images/sqlJoin.png} 61 | \caption{Přehled join příkazů} 62 | \end{figure} 63 | 64 | \section{Kvantifikátory} 65 | Existenční (exists / not exists) vs všeobecný (není přímo implementován) 66 | \newline 67 | Exists: 68 | \begin{itemize} 69 | \item nezáleží na tom, co se vybere ve vnořeném selectu 70 | \end{itemize} 71 | \begin{figure}[h!] 72 | \centering 73 | \includegraphics[width = 0.6 \textwidth]{topics/bi-wsi-si-04/images/exists.png} 74 | \caption{Úkázka exists} 75 | \end{figure} 76 | \begin{figure}[h!] 77 | \centering 78 | \includegraphics[width = 0.6 \textwidth]{topics/bi-wsi-si-04/images/unique.png} 79 | \caption{Úkázka unique} 80 | \end{figure} 81 | \begin{itemize} 82 | \item unique při vrácení prázdné množiny vrací true 83 | \item exists vrací false 84 | \end{itemize} 85 | \end{document} -------------------------------------------------------------------------------- /topics/bi-wsi-si-23/bi-wsi-si-23.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{SI2} 7 | \code{BI-WSI-SI-23} 8 | \topic{Softwarový proces a jeho zlepšování: standardy, základní model SPI (software process improvement) a přístupy (prescriptive, inductive, best practices), proces organizace, projektu, jedince a souvislosti.} 9 | 10 | \providecommand{\tightlist}{% 11 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 12 | 13 | \begin{document} 14 | \tableofcontents 15 | \newpage 16 | 17 | \section{Softwarový proces} 18 | Množina aktivit potřebných k vývoji SW. Vždy je potřeba udělat: 19 | \begin{itemize} 20 | \item specifikaci - co bude systém dělat 21 | \item architekrturu a design - jak a z čeho se systém bude skládat 22 | \item implementace - vlastní výroba systému 23 | \item validace - ověření, že systém dělá co má 24 | \item další vývoj - úpravy systému na základě (měnících se/dalších) požadavků 25 | \end{itemize} 26 | 27 | \subsection{Modely SW procesu} 28 | \begin{itemize} 29 | \item plánovaný SW proces (plan-driven) 30 | \begin{itemize} 31 | \item waterfall 32 | \item iterative 33 | \end{itemize} 34 | \item agilní SW proces 35 | \begin{itemize} 36 | \item scrum 37 | \item XP 38 | \end{itemize} 39 | \end{itemize} 40 | \section{Zlepšování} 41 | Provádí se pro zvýšení kvality softwaru, snížení nákladů nebo urychlit proces vývoje. 42 | \newline 43 | Zlepšení procesů = cyklický proces: 44 | \begin{itemize} 45 | \item měření 46 | \item analýza 47 | \item změna 48 | \end{itemize} 49 | \subsection{PDCA model} 50 | Jedná se o plán, který navrhuje jakým způsoveb řešit zlepšení/opravu systému. 51 | \begin{itemize} 52 | \item plan 53 | \begin{itemize} 54 | \item identifikovat problém 55 | \item navrhnout řešení 56 | \item naplánovat změny 57 | \end{itemize} 58 | \item do - otestovat řešení 59 | \item check - zhodnotit výslekdy testu 60 | \item act - rozpracovat konečné řešení 61 | \end{itemize} 62 | \section{Zralost procesu} 63 | Zavedení optimálních metod SW inženýrství do procestu vývoje. Úroveň zralosti je odrážena použitím optimálních technických a manažerských postupů. 64 | V jednotlivých krocích za sebou: 65 | \begin{itemize} 66 | \item initial 67 | \item repeatable - disciplinovaný proces 68 | \item defined - konzistentní 69 | \item managed - kontrolovaný a udržovaný 70 | \item optimizing - zaměření se na zlepšení 71 | \end{itemize} 72 | Základní varianty se rozdělují na systematický/dlouhodobý přístup (ISO, CMM - perspektivní vs SEL/NASA - induktivní) a best practices. 73 | \newline 74 | Perspektivní - popisují, jak by měl systém vypadat. Aplikují zpravidla změny, které se osvědčili v jiných organizacích nebo oprimální SW. procesy. 75 | \newline 76 | Induktivní - analýza současného stavu 77 | \begin{itemize} 78 | \item zamezení minulých problémů 79 | \item opakování minulých úspěchů 80 | \end{itemize} 81 | Best practices - použití především osvědčených praktik (přímo použitelné strategie, techniky a praktiky). 82 | \end{document} -------------------------------------------------------------------------------- /topics/bi-spol-27/bi-spol-27.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage[czech]{babel} 3 | \usepackage{hyperref} 4 | 5 | \subject{SAP} 6 | \code{BI-SPOL-27} 7 | \topic{Kombinační a sekvenční logické obvody (Mealy, Moore), popis a možnosti implementace na úrovni hradel. Minimalizace vyjádření logické funkce (s využitím map).} 8 | 9 | \begin{document} 10 | 11 | \tableofcontents 12 | \newpage 13 | 14 | \section{Kombinační a sekvenční logické obvody (Mealy, Moore)} 15 | \subsection{Kombinační} 16 | Výstup je dán kombinací vstupů, nezáleží na stavu. \\ 17 | Matematický model -- logická funkce. 18 | \subsection{Sekvenční} 19 | Výstup závisí na posloupnosti vstupů, realizuje se zpětnými vazbami. \\ 20 | Matematický model -- konečný automat. 21 | \begin{description} 22 | \item[asynchronní] bez hodinového vstupu 23 | \item[synchronní] s hodinovým vstupem 24 | \end{description} 25 | 26 | \subsection{Moore} 27 | Reaguje na vstup až při přechodu do dalšího stavu. Výstup je v uzlech. 28 | 29 | \subsection{Mealy} 30 | Reaguje na vstup ihned. Výstup je v přechodech. 31 | 32 | \section{Popis a možnosti implementace na úrovni hradel.} 33 | Kombinační obvody lze popsat: 34 | \begin{itemize} 35 | \item Logická funkce (např.: $X = \overline{A}\cdot B + A\cdot B$) 36 | \item Mapa 37 | \item Krychle 38 | \item Tabulka 39 | \item Graf přechodů 40 | \item Popis stavů a přechodových funkcí (např.: $(X,Y,S,S_0,\delta,\lambda)$) 41 | \end{itemize} 42 | 43 | \begin{tabular}{l l} 44 | $X$ & \dots množina vstupních symbolů \\ 45 | $Y$ & \dots množina výstupních symbolů \\ 46 | $S$ & \dots množina stavů \\ 47 | $S_0$ & \dots počáteční stav \\ 48 | $\delta(s\in S)$ & \dots výstupní funkce u Moorea\\ 49 | $\delta(s\in S,x\in X)$ & \dots výstupní funkce u Mealyho\\ 50 | $\lambda(s\in S,x\in X)$ & \dots přechodová funkce 51 | \end{tabular} 52 | 53 | \subsection{Na úrovni hradel - diagram} 54 | (N)AND, (N)OR, (N)XOR, NOT 55 | 56 | \begin{figure}[h] 57 | \includegraphics[width=8cm]{topics/bi-spol-27/gates} 58 | \end{figure} 59 | 60 | \begin{description} 61 | \item [Dekodér 1 z N] -- vybírám adresu, aby mi svítila jedna žárovka 62 | \item [Multiplexor] -- vybírám bit, kterej chci \uv{poslat}, přes jeden kabel 63 | \item [Demultiplexor] -- opak multiplexoru 64 | \item [Sčítačka (poloviční, úplná)] -- sčítá dva bity (ta úplná počítá i s přenosem z předchozích řádů). Úplné sčítačky se dají nakombinovat, aby se dalo sečíst binární číslo. 65 | \end{description} 66 | 67 | \section{Minimalizace vyjádření logické funkce (s využitím map).} 68 | \begin{itemize} 69 | \item MNDF - minimální normální disjunktní forma 70 | \item MNKF - minimální normální konjunktivní forma 71 | \end{itemize} 72 | 73 | \subsection{Postup pro vytvoření MNDF} 74 | \begin{enumerate} 75 | \item Napíšu si pravdivostní tabulku, co chci za vstupy. 76 | \item Zapíšu jedničky (případně křížky - Don't care) do Karnaugovy mapy. 77 | \item V mapě najdu co největší skupiny o velikostech mocnin. 78 | \item Skupiny přepíšu do funkce tak, že zapíšu proměnné, které nemění svoji hodnotu. 79 | \end{enumerate} 80 | 81 | \begin{figure}[h] 82 | \includegraphics[width=8cm]{topics/bi-spol-27/karnaugh} 83 | \end{figure} 84 | 85 | Příklady na procvičení jsou na \url{https://courses.fit.cvut.cz/BI-SAP/media/seminars/kap3.pdf}. 86 | \end{document} 87 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-25/bi-wsi-si-25.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{SI2} 7 | \code{BI-WSI-SI-25} 8 | \topic{Konfigurační řízení: řízení verzí, řízení změn, správa prostředí, continuous integration, řízení dodávek, vzájemné souvislosti.} 9 | 10 | \providecommand{\tightlist}{% 11 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 12 | 13 | \begin{document} 14 | \tableofcontents 15 | \newpage 16 | 17 | \section{Konfigurační řízení} 18 | Jedna z nejdůležitejších podpůrných činností v rámci SW vývoje. Cílem je zajistit řád a pořádek v konfiguraci SW produktu. 19 | \subsection{Základní aktivity} 20 | \begin{itemize} 21 | \item řízení změn 22 | \item verzování 23 | \item release managment 24 | \end{itemize} 25 | \subsection{Cíle} 26 | \begin{itemize} 27 | \item evidence všech částí SW produktu 28 | \item zajistit, že provádění změn SW produktu samotný produkt nepoškodí 29 | \item získat přehled o stavu konfigurace SW produktu 30 | \end{itemize} 31 | \subsection{Kontrola verzí} 32 | \begin{itemize} 33 | \item evidence SW položek 34 | \item práce na více verzích současně 35 | \item obnovení konkrétní verze 36 | \item GIT, SVN 37 | \item branch (vedlejší větev/větve), tag (read-only copy/záložka mezi verzemi), trunk (hlavní větev) - v pojetí SVN 38 | \item konfigurační jednotka - libovolný soubor, který se verzuje 39 | \end{itemize} 40 | \subsection{Řízení změn} 41 | \begin{itemize} 42 | \item proces, který změnu zakomponuje do projektu se všemi náležitostmi (včetně například testování) 43 | \item eviduje se typ změny a vazba na specifikaci 44 | \item Ticketovací systém - youtrack/redmine/github/bugzilla\dots 45 | \end{itemize} 46 | \section{Správa prostředí} 47 | Software poběží u zákazníka, ale musí se někde vyvíjet a testovat, tzn. existuje více prostředí, kde program poběží. 48 | \subsection{U dodavatele} 49 | \begin{itemize} 50 | \item vývoj 51 | \begin{itemize} 52 | \item lokální vývoj, programátorovi by se mělo programovat pohodlně 53 | \item povinná sada testů před commitem - měly by být krátké a rychlé 54 | \end{itemize} 55 | \item integrační 56 | \begin{itemize} 57 | \item continuous integration - provedení smoke testů a daily build 58 | \item po smoke testech (pokud projdou) se provedé rozsáhlé testování automatizovanými testy 59 | \end{itemize} 60 | \item testovací 61 | \begin{itemize} 62 | \item funkční/nefunkční testy 63 | \item manuální testy 64 | \end{itemize} 65 | \end{itemize} 66 | \subsection{U zákazníka} 67 | \begin{itemize} 68 | \item akceptační - testuje prostředí u zákazníka 69 | \item produkční - testuje se prostředí, na kterém běží výsledná aplikace 70 | \end{itemize} 71 | \section{Řízení dodávek} 72 | Jak často se budou zákazníkovi poskytovat nové buildy záleží na zvoleném modelu SDCL modelu (agile, waterfall\dots). 73 | Většinou cílem je automatizace procesu dodávek. 74 | \subsection{Proces} 75 | \begin{itemize} 76 | \item vyrobit dodávku 77 | \item nainstalovat dodávku 78 | \item otestovat dodávku 79 | \item připravit dodávku pro instalaci zákazníkem 80 | \end{itemize} 81 | \section{Continuous integration} 82 | \begin{itemize} 83 | \item souhrn různých vývojářských nástrojů a metod k urychlení vývoje SW 84 | \item integrace kodu do celkového systému na každodenní bázi (většinou pomocí build serveru) 85 | \item při mnoha commitech se sloučí do skupin, pro menší zátež (někdy i rychlejší deploy při mnoha testech) 86 | \item jako první se provedou smoke testy $\rightarrow$ pokud projdou $\rightarrow$ ostatní testy $\rightarrow$ pokud projdou $\rightarrow$ build a deploy 87 | \end{itemize} 88 | \end{document} -------------------------------------------------------------------------------- /topics/bi-wsi-si-27/bi-wsi-si-27.tex: -------------------------------------------------------------------------------- 1 | % TODO: Dodělat 2 | \documentclass{szzclass} 3 | \usepackage{dependencies/szz-code} 4 | \usepackage{hyperref} 5 | 6 | \subject{TJV} 7 | \code{BI-WSI-SI-27} 8 | \topic{Architektura podnikových aplikací. Popis jednotlivých vrstev JEE aplikací: klientská vrstva, webová vrstva, vrstva obchodní logiky, EIS vrstva.} 9 | 10 | \begin{document} 11 | 12 | \tableofcontents 13 | \newpage 14 | 15 | \section{Architektura podnikových aplikací} 16 | Java Enterprise Edition (JEE) definuje 4 vrstvy architektury. Každá využívá zdroje vrstvy, která je hierarchicky pod ní a poskytuje rozhraní vrstvě nad ní. 17 | 18 | Tato architektura se občas nazývá 3vrstvá - business a aplikační (webová) vrstva totiž většinou běží na jednom stroji a spojuje se do jedné. 19 | 20 | \subsection{Klientská vrstva} 21 | Nemusí být nutně v Javě. Může to být třeba webová aplikace. Komunikuje se střední vrstvou (odesílá ji a přijímá od ní data). Běžná forma komunikace je přes HTTPS protokol s využitím například RESTu. Držet se může i session. 22 | 23 | Klientská aplikace může komunikovat s webem nebo přímo s EJB komponentami v business vrstvě. 24 | 25 | \subsection{Webová vrstva} 26 | Webová vrstva je tvořena servlety, JSP a JSF soubory a případně také JavaBeans komponentami. Tyto komponenty zpracovávají klientské požadavky a generují odpověď, která je následně zaslána do webového prohlížeče klienta. 27 | 28 | Při zpracovávání odpovědi může webová vrstva komunikovat s vrstvou obchodní logiky (business vrstvou) a získávat od ní určité informace. 29 | 30 | Servlet dědí od třídy HttpServlet a má například metody: 31 | \mintinline{java}{HttpServlet#doGet(HttpServletRequest, HttpServletResponse)} 32 | \mintinline{java}{HttpServlet#doPost(HttpServletRequest, HttpServletResponse)} 33 | 34 | Umí tak reagovat na GET, POST, PUT, DELETE, PATCH, … požadavky, které mohou přijít. Do HttpServletResponse vypisuje odpověď třeba v HTML kódu. 35 | 36 | Java Server Pages alias JSP jsou textové soubory s příponou .jsp, umístěné ve webové aplikaci, které jsou při prvním požadavku na zobrazení automaticky převedeny servletovým kontejnerem na servlet (.java) a přeloženy do Java třídy (.class). Servlety vzniklé z JSP stránek jsou tedy mapovány na URL původního textového souboru. 37 | 38 | \begin{minted}[breaklines]{jsp} 39 | 40 | <% //kód uvnitř metody service() 41 | if(request.getMethod().equals("GET")) { 42 | %> 43 |
44 | Zadejte číslo: 45 | 46 |
47 | <% 48 | } else if (request.getMethod().equals("POST")) { 49 | String cislo = request.getParameter("cislo"); 50 | String plusjedna = prictiJedna(cislo); 51 | %> 52 | Výsledek <%out.println(cislo);%> + 1 je <%=plusjedna%> 53 | <% 54 | } 55 | %> 56 | 57 | \end{minted} 58 | 59 | JSF potom taky slouží k jednoduššímu generování webovek. 60 | 61 | \subsection{Obchodní (business) vrstva} 62 | Celá logika aplikace. EJB komponenty přijímají požadavky z webové nebo klientské vrstvy, zpracovávají je a následně vygenerují odpověď. Obsahuje například mapování entit DB na objekty (@Entity). Počítá nějaké šílené věci, dělá validace dat, \dots O EJB více v další otázce. 63 | 64 | \subsection{EIS vrstva} 65 | Enterprise Information system (= podnikový informační systém) 66 | 67 | Tato vrstva představuje veškeré externí systémy, jejichž funkcionalitu či data enterprise aplikace využívá. Může se jednat například o ERP systém, databázový systém atp. Komunikaci s EIS zpravidla zajišťuje business vrstva. 68 | 69 | \section{Zdroje} 70 | Celý převzato z \url{https://docs.google.com/document/d/1OU75LDsImR4cEsQoyfGNyibG5ECJhGRKCfJqrUlpl1Q/edit#} 71 | \begin{itemize} 72 | \item JSP - MUNI - \url{https://kore.fi.muni.cz/wiki/index.php/Java_Server_Pages } 73 | \item 4vrstvá architektura - VŠE - \url{https://java.vse.cz/jsf/chunks/ch02s03.html} 74 | \item BI-TJV 4. Přednáška - \url{https://docs.google.com/presentation/d/12jr7jnWbx_S4sIwLd0v9HmUyX1uuAP3-z6HOdIDp7WA/edit#} 75 | \end{itemize} 76 | 77 | \end{document} 78 | -------------------------------------------------------------------------------- /topics/PI.md: -------------------------------------------------------------------------------- 1 | Označení | Otázka | Předmět | Zabráno 2 | -- | -- | -- | -- 3 | BI-PI-1 | Kvantitativní principy architektury počítačů (Amdahlův zákon, výkonnostní rovnice CPU), hodnocení výkonnosti počítačů. | BI-APS.1   | Ne 4 | BI-PI-2 | Proudové zpracování instrukcí. Rozdělení procesoru do stupňů, řízení toku instrukcí mezi stupni, hazardy, jejich klasifikace a způsoby odstranění. | BI-APS.1   | Ne 5 | BI-PI-3 | Výkonnostní parametry paměťového systému se skrytými pamětmi (cache). Skryté paměti více úrovní.  HW podpora virtuální paměti. | BI-APS.1   | Ne 6 | BI-PI-4 | Paralelní architektury se sdílenou pamětí, paměťová koherence a konzistence. Instrukční primitivy pro synchronizaci procesů. | BI-APS.1 | Ne 7 | BI-PI-5 | Instrukční paralelismus. Superskalární, superpipelinové a VLIW procesory. Vektorové počítače. | BI-APS.1   | Ne 8 | BI-PI-6 | Vztah mezi proudem a napětím na rezistoru, kondenzátoru a cívce; sériové a paralelní řazení shodných prvků (rezistorů, kondenzátorů a cívek). | BI-CAO | Ne 9 | BI-PI-7 | Vnitřní struktura základních logických hradel (invertor, NAND, NOR, AND, OR) v technologii CMOS. | BI-CAO | Ne 10 | BI-PI-8 | Dioda, bipolární tranzistor, unipolární tranzistor MOSFET: funkce a základní zapojení ve spínacím režimu. | BI-CAO | Ne 11 | BI-PI-9 | Aritmetická jednotka (sčítačky/odčítačky včetně predikce přenosu, násobičky a děličky). | BI-JPO |   Ne 12 | BI-PI-10 | Řadič: obvodová struktura a realizace. | BI-JPO |   Ne 13 | BI-PI-11 | Hardwarová realizace vnitřních pamětí a jejich organizace (hlavní paměť, LIFO, FIFO, CAM). Komunikace procesoru s paměťmi, jednotkami V/V, sběrnice. | BI-JPO |   Ne 14 | BI-PI-12 | Bezpečnostní kódy (Hammingův kód, cyklické kódy), kódování a dekódování. | BI-JPO |   Ne 15 | BI-PI-13 | Základní pojmy jazyka VHDL (entita, architektura, proces, signál); syntetizovatelný popis kombinační logiky a sekvenčních obvodů v jazyce VHDL. | BI-PNO |  Ne 16 | BI-PI-14 | Adresace IPv4, rozdělení adresního prostoru. Rozdíly mezi IPv4 a IPv6. | BI-PSI |  Ne 17 | BI-PI-15 | Systémy reálného času, požadavky, základní terminologie, vlastnosti, „hard“ a „soft“ systémy reálného času. | BI-SRC | Ne 18 | BI-PI-16 | Klasifikace systémů reálného času, periodické, sporadické a aperiodické. Systémy řízené časem a/nebo událostmi. Determinismus, WCET. | BI-SRC | Ne 19 | BI-PI-17 | Spolehlivost, bezpečnost a odolnost proti poruchám. Blokové modely spolehlivosti a výpočty spolehlivostních ukazatelů. | BI-SRC | Ne 20 | BI-PI-18 | Časové plánování úloh, algoritmy plánování statické a dynamické se statickou nebo dynamickou prioritou, preemptivní, nepreemptivní (Rate Monotonic, Earliest-Deadline First, Least-Laxity (LL) algoritmus, Priority ceiling protocol). | BI-SRC | Ne 21 | BI-PI-19 | Operační systémy reálného času (vlastnosti, typy a příklady, důvody využití). Správa úloh a sdílených zdrojů, problém WCET, přerušení, zajištění odolnosti proti poruchám. | BI-SRC | Ne 22 | BI-PI-20 | Digitální vstupy/výstupy a jejich konfigurace, analogové vstupy a výstupy. Připojování zobrazovacích prvků, klávesnice kapacitní, tlačítkové, dotykové displeje. | BI-VES | Ne 23 | BI-PI-21 | Čítače a časovače, zpracování a generování událostí, pulsně šířková modulace (PWM), hodiny reálného času, dohlížecí obvody pro napájení (power-fail), watchdog. | BI-VES | Ne 24 | BI-PI-22 | Sériová rozhraní a sériové sběrnice, moderní rozhraní: BlueTooth, USB. | BI-VES | Ne 25 | BI-PI-23 | Mobilní platformy a operační systémy pro vestavné aplikace. | BI-VES | Ne 26 | BI-PI-24 | Technická a programová podpora vývoje vestavných aplikací. | BI-VES | Ne 27 | BI-PI-25 | Vnější popis lineárních spojitých dynamických systémů, přenos, sériová, paralení a zpětná vazba, metody výpočtu přenosu složitých systémů. | BI-ZRS | Ne 28 | BI-PI-26 | PID regulátor, popis PID regulátoru a jeho dynamické vlastnosti, PID regulátory s interakcí a bez interakce, vliv nastavení PID regulátoru na stabilitu regulačního obvodu. | BI-ZRS | Ne 29 | BI-PI-27 | Rregulační obvod s číslicovým (PSD) regulátorem, schéma, diskrétní náhrady integrace a derivace, absolutní a přírůstkový algoritmus a přenos PSD regulátoru. | BI-ZRS | Ne 30 | BI-PI-28 | Regulační obvody s fuzzy regulátory, fuzzy množiny a operace na fuzzy množinách, báze pravidel, báze dat, fuzzyfikace, fuzzy inference, defuzzyfikace. | BI-ZRS | Ne -------------------------------------------------------------------------------- /topics/bi-wsi-si-20/bi-wsi-si-20.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | 4 | \subject{SI1.2} 5 | \code{BI-WSI-SI-20} 6 | \topic{Přiřazení zodpovědností třídám během návrhu, GRASP vzory (Nízká provázanost, Vysoká soudržnost), popis spolupráce objektů (UML sekvenční diagram, UML diagram tříd - využití během návrhu).} 7 | 8 | \begin{document} 9 | 10 | \tableofcontents 11 | \newpage 12 | 13 | \section{Přiřazení zodpovědností třídám během návrhu} 14 | Cílem je správně přiřadit zodpovědnosti třídám. 15 | \begin{itemize} 16 | \item Navrhnout systém tak, aby byl dlouhodobě udržitelný a rozšiřitelný - Rozšíření bude zřejmě provádět jiný tým a není možné se spolehnout na znalosti autorů 17 | \item Snadno lokalizovatelné dopady změn - Snadné odhady pracnosti požadovaných rozšíření 18 | \item Minimalizace dopadů při provádění změn - Změna v jedné části systému by neměla ovlivňovat jinou část 19 | \end{itemize} 20 | 21 | \section{GRASP vzory} 22 | \begin{itemize} 23 | \item Základní vzory / principy pro přiřazení zodpovědností třídám 24 | \item Zodpovědnost je úkol, který má třída řešit 25 | \item Existuje mnoho způsobů rozdělení úloh mezi třídy 26 | \item Neexistuje jediné správné řešení 27 | \end{itemize} 28 | 29 | \begin{description} 30 | \item[Informační expert] (Information Expert) 31 | \begin{itemize} 32 | \item Základní princip přiřazení zodpovědnosti 33 | \item Popis - Přiřaďte zodpovědnost třídě, která má informace potřebné pro splnění této zodpovědnosti 34 | \end{itemize} 35 | \item[Nízká provázanost] (Low Coupling) 36 | \begin{itemize} 37 | \item Zmenšuje dopad při provádění změn 38 | \item Popis - Přiřaďte zodpovědnost tak, aby provázanost zůstala nízká 39 | \item Každá třída by si měla vystačit při plnění úkolu sama a minimalizovat nutnost využití ostatních tříd 40 | \item Zvyšuje možnost znovupoužití 41 | \item Počet vazeb mezi třídami by měl být minimální 42 | \end{itemize} 43 | \item[Vysoká soudržnost] (High Cohesion) 44 | \begin{itemize} 45 | \item Podporuje nízkou provázanost 46 | \item Popis - Přiřaďte zodpovědnost tak, aby soudržnost zůstala vysoká 47 | \item Každá třída by měl být zaměřena na jediný úkol 48 | \item Zvyšuje srozumitelnost systému 49 | \item Zodpovědnost třídy je snadno pochopitelná 50 | \end{itemize} 51 | \end{description} 52 | 53 | \begin{itemize} 54 | \item Jedna třída umí všechno 55 | \begin{itemize} 56 | \item Nízká provázanost 57 | \item Malá soudržnost 58 | \end{itemize} 59 | \item Každá třída pouze jednu metodu 60 | \begin{itemize} 61 | \item Vysoká provázanost 62 | \item Velká soudržnost 63 | \end{itemize} 64 | \end{itemize} 65 | 66 | \section{Popis spolupráce objektů} 67 | \subsection{UML sekvenční diagram} 68 | \begin{itemize} 69 | \item Objekt 70 | \begin{itemize} 71 | \item Pojmenovaný 72 | \item Nepojmenovaný 73 | \end{itemize} 74 | \item Třída 75 | \begin{itemize} 76 | \item Statická metoda 77 | \end{itemize} 78 | \end{itemize} 79 | 80 | \begin{figure}[ht!] 81 | \centering 82 | \includegraphics[width=.55\linewidth]{topics/bi-wsi-si-20/images/sekvencni-diagram.png} 83 | \caption{Sekvenční diagram} 84 | \end{figure} 85 | 86 | \begin{figure}[ht!] 87 | \centering 88 | \includegraphics[width=.55\linewidth]{topics/bi-wsi-si-20/images/sekvencni-async.png} 89 | \caption{Zpráva - Asynchronní, Synchronní} 90 | \end{figure} 91 | 92 | \begin{figure}[ht!] 93 | \centering 94 | \includegraphics[width=.55\linewidth]{topics/bi-wsi-si-20/images/sekvencni-navratova.png} 95 | \caption{Návratová hodnota - 2 různé způsoby} 96 | \end{figure} 97 | 98 | \begin{figure}[ht!] 99 | \centering 100 | \includegraphics[width=.55\linewidth]{topics/bi-wsi-si-20/images/sekvencni-vytvareni.png} 101 | \caption{Vytvoření a zrušení objektu} 102 | \end{figure} 103 | 104 | \subsection{UML diagram tříd - využití během návrhu} 105 | Použití v dokumentaci a pro generování kódů. Může vycházet z doménového návrhu. Diagram tříd je závislý na: 106 | \begin{itemize} 107 | \item Zvolené technologii 108 | \item Zvolené architektuře 109 | \item Použitých architektonických vzorech (GRASP, GoF) 110 | \end{itemize} 111 | 112 | \section{Zdroje} 113 | \begin{itemize} 114 | \item Přednášky - \url{https://courses.fit.cvut.cz/BI-SI1/@B171/lectures/index.html} 115 | \end{itemize} 116 | 117 | \end{document} 118 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-03/bi-wsi-si-03.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{DBS} 7 | \code{BI-WSI-SI-03} 8 | \topic{Normalizace relačního schématu a normální formy (první, druhá, třetí, BCNF).} 9 | \providecommand{\tightlist}{% 10 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 11 | 12 | \begin{document} 13 | \tableofcontents 14 | \newpage 15 | 16 | \section{Normalizace} 17 | Cílem normalizace je minimalizovat redundanci data a aktualizační anomálie. Měla by vést k vzniku tabulek, 18 | které lze snadno udržovat. 19 | 20 | \subsection{Fuknční závislost} 21 | $X$ je množina všech atributů, $Y$ a $Z$ jsou $\subseteq$ $X$. $Z$ závisí funkčně na $Y$, jestliže ke každé $Y$ hodnotě 22 | existuje maximálně jedna $Z$ hodnota. Značí se jako $Y \rightarrow Z$. 23 | 24 | \subsubsection{Příklad} 25 | \begin{itemize} 26 | \item ke každému kinu existuje nanejvýš jedna adresa $\Rightarrow$ nazev\_kina $\rightarrow$ adresa 27 | \begin{itemize} 28 | \item název kina určuje atribut adresa 29 | \item naopak adresa závizí na názvu kina 30 | \end{itemize} 31 | \item pro každou dvojici {kino, film} existuje nejvýše jedno datum, kdy se film v kině vysílá $\Rightarrow$ nazev\_kina, jmeno\_filmu $\rightarrow$ datum 32 | \begin{itemize} 33 | \item dvojice jméno kina a jméno filmu určuje atribut datum 34 | \item datum závisí na dvojici jmen 35 | \end{itemize} 36 | \end{itemize} 37 | \subsubsection{Amstrongova pravidla} 38 | \begin{itemize} 39 | \item triviální funkční závislost = jestliže Y je $\subseteq$ X, pak X $\rightarrow$ Y 40 | \item tranzitivita = jestliže X $\rightarrow$ Y a Y $\rightarrow$ Z, pak X $\rightarrow$ Z 41 | \item kompozice pravé strany = X $\rightarrow$ Y a X $\rightarrow$ Z, pak X $\rightarrow$ YZ 42 | \item dekompozice pravé strany = X $\rightarrow$ YZ, pak X $\rightarrow$ Y a X $\rightarrow$ Z 43 | \end{itemize} 44 | \subsubsection{Klíč relace} 45 | Řekněme R(A), kde K je $\subseteq$ A. Tak K je klíčem schématu R(A), jestliže splňuje dvě vlastnosti: 46 | \begin{itemize} 47 | \item K $\rightarrow$ A 48 | \item neexistuje K' $\subset$ K taková, že K' $\rightarrow$ A 49 | \end{itemize} 50 | 51 | \section{Normální formy} 52 | \begin{itemize} 53 | \item 1NF - atributy jsou atomické (nexistují strukturované a vicehodnotové atributy) 54 | \item 2NF - žádný neklíčový atribut není závislý na části klíče (vždy závisí na celém) 55 | \item 3NF - jsou-li všechny neklíčové atributy závislé na klíči přímo a nikoliv tranzitivně 56 | \begin{itemize} 57 | \item nesmí tranzitivně záviset na jiném klíči 58 | \item nesmí záviset na jiném neklíčovém atributu 59 | \item musí záviset pouze na primárním klíči 60 | \end{itemize} 61 | \end{itemize} 62 | \subsection{BCNF - Boyce-Coddova normální forma} 63 | Schéma relace R je v BNFC, jestliže pro každou netriviální závistlo X $\rightarrow$ Y platí, že X obsahuje klíč schématu R. Pokud je schéma v BCNF, 64 | pak je i v 3NF. 65 | 66 | \section{Normalizace} 67 | Eliminace aktualizačních anomálií se zajišťuje převedením relačního schématu do 3NF (resp. BCNF). Lze normalizovat pomocí dekompozice. 68 | Požadavky dekompozice: 69 | \begin{itemize} 70 | \item výsledná schémata by měla mít "stejnou" sémantiku - nové i staré schéma musí mít stejnou funkční závislost 71 | \item nová relace by měla obsahovat "stejná" data, jaká by obsahovala původní relace 72 | \item o dekompozici lze uvažovat jako o projekcích původní relace, kde každá projekce definujé nové relace, a jejich spojením se musí dostat 73 | stejná data jako měla původní relace - \texttt{beztrátová dekompozice} 74 | \end{itemize} 75 | \subsection{Beztrátová dekompozice} 76 | Musí být splněna pravidla: 77 | \begin{itemize} 78 | \item schéma R(\underline{A},B,C), kde A, B, C jsou disjuktní, a je splněna funkční závislost B $\rightarrow$ C 79 | \item po rozdělení R na schémata R1(\underline{B},C) a R2(\underline{A},B) $\Leftrightarrow$ je rozdělení (dekompozice) bezztrátové 80 | \end{itemize} 81 | 82 | Normalizace je důležitá u "write intesive" databází, databáze kde se hodně zapisují a upravují data. 83 | \newline 84 | Naopak u "read only" databází se vyplatí denormalizace, zavedením redundance se sníží odezva na složitejší dotazy, protože denormalizované 85 | databáze mají většinou méně tabulek než normalizované. A každé spojování tabulek při dotazování prodlužuje dobu odezvy. 86 | \end{document} -------------------------------------------------------------------------------- /topics/bi-spol-02/bi-spol-02.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{dependencies/szz-math} 3 | \usepackage[czech]{babel} 4 | 5 | \subject{AAG} 6 | \code{BI-SPOL-2} 7 | \topic{Regulární jazyky: Deterministické a nedeterministické konečné automaty. Determinizace konečného automatu. Minimalizace deterministického konečného automatu. Operace s konečnými automaty. Regulární gramatiky, regulární výrazy, regulární rovnice.} 8 | 9 | \begin{document} 10 | 11 | \section{Regulární jazyky} 12 | \begin{theorem}[Kleeneova věta] 13 | Libovolný jazyk je regulární, právě když je přijímaný konečným automatem 14 | \end{theorem} 15 | 16 | \subsection{Deterministické automaty} 17 | \begin{definition} 18 | \textbf{Deterministický} konečný automat je pětice $M=(Q,\Sigma,\delta,q_0,F)$, kde 19 | \begin{itemize} 20 | \item $Q$ - konečná množina stavů 21 | \item $\Sigma$ - konečná abeceda 22 | \item $\delta$ - zobrazení $Q\times\Sigma \to Q$ 23 | \item $q_0$ - počáteční stav 24 | \item $F\subseteq Q$ - množina koncových stavů 25 | \end{itemize} 26 | \end{definition} 27 | 28 | \begin{itemize} 29 | \item \textbf{Konfigurace} konečného automatu $M$ (viz výše) je 30 | \begin{itemize} 31 | \item dvojice $(q,w)\in Q\times \Sigma^{*}$. 32 | \item počáteční - $(q_0,w)$ 33 | \item koncová - $(q,\varepsilon)$, kde $q\in F$ 34 | \end{itemize} 35 | \item \textbf{Přechod} $\vdash_M$ je relace nad $Q\times\Sigma^{*}$, taková, že $(q, w) \vdash_M (p, w')$ právě tehdy, když $w = aw'$ a $\delta(q, a) = p$ pro nějaké $a\in\Sigma,w \in \Sigma{∗}.$ 36 | \item Jazyk \textbf{je přijímaný} DKA automatem $M$, jestliže existuje přechod z $q_0$ do $q\in F$. 37 | \item DKA nazveme \textbf{úplně úrčený}, když je zobrazení $\delta(q,a)$ definováno pro všechny dvojice stavů a vstupních symbolů. 38 | \end{itemize} 39 | 40 | \subsection{Nedeterministické automaty} 41 | \begin{definition} 42 | \textbf{Nedeterministický} konečný automat je pětice $M=(Q,\Sigma,\delta,q_0,F)$, kde 43 | \begin{itemize} 44 | \item $\delta$ - zobrazení $Q\times\Sigma$ do množiny všech podmnožin $Q$. 45 | \end{itemize} 46 | \end{definition} 47 | 48 | Stav $q\in Q$ je \textbf{dosažitelný}, pokud $\exists w\in\Sigma^{*}: (q_0,w)\vdash^{*}(q,\varepsilon)$. Jinak je stav nedosažitelný. 49 | 50 | Stav $q\in Q$ je \textbf{užitečný}, pokud $\exists w\in\Sigma^{*},\exists p\in F: (q,w)\vdash^{*}(p,\varepsilon)$. Jinak je stav zbytečný. 51 | 52 | \section{Determinizace konečného automatu} 53 | 54 | Pro každý NKA platí, že k němu existuje ekvivaletní DKA. 55 | 56 | Jako příklad uvedeme NKA: 57 | 58 | Determinizaci začneme odstraněním počátečních stavů a jejich nahrazení jedním počátečním stavem. 59 | 60 | \section{Minimalizace deterministického konečného automatu} 61 | TODO 62 | 63 | \section{Operace s konečnými automaty} 64 | \begin{itemize} 65 | \item Sjednocení - $L(M) = L(M1) \cup L(M2)$ 66 | \item Průnik - $L(M) = L(M1) \cap L(M2)$ 67 | \item Doplněk - Úplně určený DKA, $F'=Q\setminus F$ 68 | \item Součin - ke koncovému stavu $M_1$ přidáme počáteční stav $M_2$; $q_{0,M}=q_{0,M_1}, F_M=F_2$ 69 | \item Iterace - vytvoříme $q_0$, který bude zároveň koncový a ze všech původních koncových stavů povede $\varepsilon$ přechod do počátečního stavu $q_0$. 70 | \end{itemize} 71 | 72 | \section{Regulární gramatiky} 73 | Gramatika $G=(N,\Sigma,P,S)$ je \textbf{regulární}, jestliže každé pravidlo má tvar $A \to aB$ nebo $A \to a$, kde $A, B \in N, a \in \Sigma$, nebo tvar $S \to \varepsilon$ v případě, že $S$ se nevyskytuje na pravé straně žádného pravidla. 74 | 75 | \section{Regulární výrazy} 76 | \begin{definition} 77 | \textbf{Regulární výraz} $V$ nad abecedou $\Sigma$ je definován následujícím způsobem: 78 | \begin{enumerate} 79 | \item $\emptyset, \varepsilon, a$ jsou regulární výrazy pro všechna $a \in\Sigma$. 80 | \item Jsou-li $x, y$ regulární výrazy nad $\Sigma$, pak: 81 | \end{enumerate} 82 | \begin{itemize} 83 | \item $(x + y)$ (sjednocení, alternativa), 84 | \item $(x.y)$ (zřetězení) a 85 | \item $(x)^*$ (iterace) 86 | \end{itemize} 87 | jsou regulární výrazy nad $\Sigma$. 88 | \end{definition} 89 | 90 | \section{Regulární rovnice} 91 | \begin{definition} 92 | Standardní soustava \textbf{regulárních rovnic} má tvar: 93 | $X_i = \alpha_{i0} + \alpha_{i1}X_1 + \alpha_{i2}X_2 + \cdots + \alpha_{in}X_n, 1 \leq i \leq n$, kde $X_1, X_2, \dots , X_n$ jsou neznámé a $\alpha_{ij}$ jsou regulární výrazy nad abecedou $\Sigma$, která neobsahuje $X_1, X_2, \dots , X_n$. 94 | \end{definition} 95 | 96 | \end{document} 97 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-22/bi-wsi-si-22.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{SI2} 7 | \code{BI-WSI-SI-22} 8 | \topic{Zajištění kvality software: Způsoby zjišťování kvality, typologie testů, atributy testů, black vs. white box, akceptační, kvalifikační, regresní testy, automatizace testů.} 9 | 10 | \providecommand{\tightlist}{% 11 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 12 | 13 | \begin{document} 14 | \tableofcontents 15 | \newpage 16 | 17 | \section{Testování} 18 | Proces/množina aktivit s cílem změřit kvalitu vytvořeného software. Ověření správnosti výstupu jednotlivých částí nebo celé aplikace. 19 | \section{Přezkoumání} 20 | Ověřit korektnost produktu vůči specifikaci: 21 | \begin{itemize} 22 | \item projektu 23 | \item nabídce 24 | \item designu 25 | \item kódu 26 | \end{itemize} 27 | 28 | \subsection{Validace a verifikace} 29 | \begin{itemize} 30 | \item validace - dělo to co má 31 | \item verifikace - dělá to správně 32 | \end{itemize} 33 | \subsection{Rozdělení testu podle V-modelu} 34 | \begin{itemize} 35 | \item na levé straně činnost 36 | \item na pravé straně testy, které tu činnost pokrývají 37 | \item vývoj začíná návrhem, testování začíná od unit testů (testy samotných funkcí) 38 | \end{itemize} 39 | \begin{figure}[h!] 40 | \centering 41 | \includegraphics[width=1\textwidth]{topics/bi-wsi-si-22/images/vModel.png} 42 | \caption{V-model} 43 | \label{} 44 | \end{figure} 45 | \subsection{Pozitivní vs negativní testy} 46 | \begin{itemize} 47 | \item funguje, co fungovat má? 48 | \item nefunguje, co fungovat nemá? 49 | \end{itemize} 50 | \subsection{Black box vs White box} 51 | \begin{itemize} 52 | \item White box 53 | \begin{itemize} 54 | \item vidíme implementaci 55 | \item strukturální testy 56 | \end{itemize} 57 | \item Black box 58 | \begin{itemize} 59 | \item testuje se oproti rozhraní 60 | \item nezajímá nás implementace 61 | \item pohled ze strany uživatele 62 | \end{itemize} 63 | \end{itemize} 64 | \section{Detailnější rozdělení testů} 65 | \begin{itemize} 66 | \item stresové testy 67 | \item specifické testy 68 | \item uživatelské testy 69 | \item regresní testy 70 | \end{itemize} 71 | \subsection{Systémové testy} 72 | ověřují aplikaci jako funkční celek, aplikovávají se funkční i nefunkční testy. 73 | \begin{itemize} 74 | \item stresové testy 75 | \item recovery testy 76 | \item bezpečnostní testy 77 | \item výkonostní testy 78 | \end{itemize} 79 | \subsection{Regresní testy} 80 | Testy částí systému, nad kterými v aktuálním releasu neproběhli žádné změny. 81 | Ověření, že nové změny nezkazili něco, co už fungovalo. 82 | \subsection{Atributy testu} 83 | \begin{itemize} 84 | \item Power - pravděpodobnost nalezení problému, pokud existuje 85 | \item Representative - odpovídá tomy, co asi uživatel nejpravděpodobněji udělá 86 | \item Repeatable - snadno a levně znovupoužitelné 87 | \item Cost - náklady, čas a pracnost 88 | \item Motivating - motivovanost pro opravu chyby 89 | \end{itemize} 90 | \subsection{Akceptační vs kvalifikační test} 91 | \begin{itemize} 92 | \item kvalifikační - oveření u dodavatele, ověření zda už může být produkt předán klientovi 93 | \item akceptační - ověření u zákazníka, zákazník si na základě vlastních scénářů otestuje systém (jestli odpovídá požadavkům) 94 | \end{itemize} 95 | \section{Automatizace testů} 96 | \begin{itemize} 97 | \item opakovatelnost a konzistence 98 | \item testy mají stejné výsledky nezávisle na počtu opakování 99 | \item odpadá nutnost opakovaného provádění toho stejného testu člověkem 100 | \item znovupouživatelnost (provádění stejných testů v různých prostředí s různou konfigurací a úpravami dat) 101 | \item baseline test (automatizace umožňuje velkou sadu testů) 102 | \end{itemize} 103 | Pro automatizace jsou obzvlášť vhodné regresní testy. Automatizace může probíhat na serveru, ale i na stroji vývojáře. 104 | Vhodné při použití continuous integration. 105 | \subsection{Smoke testing} 106 | Jendá se spuštění sady testů, které testují, zda-li důležité funkce systému fungují. Používá se třeba při dělání buildů, 107 | aby se ujistilo, že nová verze buildu bude stabilní a je možné jí dále testovat. 108 | \end{document} -------------------------------------------------------------------------------- /topics/bi-spol-31/bi-spol-31.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | \usepackage{amsmath} 4 | \usepackage{graphics} 5 | \usepackage[export]{adjustbox}[2011/08/13] 6 | 7 | \topic{Analytický doménový model tříd a popis životního cyklu identifikovaných tříd (cíle, UML diagram tříd, UML stavový diagram).} 8 | \renewcommand*\contentsname{Obsah} 9 | \author{Jakub Rathouský} 10 | \code{BI-SPOL-31} 11 | \subject{SI1.2} 12 | 13 | \begin{document} 14 | % \maketitle 15 | \tableofcontents 16 | \newpage 17 | 18 | \section{Analytický doménový model tříd} 19 | Model pomáhající definovat entity v problémové doméně, jejich vlastnstí a vztahů mezi nimi. 20 | Modeluje se diagram tříd, ale vynechávají se implementační detaily. 21 | \subsection{Cíle} 22 | \begin{itemize} 23 | \item popsat data 24 | \item popsat význam termínů 25 | \item popsat vazby mezi entitami 26 | \item identifikovat stav entity 27 | \item základ pro design (db model, model tříd) 28 | \item zachycení atributů 29 | \end{itemize} 30 | 31 | \section{Popis životního cyklu identifikovaných tříd (cíle, UML diagram tříd, UML stavový diagram)} 32 | \subsection{Doménový model} 33 | \begin{itemize} 34 | \item pomocí diagramu tříd UML 35 | \item patří do skupiny diagramů struktur 36 | \item využití: 37 | \begin{itemize} 38 | \item business doménový model 39 | \item analytický doménový model 40 | \item databázový model 41 | \item návrh modelu tříd 42 | \end{itemize} 43 | \item třída v diagramu se skládá z: 44 | \begin{itemize} 45 | \item atributů 46 | \item metodami 47 | \item viditelnost 48 | \end{itemize} 49 | \item typy vztahů: 50 | \begin{itemize} 51 | \item asociace 52 | \begin{itemize} 53 | \item udržení vztahu mezi dvěmi entitami 54 | \item ty mohou existovat nezávisle na sobě 55 | \item výchozí směr na obě strany 56 | \item lze přidat šipky pro upřesnění 57 | \end{itemize} 58 | \item kompozice 59 | \begin{itemize} 60 | \item podobná jako agregace, akorát silnější 61 | \item entita části nemá smysl bez celku 62 | \end{itemize} 63 | \item agregace - raději nepoužívat 64 | \begin{itemize} 65 | \item reprezentuje vztah celek - část 66 | \item celek si drží kolekci objektů 67 | \item část může existovat samostatně a nebo ve více kolekcích 68 | \end{itemize} 69 | \item generalization / dědičnost 70 | \end{itemize} 71 | \item násobnosti 72 | \begin{itemize} 73 | \item 0-* \dots * 74 | \item 1-* \dots * 75 | \item 0-* \dots 1 76 | \item \dots 77 | \end{itemize} 78 | \item popis vztahů 79 | \end{itemize} 80 | \begin{figure}[h!] 81 | \centering 82 | \includegraphics[width=0.2\textwidth]{topics/bi-spol-31/images/connectionTypes.png} 83 | \caption{Typy vztahů mezi třídami} 84 | \end{figure} 85 | \subsection{Atribut vs Vazba} 86 | \begin{itemize} 87 | \item význam shodný 88 | \item důležitá je čitelnost 89 | \item vazba je názornější 90 | \end{itemize} 91 | 92 | \subsection{Hledání tříd} 93 | \begin{itemize} 94 | \item předměty, objekty reálného světa 95 | \item podstatná jména z vytvořených dokumentů 96 | \begin{itemize} 97 | \item business model 98 | \item UC model 99 | \item slovníček pojmů 100 | \end{itemize} 101 | \item rozpracování business doménového modelu 102 | \end{itemize} 103 | \section{Stavový diagram} 104 | \subsection{Cíle} 105 | \begin{itemize} 106 | \item porozumět životnímu cyklu entit 107 | \item vyjasnění stavů, ve kterých se může entita nacházet 108 | \item zachycení událostí vyvolávajících přechod a podmínek, za kterých může změna nastat 109 | \end{itemize} 110 | 111 | \subsection{Notace} 112 | \begin{itemize} 113 | \item stavový diagram 114 | \begin{itemize} 115 | \item patří do skupiny diagramů chování 116 | \item konečné stavové automaty 117 | \end{itemize} 118 | \item skládá se z: 119 | \begin{itemize} 120 | \item stav 121 | \item přechody - události 122 | \end{itemize} 123 | \end{itemize} 124 | \begin{figure}[h!] 125 | \centering 126 | \includegraphics[width=0.4\textwidth]{topics/bi-spol-31/images/entityState.png} 127 | \caption{Stavový diagram} 128 | \end{figure} 129 | \end{document} 130 | -------------------------------------------------------------------------------- /topics/bi-spol-10/bi-spol-10.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage[czech]{babel} 3 | 4 | \subject{DBS} 5 | \code{BI-SPOL-10} 6 | \topic{Transakce a jejich vlastnosti - ACID.} 7 | 8 | \begin{document} 9 | 10 | \tableofcontents 11 | \newpage 12 | 13 | \section{Požadavky na konzistenci databáze} 14 | 15 | V rámci DBMS (Database Management Service) je potřeba myslet na konzistenci dat a jejich ochranu. Je potřeba 16 | myslet na to, že žádná akce by neměla ohrozit integritu celého systému. 17 | 18 | \begin{itemize} 19 | \item Dva základní požadavky na DBMS: 20 | \begin{itemize} 21 | \item chránit data – ve smyslu odolnosti vůči různým haváriím serveru 22 | \item poskytnout korektní, rychlý a asynchronní přístup vetšímu množství současně pracujících uživatelů. 23 | \end{itemize} 24 | \item Řešení 25 | \begin{itemize} 26 | \item komponenta řízení soubežného (paralelního) zpracování (concurreny control) 27 | \item komponenta zotavení z chyb (recovery) 28 | \end{itemize} 29 | \end{itemize} 30 | 31 | \section{Transakce} 32 | 33 | Vhodná programová jednotka a vhodné mechanismy, které zabezpečí, že po skončení akce (korektním i nekorektním) zůstane databáze konzistentní (platí všechna IO definovaná ve schématu). 34 | 35 | \begin{itemize} 36 | \item COMMIT - potvrzení 37 | \item ROLLBACK - zrušení 38 | \end{itemize} 39 | 40 | Stavový diagram transakce 41 | 42 | \begin{itemize} 43 | \item aktivní (Active) - od začátku (probíhají DML příkazy) 44 | \item částečně potvrzený (Partially Commited) - po provedení poslední operace transakce 45 | \item potvrzený (Commited) - po úspešném zakončení, tj. po potvrzení operace COMMIT 46 | \item chybný (Failed) - v normálním průběhu transakce nelze pokračovat 47 | \item zrušený (ABorted) - po skončení operace ROLLBACK, tj. uvedení databáze do stavu před započetím transakce 48 | \end{itemize} 49 | 50 | \begin{figure}[h!] 51 | \includegraphics[width=0.5\textwidth]{topics/bi-spol-10/images/state} 52 | \caption{Stavový diagram transakce} 53 | \end{figure} 54 | 55 | \section{ACID vlastnosti transakce} 56 | \begin{itemize} 57 | \item atomicita (Atomicity) - transakce musí buď proběhnout celá, nebo vůbec 58 | \item konzistence (Consistency) - transformuje databázi z konzistentního stavu do jiného konzistentního stavu 59 | \item nezávislost (Independence) - dílčí efekty jedné transakce nejsou viditelné jiným transakcím 60 | \item trvanlivost (Durability) - efekty úspěšné transakce jsou trvale uloženy 61 | \end{itemize} 62 | 63 | \textbf{Žurnál} obsahuje sekvenci změnových vektorů 64 | Žurnál a přidružená infrastruktura umožňuje implementaci Atomicity a Durability u transakčního zpracování. 65 | Informace z transakčního žurnálu se používají pouze pro obnovu databáze po chybě. 66 | 67 | \section{Rozvrhy} 68 | Stanovení pořadí provádění dílčích akcí více transakcí v čase nazveme \textbf{rozvrhem}. Rozvrh je korektní, když je v nějakém smyslu ekvivalentní kterémukoliv sériovému rozvrhu. 69 | 70 | Rozvrh je uspořádatelný (koretní) pokud nemá precendenční graf kružnici. 71 | Rozvrhy jsou ekvivalentní mají-li stejný precendenční graf. 72 | 73 | Precendenční graf rozvrhu: 74 | \begin{itemize} 75 | \item uzly = jednotlivé transakce rozvrhu 76 | \item hrany (orientované) 77 | \begin{itemize} 78 | \item jedna transakce READ(A) před tím než druhá transakce WRITE(A) 79 | \item jedna transakce WRITE(A) před tím než druhá transakce READ(A) 80 | \item poslední WRITE(A) v jendé transkaci je před posledním WRITE(A) v druhé transakci. 81 | \end{itemize} 82 | \end{itemize} 83 | 84 | Paralelní zpracovaní transakcí: 85 | \begin{itemize} 86 | \item Testování uspořádatelnosti 87 | \item Uzamykáni (LOCK TABLE) 88 | \end{itemize} 89 | 90 | Dvoufázová transakce: 91 | \begin{itemize} 92 | \item 1. fáze - uzamyká se, nic neodemyká 93 | \item 2. fáze - od prvního odemknutí do konce se už nic nezamyká 94 | \end{itemize} 95 | 96 | Dobře formované transakce: 97 | \begin{itemize} 98 | \item transakce zamyká objekt, chce-li k němu přistupovat 99 | \item transakce nezamyká objekt, který již zamkla 100 | \item transakce neodmyká objekt, který nezamkla 101 | \item na konci transakce nezůstane žádný objekt zamčený 102 | \end{itemize} 103 | 104 | Jestliže všechny transakce v dané množině transakcí T jsou: 105 | 106 | \begin{itemize} 107 | \item dobře formované 108 | \item dvoufázové 109 | \end{itemize} 110 | 111 | $\Rightarrow$ pak každý jejich legální rozvrh je uspořádatelný. 112 | \end{document} 113 | -------------------------------------------------------------------------------- /topics/WSI-SI.md: -------------------------------------------------------------------------------- 1 | Označení | Předmět | Otázka | Zabráno 2 | -- | -- | -- | -- 3 | BI-WSI-SI-1 | BI-BEZ | Informační bezpečnost, architektura bezpečnosti v modelu OSI. |   Ne 4 | BI-WSI-SI-2 | BI-DBS | Transformace konceptuálního schématu (v ER nebo jiné notaci) na relační. |  Ne 5 | BI-WSI-SI-3 | BI-DBS | Normalizace relačního schématu a normální formy (první, druhá, třetí, BCNF). |   Ne 6 | BI-WSI-SI-4 | BI-DBS | Pokročilé principy dotazování v SQL: agregace, vnější spojení, vnořené dotazy, všeobecná kvantifikace. |   Ne 7 | BI-WSI-SI-5 | BI-KOM | Konceptuální modelování, jeho význam, základní pojmy a způsoby modelování reálného světa. |   Ne 8 | BI-WSI-SI-6 | BI-KOM | OntoUML a jeho konstrukty, transformace do objektového modelu. |   Ne 9 | BI-WSI-SI-7 | BI-KOM | Klíčové pojmy inženýrství podniků a metoda DEMO |   Ne 10 | BI-WSI-SI-8 | BI-OOP | Čisté objektové paradigma — klíčové pojmy, abstrakce, chování. |   Ano 11 | BI-WSI-SI-9 | BI-OOP | Čisté objektové paradigma — principy návrhu OO systémů. |   Ano 12 | BI-WSI-SI-10 | BI-OOP | Čisté objektové paradigma — kvalita návrhu OO systémů. |   Ne 13 | BI-WSI-SI-11 | BI-OSY | Principy souborových systémů (FAT, NTFS, UFS, ZFS), jejich implementace a vlastnosti. |   Ne 14 | BI-WSI-SI-12 | BI-PA2 | Šablony funkcí a tříd v C++, knihovna STL, iterátor, komparátor. |   Ne 15 | BI-WSI-SI-13 | BI-PPA | Rozdělení paměti při implementaci programovacích jazyků: statické části, zásobník, halda. Aktivační záznamy, mechanismus implementace volání funkcí. |   Ano 16 | BI-WSI-SI-14 | BI-PPA | Lambda kalkul: definice pojmů, operací, reprezentace čísel. |   Ano 17 | BI-WSI-SI-15 | BI-PPA | Funkcionální programování, funkce vyšších řádů, Lisp: atomy, seznamy, funkce, cons buňky, rekurze, mapovací funkcionály. |   Ne 18 | BI-WSI-SI-16 | BI-PPA | Logické programování, Prolog: fakta, pravidla, dotazy, způsob vyhodnocení dotazů, unifikace, operátor řezu. |   Ne 19 | BI-WSI-SI-17 | BI-PSI | Adresace IPv4, rozdělení adresního prostoru. Rozdíly mezi IPv4 a IPv6. |   Ne 20 | BI-WSI-SI-18 | BI-SI1.2 | Analýza a správa požadavků (cíle, kategorizace, UML diagram případů užití, scénáře případů užití, UML diagram aktivit). |   Asi 21 | BI-WSI-SI-19 | BI-SI1.2 | Vzory používané během návrhu: třívrstvá architektura, Model View Controller, GoF vzory (Abstraktní továrna, Stav, Adaptér). |   Ano 22 | BI-WSI-SI-20 | BI-SI1.2 | Přiřazení zodpovědností třídám během návrhu, GRASP vzory (Nízká provázanost, Vysoká soudržnost), popis spolupráce objektů (UML sekvenční diagram, UML diagram tříd - využití během návrhu). |   Asi 23 | BI-WSI-SI-21 | BI-SI1.2 | Klasické a agilní metodiky vývoje software (základní principy, vhodnost použití, řešené problémy). Základní popis metodik Unified Process (UP), Extrémní programování (XP) a SCRUM. |   Asi 24 | BI-WSI-SI-22 | BI-SI2.3 | Zajištění kvality software: Způsoby zjišťování kvality, typologie testů, atributy testů, black vs. white box, akceptační, kvalifikační, regresní testy, automatizace testů. |   Ne 25 | BI-WSI-SI-23 | BI-SI2.3 | Softwarový proces a jeho zlepšování: standardy, základní model SPI (software process improvement) a přístupy (prescriptive, inductive, best practices), proces organizace, projektu, jedince a souvislosti. |   Ne 26 | BI-WSI-SI-24 | BI-SI2.3 | Projektové řízení a měření: modely SDLC, plánování krátkodobé a dlouhodobé, kategorie metrik a jejich využití, historie projektu, řízení rizik, odhady, způsob jejich tvorby a verifikace. |   Ne 27 | BI-WSI-SI-25 | BI-SI2.3 | Konfigurační řízení: řízení verzí, řízení změn, správa prostředí, continuous integration, řízení dodávek, vzájemné souvislosti. |   Ne 28 | BI-WSI-SI-26 | BI-SI2.3 | Údržba: život softwarového díla, role a význam údržby, vazba na SDLC a jednotlivé činnosti softwarového inženýrství, servisní smlouva, role měření (pracnosti, nákladů a dalších metrik) při údržbě. |   Ne 29 | BI-WSI-SI-27 | BI-TJV | Architektura podnikových aplikací. Popis jednotlivých vrstev JEE aplikací: klientská vrstva, webová vrstva, vrstva obchodní logiky, EIS vrstva. |   Ano 30 | BI-WSI-SI-28 | BI-TJV | JDBC v podnikových aplikacích: popis JDBC obecně, popis dat datového zdroje (DataSource), nastavení datových zdrojů v aplikačním serveru (JDBC Connection Pool, JDBC Resources). |   Ano 31 | BI-WSI-SI-29 | BI-TJV | Aplikační server a JNDI služba: popis aplikačního serveru, webový kontejner, EJB kontejner, využití JNDI ke konfiguraci datových zdrojů. | Ano 32 | BI-WSI-SI-30 | BI-TJV | Komponenty obchodní logiky EJB. Typy JavaBeans z pohledu uchování stavu (session). Životní cyklus nestavové a stavové EJB. Mechanismus injektování EJB. Popis rozhraní @Local a @Remote. |  Ne 33 | 34 | 35 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-08/bi-wsi-si-08.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | \topic{Čisté objektové paradigma — klíčové pojmy, abstrakce, chování.} 4 | \code{BI-WSI-SI-08} 5 | \subject{OOP} 6 | 7 | \begin{document} 8 | 9 | \tableofcontents 10 | \newpage 11 | 12 | \section{Základní pojmy} 13 | 14 | \begin{itemize} 15 | \item \textbf{Třída} -- Vzor pro objekt. Definuje vlastnosti a chování objektů vytvářených podle tohoto vzoru. 16 | \item \textbf{Objekt} -- Instance třídy. Uchovává svůj vlastní vnitřní stav. Má vlastní identifikátor, 17 | kterým se odlišuje od ostatních objektů stejné třídy (objekt je vždy jedinečný v rámci programu). 18 | 19 | Chování objektu (\textit{behaviour}) je definované jeho třídou. Objekt reaguje na zasílané zprávy 20 | (\textit{messages}) tak, že provede příslušnou metodu definovanou pro jeho třídu (\textbf{method lookup}). 21 | 22 | Objekt má zodpovědnost: sadu problémů, které řeší. (viz. \textbf{distribution of responsibility}, \textbf{separation of concerns}). 23 | 24 | \begin{itemize} 25 | \item \textbf{atributy} -- udržují vnitřní stav objektu 26 | \item \textbf{metody} -- využívají nebo mění vnitřní stav objektu 27 | \end{itemize} 28 | 29 | \item \textbf{Zpráva (Message)} -- \textit{What to do?} 30 | 31 | Zpráva odeslaná cílovému objektu, aby něco provedl. Různí příjemci mohou reagovat na stejnou zprávu různě. 32 | Příjemce je známý až při chodu programu (\textbf{late binding}). 33 | 34 | \item \textbf{Metoda (Method)} -- \textit{How to do it?} 35 | 36 | Sekvence instrukcí pro vyřešení problému. Definice, jak odpovědět na zprávu. 37 | Jakou metodu vybrat při danné zprávě se určuje dynamicky za běhu programu (\textbf{late binding}) podle procesu \textbf{method lookup}. 38 | 39 | \end{itemize} 40 | 41 | \section{OOP foundations} 42 | 43 | Základy pro objektově orientované paradigma. 44 | 45 | \subsection{Abstrakce} 46 | 47 | Objekt vytváří určitou abstrakci, která schovává interní implementaci a detaily před ostatními objekty. 48 | \textit{Ostatní objekty mohou s konkrétním objektem komunikovat pouze zasíláním zpráv a nesmějí vědět, 49 | jak konkrétní objekt funguje uvnitř}. 50 | 51 | \subsection{Encapsulation} 52 | 53 | \textit{information hiding, zapouzdření} 54 | 55 | Vnitřní stav objektu není přístupný zvenčí. Stav objektu je udržován pomocí jeho atributů. 56 | Ty lze měnit a číst pouze pomocí metod. Tím má objekt větší kontrolu nad změnami svého stavu. 57 | 58 | \subsection{Composition} 59 | 60 | Třída může být závislá na jednom či více jiných objektech. To má za následek: 61 | \begin{itemize} 62 | \item delegování problémů na jiné objekty pro lepší znovupoužitelnost kódu, 63 | \item výměna implementace dílčího objektu nijak neovlivní chování objektu, který s ním pracuje. 64 | \end{itemize} 65 | 66 | \subsection{Distribution of responsibility} 67 | 68 | \textit{separation of concerns} 69 | 70 | Rozdělení zodpovědnosti (funkcionality nebo chování) mezi objekty tak, aby se co nejméně překrývaly 71 | (aby implementace zabrala co nejméně kódu, tedy znovupoužitelnost kódu byla co nejvyšší). 72 | 73 | \subsection{Message passing} 74 | 75 | \textit{delegating responsibility} 76 | 77 | 78 | Delegování zodpovědoností na dílčí objekty. 79 | Vyhodnocování metody objektu (\textit{receiver}) v kontextu jiného objektu (\textit{sender}). 80 | 81 | \begin{itemize} 82 | \item \textbf{explicit} -- Předání \textit{sender} objektu do \textit{receiver} objektu. 83 | \item \textbf{implicit} -- \textit{Receiver} objekt provede \textit{method lookup} podle zaslané zprávy (Pharo). 84 | \end{itemize} 85 | 86 | \subsection{Inheritance} 87 | 88 | Zakládání vlastností jedné třídy (\textit{child class}, \textit{derived class} nebo \textit{subclass}) na 89 | jiné nadřazené třídě (\textit{parent class}, \textit{base class} nebo \textit{super class}). 90 | Mezi třídami pak vzniká stromová hierarchie. \textit{Sub class} získává všechny vlastnosti svojí 91 | \textit{super class} a přidává nové. 92 | 93 | \paragraph{Polymorphism} 94 | Jednotné rozhraní pro různé datové typy objektů. \textit{K objektům různých typů lze přistupovat pomocí jednoho 95 | rozhraní}. 96 | Dynamický polymorfismus: Jaký konkrétní objekt se použije se vybere až za běhu programu (\textbf{late binding}). 97 | 98 | 99 | \section{OOP foundations ideas} 100 | 101 | \paragraph{Uniform reference} 102 | Všechno je objekt. Každá entita OO programu je objekt. 103 | 104 | \paragraph{Uniform access} 105 | Všechno se provádí pouze pomocí zasílání zpráv mezi objekty. 106 | 107 | 108 | \end{document} 109 | -------------------------------------------------------------------------------- /topics/bi-spol-11/bi-spol-11.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage[czech]{babel} 3 | 4 | \subject{DBS} 5 | \code{BI-SPOL-11} 6 | \topic{3 úrovně pohledu na data (konceptuální, implementační, fyzická). Struktury pro ukládání dat v relačních databázích s ohledem na rychlý přístup k nim (speciální způsoby uložení, indexy apod.)} 7 | 8 | \begin{document} 9 | 10 | \tableofcontents 11 | \newpage 12 | 13 | \section{3 úrovně pohledu na data} 14 | \begin{figure}[h!] 15 | \centering 16 | \includegraphics[width = \textwidth]{topics/bi-spol-11/images/views.png} 17 | \end{figure} 18 | \begin{description} 19 | \item[Konceptuální] Modelování reality (Obvykle se zachycuje se UML diagramem nebo ER modelem). Snaží se nebýt ovlivněna prostředky řešení. 20 | \item[Implementační] Konkrétní databázový model, konstrukční dotazovací a manipulační prostředky (relační, objektová, síťová, hierarchická, XML, \dots) 21 | \item[Fyzická] Sekvenční soubory, indexy, clustery apod. 22 | \end{description} 23 | 24 | \section{Konceptuální modelování databází} 25 | \begin{itemize} 26 | \item společné chápání objektu aplikace uživateli a projektanty 27 | \item integrace několika uživatelských pohledů 28 | \item výsledek je vstupem do realizace DB 29 | \item slouží jako dokumentace 30 | \end{itemize} 31 | 32 | \section{Implementační} 33 | \begin{itemize} 34 | \item nejnižší míra abstrakce 35 | \item v této fázi probíhá realizace datové struktury, popsané v konceptuálním modelu 36 | \item model je zde transformován do modelu odpovídající konkrétní technologii 37 | \item musí zohledňovat všechny dostupné prostředky a možnosti 38 | \item popisuje, čím je datový obsah systému, popsaný konceptuálním a strukturálním modelem, realizován 39 | \end{itemize} 40 | 41 | \section{Fyzický pohled} 42 | \subsection{Struktury pro ukládání dat v relačních DB s ohledem na rychlý přístup k nim (speciální způsoby uložení, indexy apod.)} 43 | \subsubsection{Heap} 44 | \begin{itemize} 45 | \item nové záznamy přidány do libovolného prázdného místa 46 | \item žádné uspořádání 47 | \item hledání je O(n) 48 | \end{itemize} 49 | \subsubsection{Heap s indexy} 50 | \begin{itemize} 51 | \item záznamy jsou uspořádány 52 | \item víme, když už můžeme ukončit hledání 53 | \end{itemize} 54 | \subsubsection{Cluster index} 55 | \begin{itemize} 56 | \item index pages 57 | \item struktura už obsahuje samotné záznamy 58 | \item můžeme mít jenom jeden clustered index nad stejnými daty 59 | \end{itemize} 60 | \subsubsection{Noncluster index} 61 | \begin{itemize} 62 | \item ukazatele do samotných záznamů 63 | \item libovolná organizace indexu (ROW ID) 64 | \end{itemize} 65 | \subsubsection{Bitmapové indexy} 66 | \begin{itemize} 67 | \item binární matice 68 | \item předem vypočítané odpovědi na jednoduché otázky (true/false), a to pro každý záznam 69 | \item DLM operace velmi drahé 70 | \item spíš pro DSS (ne OLTP) 71 | \item vhodné pro záznamy s velmi neunikátními položkami 72 | \end{itemize} 73 | DSS = decission support system - velká rozhodnutí, založena na historických datech \newline 74 | OLTP = online transaction processing - aktuální data, každodenní transakce 75 | \subsubsection{Shluk} 76 | Tabulky dané do jednoho shluku. 77 | \begin{figure}[h!] 78 | \centering 79 | \includegraphics[width = \textwidth]{topics/bi-spol-11/images/cluster.png} 80 | \end{figure} 81 | 82 | \subsubsection{Index typu B*-Tree} 83 | \begin{figure}[h!] 84 | \centering 85 | \includegraphics[width = \textwidth]{topics/bi-spol-11/images/bTree.png} 86 | \end{figure} 87 | \begin{itemize} 88 | \item kořen má nejméně 2 potomky, pokud není listem 89 | \item každý uzel kromě kožene a listu má nejméně [m/2] a nejvýše m potomků 90 | \item každý uzel má nejméně [m/2] - 1 a nejvíce m - 1 datových záznamů 91 | \item všechny cesty ve stromě jsou stejně dlouhé 92 | \item data v nelistovém uzlu jsou organizována 93 | \item listy obsahují úplnou množinu klíču a mohou se lišit strukturou 94 | \end{itemize} 95 | \section{Důležité poznatky} 96 | \begin{itemize} 97 | \item (relační) databáze bez indexu nefungují rozumně - indexy jsou nutné (pro větší data) 98 | \item DB stroj často některé indexy vytváří automaticky kvůli kontrole IO (integritní omezení) 99 | \item v OLTP se nejčastěji používají indexy na bázi B-stromů (tam kde jsou data unikátní) 100 | \item kde jsou data velmi neunikátní a potřebují se indexovat, tam se používají bitmapové indexy 101 | \item indexy je třeba udržovat (zjednodušeně - ušetřím na dotazech, platím více při DML) 102 | \item klič indexu (indexované atributy) může být složený 103 | \item index může být unikátní/neunikátní 104 | \end{itemize} 105 | \end{document} 106 | -------------------------------------------------------------------------------- /topics/bi-spol-30/bi-spol-30.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | \code{BI-SPOL-30} 4 | \subject{SI1.2} 5 | \topic{Nástroje pro podporu tvorby softwarových produktů: Sledování chyb a správa úkolů (používané nástroje, typický životní cyklus úkolu/chyby), 6 | správa a sdílení zdrojových kódů (principy řešení spolupráce, hlavní přínosy, používané nástroje).} 7 | \author{Jakub Rathouský} 8 | 9 | \begin{document} 10 | 11 | \tableofcontents 12 | \newpage 13 | 14 | \section{Správa úkolů, požadavků, chyb} 15 | Pomáhá vyřešit organizaci práce v týmu 16 | \begin{itemize} 17 | \item evidence úkolů - co je nutné udělat 18 | \item přidělování - kdo to bude dělat 19 | \item plánování - do kdy je nutné úkol udělat 20 | \item kontrola splnění úkolů 21 | \item vyhodnocení odvedené práce 22 | \end{itemize} 23 | \subsection{Používané nástroje} 24 | \begin{itemize} 25 | \item Trac tickets 26 | \item Mantis 27 | \item Bugzilla 28 | \item JIRA 29 | \item GitLab/Github 30 | \item Redmine 31 | \item Youtrack 32 | \end{itemize} 33 | \subsection{Typický životní cyklus úkolu/chyby} 34 | Kroky: 35 | \begin{itemize} 36 | \item Team leader/project manager vyvoří úkol/nahlášení chyby $\rightarrow$ stav \textit{\textbf{Nový(New)}} 37 | \item přiřazení úkolu řešiteli (Team leader), převzetí úkolu řešitelem $\rightarrow$ stav \textit{\textbf{Přiřazemý(Assigned)}} 38 | \item dokončení úkolu $\rightarrow$ stav \textit{\textbf{Vyřešený(Resolved)}} 39 | \begin{itemize} 40 | \item reportér nesouhlasí s řešením $\rightarrow$ stav \textit{\textbf{Znovuotevřený(Reopen)}} 41 | \begin{itemize} 42 | \item dokončení úkolu $\rightarrow$ stav \textit{\textbf{Vyřešený(Resolved)}} 43 | \item nebo přiřazení úkolu jinému řešiteli $\rightarrow$ stav \textit{\textbf{Přiřazený(Assigned)}} 44 | \end{itemize} 45 | \item nebo potvrzení vyřešení reportérem $\rightarrow$ stav \textit{\textbf{Uzavřený(Closed)}} 46 | \end{itemize} 47 | \end{itemize} 48 | \begin{figure} 49 | \centering 50 | % \includegraphics[width=1.3\textwidth]{images/cycle.png} 51 | \includegraphics[width=1\textwidth]{topics/bi-spol-30/images/cycle.png} 52 | \end{figure} 53 | \newpage 54 | \section{Sdílení a správa souborů} 55 | \subsection{Hlavní přínosy} 56 | Řeší více dílčích problémů 57 | \begin{itemize} 58 | \item verzování 59 | \begin{itemize} 60 | \item udržuje kompletní historii každého souboru pod správnou verzí 61 | \item lze se k jednotlivým verzím v minulosti kdykoliv vrátit 62 | \end{itemize} 63 | \item zálohování 64 | \begin{itemize} 65 | \item v případě poškození/ztráty souborů je možné je obnovit 66 | \end{itemize} 67 | \end{itemize} 68 | \subsection{Používané nástroje} 69 | \begin{itemize} 70 | \item centralizované 71 | \begin{itemize} 72 | \item SVN 73 | \item CVS 74 | \end{itemize} 75 | \item distribuované 76 | \begin{itemize} 77 | \item GIT 78 | \item Mercurial 79 | \end{itemize} 80 | \end{itemize} 81 | \subsubsection{Centralizované nástroje} 82 | \begin{itemize} 83 | \item veškeré revize/verze souborů jsou uloženy pouze v centrálním repozitáři 84 | \item na lokálním počítači je pouze pracovní kopie (aktuální revize/verze) souborů 85 | \end{itemize} 86 | \subsubsection{Distribuované nástroje} 87 | \begin{itemize} 88 | \item na lokálním počítači jsou uloženy všechny revize/verze 89 | \item díky tomu může být velká část operací prováděna lokálně 90 | \end{itemize} 91 | \subsection{Principy řešení spolupráce} 92 | Dělí se na dva principy 93 | \begin{itemize} 94 | \item zamknutí - úprava - odemknutí (lock - modify - unlock) $\rightarrow$ pouze centralizované systémy 95 | \item kopie - úprava - sloučení (copy - modify - merge) $\rightarrow$ centralizované i distribuované systémy 96 | \end{itemize} 97 | \subsubsection{zamknutí - úprava - odemknutí} 98 | \begin{itemize} 99 | \item může způsobit organizační problém 100 | \begin{itemize} 101 | \item zbytečně blokovaní práce uživatelů při zapomenutí odemknutí po dokončení práce 102 | \item nutnost násilného uvolnění zámku, které může způsobit ztrátu odvedené práce 103 | \end{itemize} 104 | \item vynucuje serializovaný přístup i při nekonfliktních úpravách 105 | \item využítí pro soubory, které nelze po částech sloučit (grafika, modely...) 106 | \end{itemize} 107 | \subsubsection{kopie - úprava - sloučení} 108 | \begin{itemize} 109 | \item častěji využívaný způsob spolupráce 110 | \item odstaňuje problémy zamykacího režimu 111 | \item v případě konfliktních změn je nutné provést ruční sloučení 112 | \end{itemize} 113 | \end{document} -------------------------------------------------------------------------------- /topics/bi-wsi-si-18/bi-wsi-si-18.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | \topic{Analýza a správa požadavků (cíle, kategorizace, UML diagram případů užití, scénáře případů užití, UML diagram aktivit).} 4 | \code{BI-WSI-SI-18} 5 | \subject{SI1.2} 6 | 7 | \begin{document} 8 | 9 | \tableofcontents 10 | \newpage 11 | 12 | \section{Analýza a správa požadavků} 13 | \subsection{Cíle} 14 | \begin{itemize} 15 | \item Vymezit hranice systému 16 | \item Umožnit přesnější odhad pracnosti 17 | \item Vyjasnit si zadání se zákazníkem 18 | \item Zachytit omezení, která jsou na IS kladena 19 | \end{itemize} 20 | 21 | \subsection{Kategorizace základní} 22 | \begin{itemize} 23 | \item Funkční 24 | \item Obecné (Nefunkční) 25 | \begin{itemize} 26 | \item Určují omezení kladená na systém 27 | \item Mají zásadní dopad na návrh architektury 28 | \item Určují dodržování standardů 29 | \end{itemize} 30 | \end{itemize} 31 | 32 | \subsection{FURPS} 33 | \begin{description} 34 | \item[F (functionality)] - funkčnost 35 | \item[U (usability)] - použitelnost 36 | \item[R (reliability)] - spolehlivost 37 | \item[P (performace)] - výkon 38 | \item[S (supportability)] – podporovatelnost / rozšiřitelnost 39 | \end{description} 40 | 41 | \subsection{Evidované informace} 42 | \begin{itemize} 43 | \item Název požadavku 44 | \item Zkratka – usnadňuje odkazování na požadavek 45 | \item Popis – nejdůležitější část 46 | \item Typ (kategorie) 47 | \item Priorita 48 | \item Složitost 49 | \end{itemize} 50 | 51 | \subsection{Zdroje informací} 52 | \begin{itemize} 53 | \item Komunikace se zákazníkem 54 | \item Model obchodních procesů 55 | \item Zadávací dokumentace 56 | \end{itemize} 57 | 58 | \subsection{Splnění požadavků} 59 | \begin{itemize} 60 | \item vždy ověřitelné 61 | \item jasné 62 | \item mají priority 63 | \end{itemize} 64 | 65 | 66 | \section{Případy užití} 67 | \begin{itemize} 68 | \item Detailní specifikace funkčních požadavků. 69 | \item Typicky se jednotlivé požadavky rozpadají na několik případů užití. 70 | \item Skládá se z: 71 | \begin{itemize} 72 | \item Seznam účastníků 73 | \item Diagram případů užití 74 | \item Seznam případů užití (název, zkratka, popis, scénář, podmínky) 75 | \end{itemize} 76 | \end{itemize} 77 | 78 | \subsection{Využití} 79 | \begin{itemize} 80 | \item Základ pro tvorbu uživatelské příručky 81 | \item Podklady k tvorbě akceptačních testů 82 | \item Zpřesnění odhadů pracnosti 83 | \item Zadání pro programátora 84 | \end{itemize} 85 | 86 | \subsection{Chyby} 87 | \begin{itemize} 88 | \item Diagram případů užití nemá znázorňovat tok událostí. (Od toho jsou jiné typy diagramů.) 89 | \item Diagram případů užití nemá znázorňovat datové paměti. 90 | \item Případ užití bez účstníků nemá žádný význam. 91 | \item Případy užití nenaznačují komunikaci mezi aktéry. 92 | \item Počet funkčních požadavků nemá být stejný jako počet případů užití. 93 | \end{itemize} 94 | 95 | \section{Modelování} 96 | \subsection{Případy užití} 97 | \begin{description} 98 | \item[include] - Začlenění shodných částí scénářů 99 | \item[extend] - Společná část nemusí být povinná 100 | \end{description} 101 | 102 | \subsection{Diagram aktivit} 103 | \begin{itemize} 104 | \item Ve skupině diagramů chování 105 | \item Swimlines - Zóny zodpovědnosti 106 | \item Objektový uzel - Zachycení stavu objektu 107 | \end{itemize} 108 | 109 | \begin{figure}[ht!] 110 | \centering 111 | \begin{minipage}{.5\textwidth} 112 | \begin{itemize} 113 | \item Aktivita 114 | \item Odeslání události 115 | \item Přijetí události 116 | \item Časová událost 117 | \end{itemize} 118 | \end{minipage}% 119 | \begin{minipage}{.5\textwidth} 120 | \begin{itemize} 121 | \item Počáteční uzel 122 | \item Koncový uzel 123 | \item Rozhodnutí (větvění/spojení) 124 | \item Paralelní souběh (fork/join) 125 | \item Konec toku 126 | \end{itemize} 127 | \end{minipage} 128 | \end{figure} 129 | 130 | \begin{figure}[ht!] 131 | \centering 132 | \begin{minipage}{.5\textwidth} 133 | \centering 134 | \includegraphics[width=.4\linewidth]{topics/bi-wsi-si-18/images/akcni-uzly.png} 135 | \caption{Akční uzly} 136 | \end{minipage}% 137 | \begin{minipage}{.5\textwidth} 138 | \centering 139 | \includegraphics[width=.4\linewidth]{topics/bi-wsi-si-18/images/ridici-uzly.png} 140 | \caption{Řídící uzly} 141 | \end{minipage} 142 | \end{figure} 143 | 144 | \begin{figure}[ht!] 145 | \centering 146 | \includegraphics[width=.75\linewidth]{topics/bi-wsi-si-18/images/diagram-aktivit.png} 147 | \caption{Příklad diagramu aktivit} 148 | \end{figure} 149 | 150 | \subsection{Chyby} 151 | \begin{itemize} 152 | \item Pro větvení slouží \emph{Rozhodnutí} nebo \emph{Paralelní souběh}. 153 | \item Nemíchat stav objektů s aktivitami. 154 | \end{itemize} 155 | \end{document} 156 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-16/bi-wsi-si-16.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{dependencies/szz-code} 3 | 4 | \subject{PPA} 5 | \code{BI-WSI-SI-16} 6 | \topic{Logické programování, Prolog: fakta, pravidla, dotazy, způsob vyhodnocení dotazů, unifikace, operátor řezu.} 7 | 8 | \begin{document} 9 | 10 | \tableofcontents 11 | \newpage 12 | 13 | \section{Logické programování} 14 | 15 | \begin{itemize} 16 | \item Založeno na predikátové logice 17 | \item Vhodné zejména ve specifických aplikačních oblastech: databázové aplikace, automatické dokazování, umělá inteligence, \dots 18 | \item Prolog 19 | \item Deklarativní zápis programů, nezajímá se o složitost výpočtu 20 | \end{itemize} 21 | 22 | \section{Prolog} 23 | Program Prologu se skládá z Hornových klauzulí. Skládají se z těla a hlavičky a mohou to být: 24 | \begin{description} 25 | \item[Fakta] - s hlavou bez těla, vždy pravdivý 26 | \item[Pravidla] - s hlavou a tělem, pokud jsou splněny podmínky v těle, je pravdivý 27 | \item[Dotazy] - bez těla 28 | \end{description} 29 | 30 | \begin{minted}{prolog} 31 | hlavicka(jablko, jahoda). % fakt 32 | hlavicka(Promenna,X) :- telo(X). % pravidlo 33 | ?- hlavicka(X,konstanta). % dotaz 34 | \end{minted} 35 | 36 | \begin{itemize} 37 | \item Term 38 | \begin{itemize} 39 | \item Struktury - funktor a seznam argumentů \mintinline{prolog}{parent(josef,jan)} 40 | \item Jednoduché objekty 41 | \begin{itemize} 42 | \item Konstanty 43 | \begin{itemize} 44 | \item Atomy - začínají malým písmenem \mintinline{prolog}{jana} 45 | \item Čísla - \mintinline{prolog}{12 -34.5} 46 | \end{itemize} 47 | \item Proměnné - Začínají velkým písmenem \mintinline{prolog}{X, Name, _} 48 | \end{itemize} 49 | \end{itemize} 50 | \end{itemize} 51 | 52 | \subsection{Seznamy} 53 | \begin{itemize} 54 | \item \mintinline{prolog}{[] % prázdný seznam} 55 | \item \mintinline{prolog}{[1]} 56 | \item \mintinline{prolog}{[1,2,3]} 57 | \item \mintinline{prolog}{[[1,2], 3]} 58 | \item \mintinline{prolog}{[a | [b,c]] % oddělení hlavy od těla} 59 | \end{itemize} 60 | 61 | \subsection{Způsob vyhodnocení dotazů} 62 | \begin{itemize} 63 | \item Na program v Prologu lze nahlížet jako na databázi faktů a pravidel. 64 | \item Vyhodnocuje se na principu procházení stavového prostoru, pravidla procházena DFS a tělo zleva doprava. 65 | \item Řešení se hledá metodou backtrackingu. 66 | \end{itemize} 67 | 68 | \subsection{Unifikace} 69 | Jsou tři různé operátory podobné rovnosti: 70 | \begin{samepage} 71 | \begin{itemize} 72 | \item \textbf{\mintinline{prolog}{X is Y}} - Y se provede a unifikuje výsledek s X: 73 | \begin{itemize} 74 | \item \mintinline{prolog}{3 is 1+2} projde 75 | \item \mintinline{prolog}{1+2 is 3} selže. 76 | \end{itemize} 77 | \item \textbf{\mintinline{prolog}{X = Y}} - unifikuje X a Y, bez provádění: 78 | \begin{itemize} 79 | \item \mintinline{prolog}{3 = 1+2} selže 80 | \item \mintinline{prolog}{1+2 = 3} selže. 81 | \end{itemize} 82 | \item \textbf{\mintinline{prolog}{X =:= Y}} - obojí provede a porovná: 83 | \begin{itemize} 84 | \item \mintinline{prolog}{3 =:= 1+2} projde 85 | \item \mintinline{prolog}{1+2 =:= 3} projde. 86 | \end{itemize} 87 | \end{itemize} 88 | \end{samepage} 89 | 90 | Dva termy se unifikují, když: 91 | \begin{itemize} 92 | \item X, Y jsou proměnné. X a Y se unifikuji a výsledek je kladný. 93 | \item X, Y je-li jedna proměnná a druhá term. Substituuje term za proměnnou. 94 | \item X, Y jsou stejné termy. 95 | \item X, Y jsou struktury, tvořené stejným funktorem, počtem parametrů a jejich parametry si odpovídají. 96 | \end{itemize} 97 | 98 | \subsection{Operátor řezu} 99 | \begin{itemize} 100 | \item Řez fixuje přijaté „částečné řešení“ – omezuje splnění podcílů vlevo od řezu na jedinou možnost. 101 | \item Překročení řezu zamezí využití ostatních pravidel. 102 | \item Řez neovlivňuje zpětný chod vpravo do svého výskytu. 103 | \end{itemize} 104 | 105 | \begin{minted}{prolog} 106 | % přidání prvku X na jeho začátek ovšem jen v tom případě, že X v L již není 107 | % pridej(+X,+L,-NL) seznam NL vznikne ze seznamu L 108 | pridej(X,L,L) :- prvek(X,L), % je-li X již prvkem L, nepřidám ho 109 | ! . % a zakáži návrat 110 | pridej(X,L,[X|L]). % X není prvkem L (jinak bych se sem nedostal), mohu ho tedy přidat 111 | \end{minted} 112 | 113 | \subsection{Operátor fail} 114 | \emph{"Jana má ráda muže, ale ne plešaté."} 115 | 116 | Bez operátoru řezu to nejde. S ním a se standardním predikátem fail, který, je-li volán, okamžitě selže, ji sestavíme poměrně snadno: 117 | 118 | \begin{minted}{prolog} 119 | marada(jana,X) :- plesaty(X), % je-li X plešaté uspěje, 120 | !, % zakáže návrat 121 | fail. % a selže. 122 | marada(jana,X) :- % k této klauzuli se výpočet dostane, pokud X není plešaté, 123 | muz(X). % je-li to muz, má ho Jana ráda 124 | \end{minted} 125 | 126 | \end{document} 127 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-29/bi-wsi-si-29.tex: -------------------------------------------------------------------------------- 1 | % TODO: Dodělat 2 | \documentclass{szzclass} 3 | \usepackage{dependencies/szz-code} 4 | \usepackage{hyperref} 5 | 6 | \subject{TJV} 7 | \code{BI-WSI-SI-29} 8 | \topic{Aplikační server a JNDI služba: popis aplikačního serveru, webový kontejner, EJB kontejner, využití JNDI ke konfiguraci datových zdrojů.} 9 | 10 | \begin{document} 11 | 12 | \tableofcontents 13 | \newpage 14 | 15 | \section{Aplikační server} 16 | \begin{itemize} 17 | \item Serverovou aplikaci zastřešující všechny knihovny, které dle specifikací Java EE platformy zajišťují požadovanou funkcionalitu, označujeme pojmem aplikační server. 18 | \item Tyto knihovny implementují veškerá API obsažená v Java EE. 19 | \item Kromě toho poskytuje aplikační server další klasické služby jako např. 20 | \begin{itemize} 21 | \item administrátorskou konzoli, 22 | \item logování atp. 23 | \end{itemize} 24 | \item Ze známých implementací Java EE platformy můžeme zmínit např. JBoss od firmy Red Hat či JRun od firmy Adobe Systems. Referenční implementace Oracle je šířena pod hlavičkou projektu GlassFish. 25 | \item Zajišťuje: 26 | \begin{itemize} 27 | \item Vývoj webových aplikací - Java Servlets, Java Server Pages (JSP), JavaServer Faces (JSF) 28 | \item Contexts and Dependency Injection - vkládání závislostí 29 | \item Přístup k relačním databázím - Java Persistence API (ORM) 30 | \item Vývoj sdílené business logiky - Enterprise Java Beans (EJB) 31 | \item Přístup k legacy systémům - Java Connector Architecture (JCA) 32 | \item Přístup ke zprávovému middleware - Java Messaging Services (JMS) 33 | \item Komponenty zajišťující integraci webových aplikací a portálů - Portlety 34 | \item Podpora technologií Webových služeb- SOA, REST 35 | \end{itemize} 36 | \end{itemize} 37 | 38 | \begin{figure}[ht!] 39 | \centering 40 | \begin{minipage}{.5\textwidth} 41 | \centering 42 | \includegraphics[width=.75\linewidth]{topics/bi-wsi-si-29/images/image1} 43 | \end{minipage}% 44 | \begin{minipage}{.5\textwidth} 45 | \centering 46 | \includegraphics[width=.75\linewidth]{topics/bi-wsi-si-29/images/image2} 47 | \end{minipage} 48 | \end{figure} 49 | 50 | Aplikační server obsahuje dva kontejnery - webový a EJB. Ty obsahují komponenty, instantizují je a řídí jejich životní cyklus. Komponenty nemohou žít bez kontejneru. 51 | 52 | Výsledkem je .ear balíček, který je vytvořen třeba vývojovým prostředím za pomocí Mavenu, Antu nebo novějšího Gradlu. Všechny tři zmíněné nástroje jsou tzv. build systémy. Další ze známějších je Make (známe z BI-PA2), ale ten se tady nepoužívá. 53 | 54 | EJB komponenty 55 | \begin{itemize} 56 | \item Odpovídá business vrstvě z otázky \href{https://docs.google.com/document/d/1OU75LDsImR4cEsQoyfGNyibG5ECJhGRKCfJqrUlpl1Q/edit?usp=sharing}{architektura aplikací} 57 | \item Více o EJB v otázce \href{https://docs.google.com/document/d/1_yV6LyQ3dHi9VSOQhmPtGe9QXRESZDfxDK_NA9gJ1dY/edit?usp=sharing}{EJB} 58 | \item Balíček jar 59 | \end{itemize} 60 | 61 | Webový kontejner (podobně jako EJB kontejner - viz \href{https://docs.google.com/document/d/1_yV6LyQ3dHi9VSOQhmPtGe9QXRESZDfxDK_NA9gJ1dY/edit?usp=sharing}{EJB} otázka) 62 | \begin{itemize} 63 | \item Mapuje URL adresy na servlety 64 | \item Zajišťuje bezpečnost - může uživatel přistoupit k danému kontejneru? 65 | \item Řídí životní cyklus servletů - vytváření, mazání 66 | \item Pracuje s dotazy a odpověďmi serveru 67 | \item Spravuje pool servletů 68 | \end{itemize} 69 | 70 | Webové komponenty 71 | \begin{itemize} 72 | \item odpovídá definici webové vrstvy z otázky \href{https://docs.google.com/document/d/1OU75LDsImR4cEsQoyfGNyibG5ECJhGRKCfJqrUlpl1Q/edit?usp=sharing}{architektura aplikací} 73 | \item Balíček .war 74 | \end{itemize} 75 | 76 | \section{JNDI} 77 | Java Naming and Directory Interface 78 | 79 | Aplikační server zajišťuje službu JNDI. Ta na základě klíčového slova (unikátního názvu zdroje) zajistí vyhledání a předání existující konfigurace žádající aplikaci. Využívá se třeba pro získání instance EJB nebo DataSource (pro připojení k databázi). 80 | 81 | Aplikační server dále zajišťuje připojení ke zdroji a obnovení komunikace, pokud se něco podělá. Pro získání instancí slouží třída \mintinline{java}{InitialContext}, kterou si můžeme kdykoliv vytvořit. 82 | 83 | Pomocí metody \mintinline{java}{InitialContext#lookup(Name)} lze získat instanci objektu. Pokud pracujeme s databází, tak je potřeba v nastavení aplikačního serveru nastavit příslušný JDBC Resource a dát mu JNDI jméno (String) - viz otázka \href{https://docs.google.com/document/d/1Wfd-xg3CgY6YCLi15wh3ngDN0sPNNcg3bplWePlXTwM/edit}{JDBC}. 84 | 85 | Jméno EJB je generováno automaticky ze jména třídy a umístění. 86 | 87 | \begin{minted}[breaklines]{java} 88 | InitialContext ic = new InitialContext(); 89 | DataSource source = (DataSource) ic.lookup("jdbc/my_resouce_name"); 90 | MyBean bean = (MyBean) in.lookup("java:com/env/MyBean"); 91 | \end{minted} 92 | 93 | \end{document} 94 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-30/bi-wsi-si-30.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{TJV} 7 | \code{BI-WSI-SI-30} 8 | \topic{Komponenty obchodní logiky EJB. Typy JavaBeans z pohledu uchování stavu (session). Životní cyklus nestavové a stavové EJB. Mechanismus injektování EJB. Popis rozhraní @Local a @Remote.} 9 | \providecommand{\tightlist}{% 10 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 11 | 12 | \begin{document} 13 | \tableofcontents 14 | \newpage 15 | 16 | \section{EJB} 17 | Enterprise Java Beans jsou serverové komponenty umožňující modulární tvorbu podnikatelských aplikací. 18 | \newline 19 | Specifikace EJB je součástí množiny API definující Java Enterprise Edition (Java EE). 20 | \newline 21 | Cílem EJB je oddělit business logiku aplikace od prezentační a persistentní vrstvy. Poskytuje: 22 | \begin{itemize} 23 | \item znovupoužitelnost kódu 24 | \item oddělení logiky aplikace 25 | \item transakční zpracování 26 | \item bezpečnost 27 | \item intergrace s ostatními technologiemi 28 | \item jednodušší testování 29 | \end{itemize} 30 | Rozdělují se na: 31 | \begin{itemize} 32 | \item Session Beans 33 | \begin{itemize} 34 | \item statefull 35 | \item stateless 36 | \item singleton 37 | \end{itemize} 38 | \item message driven bean 39 | \end{itemize} 40 | \subsection{EJB kontejner} 41 | Dedikovaný virtuální prostor v aplikačním serveru, kam se nasazují EJB komponenty 42 | \begin{itemize} 43 | \item komunikace se vzdáleným klientem - zjednodušuje komunikaci mezi klientem a aplikací 44 | \item dependency injection - zajišťuje naplnění deklarovaných promenných (datových atributů) např. další EJB, datové zdroje (sql spojení)\dots 45 | \item pooling - vytváření poolu instancí pro bezstavové beany a message-driven beany 46 | \item řízení životního cyklu - stará se o vytváření, inicializaci a destrukci instancí 47 | \end{itemize} 48 | \subsection{Stateless (bezstavové)} 49 | \begin{itemize} 50 | \item neuchovávají stav relevatní pro klienta mezi obsluhou jeho jednotlivých požadavků 51 | \item pouze na žádost něco udělá s daty, které dostane 52 | \item recyklují se - po vykonání práce může jít do poolu 53 | \item klientu vždy na serveru přidělena samostatná instance 54 | \item thread safe 55 | \item lze použít i datové atributy instance beanu (není zaručeno, že se jejich atribyty při zavolání nezmění) 56 | \item obsahuje class notaci @Stateless 57 | \item může obsahovat atributy, které jsou injektované (JDBC spojení) 58 | \item po kompletním vytvoření se zavolají metody s notací @PostConstruct (lze v nich například zkontrolovat spojení) 59 | \item když je bean ve stavu method-ready-pool může obsluhovat klientské požadavky 60 | \item před zníčením se volají metody s anotací @PreDestroy (lze například ukončit DB spojení) 61 | \item pokud bean vyvolala výjimku = žádné @PreDestroy = okamžité odstranění beany z paměti 62 | \end{itemize} 63 | \subsection{Stateful (stavová)} 64 | \begin{itemize} 65 | \item uchovávají svůj stav mezi voláním metod (obsluha požadavků klienta) v rámci jendé seassion 66 | \item anotace třídy je @Statefull 67 | \item pro každého klienta se tvoří nová instance, při dalším volání metod se použije vždy stejný objekt obsahující data z předchozé interakce klienta 68 | \item v rámci životního cyklu může dojít k pasivaci = serializaci beanu (odstranění z paměti a uložení na disk) a následně obnovení (děje se tak, při nedostatku paměti) 69 | \item anotace @PostConstruct a @PreDestroy se chovají jako u stateless 70 | \item navíc stavy spojené s pasivací - @PrePasivate a @PostActivate 71 | \item bean může existovat po určitě dlouhou dobu - nastavuje se timeout 72 | \end{itemize} 73 | \subsection{Singleton} 74 | \begin{itemize} 75 | \item tento EJB má anotaci @Singleton 76 | \item globálně sdílený stav 77 | \item bean je synchronyzována - buď si řeší synchronizaci sama nevo pomocí anotace @Lock 78 | \end{itemize} 79 | \subsection{Message driven} 80 | \begin{itemize} 81 | \item reagují na zprávu 82 | \item pracují asynchronně - nevrací tedy odpověď 83 | \end{itemize} 84 | \section{Injection EJB} 85 | Do EJB se dá injectovat další EJB nebo i jiné třídy. K naplnění proměnných dochází při vytváření beany - vše zajišťuje EJB kontejner. 86 | Používá JNDI pro vyhledávání 87 | \begin{itemize} 88 | \item @EJB - anotace pro injectování jiné beany 89 | \item @Resource - anotace pro injectování zdrojů dat nebo kontextu 90 | \end{itemize} 91 | \section{Rozhraní} 92 | Definuje co musí daná bean implementovat, každá musí být dostupná lokálně nebo vzdáleně (nebo obojí) 93 | \subsection{Lokální} 94 | \begin{itemize} 95 | \item implicitní chování, pokud není jinak specifikováno 96 | \item lokální dostupnosti se většinou myslí, že je dostupná pro ostatní komponenty běžící na stejné JVM 97 | \item anotace @loacl 98 | \end{itemize} 99 | \subsection{Remote} 100 | \begin{itemize} 101 | \item pro volání vzdálené JVM 102 | \item například EJB běží na aplikačním serveru a komunikuje s PC uživatele 103 | \item získání instance pomocí JNDI 104 | \item anotace @Remote 105 | \end{itemize} 106 | \end{document} 107 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-14/bi-wsi-si-14.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{dependencies/szz-math} 3 | \usepackage{dependencies/szz-code} 4 | 5 | \subject{PPA} 6 | \code{BI-WSI-SI-14} 7 | \topic{Lambda kalkul: definice pojmů, operací, reprezentace čísel.} 8 | \author{ 9 | Tomáš Starý 10 | \and 11 | Daniel Hampl 12 | } 13 | 14 | \begin{document} 15 | 16 | \tableofcontents 17 | \newpage 18 | 19 | \section{Definice} 20 | 21 | Lambda ($\lambda$) kalkul je formální systém používaný v teoretické informatice a matematice pro studium funkcí a rekurze, lambda kalkul je Turing-complete. 22 | Funkce zapsané v lambda kalkulu lze poté vyhodnotit pomocí substituce. 23 | 24 | \subsection{Syntaxe lambda kalkulu} 25 | 26 | U lambda kalkulu se používá prefixový zápis, tedy operátory se píší před operandy, například \mintinline{lisp}{(+ (* 5 3)(* 5 3))}. 27 | Vyhodnocení poté probíhá zleva doprava a to následovně: 28 | \begin{enumerate} 29 | \item \mintinline{lisp}{(+ (* 5 3) (* 5 3))} 30 | \item \mintinline{lisp}{(+ 15 (* 5 3))} 31 | \item \mintinline{lisp}{(+ 15 15)} 32 | \item \mintinline{lisp}{30} 33 | \end{enumerate} 34 | 35 | Zápis funkce s proměnnou se poté zapisuje takto: $(\lambda x. + x\ 1)$. 36 | 37 | \subsection{Beta redukce} 38 | 39 | Vyhodnocování funkcí v lambda kalkulu se dělá pomocí beta ($\beta$) redukce. 40 | Beta redukce provedená na příkladu zápisu funkce: 41 | \begin{enumerate} 42 | \item $(\lambda x. + x\ 1)$ 43 | \item $(\lambda x. + x\ 1)2$ 44 | 2 za závorkou je argumentem funkce. 45 | \item $(+\ 2\ 1)$ 46 | \item 3 47 | \end{enumerate} 48 | 49 | 50 | Další platné zápisy: $(\lambda x. + x\ x)\ 2 \Rightarrow (+\ 2\ 2)$. 51 | 52 | \subsection{Volné a vázáné proměnné} 53 | 54 | V lambda kalkulu rozlišuje dva typy proměnných a to vázané a volné. Vázané proměnné jsou takové proměnné, které jsou zároveň argumentem dané funkce. Lambda kalkul má lokální rozsah platnosti (scope). Například pro funkci $(\lambda x . + x\ y)$ je vázanou proměnnou $x$ a $y$ je v tomto případě volná proměnná. 55 | 56 | \newpage 57 | 58 | \subsection{Alfa redukce} 59 | 60 | Alfa $(\alpha)$ redukce odstraňuje přetížení identifikátorů pomocí přejmenování argumentu a jeho vázaných proměnných. 61 | Ukázka na $(\lambda x . (\lambda x . +\ (-\ x\ 1))\ x\ 3)\ 9$. 62 | \begin{enumerate} 63 | \item $(\lambda y . +\ (-\ y\ 1)\ 9\ 3)$ 64 | \item $(+\ (-\ 9\ 1)\ 3)$ 65 | \item $(+\ 8\ 3)$ 66 | \end{enumerate} 67 | 68 | 69 | \subsection{Eta redukce} 70 | Eta $(\eta)$ redukce (optimalizace): $(\lambda x. fx) = f$ pokud se x nevyskytuje nikde volně v $f$. 71 | 72 | \begin{enumerate} 73 | \item $(\lambda x.(\lambda y.yy)x)$ 74 | \item $(\lambda y. yy)$ (po $\eta$ redukci) 75 | \end{enumerate} 76 | 77 | 78 | \subsection{Pořadí vyhodnocování} 79 | 80 | Rozlišujeme 2 možná pořadí vyhodnocování, normální (lazy) a aplikativní (strict), přičemž platí, že pokud lze výraz 81 | vyhodnotit více způsoby a výsledný výraz je v normálním tvaru, pak všechny způsoby produkují stejný výsledek. 82 | 83 | Normální vyhodnocování probíhá tak, že nejdříve nalezneme nejlevější $\lambda$ a její argumenty a proveď na nich substituci. 84 | Pro aplikativní vyhodnocování se postupuje tak, že opět nalezneme nejlevější $\lambda$ a její aplikuj její argumenty, pak proveď substituci. 85 | U aplikativního vyhodnocování může dojít k zacyklení. 86 | 87 | Normálním tvarem poté pokládáme takový tvar lambda výrazu, na kterém již nelze provádět beta redukci. 88 | 89 | \subsection{Zápis čísel v lambda kalkulu} 90 | 91 | Churchova čísla je způsob jak reprezentovat přirozená čísla v $\lambda$-kalkulu. Každé číslo je reprezentováno jako funkce s dvěma parametry, první parametr se $n$-krát opakuje, druhý je jakousi "zarážkou". 92 | 93 | \begin{itemize} 94 | \item $0 = (\lambda s.(\lambda z.z))$ 95 | \item $1 = (\lambda s.(\lambda z. (s z)))$ 96 | \item $2 = (\lambda s.(\lambda z. (s (s z))))$ 97 | \item $3 = (\lambda s.(\lambda z. (s (s (s z)))))$ 98 | \end{itemize} 99 | 100 | Případně ve zkráceném zápisu: $\lambda sz.z = 0 | \lambda sz. s(z) = 1$ 101 | 102 | Vybrané operace s čísly pak zavádíme následovně: 103 | \begin{itemize} 104 | \item $+~x~1 =~$succ$~= (\lambda x. \lambda s. \lambda z. s (x s z))$ 105 | \item $-~x~1 =~$pred$~= (\lambda x. \lambda s. \lambda z. x (\lambda f. \lambda g.g (f s)) (\lambda g.z) (\lambda m.m))$ 106 | \item $+~x~y =~$add$~= (\lambda x. \lambda y. \lambda s. \lambda z. x s (y s z))$ 107 | \item $*~x~y =~$mult$~= (\lambda x. \lambda y. \lambda z. x (y z)) nebo * x y = (\lambda x. \lambda y. \lambda s. \lambda z. x (y s) z)$ 108 | \end{itemize} 109 | 110 | \clearpage 111 | \subsection{Kombinátor} 112 | Výraz bez volných proměnných se nazývá kombinátor. 113 | 114 | Příklady: 115 | \begin{description} 116 | \item[Rekurze] - $Y:~\lambda f.(\lambda x.~f~(x~x))~(\lambda x.~f~(x~x))$ 117 | \item[Indentita] - $I:~\lambda x.x$ 118 | \item[Aplikace] - $APP:~\lambda f.\lambda x.(f~x)$ 119 | \item[Cyklus] - $L:~(\lambda x.(x~x)~\lambda x.(x~x))$ 120 | \end{description} 121 | 122 | \subsection{Rekurze} 123 | Rekurze se dá vytvořit pomocí Y-kombinátoru. Ukázka použití na faktoriálu: 124 | \begin{itemize} 125 | \item Y-kombinátor - $Y=\lambda f.(\lambda x.~f~(x~x))~(\lambda x.~f~(x~x))$ 126 | \item Fibonacciho posloupnost $F_0=(\lambda f.\lambda x.(=~n~0)~1~(f~(-~n~1)))$ 127 | \item $F = Y F_0 = (\lambda f.(\lambda x.~f~(x~x))~(\lambda x.~f~(x~x))) (\lambda f.\lambda x.(=~n~0)~1~(f~(-~n~1)))$ 128 | \item $F~5 = 120$ 129 | \end{itemize} 130 | 131 | \end{document} 132 | 133 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-13/bi-wsi-si-13.tex: -------------------------------------------------------------------------------- 1 | \PassOptionsToPackage{table}{xcolor} 2 | \documentclass{szzclass} 3 | 4 | \subject{PPA} 5 | \code{BI-WSI-SI-13} 6 | \topic{Rozdělení paměti při implementaci programovacích jazyků: statické části, zásobník, halda. Aktivační záznamy, mechanismus implementace volání funkcí.} 7 | 8 | \begin{document} 9 | 10 | \tableofcontents 11 | \newpage 12 | 13 | \section{Rozdělení paměti při implementaci programovacích jazyků} 14 | Běh programu běží v souvislém logickém adresovém prostoru, který je poskytován operačním systémem. Operační systém mapuje logické adresy na fyzické adresy (které nemusí tvořit souvislý celek). 15 | 16 | \begin{center} 17 | \def\arraystretch{2} 18 | \begin{tabular}{|c|} \hline 19 | Kód programu \\ \hline 20 | Statické objekty \\ \hline 21 | Halda (Heap) \\ \hline 22 | Volná paměť \\ \hline 23 | Zásobník (Stack) \\ \hline 24 | \end{tabular} 25 | \end{center} 26 | 27 | \subsection{Statické objekty} 28 | \begin{itemize} 29 | \item Globální konstanty, globální proměnné, data generované překladačem,... 30 | \item Výhody 31 | \begin{itemize} 32 | \item Nepotřebuje správu paměti při běhu programu 33 | \item Rychlý přístup (překládá se přímo adresou v paměti) 34 | \item Není nebezpečí out-of-memory 35 | \end{itemize} 36 | \item Nevýhody 37 | \begin{itemize} 38 | \item Velikost a počty musí být známy předem 39 | \end{itemize} 40 | \end{itemize} 41 | 42 | \subsection{Objekty na zásobníku} 43 | \begin{itemize} 44 | \item Každé volání funkce má svůj aktivační záznam (activation record). Podobně každý vnitřní blok. 45 | \item LIFO přístup podporuje volací a návratový mechanismus volání funkcí a procedur. 46 | \item Přirozená podpora volání funkcí a návratu z funkcí. Podpora rekurze. 47 | \item Objekty jsou vloženy na zásobník při vstupu do funkce a jsou ze zásobníku odebrány při návratu. 48 | \item Volání funkce je implementováno volací sekvencí, návrat je implementován návratovou sekvencí. 49 | \end{itemize} 50 | 51 | \subsection{Halda} 52 | \begin{itemize} 53 | \item Obsahuje dynamické objekty/proměnné vytvořené během běhu programu, např. pomocí příkazů malloc a free (C) nebo new a delete (C++). 54 | \item V některých programovacích jazycích je halda udržována pomocí garbage collection. 55 | \end{itemize} 56 | 57 | \subsection{Aktivační záznam} 58 | \begin{itemize} 59 | \item S každým voláním funkce se na zásobníku vytvoří aktivační záznam. 60 | \item Jazyky bez vnořených procedur, např. C 61 | \begin{itemize} 62 | \item Lokální statické proměnné jsou uloženy v lokálním aktivačním záznamu na zásobníku. 63 | \end{itemize} 64 | \item Jazyky s vnořenými procedurami, např. Pascal, také Lisp a funkcionální jazyky obecně, kde funkce typicky vytváří jinou funkci 65 | \begin{itemize} 66 | \item Link mezi aktivačními záznamy procedur (funkcí). 67 | \end{itemize} 68 | \end{itemize} 69 | 70 | \subsection{Základní typy předávání parametrů funkcí} 71 | \begin{itemize} 72 | \item Hodnotou 73 | \begin{itemize} 74 | \item Skutečná hodnota je vypočítána a následně zkopírována. 75 | \item Vstupní parametr, chová se jako lokální proměnná. 76 | \end{itemize} 77 | \item Odkazem 78 | \begin{itemize} 79 | \item Volající určuje adresu v paměti. 80 | \item Vstupní/výstupní proměnné. 81 | \end{itemize} 82 | \end{itemize} 83 | 84 | \subsection{Mechanismus implementace volání funkcí} 85 | \begin{center} 86 | \def\arraystretch{2} 87 | \begin{tabular}{|c|} \hline 88 | Skutečné parametry \\ \hline 89 | Návratové hodnoty \\ \hline 90 | \rowcolor{lightgray} Řídící link (link na starý aktivační záznam) \\ \hline 91 | Přístupový link (link na aktivační záznam vyšší procedury) \\ \hline 92 | \rowcolor{lightgray} Uložené údaje počítače (registry, atd\dots) \\ \hline 93 | Lokální proměnné \\ \hline 94 | Pomocné dočasné proměnné \\ \hline 95 | \end{tabular} 96 | \end{center} 97 | 98 | \begin{itemize} 99 | \item Stack pointer SP - Odkaz na vrchol zasobníku 100 | \item Frame Pointer FP - Odkaz na začátek aktualního záznamu 101 | \end{itemize} 102 | 103 | \end{document} 104 | 105 | % Z přednáškových prezentací: 106 | % Imperativní (procedurální) programy jsou popisem akcí, které mění stav (který je dán obsahem paměti). 107 | % - Základní je přiřazovací příkaz, používají se typicky vedlejší efekty (side effects), iterační cykly. 108 | % - Fortran, Algol, Cobol, Pascal, Modula-2, Ada, C. (OOP rozšíření: C++, C#, ...) 109 | % - Dominující paradigma, které je přirozené pro von Neumannovu architekturu počítače. 110 | % - Odpovídající základní model výpočtu Turingův stroj (viz AAG) 111 | % - Typické fičury: 112 | % - Klíčová operace: přířazovací příkaz 113 | % - Vedlejší efekty 114 | % - Podmíněné skoky, cykly, podmínky 115 | % - Datové typy, deklarace proměnných, bloky 116 | 117 | % Objektově orientované (OO) programování nemusí být vždy imperativní, ale většina OO jazyků je imperativních 118 | % - Spojení dat a algoritmů ve formě tříd, dědičnost, polymorfismus, ... 119 | % - Smalltalk, C++, Modula-3, Java, C# 120 | % - OO funkcionální jazyk: CLOS (Common Lisp Object System) 121 | 122 | % Funkcionální programování je zaměřeno na funkce a jejich vyhodnocování. 123 | % - Nemá přiřazovací příkaz, nemá vedlejší efekty, typické používání rekurze. 124 | % - Má funkce vyšších řádů: parametrem i výsledkem funkce může být funkce. Má typicky uzávěry (closures). 125 | % - LISP, Haskell, R, Clojure, Python 126 | % - Odpovídající základní model výpočtu lambda kalkulus (viz PPA). 127 | 128 | % Logické programování je založeno na predikátové logice 129 | % - Vhodné zejména ve specifických aplikačních oblastech: databázové aplikace, automatické dokazování, umělá inteligence, ... 130 | % - Prolog 131 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-24/bi-wsi-si-24.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{SI2} 7 | \code{BI-WSI-SI-24} 8 | \topic{Projektové řízení a měření: modely SDLC, plánování krátkodobé a dlouhodobé, kategorie metrik a jejich využití, historie projektu, řízení rizik, odhady, způsob jejich tvorby a verifikace} 9 | \providecommand{\tightlist}{% 10 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 11 | 12 | \begin{document} 13 | \tableofcontents 14 | \newpage 15 | 16 | \section{SDCL - Software development lifecycle} 17 | Jedná se o množinu aktivit nutných k tomu, aby SW vznikl. SDLC definuje vztahy, prostřední, přístup, čas a jakékoli jiné vlastnosti primárních a podpůrných činností 18 | SW inženýrství. 19 | \subsection{Agile vs Plan-Driven} 20 | Příklady modelů životního cyklu: 21 | \begin{itemize} 22 | \item waterfall 23 | \item iterativní model 24 | \item SCRUM 25 | \end{itemize} 26 | 27 | Aktivity se rozdělují na Primární a Podpůrné 28 | \begin{itemize} 29 | \item primární 30 | \begin{itemize} 31 | \item business modeling 32 | \item sběr požadavků 33 | \item analýza a návrh 34 | \item programování 35 | \item testování 36 | \item nasazení 37 | \end{itemize} 38 | \item podpurné 39 | \begin{itemize} 40 | \item projektové řízení 41 | \item správa prostředí 42 | \item změnové a konfigurační řízení 43 | \end{itemize} 44 | \end{itemize} 45 | 46 | Primární činnosti "tvoří hodnoty", probíhají do určité míry sériově (za sebou), většinou i v opakujících se cyklech. 47 | \newline 48 | Podpůrné činnosti probíhají stále, po celou dobu celého projektu a primární činnosti "zaobalují". 49 | 50 | \subsection{Waterfall - dlouhodobé plánování} 51 | Oddělené fáze: 52 | \begin{itemize} 53 | \item analýza požadavků 54 | \item design 55 | \item implementace 56 | \item testování 57 | \item provoz 58 | \end{itemize} 59 | Výhody: 60 | \begin{itemize} 61 | \item jasně definovaný plán 62 | \item predikovatelnost (čas, rozsah, cena) 63 | \item snadná koordinace práce 64 | \end{itemize} 65 | Nevýhody: 66 | \begin{itemize} 67 | \item nutno chápat, co se chce již na začátku 68 | \item reakce na změny (požadavky, termíny) 69 | \item rychlost dodávky (kdy nejdřív uvidí klient nějaký progress) 70 | \item integrace více systémů 71 | \end{itemize} 72 | \subsection{Iterativní - středně dlouhé plánování} 73 | Změny oproti vodopádu: 74 | \begin{itemize} 75 | \item několik verzí systému 76 | \item jednotlivé verze se dělají vodopádem 77 | \end{itemize} 78 | Výhody - stejné jako vodopád, jen má navíc : 79 | \begin{itemize} 80 | \item zákazník má přístup k verzím/prototypům (vidí co dostává) 81 | \end{itemize} 82 | Nevýhody 83 | \begin{itemize} 84 | \item nutno chápat, co se chce od začátku, možné změny do dalších verzí 85 | \end{itemize} 86 | \begin{figure}[h!] 87 | \centering 88 | \includegraphics[width=0.7\textwidth]{topics/bi-wsi-si-24/images/iterativeDevelopment.png} 89 | \caption{Iterativní vývoj} 90 | \end{figure} 91 | \subsection{Agilní - krátkodobé plánování} 92 | Změny oproti iterativnímu: 93 | \begin{itemize} 94 | \item mnohem kratší iterace 95 | \item jednotlivé verze ne vždy produkční 96 | \item velké nároky na celý tým 97 | \item změna myšlení 98 | \end{itemize} 99 | Výhody: 100 | \begin{itemize} 101 | \item rychlejší vývoj nové verze 102 | \item rychlejší reakce na zpětnou vazbu 103 | \item nové funkce se objeví dříve 104 | \end{itemize} 105 | Nevýhody: 106 | \begin{itemize} 107 | \item nutné kontinuální zapojení všech členů týmu 108 | \item nutný silný business vlasník 109 | \end{itemize} 110 | \section{Metriky} 111 | Základní metriky: 112 | \begin{itemize} 113 | \item Time (kalendářní čas - jak dlouho to bude trvat udělat) 114 | \item Size/Scope (jaký je rozsah) 115 | \begin{itemize} 116 | \item počet řádků kodu 117 | \item počet obrazovek 118 | \item počet tříd 119 | \item \dots 120 | \end{itemize} 121 | \item Effort (jak je to pracné - většinou udávané v MD) 122 | \item Quality (jakost - jak moc se hledí na kvalitu $\rightarrow$ výskyt chyb) 123 | \end{itemize} 124 | Pro zaznamenávání historie práce (projektů a jendotlivých úkolů) se používá Ticketovací systém (youtrack, github, redmine, \dots). 125 | Díky tomu se lépe odhadne časová pracnost na základě minulých dat. Podle naměřených metrik se odvíjí nabídka a cena. 126 | 127 | \subsection{Historie} 128 | Dokument nebo systém, který obsahuje informace a metriky z jednolivých realizovaných projektů. 129 | Na jejich základě se lépe odhadují budoucí projekt, zpřesňovat odhady nových projektů, ekonomická hlediska a náročnost práce/údržby. 130 | \subsection{Odhady, jejich tvorba a verifikace} 131 | Metody odhadů: 132 | \begin{itemize} 133 | \item Dekompozice zadání na elementární části 134 | \item odkad na základě historie 135 | \item odhad by měl být konzistetní a měl by být zkontrolován dalšími účastníky 136 | \item odhad může být proveden na základě metrik 137 | \item použití standartizovaných metodik, které pracují s historii 138 | \item lze realizovat pomocí checklistu (na které problémy se zaměřit) 139 | \end{itemize} 140 | \section{Řízení rizik} 141 | Riziko je ohrožení projektu/ceny/termínu/kvality. Musí se o nich zákazník dozvědět co nejdříve, protože mohou hrát roli 142 | při uzavření smlouvy, ceny, odhadu pracnosti\dots 143 | U každého rizika je nutné určit: 144 | \begin{itemize} 145 | \item pravděpodobnost, že nastane 146 | \item případný odhad 147 | \item jeho stav 148 | \item plán na snížení negativních dopadů 149 | \end{itemize} 150 | \end{document} -------------------------------------------------------------------------------- /topics/bi-spol-08/bi-spol-08.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | 4 | 5 | \subject{BEZ} 6 | \code{BI-SPOL-8} 7 | \topic{Infrastruktura veřejného klíče, distribuce klíčů, digitální podpis. Certifikáty, certifikační autority. Kryptograficky bezpečné generátory náhodných čísel.} 8 | 9 | \providecommand{\tightlist}{% 10 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 11 | 12 | \begin{document} 13 | 14 | \tableofcontents 15 | \newpage 16 | 17 | \section{Infrastruktura veřejného klíče} 18 | Jedná o specifikaci technických a organizačních opatření pro vydávání, správu, používání 19 | a odvolávání klíčů a certifikátů. 20 | 21 | \section{Distribuce klíčů} 22 | Při distribuci veřejného klíče hrozí podvrhnutí prostřednictvím útoku man-in-the-middle. 23 | Jedná se o útok, kde komunikace probíhá přes prostředníka, který zaměňuje předávané klíče za své, 24 | a tím může číst obsah jednotlivých zpráv. 25 | 26 | Z tohoto důvodu vzniklo několik způsobů, které tuto situaci řeší. 27 | 28 | \section{Techniky distribuce VK} 29 | \subsection{Zveřejnění VK} 30 | \begin{itemize} 31 | \item VK je zaslán individuálně nebo hromadně v rámci skupiny 32 | \item vystaví se na internet, dá se do emailu, atd\dots 33 | \item je to rychlé a jednoduché, ale není odolné proti podvržení 34 | \end{itemize} 35 | \subsection{Veřejně dostupný adresář} 36 | \begin{itemize} 37 | \item vyšší stupeň bezpečnosti 38 | \item distribuci zabezpečuje důvěryhodná autorita, která odpovídá za obsah a je správcem adresáře 39 | \item bezpečná registrace (osobně a nebo přes zabezpečenou komunikaci) 40 | \item položky jsou v adresáři ukládány jako dvojice [jméno ; VK] 41 | \item problém může nastat ve chvíli, kdy se odhalí SK patřící správci 42 | \end{itemize} 43 | \subsection{Autorita pro VK} 44 | \begin{itemize} 45 | \item autorita vykonává činnost správce adresáře 46 | \item podmínkou je, že každý účastnk zná VK autority 47 | \item každý účastník musí komunikovat s autoritou 48 | \end{itemize} 49 | \subsection{Certifikace veřejného klíče} 50 | \begin{itemize} 51 | \item jedná se o distribuci VK, bez kontaktu s třetím důvěryhodným subjektem 52 | \item vyžaduje se certifikát a certifikační autorita 53 | \end{itemize} 54 | \section{Certifikát} 55 | Jedná se o strukturu, která obsahuje: 56 | \begin{itemize} 57 | \item VK držitele certifikátu 58 | \item ID držitele certifikátu 59 | \item T doba platnosti certifikátu 60 | \end{itemize} 61 | Tato struktura je podepsána soukromým klíčem certifikační autority. Každý účastník může verifikovat obsah certifikátu pomocí veřejného 62 | klíče certifikační autority. 63 | \subsection{Řetězec certifikátů} 64 | \begin{itemize} 65 | \item posloupnost certifikátů uživatele až ke kořenovému CA 66 | \item uživatel nemusí věřit CA, stačí pouze ověřit jeden, ne nutně kořenový, certifikát 67 | \item certifikát je platný $\Leftrightarrow$ platné všechny certifikáty v řetězci certifikátu 68 | \item pokud existuje více CA pro různé okruhy lidí, vznikají oddělené stromy certifikátů 69 | \item v případě existence více stromů certifikátů, pomocí křížové certifikace, jednotlivé CA si navzájem podepíší certifikáty 70 | \end{itemize} 71 | \section{Digitální podpis} 72 | Digitální podpis je obvykle formou asymetrického kryptografického schématu. VS slouží k podepsání a VK k ověření. 73 | \newline Musí splňovat následující vlastnosti: 74 | \begin{itemize} 75 | \item nezfalšovatelnost - podpis se nedá napodobit jiným subjektem než podepisujícím 76 | \item ověřitelnost - příjemce dokumentu musí být schopen ověřit, že podpis je platný 77 | \item integrita - podepsaná zpráve se nedá změnit, aniž by se zneplatnil podpis 78 | \item nepopíratelnost - podepisující nesmí mít později možnost popřít, že dokument podepsal 79 | \end{itemize} 80 | 81 | Digitální podpisi se dělí na: 82 | \begin{itemize} 83 | \item přímé - předají si podpis dvě strany mezi sebou (problém s popíratelností) 84 | \item verifikované - využívá důvěryhodnou třetí stranu, která ověřuje podpisy všech zpráv 85 | \end{itemize} 86 | 87 | \section{Kryptograficky bezpečné generátory náhodných čísel} 88 | Náhodné číslo - čislo vygenerované procesem, který má nepředpovídatelný výsledek a jehož průběh 89 | nelze přesně reprodukovat. Tomuto procesu říkáme generátor náhodných čísel. 90 | 91 | Od náhodných posloupností očekáváme dobré statistické vlastnosti: 92 | \begin{itemize} 93 | \item rovnoměrné rozdělení - všechny hodnoty jsou generovány stejnou pravděpodobností 94 | \item jednotlivé generované hodnoty jsou nezávislé - není mezi nimi žádná korelace 95 | \end{itemize} 96 | 97 | \subsection{Pseudonáhodné generátory} 98 | Jedná se o algoritmicky generovaná "náhodná" čísla. Generátory potřebují náhodný a tajný seed. 99 | 100 | Kryptograficky bezpečný PRNG musí splňovat: 101 | \begin{itemize} 102 | \item next-bit test: pokud se zná prvních n bitů náhodné posloupnost, nesmí existovat algoritmus, který 103 | v polynomiálním čase dokáže předpovědět další bit, s pravděpodobnstí větsí jak 1/2. 104 | \item state compromise: i když je znám vnitřní stav generátoru, nelze zpětně zrekonstruovat dosavadní vygenerovanou 105 | posloupnost. Navíc, pokud do generátoru za běhu vstupuje entropie, nemělo by být možné ze znalosti stavu 106 | předpovědět stav v dalších iteracích. 107 | \end{itemize} 108 | 109 | \subsection{Blum-Blum-Shub} 110 | Jedná se o PRNG, který by měl být kryptograficky bezpečný. 111 | \begin{center} 112 | $x_{n+1} = x^2_{n-1} mod m$ 113 | \end{center} 114 | \begin{itemize} 115 | \item $x_0$ je definováno seedem a musí být větší 1 (jinak by nefungovalo to umocňování) 116 | \item modul m = q*r, kde q i r jsou prvočísla 117 | \item pro q i r musí platit, že q/r = 3 (mod 4) 118 | \item při znalosti x0 lze dopočítat pomocí rovnice jakýkoliv člen, proto musí zůstat utajen 119 | \item pokud $x_{n+1}$ vyjde sudé, jde na výstup 0, jinak 1 120 | \end{itemize} 121 | \end{document} 122 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-19/bi-wsi-si-19.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | \code{BI-WSI-SI-19} 4 | \subject{SI1.2} 5 | \topic{Vzory používané během návrhu: třívrstvá architektura, Model View Controller, GoF vzory (Abstraktní továrna, Stav, Adaptér).} 6 | \author{Jakub Rathouský} 7 | 8 | \begin{document} 9 | 10 | \tableofcontents 11 | \newpage 12 | 13 | \section{Třívrstvá architektura} 14 | Vhodná pro složitější (enterprise) aplikace, vrstvy: 15 | \begin{itemize} 16 | \item Prezentační 17 | \item Business (doménová) 18 | \item Datová (technické služby) 19 | \end{itemize} 20 | 21 | Rozděluje se na dva typy: 22 | \begin{itemize} 23 | \item striktní - závislost vždy směrem dolů a pouze o jednu úroveň 24 | \item relaxovaná - závislost vždy směrem dolů, přes libovolný počet úrovní, nejvíce používaná 25 | \end{itemize} 26 | \subsection{Prezentační vrstva} 27 | \begin{itemize} 28 | \item obsahuje HTML stránky, šablony, třídy pro zpracování požadavků uživatelů, navigace mezi stránkami\dots 29 | \item poskytují GUI, API 30 | \item problém závislosti zdola nahoru 31 | \end{itemize} 32 | \subsection{Business vsrtva} 33 | \begin{itemize} 34 | \item business logika 35 | \item procesy a validace 36 | \item nezávislá na prezentační vrstvě a datové vrstvě 37 | \end{itemize} 38 | \subsection{Datová vrstva} 39 | \begin{itemize} 40 | \item persistence dat 41 | \end{itemize} 42 | \subsection{Výhoda třívrstvé architektury} 43 | \begin{itemize} 44 | \item oddělení business logiky od prezentační vrstvy 45 | \item nezávislost business logiky na způsobu uložení 46 | \item snadná výměna jednotlivých vrstev 47 | \item jednoduché testování 48 | \item více různých prezentačních vrstev 49 | \item znovu použitelnost 50 | \begin{itemize} 51 | \item čím nižší vrstva tím víc je možné jí znovu použít (logování, persistence, odesílání emailů\dots) 52 | \item čím vyšší vrstva, tím je specifičtější pro konkrétní projekt 53 | \end{itemize} 54 | \end{itemize} 55 | \section{Model View Controller (MVC)} 56 | Vzor řešící problém prezentační vrstvy. Založený na oddělení logiky od GUI. Třívrstvá architektura. 57 | \begin{itemize} 58 | \item model 59 | \item view 60 | \item controller - zpracovává uživatelský vstup 61 | \end{itemize} 62 | Rozděluje se na dva typy modelu: 63 | \begin{itemize} 64 | \item aktivní - upozorňuje na změny, které nastaly 65 | \item pasivní - pouze reaguje na požadavky 66 | \end{itemize} 67 | Jedná se velmi často o součást existujících řešení: 68 | \begin{itemize} 69 | \item Spring MVC 70 | \item Swing 71 | \item React, Angular 72 | \item \dots 73 | \end{itemize} 74 | \subsection{Model View Presenter (MVP)} 75 | Podobná verze MVC. Událost odchytí View, ale zpracování deleguje na Presenter. GUI založené na komponentách. 76 | \begin{itemize} 77 | \item model 78 | \item view - zpracovává uživatelský vstup 79 | \item presenter 80 | \end{itemize} 81 | 82 | \section{GoF (Gang of Four) vzory} 83 | Rozdělení: 84 | \begin{itemize} 85 | \item vzory pro vytváření objektů (creational) 86 | \begin{itemize} 87 | \item abstraktní továrna (abstract factory) 88 | \item stavitel (builder) 89 | \end{itemize} 90 | \item strukturální vzory (structural) 91 | \begin{itemize} 92 | \item adaptér (adapter) 93 | \end{itemize} 94 | \item vzory chování (behavioral) 95 | \begin{itemize} 96 | \item stav (state) 97 | \item pozorovatel (observer) 98 | \end{itemize} 99 | \end{itemize} 100 | \subsection{Abstraktní továrna (Abstract factory)} 101 | \begin{itemize} 102 | \item poskytuje rozhraní pro vytváření skupiny objektů bez znalosti konkrétní implementace 103 | \item konkrétní implementace je dána použitou továrnou 104 | \end{itemize} 105 | \begin{figure}[h!] 106 | \includegraphics[width=0.95\textwidth]{topics/bi-wsi-si-19/images/abstractFactory.png} 107 | % \includegraphics[width=0.95\textwidth]{images/abstractFactory.png} 108 | \end{figure} 109 | \subsection{Stavitel (Builder)} 110 | \begin{itemize} 111 | \item director - řídí strukturu výsledného produktu 112 | \item builder 113 | \begin{itemize} 114 | \item umít postavit jednotlivé části produktu v konkrétní technologii 115 | \item je řízen Directorem 116 | \end{itemize} 117 | \end{itemize} 118 | \begin{figure}[h!] 119 | \includegraphics[width=0.95\textwidth]{topics/bi-wsi-si-19/images/builder.png} 120 | % \includegraphics[width=0.95\textwidth]{images/builder.png} 121 | \end{figure} 122 | \newpage 123 | \subsection{Stav (State)} 124 | \begin{itemize} 125 | \item odděluje chování třídy závislé na stavu do samostatné třídy 126 | \item odstraňuje složité větvení (switch, case, if, else) 127 | \item libovolný počet stavů 128 | \item snadné přidání nového stavu 129 | \end{itemize} 130 | \begin{figure}[h!] 131 | \includegraphics[width=0.95\textwidth]{topics/bi-wsi-si-19/images/state.png} 132 | % \includegraphics[width=0.95\textwidth]{images/state.png} 133 | \end{figure} 134 | \subsection{Pozorovatel (Observer)} 135 | \begin{itemize} 136 | \item pozorující objekty se zaregistrují u pozorovaného objektu 137 | \item pozorující objekt musí implementovat požadované rozhraní 138 | \item při změně upozorní pozorovaný objekt všechny pozorující pomocí tohoto rozhraní 139 | \end{itemize} 140 | \begin{figure}[h!] 141 | \includegraphics[width=0.95\textwidth]{topics/bi-wsi-si-19/images/observer.png} 142 | % \includegraphics[width=0.95\textwidth]{images/observer.png} 143 | \end{figure} 144 | \subsection{Adaptér (Adapter)} 145 | \begin{itemize} 146 | \item konvertuje rozhraní jedné třídy na rozhraní jiné 147 | \item umožňuje propojit třídy s ruzným rozhraním 148 | \end{itemize} 149 | \begin{figure}[h!] 150 | \includegraphics[width=0.95\textwidth]{topics/bi-wsi-si-19/images/adapter.png} 151 | % \includegraphics[width=0.95\textwidth]{images/adapter.png} 152 | \end{figure} 153 | \end{document} -------------------------------------------------------------------------------- /topics/bi-spol-12/bi-spol-12.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{dependencies/szz-math} 3 | \usepackage[czech]{babel} 4 | \usepackage{bbm} 5 | 6 | % Augmented pmatrix - https://latex.org/forum/viewtopic.php?f=19&t=22393 7 | \makeatletter 8 | \renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{% 9 | \hskip -\arraycolsep 10 | \let\@ifnextchar\new@ifnextchar 11 | \array{#1}} 12 | \makeatother 13 | 14 | \DeclareMathAlphabet{\mathbbm}{U}{bbm}{m}{n} 15 | 16 | \subject{LIN} 17 | \code{BI-SPOL-12} 18 | \topic{Soustavy lineárních rovnic: Frobeniova věta a související pojmy, vlastnosti a popis množiny řešení, Gaussova eliminační metoda.} 19 | 20 | \begin{document} 21 | 22 | \tableofcontents 23 | \newpage 24 | 25 | \section{Frobeniova věta} 26 | \begin{definition} 27 | Nechť $\mathbb{A}\in T^{m,n}$. \textbf{Hodností matice} $\mathbb{A}$ nazýváme dimenzi lineárního obalu souboru řádků matice $\mathbb{A}$ (jako vektorů z $T^{1,n}$) a značíme ji $h(\mathbb{A})$: 28 | \begin{equation} 29 | h(\mathbb{A})=dim\langle \mathbb{A}_{1:},\dots,\mathbb{A}_{m:}\rangle. 30 | \end{equation} 31 | \end{definition} 32 | 33 | \begin{theorem}[Frobeniova věta] 34 | Nechť $\mathbb{A}\in T^{m,n}$. 35 | \begin{enumerate} 36 | \item Soustava $m$ lineárních rovnich o $n$ neznámých $\mathbb{A} \mathbbm{x}=\mathbbm{b}$ je řešitelná, tj. $S\neq\theta$, právě tehdy, když 37 | $$ 38 | h(\mathbb{A})=h(\mathbb{A} | \mathbbm{b}). 39 | $$ 40 | \item Je-li $h(\mathbb{A})=h$, pak množina řešení $\mathbb{A} \mathbbm{x}=\theta$ je podprostor dimenze $n-h$, tedy existuje LN soubor vektorů $(\mathbbm{z}_1,\dots,\mathbbm{z}_{n-h})$ v $T^{n,1}$ takový, že 41 | $$ S_0=\begin{cases} 42 | \{\theta\}, & \text{pokud $n=h$,} \\ 43 | \langle \mathbbm{z}_1,\dots,\mathbbm{z}_{n-h}\rangle, & \text{pokud $hn_0 \, \Rightarrow \, a_n \in H_\alpha} \big).\end{equation*} 40 | 41 | Tuto skutečnost můžeme zapsat několika možnými ekvivalentními způsoby: 42 | 43 | \begin{equation*} 44 | \lim_{n\to\infty} a_n = \alpha \quad \text{nebo} \quad \lim a_n = \alpha \quad \text{nebo} \quad a_n \to \alpha.\end{equation*} 45 | 46 | \subsection{Konvergence} 47 | Buď $(a_n)_{n=1}^\infty$ posloupnost. Pokud pro její limitu platí 48 | $\displaystyle\lim_{n\to\infty} a_n \in\mathbb{R}$, 49 | pak se nazývá konvergentní. V ostatních případech ji nazýváme divergentní. 50 | 51 | \section{Řada} 52 | \subsection{Definice} 53 | Formální výraz tvaru 54 | 55 | \begin{equation*} 56 | \sum_{k=0}^\infty a_k = a_0 + a_1 + a_2 + \cdots,\end{equation*} 57 | 58 | kde $(a_k)_{k=0}^\infty$ je zadaná číselná posloupnost, 59 | nazýváme číselnou řadou. Pokud je posloupnost částečných součtů 60 | 61 | \begin{equation*} 62 | s_n := \sum_{k=0}^n a_k, \quad n\in\mathbb{N}_0,\end{equation*} 63 | 64 | konvergentní, nazýváme příslušnou řadu také konvergentní. 65 | V opačném případě mluvíme o divergentní číselné řadě. 66 | Součtem konvergentní řady $\sum_{k=0}^\infty a_k$ 67 | nazýváme hodnotu limity $\displaystyle\lim_{n\to\infty} s_n$ 68 | 69 | 70 | \subsection{Konvergence řady} 71 | \subsubsection{Nutná podmínka konvergence} 72 | Pokud řada $\sum_{k=0}^\infty a_k$ konverguje, 73 | potom pro limitu jejích sčítanců platí 74 | $\displaystyle \lim_{k\to\infty} a_k = 0$. 75 | 76 | \textbf{Důsledek} 77 | Pokud limita posloupnosti $(a_k)^∞_k=0$ je 78 | nenulová nebo neexistuje, potom řada 79 | $\sum_{k=0}^\infty a_k$ není konvergentní. 80 | 81 | \subsubsection{Bolzano-Cauchy} 82 | Řada $\displaystyle\sum_{k=0}^\infty a_k$ 83 | konverguje právě tehdy, když pro každé 84 | $\epsilon>0$ existuje $n_0\in\textbf{R}$ 85 | tak, že pro každé $n\geq n_0$ a $p\in\mathbb{N}$ platí 86 | 87 | \begin{equation*} 88 | |a_n + a_{n+1} + \cdots + a_{n+p}| < \epsilon .\end{equation*} 89 | 90 | \subsubsection{Absolutní konvergence} 91 | 92 | Číselnou řadu $\sum_{k=0}^\infty a_k$ nazýváme absolutně 93 | konvergentní, pokud číselná řada $\sum_{k=0}^\infty |a_k|$ konverguje. 94 | 95 | Pokud řada absolutně konverguje, potom tato řada konverguje. 96 | 97 | \subsubsection{Leibnizovo kritérium} 98 | Buď $(a_k)_{k=0}^\infty$ klesající posloupnost s nezápornými členy konvergující k nule. Potom je řada 99 | 100 | \begin{equation*} 101 | \sum_{k=0}^\infty (-1)^k a_k\end{equation*} 102 | 103 | konvergentní. 104 | 105 | \subsubsection{Srovnávací kritérium} 106 | Buďte $\sum_{k=0}^\infty a_k$ a $\sum_{k=0}^\infty b_k$ 107 | číselné řady. Potom platí následující dvě tvrzení. 108 | \begin{itemize} 109 | \item Nechť pro každé $k\in\mathbb{N}$ platí nerovnost 110 | $0\leq|a_k|\leq b_k$ a nechť řada $\sum_{k=0}^\infty a_k$ 111 | konverguje. Potom řada $\sum_{k=0}^\infty b_k$absolutně konverguje. 112 | \item Nechť pro každé $k\in\mathbb{N}$ platí nerovnosti 113 | $0\leq a_k\leq b_k$ a $\sum_{k=0}^\infty a_k$ diverguje. 114 | Potom i řada $\sum_{k=0}^\infty b_k$ diverguje. 115 | \end{itemize} 116 | 117 | \subsubsection{d'Alembertovo kritérium} 118 | Nechť $a_k>0$ pro každé $k\in \mathbb{N}_0$. Pokud 119 | 120 | \begin{equation*} 121 | \lim_{k\to\infty} \frac{a_{k+1}}{a_k} > 1,\end{equation*} 122 | 123 | potom řada $\sum_{k=0}^\infty a_k$ diverguje. Pokud ovšem 124 | 125 | \begin{equation*} 126 | \lim_{k\to\infty} \frac{a_{k+1}}{a_k} < 1,\end{equation*} 127 | 128 | potom řada $\sum_{k=0}^\infty a_k$ konverguje. 129 | 130 | \subsection{Odhadování růstu} 131 | Nechť $f$ je spojitá funkce na $\langle 1,+\infty)$ a $n\in\mathbb{N}$. Je-li $f$ klesající, pak 132 | 133 | \begin{equation*} 134 | f(n) + \int_1^n f(x) \,\mathrm{d} x \leq \sum_{k=1}^n f(k) \leq f(1) + \int_1^n f(x) \,\mathrm{d}x.\end{equation*} 135 | 136 | Je-li $f$ rostoucí, pak 137 | 138 | \begin{equation*} 139 | f(1) + \int_1^n f(x) \,\mathrm{d} x \leq \sum_{k=1}^n f(k) \leq f(n) + \int_1^n f(x) \,\mathrm{d}x.\end{equation*} 140 | 141 | \subsubsection{Integráln kritérium} 142 | 143 | Buď $\displaystyle\sum_{n=1}^\infty a_n$ číselná řada s kladnými členy taková, 144 | že existuje spojitá a monotónní funkce definovaná na $\langle 1,+\infty)$ taková, 145 | že $f(n)=a_n$ pro každé $n$. Potom 146 | \begin{itemize} 147 | \item Pokud integrál $\displaystyle\int_1^\infty f(x)\,\mathrm{d}x$ konverguje, 148 | pak číselná řada $\displaystyle\sum_{n=1}^\infty a_n$ konverguje. 149 | \item Pokud integrál $\displaystyle\int_1^\infty f(x)\,\mathrm{d}x$ diverguje, 150 | pak číselná řada $\displaystyle\sum_{n=1}^\infty a_n$ diverguje. 151 | \end{itemize} 152 | 153 | 154 | 155 | 156 | 157 | 158 | \end{document} -------------------------------------------------------------------------------- /topics/bi-wsi-si-26/bi-wsi-si-26.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{SI2} 7 | \code{BI-WSI-SI-26} 8 | \topic{Údržba: život softwarového díla, role a význam údržby, vazba na SDLC a jednotlivé činnosti softwarového inženýrství, servisní smlouva, role měření (pracnosti, nákladů a dalších metrik) při údržbě.} 9 | \providecommand{\tightlist}{% 10 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 11 | 12 | \begin{document} 13 | \tableofcontents 14 | \newpage 15 | 16 | \section{Život SW díla} 17 | \begin{itemize} 18 | \item před nasazením SW kroky jako analýza, design a implementace 19 | \item po nasazení SW následuje údržba a další rozvoj 20 | \end{itemize} 21 | Čas po kterou je produkt udržován je několikanásobně delší než vývoj. Jednotlivé kroky za sebou: 22 | \newline 23 | Inception $\rightarrow$ elaboration $\rightarrow$ construction $\rightarrow$ transition $\rightarrow$ mantenance 24 | \newline 25 | Typy údržby: 26 | \begin{itemize} 27 | \item corrective (opravné) - oprava nalezených chyb a problémů 28 | \item adaptive (adaptivné) - udržení v měnícím se prostřdedí 29 | \item perfective (zdokonalovací) - zlepšování výkonnosti nebo udržitelnosti 30 | \item preventive (preventivní) - detekce a oprava chyb než se stanou skutečné 31 | \end{itemize} 32 | 33 | \section{SDLC} 34 | Při změně SW zpravidla potřebujeme procést celý vývojový cyklus znovu (analýza, design, implementace, testování, dodávka) - miniwaterfall. 35 | \newline 36 | Na rozdíl od počátečního vývoje je cyklus značně redukován, protože se zaměřuje pouze na nově dodávanou funkcionalitu. 37 | \newline 38 | Pokud jsme zároveň tvůrci produktu, je miniwaterfall velmi efektivní (system známe, tým vyvíjející původní SW se zároveň stará o jeho údržbu). 39 | \newline 40 | S rostoucím rozdílem mezi týmem vyvíjející a spravující systém je efektivita miniwaterfallu přímo úměrná kvalitě dokumentace projektu. 41 | \newline 42 | Snadno se měří náklady na údržbu - přesné odhady pro uzavření servisní smlouvy 43 | 44 | \section{Správa} 45 | \subsection{Problémy} 46 | Více různých prostředí: 47 | \begin{itemize} 48 | \item vývojové - oprava chyb, vývoj nových funkčností 49 | \item testovací - ověření oprav, kontrola neovlivnění ostatních částí 50 | \item produkční 51 | \item školící 52 | \item \dots 53 | \end{itemize} 54 | Ideální stav, když se jedná o totožné prostředí, ale dochází k problémům s: 55 | \begin{itemize} 56 | \item licencemi 57 | \item HW požadavky 58 | \item testovacími daty (obsah osobních dat/příliš velká) 59 | \end{itemize} 60 | Velikost testovacích dat, dělají se řezy dat: 61 | \begin{itemize} 62 | \item zmenšní požadavku na kapacitu disku 63 | \item zajistit reprezentativní vzorek dat (problém podle čeho data ožíznout) 64 | \item zajistit konzistenci dat (nutné neporušit referenční integritu) 65 | \item problém pro výkonnostní testy 66 | \end{itemize} 67 | Anonymizace: 68 | \begin{itemize} 69 | \item odstranic citlivé údaje - co vše je citlivé? 70 | \item zachovat délky řezů, formáty dat, závislost mezi tebulkami, odlišný obsah v závislosti na jiném údaji, vnitřní logika (např. rodné číslo) 71 | \end{itemize} 72 | Údržba cizího systému přináší mnoho problémů, je nutná dokumentace, vytvořit si znalostní bázi o řešení problémů a je nebezpečí zníčení původní architektury (architekturu navrhl někdo jiný). 73 | \newline 74 | Dodávky se rozdělují podle verzí s novými funkčnostmi a těmi, které opravují akutní opravy. Je potřeba používat CM (konfigurační řízení) pro verzování současné práce na 75 | opravách a vývoji nových funkcí. 76 | \subsection{Konfigurační řízení} 77 | Evidence nových požadavků, změn a chyb. Plánování nasazování nových verzí. 78 | Definuje process změnového řízení a eviduje všechny požadavky zákazníka. 79 | \subsection{Testování} 80 | Především regresní testy, protože testování celého systému je náročné. 81 | \subsection{Odhady} 82 | Přesné odhady jsou klíčové, aby udržba byla profitabilní. Musí být konzistetní a odchylky musíme být schopni zdůvodnit. 83 | \subsection{Metriky} 84 | Jsou klíčové pro odhady a jsou základem ceny servisní smlouvy. Sleduje se rozsah změn v MD a poměr změn vůči původní velikosti projektu. 85 | 86 | \section{Podpora} 87 | Jedná se o službu pro uživatele systému, umožňuje řešit problémy, které se během používání objeví. 88 | Typy podpory: 89 | \begin{itemize} 90 | \item po telefonu 91 | \item po emailu 92 | \item po internetu 93 | \end{itemize} 94 | Podpora se dělí do několika úrovní: 95 | \begin{itemize} 96 | \item 1. úroveň 97 | \begin{itemize} 98 | \item komunikuje se zákazníkem a snaží se identifikovat příčiny problému 99 | \item řešení hledá v databázi možných řešení, která se během provozu podpory vytváří 100 | \item vyřeší většinu problémů 101 | \end{itemize} 102 | \item 2. úroveň 103 | \begin{itemize} 104 | \item technická úroveň 105 | \item hlubší znalost daného produktu a technologie 106 | \item mohou být osoby z vývojového týmu 107 | \end{itemize} 108 | \item řeší nejvíce obtížné případy 109 | \item experti v dané oblasti 110 | \end{itemize} 111 | \subsection{Shrnutí} 112 | Typicy se jedná o dlouhodobé smlouvy. Podpora zajišťuje firmě stabilní množství práce/peněz. Velkou výhodou je dobrá znalsot systému, 113 | protože se dobře dělají odhady pracnosti nových funkcí a náročnost provádění údržby. 114 | \section{SLA - servisní smlouva} 115 | V rámci provozu systému a jeho podpory jsou garantovány určitě parametry. 116 | \begin{itemize} 117 | \item dostupnost - jak budeme k dispozici 118 | \item stabilita 119 | \item response time - za jak dlouhou dobu musíme odpověď na dotaz 120 | \item fix time - za jak dlouho musí být chyba opravena 121 | \end{itemize} 122 | Při porušení SLA hrozí sankce od zákazníka. Základem je nedeklarovat parametry, které nemůžeme ovlivnit. 123 | \newline 124 | Podpora se dá rozdělit podle doby dostupnosti (24/7, 8*5,\dots) nebo podle místa, kde se podpora koná (on-site: u zákazníka / on-call: po telefonu) 125 | 126 | \end{document} -------------------------------------------------------------------------------- /topics/bi-wsi-si-15/bi-wsi-si-15.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{dependencies/szz-code} 3 | \setminted{mathescape, escapeinside=||} 4 | 5 | \subject{PPA} 6 | \code{BI-WSI-SI-15} 7 | \topic{Funkcionální programování, funkce vyšších řádů, Lisp: atomy, seznamy, funkce, cons buňky, rekurze, mapovací funkcionály.} 8 | 9 | \begin{document} 10 | 11 | \tableofcontents 12 | \newpage 13 | 14 | \section{Funkcionální programování} 15 | \begin{itemize} 16 | \item Zaměřeno na funkce a jejich vyhodnocování. 17 | \item Nemá přiřazovací příkaz, nemá vedlejší efekty, typické používání rekurze. 18 | \item LISP, Haskell, R, Clojure, Python 19 | \item Odpovídající základní model výpočtu lambda kalkulus. 20 | \item Má funkce vyšších řádů: parametrem i výsledkem funkce může být funkce. Má typicky uzávěry (closures). 21 | \end{itemize} 22 | 23 | \section{Lisp} 24 | \begin{itemize} 25 | \item Jeden z funkcionálních programovacích jazyků. 26 | \item První jazyk, co měl garbage collection. 27 | \item Lisp je case insensitive. 28 | \end{itemize} 29 | 30 | Lisp vyhodnocuje nejdřív argumenty (podvýrazy) a potom to zbytek, pokud mu to nezakážeme příkazem \mintinline{lisp}{quote} (zkratka apostrof): 31 | \begin{minted}{lisp} 32 | '(+ 1 1) |$\Leftrightarrow$| (quote (+ 1 1))| je ve výsledku |(+ 1 1) 33 | \end{minted} 34 | 35 | \begin{figure}[H] 36 | \centering 37 | \includegraphics[width=4.2cm]{topics/bi-wsi-si-15/images/eval-tree} 38 | \caption{Vyhodnocení výrazu \mintinline{lisp}{(* (+ 1 2) (- 3 4 5))}} 39 | \end{figure} 40 | 41 | \subsection{Atomy} 42 | \begin{description} 43 | \item [čísla] \mintinline{lisp}{235.4 2e10 2/3} 44 | \item [proměnné] \mintinline{lisp}{foo 2nd-place *foo*} 45 | \item [konstanty] \mintinline{lisp}{pi t nil} 46 | \item [řetězce, znaky] \mintinline{lisp}{"Hello!" #\a} 47 | \item [pole] \mintinline{lisp}{#(1 "foo" A) #1A(1 "foo" A) #2A((A B C) (1 2 3))} 48 | \item [struktury] \mintinline{lisp}{#s(place FIT Prague)} 49 | \item [bitová pole] \mintinline{lisp}{#*10110} 50 | \item [hašovací tabulky] 51 | \end{description} 52 | 53 | \subsection{Seznamy} 54 | \begin{figure}[H] 55 | \centering 56 | \begin{minipage}{.5\textwidth} 57 | \centering 58 | \includegraphics[width=4.2cm]{topics/bi-wsi-si-15/images/list} 59 | \caption{\mintinline{lisp}{(A B C)}} 60 | \end{minipage}% 61 | \begin{minipage}{.5\textwidth} 62 | \centering 63 | \includegraphics[width=4.8cm]{topics/bi-wsi-si-15/images/list-inner} 64 | \caption{\mintinline{lisp}{(A ((B) C))}} 65 | \end{minipage}% 66 | \end{figure} 67 | 68 | \begin{figure}[H] 69 | \centering 70 | \begin{minipage}{.5\textwidth} 71 | \centering 72 | \includegraphics[width=1cm]{topics/bi-wsi-si-15/images/list-empty} 73 | \caption{Prázdný seznam \mintinline{lisp}{() = NIL}} 74 | \end{minipage}% 75 | \begin{minipage}{.5\textwidth} 76 | \centering 77 | \includegraphics[width=1cm]{topics/bi-wsi-si-15/images/list-cons} 78 | \caption{\mintinline{lisp}{(A ((B) C))}} 79 | \end{minipage}% 80 | \end{figure} 81 | 82 | \subsubsection*{Seznam} 83 | \mintinline{lisp}{(cons 1 (cons 2 (cons 3 nil))) |$\Leftrightarrow$| (list 1 2 3)| je ve výsledku |(1 . (2 . (3 . nil)))} 84 | 85 | \subsubsection*{Strom} 86 | \mintinline{lisp}{(cons (cons 1 2) (cons 3 4))| je ve výsledku |((1 . 2) . (3 . 4))} 87 | 88 | \subsubsection*{Výběr ze seznamu} 89 | \begin{figure}[H] 90 | \centering 91 | \includegraphics[width=4.2cm]{topics/bi-wsi-si-15/images/list-cdr} 92 | \caption{Ukázka výběru prvků ze seznamu} 93 | \end{figure} 94 | 95 | \subsection{Funkce} 96 | \mintinline{lisp}{(defun name (parameters) (body))} 97 | 98 | \begin{minted}{lisp} 99 | (defun sum (x y) (+ x y)) 100 | (defun factorial (n) (if (zerop n) 1 (* n (factorial (- n 1))))) 101 | \end{minted} 102 | 103 | \subsection{Podmínky} 104 | \begin{figure}[H] 105 | \centering 106 | \begin{minipage}{.5\textwidth} 107 | \centering 108 | \begin{minted}{lisp} 109 | (defun abs (X) 110 | (cond ((> X 0) X) 111 | ((= X 0) 0) 112 | ((< X 0) (- X)) 113 | )) 114 | \end{minted} 115 | \end{minipage}% 116 | \begin{minipage}{.5\textwidth} 117 | \begin{minted}{lisp} 118 | (defun abs (X) 119 | (if (> X 0) X 120 | X 121 | (if (= X 0) 0 (- X)) 122 | )) 123 | \end{minted} 124 | \end{minipage}% 125 | \end{figure} 126 | 127 | \subsection{Rekurze} 128 | Rekurze používá zasobník pro zachování stavu při vnoření do funkce (aktivační záznam). Doporučuje se využívat koncovou rekurzi, která šetří místo na zásobníku. 129 | 130 | \begin{description} 131 | \item[Vnořená] - rekurze v rekurzi 132 | \item[Stromová] - několik rekurzivních volaní 133 | \item[Lineární] - jedno rekurzivní volání 134 | \item[Koncová] - rekurzivní volání je poslední, co funkce udělá - optimizace překladačů znovupoužití stejného stack framu 135 | \end{description} 136 | 137 | 138 | \begin{minted}{lisp} 139 | (defun factorial (N) 140 | ;;;"Compute the factorial of N." 141 | (if (= N 0) 142 | 1 143 | (* N (factorial (- N 1))) 144 | )) 145 | 146 | (defun fast-factorial (N) 147 | ;;;"A tail-recursive version of factorial." 148 | (fast-factorial-aux N 1) 149 | ) 150 | 151 | (defun fast-factorial-aux (N ACC) 152 | ;;;"Multiply A by the factorial of N." 153 | (if (= N 0) 154 | ACC 155 | (fast-factorial-aux (- N 1) (* N ACC)) 156 | )) 157 | \end{minted} 158 | 159 | 160 | \subsection{Mapovací funkcionály} 161 | Funkcionál je funkce, která má funkci jako argument. 162 | \mintinline{lisp}{(mapcar function list-1 list-2 ... list-n )} 163 | 164 | Aplikujeme funkci square na list s položkami 1 2 3 165 | \mintinline{lisp}{(mapcar #'square '(1 2 3))} 166 | 167 | \begin{itemize} 168 | \item \mintinline{lisp}{mapcar} prochází všechny seznamy prvek po prvku. Ukončí se jakmile v některém z listů dojdou prvky. Návratovou hodnotou je list s prvky původních listů, na které byla aplikována funkce. 169 | \item \mintinline{lisp}{mapc} funguje jako mapcar - vrací první list 170 | \item \mintinline{lisp}{maplist} prochází list prvek po prvku, do další iterace jde vždy cdr ze zpracovaného listu 171 | \end{itemize} 172 | 173 | \begin{minted}{lisp} 174 | (defun plus (x y) (+ x y)) 175 | (defun square (x) (* x x)) 176 | 177 | (mapcar #'square '(1 2 3)) |$\rightarrow$| (1 4 9) 178 | (mapcar #'plus '(1 2 3) '(3 2 1)) |$\rightarrow$| (4 4 4) 179 | (mapc #'plus '(1 2 3) '(3 2 1)) |$\rightarrow$| (1 2 3) 180 | \end{minted} 181 | 182 | \end{document} 183 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-17/bi-wsi-si-17.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | \usepackage[czech]{babel} 4 | 5 | \topic{Adresace IPv4, rozdělení adresního prostoru. Rozdíly mezi IPv4 a IPv6.} 6 | \author{Tomáš Starý} 7 | \code{BI-WSI-SI-17} 8 | \subject{PSI} 9 | 10 | \begin{document} 11 | 12 | \tableofcontents 13 | 14 | \newpage 15 | 16 | \section{Adresace} 17 | 18 | Abychom mohli komunikovat mezi jednotlivými uzli v síti je nutné nějdříve každému uzlu přidělit nějakou adresu, díky které jej bude možné identifikovat. 19 | Každá síť má definovanou vlastní množinu adresu, která je disjunktní s ostatními sitěmi (lze tedy narazit na 2 sítě s totožnou adresací). V každé síti 20 | je poté potřeba rozdělit její adresní prostor případně celou síť navenek zapouzdřit jednou adresou (NAT) a tím vytvořit podsítě (víceúrovňové uspořádání). 21 | 22 | \section{IPv4} 23 | 24 | Hlavní význam IPv4 v počítáčových sítích je adresace jednotlivých uzlů v síti. Díky této adresaci je poté možné 25 | předat data správnému adresátovi. IPv4 je 32 bitová adresa, která slouží k indentifikaci síťových zařízení na 3. úrovni modelu 26 | ISO-OSI (síťová vrstva). IPv4 je rozdělena do 4 oktetů (bytů), adresy se dají zapsat také dekadicky, kde každý oktet je od dalšího oddělen tečkou. 27 | 28 | \subsection{Adresace pomocí IPv4} 29 | 30 | Původní rozdělení IPv4 bylo pomocí tříd 31 | \begin{itemize} 32 | \item A, B, C - normální adresy (unicast) 33 | \item D - multicast 34 | \item E - rezervováno 35 | \end{itemize} 36 | 37 | \begin{tabular}{c|c|c|c|c|c} 38 | Třída & Úvodní bity & síťových adres (bitů) & počet sítí & počet adres v síti & první adresa \\ 39 | \hline 40 | A & 0 & 8 & 128 & $2^24$ & 0.0.0.0 \\ 41 | B & 10 & 16 & 16384 & $2^16$ & 128.0.0.0 \\ 42 | C & 110 & 24 & 2097152 & $2^8$ & 192.0.0.0 \\ 43 | D & 1110 & & & & 224.0.0.0 \\ 44 | E & 1111 & & & & 240.0.0.0 \\ 45 | \end{tabular} 46 | 47 | S tímto rozdělením adres přišel ovšem rychle problém jejich neefektivnosti, v některých případech bylo nutné jít o třídu víš i kvůli \uv{pár adresám}. 48 | Tuto situaci ovšem pomohlo vyřešit schéma CIDR (Classless Inter-Domain Routing). Toto schéma dovoluje libovolnou délku síťového přefixu (narozdíl od IPv4 class). 49 | Velikost sítě je poté dána její maskou. Například pro síť o velikosti $2^18$ adres je její maska ve formátu 255.255.192.0 (CIDR formát - /18). Na posledních 18 bitech, které představují adresní prostor 50 | jsou v masce 0 a na ostatních se nachází 1. 51 | 52 | V rámci privátních sítí je možné použít tyto volně dostupné adresní prostory. Tyto privátní adresy neroutují do internetu, ale slouží pro routování v rámci NAT. Toto 53 | bylo jedno z řešení problému s nedostatkem veřejných IP adres a také pomáhá izolovat privátní síť. 54 | 55 | \begin{tabular}{c|c} 56 | 10.0.0.0/8 & 16777216 adres ~ 1x class A \\ 57 | 172.16.0.0/12 & 1048576 adres ~ 16x class B \\ 58 | 182.168.0.0/16 & 65537 adres ~ 256x class C \\ 59 | \end{tabular} 60 | 61 | \newpage 62 | 63 | \subsection{Struktura hlavičky IPv4} 64 | 65 | \begin{itemize} 66 | \item Version: 4 (IPv4) 67 | \item Header length: délka hlavičky v 32-bit slovech 68 | \item Type of Service: má různá využití, například pro QoS 69 | \item Total length: celková délka packetu v bytech 70 | \item Identification: identifikátor packetu (pro přiřazení fragmentů) 71 | \item Flags: příznaky, stavové flagy 72 | \item Fragment offset: relativní pozice fragmentu (jednotka: 8 bytů) 73 | \item Time to Live: prevence pro \uv{nekonečný packet}, jedná se o počet průchodů skrz routery, snižuje se 1, pokud klesne na 0, packet se zahodí 74 | \item Protocol: typ protokolu vyšší vrstvy (ssh, telnet, smtp) 75 | \item Header checksum: kontrolní součet hlavičky (slouží ke kontrole itegrity) 76 | \item Source address: zdrojová adresa 77 | \item Destination address: cílová adresa 78 | \item Options: nepovinné položky 79 | \item Padding: Zarovnání hlavičky na hranici 32 bitů 80 | \end{itemize} 81 | 82 | \subsection{Fragmentace v IPv4} 83 | 84 | Paket nemůže být libovolně velký, je omezený délkou rámce (MTU - Maximum Transmission Unit), která je typicky 1500 bitů. Vyšší MTU redukuje overhead, nižší ovšem 85 | snižuje transportní zpoždění. Pokud je ovšem paket větší, než je MTU, je nutné jej rozdělit na části. O toto se postará síťová vrstva a každý router může fragmentovat (rozdělovat) 86 | IPvč pakety. Pakety jsou poté doručeny nezávisle na sobě a jsou složeny až na cílovém zařízení. 87 | 88 | \section{Služby spojené se síťovou vrstvou} 89 | 90 | \begin{itemize} 91 | \item ICMP (internet Control Message Protocol) 92 | Chybové zprávy sítě, které se odesílájí původnímu odesálateli. Odesílá protokol č. 1 v IP headeru, typ a kód (oba jsou 4 bity). 93 | Například: 0 - echo reply (ping), 3 - nedosažitelná adresa, 11 - TTL expired 94 | \item ARP - Address resolution Protocol (RFC826) 95 | Jedná se o protokol linkové vrstvy (2. úroveň ISO-OSI). Jedná se o mapování mezi síťovou a hardwarovou adresou (IP a MAC). To pomáhá zrychlovat komunikaci vytvořením 96 | rezoluční tabulky, každému záznamu je také přiřazena automaticky expirace záznamu. 97 | \end{itemize} 98 | 99 | \section{IPv6} 100 | 101 | Důvody k přechodu do na nový adresový standard je několik. V roce 2011 byly rozdány poslední bloky IPv4 veřejných adres a již přidělené adresy nelze odebrat. 102 | Nový standard pro IP tedy musí mít větší adresní prostor, také jsou tu určíté možnosti pro zautomatizování konfigurace (zbavení se DHCP) a lepší bezpečnosti. 103 | Toto vše by mělo řešit IPv6. 104 | 105 | \subsection{IPv4 vs IPv6} 106 | 107 | IPv6 má o $2^96$ více adres než IPv4, stejně jako IPv4 používá hop limit, což je obdoba TTL. IPv6 má i rozdíli v hlavičce, nenachází se zde délka hlavičky, která je vždy 108 | stejná. Také zde není fragmentace ani options. Chybí zde i kontrolní součet, který je vypočítáván na každém routeru. Oproti IPv4 je zde nová položka: Flow label (20b) - jedná se 109 | identifikaci datového toku a slouží k usnadnění směrování, není zatím specifikováno. Hlavičku je možné rozšířit, za hlavičkou můžou následovat rozšiřující hlavičky, jejich pořadí je pevné. 110 | 111 | V důsledku ztráty fragmentace na jednotlivých routerech, je nutné aby jí provedl již odesílatel. Pro IPv6 je minimální MTU 1280 bytů a pokud odesílatel odesílá větší balík, než je možné poslat 112 | je mu odeslána zpráva pomocí ICMP. 113 | 114 | \end{document} 115 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-01/bi-wsi-si-01.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | 3 | \title{Informační bezpečnost, architektura bezpečnosti v modelu OSI.} 4 | 5 | 6 | \topic{Informační bezpečnost, architektura bezpečnosti v modelu OSI.} 7 | \author{Tomáš Starý} 8 | \code{BI-WSI-SI-01} 9 | \subject{BEZ} 10 | 11 | \begin{document} 12 | 13 | \tableofcontents 14 | \newpage 15 | 16 | \section{Komponenty informační bezpečnosti} 17 | 18 | Komponenty lze rozdělit takto: 19 | \begin{enumerate} 20 | \item Informační technologie (IT): Technologie na zpracování informací. 21 | \item Informační a komunikační technologie (ICT): technologie zahrnující jak počítačové systémy 22 | tak také telekomunikační sítě pro zpracovaní informací. 23 | \end{enumerate} 24 | 25 | Kvůli zpracovaní a přenosu informací je potřeba řešit bezpečnost IT a ICT systémů. Bezpečnost dělíme na 2 úrovně: 26 | \begin{enumerate} 27 | \item Počítačová bezpečnost (computer security) 28 | Představuje souhrn prostředků zabezpečující bezpečný provoz počítačů a ochranu dat 29 | zpracovaných a uchovávaných na počítači. 30 | \item Síťová bezpečnost (network security) 31 | Představuje souhrn prostředků zabezpečující ochranu dat po dobu jeich přenosu komunikačním 32 | prostředím a ochranu počítačů projených do počítačové sítě. 33 | \end{enumerate} 34 | 35 | Hranice mezi tímto dělením ovšem není jednoznačná, například počítačové viry míří na počítačové systémy, ale 36 | mohou narušit celou počítačovou síť. 37 | 38 | \section{Informační bezpečnost} 39 | 40 | Definice: Souhrn prostředků a postupů na zabezpečení důvěrnosti, integrity a dostupnosti informací. 41 | 42 | Tyto prostředky mají za učel definovat postupy pro ochranu uživatelských dat, také řízení uživatelského 43 | přistupu, tak aby pouze ověření uživatelé měli přístup k datům a to pouze k datům, kte kterým mají mít přístup. 44 | 45 | \begin{itemize} 46 | \item Důvěrnost (confidentiality) 47 | Vlastnost, která zaručuje ochranu dat před neautorizovaným přístupem. 48 | \item Integrita (integrity) 49 | Zaručuje ucelenost a nepoškozenost informace. 50 | \item Dostupnost (availability) 51 | Dostupnost zaručuje přístup k informacím pro autorizované subjekty. 52 | \end{itemize} 53 | 54 | U informačního systému (IS) je potřeba myslet vždy na systém jako na celek a celá jeho 55 | bezpečnost je stejně dobrá jako jeho nejslabší článek. 56 | 57 | \subsection{Užitková hodnota (asset)} 58 | 59 | Každý informační systém se skládá z užitkovž hodnot, což je vše co představuje určitou hodnotu pro organizaci, firmu nebo kterýkoliv ekonomický subjekt. 60 | 61 | Tyto hodnoty dělíme do tří kategorií: 62 | \begin{enumerate} 63 | \item Hmotné užitkové hodnoty (physical assets): 64 | Jedná se hlavně o technické prostředky jako například počítače a další hardware, ale také budovy. 65 | \item Nehmotné užitkové hodnoty (nonphysical assets): 66 | Software, informace (data) a možnost poskytování informací a služeb. 67 | \item Lidské zdroje (human resources): 68 | Personál s přítupem k informacím či správci IS. 69 | \end{enumerate} 70 | 71 | Užitkové hodnoty jsou vystavené různým hrozbám (threats), které představují potenciální narušení bezpečnosti IS a možnému úniku dat, jejich ztráty 72 | či poškození. 73 | 74 | \newpage 75 | 76 | Hrozby můžeme taky rozdělit na dva typy a to úmyslná, která jsou prováděna za účelem získání dat nebo jejich poškození. Poté je zde neúmyslná hrozba, 77 | která pramení z možnosti že uživatel udělá chybu, například nesprávným zacházením s IS. Hrozby také mohou být přírodního charakteru. 78 | U charakteristiky hrozeb musíme nahlížet na: 79 | \begin{itemize} 80 | \item zdroj 81 | \item motivaci 82 | \item možnou početnost výskytů 83 | \item jejich pravděpodobnost 84 | \item a následné dopady 85 | \end{itemize} 86 | 87 | Hrozby z hlediska IS: 88 | \begin{itemize} 89 | \item Softwarová hrozba 90 | Jedná se hlavně o počítačové malware, které se zaměřují na napedení komunikace mezi jednotlivými částmi IS. Do systému 91 | se mohou dostat skrze paměťová média nebo přes síť, do které je daná komponenta připojená. 92 | \item Hrozba neautorizovaným subjektem (útočníkem) 93 | Potencionální možnost pro neověřeného uživatele dostat se do našeho systému za použití jiných nástrojů než již zmíněného malwaru. 94 | \end{itemize} 95 | 96 | Hrozby je tedy třeba ohodnit a na základě nich definovat jednotlivé zranitelnosti (vulnerability), které ukazují na slabá místa v IS a na 97 | základě, kterých můžeme určit jejich dopady a také možná opatření jak jim předejít. Zranitelnost můžeme stejně jako hrozbu ohodnotit 98 | (například: nízká, střední a vysoká). Samotná zranitelnost nezpůsobuje žádné škody pouze vytváří pro ně vytváří podmínky. 99 | 100 | Při neočekávané či nežádoucí situaci mluvíme o incidentu infomační bezpečnosti. V návaznosti na incidenty můžeme mluvit o jejich dopadu (impact). 101 | Dopad může být but přímý (ztráta data či integrity IS) nebo nepřímý (finanční ztráty, ztráta konkurence schopnosti). Posouzení dopadu je pak založeno 102 | na poměru mezi cenou za ztrátu či narušené bezpečnosti a nástrojům, které zajistí, aby se situace neopakovala. 103 | 104 | \section{Rizika} 105 | 106 | Definice: Představuje potencionální možnost vzniku ztráty nebo poškození dat v IS tím, že bude využito zranitelnosti části IS. Riziko je dále charakterizováno 107 | jeho pravděpodobností vzniku incidentu a poté jeho dopadem. Jakákoliv změna v rámci assetů a bezpečnostních částí IS může ovlivnit rizika. 108 | 109 | Rizika nelze nikdy úplně eliminovat, ovšem aplikací bezpečnostních prvků lze tyto rizika snížit na akceptovatelnou úroveň. Riziku, které je zde po aplikaci 110 | prvků nazýváme reziduální/zbytkové riziko. 111 | 112 | \begin{itemize} 113 | \item Analýza rizik (risk analysis) 114 | Systematický proces odhadu velikosti rizika. 115 | \item Posouzení rizika (risk assessment) 116 | Proces identifikace a analýzy rizika. 117 | \item Management rizika (risk management) 118 | Proces identifikace, řízení, eliminace a minimalizace rizika. 119 | \end{itemize} 120 | 121 | Pro limitování ohrožení, snížení zranitelnosti a omezení dopadů incidentu informační bezpečnosti definujeme mechanizmy bezpečnosti (safeguards). 122 | Jedná se procedury a procesy, kterých je možné využít i několik, jako například prevence a detekce útoků, obnova a další. 123 | Tyto mechanizmy mají ovšem také svá omezení (constraints), limitující a omezující účinnost mechanizmů (organizační, technická, personální a další). 124 | 125 | \section{Architektura informační bezpečnosti v modelu OSI} 126 | 127 | Model OSI (Open System Interconnection) je vázaný na doporučení od ITU-T a označuje se jako standard X.800. 128 | 129 | \end{document} -------------------------------------------------------------------------------- /topics/SPOL.md: -------------------------------------------------------------------------------- 1 | Označení | Předmět | Otázka | Zabráno 2 | -- | -- | -- | -- 3 | BI-SPOL-1 | BI-AAG | Přehled Chomského hierarchie formálních jazyků a gramatik. Turingovy stroje. Třídy problémů P, NP, NP-těžký, NP-úplný. | Ano 4 | BI-SPOL-2 | BI-AAG | Regulární jazyky: Deterministické a nedeterministické konečné automaty. Determinizace konečného automatu. Minimalizace deterministického konečného automatu. Operace s konečnými automaty. Regulární gramatiky, regulární výrazy, regulární rovnice. |   Ne 5 | BI-SPOL-3 | BI-AAG | Bezkontextové jazyky: Bezkontextové gramatiky, zásobníkové automaty a jejich varianty. Modely syntaktické analýzy bezkontextových jazyků. |   Ne 6 | BI-SPOL-4 | BI-AG1 | Základní pojmy teorie grafů. Grafové algoritmy: procházení grafu do šířky a do hloubky, určení souvislých komponent, topologické uspořádání, vzdálenosti v grafech, konstrukce minimální kostry a nejkratších cest v ohodnoceném grafu. |   Ano 7 | BI-SPOL-5 | BI-AG1 | Binární haldy, binomiální haldy. Vyhledávací stromy a jejich vyvažování. Tabulky s rozptylováním (hešováním). |   Ano 8 | BI-SPOL-6 | BI-BEZ | Asymetrické kryptosystémy (šifra RSA, Diffie-Hellman, RSA digitální podpis), hešovací funkce (SHA-2, HMAC). |  Ne 9 | BI-SPOL-7 | BI-BEZ | Symetrické šifry blokové a proudové (AES, 3DES, RC4) základní parametry, operační módy blokových šifer (ECB, CBC, CFB, OFB, CTR, MAC), jejich základní popis a slabiny. |  Ne 10 | BI-SPOL-8 | BI-BEZ | Infrastruktura veřejného klíče, distribuce klíčů, digitální podpis. Certifikáty, certifikační autority. Kryptograficky bezpečné generátory náhodných čísel. |  Ne 11 | BI-SPOL-9 | BI-DBS | Relační databáze, dotazování v relační algebře, základní koncepce jazyka SQL (SELECT, DDL, DML, DCL, TCL) , vyjádření integritních omezení v DDL. |   Ne 12 | BI-SPOL-10 | BI-DBS | Transakce a jejich vlastnosti - ACID. |   Ne 13 | BI-SPOL-11 | BI-DBS | 3 úrovně pohledu na data (konceptuální, implementační, fyzická). Struktury pro ukládání dat v relačních databázích s ohledem na rychlý přístup k nim (speciální způsoby uložení, indexy apod.) |  Ne 14 | BI-SPOL-12 | BI-LIN | Soustavy lineárních rovnic: Frobeniova věta a související pojmy, vlastnosti a popis množiny řešení, Gaussova eliminační metoda. |   Asi 15 | BI-SPOL-13 | BI-LIN | Matice: součin matic, regulární matice, inverzní matice a její výpočet, vlastní čísla matice a jejich výpočet, diagonalizace matice. |   Asi 16 | BI-SPOL-14 | BI-MLO | Výroková logika: syntax a sémantika výrokových formulí, pravdivostní ohodnocení, logický důsledek, ekvivalence a jejich zjišťování. Universální systém logických spojek, disjunktivní a konjunktivní normální tvary, úplné a minimální tvary. |   Ano 17 | BI-SPOL-15 | BI-MLO | Predikátová logika: jazyk, interpretace, pravdivost formulí, logický důsledek a ekvivalence. Formalizace matematických tvrzení a jejich negace. Teorie a jejich modely (např. uspořádání). |   Ne 18 | BI-SPOL-16 | BI-OSY | Procesy a vlákna, jejich implementace. Synchronizační nástroje. Klasické synchronizační úlohy. Plánování vláken. Přidělování prostředků, Coffmanovy podmínky, způsoby řešení uváznutí. |   Ano 19 | BI-SPOL-17 | BI-OSY | Principy překladu logických adres na fyzické u virtuální stránkované paměti s/bez segmentace. Algoritmy pro nahrazování stránek u virtuální stránkované paměti. |   Ne 20 | BI-SPOL-18 | BI-PA1 | Datové typy v programovacích jazycích. Staticky a dynamicky alokované proměnné, spojové seznamy. Modulární programování, procedury a funkce, vstupní a výstupní parametry. Překladač, linker, debugger. |   Ano 21 | BI-SPOL-19 | BI-PA1 + BI-AG1 | Časová a paměťová složitost algoritmů. Algoritmy vyhledávání (sekvenční, půlením intervalu), slučování a řazení (BubbleSort, SelectSort, InsertSort, MergeSort, QuickSort). Dolní mez složitosti řazení v porovnávacím modelu. Řazení v lineárním čase. |   Ne 22 | BI-SPOL-20 | BI-PA1 + BI-AG1 | Rekurzivní rozklad problému na podproblémy metodou Rozděl-a-panuj. Rekurze vs iterace. Dynamické programování. |   Ne 23 | BI-SPOL-21 | BI-PA2 | Objektově orientovaného programování v C++, zapouzdření, dědičnost, atributy a metody, statické atributy a metody, virtuální metody, polymorfismus, abstraktní třídy, výjimky, šablony, přetěžování operátorů, mělká a hluboká kopie. |   Ne 24 | BI-SPOL-22 | BI-PA2 | Abstraktní datový typ, jeho specifikace a implementace. Zásobník, fronta, pole, seznam, tabulka, množina. Implementace pomocí pole, spojových struktur a stromů. |   Ne 25 | BI-SPOL-23 | BI-PSI | ISO/OSI a TCP/IP model. Protokoly linkové vrstvy.Potvrzovací metody. Přepínání a směrování. Principy fungování propojovacích síťových prvků. |   Ano 26 | BI-SPOL-24 | BI-PSI | Protokolová rodina TCP/IP (IPv4, IPv6, TCP, UDP, aplikační protokoly). Řízení datového toku. Princip a využití NAT. Systém DNS. |   Ano 27 | BI-SPOL-25 | BI-PST | Pravidla pro výpočty pravděpodobností, Bayesův vzorec. Náhodné veličiny, příklady rozdělení, distribuční funkce, hustota, momenty. Nezávislost náhodných jevů a veličin. Centrální limitní věta, zákony velkých čísel. |  Ne 28 | BI-SPOL-26 | BI-PST | Základy statistické indukce, náhodný výběr, bodové odhady pro střední hodnotu a rozptyl, intervalové odhady pro střední hodnotu, testování statistických hypotéz o střední hodnotě. |   Ne 29 | BI-SPOL-27 | BI-SAP | Kombinační a sekvenční logické obvody (Mealy, Moore), popis a možnosti implementace na úrovni hradel. Minimalizace vyjádření logické funkce (s využitím map). |   Ano 30 | BI-SPOL-28 | BI-SAP | Architektura číslicového počítače, instrukční cyklus počítače, základní třídy souborů instrukcí (ISA). Paměťový subsystém počítače, paměťová hierarchie, cache. |   Ano 31 | BI-SPOL-29 | BI-SAP | Kódy pro zobrazení čísel se znaménkem a realizace aritmetických operací (paralelní sčítačka/odčítačka, realizace aritmetických posuvů, dekodér, multiplexor, čítač). Reprezentace čísel v pohyblivé řádové čárce. |   Ano 32 | BI-SPOL-30 | BI-SI1.2 | Nástroje pro podporu tvorby softwarových produktů: Sledování chyb a správa úkolů (používané nástroje, typický životní cyklus úkolu/chyby), správa a sdílení zdrojových kódů (principy řešení spolupráce, hlavní přínosy, používané nástroje). |   Ano 33 | BI-SPOL-31 | BI-SI1.2 | Analytický doménový model tříd a popis životního cyklu identifikovaných tříd (cíle, UML diagram tříd, UML stavový diagram). |   Ne 34 | BI-SPOL-32 | BI-ZDM | Metody řešení rekurentních rovnic, sestavování a řešení rekurentních rovnic při analýze časové složitosti algoritmů. |   Ano 35 | BI-SPOL-33 | BI-ZDM | Modulární aritmetika, základy teorie čísel, Malá Fermatova věta, diofantické rovnice, lineární kongruence, Čínská věta o zbytcích. |   Ano 36 | BI-SPOL-34 | BI-ZMA | Limita a derivace funkce (definice a vlastnosti, geometrický význam), využití při vyšetřování průběhu funkce. |   Ano 37 | BI-SPOL-35 | BI-ZMA | Základy integrálního počtu (primitivní funkce, neurčitý integrál, Riemannův integrál (definice, vlastnosti a geometrický význam)). |   Ano 38 | BI-SPOL-36 | BI-ZMA | Číselné řady (konvergence číselné řady, kritéria konvergence, odhadování rychlosti růstu řad pomocí určitého integrálu). | Ano 39 | 40 | 41 | -------------------------------------------------------------------------------- /topics/bi-spol-09/bi-spol-09.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{hyperref} 3 | \usepackage{longtable} 4 | \usepackage{booktabs} 5 | 6 | \subject{DBS} 7 | \code{BI-SPOL-9} 8 | \topic{Relační databáze, dotazování v relační algebře, základní koncepce jazyka SQL (SELECT, DDL, DML, DCL, TCL) , vyjádření integritních omezení v DDL.} 9 | \providecommand{\tightlist}{% 10 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 11 | \begin{document} 12 | \tableofcontents 13 | \newpage 14 | 15 | \section{DBS} 16 | DBS = database system \newline 17 | DBMS = systém řízení bází dat (database managment system) 18 | \begin{itemize} 19 | \item RDBMS = relační DBMS 20 | \item ODBMS = objektový DBMS 21 | \item ORDBMS = objektově-relační DBMS 22 | \end{itemize} 23 | 24 | Zabývá se seřazením velkého množství, perzistentních, spolehlivých a sdílených dat 25 | \begin{itemize} 26 | \item velké množstí = pro data nestačí operační paměť 27 | \item perzistestní = data přetrvávají od zpracování ke zpracování 28 | \item spolehlivý = data lze rekonstruovat po chybě 29 | \item sdílených = data jsou přístupná více uživatelům 30 | \end{itemize} 31 | \section{Relační databáze} 32 | (R,I) je schéma relační databáze, kde 33 | \begin{itemize} 34 | \item R = {$R_1$, $R_2$, \dots, $R_n$} je množina relací 35 | \item I je množina integritních omezení 36 | \end{itemize} 37 | 38 | relace = množina n-tic $\subset D_1 \times D_2 \times \dots \times D_n$ (relace = tabulka) 39 | \begin{itemize} 40 | \item jména atribubtů [$A_1, A_2, \dots, A_n$] 41 | \item domény atributů $D_i$ 42 | \item v relaci nezáleží na pořadí n-tic 43 | \item relace neobsahuje duplicitní n-tice 44 | \end{itemize} 45 | \section{Relační algebra} 46 | \begin{itemize} 47 | \item relační algebra je "vyšší" jazyk 48 | \item nespecifikujeme "jak se mají věci dělat", ale "co má být výsledkem" 49 | \item výsledek dorazu je relace, která může být vstupem do dalšího dotazu - jdou řetězit 50 | \item řeší "pouze" dotazování nikoliv DML ani DDL 51 | \end{itemize} 52 | \subsection{Základní operace relační algebry} 53 | \begin{itemize} 54 | \item selekce (restrikce) = relace R dle podmínky $\phi$ 55 | \begin{itemize} 56 | \item R($\phi$ = def\{u$|$u$\in$R $\wedge \phi (u)$\}) = množina splňující podmínku 57 | \end{itemize} 58 | \item projekce = relace R na množině atributů C, kde C $\subseteq$ A 59 | \begin{itemize} 60 | \item $R[C] = def \{u[C] | u \in R\}$ (výběr atributů) 61 | \end{itemize} 62 | \item přirozené spojení = relací R(a) a S(B) s výsledkem T(C) 63 | \begin{itemize} 64 | \item $R*S = T(A \cup B)$ (výběr n-tic = rovnosti na všech průníkových atributech A a B) 65 | \end{itemize} 66 | \item obecné spojení 67 | \begin{itemize} 68 | \item $R[t_1 \Theta t_2]S (\Theta - podminka =, >, <\dots)$ (výsledek má všechny atributy včetně duplikací) 69 | \end{itemize} 70 | \item přejmenování atributu 71 | \begin{itemize} 72 | \item t $\rightarrow$ alias 73 | \end{itemize} 74 | \item množinové opearce 75 | \begin{itemize} 76 | \item sjednocení 77 | \item průnik 78 | \item rozdíl 79 | \item kartézský součin 80 | \end{itemize} 81 | \end{itemize} 82 | 83 | \begin{figure}[h!] 84 | \centering 85 | \includegraphics[width = \textwidth ]{topics/bi-spol-09/images/RaExample.png} 86 | \end{figure} 87 | 88 | Antijoin = podmnožina n-tic z R, které nejsou spojitelné s žádnou n-ticí z S. Minimální množinu operací 89 | tvoří: $\times$, selekce, projekce, $\rightarrow$, $\cup$, $\backslash$. 90 | 91 | \section{Polospojení} 92 | Interpretace R $<$* S = podmnožina n-tic z R, které jsou spojitelné s nějakou n-ticí z S. Polospojení 93 | není to samé jako Left/right join. Je to ověření podmínky, že mohou být spojeni. 94 | \begin{figure}[h!] 95 | \centering 96 | \includegraphics[width = \textwidth ]{topics/bi-spol-09/images/halfConnection.png} 97 | \end{figure} 98 | Relační dělení: 99 | Interpretace $R \div S$ = výsledkem jsou všechny hodnoty x z R, které v R tvoří dvojici s každým prvkem y z S. 100 | Pomocí prvků y z S se snažíme diskvalifikovat prvky x z R. Prvek x je diskvalifikován, pokud v R neexistuje ve dvojici s každým y z S. 101 | Výsledkem R $\div$ S jsou prvky x z R, které se diskvalifikovat nepodařilo. 102 | \begin{itemize} 103 | \item R(x, y) a S(y) 104 | \item značení = R $\div$ S 105 | \item definice = $R \div S =_{def} R[x] \backslash \{\{R[x] \times S\} \backslash R\}[x]$ 106 | \end{itemize} 107 | 108 | \begin{figure}[h!] 109 | \centering 110 | \includegraphics[width = \textwidth ]{topics/bi-spol-09/images/division.png} 111 | \end{figure} 112 | 113 | \section{SQL} 114 | \begin{itemize} 115 | \item SQL = (Structured query language) 116 | \item slouží ke komunikaci s databázovým strojem 117 | \item říkáme, co chceme získat, ne jak se to má dělat 118 | \item intuitivně srozumitelný zápis 119 | \item připomíná jednoduché anglické věty 120 | \end{itemize} 121 | 122 | \begin{description} 123 | \item[DDL] Definiční jazyk -- např. manipulace s tabulkama, integritní omezení \texttt{CREATE TABLE} 124 | \item[DML] Manipulační jazyk -- např. \texttt{SELECT, INSERT, UPDATE} apod. 125 | \item[DCL] Jazyk na přístupy -- \texttt{GRANT ON TO } 126 | \item[TCL] Jazyk pro řízení transakcí -- \texttt{COMMIT}, \texttt{ROLLBACK} 127 | \end{description} 128 | 129 | \begin{verbatim} 130 | SELECT sloupce 131 | FROM tabulky 132 | [WHERE podmínky] 133 | [ORDER BY řazení] 134 | \end{verbatim} 135 | 136 | \section{Integritní omezení} 137 | Omezení domény (tabulek) 138 | \begin{itemize} 139 | \item NOT NULL 140 | \item DEFAULT 141 | \item UNIQUE 142 | \item PRIMARY KEY 143 | \item REFERENCES 144 | \item CHECK 145 | \end{itemize} 146 | 147 | Okamžik kontroly IO, dočasné vypnutí/zapnutí IO: 148 | \begin{itemize} 149 | \item možnosti stanovit při deklaraci integritního omezení čas, kdy se má kontrolovat 150 | \item kontrolu IO lze definovat jako odložitelnou až na konec transakce 151 | \item v rámci session pak lze stanovit, zda IO kontruje IMMEDIATE nebo až na konci transakce 152 | \item Oracle dovoluje v příkazu ALTER TABLE také IO dočasně vypnout/zneplatnit DISABLE/ENABLE CONSTRAINT 153 | \item zpětně zapnutí IO pak může/nemusí vyžadovat kontrolu platnosti dat již vložených v databázi 154 | \end{itemize} 155 | % \section{Dotazování v relační algebře} 156 | % \begin{itemize} 157 | % \item Relační algebra je pouze dotazovací formalismus. (Pokrývá jenom \mintinline{sql}{SELECT} v SQL.) 158 | % \item 159 | % \end{itemize} 160 | % \section{Základní koncepce jazyka SQL (\mintinline{sql}{SELECT}, DDL, DML, DCL, TCL)} 161 | % \begin{description} 162 | % \item[DDL] Definiční jazyk -- např. manipulace s tabulkama, integritní omezení 163 | % \item[DML] Manipulační jazyk -- např. \mintinline{sql}{SELECT}, \mintinline{sql}{INSERT}, \mintinline{sql}{UPDATE} apod. 164 | % \item[DCL] Jazyk na přístupy 165 | % \item[TCL] Jazyk pro řízení transakcí 166 | % \end{description} 167 | 168 | 169 | 170 | % \section{Vyjádření integritních omezení v DDL} 171 | 172 | \end{document} 173 | -------------------------------------------------------------------------------- /topics/bi-wsi-si-06/bi-wsi-si-06.tex: -------------------------------------------------------------------------------- 1 | \documentclass{szzclass} 2 | \usepackage{dependencies/szz-math} 3 | \usepackage[czech]{babel} 4 | 5 | \subject{KOM} 6 | \code{BI-WSI-SI-6} 7 | \topic{OntoUML a jeho konstrukty, transformace do objektového modelu.} 8 | 9 | \begin{document} 10 | 11 | \tableofcontents 12 | \newpage 13 | 14 | \section{OntoUML} 15 | OntoUML je jedním z možných nástrojů konceptuálního modelování pro popisování reálného světa. Narozdíl od UML nepopisuje třídy a objekty z programátorského hlediska, místo toho definuje objekty podle jejich vlastností a stavů. 16 | 17 | Součástí OntoUML je Unified Foundational Ontology (UFO), ta se dělá na tři části: 18 | \begin{enumerate} 19 | \item \textbf{UFO-A}: strukturální aspekty reality - objekty, jejich typy, podčásti a role (v OntoUML se jedná o sortály) 20 | \item \textbf{UFO-B}: dynamické aspekty - události, jejich části a vazby mezi nimi (non-sortály) 21 | \item \textbf{UFO-C}: sociální aspekty - cíle, vztahy, stavy 22 | \end{enumerate} 23 | 24 | Používá modální logiku (rozšíření predikátové logiky): 25 | \begin{itemize} 26 | \item[$\exists$] existenční kvantifikátor 27 | \item[$\forall$] univerzální kvantifikátor 28 | \item[$\square$] nutnost - ve všech světech platí 29 | \item[$\Diamond$] možnost - v některém světě platí 30 | \end{itemize} 31 | 32 | Postup modelování: 33 | \begin{enumerate} 34 | \item Vytvoření slovníku pojmů. 35 | \item Vytváření ontologie na základě ontologických vzorů. 36 | \item Validace konceptuálního modelu se zadavatelem. 37 | \end{enumerate} 38 | 39 | \section{Konstrukty} 40 | 41 | \begin{itemize} 42 | \item \textbf{Třída} - vychází z koncepce UML, popisuje vlastnosti sdílené mezi určitými entitami - \textbf{instance třídy}. 43 | \item \textbf{Atribut} - reprezentuje vlastnosti sdílené instancemi třídy. 44 | \end{itemize} 45 | 46 | \subsection{Dědění} 47 | Dědění - Třídy sdílející společný nadtyp mohou být sdruženy v tzv. množině nadtypu (Generalization Set). Lze upřesnit na: 48 | \begin{itemize} 49 | \item \textbf{Complete} - Podtřídy pokrývají všechny možné instance přímé nadtřídy.\\ 50 | \hfill (\emph{\uv{není nadtřída, která by nebyla jednou z instancí podtříd; člověk musí být muž nebo žena, ale ne nic z toho}}) 51 | \begin{figure}[!h] 52 | \centering 53 | \includegraphics[width=7.5cm]{topics/bi-wsi-si-06/images/complete.png} 54 | \end{figure} 55 | 56 | \item \textbf{Disjoint} - všechny podmnožiny zapojené v generalizaci jsou vzájemně disjunktní\\ 57 | \hfill (\emph{\uv{instance nemůže být obojí; člověk nemůže být muž a zároveň žena}}) 58 | \begin{figure}[!h] 59 | \centering 60 | \includegraphics[width=7.5cm]{topics/bi-wsi-si-06/images/disjoint.png} 61 | \end{figure} 62 | 63 | \item \textbf{Complete a Disjoint} (Partition) - každá instance nadtřídy je instance právě jedné podtřídy.\\ 64 | \hfill (\emph{\uv{Nadtřída je něco jako abstract.}}) 65 | \end{itemize} 66 | 67 | \subsection{Typy objektů} 68 | \begin{itemize} 69 | \item \textbf{Sortal} 70 | \begin{itemize} 71 | \item \textbf{Rigid} 72 | \begin{itemize} 73 | \item \textbf{Kind} - poskytuje identitu 74 | \item \textbf{SubKind} 75 | \end{itemize} 76 | \item \textbf{Anti-rigid} 77 | \begin{itemize} 78 | \item \textbf{Phase} 79 | \item \textbf{Role} 80 | \end{itemize} 81 | \end{itemize} 82 | \item \textbf{Non-sortal} 83 | \begin{itemize} 84 | \item \textbf{Rigid} 85 | \begin{itemize} 86 | \item \textbf{Category} - nutné vlastnosti více Kinds. 87 | \end{itemize} 88 | \item \textbf{Non-rigid} 89 | \begin{itemize} 90 | \item \textbf{Mixin} - vlastnosti více Kinds, které jsou nutné pro některé instance a možné pro jiné. 91 | \item \textbf{RoleMixin} - možné a relační vlastnosti sdílené entitami vícero typů. 92 | \end{itemize} 93 | \end{itemize} 94 | \end{itemize} 95 | 96 | \begin{figure}[h!] 97 | \centering 98 | \includegraphics[width=0.8\textwidth]{topics/bi-wsi-si-06/images/type-categories} 99 | \caption{Kategorie typů objektů} 100 | \end{figure} 101 | 102 | \subsection{Sortal} 103 | \begin{itemize} 104 | \item \textbf{Sortal} - poskytuje identitu 105 | \item \textbf{Non-sortal} - z hlediska našeho vnímání nemá vlastní identitu 106 | \end{itemize} 107 | 108 | \subsection{Rigidity} 109 | \begin{itemize} 110 | \item \textbf{Rigid} - Typ je rigidní pro každou instanci $x$ právě tehdy, když $x$ je nutně (v modálním slova smyslu) instancí $T$. \textit{Platí ve všech světech. Nemění se v čase.} \\ 111 | \[ 112 | R_+(T) \vcentcolon= \square(\forall x~T(x) \Rightarrow \square(T(x))) 113 | \] 114 | \item \textbf{Anti-rigid} - Typ $T$ je anti-rigidní pro každou instanci $x$, právě tehdy když je možné (v modálním slova smyslu), že $x$ nemusí být instancí $T$. \textit{Platí v nějakém světě.} \\ 115 | \[ 116 | R_-(T) \vcentcolon= \square(\forall x~T(x) \Rightarrow \Diamond(\neg T(x))) 117 | \] 118 | \item \textbf{Non-rigid} - logická negace rigidity. 119 | \[ 120 | NR(T) \vcentcolon= \Diamond(\exists x~T(x) \Rightarrow \Diamond(\neg T(x))) 121 | \] 122 | \end{itemize} 123 | 124 | \subsection{Celek-část} 125 | \begin{itemize} 126 | \item \textbf{Povinná část} - Celek má alespoň jednu část 127 | \item \textbf{Esenciální část} - Instanci části nelze měnit 128 | \item \textbf{Nepovinný celek} - Část nepotřebuje celek 129 | \item \textbf{Povinný celek} - Část vyžaduje celek 130 | \item \textbf{Neoddělitelná část} - Instanci celku nelze měnit 131 | \item \textbf{Neměnitelná část} - Část nelze měnit, celek není rigidní 132 | \item \textbf{Neměnitelný celek} - Celek nelze měnit, část není rigidní 133 | \end{itemize} 134 | 135 | \begin{itemize} 136 | \item \textbf{Quantity} - typicky materiály (např. písek, víno, dřevo, \dots); esenciální, tranzitivní, reflexivní 137 | \begin{itemize} 138 | \item \textbf{SubQuantityOf}: alkohol-víno 139 | \end{itemize} 140 | \item \textbf{Collective} - 141 | \begin{itemize} 142 | \item \textbf{MemberOf}: strom-les, student-paralelka 143 | \item \textbf{SubCollectionOf}: studenti s vyznamenáním-studenti 144 | \end{itemize} 145 | \item \textbf{Functional Whole} 146 | \begin{itemize} 147 | \item \textbf{ComponentOf}: srdce-oběhový systém, ředitel-firma 148 | \end{itemize} 149 | \end{itemize} 150 | 151 | 152 | \section{Transformace do objektového modelu} 153 | Transformace OntoUML do objektoveho modelu (\uv{z modelu se bude spíše odebírat}) pomocí: 154 | \begin{itemize} 155 | \item objektů (tříd) s atributy a metodami 156 | \item skládání objektů 157 | \item dědění mezi třídami 158 | \end{itemize} 159 | 160 | \begin{enumerate} 161 | \item Entity $\to$ Třídy (kind, subkind, role, \dots) 162 | \item Complete - Abstraktní třída 163 | \item Zajištění povinnosti 1...: 164 | \begin{itemize} 165 | \item hard metoda (vynutíme v konstruktoru), 166 | \item soft metoda (kontrolujeme konzistenci v programu). 167 | \end{itemize} 168 | \item Vztah 0...1 – instanční proměnné 169 | \item Vztah 0...* – kolekce 170 | \item \textbf{Complete} – nadtřída implementována jako abstraktní. 171 | \item \textbf{Disjoint} – standardní chovaní s jednoduchou dědičností. 172 | \item \textbf{Non-disjoint} - implementace děděním (exponenciální počet tříd) nebo skládáním. 173 | \item \textbf{Sortal} – v implementaci jednoznačný identifikátor, který v reálném světě neexistuje. 174 | \item \textbf{Role} – implementace jako třída, příslušnost role skládáním. 175 | \item \textbf{Phase} – implementována návrhovým vzorem State. 176 | \item \textbf{Non-sortal} – slouží jako další dimenze kategorizace. Zpravidla vytváří problém s vícenásobnou dědičností / skládání. 177 | \end{enumerate} 178 | \end{document} 179 | --------------------------------------------------------------------------------