Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:dydaktyka:ztb:2010:projekty:pdon:start [2010/03/31 09:33]
sebi utworzono
pl:dydaktyka:ztb:2010:projekty:pdon:start [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-  ​http://postgis.refractions.net+==== Sformułowanie zadania projektowego:​ ==== 
-  * http://www.spatial.cs.umn.edu/Book/labs/​vania/​spatialQueries.html + 
 +Celem projektu jest niesienie pomocy osobom niepełnosprawnym. Osoby takie bardzo 
 +często z uwagi na swoje ograniczone możliwości,​ są pozbawione przyjemności 
 +uczestnictwa w wielu dziedzinach życia. Naszym zadaniem, a właściwie obowiązkiem 
 +wobec takich osób, jest możliwe udostępnienie pomocnych narzędzi, aby takie osoby nie czuły 
 +się ograniczone w żaden dodatkowy sposób. 
 + 
 +Z racji rozwijających się w ogromnym tempie możliwości jakie dają media (szczególnie 
 +Internet), postanowiliśmy stworzyć kompleksowy serwis, który byłby pomocny w 
 +korzystaniu z tego medium. W serwisie będą znajdowały się zarówno narzędzia jak i 
 +wszelkie potrzebne informacje na ich temat. 
 + 
 +Stwarzałby on nieograniczone możliwości dla producentów sprzętu rehabilitacyjnego,​ 
 +lekarzy i klinik, które mogłyby na jego łamach przedstawiać najnowsze możliwości leczenia lub niwelowania ograniczeń swoich pacjentów. 
 +Będzie to jedyne miejsce, gdzie osoby niepełnosprawne będą mogły wymieniać się 
 +uwagami oraz spostrzeżeniami na wiele tematów ze swojego życia. 
 + 
 +==== Analiza stanu wyjściowego ====  
 + 
 +W chwili obecnej w sieci można znaleźć podobne rozwiązania,​ jednak są one 
 +stworzone bardzo prowizorycznie,​ a ich funkcjonalność jest bardzo ograniczona. Każdy 
 +z takich serwisów, przedstawia jedynie fragment możliwości naszego serwisu, na 
 +przykład oferuje wybrane narzędzia pomocy niepełnosprawnym. 
 +Dużo, z obecnie działających rozwiązań ma charakter dodatku do bardziej 
 +rozbudowanych serwisów nie traktujących o tematyce naszego projektu (udostępnianie 
 +programów dla niepełnosprawnych w serwisie, który oferuje wszelkie rodzaje 
 +dostępnych programów). 
 + 
 +Nasz serwis byłby kompleksowym rozwiązaniem i pewnym miejscem, gdzie ludzie 
 +dotknięci przez swoje ograniczenia mogliby udać się w poszukiwaniu pomocy. 
 +W trakcie rozwoju serwisu, umożliwiłoby to zostanie liderem w tej tematyce i dalszą 
 +promocję. Niniejszym stałby się popularny i pomocny w popularyzowaniu szczególnych 
 +rozwiązań. To z pewnością przyczyniłoby się do wykorzystania wyznaczonego miejsca 
 +w serwisie na płatną promocję produktów oferowanych przez jego sponsorów. 
 + 
 + 
 +==== Analiza wymagań użytkownika ====  
 + 
 +  ​możliwość rejestracji i logowanie 
 +  * przeglądanie i korzystanie ze zbiorów artykułów i narzędzi 
 +  * dodawanie i edycja artykułów i narzędzi przez zarejestrowanych uzytkowników 
 +  * dodawanie komentarzy przez zarejestrowanych użytkowników 
 +  * przeglądanie forum 
 +  * dodawanie działów i tematów na forum przez zarejestrowanych użytkowników 
 +  * dodawanie postów przez zarejestrowanych uzytkowników 
 +===== Określenie scenariuszy użycia=====  
 + 
 +  - Jako niezalogowany użytkownik serwisu, chcę założyć nowe konto, aby móc się zalogować do serwisu. 
 +  - Jako użytkownik serwisu, chcę przejść na listę dostępnych artykułów w wybranej kategorii, aby móc przeczytać wybrany z nich. 
 +  - Jako użytkownik serwisu, chcę przejść na stronę wyszukiwarki,​ aby odnaleźć interesujące mnie informacje. 
 +  -  Jako zalogowany użytkownik serwisu, chcę zmienić swoje dane personalne, aby zaktualizować swoje dane osobowe w związku ze zmianą miejsca zamieszkania. 
 +  -  Jako zalogowany użytkownik serwisu, chcę wejść na forum dyskusyjne, aby rozpocząć nowy temat dyskusji. 
 +  -  Jako użytkownik serwisu, chcę zobaczyć listę dostępnych narzędzi wspomagania pracy z komputerem dla osób niepełnosprawnych,​ aby ściągnąć i zainstalować wybrany program, który najlepiej spełnia moje oczekiwania. 
 +  -  Jako zalogowany użytkownik serwisu, chcę wysłać wiadomość do innego użytkownika serwisu, aby uzyskać dodatkowe informacje. 
 +  -  Jako zalogowany użytkownik serwisu, chcę skomentować czytany przeze mnie artykuł, aby podzielić się swoim zdaniem i dodać kolejne informacje. 
 +  -  Jako administrator serwisu, chcę wejść na stronę serwisu, i usuwam reklamy i zbędne komentarze pozostawione przez roboty spamujące aby zachować przejrzystość serwisu. 
 +  -  Jako zalogowany użytkownik,​ chcę zgłasosić propozycję dodania do zasobów portalu nowego programu, bądź propozycji programu, aby pomóc innym użytkownikom. 
 +  -  Jako pracownik instytucji trzecich, chcę odnaleźć osoby potrzebujące,​ aby popularyzować swoją organizację charytatywną wśród grupy docelowej. 
 +=====Identyfikacja funkcji ===== 
 + 
 +Funkcje dla administratora: 
 + 
 +  * Logowanie jako administrator 
 +  * Modyfikowanie strony głównej 
 +  * Modyfikowanie profilu użytkownika 
 +  * Modyfikowanie strony Artykułu 
 +  * Modyfikowanie strony Programu 
 +  * Usuwanie artykułów 
 +  * Usuwanie programów 
 +  * Moderacja forum 
 +  * Zakładanie nowych działów forum 
 + 
 +Funkcje dla użytkownika:​ 
 +  * Logowanie jako użytkownik 
 +  * Rejestracja użytkownika 
 +  * Komentowanie artykułów 
 +  * Komentowanie programów 
 +  * Tworzenie nowych tematów na forum 
 +  * Publikowanie nowych opisów programu 
 +  * Publikowanie nowych Artykułów 
 + 
 + 
 +===== Analiza hierarchii funkcji projektowanej aplikacji ===== 
 + 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​analiza_hierarchii.png?​640|}} 
 + 
 + 
 + 
 + 
 +===== Budowa i analiza diagramu przepływu danych ===== 
 + 
 +Wybór encji (obiektów) i ich atrybutów 
 + 
 +<​code>​ 
 +Role 
 +id integer 
 +name string 
 +authorizable_type string 
 +authorizable_id integer 
 +created_at datetime 
 +updated_at datetime 
 + 
 +Program 
 +id integer 
 +name string 
 +platform string 
 +summary text 
 +content text 
 +tags string 
 +author_id integer 
 +creator string 
 +created_at datetime 
 +updated_at datetime 
 +href string 
 +download_href string 
 + 
 +Article 
 +id integer 
 +name string 
 +content text 
 +author_id integer 
 +created_at datetime 
 +updated_at datetime 
 +summary text 
 +type string 
 +slug string 
 +Page 
 +id integer 
 +name string 
 +content text 
 +author_id integer 
 +created_at datetime 
 +updated_at datetime 
 +summary text 
 +type string 
 +slug string 
 + 
 +User 
 +id integer 
 +email string 
 +activity_id integer 
 +fullname string 
 +nick string 
 +crypted_password string 
 +password salt string 
 +persistance_token string 
 +single_access_token string 
 +persihable_token string 
 +login_count integer 
 +failed_login_count integer 
 +last_request at datetime 
 +current_login_at datetime 
 +last_login_at datetime 
 +created_at datetime 
 +updated_at datetime 
 +is_admin boolean 
 + 
 +RoleUser 
 +id integer 
 +role_id integer 
 +user_id integer 
 +state string 
 +created_at datetime 
 +updated_at datetime 
 + 
 +DiggedSiteDigg 
 +id integer 
 +user_id integer 
 +digged_site_id integer 
 +created_at datetime 
 +updated_at datetime 
 + 
 +InternalMessage 
 +id integer 
 +sender_id integer 
 +receiver_id integer 
 +subject string 
 +parent_id integer 
 +content text 
 +xreated_at datetime 
 +updated_at datetime 
 + 
 +ForumSection 
 +id integer 
 +name string 
 +description text 
 +created_at datetime 
 +updated_at datetime 
 + 
 +Comment 
 +id integer 
 +author_id integer 
 +content string 
 +commentable_types string 
 +commentable_id string 
 +created_at datetime 
 +updated_at datetime 
 + 
 +DiggedSite 
 +id integer 
 +author_id integer 
 +href string 
 +comment text 
 +state string 
 +click_count integer 
 +created_at datetime 
 +updated_at datetime 
 + 
 +ForumPost 
 +id integer 
 +subject_id integer 
 +author_id integer 
 +content text 
 +type string 
 +created_at datetime 
 +updated_at datetime 
 +name string 
 +forum_section_id integer 
 + 
 +ForumTopic 
 +id integer 
 +subject_id integer 
 +author_id integer 
 +content text 
 +type string 
 +created_at datetime 
 +updated_at datetime 
 +name string 
 +forum_section_id integer 
 + 
 +</code> 
 + 
 +===== Projektowanie powiązań (relacji) pomiędzy encjami =====  
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​graf_bazy.png?​640|}}=====Projekt diagramów STD =====  
 + 
 +**Diagram obsługi Artykułów (diagram dla Narzędzi jest analogiczny):​** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​std1.png?​640|}} 
 + 
 + 
 +**Diagram obsługi forum:** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​std2.png?​640|}} 
 + 
 + 
 + 
 + 
 + 
 + 
 +**Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów, etc. w oparciu o zdefiniowany diagram ER** 
 + 
 +<code sql> 
 + 
 +-- 
 +-- Table structure for table '​comments'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​comments'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​author_id'​ int(11) default NULL, 
 +  '​content'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​commentable_type'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​commentable_id'​ int(11) default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB ​ DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ; 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​digged_sites'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​digged_sites'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​author_id'​ int(11) default NULL, 
 +  '​href'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​comment'​ text collate utf8_unicode_ci,​ 
 +  '​state'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​click_count'​ int(11) default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​digged_site_diggs'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​digged_site_diggs'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​user_id'​ int(11) default NULL, 
 +  '​digged_site_id'​ int(11) default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​forum_posts'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​forum_posts'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​subject_id'​ int(11) default NULL, 
 +  '​author_id'​ int(11) default NULL, 
 +  '​content'​ text collate utf8_unicode_ci,​ 
 +  '​type'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  '​name'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​forum_section_id'​ int(11) default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB ​ DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​forum_sections'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​forum_sections'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​name'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​description'​ text collate utf8_unicode_ci,​ 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB ​ DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​forum_topics'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​forum_topics'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​subject_id'​ int(11) default NULL, 
 +  '​author_id'​ int(11) default NULL, 
 +  '​content'​ text collate utf8_unicode_ci,​ 
 +  '​type'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​internal_messages'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​internal_messages'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​sender_id'​ int(11) default NULL, 
 +  '​receiver_id'​ int(11) default NULL, 
 +  '​subject'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​parent_id'​ int(11) default NULL, 
 +  '​content'​ text collate utf8_unicode_ci,​ 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​pages'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​pages'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​name'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​content'​ text collate utf8_unicode_ci,​ 
 +  '​author_id'​ int(11) default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  '​summary'​ text collate utf8_unicode_ci,​ 
 +  '​type'​ varchar(255) collate utf8_unicode_ci NOT NULL default '​Page',​ 
 +  '​slug'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB ​ DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​programs'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​programs'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​name'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​platform'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​summary'​ text collate utf8_unicode_ci,​ 
 +  '​content'​ text collate utf8_unicode_ci,​ 
 +  '​tags'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​author_id'​ int(11) default NULL, 
 +  '​creator'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  '​href'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​download_href'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB ​ DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​roles'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​roles'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​name'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​authorizable_type'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​authorizable_id'​ int(11) default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​role_users'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​role_users'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​role_id'​ int(11) default NULL, 
 +  '​user_id'​ int(11) default NULL, 
 +  '​state'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​schema_migrations'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​schema_migrations'​ ( 
 +  '​version'​ varchar(255) collate utf8_unicode_ci NOT NULL, 
 +  UNIQUE KEY '​unique_schema_migrations'​ ('​version'​) 
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;​ 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​sessions'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​sessions'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​session_id'​ varchar(255) collate utf8_unicode_ci NOT NULL, 
 +  '​data'​ text collate utf8_unicode_ci,​ 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  PRIMARY KEY  ('​id'​),​ 
 +  KEY '​index_sessions_on_session_id'​ ('​session_id'​),​ 
 +  KEY '​index_sessions_on_updated_at'​ ('​updated_at'​) 
 +) ENGINE=InnoDB ​ DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=20 ; 
 + 
 + 
 +-- -------------------------------------------------------- 
 + 
 +-- 
 +-- Table structure for table '​users'​ 
 +-- 
 + 
 +CREATE TABLE IF NOT EXISTS '​users'​ ( 
 +  '​id'​ int(11) NOT NULL auto_increment,​ 
 +  '​email'​ varchar(255) collate utf8_unicode_ci NOT NULL, 
 +  '​activity_id'​ int(11) default '​0',​ 
 +  '​fullname'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​nick'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​crypted_password'​ varchar(255) collate utf8_unicode_ci NOT NULL, 
 +  '​password_salt'​ varchar(255) collate utf8_unicode_ci NOT NULL, 
 +  '​persistence_token'​ varchar(255) collate utf8_unicode_ci NOT NULL, 
 +  '​single_access_token'​ varchar(255) collate utf8_unicode_ci NOT NULL, 
 +  '​perishable_token'​ varchar(255) collate utf8_unicode_ci NOT NULL, 
 +  '​login_count'​ int(11) NOT NULL default '​0',​ 
 +  '​failed_login_count'​ int(11) NOT NULL default '​0',​ 
 +  '​last_request_at'​ datetime default NULL, 
 +  '​current_login_at'​ datetime default NULL, 
 +  '​last_login_at'​ datetime default NULL, 
 +  '​current_login_ip'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​last_login_ip'​ varchar(255) collate utf8_unicode_ci default NULL, 
 +  '​created_at'​ datetime default NULL, 
 +  '​updated_at'​ datetime default NULL, 
 +  '​is_admin'​ tinyint(1) default '​0',​ 
 +  PRIMARY KEY  ('​id'​) 
 +) ENGINE=InnoDB ​ DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ; 
 + 
 + 
 + 
 +</code> 
 + 
 + 
 +===== Projektowanie operacji na danych=====  
 +Operacje na danych realizowane są przy użyciu frameworka do mapowania obiektowo-relacyjnego dla języka Ruby - ActiveRecordDzięki temu, operacje na danych są ekstremalnie proste, np. 
 + 
 +<code ruby> 
 +@resource = User.find(1) ​                 # wyszukiwanie po id 
 +@resource = Article.find_by_slug('​Home'​) ​ # wyszukiwanie po nazwie zawartej w adresie 
 +@resources = Article.all(:​limit => 10, :offset => 10) 
 +                                          # wyszukanie 10 rekordów z przesunięciem o 10 
 +@resource = User.create(params[:​user]) ​   # tworzenie rekordu 
 +@resource = User.find(1).destroy ​         # usuwanie rekordu 
 +</code> 
 + 
 +Dodatkowo, dzięki wykorzystaniu biblioteki warstwy kontrolera InheritedResources,​ wyeliminowana została konieczność definiowania akcji użytkownika explicite. Zamiast tego, generowany jest zestaw metod: 
 + 
 +<code ruby> 
 +new 
 +index 
 +show(id) 
 +edit(id) 
 +create(id) 
 +update(id) 
 +destroy(id) 
 +</​code>​ 
 + 
 +Metody te same w sobie zawierają kod, który umożliwia operacje na danych. Na przykład, metoda create będzie miała następujący kształt, pomimo tego, że w kodzie kontrolera sie nie pojawi: 
 + 
 +<code ruby> 
 +def create 
 +    @resource = RESOURCE_CLASS.new(params[RESOURCE_NAME]) 
 +                             # utworzenie rekordu aktywnego o zadanych parametrach 
 +    if @resource.save ​       # zapis do bazy danych 
 +                             # wyrenderuj widok poprawny 
 +    else 
 +                             # wyrenderuj stronę błędu 
 +    end 
 +end 
 +</​code>​ 
 + 
 +gdzie:  
 + 
 +  * RESOURCE_CLASS to klasa warstwy modelu związana z danym kotrnolerem,​ np. Article 
 +  * RESOURCE_NAME to nazwa zasobu używana do przekazywana parametru, np. article 
 + 
 +===== Implementacja bazy danych ===== 
 + 
 +Baza danych została zaimplementowana na silniku mySQL w wersji 5.1. Do jej obsługi używana jest biblioteka ActiveRecord w wersji 3.0.0.beta4,​ będąca standardowym mechanizmem frameworku Ruby on Rails 3. 
 + 
 +  * mysql5.0.75-0ubuntu10.5 
 +  * rubygems 1.3.6 
 +  * Ruby on Rails 3 beta 4 
 + 
 +oraz gemy: 
 + 
 +  * abstract (1.0.0) - tworzenie metod abstrakcyjnych w Ruby 
 +  * actionmailer (3.0.0.beta4) - zależność dla Ruby on Rails, wysyłanie wiadomości e-mail 
 +  * actionpack (3.0.0.beta4) - zależność dla Ruby on Rails, rozszerzenia Ruby 
 +  * activemodel (3.0.0.beta4) - zależność dla Ruby on Rails, metaklasa silnika ORM (odpowiednik interfejsu) 
 +  * activerecord (3.0.0.beta4) - zależność dla Ruby on Rails, silnik ORM 
 +  * activeresource (3.0.0.beta4) - zależność dla Ruby on Rails, klient REST 
 +  * activesupport (3.0.0.beta4) - zależność dla Ruby on Rails, rozszerzenia Ruby 
 +  * arel (0.4.0) - zależność dla Ruby on Rails 
 +  * authlogic (2.1.3 a087ad) - obsługa autentykacji użytkowników 
 +  * builder (2.1.2) - zależność dla języka Markup 
 +  * bundler (0.9.26) - tworzenie "​paczek"​ gemów (środowisko gemów konfigurowalne na poziomie aplikacji, a nie systemu) 
 +  * dispatcher (0.0.1) - middleware do komunikacji Ruby<​->​serwer www 
 +  * erubis (2.6.6) - język szablonów 
 +  * formtastic (1.0.0.beta 0c0a9e) - łatwy sposób tworzenia semnatycznych formularzy 
 +  * haml (3.1.0 9340ac) - język szablonów 
 +  * has_scope (0.5.0 0a8c58) - rozszerzenie warstwy kontrolera 
 +  * i18n (0.4.1) - internacjonalizacja aplikacji 
 +  * inherited_resources (1.1.2) - rozszerzenie warstwy kontrolera 
 +  * mail (2.2.5) - transport e-maili 
 +  * mime-types (1.16) - definiuje typy plików 
 +  * polish (0.0.4 8cfbb3) - polskie tłumaczenie komunikatów aplikacji 
 +  * polyglot (0.3.1) - tłumaczenia aplikacji 
 +  * rack (1.1.0) - interfejs dla serwera www 
 +  * rack-mount (0.6.6) - interfejs dla serwera www 
 +  * rack-test (0.5.4) - interfejs dla serwera www 
 +  * rails (3.0.0.beta4) - framework 
 +  * railties (3.0.0.beta4) - rozszerzenia Ruby 
 +  * rake (0.8.7) - odpowiednik make/Makefile w środowisku Ruby 
 +  * responders (0.6.1 3af189) - dostęp do danych aplikacji w różnych formatach 
 +  * thor (0.13.7) - interfejs dla serwera ​www 
 +  * treetop (1.4.8) - język dziedzinowy do parsowania tekstu 
 +  * tzinfo (0.3.22) - rozszerzenia mechanizmów związanych z obsługa dat 
 +  * will_paginate (3.0.pre 60aa1c) - paginacja na warstwie widoku i kontrolera 
 +  
 +===== Zdefiniowanie interfejsów do prezentacji,​ edycji i obsługi danych ===== 
 + 
 +**Rejestracja uzytkownika:​** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​gui1.png?​640|}} 
 + 
 +**Logowanie użytkownika:​** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​gui2.png?​640|}} 
 + 
 +**Dodanie/modyfikacja artykułu:​** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​gui3.png?​640|}} 
 + 
 +**Dodanie/modyfikacja programu:​** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​gui4.png?​640|}} 
 + 
 +**Dodanie komentarza:​** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​gui5.png?​640|}} 
 + 
 +**Utworzenie nowego działu na forum:** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​gui6.png?​640|}} 
 + 
 +**Utworzenie nowego tematu na forum:** 
 + 
 +{{:​pl:​dydaktyka:​ztb:​2010:​projekty:​pdon:​gui7.png?640|}}
pl/dydaktyka/ztb/2010/projekty/pdon/start.1270020792.txt.gz · ostatnio zmienione: 2019/06/27 15:56 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0