├── .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 |
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 |
--------------------------------------------------------------------------------