Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż."

Transkrypt

1 Plan prezentacji Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie Wstęp Przykłady Kontroler Model Widok Klasy wspomagające Kontrola dostępu (ACL) Programowanie sterowane testami Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe Wstęp Charakterystyka Wstęp Przydatne adresy CakePHP PHP MVC Active Record CRUD Formularze HTML, skrypty JavaScript - XML, RSS oraz AJAX ACL Rusztowanie Kontrola i walidacja danych Mechanizmy zabezpieczeń i zarządzania sesjami Szablony Inspirowany Ruby on Rails (RoR) Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe

2 Charakterystyka Wstęp Ranking popularności frameworków webowych Charakterystyka Wstęp CakePHP na tle innych frameworków PHP Źródło: Źródło: Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Charakterystyka Wstęp Struktura Charakterystyka Wstęp Typowe żądanie Przykładowy adres strony: cakes / buy / 1 Kontrolery Widoki Modele Komponenty (Components) Pomocnicy (Helpers) Zachowania (Behaviors) Czarny kolor elementy wymagane. Szary kolor elementy opcjonalne, niebieski kolor funkcje wywołań zwrotnych Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe

3 Instalacja i konfiguracja Wstęp Instalacja Instalacja i konfiguracja Wstęp Ogólna struktura katalogu z instalacją CakePHP / Źródła: Wymagania dla serwera Apache Moduł mod rewrite Włączenie obsługi plików.htaccess AllowOverride All tmp $USER httpd 1 cd /tmp / $USER / httpd / htdocs 2 unzip cakephp. zip mv cakephp cakephp Typy instalacji Rozwojowa Produkcyjna DocumentRoot /tmp/twójlogin/httpd/htdocs/cakephp/app/webroot Zaawansowana htdocs cakephp app.htaccess index.php lib plugins README.md vendors Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 10 Przedmiot: Aplikacje internetowe Instalacja i konfiguracja Wstęp Ogólna struktura katalogu z kodem aplikacji CakePHP Instalacja i konfiguracja Wstęp Ważniejsze pliki konfiguracyjne cakephp app Config Console Controller.htaccess index.php Lib Locale Model Plugin Test tmp app Config bootstrap.php core.php database.php routes.php 2 class DATABASE_CONFIG { public $default = array ( 4 datasource => Database / Mysql, 5 persistent => false, 6 host => localhost, 7 login => user, 8 password => password, 9 database => database_name, 10 prefix =>, 11 // e n c o d i n g => u t f 8, 12 ) ; 1 14 public $test = array ( datasource => Database / Sqlite,... ) ; 15 } 16?> public $usedbconfig = test ; Vendor View webroot Dr inż. Stanisław Polak 11 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 12 Przedmiot: Aplikacje internetowe

4 Konwencje nazewnicze Wstęp Konwencje dla klas i plików Konwencje nazewnicze Wstęp Konwencje dla modeli i BD Nazwa modelu Apple BigAuthor Nazwa tabeli apples big authors Typ Nazwa klasy Nazwa pliku z definicją klasy Kontroler KissesAndHugsController KissesAndHugsController.php Komponent MyHandyComponent MyHandyComponent.php Model OptionValue OptionValue.php Zachowanie EspeciallyFunkableBehavior EspeciallyFunkableBehavior.php Widok SuperSimpleView SuperSimpleView.php Pomocnik BestEverHelper BestEverHelper.php class Apple extends AppModel { } 6?> id producer id name 1 4 Jonatan Tabela : apples app/model/apple.php id name Kowalski Tabela : producers Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 14 Przedmiot: Aplikacje internetowe Konwencje nazewnicze Wstęp Konwencje dla kontrolerów class ApplesController extends AppController { 4 #Request h t t p : / / l o c a l h o s t :8080/ a p p l e s / 5 function index ( ) {... } 6 7 #Request h t t p : / / l o c a l h o s t :8080/ a p p l e s / getready / 8 function getready ( ) {... } 9 10 #Request h t t p : / / l o c a l h o s t :8080/ a p p l e s / f i n d N e w A p p l e s E r r o r 11 function _findnewapples ( ) {... } 12 1 #Request h t t p : / / l o c a l h o s t :8080/ a p p l e s / l a t e s t e l e m e n t / 14 function latest_element ( ) { 15 $this >_findnewapples ( ) ; 16 } 17 } app/controller/applescontroller.php Konwencje nazewnicze Wstęp Konwencje dla widoków 1 <html> 2 <?php... 4?> 5 </html> app/view/apples/index.ctp class ApplesController extends AppController { 4 #Request http : / / localhost :8080/ apples / 5 function index(){} 6 #Request http : / / localhost :8080/ apples / getready / 7 function getready(){} 8 } class Apple extends AppModel { } 6?> app/model/apple.php 1 <html> 2 <?php... 4?> 5 </html> app/controller/applescontroller.php app/view/apples/get ready.ctp id producer id name Tabela : apples Dr inż. Stanisław Polak 15 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 16 Przedmiot: Aplikacje internetowe

5 Hello World Przykłady Aplikacja Hello World Hello World Przykłady Widok 1 Hello World app/view/hellos/index.ctp Dr inż. Stanisław Polak 17 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 18 Przedmiot: Aplikacje internetowe Hello World Przykłady Model Hello World Przykłady Kontroler 2 App : : uses ( AppModel, Model ) ; 4 class Hello extends AppModel { 5 } 6?> app/model/hello.php 2 App : : uses ( AppController, Controller ) ; 4 class HellosController extends AppController { 5 6 function index ( ) { 7 } 8 } 9?> app/controller/helloscontroller.php Dr inż. Stanisław Polak 19 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 20 Przedmiot: Aplikacje internetowe

6 Lista użytkowników Przykłady Aplikacja Lista użytkowników Lista użytkowników Przykłady Schemat BD Mechanizm rusztowania Wymagane Model Kontroler $scaffold Modyfikowalne listy zawartości Założenia Podstawowe informacje o użytkowniku baza danych Funkcjonalność CRUD mechanizm rusztowania URL: 1 CREATE TABLE users ( 2 id integer PRIMARY KEY, username VARCHAR ( 8 ) NOT NULL UNIQUE, 4 password char (40), 5 imie VARCHAR (20), 6 nazwisko VARCHAR (20), 7 VARCHAR ( 0 ) 8 ) ; Dr inż. Stanisław Polak 21 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 22 Przedmiot: Aplikacje internetowe Lista użytkowników Przykłady Kontroler Lista użytkowników Przykłady Model 2 App : : uses ( AppController, Controller ) ; 4 class UsersController extends AppController { 5 public $scaffold ; 6 } 7?> app/controller/userscontroller.php 2 App : : uses ( AppModel, Model ) ; 4 class User extends AppModel { 5 } 6?> app/model/user.php Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 24 Przedmiot: Aplikacje internetowe

7 Lista użytkowników Przykłady Aplikacja Generowanie kodu Przykłady Konsola CakePHP Generowanie aplikacji z poziomu linii komend 1 cake bake project /tmp/$user/httpd/htdocs/aplikacja 2 cd /tmp / $USER / httpd / htdocs / aplikacja sqlite BD. sqlite 4 #tworzymy odpowiednie t a b e l e w bazie danych cake bake db config 7 cake bake 8 cake bake model [nazwa modelu] 9 cake bake controller user 10 cake bake controller user --public 11 cake bake controller user --public --admin 12 cake bake view user class UsersController extends AppController { 4 ############################################# 5 #http : / / localhost :8080/ users / 6 public function index ( ) {... } 7 8 #http : / / localhost :8080/ users / view /1 9 public function view ( $id = null ) {... } ############################################# 12 1 #http : / / localhost :8080/ admin / users / 14 public function admin_index ( ) {... } #http : / / localhost :8080/ admin / users / view /1 17 public function admin_view ( $id = null ) {... } public function admin_add ( ) {... } 20 public function admin_edit ( $id = null ) {... } 21 public function admin_delete ( $id = null ) {... } 22 } Controller/UsersController.php 1 Configure : : write ( Routing. prefixes, array ( admin ) ) ; Config/core.php Dr inż. Stanisław Polak 25 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 26 Przedmiot: Aplikacje internetowe Kontroler Kontroler Wybrane atrybuty i metody Aplikacja Hello World Wersja zmodyfikowana class RecipesController extends AppController { 4 public $name = Recipes ; 5 # Katalog z widokami : app / View /$name/ 6 # Nazwa modelu : L i c z b a P o j e d y n c z a ( $name ) 7 8 public $uses = array ( Recipe, User ) ; 9 #p u b l i c $ u s e s = a r r a y ( ) ; 10 #p u b l i c $ u s e s = f a l s e ; 11 public $helpers = array ( Js => array ( Jquery ) ) ; 12 public $components = array ( Auth ) ; 1 14 function akcja ( ) { 15 $this >set( color, pink ) ; # W widoku j e s t dost ępna zmienna $color ; 16 $this >redirect( array ( controller => orders, action => confirm ) ) ; 17 $this >render( $view, $layout ) ; 18 } 19 } Poprzednia wersja class HellosController extends AppController { 4 5 function index ( ) { 6 } 7 } 8?> app/controller/helloscontroller.php 1 Hello World app/view/hellos/index.ctp Nowa wersja class HellosController extends AppController { 4 5 function index ( ) { 6 $this >set ( komunikat, Hello World ) ; 7 } 8 } 9?> app/controller/helloscontroller.php 2 echo $komunikat ;?> app/view/hellos/index.ctp Dr inż. Stanisław Polak 27 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 28 Przedmiot: Aplikacje internetowe

8 Kontroler Wybrane funkcje wywołań zwrotnych (callbacks) Komponenty Kontroler Dostępne komponenty Acl Funkcja beforefilter() beforerender() afterfilter() Auth Session RequestHandler Security Cookie 1 function beforefilter ( ) { 2 $this >Auth >authorize = array ( Controller ) ; 4 $this >Cookie >name = CookieMonster ; 5 $this >Cookie >time = ; // or 1 hour 6 } Kontroler Paginator Dr inż. Stanisław Polak 29 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 0 Przedmiot: Aplikacje internetowe Komponenty Kontroler Komponent Auth Włączenie uwierzytelniania Komponenty Kontroler Komponent Auth Obsługa procedury logowania 2 App : : uses ( Controller, Controller ) ; 4 class AppController extends Controller { 5 public $components = array ( Session, Auth ) ; } app/controller/appcontroller.php CREATE TABLE users ( 2 id integer INTEGER PRIMARY KEY, username varchar (50), 4 password char ( 4 0 ) 5 ) ; SQL 2 class UsersController extends AppController { public $components = array ( Session, Auth ) ; #Je ż e l i app / C o n t r o l l e r / A p p o n t r o l l e r. php n i e z a w i e r a t e j l i n i i 4 5 function login ( ) { 6 if ( $this >request >is ( post ) ) { 7 if ( $this >Auth >login ( ) ) 8 return $this >redirect ( $this >Auth > redirecturl ( ) ) ; 9 else 10 $this >Session >setflash ( Nieprawidłowy login lub has ło, default, array ( ), auth ) ; 11 } 12 } 1 function logout ( ) { 14 $this >redirect ( $this >Auth >logout ( ) ) ; 15 } function beforefilter ( ) { 18 parent : : beforefilter ( ) ; 19 $this >Auth >allow( register ) ; 20 } 21 } app/controller/userscontroller.php 2 echo $this >Session >flash ( auth ) ; echo $this >Form >create ( User, array ( action => login ) ) ; 4 echo $this >Form >input ( username ) ; 5 echo $this >Form >input ( password ) ; 6 echo $this >Form >end ( Login ) ; 7 echo $this >Html >link ( " Rejestracja nowego uż ytkownika ", / users / register ) ; 8?> app/view/users/login.ctp Dr inż. Stanisław Polak 1 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 2 Przedmiot: Aplikacje internetowe

9 Komponenty Kontroler Model Tworzenie własnego komponentu Charakterystyka class MathComponent extends Component { 4 function sum ( $x, $y ){ 5 return $x+$y ; 6 } 7 // c a l l e d before C o n t r o l l e r : : b e f o r e F i l t e r ( ) 8 function initialize(&$controller, $settings = array ( ) ) {... } 9 // c a l l e d a f t e r C o n t r o l l e r : : b e f o r e F i l t e r ( ) 10 function startup(&$controller ) {... } 11 // c a l l e d a f t e r C o n t r o l l e r : : beforerender ( ) 12 function beforerender(&$controller ) {... } 1 // c a l l e d a f t e r C o n t r o l l e r : : r e n d e r ( ) 14 function shutdown(&$controller ) {... } 15 // c a l l e d before C o n t r o l l e r : : r e d i r e c t ( ) 16 function beforeredirect(&$controller, $url, $status=null, $exit=true ) {... } 17 }?> app/controller/component/mathcomponent.php class IndexesController extends AppController{ 4 public $components = array ( Math ) ; 5 function index ( ){ 6 $x = 5 ; 7 $y = 5 ; 8 $sum = $this >Math >sum ($x, $y ) ; 9 } 10 }?> app/controller/indexescontroller.php Dane Tabela BD Pliki Rekordy LDAP Zdarzenia ical Wiersze pliku CVS... Powiązania Dr inż. Stanisław Polak Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe Model Model Posługiwanie się modelem Pola specjalne 2 App : : uses ( AppModel, Model ) ; 4 class Ingredient extends AppModel { 5 } app/model/ingredient.php 2 App : : uses ( AppController, Controller ) ; 4 class IngredientsController extends AppController { 5 public $uses = array ( Ingredient, User ) ; 6 7 function index ( ) { 8 $ingredients = $this->ingredient >find ( all ) ; 9 $this >set ( ingredients, $ingredients ) ; $users = $this->user >find ( all ) ; 1 1 $this >loadmodel( Group ) ; 14 $groups = $this->group >find ( all ) ; } 17 } app/controller/ingredientscontroller.php title name created modified Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe

10 Łączenie modeli Model Łączenie modeli Łączenie modeli Model Przykład jeden do jeden jeden do wielu wiele do jednego wiele do wielu Przykład / Typ asocjacji Użytkownik posiada jeden profil User hasone Profile Użytkownik posiada wiele komentarzy User hasmany Comment Profil należy do użytkownika Profile belongsto User Lekarz posiada i należy do wielu pacjentów Physician hasandbelongstomany Patient Schemat profiles.user id comments.user id profiles.user id patients physicians.id, patients physicians.patient id, patients physicians.physician id class User extends AppModel { 4 public $hasone = Profile ; 5 public $hasmany = array ( 6 Comment => array ( 7 classname => Comment, 8 conditions => array ( Comment.approved => 1 ), 9 order => Comment. created DESC 10 ) 11 ) ; 1 1 $this->comment->jakasfunkcja() ; } 1 $this >User >Comment >jakasfunkcja ( ) ; app/model/user.php app/controller/userscontroller.php Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe Łączenie modeli Model Przykład Lista drużyn Pobieranie danych Model Pobieranie danych 1 CREATE TABLE players ( 2 id INTEGER PRIMARY KEY, firstname VARCHAR ( 5 0 ) NOT NULL, 4 lastname VARCHAR ( 5 0 ) NOT NULL, 5 position VARCHAR ( 2 5 ) NOT NULL, 6 team_id INTEGER 7 ) ; 2 App : : uses ( AppModel, Model ) ; 4 class Player extends AppModel { 5 public $belongsto = Team ; 6 } 7?> app/model/player.php 1 CREATE TABLE teams ( 2 id INTEGER PRIMARY KEY, name VARCHAR ( 5 0 ) NOT NULL 4 ) ; 2 App : : uses ( AppModel, Model ) ; 4 class Team extends AppModel { 5 public $hasmany = Player ; 6 public $displayfield = name ; 7 } 8?> app/model/team.php query(string $zapytanie) find($typ, $parametry) $typ [ all, list, neighbors, count, threaded, first ] $parametry tablica: conditions => array( Model.pole => $danawartość), recursive => 1, fields => array( Model.pole1, Model.pole2 ), order => array( Model.created, Model.pole DESC ), group => array( Model.pole ), limit => n, page => n, callbacks => true findallby<nazwapola>(string $wartość) findby<nazwapola>(string $wartość) field(string $nazwa, array $warunki = null, $porządek=null) read($pola, $id) Model::$data Model::$id Dr inż. Stanisław Polak 9 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 40 Przedmiot: Aplikacje internetowe

11 Pobieranie danych Model Przykłady Zapisywanie danych Model Podstawowy format danych 2 $this >Post >find ( list, array ( fields => Post. title ) ) ; $this >Post >id = 2 ; 4 $neighbors = $this >Post >find ( neighbors ) ; 5 $this >Model >find ( all, $condition ) ; 6 $this >User >findallbylastname( Polak ) ; // User. l a s t n a m e = Polak 7 $this >Cake >findbyid (7) ; // Cake. i d = 7 8 $this >Picture >query( " SELECT * FROM pictures LIMIT 2;" ) ; 9 echo $model >field( name, array ( created < => date ( Y-m-d H:i:s ) ), created DESC ) ; 10 $allcategories = $this >Category >find ( threaded ) ; 11 $this >User >id =1; 12 $dane=$this >User >read ( ) ; 1... Kontroler 1 Array ( 2 [ NazwaModelu ] => Array ( [ nazwapola1 ] => wartosc 4 [ nazwapola2 ] => wartosc 5 ) 6 ) 2 if (! empty ($this->request->data) ) { // I f t h e form data can be v a l i d a t e d and s a v e d... 4 if ( $this >Comment >save ($this->request->data) ) { 5 // Set a s e s s i o n f l a s h message and r e d i r e c t. 6 $this >Session >setflash ( " Comment Saved!" ) ; 7 $this >redirect ( / comments ) ; 8 } 9 } Kontroler Dr inż. Stanisław Polak 41 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 42 Przedmiot: Aplikacje internetowe Zapisywanie danych Model Wybrane metody Zapisywanie danych Model Przykład 1 Zapis danych modelu głównego User oraz stowarzyszonego Profile, za pomocą metody save() save(array $dane = null, boolean $walidacja = true, array $listapól = array()) save(array $dane = null, array $parametry = array()) create(array $dane = array()) savefield(string $nazwapola, string $wartośćpola, $walidacja = false) #$this->nazwamodelu->id = $id updateall(array $pola, array $warunki) saveall(array $dane = null, array $opcje = array()) nazwy opcji [validate, atomic, fieldlist] 2 if (! empty ( $this >request >data ) ) { // Możemy zapisa ć dane User s ą one przechowywane w $this >request >data [ User ] 4 $uzytkownik = $this >User >save ( $this >request >data ) ; 5 // Je ż e l i zapisano dane o uż ytkowniku, możemy dodać te informacje i zapisa ć P r o f i l 6 if (! empty ( $uzytkownik ) ) { 7 // I d e n t y f i k a t o r nowo utworzonego u ż y t k o w n i k a z n a j d u j e s i ę w $ t h i s >User >i d 8 $this >request >data [ Profile ] [ user_id ] = $this >User >id ; 9 // Poniewa ż User i P r o f i l e s ą po ł ą czone r e l a c j ą hasone P r o f i l e, możemy u z y s k a ć d o s t ę p do modelu P r o f i l e z poziomu modelu User 10 $this >User >Profile >save ( $this >request >data ) ; 11 } 12 } 1... app/controller/userscontroller.php Dr inż. Stanisław Polak 4 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 44 Przedmiot: Aplikacje internetowe

12 Zapisywanie danych Model Przykład 2 Zapis danych modelu głównego Company oraz stowarzyszonego Account, za pomocą metody saveall() Usuwanie danych Model Dostępne metody 1 echo $this >Form >create ( Company, array ( action => add ) ) ; 2 echo $this >Form >input ( Company. nazwa, array ( label => Nazwa firmy ) ) ; echo $this >Form >input ( Company.opis ) ; 4 echo $this >Form >input ( Company. lokalizacja ) ; 5 echo $this >Form >input ( Account.0. nazwa, array ( label => Nazwa konta ) ) ; 6 echo $this >Form >input ( Account.0. nazwauzytkownika ) ; 7 echo $this >Form >input ( Account.0. ) ; 8 echo $this >Form >end ( Dodaj ) ; app/view/companies/add.ctp delete(int $id = null, boolean $kaskadowo = true) deleteall(mixed $warunki, $kaskadowo = true, $callbacki = false) 1 #: Company hasmany Account function add ( ) { 4 if (! empty ( $this >request >data ) ) { 5 $this >Company >saveall ( $this >request >data, array ( validate => first ) ) ; 6 } 7 } 8... app/controller/companiescontroller.php Dr inż. Stanisław Polak 45 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 46 Przedmiot: Aplikacje internetowe Inne zagadnienia Model Wybrane atrybuty class Example extends AppModel { 4 public $usedbconfig = alternatywna ; 5 public $usetable = false ; // Ten model nie korzysta z t a b e l i BD 6 public $tableprefix = alternate_ ; // bę dzie szuka ł alte rna te ex ampl es 7 public $primarykey = example_id ; // example id j e s t polem w BD 8 public $displayfield = username ; 9 public $recursive = 1 // warto ś ć domyś lna ; 10 public $order = array ( " Example. pole1 " => "asc ", " Example. pole2 " => "DESC " ) ; 11 print_r ( $this >data ) ; 12 public $_schema = array ( 1 imie => array ( 14 type => string, 15 length => 0 16 ), 17 nazwisko => array ( 18 type => string, 19 length => 0 20 ), 21 => array ( 22 type => string, 2 length => 0 24 ), 25 message => array ( type => text ) 26 ) ; 27 public cachequeries = true ; 28 } app/model/example.php Inne zagadnienia Model Funkcje wywołań zwrotnych Funkcja beforefind(array $danezapytania) afterfind(array $wyniki,boolean $pierwotny=false) beforevalidate(array $opcje=array()) beforesave(array $opcje=array()) aftersave($utworzono) beforedelete(boolean $kaskadowo=true) afterdelete() onerror() 2 App : : uses ( AuthComponent, Controller / Component ) ; 4 class User extends AppModel { 5 function beforesave ( $options = array ( ) ) { 6 $this >data [ User ] [ password ] = AuthComponent : : password ( $this >data [ User ] [ password ] ) ; 7 return true ; 8 } 9 } app/model/user.php Dr inż. Stanisław Polak 47 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 48 Przedmiot: Aplikacje internetowe

13 Inne zagadnienia Model Wirtualne pola 2 // Dla SQLite public $virtualfields = array ( 4 // Dla SQLite 5 nazwa => User. imie \ \ User. nazwisko 6 // Dla MySQL 7 // nazwa => CONCAT( User. imie,, User. n a z w i s k o ) 8 ) ; 9... app/model/user.php 2 $results = $this >User >find( first ) ; 4 // wynik zawiera nast ępujące dane 5 array ( 6 User => array ( 7 imie => Stanis ław, 8 nazwisko => Polak, 9 nazwa => Stanisław Polak, 10 // wi ę c e j pó l. 11 ) 12 ) ; 1 14 $this >User >hasfield ( nazwa ) ; // Zwraca false, gdy nie i s t n i e j e konkretne ( fizyczne ) pole o nazwie nazwa 15 $this >User >hasfield ( nazwa, true ) ; // Zwraca true, gdy i s t n i e j e wirtualne pole o nazwie nazwa 16 $this >User >isvirtualfield ( nazwa ) ; // t r u e 17 $this >User >isvirtualfield ( imie ) ; // f a l s e 18 $this >User >getvirtualfield ( nazwa ) ; // dla MySQL zwraca CONCAT( User. imie,, User. nazwisko ) app/controller/userscontroller.php Inne zagadnienia Model Zarządzanie schematem bazy danych oraz migawki 1 cake schema generate 2 cake schema create cake schema update 4 cake schema update -s 2 #app / Config /Schema/ schema 2. php 5 cake schema dump --write dump.sql 1 class AplikacjaSchema extends CakeSchema { public $users = array ( 4 id => array ( type => integer, null => false, length => 11, key => primary ), 5 username => array ( type => string, null => false, length => 8), 6 password => array ( type => string, null => true, length => 40), 7 imie => array ( type => string, null => true, length => 20), 8 nazwisko => array ( type => string, null => true, length => 20), 9 => array ( type => string, null => true, length => 0), 10 indexes => array ( 11 PRIMARY => array ( column => username, unique => 1) 12 ), 1 tableparameters => array ( ) 14 ) ; 15 } app/config/schema/schema.php Dr inż. Stanisław Polak 49 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 50 Przedmiot: Aplikacje internetowe Walidacja Model Reguły proste class User extends AppModel { 4 public $validate = array ( 5 login => alphanumeric, 6 => , 7 dataurodzenia => date 8 ) ; 9 } app/model/user.php Walidacja Model Reguły złożone class User extends AppModel { 4 public $validate = array ( 5 login => array ( 6 alfanumeryczne => array ( 7 rule => alphanumeric, 8 required => true, 9 message => Tylko litery lub cyfry 10 ), 11 pomiedzy => array ( 12 rule => array ( between, 5, 15), 1 message => Od 5 do 15 znak ów 14 ) 15 ), 16 password => array ( 17 rule => array ( minlength, 8 ), 18 message => Mimimum 8 znak ów 19 ), 20 => , 21 dataurodzenia => array ( 22 rule => date, 2 message => Podaj poprawn ą dat ę, 24 allowempty => true 25 ) 26 ) ; 27 } app/model/user.php Dr inż. Stanisław Polak 51 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 52 Przedmiot: Aplikacje internetowe

14 Walidacja Model Definiowanie własnych reguł 2 public $validate = array ( login => array ( 4 rule => /^[a-z0-9]{,} $/i, 5 message => Tylko cyfry lub litery, min. znaki 6 ) 7 ) ; 8... Użycie wyrażenia regularnego class User extends AppModel { 4 public $validate = array ( 5 promotion_code => array ( 6 rule => array ( limitduplicates, 25), 7 message => Przekroczono limit krotno ści uż ycia kodu. 8 ) 9 ) ; 10 function limitduplicates ( $data, $limit ){ 11 $existing_promo_count = $this >find ( count, array ( conditions => $data, recursive => 1) ) ; 12 return $existing_promo_count < $limit ; 1 } 14 } Własna metoda walidująca Zachowania Model Zachowania class Category extends AppModel { 4 public $actsas = array ( 5 Tree => array ( 6 left => left_node, 7 right => right_node 8 ), 9 Translate 10 ) ; 11 } app/model/category.php class CategoriesController extends AppController { 4 5 public function index ( ) { 6 this >Category >id = 4 2 ; 7 kids = $this >Category >children ( ) ; 8 this >Category >Behaviors >unload ( Translate ) ; 9 this >Category >Behaviors >load ( Tree, array ( left => new_left_node ) ) ; 10 } 11 } app/controller/categoriescontroller.php Dr inż. Stanisław Polak 5 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 54 Przedmiot: Aplikacje internetowe Zachowania Model Widok Dostępne zachowania Składniki warstwy widoku ACL Containable Translate Tree Widoki (Views) Układy (Layouts) Elementy (Elements) Pomocnicy (Helpers) Motywy (Themes) app webroot View Themed... NazwaKontrolera NazwaMotywu webroot... NazwaKontrolera Dr inż. Stanisław Polak 55 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 56 Przedmiot: Aplikacje internetowe

15 Składniki warstwy widoku Widok Widoki Składniki warstwy widoku Widok Układy 1 <div class=" logout "><a href="/ users / logout "><img src="/ img / logout. png " width="0" alt="[ logout ]">Wylogowanie</a></div> 2 <aside> <h1>menu</h1> 4 <div> 5 <h2>panele</h2> 6 <ul> 7 <?php echo $this >fetch( panels ) ;?> 8 </ul> 9 </div> 10 </aside> <h2><?php echo $this >fetch( title ) ;?></h2> 1 <?php echo $this >fetch( content ) ;?> 14 <div class=" logout "><a href="/ users / logout "><img src="/ img / logout. png " width="0" alt="[ logout ]">Wylogowanie</a></div> app/view/people/common/main.ctp 2 // Pozosta ł a zawarto ść staje s i ę tre ś ci ą bloku o nazwie c o n t e n t $this >extend( Common/main ) ; 4 $this >assign( title, Panel użytkownika ) ; 5 //Utwó rz blok panels 6 $this >start( panels ) ; 7 echo <li><a href="/notes ">Notek </a></li> ; 8 echo <li ><a href ="/ users "> Administratora </a > </ li > ; 9 $this >end() ;?> // Pozosta ł a zawarto ść staje s i ę tre ś ci ą bloku o nazwie c o n t e n t 12 Treść app/view/people/index.ctp 1 <!DOCTYPE html> 2 <html lang="en"> <head> 4 <?php echo $this >Html >charset ( ) ;?> 5 <title><?php echo $title for layout;?></title> 6 <link rel=" shortcut icon " href=" favicon. ico " type=" image /x- icon "> 7 <?php 8 echo $this->fetch( meta ); 9 echo $this->fetch( css ); 10 echo $this->fetch( script );?> 11 </head> 12 <body> 1 <?php echo $this->fetch( content );?> 14 </body> 15 </html> app/view/layouts/uklad.ctp class PeopleController extends AppController { 4 function index ( ) { // Poniż sze l i n i e można również umieś ci ć w pliku widoku 7 $this->set( title_for_layout, Panel u ż ytkownika ); 8 $this->layout = uklad ; } 11 } app/controller/peoplecontroller.php Dr inż. Stanisław Polak 57 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 58 Przedmiot: Aplikacje internetowe Składniki warstwy widoku Widok Pomocnicy Składniki warstwy widoku Widok Podstawowi pomocnicy class PeopleController extends AppController { 4 public $helpers = array ( Form, Time ) ; function akcja ( ) { 7 $this->helpers[] = Number ; 8 } } Pomocnik Pomocnik Pomocnik Pomocnik Cache Form Html Js Number Paginator Rss Session Text Time app/controller/peoplecontroller.php Dr inż. Stanisław Polak 59 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 60 Przedmiot: Aplikacje internetowe

16 Składniki warstwy widoku Widok Pomocnik Paginator class UsersController extends AppController { 4 public $components=array ( Paginator ) ; 5 public $helpers=array ( Paginator ) ; 6 7 function index ( ) { 8 $this >Paginator >settings = array ( limit => 2, page => 1) ; 9 $this >set ( users, $this >Paginator >paginate ( ) ) ; 10 } 11 } app/controller/userscontroller.php 1 <table cellpadding="0" cellspacing="0"> 2 <tr> <th><?php echo $this >Paginator >sort( id ) ;?></th> </tr> 6 <?php foreach ( $users as $user ) :?> 7 <tr> 8 <td><?php echo $user [ User ] [ id ] ;?></td> </tr> 1 endforeach ;?> 12 </table> 1 <?php 14 echo $this >Paginator >counter ( array ( 15 format => Page {: page } of {: pages }, showing {: current } records out of {: count } total, starting on record {: start }, ending on {: end } 16 ) ) ; 17 echo $this >Paginator >prev( <previous ), array ( ), null, array ( class => prev disabled ) ) ; 18 echo $this >Paginator >numbers(array ( separator => ) ) ; 19 echo $this >Paginator >next( next >, array ( ), null, array ( class => next disabled ) ) ; 20?> app/view/users/index.ctp Składniki warstwy widoku Widok Tworzenie pomocnika Przykład 2 App : : uses ( AppHelper, View / Helper ) ; 4 class LinkHelper extends AppHelper { 5 public $helpers = array ( Html ) ; 6 7 function link ( $create, $title, $url ){ 8 if ( $create ) 9 return $this >Html >link ( $title, $url ) ; 10 else 11 return $title ; 12 } 1 } app/view/helper/linkhelper.php 2 <?php echo $this >Link->link( $notespanel, Notek, / notes )?>... class PeopleController extends AppController { 4 public $helpers = array ( Link ) ; 5 6 public function index ( ){ // Sprawd ź czy i s t n i e j e k o n t r o l e r Notes 9 $notespanel = App : : import ( Controller, Notes ) ; // t r u e, j e ś l i k l a s a jest ju ż w pamię ci lub je ś l i plik z o s t a ł z n a l e z i o n y i za ł adowany ; f a l s e j e ś l i n i e 10 $this >set ( notespanel, $notespanel ) ; 1 12 } 1 } app/view/people/index.ctp app/controllers/peoplecontroller.php Dr inż. Stanisław Polak 61 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 62 Przedmiot: Aplikacje internetowe Składniki warstwy widoku Widok Klasy wspomagające Elementy Funkcjonalności 2 echo $this >element( logout ) ; echo $this >element( logout, 4 array ( 5 "text" => " Wylogowanie " 6 ), 7 array ( 8 "cache" => true, 9 "callbacks" => true #Funkcje zwrotne beforerender oraz afterrender będą uruchamiane 10 ) 11 ) ; Widok 2 $content =! empty ($text)? $text : Wylogowanie ;?> 4 <div class=" logout "><a href="/ users / logout "><img src="/img / logout.png " width="0 " alt="[ logout ]"><?php echo $content ;?></a></div> app/view/elements/logout.ctp Dziennikowanie Buforowanie Umiędzynarodowienie i lokalizacja Operacje tablicowe Operacje łańcuchowe Tworzenie obiektów SimpleXml lub DOMDocument Odmiana wyrazów Gniazda (sockety) HTTP Parsowanie URL Haszowanie i szyfrowanie Oczyszczanie danych Poczta Katalogi i pliki Dostęp do funkcjonalności pomocników Time, Number oraz Text Dr inż. Stanisław Polak 6 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 64 Przedmiot: Aplikacje internetowe

17 Klasy wspomagające Lokalizacja i umiędzynarodowienie Klasy wspomagające Oczyszczanie danych Wyświetlanie tekstu wielojęzycznego 2 App : : uses( Sanitize, Utility ) ;... 4 $badstring = ";: < script ><html >< // >@@#" ; 5 echo Sanitize : : paranoid( $badstring ) ; // na wyj ś c i u : s c r i p t h t m l 6 echo Sanitize : : paranoid( $badstring, array ) ) ; // na wyj ś c i u : s c r i p t h t m 7 $badstring = <font size ="99" color="# FF0000 ">HEY </ font ><script >... </ script > ; 8 echo Sanitize : : html( $badstring ) ; // na wyj ś c i u : & l t ; f o n t s i z e=&quot ;99& quot ; c o l o r =&quot ;#FF0000&quot ;& gt ; HEY& l t ; / f o n t&gt ;& l t ; s c r i p t&gt ;... & l t ; / s c r i p t&gt ; 9 #zak ł adamy, ż e w t a b l i c y $ o p c j e k l u c z remove w s k a z u j e warto ś ć TRUE 10 echo Sanitize : : html( $badstring, $opcje ) ; // na wyj ś c i u : HEY echo Sanitize : : escape( " Stanislaw Polak s page ", default ) ; // na wyj ś ciu : Stanislaw Polak s page 12 Sanitize : : clean( $this >request >data, array ( encode => false ) ) ; 1... Przykłady użycia Pojęcia podstawowe Umiędzynarodowienie (i18n) Lokalizacja (l10n) Globalizacja (g11n) = i18n + l10n Przygotowanie danych 1 msgid " first name " 2 msgstr " First name " msgid " message " 4 msgstr " You belong to a group of %s " app/locale/eng/lc MESSAGES/default.po 1 msgid " first name " 2 msgstr " Imi ę" msgid " message " 4 msgstr " Nale ż ysz do grupy %s " app/locale/pol/lc MESSAGES/default.po Przykład użycia 1 echo ( " first name " ) }; 2 echo ( message, $dane [ Group ] [ name ] ) ; Widok 2 Configure : : write ( Config. language, pol ) ;... Kontroler Dr inż. Stanisław Polak 65 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 66 Przedmiot: Aplikacje internetowe Lokalizacja i umiędzynarodowienie Klasy wspomagające Kontrola dostępu (ACL) Tłumaczenie rekordów bazy danych Podstawowe pojęcia cake i18n 1 CREATE TABLE notes ( 2 id integer PRIMARY KEY, title varchar ( ) default NULL, 4 body text 5 ) ; SQL 2 public $actsas = array ( Translate => array ( title, body ) ) ;... app/model/note.php ACL (Access Control List) określa kto ma dostęp do czego ARO (Access Request Object) reprezentuje kto ACO (Access Control Object) reprezentuje czego 2 function beforefilter ( ) { Configure : : write ( Config. language, pol ) ; 4 } 5... app/controller/notescontroller.php Dr inż. Stanisław Polak 67 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 68 Przedmiot: Aplikacje internetowe

18 Kontrola dostępu (ACL) Tabele z informacjami o użytkownikach Autoryzatory Kontrola dostępu (ACL) Dostępne autoryzatory 1 CREATE TABLE users ( 2 id INTEGER PRIMARY KEY, username CHAR ( 8 ) NOT NULL UNIQUE, 4 password CHAR ( 4 0 ) NOT NULL, 5 group_id TINYINT NOT NULL, ) ; 8 9 CREATE TABLE groups ( 10 id INTEGER PRIMARY KEY, 11 name VARCHAR ( 2 0 ) NOT NULL, 1 1 ) ; ActionsAuthorize CrudAuthorize ControllerAuthorize SQL Dr inż. Stanisław Polak 69 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 70 Przedmiot: Aplikacje internetowe Autoryzatory Kontrola dostępu (ACL) Autoryzator ActionsAuthorize Autoryzatory Kontrola dostępu (ACL) Autoryzator CrudAuthorize 2 class AppController extends Controller {... 4 public $components = array ( 5 Acl, 6 Auth => array ( 7 authorize => array ( Actions => array ( actionpath => controllers / ) ) 8 ), ) ; 1 12 } app/controller/appcontroller.php class AppController extends Controller { 4 public $components = array ( 5 Acl, 6 Auth => array ( 7 authorize => array ( 8 Crud => array ( 9 / 10 i n d e x => r e a d, 11 add => c r e a t e, 12 e d i t => update, 1 view => r e a d, 14 remove => d e l e t e, 15 c r e a t e => c r e a t e, 16 r e a d => r e a d, 17 update => update, 18 d e l e t e => d e l e t e 19 / 20 actionmap => array ( show => read, pokaz => read ) 21 ) 22 ) 2 ) 24 ) ; } app/controller/appcontroller.php 2 function beforefilter ( ) { parent : : beforefilter ( ) ; 4 $this >Auth >mapactions( 5 array ( 6 create => array ( register, dodaj ), 7 read => array ( wyswietl ) 8 ) 9 ) ; 10 } 1 Kontroler Dr inż. Stanisław Polak 71 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 72 Przedmiot: Aplikacje internetowe

19 Autoryzatory Kontrola dostępu (ACL) Autoryzator ControllerAuthorize Implementacje Kontrola dostępu (ACL) Dostępne implementacje ACL 2 class UsersController extends Controller { public $components = array ( 4 Auth => array ( authorize => Controller ), 5 ) ; 6 7 public function isauthorized( $user = null ) { 8 $usergroup = $user [ Group ] [ name ] ; 9 10 // A d m i n i s t r a t o r z y mogą wykonywa ć dowolne a k c j e k o n t r o l e r a Users, p o z o s t a l i ty lk o akcje index oraz view 11 if ( $usergroup == administrators in_array ( $this >action, array ( index, view ) ) ) { 12 return true ; // zezwolenie na dost ęp do zasobu 1 } if ( $usergroup == users ) { 16 return false ; // brak prawa dost ępu do zasobu 17 } 18 return false ; 19 } 20 } app/controller/userscontroller.php IniAcl PhpACl DbAcl Dr inż. Stanisław Polak 7 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 74 Przedmiot: Aplikacje internetowe Implementacje Kontrola dostępu (ACL) Implementacja IniAcl Implementacje Kontrola dostępu (ACL) Implementacja PhpAcl 1 Configure : : write ( Acl. classname, IniAcl ) ; 2 #C o n f i g u r e : : w r i t e ( Acl. d a t a b a s e, d e f a u l t ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php 1 ; 2 ; Users ; 4 5 [ polak ] 6 groups = administrators 7 allow = 8 deny = 9 10 [ user ] 11 groups = users 12 allow = 1 deny = ; 16 ; Groups 17 ; [ users ] 20 allow = controllers / People / index 21 deny = 22 2 [ administrators ] 24 allow = controllers / People /index, controllers / Users / index, deny = app/config/acl.ini.php 1 Configure : : write ( Acl. classname, PhpAcl ) ; 2 #C o n f i g u r e : : w r i t e ( Acl. d a t a b a s e, d e f a u l t ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php 1 $config [ map ] = array ( 2 User => User / username, Role => User / group_id, 4 ) ; 5 $config [ alias ] = array ( 6 Role /1 => Role / user, 7 Role /2 => Role / staff, 8 Role / => Role / admin 9 ) ; 10 $config [ roles ] = array ( 11 Role / user => null, 12 Role / staff => null, 1 Role / admin => null, 14 Role / editor => Role /user, Role / staff, 15 User / polak => Role / editor, 16 ) ; 17 $config [ rules ] = array ( 18 allow => array ( 19 * => Role / admin, 20 controllers / Pages / display => Role / default, Role / user, 21 controllers / Users /( index view ) => Role / user, 2 2 ), 24 deny => array ( 25 controllers / Users / delete => Role / editor, ), 28 ) ; app/config/acl.php Dr inż. Stanisław Polak 75 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 76 Przedmiot: Aplikacje internetowe

20 Implementacje Kontrola dostępu (ACL) Implementacja DbAcl 1 Configure : : write ( Acl. classname, DbAcl ) ; 2 Configure : : write ( Acl. database, default ) ; app/config/core.php 2 class AppController extends Controller { public $components = array ( 4 Acl, 5 Auth => array ( 6 authorize => array ( Actions => array ( actionpath => controllers / ) ) 7 ), ) ; } app/controller/appcontroller.php Tworzenie tabel ACL cake acl initdb 1 CREATE TABLE " aros " ( 2 "id" integer primary key autoincrement, " parent_id " integer ( 1 0 ) DEFAULT NULL, 4 " model " varchar ( ) DEFAULT NULL, 5 " foreign_key " integer ( 1 0 ) DEFAULT NULL, 6 " alias " varchar ( ) DEFAULT NULL, 7 " lft " integer ( 1 0 ) DEFAULT NULL, 8 " rght " integer ( 1 0 ) DEFAULT NULL 9 ) ; CREATE TABLE " acos " ( 12 "id" integer primary key autoincrement, 1 " parent_id " integer ( 1 0 ) DEFAULT NULL, 14 " model " varchar ( ) DEFAULT NULL, 15 " foreign_key " integer ( 1 0 ) DEFAULT NULL, 16 " alias " varchar ( ) DEFAULT NULL, 17 " lft " integer ( 1 0 ) DEFAULT NULL, 18 " rght " integer ( 1 0 ) DEFAULT NULL 19 ) ; CREATE TABLE " aros_acos " ( 2 "id" integer primary key autoincrement, 24 " aro_id " integer ( 1 0 ) NOT NULL, 25 " aco_id " integer ( 1 0 ) NOT NULL, 26 " _create " varchar ( 2 ) DEFAULT 0 NOT NULL, 27 " _read " varchar ( 2 ) DEFAULT 0 NOT NULL, 28 " _update " varchar ( 2 ) DEFAULT 0 NOT NULL, 29 " _delete " varchar ( 2 ) DEFAULT 0 NOT NULL 0 ) ; SQL Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Automatyczne dodawanie/usuwanie ARO podczas dodawania/usuwania użytkownika lub grupy class User extends Model { 4 public $belongsto = array ( Group ) ; 5 public $actsas = array ( Acl => array ( type => requester ) ) ; 6 7 function parentnode() { 8 if (! $this >id && empty ( $this >data ) ) { 9 return null ; 10 } 11 if ( isset ( $this >data [ User ] [ group_id ] ) ) { 12 $groupid = $this >data [ User ] [ group_id ] ; 1 } else { 14 $groupid = $this >field ( group_id ) ; 15 } 16 if (! $groupid ) { 17 return null ; 18 } else { 19 return array ( Group => array ( id => $groupid ) ) ; 20 } 21 } 22 } app/model/user.php class Group extends Model { 4 public $hasmany = array ( User ) ; 5 public $actsas = array ( Acl => array ( type => requester ) ) ; 6 7 function parentnode() { 8 return null ; 9 } 10 } app/model/group.php Dr inż. Stanisław Polak 77 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 78 Przedmiot: Aplikacje internetowe Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie ARO Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie ACO 1 cake acl create aro root Group. 1 2 cake acl create aro root Group. 2 cake acl create aro root Group. 4 5 cake acl create aro Group. 1 User. 6 cake acl create aro Group. 2 User. 2 7 cake acl create aro Group. User. 1 Tworzenie, przy użyciu skryptu cake 1 cake acl view aro 2 Welcome to CakePHP v2.. 4 Console 4 5 App : aplikacja 6 Path : / home / polak / aplikacja / 7 8 Aro tree : 9 10 [ 1 ] Group [ 4 ] User. 12 [ 2 ] Group. 2 1 [ 5 ] User.2 14 [ ] Group. 15 [ 6 ] User.1 16 Wyświetlenie drzewa ARO 1 $aro = $this >Acl >Aro ; 2 $groups = array ( 0 => array ( 4 alias => Group.1, 5 model => Group, 6 foreign_key => 1 # id grupy z t a b e l i groups 7 ), 8 1 =>..., 9 2 => ) ; 11 foreach ( $groups as $data ) { 12 $aro >create ( ) ; 1 $aro >save ( $data ) ; 14 } 15 ############################### 16 $aro = new Aro ( ) ; 17 $users = array ( 18 0 => array ( 19 alias => User., 20 parent_id => 1, # id węz ł a w drzewie ARO, tu ; id węz ł a o nazwie Group.1 21 model => User, 22 foreign_key =>, # id uż ytkownika z tabeli users 2 ), 24 1 =>..., 25 2 => ) ; 27 foreach ( $users as $data ) { 28 $aro >create ( ) ; 29 $aro >save ( $data ) ; 0 } Z poziomu kontrolera 1 cake acl create aco root controllers 2 cake acl create aco controllers Users cake acl create aco controllers / Users create 4... Za pomocą skryptu cake 1 $aco =& $this >Acl >Aco ; 2 $aco >create ( array ( parent_id => null, alias => controllers ) ) ; $root = $aco >save ( ) ; 4 $controllers_id = $root [ Aco ] [ id ] ; 5 $aco >create ( array ( parent_id => $controllers_id, alias => Users ) ) ; 6 $root = $aco >save ( ) ; 7 $users_id = $root [ Aco ] [ id ] ; 8 $aco >create ( array ( parent_id => $users_id, alias => create ) ) ; 9 $aco >save ( ) ; Z poziomu kontrolera Dr inż. Stanisław Polak 79 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 80 Przedmiot: Aplikacje internetowe

21 Implementacje Kontrola dostępu (ACL) Implementacja DbAcl Tworzenie powiązań pomiędzy ARO a ACO Testowanie Rama testująca PHPUnit Programowanie sterowane testami Tworzenie i wykonywanie testów jednostkowych Instalacja 1 cake acl grant Group. controllers all 2 cake acl grant Group. 2 controllers / Notes all cake acl grant Group. 1 controllers / People read Za pomocą skryptu cake 2 $group = $this >User >Group ; //Uż ytkownicy z grupy mogą wykonywać dowolne ( w s z y s t k i e ) a k c j e 4 $group >id = ; 5 $this >Acl >allow ( $group, controllers ) ; 6 7 //Uż ytkownicy z grupy 2 mogą wykonywać dowolne akcje dla k o n t r o l e r a Notes 8 $group >id = 2 ; 9 $this >Acl >deny ( $group, controllers ) ; 10 $this >Acl >allow ( $group, controllers / Notes ) ; //Uż ytkownicy z grupy 1 mogą wykonywać akcje typu r e a d d l a k o n t r o l e r a People 1 $group >id = 1 ; 14 $this >Acl >deny ( $group, controllers ) ; 15 $this >Acl >allow ( $group, controllers / People, read ) ; Z poziomu kontrolera 1 pear upgrade PEAR 2 pear config set auto_discover 1 pear install pear. phpunit. de/ PHPUnit Konfigurowanie CakePHP 1 Configure : : write ( debug, 1) ; #Warto ś ć parametru debug 1 1 public $test = array ( 2 datasource =>...,... 4 ) ; app/config/core.php app/config/database.php Etapy procedury testowania 1. Opcjonalnie, utworzenie osprzętu testowania (fixture) 2. Utworzenie testów. Uruchomienie testów Dr inż. Stanisław Polak 81 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 82 Przedmiot: Aplikacje internetowe Osprzęt testowania Programowanie sterowane testami Tworzenie osprzętu testowania Osprzęt testowania Programowanie sterowane testami Importowanie definicji i rekordów 2 class UserFixture extends CakeTestFixture { public $fields = array ( 4 id => array ( type => integer, null => false, length => 11, key => primary ), 5 username => array ( type => string, null => false, length => 50), 6 password => array ( type => string, null => true, length => 40), 7 group_id => array ( type => integer, null => true ), 8 indexes => array ( PRIMARY => array ( column => username, unique => 1) ), 9 tableparameters => array ( ) 10 ) ; public $records = array ( 1 array ( 14 id => 1, 15 username => admin, 16 password => fc1ca166055a25701d12f14f0fd74ba50, 17 group_id => 1 18 ), 19 array ( 20 id => 2, 21 username => manager, 22 password => 8951 d5c5c26e451a6a76c55e950d65fd2e145, 2 group_id => 2 24 ) 25 ) ; 26 } 2 class UserFixture extends CakeTestFixture { public $import = User ; 4 public $import = array ( model => User, records => true ) ; 5 public $import = array ( table => users ) ; 6 public $import = array ( table => users, records => true ) ; 7 } app/test/fixture/userfixture.php app/test/fixture/userfixture.php Dr inż. Stanisław Polak 8 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 84 Przedmiot: Aplikacje internetowe

22 Testy Programowanie sterowane testami Co można testować Testy Programowanie sterowane testami Reguły dla testów Katalog app/test/case/[typ] Modele Kontrolery Pomocnicy Komponenty Nazwy plików *Test.php Klasy nadrzędne CakeTestCase i ControllerTestCase PHPUnit Framework TestCase Nazwy metod zawierających testy admins() testadmins() Dr inż. Stanisław Polak 85 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 86 Przedmiot: Aplikacje internetowe Testy Programowanie sterowane testami Testowanie modeli class User extends AppModel { 4 function admins( $fields = null ) { 5 $params = array ( 6 conditions => array ( 7 $this >name.. group_id => 8 ), 9 fields => $fields 10 ) ; 11 return $this >find ( all, $params ) ; 12 } 1 } app/model/user.php 2 App : : uses ( User, Model ) ; 4 class UserTestCase extends CakeTestCase { 5 public $fixtures = array ( app. user, app. group, app. profile ) ; 6 7 public function setup() { 8 parent : : setup ( ) ; 9 $this >User = ClassRegistry : : init ( User ) ; 10 } public function teardown() { 1 unset ( $this >User ) ; 14 parent : : teardown ( ) ; 15 } function testadmins() { 18 $result = $this >User > admins( array ( username ) ) ; 19 $expected = array ( 20 array ( User => array ( username => admin1 ) ), 21 array ( User => array ( username => admin2 ) ) 22 ) ; 2 24 $this >assertequals($expected, $result) ; 25 } 26 } app/test/case/model/usertest.php Uruchamianie testów Programowanie sterowane testami Sposoby uruchomienia testów Testowanie przykładowego modelu User Pierwszy sposób 1. DEBUG App / Tests 4. Model / User Drugi sposób cake test app/model/user.php --stderr Dr inż. Stanisław Polak 87 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 88 Przedmiot: Aplikacje internetowe

23 Źródła Źródła Źródła I Źródła II Faheem Abbas. Defining your own components in cakephp. defining-your-own-components-in-cakephp/. the bakery. Dokumentacja CakePHP. Jason Gilmore. Scaffolding with cakephp - managing your fantasy football team. Maciej Grajcarek. L10n i i18n w cakephp 1.2. http: //blog.uplevel.pl/index.php/2008/05/l10n-i-i18n-w-cakephp-12/. Matt Inman. 21 things you must know about cakephp things-you-must-know-about-cakephp.html. Wikipedia. Dr inż. Stanisław Polak 89 Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak 90 Przedmiot: Aplikacje internetowe

Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż.

Plan prezentacji. Framework CakePHP. CakePHP. Przydatne adresy. Wstęp. Przedmiot: Aplikacje internetowe. Przykłady. Kontroler. Dr inż. Plan prezentacji Przedmiot: Aplikacje internetowe Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie http://artemis.wszib.edu.pl/~polak/ Wstęp Przykłady Kontroler Model Widok Klasy

Bardziej szczegółowo

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar) Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Co narzuca MVC? Architekturę aplikacji wykonaną w konwencji Model Widok - Kontroler Model reprezentacja danych i dostępu do nich Widok elementy

Bardziej szczegółowo

Studium Podyplomowe Aplikacje i Us ugi Internetowe Tworzenie witryn internetowych 2012/2013. CakePHP część II

Studium Podyplomowe Aplikacje i Us ugi Internetowe Tworzenie witryn internetowych 2012/2013. CakePHP część II 1. Dodatkowe elementy aplikacji CakePHP część II Przygotowany w poprzedniej części projekt prezentuje podstawowe elementy aplikacji opartej o CakePHP takie jak: klasy modelu, kontrolery, widoki. W tej

Bardziej szczegółowo

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Konfiguracja i przygotowanie przykładowej aplikacji opartej o model Model-View- Controller Konfiguracja frameworka Zainstaluj na serwerze

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 1

MVC w praktyce tworzymy system artykułów. cz. 1 MVC w praktyce tworzymy system artykułów. cz. 1 Tworząc różnego rodzaju aplikacje natrafiamy na poważny problem utrzymania dobrej organizacji kodu przejrzystej oraz łatwej w rozbudowie. Z pomocą przychodzą

Bardziej szczegółowo

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner 2013-03-11 Poznaj ASP.NET MVC Kamil Cieślak Microsoft Student Partner 2013-03-11 Agenda Czym jest ASP.NET MVC? Wzorzec MVC ASP.NET MVC vs inne frameworki Bazy danych w ASP.NET MVC Jak zacząć? 2 Czym jest ASP.NET

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2012 Plan wykładu Modele danych i bazy danych Modele danych Migracje Bazy danych w Railsach Rusztowania Walidacja modeli Modele danych Definicje

Bardziej szczegółowo

pawel.rajba@gmail.com, http://kursy24.eu/

pawel.rajba@gmail.com, http://kursy24.eu/ pawel.rajba@gmail.com, http://kursy24.eu/ Wprowadzenie, struktura Podstawy Twig Adres i nawigacja Request, Response i parametry Ciasta, sesje i flash messages Model i baza danych Formularze Security Ilustracje

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2014 Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 38 Zasady Projekt Składowe projektu przynajmniej

Bardziej szczegółowo

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3 3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0

Bardziej szczegółowo

Laboratorium 6 Tworzenie bloga w Zend Framework

Laboratorium 6 Tworzenie bloga w Zend Framework Laboratorium 6 Tworzenie bloga w Zend Framework Przygotowanie bazy danych 1. Wykonaj skrypt blog.sql, który założy w bazie danych dwie tabele oraz wpisze do nich przykładowe dane. Tabela blog_uzytkownicy

Bardziej szczegółowo

Wprowadzenie do framework a Symfony

Wprowadzenie do framework a Symfony Wprowadzenie do framework a Symfony mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Bazuje na wzorcu projektowym MVC Niezależność od systemu bazodanowego Programowanie zorientowane

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

Bardziej szczegółowo

Laboratorium nr 3 Podstawy Ruby on Rails

Laboratorium nr 3 Podstawy Ruby on Rails Laboratorium nr 3 Podstawy Ruby on Rails Elektroniczne Przetwarzanie Informacji Plan prezentacji Utworzenie aplikacji Author Book Końcowe porządki System do obsługi biblioteki Bardzo prosta biblioteka.

Bardziej szczegółowo

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

Bardziej szczegółowo

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar) Tworzenie witryn internetowych PHP/Java (mgr inż. Marek Downar) Rodzaje zawartości Zawartość statyczna Treść statyczna (np. nagłówek, stopka) Layout, pliki multimedialne, obrazki, elementy typograficzne,

Bardziej szczegółowo

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers Tworzenie modułów Wymagania aplikacji Tworzenie modułów Utworzenie katalogu z nazwą modułu oraz wersją (np. blog1) w katalogu modules Utworzenie potrzebnych katalogów takich jak config controllers helpers

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Środowisko Django, cz. 3 19 stycznia 2018 Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu 4 Plan wykładu 1 2 Konstrukcja formularzy Walidacja i zapis 3 Ograniczenie dostępu

Bardziej szczegółowo

Internetowe bazy danych

Internetowe bazy danych Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 6 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Kontrola dostępu

Bardziej szczegółowo

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika

Bardziej szczegółowo

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014 Aplikacje WWW Krzysztof Ciebiera 3 kwietnia 2014 Bezpieczeństwo Clickjacking CSRF Cross site scripting (XSS) Migracje ContentType Tłumaczenia Testowanie - RequestFactory Clickjacking Użytkownik odwiedza

Bardziej szczegółowo

Wykład 5: PHP: praca z bazą danych MySQL

Wykład 5: PHP: praca z bazą danych MySQL Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych

Bardziej szczegółowo

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2. Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny

Bardziej szczegółowo

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API OPT Open Power Template System szablonów OPT System szablonów PHP5 Niektóre możliwości: Cache Nagłówki HTTP oraz kompresja Rozszerzalność Struktury kontrolne Wysokopoziomowe struktury Ułatwienia Wysoka

Bardziej szczegółowo

Projektowanie systemów baz danych

Projektowanie systemów baz danych Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do

Bardziej szczegółowo

Podstawowe wykorzystanie Hibernate

Podstawowe wykorzystanie Hibernate Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia

Bardziej szczegółowo

Bazy danych i usługi sieciowe

Bazy danych i usługi sieciowe Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z

Bardziej szczegółowo

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails Plan prezentacji Framework Rails Ruby on Rails podstawowe założenia DRY: nie powtarzaj się Ruby on Rails podstawowe założenia DRY: nie powtarzaj

Bardziej szczegółowo

Ruby i Ruby on Rails. Mateusz Drożdżyński

Ruby i Ruby on Rails. Mateusz Drożdżyński Ruby i Ruby on Rails Mateusz Drożdżyński Co to Ruby? Dynamiczny, obiektowy język programowania, stworzony przez Yukihiro Matsumoto Pojawił się w tym samym roku co Java (1995) Przejrzysta, prosta i intuicyjna

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z

Bardziej szczegółowo

Wprowadzenie do Doctrine ORM

Wprowadzenie do Doctrine ORM Wprowadzenie do Doctrine ORM Przygotowanie środowiska Do wykonania ćwiczenia konieczne będzie zainstalowanie narzędzia Composer i odpowiednie skonfigurowanie Netbeans (Tools->Options->Framework & Tools->Composer,

Bardziej szczegółowo

Język SQL, zajęcia nr 1

Język SQL, zajęcia nr 1 Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze

Bardziej szczegółowo

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków. Igor Wojnicki (AGH, KIS) PHP 23 października 2016 1 / 29 NoSQL Not Only SQL: CouchDB Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków. Igor Wojnicki Katedra Informatyki Stosowanej,

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 2

MVC w praktyce tworzymy system artykułów. cz. 2 MVC w praktyce tworzymy system artykułów. cz. 2 W drugiej części artykułu o wzorcu MVC stworzymy część skryptu, odpowiedzialną za obsługę kategorii. Tworzymy kontroler kategorii Na początek stwórzmy plik

Bardziej szczegółowo

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT Wprowadzenie do psql i SQL 1 Bazy Danych Wykład p.t. Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT Antoni Ligęza ligeza@agh.edu.pl http://galaxy.uci.agh.edu.pl/~ligeza Wykorzystano

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 6 Marcin Młotkowski 14 listopada 2012 Plan wykładu Trwałość obiektów Bazy danych DBM Bazy danych SQL Active records Szeregowanie obiektów Obiekt Serializacja @tytul = 'Pan Tadeusz'

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Język PHP Paweł Witkowski Wydział Matematyki, Informatyki i Mechaniki Jesień 2011 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 1 /

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 13 Marcin Młotkowski 16 stycznia 2013 Plan wykładu Testowanie aplikacji w Ruby on Rails Testowanie modeli Testy funkcjonalne: testowanie kontrolerów Testy integracyjne Testowanie

Bardziej szczegółowo

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty MeetingHelper Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania Instrukcja obsługi dla programisty W tej części został zawarty opis uruchamiania projektu programistycznego,

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js Akademia MetaPack Uniwersytet Zielonogórski Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js Daniel Habowski Budowa aplikacji SPA z wykorzystaniem biblioteki Ember.js Agenda: 1. Standardowa

Bardziej szczegółowo

media Blitz wydajne sytemy szablonów

media Blitz wydajne sytemy szablonów Blitz wydajne sytemy szablonów Dlaczego stosować szablony? MVC Kontroler Model Widok Co to jest Blitz? Rozszerzenie PHP stworzone przez Alexey A. Rybak a. Regularnie rozwijany od 2005 roku. Szybki i lekki

Bardziej szczegółowo

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP Baza danych i ORM Struktura Bundle app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP src/ - folder zawiera cały kod PHP aplikacji vendor/

Bardziej szczegółowo

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji Baza danych i ORM Projekt zestaw usług dostępnych pod daną domeną. Aplikacja niezależnie działające programy/serwisy (w obrębie pojektu). Zwyczajowo projekt posiada dwie aplikacje: Frontend Backend Moduł

Bardziej szczegółowo

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki 29 października 2014 Igor Wojnicki (AGH, KIS) CouchDB 29 października 2014 1 / 53 NoSQL Not Only SQL, CouchDB Apache CouchDB has started. Time to relax. Igor Wojnicki Katedra Informatyki Stosowanej, Akademia

Bardziej szczegółowo

Baza danych do przechowywania użytkowników

Baza danych do przechowywania użytkowników System logowania i rejestracji jest bardzo przydatną funkcjonalnością na każdej stronie. Umożliwia sprawną identyfikację i zarządzanie użytkownikami. Strona ze skryptem logowania nabiera dużej wartości.

Bardziej szczegółowo

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Laboratorium nr 4. Temat: SQL część II. Polecenia DML Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze

Bardziej szczegółowo

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 6

Podstawy programowania III WYKŁAD 6 Podstawy programowania III WYKŁAD 6 Jan Kazimirski 1 Projekt: Katalog książek elektronicznych c.d. 2 Diagram przypadków użycia 3 Iteracja 1 Zaprojektowanie panelu głównego aplikacji Realizacja przypadków

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Środowisko Django początki 10 stycznia 2014 Plan wykładu 1 2 Plan wykładu 1 2 Co to jest Django Oparty o Pythona framework do tworzenia aplikacji internetowych. Co to jest Django Oparty o Pythona framework

Bardziej szczegółowo

Programowanie zorientowane obiektowo. Mateusz Kołecki

Programowanie zorientowane obiektowo. Mateusz Kołecki Programowanie zorientowane obiektowo Mateusz Kołecki Plan MVC Wstęp Separacja odpowiedzialnośći Antyprzykład Dobry przykład Wady/zalety MVC MVC to tylko początek - wzorce projektowe Dlaczego chcemy używać

Bardziej szczegółowo

Hurtownia Świętego Mikołaja projekt bazy danych

Hurtownia Świętego Mikołaja projekt bazy danych Aleksandra Kobusińska nr indeksu: 218366 Hurtownia Świętego Mikołaja projekt bazy danych Zaprezentowana poniżej baza jest częścią większego projektu bazy danych wykorzystywanej w krajowych oddziałach wiosek

Bardziej szczegółowo

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić

Bardziej szczegółowo

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science Systemy internetowe Wykład 4 mysql MySQL - wstęp SZBD: komercyjne: Microsoft SQL Server, Oracle, DB2... darmowe: MySQL, PostgreSQL, Firebird... MySQL darmowy (użytek niekomercyjny) Wady: niska wydajność

Bardziej szczegółowo

Zarządzanie kontami użytkowników w i uprawnieniami

Zarządzanie kontami użytkowników w i uprawnieniami 106 Plan prezentacji 107 Zarządzanie kontami użytkowników w i uprawnieniami Schematy a użytkownicy Tworzenie użytkowników, uwierzytelnianie Przywileje systemowe i obiektowe, role Profile kontrola wykorzystania

Bardziej szczegółowo

Paweł Cieśla. Dokumentacja projektu

Paweł Cieśla. Dokumentacja projektu Paweł Cieśla Dokumentacja projektu Projekt Project1 został utworzony i skompilowany na próbnej wersji Delphi XE 4. Po uruchomieniu programu należy kliknąć przycisk Wczytaj plik tekstowy, następnie wskazać

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykład 5. SQL praca z tabelami 2 Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,

Bardziej szczegółowo

BAZA DANYCH SIECI HOTELI

BAZA DANYCH SIECI HOTELI Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Database Connectivity

Database Connectivity Oprogramowanie Systemów Pomiarowych 15.01.2009 Database Connectivity Dr inŝ. Sebastian Budzan Zakład Pomiarów i Systemów Sterowania Tematyka Podstawy baz danych, Komunikacja, pojęcia: API, ODBC, DSN, Połączenie

Bardziej szczegółowo

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński WICKET VS. DJANGO Leszek Gawron vs. Michał Leszczyński 0. Główne ficze 1. Środowisko developerskie AGENDA 2. Uruchomienie projektów 3. Warstwa DAO/serwisów 4. Tworzenie UI 5. Templating 7. i18n 8. Reusability

Bardziej szczegółowo

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

Bardziej szczegółowo

Systemowe aspekty baz

Systemowe aspekty baz Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

Bardziej szczegółowo

Aplikacje www laboratorium

Aplikacje www laboratorium Aplikacje www laboratorium Konfigurowanie zabezpieczeń w oparciu o JAAS w serwerze GlassFish Zabezpieczanie aplikacji webowych z wykorzystaniem JASS jest w podstawowych zastosowaniach procesem dwuetapowym.

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Struktura drzewa w MySQL. Michał Tyszczenko

Struktura drzewa w MySQL. Michał Tyszczenko Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu

Bardziej szczegółowo

Backend Administratora

Backend Administratora Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

Bardziej szczegółowo

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

Bardziej szczegółowo

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym

Bardziej szczegółowo

Politechnika Częstochowska. Projektowanie systemów użytkowych II

Politechnika Częstochowska. Projektowanie systemów użytkowych II Politechnika Częstochowska Wydział Inżynierii Mechanicznej i Informatyki Projektowanie systemów użytkowych II Zdalny wybór Prac Dyplomowych Diana Kisiała Tomasz Jewiarz Jacek Kucharzewski Informatyka,

Bardziej szczegółowo

Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń. Cel: polecenia T-SQL Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS Authentication: SQL Server Authentication Username: student01,, student21 Password: student01,., student21

Bardziej szczegółowo

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables MYSQL 1 1. Sprawdzenie ustawień konfiguracyjnych Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables 2 2. Wstępna konfiguracja Po zainstalowaniu aplikacji należy przed uruchomieniem wykonać

Bardziej szczegółowo

Bazy danych 10. SQL Widoki

Bazy danych 10. SQL Widoki Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela

Bardziej szczegółowo

Bazy danych. Polecenia SQL

Bazy danych. Polecenia SQL Bazy danych Baza danych, to miejsce przechowywania danych. Dane w bazie danych są podzielone na tabele. Tabele składają się ze ściśle określonych pól i rekordów. Każde pole w rekordzie ma ściśle ustalony

Bardziej szczegółowo

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień 2009. Uniwersytet Warszawski Uniwersytet Warszawski 6 kwiecień 2009 Spis Treści 1 MVC Jak to wygląda w JavascriptMVC 2 Prawie jak klasy 3 Hierarchia Widoki Kontrolery Modele 4 Struktura katalogów Generatory kodu Generatory dokumentacji

Bardziej szczegółowo

SAP BASIS Architektura systemu klient Server

SAP BASIS Architektura systemu klient Server SAP BASIS Architektura systemu klient Server Platformy systemowe: Microsoft Windows Server, UNIX, Linux Platformy bazodanowe: Microsoft SQL Server, Oracle, IBM DB2 System SAP WSB: System operacyjny: Windows

Bardziej szczegółowo

JavaScript funkcyjność

JavaScript funkcyjność JavaScript funkcyjność WWW 9 kwietnia 2014 Możliwości tworzenia dynamicznych stron WWW HTML i CSS. Skrypty CGI (Perl, PHP). Serwery (django, java). Plug-iny. Ksiażka Większość przykładów pochodzi z ksiażki:

Bardziej szczegółowo

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014 Igor Wojnicki (AGH, KIS) Smarty 28 marca 2014 1 / 33 Smarty Igor Wojnicki Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie 28 marca 2014 $Id: smarty.tex,v 1.2 2013/06/22 22:09:45 wojnicki

Bardziej szczegółowo

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

PODSTAWY BAZ DANYCH 13. PL/SQL PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących

Bardziej szczegółowo

Bazy danych 7. SQL podstawy

Bazy danych 7. SQL podstawy Bazy danych 7. SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Structured Query Language Używane standardy: SQL92 SQL99 SQL:2003 Żaden dostawca nie jest w pełni zgodny

Bardziej szczegółowo

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Programowanie komponentowe Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Struktura wykładu 1. Utworzenie użytkowników i ról na serwerze aplikacji Sun Java System Application

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych MySQL studia zaoczne II stopnia, sem. I Plan wykładu 1. MySQL: funkcje, procedury, wyzwalacze 2. HTML : tworzenie

Bardziej szczegółowo

Wykład 05 Bazy danych

Wykład 05 Bazy danych Wykład 05 Bazy danych Tabela składa się z: Kolumn Wierszy Wartości Nazwa Wartości Opis INT [UNSIGNED] -2^31..2^31-1 lub 0..2^32-1 Zwykłe liczby całkowite VARCHAR(n) n = długość [1-255] Łańcuch znaków o

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com Wstęp do tworzenia pluginów Piotr Wasilewski wasilewski.piotrek (at) gmail.com Akademickie Stowarzyszenie Informatyczne www.asi.pwr.wroc.pl Wrocław, 14 kwietnia 2011 1 2 3 4 tworzyć własną wtyczkę Czego

Bardziej szczegółowo

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3 cur.executescript(""" DROP TABLE IF EXISTS uczen; CREATE TABLE IF NOT EXISTS uczen ( Uniwersytet Technologiczno-Przyrodniczy im. J.J. Śniadeckich w Bydgoszczy Instrukcja do ćwiczeń laboratoryjnych Przedmiot

Bardziej szczegółowo

Automatyka i Robotyka ROK III TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH

Automatyka i Robotyka ROK III TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH Wydział Inżynierii Mechanicznej i Robotyki Jakub Topolski Automatyka i Robotyka ROK III GR 22/I Ćwiczenie 4 SIECI KOMPUTEROWE I BAZY DANYCH TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH 1. Cel

Bardziej szczegółowo

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja Zagadnienia Konstrukcja bibliotek mysql i mysqli w PHP Dynamiczne generowanie stron Połączenie, zapytanie i sesja Podstawowe opakowanie dla zapytań SQL w PHP Zarządzania uŝytkownikami Włamania do mysql

Bardziej szczegółowo

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012: Systemy baz danych 16.04.2013 1. Plan: 10. Implementacja Bazy Danych - diagram fizyczny 11. Implementacja Bazy Danych - implementacja 2. Zadania: 1. Przygotować model fizyczny dla wybranego projektu bazy

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl e-point SA 7 marca, 2009 Co to jest duży system? Domeny narodowe Warianty językowe Funkcje (ekrany) Klucze lokalizacyjne Tabele językowe w bazie danych Gdzie mogą wystąpić problemy? Środowisko uruchomieniowe

Bardziej szczegółowo

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Szkolenie IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5 Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Opis szkolenia Szkolenie dla początkujących projektantów

Bardziej szczegółowo

Wykład 3 2014-04-25 12:45 BD-1 W_3

Wykład 3 2014-04-25 12:45 BD-1 W_3 Wykład 3 SQL - język operacji na bazach danych Schemat przykładowej bazy danych Uczelnia Skrypt SQL - utworzenie bazy Uczelnia Polecenia selekcji i projekcji Interakcyjny dostęp do bazy danych 2014-04-25

Bardziej szczegółowo